MrShi
2025-08-19 ff087240b3dee29ce4e14ad0836e76b9fdf312cf
admin/src/components/business/OperaManagersWindow.vue
@@ -6,41 +6,55 @@
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      <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="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      <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="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      <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"
              :label="item.name +' | '+(item.phone||'无')+' | '+ item.companyName"
              :value="item.id">
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      <el-form-item v-if="form.type==3" label="是否企微通知" prop="isQw" class="form-item-switch"  >
        <el-switch v-model="form.isQw"  :active-value="1" :inactive-value="0"/>
        <span class="switch-text"> </span>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="所属分类编(关联category)" prop="categoryId">
        <el-input v-model="form.categoryId" placeholder="请输入所属分类编(关联category)" v-trim/>
      <el-form-item v-if="form.type==3" label="是否邮件通知" prop="isEmail" class="form-item-switch"  >
        <el-switch v-model="form.isEmail"  :active-value="1" :inactive-value="0"/>
        <span class="switch-text"></span>
      </el-form-item>
      <el-form-item label="备注" prop="remark">
        <el-input v-model="form.remark" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="状态 0启用 1禁用" prop="status">
        <el-input v-model="form.status" placeholder="请输入状态 0启用 1禁用" v-trim/>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="form.sortnum" placeholder="请输入排序码" v-trim/>
      </el-form-item>
      <el-form-item label="类型 0DCA责任人1安全风险物业主管 2安全风险处理工程师 4SHE负责人 5SHE工单邮箱抄送人" prop="type">
        <el-input v-model="form.type" placeholder="请输入类型 0DCA责任人1安全风险物业主管 2安全风险处理工程师 4SHE负责人 5SHE工单邮箱抄送人" v-trim/>
      </el-form-item>
      <el-form-item label="人员编码(关联member)" prop="memberId">
        <el-input v-model="form.memberId" placeholder="请输入人员编码(关联member)" v-trim/>
      </el-form-item>
      <el-form-item label="" prop="column13">
        <el-input v-model="form.column13" placeholder="请输入" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
@@ -49,6 +63,11 @@
<script>
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',
  extends: BaseOpera,
@@ -57,22 +76,30 @@
    return {
      // 表单数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        categoryId: '',
        remark: '',
        status: '',
        sortnum: '',
        type: '',
        companyId: null,
        memberId: '',
        column13: ''
        memberIds: [],
        companyIds: [],
        remark: '',
        isQw: 0,
        isEmail: 0,
        isMember: 0
      },
      companyTree: [],
      loading: false,
      memberList: [],
      // 验证规则
      rules: {
        memberIds: [
          { required: true, message: '请选择负责人' }
        ],
        companyIds: [
          { required: true, message: '请选择部门' }
        ],
        isMember: [
          { required: true, message: '选择设置范围' }
        ]
      }
    }
  },
@@ -81,6 +108,81 @@
      api: '/business/managers',
      'field.id': 'id'
    })
  },
  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
      }
      this.loading = true
      allList({
        keyword: query
      })
        .then(res => {
          this.memberList = res
        })
        .catch(e => {
        })
        .finally(() => {
          this.loading = false
        })
    },
    open (title, target) {
      this.title = title
      this.visible = true
      // 新建
      this.$nextTick(() => {
        this.$refs.form.resetFields()
        this.form.type = target != null ? target.type : null
        this.form[this.configData['field.id']] = null
      })
      this.memberList = []
      this.getfindCompanyTreePage()
      this.loadMember()
    }
  }
}
</script>