caojunjie пре 3 година
родитељ
комит
50575514b3

+ 7 - 0
src/api/user.js

@@ -93,3 +93,10 @@ export const clearCache = () => request({
   url: '/api/blade-auth/oauth/clear-cache',
   method: 'get'
 });
+export const sharedDeletion = (url,id) => request({
+  url: url,
+  method: 'post',
+  params: {
+    ids:id
+  }
+});

+ 239 - 0
src/components/upload/index.vue

@@ -0,0 +1,239 @@
+<template>
+  <basic-container>
+    <avue-crud :data="data" ref="crud" :option="option" @row-save="rowSave">
+      <template slot="menuLeft">
+        <el-button type="primary"
+                   size="small"
+                   icon="el-icon-edit"
+                   @click="addDetail">上传
+        </el-button>
+      </template>
+      <template slot="url" slot-scope="{ row }">
+        <el-input placeholder="请输入内容" size="small" v-if="row.$cellEdit" v-model="row.url" class="input-with-select">
+          <el-button slot="append" @click="singleLineUpload(row)">附件</el-button>
+        </el-input>
+        <span v-else>{{ row.url }}</span>
+      </template>
+      <template slot-scope="scope" slot="menu">
+        <el-button icon="el-icon-download" :size="scope.size" :type="scope.type" @click="download(scope)">下载附件
+        </el-button>
+        <el-button
+            :type="scope.type"
+            :size="scope.size"
+            icon="el-icon-edit"
+            @click.stop="rowCell(scope.row,scope.index)"
+        > {{ scope.row.$cellEdit ? '修改完成' : '修改' }}
+        </el-button>
+        <el-button
+            :type="scope.type"
+            :size="scope.size"
+            icon="el-icon-delete"
+            @click.stop="rowDel(scope.row,scope.index)"
+        >删除
+        </el-button>
+      </template>
+    </avue-crud>
+    <el-dialog
+        title="上传附件"
+        append-to-body
+        :visible.sync="excelBox"
+        width="555px"
+        v-dialog-drag>
+      <el-upload
+          class="upload-demo"
+          drag
+          style="text-align: center"
+          ref="upload"
+          :action="incomingAction?incomingAction:action"
+          :headers="headers"
+          :on-success="onSuccess"
+          multiple>
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <div class="el-upload__tip" slot="tip">如上传文件过大,请耐心等待上传成功</div>
+      </el-upload>
+    </el-dialog>
+    <el-dialog
+        title="修改附件"
+        append-to-body
+        :visible.sync="excelTwo"
+        width="555px"
+        v-dialog-drag>
+      <el-upload
+          class="upload-demo"
+          drag
+          style="text-align: center"
+          :action="incomingAction?incomingAction:action"
+          :headers="headers"
+          :show-file-list="false"
+          :on-success="onSuccessTwo">
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <div class="el-upload__tip" slot="tip">如上传文件过大,请耐心等待上传成功</div>
+      </el-upload>
+    </el-dialog>
+    <el-dialog
+        width="80%"
+        title="附件"
+        :visible.sync="innerVisible"
+        append-to-body>
+      <div style="width: 50%;height: 50%;margin: 0 auto">
+        <img :src="imgUrl" alt="" style="width: 100%;height: 100%;">
+      </div>
+    </el-dialog>
+  </basic-container>
+</template>
+
+<script>
+import {getToken} from "@/util/auth";
+import {sharedDeletion} from "@/api/user";
+
+export default {
+  name: "index",
+  props: {
+    data: {
+      type: Object
+    },
+    incomingAction: {
+      type: String
+    },
+    deleteUrl: {
+      type: String
+    }
+  },
+  data() {
+    return {
+      excelBox: false,
+      excelTwo: false,
+      innerVisible: false,
+      form: {},
+      imgUrl: '',
+      action: '/api/blade-resource/oss/endpoint/put-file',
+      headers: {"Blade-Auth": 'Bearer ' + getToken()},
+      option: {
+        dialogDrag: true,
+        index: true,
+        refreshBtn: false,
+        cellBtn: false,
+        cancelBtn: false,
+        delBtn: false,
+        editBtn: false,
+        addBtn: false,
+        align: "center",
+        column: [
+          {
+            label: '文件名称',
+            prop: 'fileName',
+            index: 1,
+            width: 140,
+            cell: true,
+            overHidden: true
+          }, {
+            label: '文件地址',
+            prop: 'url',
+            index: 2,
+            overHidden: true
+          }, {
+            type: "select",
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=file_type",
+            props: {
+              label: "dictValue",
+              value: "dictValue"
+            },
+            label: "文件属性",
+            prop: "paymentType",
+            search: false,
+            index: 3,
+            width: 140,
+            overHidden: true,
+            cell: true
+          }, {
+            label: '备注',
+            prop: 'remarks',
+            index: 4,
+            cell: true,
+            overHidden: true
+          }
+        ]
+      },
+      uploadCount: 0,
+    }
+  },
+  methods: {
+    //新增上传成功
+    onSuccess(response, file, fileList) {
+      this.$refs.crud.rowCellAdd({
+        fileName: response.data.originalName,
+        url: response.data.link
+      })
+      this.uploadCount++
+      if (this.uploadCount === fileList.length) {
+        this.$refs.upload.clearFiles()
+        this.excelBox = false
+        this.uploadCount = 0
+      }
+    },
+    //修改上传成功
+    onSuccessTwo(response) {
+      this.form.fileName = response.data.originalName
+      this.form.url = response.data.link
+      this.data[this.form.$index] = this.form
+      this.excelTwo = false
+    },
+    //单行上传
+    singleLineUpload(row) {
+      this.form = row
+      this.excelTwo = true
+    },
+    //开启批量上传
+    addDetail() {
+      this.excelBox = true
+    },
+    //下载附件
+    download(scope) {
+      console.log(scope.row.url)
+      if (scope.row.url) {
+        if (scope.row.fileName.substring(scope.row.fileName.lastIndexOf(".")) === '.jpg' || scope.row.fileName.substring(scope.row.fileName.lastIndexOf(".")) === '.png' || scope.row.fileName.substring(scope.row.fileName.lastIndexOf(".")) === '.JPG' || scope.row.fileName.substring(scope.row.fileName.lastIndexOf(".")) === '.PNG') {
+          this.imgUrl = scope.row.url
+          this.innerVisible = true
+        } else {
+          window.open(scope.row.url);
+        }
+      } else {
+        this.$message.error("请上传附件");
+      }
+    },
+    //修改触发
+    rowCell(row, index) {
+      if (row.$cellEdit == true) {
+        this.$set(row, "$cellEdit", false);
+      } else {
+        this.$set(row, "$cellEdit", true);
+      }
+      // this.$refs.crud.rowCell(row, index)
+    },
+    rowDel(row, index) {
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        if (row.id) {
+          sharedDeletion(this.deleteUrl, row.id).then(res => {
+            if (res.data.success) {
+              this.$message.success("操作成功!")
+              this.data.splice(index, 1);
+            }
+          })
+        } else {
+          this.data.splice(index, 1);
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 3 - 0
src/main.js

@@ -107,6 +107,9 @@ Vue.component('containerTitle', containerTitle);
 //注册echarts图表
 import * as echarts from 'echarts';
 Vue.prototype.$echarts = echarts
+//上传组件upload
+import cUpload from './components/upload'
+Vue.component('cUpload', cUpload)
 // 加载相关url地址
 Object.keys(urls).forEach(key => {
   Vue.prototype[key] = urls[key];

+ 3 - 5
src/views/businessManagement/salesOrder/detailsPageEdit.vue

@@ -505,8 +505,7 @@
                 size="small"
                 @click.stop="$refs.uploadCrud.rowAdd()"
                 :disabled="detailData.seeDisabled || browse"
-              >上传</el-button
-              >
+              >上传</el-button>
             </template>
             <template slot="menu" slot-scope="{ row, index }">
               <el-button
@@ -593,11 +592,9 @@
       <span slot="footer" class="dialog-footer">
           <el-button @click="dialogVisible = false">取 消</el-button>
           <el-button type="primary" @click="importGoods" v-if="commodityData !== true">导入</el-button>
-          <el-button type="primary" @click="importChoice" v-if="commodityData === true"
-                     :disabled="tableData.length !== 1">导入</el-button>
+          <el-button type="primary" @click="importChoice" v-if="commodityData === true" :disabled="tableData.length !== 1">导入</el-button>
         </span>
     </el-dialog>
-
     <el-dialog
         title="导入政策"
         append-to-body
@@ -793,6 +790,7 @@
       >
       </check-schedule>
     </el-dialog>
+    <c-upload :data="[]"></c-upload>
   </div>
 </template>