[update 委员信息] 上传个人照片

This commit is contained in:
danshihao
2024-06-07 15:49:15 +08:00
parent a2a0128561
commit ca068602d9
3 changed files with 167 additions and 15 deletions
@@ -13,10 +13,15 @@
:span="label.span ? label.span : 1" :span="label.span ? label.span : 1"
:class="{'descriptions-item-none': label.type === 'none'}" :class="{'descriptions-item-none': label.type === 'none'}"
:label="label.label"> :label="label.label">
<template v-if="!label.type">{{ model[label.valueField] }}</template> <!-- 默认的直接显示 -->
<template v-else-if="label.type === 'img'"> <span v-if="!label.type">{{ model[label.valueField] }}</span>
<img :src="getImgUrl(model[label.valueField])" alt="" class="descriptions-item-content-img"> <!-- 多个字段数组用函数处理好内容显示 -->
</template> <span v-else-if="label.type === 'arr'">{{ fieldArrToContent(label.split, label.valueField) }}</span>
<!-- 图片 -->
<div v-else-if="label.type === 'img'" class="descriptions-item-content-img">
<img v-if="model[label.valueField]" :src="getImgUrl(model[label.valueField])" alt="">
<a-avatar v-else :size="90" icon="user" />
</div>
</a-descriptions-item> </a-descriptions-item>
</a-descriptions> </a-descriptions>
</a-card> </a-card>
@@ -90,14 +95,14 @@ export default {
isOpen: true, isOpen: true,
column: 2, column: 2,
labelList: [ labelList: [
{label: '毕业院校', valueField: 'graduationInstitution'}, { label: '毕业院校', valueField: 'graduationInstitution' },
{label: '所学专业', valueField: 'majorStudied'}, { label: '所学专业', valueField: 'majorStudied' },
{label: '学历', valueField: 'educationalBackground'}, { label: '学历', valueField: 'educationalBackground' },
{label: '学位', valueField: 'degree'}, { label: '学位', valueField: 'degree' },
{label: '专业技术特长', valueField: 'professionalTechnicalExpertise'}, { label: '专业技术特长', valueField: 'professionalTechnicalExpertise' },
{label: '会何种外语及熟练程度', valueField: 'foreignLanguage'}, { label: '会何种外语及熟练程度', valueField: ['foreignLanguage', 'foreignLanguageProficiencyLevel'], split: ' ', type: 'arr' },
{label: '其他语言及熟练程度', valueField: 'foreignLanguageProficiencyLevel'}, { label: '其他语言及熟练程度', valueField: 'otherLanguagesAndProficiencyLevels' },
{label: '两院院士', valueField: 'isAcademician'}, { label: '两院院士', valueField: 'isAcademician' },
] ]
} }
] ]
@@ -129,6 +134,22 @@ export default {
// 获取图片url // 获取图片url
getImgUrl (id) { getImgUrl (id) {
return getFileAccessHttpUrl(id) return getFileAccessHttpUrl(id)
},
/**
* 将字段数组转内容
* @param split - 分隔符
* @param fieldArr - 字段的数组
* @return {string} - 返回拼接的内容
*/
fieldArrToContent (split, fieldArr) {
let arr = []
fieldArr.forEach(field => {
const val = this.model[field]
if (val || val === 0) {
arr.push(val)
}
})
return arr.join(split)
} }
} }
} }
@@ -75,10 +75,18 @@
</a-tooltip> </a-tooltip>
</template> </template>
<!--操作-->
<span slot="action" class="action-span-cell" slot-scope="record">
<a v-has="'committeeMemberInfo:uploadPhoto'" @click="uploadPhoto(record)">上传个人头像</a>
</span>
</a-table> </a-table>
</div> </div>
<!-- /table表格区域--> <!-- /table表格区域-->
</a-card> </a-card>
<!-- 上传图片 -->
<upload-photo-modal ref="uploadPhotoModal" @ok="handleUploadPhotoOk"></upload-photo-modal>
</div> </div>
</template> </template>
@@ -86,9 +94,10 @@
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle' import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
import IconImg from '@/assets/imgs/icon/icon_organizational_manage.png' import IconImg from '@/assets/imgs/icon/icon_organizational_manage.png'
import {JeroListMixin} from '@/mixins/JeroListMixin' import {JeroListMixin} from '@/mixins/JeroListMixin'
import UploadPhotoModal from '@views/organizationalManage/committeeMemberInfo/modules/UploadPhotoModal'
export default { export default {
name: 'CommitteeMemberInfoList', name: 'CommitteeMemberInfoList',
components: {PageHeaderTitle}, components: {UploadPhotoModal, PageHeaderTitle},
mixins: [JeroListMixin], mixins: [JeroListMixin],
data () { data () {
return { return {
@@ -129,14 +138,14 @@ export default {
align: 'center', align: 'center',
width: 140, width: 140,
dataIndex: 'committeeNumber', dataIndex: 'committeeNumber',
scopedSlots: { customRender: 'detail' } scopedSlots: { customRender: 'text' }
}, },
{ {
title: '委员姓名', title: '委员姓名',
align: 'center', align: 'center',
width: 140, width: 140,
dataIndex: 'name', dataIndex: 'name',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'detail' }
}, },
{ {
title: '性别', title: '性别',
@@ -173,6 +182,13 @@ export default {
dataIndex: 'appointmentLetterNumber', dataIndex: 'appointmentLetterNumber',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, },
{
title: '操作',
dataIndex: '',
align: 'center',
width: 100,
scopedSlots: { customRender: 'action' }
},
], ],
url: { url: {
list: '/PayCommitteeMemberInfo/page' list: '/PayCommitteeMemberInfo/page'
@@ -193,6 +209,19 @@ export default {
} }
}) })
}, },
/**
* 上传个人头像
* @param record
*/
uploadPhoto (record) {
this.$refs.uploadPhotoModal.edit(record)
},
/**
* 上传个人头像完成
*/
handleUploadPhotoOk () {
this.loadData()
},
// 下拉框的搜索 // 下拉框的搜索
filterOption(input, option) { filterOption(input, option) {
return ( return (
@@ -0,0 +1,102 @@
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
:confirmLoading="confirmLoading"
switchFullscreen
@ok="handleOk"
@cancel="handleCancel"
cancelText="关闭">
<a-spin :spinning="confirmLoading">
<a-form :form="form">
<a-form-item label="个人照片" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-image-upload v-decorator="['photo', validatorRules.photo]" :return-id="true"></j-image-upload>
</a-form-item>
</a-form>
</a-spin>
</j-modal>
</template>
<script>
import JImageUpload from '@comp/jero/JImageUpload'
import pick from 'lodash.pick'
import {postAction} from '@api/manage'
export default {
name: 'UploadPhotoModal',
components: {JImageUpload},
data() {
return {
form: this.$form.createForm(this),
title: '操作',
width: 600,
visible: false,
model: {},
labelCol: {
xs: {span: 24},
sm: {span: 5}
},
wrapperCol: {
xs: {span: 24},
sm: {span: 10}
},
confirmLoading: false,
validatorRules: {
photo: {
rules: [{required: true, message: '请上传个人照片'}],
validateTrigger: 'change'
}
},
url: {
edit: '/PayCommitteeMemberInfo/uploadPhoto'
}
}
},
methods: {
add() {
this.edit({})
},
edit(record) {
this.model = Object.assign({}, record)
this.visible = true
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model, 'photo'))
})
},
close() {
this.form.resetFields()
this.$emit('close')
this.visible = false
},
handleOk() {
const that = this
// 触发表单验证
this.form.validateFields((err, values) => {
if (!err) {
that.confirmLoading = true
const formData = Object.assign({ id: this.model.id }, values)
console.log('表单提交数据', formData)
postAction(this.url.edit, formData).then((res) => {
if (res.success) {
that.$message.success(res.message)
that.$emit('ok')
that.close()
} else {
that.$message.warning(res.message)
}
}).finally(() => {
that.confirmLoading = false
})
}
})
},
handleCancel() {
this.close()
},
}
}
</script>
<style scoped>
</style>