老产品前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

366 lines
12 KiB

4 years ago
<template>
4 years ago
<div>
<div class="dialog-h-content scroll-h">
<div>
<el-form ref="ref_leader"
:inline="true"
:model="dataForm"
:rules="dataRule"
class="form">
4 years ago
<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>
4 years ago
</el-form-item>
4 years ago
<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>
4 years ago
<el-form-item label="联系方式" label-width="150px">
4 years ago
<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">
4 years ago
<el-input type="textarea" class="item_width_1" v-model="dataForm.interoduction" placeholder="简介"></el-input>
4 years ago
</el-form-item>
4 years ago
<el-form-item label="头像" label-width="150px">
4 years ago
<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>
4 years ago
<div v-if="tagTab === 'choose'">
<el-form-item label="负责人" label-width="150px" prop="selectleaderId">
4 years ago
<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>
4 years ago
</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>
4 years ago
</template>
<script>
import debounce from 'lodash/debounce'
import { requestPost } from "@/js/dai/request";
4 years ago
import boy from '../assets/boy.png'
import girl from '../assets/girl.png'
4 years ago
export default {
data () {
return {
4 years ago
boy: boy,
girl: girl,
4 years ago
tagTab: 'add',
4 years ago
btnDisable: false,
4 years ago
uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadqrcodeV2',
dataForm: {
name: '',
gender: '',
mobile: '',
interoduction: '',
categoryCode: '',
4 years ago
avatar: '',
structReferenceId: '', // 动力主轴节点ID
4 years ago
leaderId: '',
selectleaderId: ''
4 years ago
},
4 years ago
structLevel: '',
leaderCategoryCodeArr: '', // 动力主轴节点级别
4 years ago
categoryName: '',
4 years ago
gender: [
4 years ago
{ dictValue: '1', dictName: '男' },
{ dictValue: '2', dictName: '女' }
4 years ago
],
4 years ago
customerId: localStorage.getItem('customerId'),
listbriefArr: []
4 years ago
}
},
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' }
],
4 years ago
// mobile: [
// { required: true, message: this.$t('validate.required'), trigger: 'blur' }
// ],
4 years ago
interoduction: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
4 years ago
// avatar: [
// { required: true, message: this.$t('validate.required'), trigger: 'blur' }
// ],
selectleaderId: [
4 years ago
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
4 years ago
}
}
},
methods: {
4 years ago
initForm(agencyObj) {
4 years ago
// this.$refs.ref_leader.resetFields();
this.dataForm = {
name: '',
gender: '',
mobile: '',
interoduction: '',
categoryCode: '',
avatar: '',
structReferenceId: '', // 动力主轴节点ID
leaderId: '',
selectleaderId: ''
},
4 years ago
this.dataForm.structReferenceId = agencyObj.axisStructId
this.dataForm.leaderId = agencyObj.leaderId
this.structLevel = agencyObj.structLevel
this.getTagCategoryArr()
4 years ago
this.listbrief()
4 years ago
if (this.dataForm.leaderId) {
this.getInfo()
}
},
4 years ago
handleImgSuccess (type, res, file) {
if (res.code === 0 && res.msg === 'success') {
4 years ago
this.dataForm.avatar = res.data.url
4 years ago
} 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
}
4 years ago
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
}
4 years ago
} else {
this.$message.error(msg)
}
},
// 表单提交
4 years ago
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 {
4 years ago
this.btnDisable = false
4 years ago
if (this.dataForm.leaderId) {
4 years ago
if (this.tagTab === 'choose') {
4 years ago
this.bindLeader()
} else {
this.updateLeader()
}
} else {
4 years ago
this.addLeader()
}
}
})
4 years ago
},
async addLeader() {
this.dataForm.categoryCode = this.leaderCategoryCodeArr[this.structLevel].categoryCode
4 years ago
this.dataForm.id = ''
4 years ago
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: () => {
4 years ago
this.$emit('leaderOk')
4 years ago
}
})
} else {
this.$message.error(msg)
}
},
async updateLeader() {
this.dataForm.categoryCode = this.leaderCategoryCodeArr[this.structLevel].categoryCode
4 years ago
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: () => {
4 years ago
this.$emit('leaderOk')
4 years ago
}
})
} else {
this.$message.error(msg)
}
},
4 years ago
async bindLeader() {
4 years ago
if (!this.dataForm.selectleaderId) {
return this.$message.error('请选择负责人')
}
4 years ago
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)
}
4 years ago
this.categoryName = this.leaderCategoryCodeArr[this.structLevel].categoryName
},
4 years ago
// 获取动力主轴相关负责人
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)
}
},
4 years ago
// 取消按钮
handleCancle () {
this.$emit('leaderCancle')
},
4 years ago
}
}
</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>
4 years ago
<style lang="scss" scoped >
@import "@/assets/scss/modules/visual/communityManageForm.scss";
</style>