赫艾前端
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.
 
 
 
 
 

206 lines
6.7 KiB

<template>
<div>
<el-dialog
:title="'沟通记录 - 回复'"
:close-on-click-modal="false"
width="450px"
@close="closeDialog()"
:visible.sync="visible">
<el-form :model="dataForm" :inline="true" label-position="top" ref="dataForm"
label-width="80px">
<el-row >
<el-col :span="24">
<el-form-item label="内容">
<el-input type="textarea" style="width: 305px" v-model="dataForm.content"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row style="margin-top: 20px" >
<el-col :span="24">
<el-form-item label="附件" >
<el-input style="width: 305px; color: red" readonly v-model="dataForm.fileName"></el-input>
</el-form-item>
<el-form-item style="margin-top: 24px" >
<ftp-upload @childByValue="childByValue"></ftp-upload>
</el-form-item>
</el-col>
</el-row>
<el-row >
<el-col :span="24">
<span style="font-size: 12px">附件清单</span>
<el-table
:data="fileList"
border
:height="height"
highlight-current-row
style="width: 100%;">
<el-table-column
v-for="(item,index) in columnList" :key="index"
:sortable="item.columnSortable"
:prop="item.columnProp"
:header-align="'center'"
:show-overflow-tooltip="item.showOverflowTooltip"
:align="item.align"
:fixed="item.fixed==''?false:item.fixed"
:width="item.columnWidth"
:label="item.columnLabel">
<template slot-scope="scope">
<span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
style="width: 100px; height: 80px"/></span>
</template>
</el-table-column>
<el-table-column
fixed="right"
header-align="center"
align="center"
width="80"
label="操作">
<template slot-scope="scope">
<el-link type="text" size="small" @click="deleteFile(scope.row)">删除</el-link>
<el-link type="text" size="small" @click="downFtpFile(scope.row)"> | 下载</el-link>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="saveChatting()">发送</el-button>
<el-button type="primary" @click="visible = false">关闭</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import FtpUpload from '@/views/modules/common/ftp-upload.vue'
import {saveChatHistory} from '@/api/taskmanage/chatHistory.js'
import axios from "axios";
import Vue from "vue";
export default {
data() {
return {
visible: false,
height: 200,
// 展示列集
columnList: [
{
columnProp: "fileName",
columnLabel: "文件名",
columnHidden: false,
columnImage: false,
columnSortable: false,
columnWidth: null,
format: null,
sortLv: 0,
status: true,
fixed: '',
serialNumber: null,
columnType: null,
align: null
},
{
columnProp: "fileType",
columnLabel: "文件类型",
columnHidden: false,
columnImage: false,
columnSortable: false,
columnWidth: null,
format: null,
sortLv: 0,
status: true,
fixed: '',
serialNumber: null,
columnType: null,
align: null
}
],
userList: [],
dataListSelections: [],
dataForm: {
site: '',
userName: '',
content: '',
createdBy: '',
createDate: '',
ossIds: [],
fileName: '',
taskId: 0,
},
fileList: []
}
},
components:{
FtpUpload
},
methods: {
init(id) {
this.dataForm.taskId = id
this.visible = true
},
childByValue(childValue) {
// childValue就是子组件传过来的值
this.dataForm.fileName = childValue.fileName
this.fileList.push(childValue)
},
// 移除附件
deleteFile(row){
this.fileList = this.fileList.filter(item => item.fileName != row.fileName)
},
// 下载附件
downFtpFile(row){
//'/proxyApi/ftp/file/downFtpFile/'
axios.get( '/api/ftp/file/downFtpFile/' + row.id, {
responseType: 'blob',
headers: {
'Content-Type': 'application/json',
'token': Vue.cookie.get('token')
}
}).then(({data}) => {
// 不限制文件下载类型
const blob = new Blob([data], {type: "application/octet-stream"})
// 下载文件名称
const fileName = row.fileName
// a标签下载
const linkNode = document.createElement('a')
linkNode.download = fileName // a标签的download属性规定下载文件的名称
linkNode.style.display = 'none'
linkNode.href = URL.createObjectURL(blob) // 生成一个Blob URL
document.body.appendChild(linkNode)
linkNode.click() // 模拟在按钮上的一次鼠标单击
URL.revokeObjectURL(linkNode.href) // 释放URL 对象
document.body.removeChild(linkNode)
// }
})
},
// 保存记录
saveChatting(){
this.dataForm.site = this.$store.state.user.site
this.dataForm.userName = this.$store.state.user.name
this.dataForm.ossIds = this.fileList.map(item => item.id)
this.dataForm.createdBy = this.$store.state.user.name
this.dataForm.createDate = this.dayjs().format("YYYY-MM-DD HH:mm:ss")
saveChatHistory(this.dataForm).then(({data}) =>{
if (data && data.code == 0){
this.visible = false
this.$message.success(data.msg)
this.$emit('refreshDataList')
}else{
this.$message.error(data.msg)
}
})
},
closeDialog(){
Object.assign(this.$data, this.$options.data())
}
},
created() {
}
}
</script>