Kaynağa Gözat

文件上传

chris 3 yıl önce
ebeveyn
işleme
28cbea9267

+ 9 - 1
src/api/file.js

@@ -1,4 +1,12 @@
 import request from '@/utils/httpRequest'
 
-export const uploadUrl = request.adornUrl('/file-service/minio-file/files-upload')
+export const uploadUrl = request.adornUrl('/file-service/minio-file/file-upload')
 export const downloadUrl = request.adornUrl('/file-service/minio-file/download/')
+
+export function uploadFiles (data) {
+  return request({
+    url: request.adornUrl(`/file-service/minio-file/files-upload`),
+    method: 'post',
+    data
+  })
+}

+ 43 - 39
src/views/modules/cus/communicate-add-or-update.vue

@@ -56,11 +56,11 @@
           v-show="!display"
           class="upload-demo"
           ref="upload"
-          multiple
-          :action="uploadUrl"
+          :multiple="true"
+          action=""
           :on-preview="handlePreview"
           :on-remove="handleRemove"
-          :on-success="handleSuccess"
+          :on-change="handleChange"
           :file-list="fileList"
           :auto-upload="false">
           <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
@@ -149,7 +149,7 @@
 <script>
   import templateChose from '../warehouse/template-chose'
   import { getType, getCustomer, getCoDetail } from '@/api/cus'
