| ruoyi-ui/src/views/collection/collectionInfo.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-ui/src/views/collection/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-ui/src/views/peopleSearch/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ruoyi-ui/src/views/collection/collectionInfo.vue
@@ -53,10 +53,74 @@ </el-form-item> </el-col> <el-col > <el-form-item label="持有者" prop="owner" label-width="65px" style="background: #FAD1E0;border-radius: 7px 7px 7px 7px;opacity: 1;"> <!-- <el-form-item label="持有者" prop="owner" label-width="65px" style="background: #FAD1E0;border-radius: 7px 7px 7px 7px;opacity: 1;"> <el-input v-model="formData.owner" placeholder="请输入持有者" clearable :style="{width: '100%'}" :disabled="dsb"> </el-input> </el-form-item> --> <el-form-item label="家族成员" prop="selectedMemberIds"> <!-- 已选成员回显区域 --> <div v-if="selectedMemberNames.length > 0" class="selected-members"> <el-tag v-for="(name, index) in selectedMemberNames" :key="index" closable @close="handleTagClose(index)" > {{ name }} </el-tag> </div> <!-- 触发弹窗按钮 --> <div style="display: flex; align-items: center;" v-if="!dsb" > <el-button type="primary" icon="el-icon-user-plus" @click="openMemberDialog" :disabled="loading" > 选择家族成员 </el-button> </div> </el-form-item> </el-col> <el-col> <!-- 其它人显示区域 --> <el-form-item label="其它人"> <!-- 已选其它人标签显示 --> <div v-if="otherPeople.length > 0" class="selected-members" style="display: inline-block; vertical-align: middle; margin-right: 10px;"> <el-tag v-for="(name, index) in otherPeople" :key="index" closable @close="handleOtherPeopleTagClose(index)" > {{ name }} </el-tag> </div> <!-- 编辑按钮 --> <el-button v-if="!dsb" type="primary" icon="el-icon-edit" size="mini" @click="openOtherPeopleDialog" > 编辑其它人 </el-button> </el-form-item> </el-col> <el-col> <el-form-item label="是否隐藏" prop="isHide"> <el-radio-group v-model="formData.isHide" :style="{width: '100%'}"> <el-radio label="是">是</el-radio> <el-radio label="否">否</el-radio> </el-radio-group> </el-form-item> </el-col> <el-col > <el-form-item label="价值" prop="price" label-width="50px" style="background: #FAD1E0;border-radius: 7px 7px 7px 7px;opacity: 1;"> @@ -219,6 +283,109 @@ </el-dialog> <el-dialog :visible.sync="memberDialogVisible" title="选择家族成员" width="50%" :close-on-click-modal="false" > <!-- 弹窗内容区 --> <div class="member-dialog-content"> <!-- 搜索框 --> <el-input v-model="memberSearch" placeholder="搜索成员姓名..." prefix-icon="el-icon-search" style="margin-bottom: 20px;" ></el-input> <!-- 加载状态 --> <div v-if="loading" class="loading-container"> <el-loading-spinner></el-loading-spinner> <p>加载家族成员中...</p> </div> <div v-else-if="familyMembers.length === 0" class="no-data"> <el-empty description="暂无家族成员数据"></el-empty> </div> <label v-for="item in familyMembers" :key="item.userId" class="signature-checkbox"> <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 > 4545 </el-checkbox> </el-checkbox-group> --> </div> <!-- 弹窗底部按钮 --> <div slot="footer" class="dialog-footer"> <el-button @click="memberDialogVisible = false">取消</el-button> <el-button type="primary" @click="confirmMemberSelection">确认选择</el-button> </div> </el-dialog> <!-- 其它人编辑弹窗 --> <el-dialog :visible.sync="otherPeopleDialogVisible" title="编辑其它人" width="500px" :close-on-click-modal="false" @close="handleOtherPeopleDialogClose" > <!-- 已添加的其它人标签 --> <div v-if="tempOtherPeople.length > 0" class="selected-members" style="margin-bottom: 20px;"> <el-tag v-for="(name, index) in tempOtherPeople" :key="index" closable @close="handleTempOtherPeopleTagClose(index)" > {{ name }} </el-tag> </div> <!-- 添加输入框 --> <div style="display: flex; align-items: center;"> <el-input v-model="otherPeopleInput" placeholder="请输入姓名,按回车或点击添加" clearable style="flex: 1; margin-right: 10px;" @keyup.enter.native="addOtherPeople" ></el-input> <el-button type="primary" icon="el-icon-plus" @click="addOtherPeople" > 添加 </el-button> </div> <!-- 弹窗底部按钮 --> <div slot="footer" class="dialog-footer"> <el-button @click="otherPeopleDialogVisible = false">取消</el-button> <el-button type="primary" @click="confirmOtherPeople">完成</el-button> </div> </el-dialog> </div> </template> @@ -229,12 +396,27 @@ import {Message} from "element-ui"; import {addRole, updateRole} from "@/api/system/role"; import {getCollection, updateCollection,download,uploadPic,listType} from "@/api/collection/index"; import { getFamilyMembers ,listAnotherFamilyInfo} from '@/api/root'; // 假设获取家族成员的API export default { components: {}, props: [], data() { return { // 成员多选相关 memberDialogVisible: false, // 弹窗可见性 familyMembers: [], // 家族成员列表(原始数据) anotherFamilyMembers: [], //另外家族成员信息 selectedMemberIds: [], // 弹窗中临时选中的成员ID(用于多选交互) displayMemberNames: [], // 显示用的成员名称数组 otherPeople: [], // 其它人列表 tempOtherPeople: [], // 弹窗中临时编辑的其它人列表 otherPeopleInput: '', // 其它人输入框内容 otherPeopleDialogVisible: false, // 其它人弹窗可见性 memberSearch: '', // 成员搜索关键词 loading: false, // 加载状态 cdi:"收藏与荣誉详细信息", udi:"收藏与荣誉信息详情", // 数据范围选项 @@ -323,7 +505,51 @@ showInput: false } }, computed: {}, computed: { // 已选成员姓名(用于回显) selectedMemberNames() { // alert(this.familyMembers.length) // 优先使用直接设置的显示名称 if(this.displayMemberNames && this.displayMemberNames.length > 0 && this.selectedMemberIds.length==0) { return this.displayMemberNames; } // 否则根据选中的ID计算 // 合并过滤后的成员名称和displayMemberNames内容 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); }, // 过滤后的成员列表(搜索功能) filteredMembers() { if (!this.memberSearch) return this.familyMembers; console.log(this.familyMembers) console.log("-sdf") const keyword = this.memberSearch.toLowerCase(); return this.familyMembers; //.filter(member => // member.filteredMembers.toLowerCase().includes(keyword) //|| // member.role.toLowerCase().includes(keyword) // ); } }, watch: {}, created() { const id = this.$route.params && this.$route.params.id; @@ -392,6 +618,7 @@ } } this.loading = false; this.splitPeopleToSelectedNames(this.formData.owner); }); listType(this.queryParams).then(response => { this.typeList = response.data; @@ -408,6 +635,156 @@ }, mounted() {}, methods: { 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) }, // 移除其它人标签 handleOtherPeopleTagClose(index) { const removedName = this.otherPeople[index]; this.otherPeople.splice(index, 1); this.$message.info(`已移除: ${removedName}`); }, // 打开其它人编辑弹窗 openOtherPeopleDialog() { // 复制当前其它人列表到临时列表 this.tempOtherPeople = [...this.otherPeople]; this.otherPeopleInput = ''; this.otherPeopleDialogVisible = true; }, // 弹窗内添加其它人 addOtherPeople() { const name = this.otherPeopleInput.trim(); if (!name) { this.$message.warning('请输入姓名'); return; } if (this.tempOtherPeople.includes(name)) { this.$message.warning('该姓名已添加'); return; } this.tempOtherPeople.push(name); this.otherPeopleInput = ''; this.$message.success(`已添加: ${name}`); }, // 弹窗内移除其它人标签 handleTempOtherPeopleTagClose(index) { const removedName = this.tempOtherPeople[index]; this.tempOtherPeople.splice(index, 1); this.$message.info(`已移除: ${removedName}`); }, // 确认完成(保存弹窗中的更改) confirmOtherPeople() { if (this.tempOtherPeople.length > 0) { this.$message.success(`已保存 ${this.tempOtherPeople.length} 名其它人`); } else { this.$message.info('未添加任何其它人'); } this.otherPeople = [...this.tempOtherPeople]; this.otherPeopleDialogVisible = false; }, // 其它人弹窗关闭处理 handleOtherPeopleDialogClose() { this.otherPeopleInput = ''; // 不保存临时列表的更改 }, // 确认选择成员(保存到表单) confirmMemberSelection() { console.log(this.selectedMemberIds) this.formData.selectedMemberIds = [...this.selectedMemberIds]; console.log(this.formData.selectedMemberIds) // 将弹窗选中的ID同步到表单 this.memberDialogVisible = false; this.$message.info(`已选择 ${this.selectedMemberNames.length} 名家族成员`); // 清空对话框里面选择的内容 // if(this.displayMemberNames.length==0) this.displayMemberNames = this.selectedMemberNames this.selectedMemberIds = []; }, splitPeopleToSelectedNames(people) { // 处理逻辑: // 1. 判断 people 是否存在且为字符串,避免报错 if (!people || typeof people !== "string") { this.displayMemberNames = []; this.otherPeople = []; return; } // 2. 先按分号分割:第一部分是家族成员,第二部分是其它人 const parts = people.split(';'); // 第一部分:按逗号分割赋值给 displayMemberNames if (parts[0]) { this.displayMemberNames = parts[0].split(",").map(name => name.trim()).filter(name => name); } else { this.displayMemberNames = []; } // 第二部分:按逗号分割赋值给 otherPeople if (parts[1]) { this.otherPeople = parts[1].split(",").map(name => name.trim()).filter(name => name); } else { this.otherPeople = []; } console.log('家族成员:', this.displayMemberNames) console.log('其它人:', this.otherPeople) }, // 打开成员多选弹窗 async openMemberDialog() { this.memberDialogVisible = true; this.memberSearch = ''; // 重置搜索 // 初始化弹窗选中状态(回显已选成员) // this.selectedMemberIds = [...this.familyForm.selectedMemberIds]; // 加载家族成员列表 await this.loadFamilyMembers(); }, // 加载家族成员列表 async loadFamilyMembers() { 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) // console.log(this.familyMembers.length) // console.log(this.familyMembers.length) // console.log(this.familyMembers[0]) // for(let i=0; i < this.familyMembers.length; i++) // console.log(this.familyMembers[i]) // console.log("---999") // 格式:[{ id: 1, name: '张三', role: '家长', relation: '父子', avatar: 'xxx' }, ...] } catch (err) { this.$message.error('加载家族成员失败,请重试'); } finally { this.loading = false; } }, getData(){ const id = this.$route.params && this.$route.params.id; let _this = this @@ -481,6 +858,10 @@ this.$refs['elForm'].validate(valid => { // 组合数据:家族成员按逗号分隔,其它人按逗号分隔,两部分用分号分隔 const memberPart = this.selectedMemberNames.join(","); const otherPart = this.otherPeople.join(","); this.formData.owner = `${memberPart};${otherPart}`; if (valid) { if (this.formData.id != undefined) { ruoyi-ui/src/views/collection/index.vue
@@ -221,7 +221,11 @@ <el-table-column label="来源" prop="source" sortable :show-overflow-tooltip="true" width="120" align="center" > <template slot-scope="scope">{{scope.row.source? scope.row.source: '————'}}</template> </el-table-column> <el-table-column label="是否隐藏" prop="isHide"> </el-table-column> <el-table-column label="持有者" prop="owner" sortable :show-overflow-tooltip="true" width="110" align="center"> <template slot-scope="scope">{{scope.row.owner? scope.row.owner: '————'}}</template> @@ -334,10 +338,67 @@ <el-input v-model="formDat.source" placeholder="请输入来源" clearable :style="{width: '100%'}" > </el-input> </el-form-item> <el-form-item label="持有者" prop="owner"> <!-- <el-form-item label="持有者" prop="owner"> <el-input v-model="formDat.owner" placeholder="请输入持有者" clearable :style="{width: '100%'}" > </el-input> </el-form-item> </el-form-item> --> <!-- 家族成员选择字段 --> <el-form-item label="持有者" prop="selectedMemberIds"> <!-- 已选成员回显区域 --> <div v-if="selectedMemberNames.length > 0" class="selected-members"> <el-tag v-for="(name, index) in selectedMemberNames" :key="index" closable @close="handleTagClose(index)" > {{ name }} </el-tag> </div> <!-- 触发弹窗按钮 --> <el-button type="primary" icon="el-icon-user-plus" @click="openMemberDialog" :disabled="loading" > 选择家族成员 </el-button> </el-form-item> <!-- 其它人选择字段 --> <el-form-item label="其它人" prop="otherPeople"> <!-- 已选其它人回显区域 --> <div v-if="formDat.otherPeople && formDat.otherPeople.length > 0" class="selected-members"> <el-tag v-for="(name, index) in formDat.otherPeople" :key="index" closable @close="handleOtherPeopleTagClose(index)" > {{ name }} </el-tag> </div> <!-- 触发弹窗按钮 --> <el-button type="primary" icon="el-icon-user" @click="openOtherPeopleDialog" :disabled="loading" > 添加其它人 </el-button> </el-form-item> <el-form-item label="是否隐藏" prop="isHide"> <el-radio-group v-model="formDat.isHide" :style="{width: '100%'}"> <el-radio label="是">是</el-radio> <el-radio label="否">否</el-radio> </el-radio-group> </el-form-item> <el-form-item label="价格" prop="price"> <el-input v-model="formDat.price" type="number" placeholder="请输入价格" clearable :style="{width: '100%'}" > </el-input> @@ -611,6 +672,104 @@ </el-dialog> <!-- 其它人弹窗 --> <el-dialog :visible.sync="otherPeopleDialogVisible" title="添加其它人" width="400px" :close-on-click-modal="false" @close="handleOtherPeopleDialogClose" > <div class="other-people-dialog"> <el-input v-model="otherPeopleInput" placeholder="请输入姓名,按回车或点击添加按钮添加" @keyup.enter.native="addOtherPeople" style="margin-bottom: 20px;" > <el-button slot="append" icon="el-icon-plus" @click="addOtherPeople">添加</el-button> </el-input> <!-- 已添加的其它人列表 --> <div v-if="formDat.otherPeople && formDat.otherPeople.length > 0" class="added-people-list"> <el-divider content-position="left">已添加 ({{ formDat.otherPeople.length }}人)</el-divider> <el-tag v-for="(name, index) in formDat.otherPeople" :key="index" closable @close="handleOtherPeopleTagClose(index)" style="margin-right: 8px; margin-bottom: 8px;" > {{ name }} </el-tag> </div> <div v-else class="no-people" style="padding: 20px 0;"> <el-empty description="暂未添加任何人" :image-size="60"></el-empty> </div> </div> <div slot="footer" class="dialog-footer"> <el-button type="primary" @click="confirmOtherPeople">完成</el-button> </div> </el-dialog> <el-dialog :visible.sync="memberDialogVisible" title="选择家族成员" width="50%" :close-on-click-modal="false" > <!-- 弹窗内容区 --> <div class="member-dialog-content"> <!-- 搜索框 --> <el-input v-model="memberSearch" placeholder="搜索成员姓名..." prefix-icon="el-icon-search" style="margin-bottom: 20px;" ></el-input> <!-- 加载状态 --> <div v-if="loading" class="loading-container"> <el-loading-spinner></el-loading-spinner> <p>加载家族成员中...</p> </div> <div v-else-if="familyMembers.length === 0" class="no-data"> <el-empty description="暂无家族成员数据"></el-empty> </div> <label v-for="item in familyMembers" :key="item.userId" class="signature-checkbox"> <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 > 4545 </el-checkbox> </el-checkbox-group> --> </div> <!-- 弹窗底部按钮 --> <div slot="footer" class="dialog-footer"> <el-button @click="memberDialogVisible = false">取消</el-button> <el-button type="primary" @click="confirmMemberSelection">确认选择</el-button> </div> </el-dialog> </div> </template> @@ -628,12 +787,23 @@ import {Message} from "element-ui"; import {showShareUser} from "@/api/bignote/index"; import {getAllInfo} from "@/api/system/user" import { getFamilyMembers,listAnotherFamilyInfo } from '@/api/root'; // 假设获取家族成员的API export default { name: "ZfCollection", dicts: ['sys_normal_disable'], data() { return { // 成员多选相关 memberDialogVisible: false, // 弹窗可见性 familyMembers: [], // 家族成员列表(原始数据) anotherFamilyMembers: [], //另外家族成员信息 selectedMemberIds: [], // 弹窗中临时选中的成员ID(用于多选交互) memberSearch: '', // 成员搜索关键词 loading: false, // 加载状态 // 其它人弹窗相关 otherPeopleDialogVisible: false, otherPeopleInput: '', // 分享给谁的list listRoot: [], open1:false, @@ -722,6 +892,7 @@ location:undefined, remark:undefined, url: "", otherPeople:[], }, // 菜单列表 @@ -805,6 +976,56 @@ this.getList1(); }, computed: { // 已选成员姓名(用于回显) selectedMemberNames() { // 优先使用直接设置的显示名称 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() { if (!this.memberSearch) return this.familyMembers; console.log(this.familyMembers) console.log("-sdf") const keyword = this.memberSearch.toLowerCase(); return this.familyMembers; //.filter(member => // member.filteredMembers.toLowerCase().includes(keyword) //|| // member.role.toLowerCase().includes(keyword) // ); } }, methods: { // 分页 fenYe(){ @@ -938,7 +1159,7 @@ }, getList1() { let userId = this.$store.state.user.userId this.userOptions = [] showShareUser(userId, 2018).then(response=>{ console.log("===========ddddddddddddd") @@ -948,11 +1169,11 @@ this.userOptions.push({label: element.oldName,value: element.userId}) }) }) let clanId = this.$store.state.user.clanId getAllInfo(clanId).then(response => { this.listRoot = response.data; const kon = {} @@ -1189,7 +1410,7 @@ /** 查看详细信息 */ handleCheck(row){ const id = row.id; this.open2 = false; this.open2 = false; this.$router.push("/familymodel/collection/collectionInfo/" + id); }, @@ -1217,7 +1438,13 @@ this.$refs["elForm"].validate(valid => { if (valid) { var pel = "" pel = pel + this.selectedMemberNames.join(",") if(this.formDat.otherPeople.length != 0) { pel = pel +";"+ this.formDat.otherPeople.join(",") } this.formDat.owner = pel; addCollection(this.formDat).then(response => { this.$modal.msgSuccess("新增成功"); this.open = false; @@ -1234,6 +1461,8 @@ this.handleRemoveFile(this.fileListOther[0]); } this.getList(); this.selectedMemberNames = []; this.displayMemberNames = [] }); } }); @@ -1380,7 +1609,119 @@ Message({ message: "导入失败", type: 'error' }) }) } }, // 打开成员多选弹窗 async openMemberDialog() { this.memberDialogVisible = true; this.memberSearch = ''; // 重置搜索 // 初始化弹窗选中状态(回显已选成员) // this.selectedMemberIds = [...this.familyForm.selectedMemberIds]; // 加载家族成员列表 await this.loadFamilyMembers(); }, // 加载家族成员列表 async loadFamilyMembers() { 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) // console.log(this.familyMembers[0]) // for(let i=0; i < this.familyMembers.length; i++) // console.log(this.familyMembers[i]) // console.log("---999") // 格式:[{ id: 1, name: '张三', role: '家长', relation: '父子', avatar: 'xxx' }, ...] } catch (err) { this.$message.error('加载家族成员失败,请重试'); } finally { this.loading = false; } }, // 确认选择成员(保存到表单) confirmMemberSelection() { console.log() this.formDat.selectedMemberIds = [...this.selectedMemberIds]; // 将弹窗选中的ID同步到表单 this.memberDialogVisible = false; 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 // 过滤掉与关闭名称相同的元素 ) this.displayMemberNames = this.selectedMemberNames console.log(this.selectedMemberNames) }, openOtherPeopleDialog(){ alert(23) this.otherPeopleDialogVisible = true; this.otherPeopleInput = ''; // 清空输入框 }, // 添加其它人(支持回车和点击添加按钮) addOtherPeople() { const name = this.otherPeopleInput.trim(); if (!name) { this.$message.warning('请输入姓名'); return; } if (this.formDat.otherPeople.includes(name)) { this.$message.warning('该姓名已添加'); return; } this.formDat.otherPeople.push(name); this.otherPeopleInput = ''; // 清空输入框,准备输入下一个 this.$message.success(`已添加: ${name}`); }, // 确认完成(关闭弹窗) confirmOtherPeople() { if (this.formDat.otherPeople.length > 0) { this.$message.success(`已添加 ${this.formDat.otherPeople.length} 名其它人`); } else { this.$message.info('未添加任何其它人'); } this.otherPeopleDialogVisible = false; }, // 关闭其它人标签 handleOtherPeopleTagClose(index) { const removedName = this.formDat.otherPeople[index]; this.formDat.otherPeople.splice(index, 1); this.$message.info(`已移除: ${removedName}`); }, // 其它人弹窗关闭处理 handleOtherPeopleDialogClose() { this.otherPeopleInput = ''; }, } }; </script> ruoyi-ui/src/views/peopleSearch/index.vue
@@ -477,7 +477,10 @@ // 查看详情 handleView(row) { var id = row.id this.$router.push("/familymodel/bignote/familyeventInfo/" + id); if(row.module=="事纪") this.$router.push("/familymodel/bignote/familyeventInfo/" + id); else if(row.module=="收藏") this.$router.push("/familymodel/collection/collectionInfo/" + id) }, // 编辑