Commit 702baeaeafbb5ad32b2a9f92b49d47a8b799bdcb

Authored by wuxw
1 parent 8edcdb99

v1.9 优化员工没有岗位问题

src/components/staff/editStaff.vue
1 <!-- components/staff/editStaff.vue --> 1 <!-- components/staff/editStaff.vue -->
2 <template> 2 <template>
3 - <el-dialog  
4 - :title="$t('staff.modifyStaff')"  
5 - :visible.sync="visible"  
6 - width="50%"  
7 - @close="handleClose"  
8 - > 3 + <el-dialog :title="$t('staff.modifyStaff')" :visible.sync="visible" width="50%" @close="handleClose">
9 <el-form ref="form" :model="editStaffInfo" label-width="120px"> 4 <el-form ref="form" :model="editStaffInfo" label-width="120px">
10 <el-row :gutter="20"> 5 <el-row :gutter="20">
11 <el-col :span="12"> 6 <el-col :span="12">
12 <el-form-item :label="$t('staff.name')" prop="username"> 7 <el-form-item :label="$t('staff.name')" prop="username">
13 - <el-input  
14 - v-model="editStaffInfo.username"  
15 - :placeholder="$t('staff.requiredName')"  
16 - /> 8 + <el-input v-model="editStaffInfo.username" :placeholder="$t('staff.requiredName')" />
17 </el-form-item> 9 </el-form-item>
18 <el-form-item :label="$t('email')" prop="email"> 10 <el-form-item :label="$t('email')" prop="email">
19 - <el-input  
20 - v-model="editStaffInfo.email"  
21 - :placeholder="$t('staff.optionalEmail')"  
22 - /> 11 + <el-input v-model="editStaffInfo.email" :placeholder="$t('staff.optionalEmail')" />
23 </el-form-item> 12 </el-form-item>
24 <el-form-item :label="$t('staff.phone')" prop="tel"> 13 <el-form-item :label="$t('staff.phone')" prop="tel">
25 - <el-input  
26 - v-model="editStaffInfo.tel"  
27 - :placeholder="$t('staff.requiredPhone')"  
28 - /> 14 + <el-input v-model="editStaffInfo.tel" :placeholder="$t('staff.requiredPhone')" />
29 </el-form-item> 15 </el-form-item>
30 <el-form-item :label="$t('staff.gender')" prop="sex"> 16 <el-form-item :label="$t('staff.gender')" prop="sex">
31 - <el-select  
32 - v-model="editStaffInfo.sex"  
33 - :placeholder="$t('staff.requiredGender')"  
34 - style="width: 100%"  
35 - >  
36 - <el-option :value="0" :label="$t('staff.male')" />  
37 - <el-option :value="1" :label="$t('staff.female')" /> 17 + <el-select v-model="editStaffInfo.sex" :placeholder="$t('staff.requiredGender')" style="width: 100%">
  18 + <el-option value="0" :label="$t('staff.male')" />
  19 + <el-option value="1" :label="$t('staff.female')" />
  20 + </el-select>
  21 + </el-form-item>
  22 + <el-form-item :label="$t('staff.relCd')" prop="relCd">
  23 + <el-select v-model="editStaffInfo.relCd" :placeholder="$t('staff.relCdPlaceholder')" style="width: 100%">
  24 + <el-option v-for="(item,index) in editStaffInfo.relCds" :key="index" :label="item.name"
  25 + :value="item.statusCd" />
38 </el-select> 26 </el-select>
39 </el-form-item> 27 </el-form-item>
40 <el-form-item :label="$t('staff.address')" prop="address"> 28 <el-form-item :label="$t('staff.address')" prop="address">
41 - <el-input  
42 - v-model="editStaffInfo.address"  
43 - :placeholder="$t('staff.requiredAddress')"  
44 - /> 29 + <el-input v-model="editStaffInfo.address" :placeholder="$t('staff.requiredAddress')" />
45 </el-form-item> 30 </el-form-item>
46 </el-col> 31 </el-col>
47 <el-col :span="12" style="text-align: center"> 32 <el-col :span="12" style="text-align: center">
48 - <el-image  
49 - style="width: 200px; height: 200px"  
50 - :src="editStaffInfo.photoUrl"  
51 - fit="cover"  
52 - > 33 + <el-image style="width: 200px; height: 200px" :src="editStaffInfo.photoUrl" fit="cover">
53 <div slot="error" class="image-slot"> 34 <div slot="error" class="image-slot">
54 <i class="el-icon-picture-outline"></i> 35 <i class="el-icon-picture-outline"></i>
55 </div> 36 </div>
56 </el-image> 37 </el-image>
57 <div style="margin-top: 20px"> 38 <div style="margin-top: 20px">
58 - <el-upload  
59 - action=""  
60 - :auto-upload="false"  
61 - :show-file-list="false"  
62 - :on-change="handlePhotoChange"  
63 - > 39 + <el-upload action="" :auto-upload="false" :show-file-list="false" :on-change="handlePhotoChange">
64 <el-button type="primary">{{ $t('staff.uploadPhoto') }}</el-button> 40 <el-button type="primary">{{ $t('staff.uploadPhoto') }}</el-button>
65 </el-upload> 41 </el-upload>
66 </div> 42 </div>
@@ -76,14 +52,11 @@ @@ -76,14 +52,11 @@
76 52
77 <script> 53 <script>
78 import { modifyStaff } from '@/api/staff/staffApi' 54 import { modifyStaff } from '@/api/staff/staffApi'
  55 +import { getDict } from '../../api/community/communityApi'
