diff --git a/ruoyi-ui/src/api/official/partnerSupplier.js b/ruoyi-ui/src/api/official/partnerSupplier.js index 442d858..86a9320 100644 --- a/ruoyi-ui/src/api/official/partnerSupplier.js +++ b/ruoyi-ui/src/api/official/partnerSupplier.js @@ -15,4 +15,12 @@ export function delPartnerSupplier(id) { url: '/official/companymessage/' + id, method: 'delete' }) +} + +export function downFile(url) { + return request({ + url: '/system/oss/download?imageUrl='+ url, + method: 'get', + responseType: 'blob', + }) } \ No newline at end of file diff --git a/ruoyi-ui/src/views/official/businessPartner/index.vue b/ruoyi-ui/src/views/official/businessPartner/index.vue index 755563f..69db90a 100644 --- a/ruoyi-ui/src/views/official/businessPartner/index.vue +++ b/ruoyi-ui/src/views/official/businessPartner/index.vue @@ -3,12 +3,7 @@ <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="120px"> <el-form-item label="公司名称(个人)" prop="companyName"> - <el-input - v-model="queryParams.companyName" - placeholder="请输入公司名称(个人)" - clearable - @keyup.enter.native="handleQuery" - /> + <el-input v-model="queryParams.companyName" placeholder="请输入公司名称(个人)" clearable @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item> @@ -19,37 +14,36 @@ <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> - <el-button - type="danger" - plain - icon="el-icon-delete" - size="mini" - :disabled="multiple" - @click="handleDelete" - v-hasPermi="['official:businessPartner:remove']" - >删除</el-button> + <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['official:businessPartner:remove']">删除</el-button> </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> </el-row> <el-table v-loading="loading" :data="slideshowList" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55" align="center" /> - <el-table-column label="主键id" align="center" prop="id" v-if="false"/> + <el-table-column label="主键id" align="center" prop="id" v-if="false" /> <el-table-column label="公司名称(个人)" width="130" align="center" prop="companyName" /> <el-table-column label="地址" width="230" align="center" prop="address" /> <el-table-column label="联系电话" width="110" align="center" prop="phoneNumber" /> <el-table-column label="电子邮箱" width="180" align="center" prop="email" /> - <el-table-column label="擅长方向" align="center" prop="fieldType" /> - <el-table-column label="优势概念" align="center" prop="advantageConcept"> + <el-table-column label="擅长方向" width="320" align="center" prop="fieldType" /> + <el-table-column label="优势概念" width="320" align="center" prop="advantageConcept"> <template slot-scope="{ row }"> <div class="multiple-line-content-show" style="cursor: pointer;" @click="dialogContent(row.advantageConcept, '优势概念')" v-html="row.advantageConcept"></div> </template> </el-table-column> - <el-table-column label="合作意向概述" align="center" prop="cooperationIntention"> + <el-table-column label="合作意向概述" width="320" align="center" prop="cooperationIntention"> <template slot-scope="{ row }"> <div class="multiple-line-content-show" style="cursor: pointer;" @click="dialogContent(row.cooperationIntention, '合作意向概述')" v-html="row.cooperationIntention"></div> </template> </el-table-column> + <el-table-column label="附件" width="400" align="center" prop="imageurl"> + <template slot-scope="{ row }" v-if="row.imageurl"> + <div class="line-content-show" style="cursor: pointer;" v-for="(url, index) in row.imageurl.split(',')" :key="'file'+ index" @click="handleDownFile(url)"> + {{ getFileName(url) }} + </div> + </template> + </el-table-column> <el-table-column label="创建时间" align="center" prop="createTime" width="180"> <template slot-scope="scope"> <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> @@ -57,141 +51,168 @@ </el-table-column> <el-table-column label="操作" width="100" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> - <el-button - size="mini" - type="text" - icon="el-icon-delete" - @click="handleDelete(scope.row)" - v-hasPermi="['official:businessPartner:remove']" - >删除</el-button> + <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['official:businessPartner:remove']">删除</el-button> </template> </el-table-column> </el-table> - <pagination - v-show="total>0" - :total="total" - :page.sync="queryParams.pageNum" - :limit.sync="queryParams.pageSize" - @pagination="getList" - /> + <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> </div> </template> <script> -import { listPartnerSupplier, delPartnerSupplier } from "@/api/official/partnerSupplier"; + import { + listPartnerSupplier, + delPartnerSupplier, + downFile + } from '@/api/official/partnerSupplier' -export default { - name: "FeedBack", - data() { - return { - // 按钮loading - buttonLoading: false, - // 遮罩层 - loading: true, - // 选中数组 - ids: [], - // 非单个禁用 - single: true, - // 非多个禁用 - multiple: true, - // 显示搜索条件 - showSearch: true, - // 总条数 - total: 0, - // 表格数据 - slideshowList: [], - // 是否显示弹出层 - open: false, - // 查询参数 - queryParams: { - pageNum: 1, - pageSize: 10, - propertiesType: 1, - companyName: undefined, + export default { + name: 'FeedBack', + data() { + return { + // 按钮loading + buttonLoading: false, + // 遮罩层 + loading: true, + // 选中数组 + ids: [], + // 非单个禁用 + single: true, + // 非多个禁用 + multiple: true, + // 显示搜索条件 + showSearch: true, + // 总条数 + total: 0, + // 表格数据 + slideshowList: [], + // 是否显示弹出层 + open: false, + // 查询参数 + queryParams: { + pageNum: 1, + pageSize: 10, + propertiesType: 1, + companyName: undefined + } + } + }, + created() { + this.getList() + }, + methods: { + // 获取文件名称 + getFileName(name) { + // 如果是url那么取最后的名字 如果不是直接返回 + if (name.lastIndexOf('/') > -1) { + return name.slice(name.lastIndexOf('/') + 1) + } else { + return name + } }, - }; - }, - created() { - this.getList(); - }, - methods: { - /** 查询新闻信息 -列表 */ - getList() { - this.loading = true; - listPartnerSupplier(this.queryParams).then(response => { - this.slideshowList = response.rows; - this.total = response.total; - this.loading = false; - }); - }, - // 取消按钮 - cancel() { - this.open = false; - this.reset(); - }, - // 表单重置 - reset() { - this.form = { - id: undefined, - captionName: undefined, - }; - this.resetForm("form"); - }, - /** 搜索按钮操作 */ - handleQuery() { - this.queryParams.pageNum = 1; - this.getList(); - }, - /** 重置按钮操作 */ - resetQuery() { - this.resetForm("queryForm"); - this.handleQuery(); - }, - // 多选框选中数据 - handleSelectionChange(selection) { - this.ids = selection.map(item => item.id) - this.single = selection.length!==1 - this.multiple = !selection.length - }, - /** 删除按钮操作 */ - handleDelete(row) { - const ids = row.id || this.ids; - this.$modal.confirm('是否确认删除编号为"' + ids + '"的数据项?').then(() => { - this.loading = true; - return delPartnerSupplier(ids); - }).then(() => { - this.loading = false; - this.getList(); - this.$modal.msgSuccess("删除成功"); - }).catch(() => { - }).finally(() => { - this.loading = false; - }); - }, - dialogContent(feedContent, title) { - this.$alert(feedContent, title, { - confirmButtonText: '确定', - callback: action => {} - }); + handleDownFile(url) { + downFile(url).then(res => { + // 通过a标签打开新页面下载文件 + const downLoadName = this.getFileName(url) + const a = document.createElement('a') + a.href = URL.createObjectURL(res) + // a标签里有download属性可以自定义文件名 + a.setAttribute('download', downLoadName) + document.body.appendChild(a) + a.click() + document.body.removeChild(a) + }) + }, + /** 查询新闻信息 + 列表 */ + getList() { + this.loading = true + listPartnerSupplier(this.queryParams).then(response => { + this.slideshowList = response.rows + this.total = response.total + this.loading = false + }) + }, + // 取消按钮 + cancel() { + this.open = false + this.reset() + }, + // 表单重置 + reset() { + this.form = { + id: undefined, + captionName: undefined + } + this.resetForm('form') + }, + /** 搜索按钮操作 */ + handleQuery() { + this.queryParams.pageNum = 1 + this.getList() + }, + /** 重置按钮操作 */ + resetQuery() { + this.resetForm('queryForm') + this.handleQuery() + }, + // 多选框选中数据 + handleSelectionChange(selection) { + this.ids = selection.map(item => item.id) + this.single = selection.length !== 1 + this.multiple = !selection.length + }, + /** 删除按钮操作 */ + handleDelete(row) { + const ids = row.id || this.ids + this.$modal + .confirm('是否确认删除编号为"' + ids + '"的数据项?') + .then(() => { + this.loading = true + return delPartnerSupplier(ids) + }) + .then(() => { + this.loading = false + this.getList() + this.$modal.msgSuccess('删除成功') + }) + .catch(() => {}) + .finally(() => { + this.loading = false + }) + }, + dialogContent(feedContent, title) { + this.$alert(feedContent, title, { + confirmButtonText: '确定', + callback: action => {} + }) + } } } -}; </script> <style scoped lang="scss"> -::v-deep .multiple-line-content-show p { - margin: 0; -} -// 修改对话框高度 -::v-deep .el-dialog { - height: 92%; - overflow: hidden; -} -::v-deep .el-dialog__body { - padding: 30px 20px 0; - height: 89%; - overflow-y: auto; -} + ::v-deep .multiple-line-content-show p { + margin: 0; + } + .line-content-show { + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 1; + white-space: pre-wrap; + text-align: left; + } + // 修改对话框高度 + ::v-deep .el-dialog { + height: 92%; + overflow: hidden; + } + ::v-deep .el-dialog__body { + padding: 30px 20px 0; + height: 89%; + overflow-y: auto; + } </style> diff --git a/ruoyi-ui/src/views/official/supplier/index.vue b/ruoyi-ui/src/views/official/supplier/index.vue index 313081a..46c465e 100644 --- a/ruoyi-ui/src/views/official/supplier/index.vue +++ b/ruoyi-ui/src/views/official/supplier/index.vue @@ -60,6 +60,13 @@ <div class="multiple-line-content-show" style="cursor: pointer;" @click="dialogContent(row.cooperationIntention, '合作意向概述')" v-html="row.cooperationIntention"></div> </template> </el-table-column> + <el-table-column label="附件" width="400" align="center" prop="imageurl"> + <template slot-scope="{ row }" v-if="row.imageurl"> + <div class="line-content-show" style="cursor: pointer;" v-for="(url, index) in row.imageurl.split(',')" :key="'file'+ index" @click="handleDownFile(url)"> + {{ getFileName(url) }} + </div> + </template> + </el-table-column> <el-table-column label="创建时间" align="center" prop="createTime" width="180"> <template slot-scope="scope"> <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> @@ -89,7 +96,7 @@ </template> <script> -import { listPartnerSupplier, delPartnerSupplier } from "@/api/official/partnerSupplier"; +import { listPartnerSupplier, delPartnerSupplier, downFile } from "@/api/official/partnerSupplier"; export default { name: "FeedBack", @@ -126,6 +133,28 @@ export default { this.getList(); }, methods: { + // 获取文件名称 + getFileName(name) { + // 如果是url那么取最后的名字 如果不是直接返回 + if (name.lastIndexOf('/') > -1) { + return name.slice(name.lastIndexOf('/') + 1) + } else { + return name + } + }, + handleDownFile(url) { + downFile(url).then(res => { + // 通过a标签打开新页面下载文件 + const downLoadName = this.getFileName(url) + const a = document.createElement('a') + a.href = URL.createObjectURL(res) + // a标签里有download属性可以自定义文件名 + a.setAttribute('download', downLoadName) + document.body.appendChild(a) + a.click() + document.body.removeChild(a) + }) + }, /** 查询新闻信息 列表 */ getList() { @@ -194,6 +223,15 @@ export default { ::v-deep .multiple-line-content-show p { margin: 0; } +.line-content-show { + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 1; + white-space: pre-wrap; + text-align: left; +} // 修改对话框高度 ::v-deep .el-dialog { height: 92%;