-  import { uploadUrl, downloadUrl } from '@/api/file'
+  import { uploadUrl, downloadUrl, uploadFiles } from '@/api/file'
   export default {
     name: 'communicate-add-or-update',
     components: {templateChose},
@@ -170,14 +170,7 @@
         fileList: [],
         id: 0,
         cusRCommProductVOS: [],
-        dataForm: {
-          // notes: '',
-          // cusId: '',
-          // coType: '',
-          // name: '',
-          // attachList: [],
-          // cusRCommProductVOS: []
-        },
+        dataForm: {},
         dataRule: {
           cusId: [{ required: true, message: '客户名称不能为空', trigger: 'blur' }],
           coType: [{ required: true, message: '沟通类别不能为空', trigger: 'change' }],
@@ -218,24 +211,42 @@
         await getCoDetail(this.id).then(({data}) => {
           if (data && data.code === '200') {
             this.dataForm = data.data
+            // 附件显示
+            this.fileList = []
+            data.data.attachList.forEach((item) => {
+              this.fileList.push({
+                name: item.fileName,
+                url: item.url,
+                id: item.url
+              })
+            })
+            console.log('this.fileList = ' + JSON.stringify(this.fileList))
           }
         })
       },
       submitUpload () {
-        this.$refs.upload.submit()
+        // this.$refs.upload.submit()
+        if (this.fileList.length === 0) {
+          return this.$message.warning('请选取文件后再上传')
+        }
+        const formData = new FormData()
+        this.fileList.forEach((file) => {
+          formData.append('file', file.raw)
+        })
+        uploadFiles(formData).then(({data}) => {
+          if (data && data.code === '200') {
+            data.data.forEach((item) => {
+              let fileData = this.fileList.find((file) => file.name === item.originFileName)
+              fileData.url = item.fileUrl
+            })
+            this.$message.success('上传成功')
+          } else {
+            this.$message.error('上传失败')
+          }
+        })
       },
       handleRemove (file, fileList) {
-        let _tmp = this.fileList
-        // eslint-disable-next-line one-var
-        let i = 0, len = _tmp.length
-        for (; i < len; i++) {
-          // eslint-disable-next-line no-cond-assign
-          if (_tmp[i].name === file.name) {
-            _tmp.splice(i, 1)
-            break
-          }
-        }
-        this.fileList = _tmp
+        this.fileList = fileList
       },
       handlePreview (file) {
         if (file && file.url) {
@@ -245,28 +256,21 @@
           this.previewVisible = true
         }
       },
-      handleSuccess (response, file, fileList) {
-        if (response && response.code === '200') {
-          let lst = response.data
-          for (let i = 0; i < lst.length; i++) {
-            this.fileList.push({
-              name: lst[i].originFileName,
-              url: lst[i].fileUrl
-            })
-          }
-        }
+      handleChange (file, fileList) {
+        this.fileList = fileList
       },
       // 表单提交
       dataFormSubmit () {
         this.$refs['dataForm'].validate((valid) => {
           if (valid) {
-            console.log('fileList = ' + this.fileList)
-            if (this.fileList.length > 0) {
-              let fList = this.fileList
+            let fList = this.fileList
+            console.log('fileList = ' + fList)
+            if (fList.length > 0) {
+              this.dataForm.attachList = []
               for (let i = 0; i < fList.length; i++) {
                 this.dataForm.attachList.push({
-                  fileName: fList[i].originFileName,
-                  url: fList[i].fileUrl
+                  fileName: fList[i].name,
+                  url: fList[i].url
                 })
               }
             }

+ 116 - 0
src/views/modules/notice/list.vue

@@ -0,0 +1,116 @@
+<template>
+  <div class="stock">
+    <el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
+      <el-form-item label="标题">
+        <el-input v-model="dataForm.title" placeholder="请输入标题" clearable/>
+      </el-form-item>
+      <el-form-item label="创建时间">
+        <el-date-picker
+          v-model="dataForm.date"
+          value-format="yyyy-MM-dd"
+          type="daterange"
+          range-separator="至"
+          start-placeholder="开始时间"
+          end-placeholder="结束时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button @click="getDataList()">查询</el-button>
+        <el-button type="primary" @click="addOrUpdateHandle(0, false)">发布公告</el-button>
+      </el-form-item>
+    </el-form>
+    <el-table
+      :data="dataList"
+      border
+      v-loading="dataListLoading"
+      style="width: 100%;">
+      <el-table-column
+        label="序号"
+        type="index"
+        width="50"
+        align="center">
+      </el-table-column>
+      <el-table-column
+        prop="coCode"
+        header-align="center"
+        align="center"
+        label="公告主题名称">
+      </el-table-column>
+      <el-table-column
+        prop="customerName"
+        header-align="center"
+        align="center"
+        label="客户名称">
+      </el-table-column>
+      <el-table-column
+        prop="contact"
+        header-align="center"
+        align="center"
+        label="联系人">
+      </el-table-column>
+      <el-table-column
+        prop="bizManagerName"
+        header-align="center"
+        align="center"
+        label="对接业务员">
+      </el-table-column>
+      <el-table-column
+        prop="coType"
+        header-align="center"
+        align="center"
+        label="沟通类别">
+      </el-table-column>
+      <el-table-column
+        prop="createTime"
+        header-align="center"
+        align="center"
+        label="创建时间">
+      </el-table-column>
+      <el-table-column
+        prop="notes"
+        header-align="center"
+        align="center"
+        label="备注">
+      </el-table-column>
+      <el-table-column
+        prop="-"
+        header-align="center"
+        align="center"
+        label="附件">
+      </el-table-column>
+      <el-table-column
+        fixed="right"
+        header-align="center"
+        align="center"
+        width="150"
+        label="操作">
+        <template slot-scope="scope">
+          <el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.coId, true)">查看</el-button>
+          <el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.coId, false)">编辑</el-button>
+          <el-button style="color: red" type="text" size="small" @click="deleteHandle(scope.row.coId)">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination
+      @size-change="sizeChangeHandle"
+      @current-change="currentChangeHandle"
+      :current-page="pageIndex"
+      :page-sizes="[10, 20, 50, 100]"
+      :page-size="pageSize"
+      :total="totalPage"
+      layout="total, sizes, prev, pager, next, jumper">
+    </el-pagination>
+    <!-- 弹窗, 新增 / 修改 -->
+    <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'list.vue'
+  }
+</script>
+
+<style scoped>
+
+</style>