79 56
80 export default { 57 export default {
81 name: 'EditStaff', 58 name: 'EditStaff',
82 props: { 59 props: {
83 - visible: {  
84 - type: Boolean,  
85 - default: false  
86 - },  
87 staffInfo: { 60 staffInfo: {
88 type: Object, 61 type: Object,
89 default: () => ({}) 62 default: () => ({})
@@ -91,6 +64,7 @@ export default { @@ -91,6 +64,7 @@ export default {
91 }, 64 },
92 data() { 65 data() {
93 return { 66 return {
  67 + visible: false,
94 loading: false, 68 loading: false,
95 editStaffInfo: { 69 editStaffInfo: {
96 userId: '', 70 userId: '',
@@ -128,23 +102,30 @@ export default { @@ -128,23 +102,30 @@ export default {
128 } 102 }
129 }, 103 },
130 methods: { 104 methods: {
131 - open(row){ 105 + open(row) {
132 this.editStaffInfo = { 106 this.editStaffInfo = {
133 - ...row,  
134 - username: row.name,  
135 - photoUrl: row.faceUrl || '/img/noPhoto.jpg'  
136 - } 107 + ...row,
  108 + username: row.name,
  109 + photoUrl: row.faceUrl || '/img/noPhoto.jpg'
  110 + }
  111 + this.getRelCd()
137 this.visible = true 112 this.visible = true
  113 +
  114 + },
  115 + async getRelCd() {
  116 + const data = await getDict('u_org_staff_rel', "rel_cd")
  117 + this.editStaffInfo.relCds = data
  118 + this.$forceUpdate()
138 }, 119 },
139 handleClose() { 120 handleClose() {
140 - this.$emit('update:visible', false) 121 + this.visible = false
141 }, 122 },
142 handlePhotoChange(file) { 123 handlePhotoChange(file) {
143 if (file.size > 2 * 1024 * 1024) { 124 if (file.size > 2 * 1024 * 1024) {
144 this.$message.error(this.$t('staff.photoSizeLimit')) 125 this.$message.error(this.$t('staff.photoSizeLimit'))
145 return false 126 return false
146 } 127 }
147 - 128 +
148 const reader = new FileReader() 129 const reader = new FileReader()
149 reader.onload = (e) => { 130 reader.onload = (e) => {
150 this.editStaffInfo.photoUrl = e.target.result 131 this.editStaffInfo.photoUrl = e.target.result
@@ -175,7 +156,7 @@ export default { @@ -175,7 +156,7 @@ export default {
175 }, 156 },
176 async editStaffSubmit() { 157 async editStaffSubmit() {
177 if (!this.validateForm()) return 158 if (!this.validateForm()) return
178 - 159 +
179 try { 160 try {
180 this.loading = true 161 this.loading = true
181 const data = { 162 const data = {
@@ -183,10 +164,10 @@ export default { @@ -183,10 +164,10 @@ export default {
183 name: this.editStaffInfo.username, 164 name: this.editStaffInfo.username,
184 staffId: this.editStaffInfo.userId 165 staffId: this.editStaffInfo.userId
185 } 166 }
186 - 167 +
187 await modifyStaff(data) 168 await modifyStaff(data)
188 - this.visible =false  
189 - this.$message.success(this.$t('staff.modifySuccess')) 169 + this.visible = false
  170 + this.$message.success(this.$t('common.submitSuccess'))
190 this.$emit('success') 171 this.$emit('success')
191 this.handleClose() 172 this.handleClose()
192 } catch (error) { 173 } catch (error) {
src/i18n/commonLang.js
@@ -64,7 +64,8 @@ export const messages = { @@ -64,7 +64,8 @@ export const messages = {
64 hide:'Hide', 64 hide:'Hide',
65 viewDetail:'View Detail', 65 viewDetail:'View Detail',
66 yuan:'yuan', 66 yuan:'yuan',
67 - process:'Process' 67 + process:'Process',
  68 +
68 } 69 }
69 }, 70 },
70 zh: { 71 zh: {
@@ -132,7 +133,8 @@ export const messages = { @@ -132,7 +133,8 @@ export const messages = {
132 hide:'隐藏', 133 hide:'隐藏',
133 viewDetail:'查看详情', 134 viewDetail:'查看详情',
134 yuan:'元', 135 yuan:'元',
135 - process:'处理' 136 + process:'处理',
  137 +
136 } 138 }
137 } 139 }
138 } 140 }
139 \ No newline at end of file 141 \ No newline at end of file
src/views/staff/addStaff.vue
@@ -19,6 +19,12 @@ @@ -19,6 +19,12 @@
19 <el-option :label="$t('addStaff.female')" value="1" /> 19 <el-option :label="$t('addStaff.female')" value="1" />
20 </el-select> 20 </el-select>
21 </el-form-item> 21 </el-form-item>
  22 + <el-form-item :label="$t('addStaff.relCd')">
  23 + <el-select v-model="addStaffInfo.relCd" :placeholder="$t('addStaff.relCdPlaceholder')"
  24 + style="width: 100%">
  25 + <el-option v-for="item in addStaffInfo.relCds" :key="item.value" :label="item.name" :value="item.statusCd" />
  26 + </el-select>
  27 + </el-form-item>
22 <el-form-item :label="$t('addStaff.phone')"> 28 <el-form-item :label="$t('addStaff.phone')">
23 <el-input v-model="addStaffInfo.tel" :placeholder="$t('addStaff.phonePlaceholder')" maxlength="11" /> 29 <el-input v-model="addStaffInfo.tel" :placeholder="$t('addStaff.phonePlaceholder')" maxlength="11" />
24 </el-form-item> 30 </el-form-item>
@@ -59,6 +65,7 @@ @@ -59,6 +65,7 @@
59 import { addStaff } from '@/api/staff/addStaffApi' 65 import { addStaff } from '@/api/staff/addStaffApi'
60 import UploadImageUrl from '@/components/upload/UploadImageUrl' 66 import UploadImageUrl from '@/components/upload/UploadImageUrl'
61 import ChooseOrgTree from '@/components/org/ChooseOrgTree' 67 import ChooseOrgTree from '@/components/org/ChooseOrgTree'
  68 +import {getDict} from '@/api/community/communityApi'
62 69
63 export default { 70 export default {
64 name: 'AddStaff', 71 name: 'AddStaff',
@@ -78,11 +85,19 @@ export default { @@ -78,11 +85,19 @@ export default {
78 tel: '', 85 tel: '',
79 address: '', 86 address: '',
80 photo: '', 87 photo: '',
81 - adminFlag: 'N' 88 + adminFlag: 'N',
  89 + relCds:[]
82 } 90 }
83 } 91 }
84 }, 92 },
  93 + mounted() {
  94 + this.getRelCd()
  95 + },
85 methods: { 96 methods: {
  97 + async getRelCd() {
  98 + const data = await getDict('u_org_staff_rel', "rel_cd")
  99 + this.addStaffInfo.relCds = data
  100 + },
86 handleUploadImage(data) { 101 handleUploadImage(data) {
87 if (data.length > 0) { 102 if (data.length > 0) {
88 this.addStaffInfo.photo = data[0].fileId 103 this.addStaffInfo.photo = data[0].fileId
src/views/staff/addStaffLang.js
@@ -23,7 +23,9 @@ export const messages = { @@ -23,7 +23,9 @@ export const messages = {
23 save: 'Save', 23 save: 'Save',
24 cancel: 'Cancel', 24 cancel: 'Cancel',
25 chooseOrg: 'Choose Organization', 25 chooseOrg: 'Choose Organization',
26 - confirm: 'Confirm' 26 + confirm: 'Confirm',
  27 + relCd: 'Relationship',
  28 + relCdPlaceholder: 'Please select relationship'
27 } 29 }
28 }, 30 },
29 zh: { 31 zh: {
@@ -49,7 +51,9 @@ export const messages = { @@ -49,7 +51,9 @@ export const messages = {
49 save: '保存', 51 save: '保存',
50 cancel: '取消', 52 cancel: '取消',
51 chooseOrg: '选择组织', 53 chooseOrg: '选择组织',
52 - confirm: '确认' 54 + confirm: '确认',
  55 + relCd: '岗位',
  56 + relCdPlaceholder: '请选择岗位'
53 } 57 }
54 } 58 }
55 } 59 }
56 \ No newline at end of file 60 \ No newline at end of file
src/views/staff/staffLang.js
@@ -40,7 +40,8 @@ export const messages = { @@ -40,7 +40,8 @@ export const messages = {
40 uploadPhoto: 'Upload Photo', 40 uploadPhoto: 'Upload Photo',
41 cancel: 'Cancel', 41 cancel: 'Cancel',
42 confirmDelete: 'Are you sure to delete? Before deleting staff, please confirm that the staff has completed the relevant approval process. After deletion, the relevant process will not be able to continue. Please operate carefully!', 42 confirmDelete: 'Are you sure to delete? Before deleting staff, please confirm that the staff has completed the relevant approval process. After deletion, the relevant process will not be able to continue. Please operate carefully!',
43 - confirmDeleteAction: 'Confirm Delete' 43 + confirmDeleteAction: 'Confirm Delete',
  44 + relCd: 'Relationship'
44 }, 45 },
45 selectStaff: { 46 selectStaff: {
46 title: 'Select Staff', 47 title: 'Select Staff',
@@ -91,7 +92,8 @@ export const messages = { @@ -91,7 +92,8 @@ export const messages = {
91 uploadPhoto: '上传照片', 92 uploadPhoto: '上传照片',
92 cancel: '取消', 93 cancel: '取消',
93 confirmDelete: '确认是否删除,删除员工前请确认员工已完成相关审批流程,删除后相关流程将无法继续进行,请慎重操作!', 94 confirmDelete: '确认是否删除,删除员工前请确认员工已完成相关审批流程,删除后相关流程将无法继续进行,请慎重操作!',
94 - confirmDeleteAction: '确认删除' 95 + confirmDeleteAction: '确认删除',
  96 + relCd: '岗位'
95 }, 97 },
96 selectStaff: { 98 selectStaff: {
97 title: '选择员工', 99 title: '选择员工',
src/views/staff/staffList.vue
@@ -49,6 +49,7 @@ @@ -49,6 +49,7 @@
49 <el-table-column prop="orgName" :label="$t('staff.relatedOrg')" align="center" /> 49 <el-table-column prop="orgName" :label="$t('staff.relatedOrg')" align="center" />
50 <el-table-column prop="email" :label="$t('staff.email')" align="center" /> 50 <el-table-column prop="email" :label="$t('staff.email')" align="center" />
51 <el-table-column prop="address" :label="$t('staff.address')" align="center" /> 51 <el-table-column prop="address" :label="$t('staff.address')" align="center" />
  52 + <el-table-column prop="relCdName" :label="$t('staff.relCd')" align="center" />
52 <el-table-column prop="sex" :label="$t('staff.gender')" align="center"> 53 <el-table-column prop="sex" :label="$t('staff.gender')" align="center">
53 <template slot-scope="scope"> 54 <template slot-scope="scope">
54 {{ scope.row.sex == 0 ? $t('staff.male') : $t('staff.female') }} 55 {{ scope.row.sex == 0 ? $t('staff.male') : $t('staff.female') }}
@@ -84,7 +85,7 @@ @@ -84,7 +85,7 @@
84 85
85 <reset-staff-pwd :visible.sync="resetPwdVisible" :staff-info="currentStaff" @success="handleSuccess" /> 86 <reset-staff-pwd :visible.sync="resetPwdVisible" :staff-info="currentStaff" @success="handleSuccess" />
86 87
87 - <edit-staff :visible.sync="editStaffVisible" :staff-info="currentStaff" @success="handleSuccess" /> 88 + <edit-staff ref="editStaff" :staff-info="currentStaff" @success="handleSuccess" />
88 89
89 <delete-staff :visible.sync="deleteStaffVisible" :staff-info="currentStaff" @success="handleSuccess" /> 90 <delete-staff :visible.sync="deleteStaffVisible" :staff-info="currentStaff" @success="handleSuccess" />
90 </div> 91 </div>
@@ -181,6 +182,7 @@ export default { @@ -181,6 +182,7 @@ export default {
181 openEditStaff(staff) { 182 openEditStaff(staff) {
182 this.currentStaff = { ...staff } 183 this.currentStaff = { ...staff }
183 this.editStaffVisible = true 184 this.editStaffVisible = true
  185 + this.$refs.editStaff.open(staff)
184 }, 186 },
185 openDeleteStaff(staff) { 187 openDeleteStaff(staff) {
186 this.currentStaff = { ...staff } 188 this.currentStaff = { ...staff }