|
@@ -1,119 +1,126 @@
|
|
|
<template>
|
|
|
- <a-form
|
|
|
- :form="form"
|
|
|
- :label-col="{ span: 5 }"
|
|
|
- :wrapper-col="{ span: 12 }"
|
|
|
- @submit="handleSubmit">
|
|
|
- <a-form-item label="员工姓名">
|
|
|
- <a-input
|
|
|
- v-decorator="['label', { rules: [{ required: true, max: 11, message: '请填写员工姓名' }] }]"
|
|
|
- />
|
|
|
- </a-form-item>
|
|
|
- <!-- v-decorator="[
|
|
|
- 'phone',
|
|
|
- { rules: [{ required: true, message: '请填写员工姓名!' }] },
|
|
|
- ]" -->
|
|
|
- <!-- validate-status="false"
|
|
|
- help="" -->
|
|
|
- <a-form-item
|
|
|
- label="员工手机"
|
|
|
- >
|
|
|
- <a-input
|
|
|
- id="error"
|
|
|
- @blur="getPhoneOrjobnumber('phone')"
|
|
|
- v-decorator="[
|
|
|
- 'phone',
|
|
|
- { rules: [{ required: true, message: '请填写员工手机号!' }, {len: 11 , message: '不符合手机号格式'}] },
|
|
|
- ]"
|
|
|
- >
|
|
|
- </a-input>
|
|
|
- </a-form-item>
|
|
|
- <a-form-item label="员工工号">
|
|
|
- <a-input
|
|
|
- @blur="getPhoneOrjobnumber('jobNumber')"
|
|
|
- v-model="formData.jobNumber"
|
|
|
- >
|
|
|
- </a-input>
|
|
|
- </a-form-item>
|
|
|
- <a-form-item label="员工邮箱">
|
|
|
- <a-input
|
|
|
- v-model="formData.email"
|
|
|
+ <div class="edit">
|
|
|
+
|
|
|
+ <a-form
|
|
|
+ :form="form"
|
|
|
+ :label-col="{ span: 5 }"
|
|
|
+ :wrapper-col="{ span: 12 }"
|
|
|
+ @submit="handleSubmit">
|
|
|
+ <a-form-item label="员工姓名">
|
|
|
+ <a-input
|
|
|
+ v-decorator="['label', { rules: [{ required: true, max: 11, message: '请填写员工姓名' }] }]"
|
|
|
+ />
|
|
|
+ </a-form-item>
|
|
|
+ <a-form-item
|
|
|
+ label="员工手机"
|
|
|
>
|
|
|
- </a-input>
|
|
|
- </a-form-item>
|
|
|
- <a-form-item label="初始密码" >
|
|
|
- <a-input v-if="type === 'add'" v-model="formData.password" disabled> </a-input>
|
|
|
- <a-input-password
|
|
|
- v-else
|
|
|
- v-model="formData.password"
|
|
|
- disabled
|
|
|
- />
|
|
|
- </a-form-item>
|
|
|
- <a-form-item label="性别" >
|
|
|
- <a-radio-group name="radioGroup" :default-value="1" @change="e => formData.gender = e.target.value">
|
|
|
- <a-radio :value="1">
|
|
|
- 男
|
|
|
- </a-radio>
|
|
|
- <a-radio :value="2">
|
|
|
- 女
|
|
|
- </a-radio>
|
|
|
- </a-radio-group>
|
|
|
- </a-form-item>
|
|
|
- <a-form-item label="简介" >
|
|
|
- <a-textarea
|
|
|
- v-model="formData.intro"
|
|
|
- placeholder="填写员工简介"
|
|
|
- :auto-size="{ minRows: 3, maxRows: 5 }"
|
|
|
- />
|
|
|
- </a-form-item>
|
|
|
- <a-form-item label="角色" >
|
|
|
- <a-select default-value="lucy" style="width: 120px" @change="handleChange">
|
|
|
- <a-select-option value="0">
|
|
|
- Jack
|
|
|
- </a-select-option>
|
|
|
- <a-select-option value="1">
|
|
|
- Lucy
|
|
|
- </a-select-option>
|
|
|
- <a-select-option value="2">
|
|
|
- Disabled
|
|
|
- </a-select-option>
|
|
|
- <a-select-option value="3">
|
|
|
- yiminghe
|
|
|
- </a-select-option>
|
|
|
- </a-select>
|
|
|
- </a-form-item>
|
|
|
- <a-form-item label="数据权限" >
|
|
|
- <a-radio-group name="radioGroup" :default-value="1" @change="e => formData.dataAuthority = e.target.value">
|
|
|
- <a-radio :value="1">
|
|
|
- 全部(可查看机构全部数据)
|
|
|
- </a-radio>
|
|
|
- <a-radio :value="2">
|
|
|
- 个人(团队)(可查看自己和下属数据,若无下属则查看自己的数据)
|
|
|
- </a-radio>
|
|
|
- </a-radio-group>
|
|
|
- </a-form-item>
|
|
|
- <a-form-item label="所属部门" >
|
|
|
- <a-tree-select
|
|
|
- v-model="formData.departmentLabel"
|
|
|
- @select="selectTreeNode"
|
|
|
- treeNodeFilterProp="title"
|
|
|
- show-search
|
|
|
- style="width: 100%"
|
|
|
- :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
|
|
|
- placeholder="请选择上级部门"
|
|
|
- allow-clear
|
|
|
- :tree-data="treeData"
|
|
|
- tree-default-expand-all
|
|
|
- :replaceFields="replaceFields"
|
|
|
- />
|
|
|
- </a-form-item>
|
|
|
+ <a-input
|
|
|
+ id="error"
|
|
|
+ @blur="getPhoneOrjobnumber('phone')"
|
|
|
+ v-decorator="[
|
|
|
+ 'phone',
|
|
|
+ { rules: [{ required: true, message: '请填写员工手机号!' }, {len: 11 , message: '不符合手机号格式'}] },
|
|
|
+ ]"
|
|
|
+ >
|
|
|
+ </a-input>
|
|
|
+ </a-form-item>
|
|
|
+ <a-form-item label="员工工号">
|
|
|
+ <a-input
|
|
|
+ @blur="getPhoneOrjobnumber('jobNumber')"
|
|
|
+ v-model="formData.jobNumber"
|
|
|
+ >
|
|
|
+ </a-input>
|
|
|
+ </a-form-item>
|
|
|
+ <a-form-item label="员工邮箱">
|
|
|
+ <a-input
|
|
|
+ v-model="formData.email"
|
|
|
+ >
|
|
|
+ </a-input>
|
|
|
+ </a-form-item>
|
|
|
+ <a-form-item label="初始密码" >
|
|
|
+ <a-input v-if="type === 'add'" v-model="formData.password" disabled> </a-input>
|
|
|
+ <a-input-password
|
|
|
+ v-else
|
|
|
+ v-model="formData.password"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ </a-form-item>
|
|
|
+ <a-form-item label="性别" >
|
|
|
+ <a-radio-group name="radioGroup" :default-value="1" @change="e => formData.gender = e.target.value">
|
|
|
+ <a-radio :value="1">
|
|
|
+ 男
|
|
|
+ </a-radio>
|
|
|
+ <a-radio :value="0">
|
|
|
+ 女
|
|
|
+ </a-radio>
|
|
|
+ </a-radio-group>
|
|
|
+ </a-form-item>
|
|
|
+ <a-form-item label="简介" >
|
|
|
+ <a-textarea
|
|
|
+ v-model="formData.intro"
|
|
|
+ placeholder="填写员工简介"
|
|
|
+ :auto-size="{ minRows: 3, maxRows: 5 }"
|
|
|
+ />
|
|
|
+ </a-form-item>
|
|
|
+ <a-form-item label="角色" >
|
|
|
+ <a-select v-model="formData.roleId" style="width: 120px" @change="handleChange">
|
|
|
+ <a-select-option
|
|
|
+ :value="item.id"
|
|
|
+ v-for="item in roleList"
|
|
|
+ :key="item.id">
|
|
|
+ {{ item.label }}
|
|
|
+ </a-select-option>
|
|
|
+ </a-select>
|
|
|
+ </a-form-item>
|
|
|
+ <a-form-item label="数据权限" >
|
|
|
+ <a-radio-group name="radioGroup" v-model="formData.dataAuthority" @change="e => formData.dataAuthority = e.target.value">
|
|
|
+ <a-radio :value="1">
|
|
|
+ 全部(可查看机构全部数据)
|
|
|
+ </a-radio>
|
|
|
+ <a-radio :value="2">
|
|
|
+ 个人(团队)(可查看自己和下属数据,若无下属则查看自己的数据)
|
|
|
+ </a-radio>
|
|
|
+ </a-radio-group>
|
|
|
+ </a-form-item>
|
|
|
+ <a-form-item label="所属部门" >
|
|
|
+ <a-tree-select
|
|
|
+ v-model="formData.departmentLabel"
|
|
|
+ @select="selectTreeNode"
|
|
|
+ treeNodeFilterProp="title"
|
|
|
+ show-search
|
|
|
+ style="width: 100%"
|
|
|
+ :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
|
|
|
+ placeholder="请选择上级部门"
|
|
|
+ allow-clear
|
|
|
+ :tree-data="treeData"
|
|
|
+ tree-default-expand-all
|
|
|
+ :replaceFields="replaceFields"
|
|
|
+ />
|
|
|
+ <div style="opacity: 0.5; ">需先选择所属部门,再选择汇报对象</div>
|
|
|
+ </a-form-item>
|
|
|
|
|
|
- </a-form>
|
|
|
+ <a-form-item label="汇报对象" >
|
|
|
+ <a-select
|
|
|
+ :disabled="formData.departmentId ? false : true"
|
|
|
+ v-model="formData.leadId"
|
|
|
+ style="width: 120px"
|
|
|
+ @change="leadChange">
|
|
|
+ <a-select-option
|
|
|
+ :value="item.id"
|
|
|
+ v-for="item in leadList"
|
|
|
+ :key="item.id"
|
|
|
+ >
|
|
|
+ {{ item.label }}
|
|
|
+ </a-select-option>
|
|
|
+ </a-select>
|
|
|
+ </a-form-item>
|
|
|
|
|
|
+ </a-form>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
<script>
|
|
|
import { Tree } from 'ant-design-vue'
|
|
|
-import { getDepart, getPhoneOrjobnumber } from '@/api/role'
|
|
|
+import { getDepart, getPhoneOrjobnumber, getRole, searchUser } from '@/api/role'
|
|
|
export default {
|
|
|
name: 'Demo',
|
|
|
components: {
|
|
@@ -133,8 +140,14 @@ export default {
|
|
|
return 'validate-status = error help = Should be combination of numbers & alphabets'
|
|
|
}
|
|
|
},
|
|
|
+ watch: {
|
|
|
+ 'formData.departmentId' () {
|
|
|
+ this.searchUser()
|
|
|
+ }
|
|
|
+ },
|
|
|
created () {
|
|
|
this.getDepart()
|
|
|
+ this.getRole()
|
|
|
},
|
|
|
data () {
|
|
|
return {
|
|
@@ -146,21 +159,54 @@ export default {
|
|
|
password: '123456',
|
|
|
phone: '',
|
|
|
roleId: '',
|
|
|
- roleLabel: '小王',
|
|
|
+ roleLabel: '',
|
|
|
departmentId: '',
|
|
|
departmentLabel: '',
|
|
|
email: '',
|
|
|
gender: 1,
|
|
|
intro: '',
|
|
|
- dataAuthority: 0
|
|
|
+ dataAuthority: 1,
|
|
|
+ leadId: '',
|
|
|
+ leadLabel: ''
|
|
|
},
|
|
|
- treeData: [],
|
|
|
+ // ------- 下拉框需要的字段 ---------------------
|
|
|
+ treeData: [], // 部门数据
|
|
|
+
|
|
|
+ roleList: [], // 角色
|
|
|
+ leadList: [], // 汇报对象
|
|
|
visablePhoneOrJobnumber: ''
|
|
|
- // 自定义校验
|
|
|
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
+ // 查询汇报对象
|
|
|
+ async searchUser () {
|
|
|
+ const $par = {
|
|
|
+ state: 1, // 只查当前可用的
|
|
|
+ departmentId: this.formData.departmentId,
|
|
|
+ curPage: 1,
|
|
|
+ pageSize: 1000
|
|
|
+ }
|
|
|
+ const { code, data } = await searchUser($par)
|
|
|
+ if (code === 0) {
|
|
|
+ console.log(data)
|
|
|
+ const { records } = data
|
|
|
+ this.leadList = records
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 查询角色
|
|
|
+ async getRole () {
|
|
|
+ const $par = {
|
|
|
+ curPage: 1,
|
|
|
+ pageSize: 1000
|
|
|
+ }
|
|
|
+ const { code, data } = await getRole($par)
|
|
|
+ if (code === 0) {
|
|
|
+ console.log(data)
|
|
|
+ const { records } = data
|
|
|
+ this.roleList = records
|
|
|
+ }
|
|
|
+ },
|
|
|
// 检查手机号
|
|
|
async getPhoneOrjobnumber (type) {
|
|
|
console.log(this.formData, 'this.form')
|
|
@@ -186,9 +232,15 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
+ // 选择汇报对象
|
|
|
+ leadChange (id) {
|
|
|
+ this.formData.leadId = id
|
|
|
+ this.formData.leadLabel = this.leadList.find(item => item.id === id).label
|
|
|
+ },
|
|
|
+ // 选择角色
|
|
|
handleChange (id) {
|
|
|
- console.log(id)
|
|
|
this.formData.roleId = id
|
|
|
+ this.formData.roleLabel = this.roleList.find(item => item.id === id).label
|
|
|
},
|
|
|
// 选择树节点
|
|
|
selectTreeNode (value, node, extra) {
|
|
@@ -231,6 +283,8 @@ export default {
|
|
|
|
|
|
<style lang="less" scoped>
|
|
|
.edit {
|
|
|
- display: flex;
|
|
|
+ height: 500px;
|
|
|
+ overflow: hidden;
|
|
|
+ overflow-y: auto;
|
|
|
}
|
|
|
</style>
|