| <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' | 
| import { validateSpecialKey } from '@/assets/js/validate' | 
| 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' }, | 
|           { validator: validateSpecialKey,  message: '只可以输入数字、字母或者英文字符', trigger: 'blur' }, | 
|           // { pattern: /^[0-9a-zA-Z]+$/, 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> |