feige
18 小时以前 f6ba10af9f368f251de29e77ba88d5ad33bc31d6
修改了代码
3个文件已修改
751 ■■■■■ 已修改文件
ruoyi-ui/src/views/collection/collectionInfo.vue 385 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/collection/index.vue 361 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/peopleSearch/index.vue 5 ●●●● 补丁 | 查看 | 原始文档 | 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)
      },
      // 编辑