北尚诉办前端
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.
 
 
 
 

328 lines
11 KiB

<template>
<el-card shadow="never" class="aui-card--fill" v-loading="pageloading">
<div class="mod-__masteruserrelation}">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'" :disabled="pageDisabled">
<el-form-item label="会议内容" prop="content" label-width="100px">
<el-input
type="textarea"
:rows="6"
placeholder="请输入会议内容,2000字以内"
v-model="dataForm.content"
maxlength="2000"
style="width:50%">
</el-input>
</el-form-item>
<el-form-item label="添加图片" v-loading="loading" prop="images" label-width="100px">
<el-upload
:action="uploadUrl"
:class="{hide:hideUpload}"
list-type="picture-card"
:file-list="dataForm.images"
:limit=9
:on-preview="handlePictureCardPreview"
:on-remove="handleRemove"
:on-success="handleAvatarSuccess"
:on-error="handelError"
:before-upload="beforeAvatarUpload"
style="width:480px">
<i class="el-icon-plus"></i>
</el-upload>
<el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
<div><font color="gray">1~9张图</font></div>
</el-form-item>
<el-form-item label="添加文件" v-loading="fileloading" prop="files" label-width="100px">
<el-upload
class="upload-demo"
ref="upload"
:disabled="isAble"
:action="uploadFileUrl"
:before-remove="beforeFileRemove"
:file-list="dataForm.files"
:before-upload="beforeAvatarFileUpload"
:on-remove="handleFileRemove"
:on-success="handleAvatarFileSuccess"
:on-error="handelError"
:on-preview="handleFileCardPreview"
style="width:480px">
<el-button size="small" :disabled="isAble">点击上传</el-button>
<div slot="tip" class="el-upload__tip">支持.wordPDFExcel文件</div>
</el-upload>
</el-form-item>
</el-form>
<el-form>
<el-form-item style="margin-left:35px;">
<el-button type="primary" @click="backToUserRelationList">{{"返回"}}</el-button>
<el-button v-if="!pageDisabled" type="primary" :disabled="isAble" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button>
</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>
</div>
</el-card>
</template>
<script>
import debounce from 'lodash/debounce'
import Cookies from 'js-cookie'
import 'quill/dist/quill.snow.css'
import MapSelect from './map-select'
export default {
data () {
return {
visible: false,
dataForm: {
id: '',
userId: '',
nickName: '',
userFace: '',
deptId: '',
deptName: '',
startDate: '',
endDate: '',
content: '',
state: '',
images: [],
files: [],
isConReview: false
},
isAble: false,
hideUpload: false,
pageDisabled: false,
uploadUrl: '',
uploadFileUrl: '',
loading: false,
dialogImageUrl: '',
dialogVisible: false,
isAutoRemoveFile: true,
fileloading: false,
pageloading: true,
isFirst: true,
isGoToInfo: '0' // 是否回到月报列表:0否;1是
}
},
computed: {
dataRule () {
return {
content: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
},
created: function () {
this.uploadUrl = `${window.SITE_CONFIG['apiURL']}/oss/file/uploadImg?token=${Cookies.get('token')}`
this.uploadFileUrl = `${window.SITE_CONFIG['apiURL']}/oss/file/uploadAllFile?token=${Cookies.get('token')}`
// this.uploadUrl = `http://219.146.91.110:10000/epdc-api/oss/file/uploadImg?token=${Cookies.get('token')}`
// this.uploadFileUrl = `http://219.146.91.110:10000/epdc-api/oss/file/uploadAllFile?token=${Cookies.get('token')}`
},
components: {
MapSelect
},
mounted () {
if (this.$route.query.disabled === '0') {
this.pageDisabled = false
this.hideUpload = false
} else {
this.pageDisabled = true
this.hideUpload = true
}
if (this.$route.query.id !== '' && this.$route.query.id != null) {
this.dataForm.id = this.$route.query.id
this.getInfo()
} else {
this.pageloading = false
}
if (this.$route.query.infoId !== '' && this.$route.query.infoId != null) {
this.dataForm.infoId = this.$route.query.infoId
this.isGoToInfo = '1'
}
},
methods: {
init () {
this.dataForm.id = this.$route.query.id
this.dataForm.isConReview = false
this.visible = true
this.isAble = false
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
this.getInfo()
}
})
},
beforeAvatarUpload (file) {
if (this.dataForm.length === 9) {
this.$message.error('最多上传9张图片!')
return false
}
this.loading = true
this.isAble = true
const isJPG = file.type === 'image/jpeg'
const isPNG = file.type === 'image/png'
// 判断是否符合格式要求
if (!isJPG && !isPNG) {
this.$message.error('上传文件必须是jpg、png格式!')
this.loading = false
this.isAble = false
return false
}
},
handleAvatarSuccess (res, file) {
this.loading = false
this.isAble = false
this.dataForm.images.push({ url: res.data.imgUrl, thumbnail: res.data.thumbnail, fileType: 1, recordType: 2, fileName: res.data.fileName })
this.hideUpload = this.dataForm.images.length >= 9
},
handelError () {
this.loading = false
this.fileloading = false
this.isAble = false
this.$message.error('上传文件失败!')
},
handleRemove (file, fileList) {
for (var i = 0; i < this.dataForm.images.length; i++) {
let item = this.dataForm.images[i]
if (item.url === file.url) {
this.dataForm.images.splice(i, 1)
}
}
this.hideUpload = this.dataForm.images.length >= 9
},
handlePictureCardPreview (file) {
this.dialogImageUrl = file.url
this.dialogVisible = true
},
// --------------文件上传-----------------
handleFileCardPreview (file) {
window.location.href = `${window.SITE_CONFIG['apiURL']}/oss/file/download?fileUrl=${file.url}`
// window.location.href = `http://219.146.91.110:10000/epdc-api/oss/file/download?fileUrl=${file.url}`
},
beforeFileRemove (file, fileList) {
if (this.isAutoRemoveFile) {
return this.$confirm(`确定移除${file.name}`)
}
this.isAutoRemoveFile = true
},
beforeAvatarFileUpload (file) {
this.fileloading = true
this.isAble = true
if (file.size === 0) {
this.isAutoRemoveFile = false
this.$message.error('文件为空文件,请上传非空文件!')
this.fileloading = false
this.isAble = false
return false
}
},
handleFileRemove (file, fileList) {
for (var i = 0; i < this.dataForm.files.length; i++) {
let item = this.dataForm.files[i]
if (item.url === file.url) {
this.dataForm.files.splice(i, 1)
}
}
},
handleErrorRemove (file) {
// 实现缩略图模板时删除文件
let fileList = this.$refs.upload.uploadFiles
for (var i = 0; i < fileList.length; i++) {
let item = fileList[i]
if (item.url === file.url) {
fileList.splice(i, 1)
}
}
},
handleAvatarFileSuccess (res, file) {
this.fileloading = false
this.isAble = false
if (res === null || res.data === null || res.data.imgUrl === null) {
this.$message.error('文件上传失败!')
this.handleErrorRemove(file)
return false
}
this.dataForm.files.push({ url: res.data.imgUrl, thumbnail: res.data.thumbnail, fileType: 2, recordType: 2, fileName: res.data.fileName, name: res.data.fileName })
},
// 返回按钮点击事件
backToUserRelationList () {
this.$emit('refreshDataList')
if (this.isGoToInfo === '1') {
this.$parent.selectComponent = 'Monthrecordinfo'
this.$router.push({ path: '/workRecord-Monthrecordinforoute' })
} else {
this.$parent.selectComponent = 'Monthexcellentcase'
this.$router.push({ path: '/workRecord-Monthexcellentcaseroute' })
}
},
// 获取信息
getInfo () {
this.$http.get(`/workRecord/monthexcellentcase/${this.dataForm.id}`).then(({ data: res }) => {
this.pageloading = false
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
// 判断是否存在九张照片,九张照片隐藏上传操作按钮(非查看状态下)
if (this.$route.query.disabled === '0') {
this.hideUpload = this.dataForm.images.length >= 9
}
}).catch(() => {})
},
// 表单提交
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
this.isAble = true
this.$http[!this.dataForm.id ? 'post' : 'put']('/workRecord/monthexcellentcase/', this.dataForm).then(({ data: res }) => {
if (!this.isFirst && res.code === 533) {
// 不是第一次提交 并且 依然是违规内容
this.$confirm('您提交的内容再次被判定为违规, 是否继续提交?', '提示', {
confirmButtonText: '是',
cancelButtonText: '否',
type: 'warning'
}).then(() => {
this.dataForm.isConReview = true
// 选择“是”继续提交,调用提交方法本身
this.dataFormSubmitHandle()
}).catch(() => {
this.isAble = false
})
return false
} else if (res.code === 533) {
this.isFirst = false
this.isAble = false
return this.$message.error(res.msg)
} else if (res.code !== 0) {
this.isAble = false
return this.$message.error(res.msg)
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
this.$emit('refreshDataList')
// 返回主列表
this.backToUserRelationList()
}
})
}).catch(() => {})
})
}, 1000, { 'leading': true, 'trailing': false })
}
}
</script>
<style>
.hide .el-upload--picture-card {
display: none;
}
</style>