| ruoyi-ui/src/api/root/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-ui/src/store/modules/user.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-ui/src/views/bignote/familyeventInfo.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-ui/src/views/bignote/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-ui/src/views/peopleSearch/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ruoyi-ui/src/api/root/index.js
@@ -63,3 +63,10 @@ method: 'get', }) } export function listAnotherFamilyInfo(userId) { return request({ url:'/self/user/getAnotherFamInfo/'+userId, method: 'get' }) } ruoyi-ui/src/store/modules/user.js
@@ -74,12 +74,14 @@ if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组 commit('SET_ROLES', res.roles) commit('SET_PERMISSIONS', res.permissions) } else { commit('SET_ROLES', ['ROLE_DEFAULT']) } // console.log(res) console.log(res.user) // alert(res.user.uaid) // alert(123) // alert(res.user.clanId) commit('SET_USERID', res.user.userId) commit('SET_CLANID', res.user.clanId) ruoyi-ui/src/views/bignote/familyeventInfo.vue
@@ -266,6 +266,13 @@ <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 @@ -295,7 +302,7 @@ import errorCode from "@/utils/errorCode"; import {Message} from "element-ui"; import { getFamilyeventInfo, updateFamilyevent, uploadPic, download} from "@/api/bignote/index"; import { getFamilyMembers } from '@/api/root'; // 假设获取家族成员的API import { getFamilyMembers ,listAnotherFamilyInfo} from '@/api/root'; // 假设获取家族成员的API export default { components: {}, @@ -306,6 +313,7 @@ // 成员多选相关 memberDialogVisible: false, // 弹窗可见性 familyMembers: [], // 家族成员列表(原始数据) anotherFamilyMembers: [], //另外家族成员信息 selectedMemberIds: [], // 弹窗中临时选中的成员ID(用于多选交互) displayMemberNames: [], // 显示用的成员名称数组 memberSearch: '', // 成员搜索关键词 @@ -384,15 +392,20 @@ 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)); // 如果displayMemberNames有内容,也加入Set中 if(this.displayMemberNames && this.displayMemberNames.length > 0) { this.displayMemberNames.forEach(name => uniqueNames.add(name)); } else this.displayMemberNames = Array.from(uniqueNames) // 转回数组并返回 return Array.from(uniqueNames); }, @@ -497,7 +510,7 @@ item => item !== name // 过滤掉与关闭名称相同的元素 ) console.log(this.selectedMemberNames) }, // 确认选择成员(保存到表单) confirmMemberSelection() { @@ -507,6 +520,10 @@ // 将弹窗选中的ID同步到表单 this.memberDialogVisible = false; this.$message.info(`已选择 ${this.selectedMemberNames.length} 名家族成员`); // 清空对话框里面选择的内容 // if(this.displayMemberNames.length==0) this.displayMemberNames = this.selectedMemberNames this.selectedMemberIds = []; }, splitPeopleToSelectedNames(people) { // 处理逻辑: @@ -538,12 +555,14 @@ this.loading = true; let clanId = this.$store.state.user.clanId let userId = this.$store.state.user.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) console.log(this.familyMembers.length) ruoyi-ui/src/views/bignote/index.vue
@@ -455,6 +455,14 @@ <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 @@ -601,10 +609,10 @@ 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"; @@ -622,6 +630,7 @@ // 成员多选相关 memberDialogVisible: false, // 弹窗可见性 familyMembers: [], // 家族成员列表(原始数据) anotherFamilyMembers: [], //另外家族成员信息 selectedMemberIds: [], // 弹窗中临时选中的成员ID(用于多选交互) memberSearch: '', // 成员搜索关键词 loading: false, // 加载状态 @@ -676,7 +685,8 @@ total: 0, // 家大事记表格数据 familyList: [], selectedMemberIds:[], displayMemberNames: [], // 显示用的成员名称数组 // 弹出层标题 title: "", @@ -781,9 +791,38 @@ 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() { @@ -1004,6 +1043,8 @@ 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 }) @@ -1183,6 +1224,23 @@ 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() { @@ -1216,6 +1274,8 @@ this.handleRemoveFile(this.fileListOther[0]); } this.getList(); this.selectedMemberNames = []; this.displayMemberNames = [] }); } }); @@ -1372,12 +1432,15 @@ 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) @@ -1395,16 +1458,32 @@ // 确认选择成员(保存到表单) 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); } }, // } }; @@ -1483,10 +1562,19 @@ .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 { ruoyi-ui/src/views/peopleSearch/index.vue
@@ -22,6 +22,8 @@ <input type="checkbox" v-model="searchForm.modules" :value="item.label"> <span>{{ item.value }}</span> </label> <!-- <el-select v-model="searchForm.module" placeholder="请选择搜索模块" @@ -187,6 +189,12 @@ <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-form-item> <!-- 或者使用多选模式 --> @@ -213,13 +221,14 @@ <script> // 导入API请求函数(根据实际项目路径调整) import { searchPeople, getModules } from '@/api/peopleSearch'; import { getFamilyMembers } from '@/api/root'; // 假设获取家族成员的API import { getFamilyMembers,listAnotherFamilyInfo } from '@/api/root'; // 假设获取家族成员的API export default { name: 'PeopleSearch', data() { return { names: "", displayMemberNames:[], selectedModules: [], selectedMemberIds:[], // ... existing data ... @@ -241,12 +250,13 @@ { id: 4, name: '家族成员4' }, { id: 5, name: '家族成员5' } ], anotherFamilyMembers: [], //另外家族成员信息 // 搜索表单数据 searchForm: { modules: [], dateRange: [], peoples: '', hasAttachment: '' hasAttachment: '是' }, // 表单验证规则 searchRules: { @@ -281,11 +291,37 @@ computed: { // 已选成员姓名(用于回显) selectedMemberNames() { var od = this.familyMembers .filter(member => this.selectedMemberIds.includes(member.userId)) .map(member => member.oldName); return od // 优先使用直接设置的显示名称 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); }, }, methods: { @@ -294,10 +330,11 @@ this.loading = true; let clanId = this.$store.state.user.clanId let userId = this.$store.state.user.userId try { const res = await getFamilyMembers(clanId); // 假设需要家族ID参数 const ano = await listAnotherFamilyInfo(userId) this.anotherFamilyMembers = ano.data console.log(res) console.log(res.data) this.familyMembers = res.data; @@ -320,7 +357,11 @@ // const response = await getModules(); response.data || this.modules = [ { label: '事纪', value: '事纪' }, { label: '部门管理', value: 'department' }, { label: '家产', value: '家产' }, { label: '收藏', value: '收藏' }, { label: '通讯录', value: '通讯录' }, { label: '收支', value: '收支' }, { label: '旅游', value: '旅游' }, // { label: '角色管理', value: 'role' }, // { label: '项目管理', value: 'project' } ]; @@ -476,6 +517,11 @@ // this.loginForm.familyMemberName = selectedName; this.familyMemberDialogVisible = false; this.$message.info(`已选择 ${this.selectedMemberNames.length} 名家族成员`); // 清空对话框里面选择的内容 // if(this.displayMemberNames.length==0) this.displayMemberNames = this.selectedMemberNames this.selectedMemberIds = []; }