<template> 
 | 
  <GlobalWindow 
 | 
    :title="title" 
 | 
    :visible.sync="visible" 
 | 
    :confirm-working="isWorking" 
 | 
    @confirm="confirms" 
 | 
  > 
 | 
    <el-form :model="form" ref="form" :rules="rules"> 
 | 
      <el-form-item label="员工名称" prop="realname"> 
 | 
        <el-input v-model="form.realname" maxlength="20" placeholder="请输入员工名称" v-trim/> 
 | 
      </el-form-item> 
 | 
      <el-form-item label="手机号" prop="mobile"> 
 | 
        <el-input v-model="form.mobile" :disabled="title === '编辑员工'" placeholder="请输入手机号" v-trim/> 
 | 
      </el-form-item> 
 | 
      <el-form-item label="工号" prop="empNo"> 
 | 
        <el-input v-model="form.empNo" placeholder="请输入工号" v-trim/> 
 | 
      </el-form-item> 
 | 
      <el-form-item label="所属部门" prop="departmentId"> 
 | 
        <el-cascader 
 | 
          @visible-change="visibleChange" 
 | 
          placeholder="请选择所属部门" 
 | 
          v-model="form.departmentId" 
 | 
          :options="departmentList" 
 | 
          :show-all-levels="false" 
 | 
          @change="handleChange" 
 | 
          clearable 
 | 
          :props="{ value: 'id', label: 'name', checkStrictly: true }"> 
 | 
        </el-cascader> 
 | 
      </el-form-item> 
 | 
      <el-form-item label="岗位" prop="positionIds"> 
 | 
        <el-select v-model="form.positionIds" @visible-change="visibleChange1" filterable clearable placeholder="请选择岗位"> 
 | 
          <el-option 
 | 
            v-for="item in positionList" 
 | 
            :key="item.id" 
 | 
            :label="item.name" 
 | 
            :value="item.id"> 
 | 
          </el-option> 
 | 
        </el-select> 
 | 
      </el-form-item> 
 | 
    </el-form> 
 | 
  </GlobalWindow> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import BaseOpera from '@/components/base/BaseOpera' 
 | 
import GlobalWindow from '@/components/common/GlobalWindow' 
 | 
import { treeComList, allList } from '@/api/ext/companyUserExt' 
 | 
  
 | 
export default { 
 | 
  name: 'OperaCompanyUserExtWindow', 
 | 
  extends: BaseOpera, 
 | 
  components: { GlobalWindow }, 
 | 
  data () { 
 | 
    return { 
 | 
      form: { // 表单数据 
 | 
        id: null, 
 | 
        realname: '', 
 | 
        mobile: '', 
 | 
        empNo: '', 
 | 
        departmentId: '', 
 | 
        positionIds: '' 
 | 
      }, 
 | 
      rules: { // 验证规则 
 | 
        realname: [ 
 | 
          { required: true, message: '请输入员工姓名', trigger: 'blur' }, 
 | 
          { max: 10, message: '输入字数不超过10', trigger: 'change' } 
 | 
        ], 
 | 
        mobile: [ 
 | 
          { required: true, message: '请输入手机号', trigger: 'blur' }, 
 | 
          { min: 11, max: 11, message: '手机号只能是11位', trigger: 'blur' }, 
 | 
          { pattern: /^[0-9]+$/, message: '只可以输入数字', trigger: 'change' } 
 | 
        ], 
 | 
        empNo: [ 
 | 
          { required: true, message: '请输入工号', trigger: 'blur' }, 
 | 
          { max: 20, message: '输入字数不超过20', trigger: 'blur' }, 
 | 
          { pattern: /^[0-9a-zA-Z]+$/, message: '只可以输入数字和字母', trigger: 'change' } 
 | 
        ], 
 | 
        departmentId: [ 
 | 
          { required: true, message: '请选择部门', trigger: 'blur' } 
 | 
        ] 
 | 
      }, 
 | 
      departmentList: [], // 部门数据 
 | 
      positionList: [] // 岗位数据 
 | 
    } 
 | 
  }, 
 | 
  created () { 
 | 
    this.config({ 
 | 
      api: '/ext/companyUserExt', 
 | 
      'field.id': 'id' 
 | 
    }) 
 | 
    this.treeComList() 
 | 
    this.allList() 
 | 
  }, 
 | 
  methods: { 
 | 
    // 提交数据 
 | 
    confirms () { 
 | 
      var data = JSON.parse(JSON.stringify(this.form)) 
 | 
      for (var i in data) { 
 | 
        if (i === 'positionIds') { 
 | 
          data[i] = [data[i]] 
 | 
        } 
 | 
      } 
 | 
      if (this.form.id === '' || this.form.id === null) { 
 | 
        this.$refs.form.validate((valid) => { 
 | 
          if (!valid) { 
 | 
            return 
 | 
          } 
 | 
          // 调用新建接口 
 | 
          this.isWorking = true 
 | 
          this.api.create(data) 
 | 
            .then(() => { 
 | 
              this.visible = false 
 | 
              this.$tip.apiSuccess('新建成功') 
 | 
              this.$emit('success') 
 | 
            }) 
 | 
            .catch(e => { 
 | 
              this.$tip.apiFailed(e) 
 | 
            }) 
 | 
            .finally(() => { 
 | 
              this.isWorking = false 
 | 
            }) 
 | 
        }) 
 | 
      } else { 
 | 
        this.$refs.form.validate((valid) => { 
 | 
          if (!valid) { 
 | 
            return 
 | 
          } 
 | 
          // 调用更新接口 
 | 
          this.isWorking = true 
 | 
          this.api.updateById(data) 
 | 
            .then(() => { 
 | 
              this.visible = false 
 | 
              this.$tip.apiSuccess('修改成功') 
 | 
              this.$emit('success') 
 | 
            }) 
 | 
            .catch(e => { 
 | 
              this.$tip.apiFailed(e) 
 | 
            }) 
 | 
            .finally(() => { 
 | 
              this.isWorking = false 
 | 
            }) 
 | 
        }) 
 | 
      } 
 | 
    }, 
 | 
    visibleChange(e) { 
 | 
      if (e) { 
 | 
        this.treeComList() 
 | 
      } 
 | 
    }, 
 | 
    visibleChange1(e) { 
 | 
      if (e) { 
 | 
        this.allList() 
 | 
      } 
 | 
    }, 
 | 
    // 获取企业部门数据 
 | 
    treeComList () { 
 | 
      treeComList({}) 
 | 
        .then(res => { 
 | 
          this.departmentList = [res] 
 | 
        }) 
 | 
    }, 
 | 
    // 获取全部岗位 
 | 
    allList () { 
 | 
      allList({}) 
 | 
        .then(res => { 
 | 
          this.positionList = res 
 | 
        }) 
 | 
    }, 
 | 
    // 级联选中的数据 
 | 
    handleChange (value) { 
 | 
      // console.log(value.length) 
 | 
      if (!value.length) { 
 | 
        this.form.departmentId = null 
 | 
        return 
 | 
      } 
 | 
      this.form.departmentId = value[value.length - 1] 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</script> 
 |