yaowanxin
2025-09-15 b0fa15ec9c9dde96e423bc29cb4b605bb41502a2
企业通讯录管理页面,用印管理查询调整
已添加2个文件
已修改2个文件
905 ■■■■■ 文件已修改
src/api/collaborativeApproval/enterpriseBook.js 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/collaborativeApproval/enterpriseBook/index.vue 802 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/collaborativeApproval/knowledgeBase/index.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/collaborativeApproval/sealManagement/index.vue 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/collaborativeApproval/enterpriseBook.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
import request from '@/utils/request'
// æŸ¥è¯¢ä¸ªäººé€šè®¯å½•
// ä¸ªäººé€šè®¯å½•通常是用户收藏或频繁联系的人员
export function getPersonalContacts(page,query) {
  return request({
    url: '/staffContactsPersonal/getList',
    method: 'get',
    params: {
      ...page,
      ...query
    }
  })
}
// æ·»åŠ è”ç³»äººåˆ°ä¸ªäººé€šè®¯å½•
export function addPersonalContact(data) {
  return request({
    url: '/staffContactsPersonal/add',
    method: 'post',
    data: data
  })
}
// ä»Žä¸ªäººé€šè®¯å½•移除联系人
export function removePersonalContact(id) {
  return request({
    url: '/staffContactsPersonal/delete/' + id,
    method: 'delete'
  })
}
// æŸ¥è¯¢å…¬å…±é€šè®¯å½•
// å…¬å…±é€šè®¯å½•通常是所有员工可见的联系方式
export function getPublicContacts(query) {
  return request({
    url: '/staff/contacts/public/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢å•位通讯录
// å•位通讯录通常按部门组织的员工联系方式
export function getCompanyContacts(query) {
  return request({
    url: '/staff/contacts/company/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢éƒ¨é—¨é€šè®¯å½•树结构
export function getDepartmentTree() {
  return request({
    url: '/staff/contacts/department/tree',
    method: 'get'
  })
}
// èŽ·å–å‘˜å·¥è¯¦ç»†ä¿¡æ¯
export function getEmployeeDetail(employeeId) {
  return request({
    url: '/staff/staffOnJob/' + employeeId,
    method: 'get'
  })
}
src/views/collaborativeApproval/enterpriseBook/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,802 @@
<template>
  <div class="app-container">
    <!-- å¤´éƒ¨å¯¼èˆª -->
    <!-- <div class="header">
      <h2>企业通讯录管理</h2>
      <p>管理个人、公共和单位的联系方式</p>
    </div> -->
    <!-- æ ‡ç­¾é¡µåˆ‡æ¢ -->
    <el-tabs v-model="activeTab" @tab-change="handleTabChange" type="border-card">
      <el-tab-pane label="个人通讯录" name="personal">
        <div class="tab-content">
          <!-- æœç´¢æ¡† -->
          <el-input
            v-model="personalSearch.staffName"
            placeholder="搜索联系人"
            clearable
            prefix-icon="Search"
            class="search-input"
            @keyup.enter="getPersonalContactsList"
          />
          <el-button style="margin: 0 0 20px 20px;" type="primary" @click="showAddContactDialog=true">添加联系人</el-button>
          <!-- è”系人列表 -->
          <div class="contact-list">
            <div
              v-for="contact in personalContacts"
              :key="contact.id"
              class="contact-card"
              @click="showContactDetail(contact)"
            >
              <div class="contact-avatar">{{ contact.staffName.charAt(0) }}</div>
              <div class="contact-info">
                <h4>{{ contact.staffName }}</h4>
                <p>{{ contact.profession }} - {{ contact.postJob }}</p>
                <div class="contact-phone">{{ contact.phone }}</div>
              </div>
              <div class="contact-actions">
                <!-- <el-button
                  type="text"
                  icon="Phone"
                  @click.stop="callContact(contact)"
                ></el-button> -->
                <el-button
                  type="text"
                  icon="Message"
                  @click.stop="messageContact(contact)"
                ></el-button>
                <el-button
                  type="text"
                  icon="Delete"
                  @click.stop="removeFromPersonalContacts(contact.id)"
                ></el-button>
              </div>
            </div>
            <!-- ç©ºçŠ¶æ€
            <div v-if="personalContacts.length === 0 && !loading" class="empty-state">
              <el-empty description="暂无联系人" />
              <el-button type="primary" @click="showAddContactDialog=true">添加联系人</el-button>
            </div> -->
          </div>
        </div>
      </el-tab-pane>
      <el-tab-pane label="公共通讯录" name="public">
        <div class="tab-content">
          <!-- æœç´¢æ¡† -->
          <el-input
            v-model="publicSearch.staffName"
            placeholder="搜索公共联系人"
            clearable
            prefix-icon="Search"
            class="search-input"
            @keyup.enter="getPublicContactsList"
          />
          <!-- è”系人列表 publicContacts-->
          <div class="contact-list">
            <div
              v-for="contact in EmployeeList"
              :key="contact.id"
              class="contact-card"
              @click="showContactDetail(contact)"
            >
              <div class="contact-avatar">{{ contact.staffName.charAt(0) }}</div>
              <div class="contact-info">
                <h4>{{ contact.staffName }}</h4>
                <p>{{ contact.postJob }} - {{ contact.profession }}</p>
                <div class="contact-phone">{{ contact.phone }}</div>
              </div>
              <div class="contact-actions">
                <!-- <el-button
                  type="text"
                  icon="Phone"
                  @click.stop="callContact(contact)"
                ></el-button> -->
                <el-button
                  type="text"
                  icon="Message"
                  @click.stop="messageContact(contact)"
                ></el-button>
                <el-button
                  type="text"
                  icon="Delete"
                  :type="isInPersonalContacts(contact.id) ? 'primary' : ''"
                  @click.stop="togglePersonalContact(contact)"
                ></el-button>
              </div>
            </div>
          </div>
        </div>
      </el-tab-pane>
      <el-tab-pane label="单位通讯录" name="company">
        <div class="tab-content">
          <div class="company-contacts-layout">
            <!-- å·¦ä¾§éƒ¨é—¨æ ‘ -->
            <div class="department-tree">
              <!-- <h3>部门结构</h3>
              <el-tree
                :data="departmentTree"
                :props="{ label: 'deptName', children: 'children' }"
                node-key="deptId"
                ref="departmentTreeRef"
                highlight-current
                default-expand-all
                @node-click="handleDepartmentClick"
              /> -->
              <el-col >
                <div class="head-container">
                  <el-input
                    v-model="deptName"
                    placeholder="请输入部门名称"
                    clearable
                    prefix-icon="Search"
                    style="margin-bottom: 20px"
                  />
                </div>
                <div class="head-container">
                  <el-tree
                    :data="departmentTree"
                    :props="{ label: 'label', children: 'children' }"
                    :expand-on-click-node="false"
                    :filter-node-method="filterNode"
                    ref="deptTreeRef"
                    node-key="id"
                    highlight-current
                    default-expand-all
                    @node-click="handleDepartmentClick"
                  />
                </div>
              </el-col>
            </div>
            <!-- å³ä¾§éƒ¨é—¨æˆå‘˜ -->
            <div class="department-members">
              <h3>{{ currentDepartment?.label || '全部成员' }}</h3>
              <el-input
                v-model="companySearch.staffName"
                placeholder="搜索部门成员"
                clearable
                prefix-icon="Search"
                class="search-input"
                @keyup.enter="getCompanyContactsList"
              />
              <div class="contact-list">
                <div
                  v-for="contact in companyContacts"
                  :key="contact.id"
                  class="contact-card"
                  @click="showContactDetail(contact)"
                >
                  <div class="contact-avatar">{{ contact.staffName.charAt(0) }}</div>
                  <div class="contact-info">
                    <h4>{{ contact.staffName }}</h4>
                    <p>{{ contact.profession }}</p>
                    <div class="contact-phone">{{ contact.phone }}</div>
                  </div>
                  <div class="contact-actions">
                    <el-button
                      type="text"
                      icon="Message"
                      @click.stop="messageContact(contact)"
                    ></el-button>
                    <el-button
                      type="text"
                      icon="Delete"
                      :type="isInPersonalContacts(contact.id) ? 'primary' : ''"
                      @click.stop="togglePersonalContact(contact)"
                    ></el-button>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </el-tab-pane>
    </el-tabs>
    <!-- è”系人详情弹窗 -->
    <el-dialog
      v-model="showDetailDialog"
      title="联系人详情"
      width="400px"
    >
      <div v-if="selectedContact" class="contact-detail">
        <div class="detail-avatar">{{ selectedContact.staffName?.charAt(0) }}</div>
        <h3>{{ selectedContact.staffName }}</h3>
        <p class="detail-position">{{ selectedContact.profession }} - {{ selectedContact.postJob }}</p>
        <div class="detail-info">
          <div class="info-item">
            <span class="label">编号:</span>
            <span class="value">{{ selectedContact.staffNo }}</span>
          </div>
          <div class="info-item">
            <span class="label">手机号码:</span>
            <span class="value">{{ selectedContact.phone }}</span>
          </div>
          <div class="info-item">
            <span class="label">邮箱:</span>
            <span class="value">{{ selectedContact.sex }}</span>
          </div>
          <div class="info-item">
            <span class="label">住址:</span>
            <span class="value">{{ selectedContact.adress || '暂无' }}</span>
          </div>
          <div class="info-item">
            <span class="label">身份证号:</span>
            <span class="value">{{ selectedContact.identityCard || '暂无' }}</span>
          </div>
        </div>
      </div>
      <template #footer>
        <el-button @click="showDetailDialog = false">关闭</el-button>
        <el-button
          type="primary"
          v-if="activeTab !== 'personal'"
          @click="togglePersonalContact(selectedContact); showDetailDialog = false"
        >
          {{ isInPersonalContacts(selectedContact?.id) ? '从个人通讯录移除' : '添加到个人通讯录' }}
        </el-button>
      </template>
    </el-dialog>
    <!-- æ·»åŠ è”ç³»äººå¼¹çª— -->
    <el-dialog
      v-model="showAddContactDialog"
      title="添加联系人"
      width="500px"
    >
      <el-form :model="addContactForm" ref="addContactFormRef" label-width="80px">
        <!-- <el-form-item label="姓名" prop="name">
          <el-input v-model="addContactForm.name" placeholder="请输入姓名" />
        </el-form-item>
        <el-form-item label="手机号码" prop="phone">
          <el-input v-model="addContactForm.phone" placeholder="请输入手机号码" />
        </el-form-item>
        <el-form-item label="邮箱" prop="email">
          <el-input v-model="addContactForm.email" placeholder="请输入邮箱" />
        </el-form-item>
        <el-form-item label="部门" prop="department">
          <el-input v-model="addContactForm.department" placeholder="请输入部门" />
        </el-form-item> -->
        <el-form-item label="姓名" prop="name">
          <!-- <select v-model="addContactForm.contactId">
            <option v-for="item in EmployeeList" :key="item.id" :value="item.id">{{ item.staffName }}</option>
          </select> -->
          <el-select v-model="addContactForm.contactId" placeholder="请选择" style="width: 100%">
            <el-option
              v-for="option in EmployeeList"
              :key="option.id"
              :label="option.staffName"
              :value="option.id"
            />
          </el-select>
        </el-form-item>
      </el-form>
      <template #footer>
        <el-button @click="showAddContactDialog = false">取消</el-button>
        <el-button type="primary" @click="addContact">确定</el-button>
      </template>
    </el-dialog>
  </div>
</template>
<script setup>
import { ref, onMounted, reactive, computed } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import {
  getPersonalContacts,
  addPersonalContact,
  removePersonalContact,
  getPublicContacts,
  getCompanyContacts,
  getDepartmentTree,
  getEmployeeDetail
} from '@/api/collaborativeApproval/enterpriseBook.js'
import { getUserProfile } from '@/api/system/user.js'
import {staffJoinListPage} from "@/api/personnelManagement/onboarding.js";
import {
  changeUserStatus,
  listUser,
  resetUserPwd,
  delUser,
  getUser,
  updateUser,
  addUser,
  deptTreeSelect,
} from "@/api/system/user";
// æ ‡ç­¾é¡µçŠ¶æ€
const activeTab = ref('personal')
const loading = ref(false)
const EmployeeList = ref([])
const page = reactive({
  pageNum: 1,
  pageSize: 10,
  total: 0,
})
// ä¸ªäººé€šè®¯å½•数据
const personalContacts = ref([])
const personalSearch = ref({
  staffName: '',
})
// å…¬å…±é€šè®¯å½•数据
const publicContacts = ref([])
const publicSearch = ref({
  staffName: '',
  staffState: 1
})
// å•位通讯录数据
const companyContacts = ref([])
const companySearch = ref({
  staffName: '',
  staffState: 1
})
const departmentTree = ref([])
const departmentTreeRef = ref(null)
const currentDepartment = ref(null)
// å¼¹çª—状态
const showDetailDialog = ref(false)
const showAddContactDialog = ref(false)
const selectedContact = ref(null)
// æ·»åŠ è”ç³»äººè¡¨å•
const addContactForm = reactive({
  contactId: '',
  name: '',
  phone: '',
  email: '',
  department: '',
  position: ''
})
const addContactFormRef = ref(null)
// åˆå§‹åŒ–数据
onMounted(() => {
  getEmployeeList()
  getPersonalContactsList()
  if (activeTab.value === 'public') {
    getPublicContactsList()
  } else if (activeTab.value === 'company') {
    getDepartmentTreeData()
    getCompanyContactsList()
  }
})
// å¤„理标签页切换
const handleTabChange = (tabName) => {
  if (tabName === 'public') {
    getPublicContactsList()
  } else if (tabName === 'company') {
    getDepartmentTreeData()
    getCompanyContactsList()
  }
}
// èŽ·å–ä¸ªäººé€šè®¯å½•åˆ—è¡¨
const getPersonalContactsList = async () => {
  loading.value = true
  getPersonalContacts(page,personalSearch.value).then(res => {
    personalContacts.value = res.data.records
  })
  loading.value = false
}
// èŽ·å–å…¬å…±é€šè®¯å½•åˆ—è¡¨
const getPublicContactsList = async () => {
  loading.value = true
  getEmployeeList()
  // publicContacts.value = generateMockPublicContacts()
  loading.value = false
}
  //获取员工列表
const getEmployeeList = async () => {
  staffJoinListPage(publicSearch.value).then(res => {
    console.log(res.data.records)
      EmployeeList.value = res.data.records
    }).catch(err => {})
}
// èŽ·å–å•ä½é€šè®¯å½•åˆ—è¡¨
const getCompanyContactsList = async () => {
  loading.value = true
    staffJoinListPage(companySearch.value).then(res => {
    // console.log(res.data.records)
      companyContacts.value = res.data.records
    }).catch(err => {})
  loading.value = false
 loading.value = false
  // }
}
// èŽ·å–éƒ¨é—¨æ ‘ç»“æž„
const getDepartmentTreeData = async () => {
    deptTreeSelect().then((response) => {
    // console.log("Tree",response.data)
    departmentTree.value = response.data;
    // enabledDeptOptions.value = filterDisabledDept(
    //   JSON.parse(JSON.stringify(response.data))
    // );
  });
}
// /** è¿‡æ»¤ç¦ç”¨çš„部门 */
// function filterDisabledDept(deptList) {
//   return deptList.filter((dept) => {
//     if (dept.disabled) {
//       return false;
//     }
//     if (dept.children && dept.children.length) {
//       dept.children = filterDisabledDept(dept.children);
//     }
//     return true;
//   });
// }
// å¤„理部门点击
const handleDepartmentClick = (data) => {
  // console.log("点击",data)
  companySearch.value = {
    ...companySearch.value,
    deptId: data.id,
  }
  // currentDepartment.value = data.id
  // èŽ·å–è¯¥éƒ¨é—¨çš„æˆå‘˜åˆ—è¡¨
  getCompanyContactsList()
}
// æ˜¾ç¤ºè”系人详情
const showContactDetail = async (contact) => {
  selectedContact.value = contact
  showDetailDialog.value = true
}
// æ‹¨æ‰“电话
const callContact = (contact) => {
  ElMessage.info(`正在拨打 ${contact.name} çš„电话: ${contact.phone}`)
}
// å‘送消息
const messageContact = (contact) => {
  ElMessage.info(`正在发送消息给 ${contact.name}`)
}
// æ·»åŠ è”ç³»äºº
const addContact = async () => {
  try {
    // è¡¨å•验证
    // if (!addContactForm.name || !addContactForm.phone) {
    //   ElMessage.warning('请填写姓名和手机号码')
    //   return
    // }
    const res = await addPersonalContact(addContactForm)
    if (res.code === 200) {
      ElMessage.success('添加成功')
      showAddContactDialog.value = false
      getPersonalContactsList()
      // é‡ç½®è¡¨å•
      Object.keys(addContactForm).forEach(key => {
        addContactForm[key] = ''
      })
    }
  } catch (error) {
    ElMessage.error('添加失败')
    // æ¨¡æ‹Ÿæ·»åŠ æˆåŠŸ
    personalContacts.value.push({
      ...addContactForm,
      id: Date.now(),
      createTime: new Date().toISOString()
    })
    ElMessage.success('添加成功')
    showAddContactDialog.value = false
    // é‡ç½®è¡¨å•
    Object.keys(addContactForm).forEach(key => {
      addContactForm[key] = ''
    })
  }
}
// ä»Žä¸ªäººé€šè®¯å½•移除
const removeFromPersonalContacts = async (contactId) => {
  ElMessageBox.confirm(
    '确定要从个人通讯录中移除该联系人吗?',
    '提示',
    {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      type: 'warning'
    }
  ).then(async () => {
    try {
      const res = await removePersonalContact(contactId)
      if (res.code === 200) {
        ElMessage.success('移除成功')
        getPersonalContactsList()
      }
    } catch (error) {
      ElMessage.error('移除失败')
      // æ¨¡æ‹Ÿç§»é™¤æˆåŠŸ
      // personalContacts.value = personalContacts.value.filter(item => item.id !== contactId)
      ElMessage.success('移除成功')
    }
  })
}
// åˆ‡æ¢ä¸ªäººé€šè®¯å½•
const togglePersonalContact = async (contact) => {
  const isInPersonal = isInPersonalContacts(contact.id)
  const contactId = contact.id
  if (isInPersonal) {
    // ä»Žä¸ªäººé€šè®¯å½•移除
    //根据contactId查找personalContacts中对应的项,然后删除该项
    const index = personalContacts.value.findIndex(item => item.contactId === contactId)
    const personId = personalContacts.value[index].id
    // console.log(personId)
    await removeFromPersonalContacts(personId)
  } else {
    // æ·»åŠ åˆ°ä¸ªäººé€šè®¯å½•
    try {
      const res = await addPersonalContact({contactId: contactId})
      if (res.code === 200) {
        ElMessage.success('添加成功')
        getPersonalContactsList()
      }
    } catch (error) {
      ElMessage.error('添加失败')
      // æ¨¡æ‹Ÿæ·»åŠ æˆåŠŸ
      // personalContacts.value.push({
      //   ...contact,
      //   id: contact.id || Date.now(),
      //   createTime: new Date().toISOString()
      // })
      // ElMessage.success('添加成功')
    }
  }
}
// æ£€æŸ¥æ˜¯å¦åœ¨ä¸ªäººé€šè®¯å½•中
const isInPersonalContacts = (contactId) => {
  return personalContacts.value.some(item => item.contactId === contactId)
}
// ç”Ÿæˆæ¨¡æ‹Ÿéƒ¨é—¨æ ‘数据
const generateMockDepartmentTree = () => {
  return [
    {
      deptId: 1,
      deptName: '技术部',
      children: [
        {
          deptId: 101,
          deptName: '前端组'
        },
        {
          deptId: 102,
          deptName: '后端组'
        },
        {
          deptId: 103,
          deptName: '测试组'
        }
      ]
    },
    {
      deptId: 2,
      deptName: '产品部'
    },
    {
      deptId: 3,
      deptName: '人事部'
    },
    {
      deptId: 4,
      deptName: '财务部'
    }
  ]
}
// ç”Ÿæˆæ¨¡æ‹Ÿå•位通讯录数据
// const generateMockCompanyContacts = (deptName) => {
//   const allContacts = getEmployeeList()
//   if (deptName) {
//     return allContacts.filter(contact => contact.postJob === deptName)
//   }
//   return allContacts
// }
</script>
<style scoped>
.header {
  margin-bottom: 20px;
  padding: 15px;
  background: #f5f7fa;
  border-radius: 8px;
}
.header h2 {
  margin: 0 0 5px 0;
  color: #303133;
}
.header p {
  margin: 0;
  color: #909399;
  font-size: 14px;
}
.tab-content {
  padding: 15px;
  background: #fff;
  border-radius: 8px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}
.search-input {
  margin-bottom: 20px;
  width: 300px;
}
.contact-list {
  display: flex;
  flex-wrap: wrap;
  gap: 15px;
}
.contact-card {
  display: flex;
  align-items: center;
  padding: 15px;
  width: 500px;
  background: #f8f9fa;
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.3s;
}
.contact-card:hover {
  background: #e9ecef;
  transform: translateY(-2px);
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
.contact-avatar {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  background: #409eff;
  color: #fff;
  font-size: 20px;
  font-weight: bold;
  border-radius: 50%;
  margin-right: 15px;
}
.contact-info {
  flex: 1;
}
.contact-info h4 {
  margin: 0 0 5px 0;
  color: #303133;
  font-size: 16px;
}
.contact-info p {
  margin: 0 0 5px 0;
  color: #606266;
  font-size: 14px;
}
.contact-phone {
  color: #409eff;
  font-size: 14px;
}
.contact-actions {
  display: flex;
  gap: 5px;
}
.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 60px 20px;
  color: #909399;
}
.company-contacts-layout {
  display: flex;
  gap: 20px;
}
.department-tree {
  width: 250px;
  padding: 15px;
  background: #f8f9fa;
  border-radius: 8px;
}
.department-tree h3 {
  margin: 0 0 15px 0;
  padding-bottom: 10px;
  border-bottom: 1px solid #e4e7ed;
  color: #303133;
  font-size: 16px;
}
.department-members {
  flex: 1;
}
.department-members h3 {
  margin: 0 0 15px 0;
  color: #303133;
  font-size: 16px;
}
.contact-detail {
  text-align: center;
}
.detail-avatar {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 80px;
  height: 80px;
  background: #409eff;
  color: #fff;
  font-size: 32px;
  font-weight: bold;
  border-radius: 50%;
  margin: 0 auto 20px;
}
.contact-detail h3 {
  margin: 0 0 10px 0;
  color: #303133;
  font-size: 20px;
}
.detail-position {
  margin: 0 0 30px 0;
  color: #606266;
  font-size: 14px;
}
.detail-info {
  text-align: left;
}
.info-item {
  margin-bottom: 15px;
}
.info-item .label {
  display: inline-block;
  width: 100px;
  color: #909399;
  font-size: 14px;
}
.info-item .value {
  color: #303133;
  font-size: 14px;
}
</style>
src/views/collaborativeApproval/knowledgeBase/index.vue
@@ -233,7 +233,7 @@
import { onMounted, ref, reactive, toRefs } from "vue";
import { ElMessage, ElMessageBox } from "element-plus";
import PIMTable from "@/components/PIMTable/PIMTable.vue";
import { listKnowledgeBase, delKnowledgeBaseBatch,addKnowledgeBase,updateKnowledgeBase } from "@/api/collaborativeApproval/knowledgeBase.js";
import { listKnowledgeBase, delKnowledgeBase,addKnowledgeBase,updateKnowledgeBase } from "@/api/collaborativeApproval/knowledgeBase.js";
// è¡¨å•验证规则
const rules = {
@@ -729,17 +729,14 @@
    cancelButtonText: "取消",
    type: "warning",
  }).then(() => {
    // ä»ŽmockData中删除选中的项
    selectedIds.value.forEach(id => {
      const index = mockData.findIndex(item => item.id === id);
      if (index !== -1) {
        mockData.splice(index, 1);
      }
    });
    // console.log(selectedIds.value);
    delKnowledgeBase(selectedIds.value).then(res => {
      if(res.code == 200){
    ElMessage.success("删除成功");
    selectedIds.value = [];
    getList();
      }
    })
  }).catch(() => {
    // ç”¨æˆ·å–消
  });
src/views/collaborativeApproval/sealManagement/index.vue
@@ -312,6 +312,8 @@
import { el } from 'element-plus/es/locales.mjs'
import { getUserProfile } from '@/api/system/user.js'
import {staffJoinDel, staffJoinListPage} from "@/api/personnelManagement/onboarding.js";
import useUserStore from '@/store/modules/user'
import { userLoginFacotryList } from "@/api/system/user.js"
// å“åº”式数据
const currentUser = ref(null)
@@ -319,6 +321,7 @@
const operationType = ref('add')
const tableData = ref([])
// ç”¨å°ç”³è¯·ç›¸å…³
const userStore = useUserStore()
const showSealApplyDialog = ref(false)
const tableLoading = ref(false)
const showSealDetailDialog = ref(false)
@@ -727,16 +730,26 @@
  })
}
// èŽ·å–å°ç« ç”³è¯·åˆ—è¡¨æ•°æ®
const getSealApplicationList = async () => {
  tableLoading.value = true
  listSealApplication(page,sealSearchForm)
  .then(res => {
    //获取当前登录的部门信息
// èŽ·å–å½“å‰ç™»å½•çš„éƒ¨é—¨ä¿¡æ¯å¹¶è¿‡æ»¤æ•°æ®
    const currentFactoryName = userStore.currentFactoryName
    if (currentFactoryName) {
      // æ ¹æ®currentFactoryName过滤出department相同的数据
      sealApplications.value = res.data.records.filter(item => item.department === currentFactoryName)
      // æ›´æ–°è¿‡æ»¤åŽçš„æ€»æ•°
      page.value.total = sealApplications.value.length
    } else {
      // å¦‚果没有currentFactoryName,则显示所有数据
    sealApplications.value = res.data.records
    page.value.total = res.data.total;
      page.value.total = res.data.total
    }
    // sealApplications.value = res.data.records
    // page.value.total = res.data.total;
    tableLoading.value = false;
  }).catch(err => {