feige
5 天以前 5cdf8a720624389ea1d4fecd8d3046979595ba64
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' }
          ];
@@ -364,7 +405,7 @@
              const response = await searchPeople(params);
              console.log(response)
              // 更新搜索结果和分页信息
              this.searchResult = response.data.data || [];
              this.searchResult = response.data.list || [];
              console.log(this.searchResult)
              this.pagination.total = response.data.total || 0;
@@ -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 = [];
    }