老产品前端代码
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.

250 lines
7.6 KiB

4 years ago
<template>
<el-dialog :visible.sync="visible" title="负责人" :close-on-click-modal="false" :close-on-press-escape="false" @closed="leaderClosed">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
<el-form-item label="负责任人名称" prop="name" label-width="110px">
<el-input style="width:250px" v-model="dataForm.name" placeholder="负责任人名称"></el-input>
</el-form-item>
<el-form-item label="性别" prop="gender" label-width="110px">
<el-select style="width:250px" 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="联系方式" prop="mobile" label-width="110px">
<el-input style="width:250px" v-model="dataForm.mobile" placeholder="联系方式"></el-input>
</el-form-item>
<el-form-item label="简介" prop="interoduction" label-width="110px">
<el-input style="width:250px" v-model="dataForm.interoduction" placeholder="简介"></el-input>
</el-form-item>
<el-form-item label="头像" prop="avatar" label-width="110px">
<el-input style="width:250px" v-model="dataForm.avatar" placeholder="头像"></el-input>
</el-form-item>
<!-- <el-form-item label="头像" prop="avatar" label-width="110px">
<el-upload class="avatar-uploader"
: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> -->
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</template>
<script>
import debounce from 'lodash/debounce'
import { requestPost } from "@/js/dai/request";
export default {
data () {
return {
uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadqrcodeV2',
visible: false,
dataForm: {
name: '',
gender: '',
mobile: '',
interoduction: '',
avatar: '',
structReferenceId: '', // 动力主轴节点ID
// customerId: localStorage.getItem('customerId'),
leaderId: ''
},
gender: [
{ dictValue: '男', dictName: '男' },
{ dictValue: '女', dictName: '女' }
],
}
},
props: {
leaderVisible: {
type: Boolean,
default: false
},
axisStructId: {
type: String,
default: ''
},
leaderId: {
type: String,
default: ''
},
},
watch: {
leaderVisible(newName){
this.visible = newName
},
axisStructId (newName) {
this.dataForm.structReferenceId = newName
},
leaderId(newName) {
if (newName) {
this.dataForm.leaderId = newName
this.getInfo()
}
}
},
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' }
]
}
}
},
methods: {
handleImgSuccess (type, res, file) {
if (res.code === 0 && res.msg === 'success') {
console.log('type', type)
console.log('res.data.url', 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
}
} else {
this.$message.error(msg)
}
},
// 表单提交
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
if (this.leaderId) {
this.updateLeader()
} else {
this.addLeader()
}
})
}, 1000, { 'leading': true, 'trailing': false }),
leaderClosed () {
this.visible = false
this.$emit('refreshDataListleader')
},
async addLeader() {
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.visible = false
this.$emit('refreshDataListleader')
}
})
} else {
this.$message.error(msg)
}
},
async updateLeader() {
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.visible = false
this.$emit('refreshDataListleader')
}
})
} else {
this.$message.error(msg)
}
}
}
}
</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>