对比新文件 |
| | |
| | | <template> |
| | | <div class="inner"> |
| | | <a-row type="flex" justify="space-between" style="margin-bottom: 20px"> |
| | | <a-col :span="4"> |
| | | <a-button type="primary" @click="showCreateHandle">新增</a-button> |
| | | </a-col> |
| | | </a-row> |
| | | |
| | | <div class="table-cont"> |
| | | <a-table :columns="columns" :data-source="appFileData" :pagination="pagination" :rowKey="record=>record.id" bordered> |
| | | <template #fileurl="fileurl"> |
| | | {{ uploadUrl + fileurl }} |
| | | </template> |
| | | <template #action="action,row"> |
| | | <a-button type="link" @click="showEditHandle(row)">编辑</a-button> |
| | | <a-button type="link" class="delBtn" @click="deleteHandle(row)">删除</a-button> |
| | | </template> |
| | | </a-table> |
| | | </div> |
| | | <a-modal |
| | | :title="dialogStatus==='create'?'新增':'编辑'" :visible.sync="dialogFormVisible" |
| | | :modal-append-to-body="false" |
| | | :close-on-click-modal="false" |
| | | width="500px" |
| | | cancelText="取消" |
| | | okText="确认" |
| | | @ok="onSubmit" |
| | | @cancel="handleCancel" |
| | | :afterClose="clearMod" |
| | | > |
| | | <a-form-model ref="dataForm" :rules="dataFormRules" :model="dataForm" :label-col="labelCol" :wrapper-col="wrapperCol" :colon="false"> |
| | | <!-- <a-form-model-item label="文件名称:" prop="filename">--> |
| | | <!-- <a-input v-model="dataForm.filename"/>--> |
| | | <!-- </a-form-model-item>--> |
| | | <a-form-model-item label="上传文件:" prop="company"> |
| | | <a-upload |
| | | :action="uploadUrl" |
| | | :file-list="fileList" |
| | | @change="fileChange" |
| | | :headers="header" |
| | | :data="{module: 'naturalDisasterPath'}" |
| | | @download="downloadFile" |
| | | :remove="(file)=>{removeFile(file)}" |
| | | :showUploadList="{ |
| | | showRemoveIcon: true, |
| | | showDownloadIcon: true |
| | | }" |
| | | > |
| | | <a-button> <a-icon type="upload" />上传附件</a-button> |
| | | </a-upload> |
| | | </a-form-model-item> |
| | | <a-form-model-item label="版本号:" prop="version"> |
| | | <a-input v-model="dataForm.version"/> |
| | | </a-form-model-item> |
| | | <a-form-model-item label="备注:" prop="remark"> |
| | | <a-input v-model="dataForm.remark"/> |
| | | </a-form-model-item> |
| | | </a-form-model> |
| | | </a-modal> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import {getUser, delUser, addGroupUser, updateGroupUser} from '@/api/user' |
| | | import {getDistrictInfo, loginOut} from "@/api/login"; |
| | | import {getUserInfo, Session} from "@/util/storage"; |
| | | import Cookies from "js-cookie"; |
| | | import {deleteFile} from "@/api/list"; |
| | | import axios from "axios"; |
| | | import {addApp, delApp, getAppList, updateApp} from "@/api/app"; |
| | | export default { |
| | | name: 'user', |
| | | data () { |
| | | return { |
| | | areaVal: [], |
| | | unittype: null, |
| | | search:{ |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | | }, |
| | | columns:[ |
| | | { |
| | | title: '文件名称', |
| | | dataIndex: 'filename', |
| | | key: 'filename' |
| | | }, |
| | | { |
| | | title: '文件链接', |
| | | dataIndex: 'fileurl', |
| | | key: 'fileurl', |
| | | scopedSlots: { customRender: 'fileurl' }, |
| | | customCell: this.executeCustomCell |
| | | }, |
| | | { |
| | | title: '版本号', |
| | | dataIndex: 'version', |
| | | width: 120, |
| | | key: 'version' |
| | | }, |
| | | { |
| | | title: '备注', |
| | | dataIndex: 'remark', |
| | | key: 'remark', |
| | | }, |
| | | // { |
| | | // title: '创建时间', |
| | | // dataIndex: 'created', |
| | | // key: 'created', |
| | | // }, |
| | | // { |
| | | // title: '更新时间', |
| | | // dataIndex: 'updated', |
| | | // key: 'updated', |
| | | // }, |
| | | { |
| | | title: '操作', |
| | | key: 'action', |
| | | width: '18%', |
| | | scopedSlots: { customRender: 'action' }, |
| | | }, |
| | | ], |
| | | labelCol: { span: 4 }, |
| | | wrapperCol: { span: 14 }, |
| | | appFileData: [], |
| | | pagination: { |
| | | current: 1, |
| | | defaultCurrent: 1, |
| | | defaultPageSize: 10, |
| | | total: 0, |
| | | onChange: ( page, pageSize ) => this.onPageChange(page,pageSize), |
| | | showTotal: total => `共 ${total} 条` |
| | | }, |
| | | areaData: [], |
| | | fieldNames:{ |
| | | label: 'name', |
| | | value: 'id', |
| | | children: 'children' |
| | | }, |
| | | dataForm: { |
| | | id: '', |
| | | filename:'', |
| | | fileurl:'', |
| | | attachmentId: '', |
| | | version:'', |
| | | remark:'', |
| | | file:'', |
| | | }, |
| | | dialogFormVisible: false, |
| | | dialogStatus: '', |
| | | dataFormRules: { |
| | | // filename:[{required: true, message: '文件名不能为空', trigger: 'blur'}], |
| | | version: [{required: true, message: '版本号不能为空', trigger: 'blur'}], |
| | | remark: [{required: true, message: '描述不能为空', trigger: 'blur'}], |
| | | }, |
| | | uploadUrl: '', |
| | | fileList: [], |
| | | header: { |
| | | uid: null, |
| | | tk: Cookies.get('resTk') |
| | | }, |
| | | delList: [] |
| | | } |
| | | }, |
| | | created() { |
| | | const t = this |
| | | const { baseUrl } = require('../../../config/env.' + process.env.NODE_ENV) |
| | | t.uploadUrl= baseUrl + '/attachment/upload/detail' |
| | | t.userInfo = getUserInfo() |
| | | t.header.uid = t.userInfo.uid |
| | | t.unittype = getUserInfo().unittype |
| | | console.log(t.unittype,'unit') |
| | | t.getList() |
| | | }, |
| | | methods:{ |
| | | async getList () { |
| | | const _this = this |
| | | const params = {} |
| | | params['pageIndex'] = _this.search.pageIndex |
| | | params['pageSize'] = _this.search.pageSize |
| | | const res = await getAppList(params); |
| | | if (res.data.code == 100) { |
| | | _this.appFileData = res.data.data.map(item => { |
| | | return { |
| | | ...item, |
| | | filename:item.attachmentInfo.fileName, |
| | | fileurl: item.attachmentInfo.fileUrl |
| | | } |
| | | }) |
| | | _this.pagination.total = res.data.total |
| | | } else { |
| | | _this.$message.warning(res.data.msg); |
| | | } |
| | | }, |
| | | async showCreateHandle() { |
| | | this.resetDataForm() |
| | | this.dialogStatus = 'create' |
| | | this.dialogFormVisible = true |
| | | this.$nextTick(() => { |
| | | this.$refs['dataForm'].clearValidate() |
| | | }) |
| | | }, |
| | | showEditHandle: function (row) { |
| | | this.resetDataForm(); |
| | | this.dialogStatus = 'editor'; |
| | | this.dataForm.id = row.id; |
| | | this.dataForm.attachmentId = row.attachmentId; |
| | | this.dataForm.filename = row.filename; |
| | | this.dataForm.fileurl = row.fileurl; |
| | | if(this.dataForm.filename){ |
| | | let fileObj = { |
| | | uid: row.id, |
| | | name: row.filename, |
| | | status: 'done', |
| | | url: row.fileurl |
| | | } |
| | | this.fileList.push(fileObj) |
| | | }else{ |
| | | this.fileList = [] |
| | | } |
| | | this.dataForm.version = row.version; |
| | | this.dataForm.remark = row.remark; |
| | | this.dialogFormVisible = true; |
| | | this.$nextTick(() => { |
| | | this.$refs['dataForm'].clearValidate() |
| | | }) |
| | | }, |
| | | executeCustomCell(record) { |
| | | return { |
| | | on: { |
| | | click: (event) => { |
| | | console.log("record",record) |
| | | const file = { |
| | | url: record.fileurl |
| | | } |
| | | this.downloadFile(file) |
| | | } |
| | | }, |
| | | style: { |
| | | 'color': '#1890ff', |
| | | 'cursor': 'pointer' |
| | | } |
| | | } |
| | | }, |
| | | handleCancel(e) { |
| | | const t = this |
| | | t.dialogFormVisible = false; |
| | | }, |
| | | fileChange(info) { |
| | | let fileList = [...info.fileList]; |
| | | if (fileList.length > 1) { |
| | | fileList.splice(0, 1) |
| | | } |
| | | fileList = fileList.map(file => { |
| | | if (file.uid === info.file.uid) { |
| | | if (file.status == 'done') { |
| | | if (file.response) { |
| | | const res = file.response |
| | | if (res.code == 100) { |
| | | this.$message.success('文件上传成功') |
| | | } else { |
| | | this.$message.error('文件上传失败') |
| | | } |
| | | // Component will show file.url as link |
| | | file.url = res.data.fileUrl |
| | | } |
| | | } |
| | | } |
| | | return file |
| | | }); |
| | | this.fileList = fileList; |
| | | }, |
| | | removeFile(file) { |
| | | if(this.dialogStatus == 'create'){ |
| | | this.delList.push(file.response.data.id) |
| | | }else { |
| | | this.delList.push(file.uid) |
| | | } |
| | | }, |
| | | async deleteFile() { |
| | | const t = this |
| | | for (let i of t.delList) { |
| | | const res = await deleteFile(i) |
| | | if (res.data.code == 100) { |
| | | console.log('文件删除成功') |
| | | } else { |
| | | t.$message.error(res.data.msg) |
| | | } |
| | | } |
| | | }, |
| | | downloadFile(file){ |
| | | const t = this |
| | | const { baseUrl } = require('../../../config/env.' + process.env.NODE_ENV) |
| | | axios.get(baseUrl + file.url,{headers:{'Content-Type': 'application/json','tk': `${Cookies.get('resTk')}`,'uid':`${Cookies.get('resUid')}`},responseType: 'blob'}).then(res=>{ |
| | | if (res) { |
| | | const link = document.createElement('a') |
| | | let blob = new Blob([res.data],{type: res.data.type}) |
| | | link.style.display = "none"; |
| | | link.href = URL.createObjectURL(blob); // 创建URL |
| | | window.open(link.href) |
| | | // link.setAttribute("download", file.name); |
| | | // document.body.appendChild(link); |
| | | // link.click(); |
| | | // document.body.removeChild(link); |
| | | } else { |
| | | this.$message.error('获取文件失败') |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | onSubmit() { |
| | | this.$refs.dataForm.validate(async valid => { |
| | | if (valid) { |
| | | console.log("file",this.fileList) |
| | | if(this.fileList.length == 0){ |
| | | this.$message.error('请上传附件'); |
| | | return; |
| | | } |
| | | if(this.fileList[0].response){ |
| | | this.dataForm.attachmentId = this.fileList[0].response.data.id; |
| | | } |
| | | if(this.dialogStatus == 'create') { |
| | | const param = { |
| | | attachmentId: this.dataForm.attachmentId, |
| | | remark: this.dataForm.remark, |
| | | version: this.dataForm.version |
| | | } |
| | | const res = await addApp(param); |
| | | if (res.data.code == 100) { |
| | | this.$message.success('新增成功'); |
| | | this.dialogFormVisible = false; |
| | | await this.getList(); |
| | | } else { |
| | | this.$message.warning(res.data.msg); |
| | | } |
| | | |
| | | }else if(this.dialogStatus == 'editor'){ |
| | | const param = { |
| | | id: this.dataForm.id, |
| | | attachmentId: this.dataForm.attachmentId, |
| | | remark: this.dataForm.remark, |
| | | version: this.dataForm.version |
| | | } |
| | | const res = await updateApp(param); |
| | | if (res.data.code == 100) { |
| | | this.$message.success('编辑成功'); |
| | | this.dialogFormVisible = false; |
| | | await this.getList(); |
| | | } else { |
| | | this.$message.warning(res.data.msg); |
| | | } |
| | | } |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | clearMod(){ |
| | | this.fileList = [] |
| | | this.$refs.dataForm.clearValidate() |
| | | this.$refs.dataForm.resetFields() |
| | | }, |
| | | resetDataForm() { |
| | | this.dataForm = { |
| | | id: '', |
| | | filename:'', |
| | | fileurl:'', |
| | | version:'', |
| | | remark:'', |
| | | } |
| | | }, |
| | | |
| | | async deleteHandle(row){ |
| | | const t = this |
| | | this.$confirm({ |
| | | title: '提示', |
| | | content: h => <div>是否删除该条信息?</div>, |
| | | cancelText: '取消', |
| | | okText: '确认', |
| | | centered: true, |
| | | onOk() { |
| | | const param = { |
| | | id: row.id |
| | | } |
| | | delApp(param).then(res => { |
| | | if(res.data.code == 100){ |
| | | t.$message.success('删除信息成功'); |
| | | t.getList() |
| | | }else{ |
| | | t.$message.warning(res.data.msg); |
| | | } |
| | | }) |
| | | }, |
| | | onCancel() { |
| | | console.log('Cancel'); |
| | | }, |
| | | }); |
| | | }, |
| | | |
| | | resetSearch(){ |
| | | const t = this |
| | | t.areaVal = [] |
| | | t.search = { |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | | searchParams:{ |
| | | realName: '', |
| | | districtId: null, |
| | | unittype: null |
| | | } |
| | | } |
| | | t.getUserList() |
| | | }, |
| | | |
| | | onPageChange(page, pageSize) { |
| | | const t= this |
| | | t.pagination.current = page |
| | | t.search.pageIndex = page |
| | | t.getUserList() |
| | | }, |
| | | onChange(value) { |
| | | const t = this |
| | | t.search.searchParams.districtId = value[value.length - 1] |
| | | }, |
| | | findAreaById(data,value) { |
| | | for (const node of data) { |
| | | if (node.value === value) { |
| | | return node.label; |
| | | } |
| | | if (node.children) { |
| | | const foundLabel = this.findAreaById(node.children, value); |
| | | if (foundLabel) { |
| | | return foundLabel; |
| | | } |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | | .delBtn{ |
| | | color: @danger |
| | | } |
| | | </style> |