|
|
|
<template>
|
|
|
|
<div>
|
|
|
|
<div class="dialog-h-content scroll-h">
|
|
|
|
<div>
|
|
|
|
<el-form ref="ref_leader"
|
|
|
|
:inline="true"
|
|
|
|
:model="dataForm"
|
|
|
|
:rules="dataRule"
|
|
|
|
class="form">
|
|
|
|
<el-form-item label-width="150px" label="添加方式">
|
|
|
|
<el-radio-group v-model="tagTab" size="small">
|
|
|
|
<el-radio-button label="add">编辑</el-radio-button>
|
|
|
|
<el-radio-button label="choose">绑定</el-radio-button>
|
|
|
|
</el-radio-group>
|
|
|
|
</el-form-item>
|
|
|
|
<div v-if="tagTab === 'add'">
|
|
|
|
<el-form-item label="类别" label-width="150px" v-if="structLevel || structLevel === 0">
|
|
|
|
<el-input class="item_width_1" :readonly="true" v-model="categoryName"></el-input>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="名称" prop="name" label-width="150px">
|
|
|
|
<el-input class="item_width_1" v-model="dataForm.name" placeholder="负责任人名称"></el-input>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="性别" prop="gender" label-width="150px">
|
|
|
|
<el-select class="item_width_1" v-model="dataForm.gender" clearable placeholder="性别">
|
|
|
|
<el-option
|
|
|
|
v-for="item in gender"
|
|
|
|
:key="item.dictValue"
|
|
|
|
:label="item.dictName"
|
|
|
|
:value="item.dictValue"
|
|
|
|
>
|
|
|
|
</el-option>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="联系方式" label-width="150px">
|
|
|
|
<el-input class="item_width_1" v-model="dataForm.mobile" placeholder="联系方式"></el-input>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="简介" prop="interoduction" label-width="150px">
|
|
|
|
<el-input type="textarea" class="item_width_1" v-model="dataForm.interoduction" placeholder="简介"></el-input>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="头像" label-width="150px">
|
|
|
|
<el-upload class="avatar-uploader"
|
|
|
|
:data="{customerId:customerId}"
|
|
|
|
:action="uploadUlr"
|
|
|
|
:show-file-list="false"
|
|
|
|
:on-success="(response, file, fileList) => handleImgSuccess('avatar', response, file, fileList)"
|
|
|
|
:before-upload="beforeImgUpload">
|
|
|
|
<img v-if="dataForm.avatar"
|
|
|
|
:src="dataForm.avatar"
|
|
|
|
style="width:70px;height:70px"
|
|
|
|
class="function-icon">
|
|
|
|
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
|
|
|
|
</el-upload>
|
|
|
|
</el-form-item>
|
|
|
|
</div>
|
|
|
|
<div v-if="tagTab === 'choose'">
|
|
|
|
<el-form-item label="负责人" label-width="150px" prop="selectleaderId">
|
|
|
|
<el-select class="item_width_1" v-model="dataForm.selectleaderId" clearable placeholder="请选择负责人">
|
|
|
|
<el-option
|
|
|
|
v-for="item in listbriefArr"
|
|
|
|
:key="item.id"
|
|
|
|
:label="item.name"
|
|
|
|
:value="item.id"
|
|
|
|
>
|
|
|
|
</el-option>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</div>
|
|
|
|
</el-form>
|
|
|
|
<div class="div_btn">
|
|
|
|
<el-button size="small"
|
|
|
|
@click="handleCancle">取 消</el-button>
|
|
|
|
<el-button size="small"
|
|
|
|
type="primary"
|
|
|
|
:disabled="btnDisable"
|
|
|
|
@click="dataFormSubmitHandle">确 定</el-button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import debounce from 'lodash/debounce'
|
|
|
|
import { requestPost } from "@/js/dai/request";
|
|
|
|
import boy from '../assets/boy.png'
|
|
|
|
import girl from '../assets/girl.png'
|
|
|
|
export default {
|
|
|
|
data () {
|
|
|
|
return {
|
|
|
|
boy: boy,
|
|
|
|
girl: girl,
|
|
|
|
tagTab: 'add',
|
|
|
|
btnDisable: false,
|
|
|
|
uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadqrcodeV2',
|
|
|
|
dataForm: {
|
|
|
|
name: '',
|
|
|
|
gender: '',
|
|
|
|
mobile: '',
|
|
|
|
interoduction: '',
|
|
|
|
categoryCode: '',
|
|
|
|
avatar: '',
|
|
|
|
structReferenceId: '', // 动力主轴节点ID
|
|
|
|
leaderId: '',
|
|
|
|
selectleaderId: ''
|
|
|
|
},
|
|
|
|
structLevel: '',
|
|
|
|
leaderCategoryCodeArr: '', // 动力主轴节点级别
|
|
|
|
categoryName: '',
|
|
|
|
gender: [
|
|
|
|
{ dictValue: '1', dictName: '男' },
|
|
|
|
{ dictValue: '2', dictName: '女' }
|
|
|
|
],
|
|
|
|
customerId: localStorage.getItem('customerId'),
|
|
|
|
listbriefArr: []
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
props: {
|
|
|
|
},
|
|
|
|
watch: {
|
|
|
|
},
|
|
|
|
computed: {
|
|
|
|
dataRule () {
|
|
|
|
return {
|
|
|
|
name: [
|
|
|
|
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
|
|
|
|
],
|
|
|
|
gender: [
|
|
|
|
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
|
|
|
|
],
|
|
|
|
// mobile: [
|
|
|
|
// { required: true, message: this.$t('validate.required'), trigger: 'blur' }
|
|
|
|
// ],
|
|
|
|
interoduction: [
|
|
|
|
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
|
|
|
|
],
|
|
|
|
// avatar: [
|
|
|
|
// { required: true, message: this.$t('validate.required'), trigger: 'blur' }
|
|
|
|
// ],
|
|
|
|
selectleaderId: [
|
|
|
|
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
|
|
|
|
]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
initForm(agencyObj) {
|
|
|
|
// this.$refs.ref_leader.resetFields();
|
|
|
|
this.dataForm = {
|
|
|
|
name: '',
|
|
|
|
gender: '',
|
|
|
|
mobile: '',
|
|
|
|
interoduction: '',
|
|
|
|
categoryCode: '',
|
|
|
|
avatar: '',
|
|
|
|
structReferenceId: '', // 动力主轴节点ID
|
|
|
|
leaderId: '',
|
|
|
|
selectleaderId: ''
|
|
|
|
},
|
|
|
|
this.dataForm.structReferenceId = agencyObj.axisStructId
|
|
|
|
this.dataForm.leaderId = agencyObj.leaderId
|
|
|
|
this.structLevel = agencyObj.structLevel
|
|
|
|
this.getTagCategoryArr()
|
|
|
|
this.listbrief()
|
|
|
|
if (this.dataForm.leaderId) {
|
|
|
|
this.getInfo()
|
|
|
|
}
|
|
|
|
},
|
|
|
|
handleImgSuccess (type, res, file) {
|
|
|
|
if (res.code === 0 && res.msg === 'success') {
|
|
|
|
this.dataForm.avatar = res.data.url
|
|
|
|
} else {
|
|
|
|
this.$message.error(res.msg)
|
|
|
|
}
|
|
|
|
},
|
|
|
|
beforeImgUpload (file) {
|
|
|
|
// const isPNG = file.type === 'image/png'
|
|
|
|
const isLt1M = file.size / 1024 / 1024 < 1
|
|
|
|
|
|
|
|
// if (!isPNG) {
|
|
|
|
// this.$message.error('上传图片只能是 PNG 格式!')
|
|
|
|
// }
|
|
|
|
if (!isLt1M) {
|
|
|
|
this.$message.error('上传图片大小不能超过 1MB!')
|
|
|
|
}
|
|
|
|
// return isPNG && isLt1M
|
|
|
|
return isLt1M
|
|
|
|
},
|
|
|
|
// 获取信息
|
|
|
|
async getInfo () {
|
|
|
|
// this.$http.get(`/pli/power/axisLeader/getLeaderDetai/${this.dataForm.structReferenceId}`).then(({ data: res }) => {
|
|
|
|
// if (res.code !== 0) {
|
|
|
|
// return this.$message.error(res.msg)
|
|
|
|
// }
|
|
|
|
// this.dataForm = {
|
|
|
|
// ...this.dataForm,
|
|
|
|
// ...res.data
|
|
|
|
// }
|
|
|
|
// }).catch(() => {})
|
|
|
|
const url = `/pli/power/axisLeader/getLeaderDetail/${this.dataForm.structReferenceId}`
|
|
|
|
const { data, code, msg } = await requestPost(url)
|
|
|
|
if (code === 0) {
|
|
|
|
this.dataForm = {
|
|
|
|
...this.dataForm,
|
|
|
|
...data
|
|
|
|
}
|
|
|
|
if (this.dataForm.gender === '1') {
|
|
|
|
this.dataForm.avatar = this.dataForm.avatar ? this.dataForm.avatar : this.boy
|
|
|
|
} else {
|
|
|
|
this.dataForm.avatar = this.dataForm.avatar ? this.dataForm.avatar : this.girl
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
this.$message.error(msg)
|
|
|
|
}
|
|
|
|
},
|
|
|
|
// 表单提交
|
|
|
|
async dataFormSubmitHandle () {
|
|
|
|
// 确定
|
|
|
|
this.btnDisable = true
|
|
|
|
setTimeout(() => {
|
|
|
|
this.btnDisable = false
|
|
|
|
}, 10000)
|
|
|
|
this.$refs['ref_leader'].validate((valid, messageObj) => {
|
|
|
|
if (!valid) {
|
|
|
|
app.util.validateRule(messageObj)
|
|
|
|
this.btnDisable = false
|
|
|
|
} else {
|
|
|
|
this.btnDisable = false
|
|
|
|
if (this.dataForm.leaderId) {
|
|
|
|
if (this.tagTab === 'choose') {
|
|
|
|
this.bindLeader()
|
|
|
|
} else {
|
|
|
|
this.updateLeader()
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
this.addLeader()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
async addLeader() {
|
|
|
|
this.dataForm.categoryCode = this.leaderCategoryCodeArr[this.structLevel].categoryCode
|
|
|
|
this.dataForm.id = ''
|
|
|
|
const url = '/pli/power/axisLeader/save/'
|
|
|
|
const { data, code, msg } = await requestPost(url, this.dataForm)
|
|
|
|
if (code === 0) {
|
|
|
|
this.$message({
|
|
|
|
message: this.$t('prompt.success'),
|
|
|
|
type: 'success',
|
|
|
|
duration: 500,
|
|
|
|
onClose: () => {
|
|
|
|
this.$emit('leaderOk')
|
|
|
|
}
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
this.$message.error(msg)
|
|
|
|
}
|
|
|
|
},
|
|
|
|
async updateLeader() {
|
|
|
|
this.dataForm.categoryCode = this.leaderCategoryCodeArr[this.structLevel].categoryCode
|
|
|
|
const url = '/pli/power/axisLeader/update'
|
|
|
|
const { data, code, msg } = await requestPost(url, this.dataForm)
|
|
|
|
if (code === 0) {
|
|
|
|
this.$message({
|
|
|
|
message: this.$t('prompt.success'),
|
|
|
|
type: 'success',
|
|
|
|
duration: 500,
|
|
|
|
onClose: () => {
|
|
|
|
this.$emit('leaderOk')
|
|
|
|
}
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
this.$message.error(msg)
|
|
|
|
}
|
|
|
|
},
|
|
|
|
async bindLeader() {
|
|
|
|
if (!this.dataForm.selectleaderId) {
|
|
|
|
return this.$message.error('请选择负责人')
|
|
|
|
}
|
|
|
|
let params = {
|
|
|
|
categoryCode: this.leaderCategoryCodeArr[this.structLevel].categoryCode,
|
|
|
|
axisStructId: this.dataForm.structReferenceId,
|
|
|
|
leaderId: this.dataForm.selectleaderId
|
|
|
|
}
|
|
|
|
const url = '/pli/power/axisstructleader/bind'
|
|
|
|
const { data, code, msg } = await requestPost(url, params)
|
|
|
|
if (code === 0) {
|
|
|
|
this.$message({
|
|
|
|
message: this.$t('prompt.success'),
|
|
|
|
type: 'success',
|
|
|
|
duration: 500,
|
|
|
|
onClose: () => {
|
|
|
|
this.$emit('leaderOk')
|
|
|
|
}
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
this.$message.error(msg)
|
|
|
|
}
|
|
|
|
},
|
|
|
|
// 获取动力主轴标签
|
|
|
|
async getTagCategoryArr(){
|
|
|
|
const url = '/pli/power/axisTag/listSimple/leader'
|
|
|
|
let params = {}
|
|
|
|
const { data, code, msg } = await requestPost(url, params)
|
|
|
|
|
|
|
|
if (code === 0) {
|
|
|
|
this.leaderCategoryCodeArr = data
|
|
|
|
} else {
|
|
|
|
this.$message.error(msg)
|
|
|
|
}
|
|
|
|
this.categoryName = this.leaderCategoryCodeArr[this.structLevel].categoryName
|
|
|
|
},
|
|
|
|
// 获取动力主轴相关负责人
|
|
|
|
async listbrief(){
|
|
|
|
const url = '/pli/power/axisstructleader/listbrief'
|
|
|
|
let params = {
|
|
|
|
structLevel: this.structLevel,
|
|
|
|
axisStructId: this.dataForm.structReferenceId,
|
|
|
|
keyWord: ''
|
|
|
|
}
|
|
|
|
const { data, code, msg } = await requestPost(url, params)
|
|
|
|
if (code === 0) {
|
|
|
|
this.listbriefArr = data
|
|
|
|
} else {
|
|
|
|
this.$message.error(msg)
|
|
|
|
}
|
|
|
|
},
|
|
|
|
// 取消按钮
|
|
|
|
handleCancle () {
|
|
|
|
this.$emit('leaderCancle')
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
.avatar-uploader {
|
|
|
|
::v-deep
|
|
|
|
.el-upload {
|
|
|
|
cursor: pointer;
|
|
|
|
position: relative;
|
|
|
|
overflow: hidden;
|
|
|
|
}
|
|
|
|
.el-upload:hover {
|
|
|
|
border-color: #409EFF;
|
|
|
|
}
|
|
|
|
.avatar {
|
|
|
|
width: 70px;
|
|
|
|
height: 70px;
|
|
|
|
display: block;
|
|
|
|
}
|
|
|
|
.avatar-uploader-icon {
|
|
|
|
border: 1px dashed #d9d9d9;
|
|
|
|
border-radius: 6px;
|
|
|
|
font-size: 28px;
|
|
|
|
color: #8c939d;
|
|
|
|
width: 70px;
|
|
|
|
height: 70px;
|
|
|
|
line-height: 70px;
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
<style lang="scss" scoped >
|
|
|
|
@import "@/assets/scss/modules/visual/communityManageForm.scss";
|
|
|
|
</style>
|