MrShi
2025-08-19 ff087240b3dee29ce4e14ad0836e76b9fdf312cf
admin/src/components/business/OperaManagersWindow.vue
@@ -6,8 +6,37 @@
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item  label="选择负责人:" prop="memberId">
        <el-select v-model="form.memberId" filterable remote :remote-method="loadMember" :loading="loading"  placeholder="可输入姓名 | 手机号 | 部门名称进行搜索">
      <el-form-item label="设置范围" prop="isMember" :required="true">
        <el-radio-group v-model="form.isMember">
          <el-radio :label="0">选择部门</el-radio>
<!--          <el-radio :label="1">部门及其下级部门员工</el-radio>-->
          <el-radio :label="2">指定人员</el-radio>
        </el-radio-group>
      </el-form-item>
      <el-form-item label="所属组织" prop="companyIds" v-if="form.isMember==0 || form.isMember==1"  :required="true">
<!--        <treeselect
            v-model="form.companyId"
            placeholder="请选择"
            :options="companyTree"
            :normalizer="normalizeOptions"
            :default-expand-level="1"
            noChildrenText="没有子选项"
            noOptionsText="没有可选项"
            noResultsText="没有匹配的结果" />-->
        <el-tree
            ref="tree"
            :data="companyTree"
            show-checkbox
            node-key="id"
            default-expand-all
            @check-change="changeTree"
            :expand-on-click-node="false"
            :check-on-click-node="false"
            :props="{id:'id',children: 'childList',label: 'name',isLeaf:'isLeaf'}">
        </el-tree>
      </el-form-item>
      <el-form-item  label="选择负责人:" prop="memberIds" v-if="form.isMember==2" :required="true">
        <el-select v-model="form.memberIds" filterable :multiple="true" :loading="loading"  placeholder="可输入姓名 | 手机号 | 部门名称进行搜索">
          <el-option
              v-for="item in memberList"
              :key="item.id"
@@ -35,6 +64,9 @@
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import { allList } from '@/api/business/member'
import { treeList, allList as companyList } from '@/api/business/company'
import { createRoleMenu } from '@/api/system/role'
import { create } from '@/api/business/managers'
export default {
  name: 'OperaManagersWindow',
@@ -45,17 +77,28 @@
      // 表单数据
      form: {
        type: '',
        companyId: null,
        memberId: '',
        memberIds: [],
        companyIds: [],
        remark: '',
        isQw: 0,
        isEmail: 0
        isEmail: 0,
        isMember: 0
      },
      companyTree: [],
      loading: false,
      memberList: [],
      // 验证规则
      rules: {
        memberId: [
        memberIds: [
          { required: true, message: '请选择负责人' }
        ],
        companyIds: [
          { required: true, message: '请选择部门' }
        ],
        isMember: [
          { required: true, message: '选择设置范围' }
        ]
      }
    }
@@ -67,10 +110,52 @@
    })
  },
  methods: {
    loadData (node, resolve) {
      console.log(node)
      if(!node.hasChildren  || (node.childList && node.childList.length >0)){
        return
      }
      companyList({ parentId: node.id })
        .then(res => {
          node.childList = res
        })
    },
    changeTree (node) {
      const selectedMenus = this.$refs.tree.getCheckedNodes(false, true)
      this.form.companyIds = selectedMenus.map(menu => menu.id)
      console.log(this.form.companyIds)
    },
    getfindCompanyTreePage () {
      treeList({})
        .then(res => {
          if (res && res.length > 0) {
            res[0].fsStatus = 1
            res[0].isLeaf = res[0].hasChildren
            this.companyTree = res
            // 找出叶节点
            // this.companyTree = this.companyTree.filter(menu => this.companyTree.findIndex(m => m.parentId === menu.id) === -1)
            console.log(res)
            // this.searchForm.erpOrgId = res[0].erpId
          }
        })
    },
    // 规范化选项数据的方法
    normalizeOptions (node) {
      if (node.childList && !node.childList.length) {
        delete node.childList
      }
      return {
        id: node.id,
        label: node.name,
        children: node.childList
      }
    },
    loadMember (query) {
      this.memberList = []
      console.log(query)
      if (!query || query == '') {
        return
        // return
      }
      this.loading = true
      allList({
@@ -95,7 +180,8 @@
        this.form[this.configData['field.id']] = null
      })
      this.memberList = []
      // this.loadMember()
      this.getfindCompanyTreePage()
      this.loadMember()
    }
  }
}