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

This commit is contained in:
wuxw 2025-08-07 12:51:33 +08:00
parent 8edcdb9960
commit 702baeaeaf
6 changed files with 69 additions and 63 deletions

View File

@ -1,66 +1,42 @@
<!-- components/staff/editStaff.vue -->
<template>
<el-dialog
:title="$t('staff.modifyStaff')"
:visible.sync="visible"
width="50%"
@close="handleClose"
>
<el-dialog :title="$t('staff.modifyStaff')" :visible.sync="visible" width="50%" @close="handleClose">
<el-form ref="form" :model="editStaffInfo" label-width="120px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item :label="$t('staff.name')" prop="username">
<el-input
v-model="editStaffInfo.username"
:placeholder="$t('staff.requiredName')"
/>
<el-input v-model="editStaffInfo.username" :placeholder="$t('staff.requiredName')" />
</el-form-item>
<el-form-item :label="$t('email')" prop="email">
<el-input
v-model="editStaffInfo.email"
:placeholder="$t('staff.optionalEmail')"
/>
<el-input v-model="editStaffInfo.email" :placeholder="$t('staff.optionalEmail')" />
</el-form-item>
<el-form-item :label="$t('staff.phone')" prop="tel">
<el-input
v-model="editStaffInfo.tel"
:placeholder="$t('staff.requiredPhone')"
/>
<el-input v-model="editStaffInfo.tel" :placeholder="$t('staff.requiredPhone')" />
</el-form-item>
<el-form-item :label="$t('staff.gender')" prop="sex">
<el-select
v-model="editStaffInfo.sex"
:placeholder="$t('staff.requiredGender')"
style="width: 100%"
>
<el-option :value="0" :label="$t('staff.male')" />
<el-option :value="1" :label="$t('staff.female')" />
<el-select v-model="editStaffInfo.sex" :placeholder="$t('staff.requiredGender')" style="width: 100%">
<el-option value="0" :label="$t('staff.male')" />
<el-option value="1" :label="$t('staff.female')" />
</el-select>
</el-form-item>
<el-form-item :label="$t('staff.relCd')" prop="relCd">
<el-select v-model="editStaffInfo.relCd" :placeholder="$t('staff.relCdPlaceholder')" style="width: 100%">
<el-option v-for="(item,index) in editStaffInfo.relCds" :key="index" :label="item.name"
:value="item.statusCd" />
</el-select>
</el-form-item>
<el-form-item :label="$t('staff.address')" prop="address">
<el-input
v-model="editStaffInfo.address"
:placeholder="$t('staff.requiredAddress')"
/>
<el-input v-model="editStaffInfo.address" :placeholder="$t('staff.requiredAddress')" />
</el-form-item>
</el-col>
<el-col :span="12" style="text-align: center">
<el-image
style="width: 200px; height: 200px"
:src="editStaffInfo.photoUrl"
fit="cover"
>
<el-image style="width: 200px; height: 200px" :src="editStaffInfo.photoUrl" fit="cover">
<div slot="error" class="image-slot">
<i class="el-icon-picture-outline"></i>
</div>
</el-image>
<div style="margin-top: 20px">
<el-upload
action=""
:auto-upload="false"
:show-file-list="false"
:on-change="handlePhotoChange"
>
<el-upload action="" :auto-upload="false" :show-file-list="false" :on-change="handlePhotoChange">
<el-button type="primary">{{ $t('staff.uploadPhoto') }}</el-button>
</el-upload>
</div>
@ -76,14 +52,11 @@
<script>
import { modifyStaff } from '@/api/staff/staffApi'
import { getDict } from '../../api/community/communityApi'
export default {
name: 'EditStaff',
props: {
visible: {
type: Boolean,
default: false
},
staffInfo: {
type: Object,
default: () => ({})
@ -91,6 +64,7 @@ export default {
},
data() {
return {
visible: false,
loading: false,
editStaffInfo: {
userId: '',
@ -128,23 +102,30 @@ export default {
}
},
methods: {
open(row){
open(row) {
this.editStaffInfo = {
...row,
username: row.name,
photoUrl: row.faceUrl || '/img/noPhoto.jpg'
}
...row,
username: row.name,
photoUrl: row.faceUrl || '/img/noPhoto.jpg'
}
this.getRelCd()
this.visible = true
},
async getRelCd() {
const data = await getDict('u_org_staff_rel', "rel_cd")
this.editStaffInfo.relCds = data
this.$forceUpdate()
},
handleClose() {
this.$emit('update:visible', false)
this.visible = false
},
handlePhotoChange(file) {
if (file.size > 2 * 1024 * 1024) {
this.$message.error(this.$t('staff.photoSizeLimit'))
return false
}
const reader = new FileReader()
reader.onload = (e) => {
this.editStaffInfo.photoUrl = e.target.result
@ -175,7 +156,7 @@ export default {
},
async editStaffSubmit() {
if (!this.validateForm()) return
try {
this.loading = true
const data = {
@ -183,10 +164,10 @@ export default {
name: this.editStaffInfo.username,
staffId: this.editStaffInfo.userId
}
await modifyStaff(data)
this.visible =false
this.$message.success(this.$t('staff.modifySuccess'))
this.visible = false
this.$message.success(this.$t('common.submitSuccess'))
this.$emit('success')
this.handleClose()
} catch (error) {

View File

@ -64,7 +64,8 @@ export const messages = {
hide:'Hide',
viewDetail:'View Detail',
yuan:'yuan',
process:'Process'
process:'Process',
}
},
zh: {
@ -132,7 +133,8 @@ export const messages = {
hide:'隐藏',
viewDetail:'查看详情',
yuan:'元',
process:'处理'
process:'处理',
}
}
}

View File

@ -19,6 +19,12 @@
<el-option :label="$t('addStaff.female')" value="1" />
</el-select>
</el-form-item>
<el-form-item :label="$t('addStaff.relCd')">
<el-select v-model="addStaffInfo.relCd" :placeholder="$t('addStaff.relCdPlaceholder')"
style="width: 100%">
<el-option v-for="item in addStaffInfo.relCds" :key="item.value" :label="item.name" :value="item.statusCd" />
</el-select>
</el-form-item>
<el-form-item :label="$t('addStaff.phone')">
<el-input v-model="addStaffInfo.tel" :placeholder="$t('addStaff.phonePlaceholder')" maxlength="11" />
</el-form-item>
@ -59,6 +65,7 @@
import { addStaff } from '@/api/staff/addStaffApi'
import UploadImageUrl from '@/components/upload/UploadImageUrl'
import ChooseOrgTree from '@/components/org/ChooseOrgTree'
import {getDict} from '@/api/community/communityApi'
export default {
name: 'AddStaff',
@ -78,11 +85,19 @@ export default {
tel: '',
address: '',
photo: '',
adminFlag: 'N'
adminFlag: 'N',
relCds:[]
}
}
},
mounted() {
this.getRelCd()
},
methods: {
async getRelCd() {
const data = await getDict('u_org_staff_rel', "rel_cd")
this.addStaffInfo.relCds = data
},
handleUploadImage(data) {
if (data.length > 0) {
this.addStaffInfo.photo = data[0].fileId

View File

@ -23,7 +23,9 @@ export const messages = {
save: 'Save',
cancel: 'Cancel',
chooseOrg: 'Choose Organization',
confirm: 'Confirm'
confirm: 'Confirm',
relCd: 'Relationship',
relCdPlaceholder: 'Please select relationship'
}
},
zh: {
@ -49,7 +51,9 @@ export const messages = {
save: '保存',
cancel: '取消',
chooseOrg: '选择组织',
confirm: '确认'
confirm: '确认',
relCd: '岗位',
relCdPlaceholder: '请选择岗位'
}
}
}

View File

@ -40,7 +40,8 @@ export const messages = {
uploadPhoto: 'Upload Photo',
cancel: 'Cancel',
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!',
confirmDeleteAction: 'Confirm Delete'
confirmDeleteAction: 'Confirm Delete',
relCd: 'Relationship'
},
selectStaff: {
title: 'Select Staff',
@ -91,7 +92,8 @@ export const messages = {
uploadPhoto: '上传照片',
cancel: '取消',
confirmDelete: '确认是否删除,删除员工前请确认员工已完成相关审批流程,删除后相关流程将无法继续进行,请慎重操作!',
confirmDeleteAction: '确认删除'
confirmDeleteAction: '确认删除',
relCd: '岗位'
},
selectStaff: {
title: '选择员工',

View File

@ -49,6 +49,7 @@
<el-table-column prop="orgName" :label="$t('staff.relatedOrg')" align="center" />
<el-table-column prop="email" :label="$t('staff.email')" align="center" />
<el-table-column prop="address" :label="$t('staff.address')" align="center" />
<el-table-column prop="relCdName" :label="$t('staff.relCd')" align="center" />
<el-table-column prop="sex" :label="$t('staff.gender')" align="center">
<template slot-scope="scope">
{{ scope.row.sex == 0 ? $t('staff.male') : $t('staff.female') }}
@ -84,7 +85,7 @@
<reset-staff-pwd :visible.sync="resetPwdVisible" :staff-info="currentStaff" @success="handleSuccess" />
<edit-staff :visible.sync="editStaffVisible" :staff-info="currentStaff" @success="handleSuccess" />
<edit-staff ref="editStaff" :staff-info="currentStaff" @success="handleSuccess" />
<delete-staff :visible.sync="deleteStaffVisible" :staff-info="currentStaff" @success="handleSuccess" />
</div>
@ -181,6 +182,7 @@ export default {
openEditStaff(staff) {
this.currentStaff = { ...staff }
this.editStaffVisible = true
this.$refs.editStaff.open(staff)
},
openDeleteStaff(staff) {
this.currentStaff = { ...staff }