From ea81762709db76159f8c0cdb7841b067be5857d5 Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期五, 16 六月 2023 15:58:34 +0800
Subject: [PATCH] 文件列表展示

---
 Source/UBCS-WEB/src/api/resource/file.js                    |   74 +++++++
 Source/UBCS-WEB/src/components/file/main.vue                |  325 ++++++++++++++++++++++++++++++++
 Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue |    1 
 Source/UBCS-WEB/src/components/file/inHtml.vue              |   26 ++
 Source/UBCS-WEB/src/views/MasterData/FormTempalteTest.vue   |  110 ++++++-----
 Source/UBCS-WEB/src/components/file/inDialog.vue            |   40 ++++
 6 files changed, 526 insertions(+), 50 deletions(-)

diff --git a/Source/UBCS-WEB/src/api/resource/file.js b/Source/UBCS-WEB/src/api/resource/file.js
new file mode 100644
index 0000000..bd737e9
--- /dev/null
+++ b/Source/UBCS-WEB/src/api/resource/file.js
@@ -0,0 +1,74 @@
+import request from '@/router/axios';
+
+export const getList = (page, limit, params) => {
+  return request({
+    url: '/api/ubcs-resource/fileController/listFiles',
+    method: 'get',
+    params: {
+      ...params,
+      page,
+      limit
+    }
+  })
+}
+
+export const remove = (oids) => {
+  return request({
+    url: '/api/ubcs-resource/fileController/deleteFile',
+    method: 'post',
+    params: {
+      oids
+    }
+  })
+}
+
+export const upload = (row) => {
+  return request({
+    url: '/api/ubcs-resource/fileController/uploadFile',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/ubcs-resource/fileController/uploadFile',
+    method: 'post',
+    data: row
+  })
+}
+
+export const download = (oids) => {
+  return request({
+    url: '/api/ubcs-resource/fileController/downloadFilesByOids',
+    method: 'get',
+    params: {
+      oids
+    }
+  })
+}
+
+/**
+ * 浣跨敤鏂囦欢涓婚敭鑾峰彇瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏂囦欢鏄剧ず瀵硅薄
+ */
+export const getFile = (oid) => {
+  return request({
+    url: '/api/ubcs-resource/fileController/get',
+    method: 'get',
+    params: {
+      oid
+    }
+  })
+}
+
+export const listFilesByOids = (oids) => {
+  return request({
+    url: '/api/ubcs-resource/fileController/listFilesByOids',
+    method: 'get',
+    params: {
+      oids
+    }
+  })
+}
diff --git a/Source/UBCS-WEB/src/components/file/inDialog.vue b/Source/UBCS-WEB/src/components/file/inDialog.vue
new file mode 100644
index 0000000..ffa15f5
--- /dev/null
+++ b/Source/UBCS-WEB/src/components/file/inDialog.vue
@@ -0,0 +1,40 @@
+<template>
+  <div>
+  <el-dialog :title="options.title|| '闄勪欢绠$悊'"
+             :visible.sync="visible"
+             append-to-body
+             class="avue-dialog avue-dialog--top"
+             @close="close"
+             top="0"
+             :width="options.width|| '80%'">
+    <fileContent
+      :options="options"
+    ></fileContent>
+  </el-dialog>
+  </div>
+</template>
+
+<script>
+import fileContent from './main.vue';
+export default {
+  name: "inDialog",
+  components: { fileContent },
+  props: ["options","visible"],
+  data(){
+    return{
+
+    }
+  },
+  computed: {
+  },
+  methods:{
+    close(){
+      this.$emit("close", false);
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/Source/UBCS-WEB/src/components/file/inHtml.vue b/Source/UBCS-WEB/src/components/file/inHtml.vue
new file mode 100644
index 0000000..66eddf1
--- /dev/null
+++ b/Source/UBCS-WEB/src/components/file/inHtml.vue
@@ -0,0 +1,26 @@
+<template>
+  <basic-container>
+    <fileContent
+      :options="options"
+    ></fileContent>
+  </basic-container>
+</template>
+
+<script>
+import fileContent from './main.vue';
+export default {
+  name: "inHtml",
+  components: { fileContent },
+  props: ["options"],
+  data(){
+    return{
+    }
+  },
+  computed: {
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/Source/UBCS-WEB/src/components/file/main.vue b/Source/UBCS-WEB/src/components/file/main.vue
new file mode 100644
index 0000000..04d3498
--- /dev/null
+++ b/Source/UBCS-WEB/src/components/file/main.vue
@@ -0,0 +1,325 @@
+<template>
+  <basic-container>
+    <avue-crud :option="option"
+               :table-loading="loading"
+               :data="data"
+               :page.sync="page"
+               :permission="permissionList"
+               :before-open="beforeOpen"
+               v-model="form"
+               ref="crud"
+               @row-del="rowDel"
+               @search-change="searchChange"
+               @search-reset="searchReset"
+               @selection-change="selectionChange"
+               @current-change="currentChange"
+               @size-change="sizeChange"
+               @refresh-change="refreshChange"
+               @on-load="onLoad">
+      <template slot="menuLeft">
+        <el-button type="primary"
+                   size="small"
+                   plain
+                   icon="el-icon-upload2"
+                   @click="handleUpload">涓� 浼�
+        </el-button>
+        <el-button type="primary"
+                   size="small"
+                   plain
+                   icon="el-icon-edit"
+                   @click="handleEdit">淇� 鏀�
+        </el-button>
+        <el-button type="danger"
+                   size="small"
+                   icon="el-icon-delete"
+                   plain
+                   @click="handleDelete">鍒� 闄�
+        </el-button>
+      </template>
+      <template slot-scope="scope" slot="menu">
+        <el-button type="text"
+                   icon="el-icon-download"
+                   size="small"
+                   @click="handleDownload(scope.row)">涓嬭浇
+        </el-button>
+      </template>
+    </avue-crud>
+    <el-dialog title="涓婁紶闄勪欢鍒楄〃"
+               append-to-body
+               :visible.sync="attachBox"
+               width="555px">
+      <avue-form ref="form" :option="attachOption" v-model="attachForm" :upload-before="uploadBefore" :upload-after="uploadAfter" :upload-error="uploadError">
+      </avue-form>
+    </el-dialog>
+  </basic-container>
+</template>
+
+<script>
+import {getList, getFile,upload,update, remove,download} from "@/api/resource/file";
+import {mapGetters} from "vuex";
+import {dateFormat} from "@/util/date";
+
+export default {
+  props: ["options","visible"],
+  data() {
+    return {
+      form: {},
+      query: {},
+      params:{},
+      loading: false,
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      attachBox: false,
+      selectionList: [],
+      option: {
+        height: 'auto',
+        calcHeight: 30,
+        tip: false,
+        searchShow: true,
+        searchMenuSpan: 6,
+        border: true,
+        index: true,
+        viewBtn: true,
+        selection: true,
+        dialogClickModal: false,
+        column: [
+          {
+            label: "鏂囦欢鍚嶇О",
+            prop: "name",
+            search: true,
+            /*formatter:function(d){
+              if(this.options.hasDownloadRight != false){
+                //璇存槑鏈変笅杞芥枃浠剁殑鏉冮檺锛岄偅涔堟垜浠氨娣诲姞涓�涓秴閾炬帴
+                return ''//'<a name="filenamedownloadlink " class="layui-btn layui-btn-intable" lay-event="PREVIEW" fileoid="' + d.oid +'">' + (d.id?d.id:d.name) + '</a>';
+              }else{
+                return d.id || d.name;
+              }
+            }*/
+          },
+          {
+            label: "鏂囦欢澶у皬",
+            prop: "fileSize",
+            formatter:function(d){
+              if(!d.fileSize || d.fileSize == null || d.fileSize*1 == 0 || isNaN(d.fileSize*1) ){
+                return "鏈煡澶у皬";
+              }else{
+                //鍘熷澶у皬鏄疊
+                var filesize = d.fileSize*1;
+                if(filesize>1024*1024*1024*1024){
+                  return parseInt(filesize/(1024*1024*1024*1024)) + "TB";
+                }else if(filesize> 1024*1024*1024){
+                  return parseInt(filesize/(1024*1024*1024)) + "GB";
+                }else if(filesize> 1024*1024){
+                  return parseInt(filesize/(1024*1024)) + "MB";
+                }else if(filesize> 1024){
+                  return parseInt(filesize/1024) + "KB";
+                }else {
+                  return filesize + "B";
+                }
+              }
+            }
+          },
+          /*{
+            label: "瀵嗙骇",
+            prop: "secretGradeText"
+          },
+          {
+            label: "鏂囨。绫诲埆",
+            prop: "fileDocClassifyName"
+          },*/
+          {
+            label: "鍒涘缓鑰�",
+            prop: "creator"
+          },
+          {
+            label: "鍒涘缓鏃堕棿",
+            prop: "createTime"
+          },
+        ]
+      },
+      data: [{
+        btmname: "fileobject",
+        createTime: "2023-06-14 16:08:50.002",
+        creator: "1",
+        fileDocClassify: "undefined",
+        fileDocClassifyName: null,
+        fileExtension: "png",
+        filePath: "VolumnFactoryService:/f87a4c92-ce6e-458b-aad0-0c76bd5eeb35\\54120082-76aa-4092-abbf-b13cb40606c5",
+        fileSize: 858,
+        id: "assignRole",
+        name: "assignRole",
+        nameOid: "9FF4C05D-4EFA-F00B-0080-5ABB50257D4E",
+        oid: "54120082-76aa-4092-abbf-b13cb40606c5",
+        ownBtmname: "wupin",
+        ownbizOid: "6EF696C3-CD87-0E7C-1EA1-8DE3913A95C9",
+        owner: "1",
+        secretGrade: null,
+        secretGradeText: null
+      }],
+      attachForm: {},
+      attachOption: {
+        submitBtn: true,
+        emptyBtn: true,
+        column: [
+          {
+            label: '闄勪欢涓婁紶',
+            prop: 'attachFile',
+            type: 'upload',
+            dragFile: true,
+            loadText: '鏂囦欢涓婁紶涓紝璇风◢绛�',
+            span: 24,
+            propsHttp: {
+              res: 'data'
+            },
+            action: "/api/ubcs-resource/fileController/uploadFile"
+          }
+        ]
+      }
+    };
+  },
+  computed: {
+    ...mapGetters(["permission"]),
+    permissionList() {
+      return {
+        addBtn: false,
+        editBtn: false,
+        viewBtn: false,
+        delBtn: this.vaildData(this.permission.attach_delete, false)
+      };
+    },
+    ids() {
+      let ids = [];
+      this.selectionList.forEach(ele => {
+        ids.push(ele.id);
+      });
+      return ids.join(",");
+    }
+  },
+  methods: {
+    setParams(){
+      var params={
+        ownbizOid:options.ownbizOid || '6EF696C3-CD87-0E7C-1EA1-8DE3913A95C9',
+        ownbizBtm:options.ownbizBtm || 'wupin',
+        fileDocClassify:options.fileDocClassify || '!=processAuditSuggest'
+      }
+      this.params=params;
+    },
+    handleUpload() {
+      this.attachBox = true;
+    },
+    handleEdit() {
+      this.attachBox = true;
+    },
+    uploadBefore(file, done, loading,column) {
+      console.log(file,column)
+      //濡傛灉浣犳兂淇敼file鏂囦欢,鐢变簬涓婁紶鐨刦ile鏄彧璇绘枃浠讹紝蹇呴』澶嶅埗鏂扮殑file鎵嶅彲浠ヤ慨鏀瑰悕瀛楋紝瀹屽悗璧嬪�煎埌done鍑芥暟閲�,濡傛灉涓嶄慨鏀圭殑璇濈洿鎺ュ啓done()鍗冲彲
+      var newFile = new File([file], '1234', { type: file.type });
+      done(newFile)
+      this.$message.success('涓婁紶鍓嶇殑鏂规硶')
+    },
+    uploadAfter(res, done, loading, column) {
+      window.console.log(column);
+      this.attachBox = false;
+      this.refreshChange();
+      done();
+    },
+    uploadError(error, column) {
+      this.$message.success('涓婁紶澶辫触鍥炶皟')
+      console.log(error, column)
+    },
+    handleDownload(row) {
+      window.open(`${row.link}`);
+    },
+    rowDel(row) {
+      this.$confirm("纭畾灏嗛�夋嫨鏂囦欢鍒犻櫎?", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning"
+      })
+        .then(() => {
+          return remove(row.id);
+        })
+        .then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "鎿嶄綔鎴愬姛!"
+          });
+        });
+    },
+    handleDelete() {
+      if (this.selectionList.length === 0) {
+        this.$message.warning("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+        return;
+      }
+      this.$confirm("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning"
+      })
+        .then(() => {
+          return remove(this.ids);
+        })
+        .then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "鎿嶄綔鎴愬姛!"
+          });
+          this.$refs.crud.toggleSelection();
+        });
+    },
+    beforeOpen(done, type) {
+      if (["edit", "view"].includes(type)) {
+        getDetail(this.form.id).then(res => {
+          this.form = res.data.data;
+        });
+      }
+      done();
+    },
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page);
+    },
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+    selectionChange(list) {
+      this.selectionList = list;
+    },
+    selectionClear() {
+      this.selectionList = [];
+      this.$refs.crud.toggleSelection();
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params) {
+      //this.loading = true;
+      params=this.params || {}
+      /*getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.data = data.records;
+        this.loading = false;
+        this.selectionClear();
+      });*/
+    }
+  }
+};
+</script>
+
+<style>
+</style>
diff --git a/Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue b/Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue
index f50524e..1017fc7 100644
--- a/Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue
+++ b/Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue
@@ -180,6 +180,7 @@
               ...item,
               label: item.title,
               prop: item.field,
+              formatter:item.template,
               search: true
             }
           }
diff --git a/Source/UBCS-WEB/src/views/MasterData/FormTempalteTest.vue b/Source/UBCS-WEB/src/views/MasterData/FormTempalteTest.vue
index a0521bf..d140c92 100644
--- a/Source/UBCS-WEB/src/views/MasterData/FormTempalteTest.vue
+++ b/Source/UBCS-WEB/src/views/MasterData/FormTempalteTest.vue
@@ -1,50 +1,60 @@
-<template>
-  <div>
-    <el-button @click="visible = true">娴嬭瘯</el-button>
-    <el-button @click="visible1 = true">鐩镐技椤规煡璇�</el-button>
-    <FormTemplateDialog
-      :visible.sync="visible"
-      :type="this.type"
-      :templateOid="this.templateOid"
-      :codeClassifyOid="this.codeClassifyOid"
-      :codeRuleOid="this.codeRuleOid"
-      :disabledProp="disabledProp"
-      :rowOid="rowOid"
-      @submit="submit"
-    ></FormTemplateDialog>
-    <ResembleQueryDialog
-      :visible.sync="visible1"
-      :type="this.type"
-      :templateOid="this.templateOid"
-      :codeClassifyOid="this.codeClassifyOid"
-      :codeRuleOid="this.codeRuleOid"
-    ></ResembleQueryDialog>
-  </div>
-</template>
-
-<script>
-import ResembleQueryDialog from '@/components/FormTemplate/ResembleQueryDialog.vue';
-export default {
-  name: "FormTempalteTest",
-  components: { ResembleQueryDialog },
-  data() {
-    return {
-      visible: false,
-      visible1: false,
-      // 榛樿绂佺敤鐨勮〃鍏冪礌
-      disabledProp: ["id", 'lcstatus'],
-      // 琛ㄥ崟绫诲瀷
-      type: "add",
-      templateOid: "A12826E4-2B66-6D56-DE30-92BB1D7F607F",
-      codeClassifyOid: "D9CF223F-317D-71EB-BD11-433A94CAD9F3",
-      codeRuleOid: "B95872A6-9CEA-D490-8F1B-9D26548CAF96",
-      rowOid: '6EF696C3-CD87-0E7C-1EA1-8DE3913A95C9'
-    };
-  },
-  methods: {
-    submit(data) {
-      console.log(data);
-    }
-  }
-};
-</script>
+<template>
+  <div>
+    <el-button @click="visible = true">娴嬭瘯</el-button>
+    <el-button @click="visible1 = true">鐩镐技椤规煡璇�</el-button>
+    <el-button @click="visible2 = true">闄勪欢绠$悊dialog</el-button>
+    <FormTemplateDialog
+      :visible.sync="visible"
+      :type="this.type"
+      :templateOid="this.templateOid"
+      :codeClassifyOid="this.codeClassifyOid"
+      :codeRuleOid="this.codeRuleOid"
+      :disabledProp="disabledProp"
+      :rowOid="rowOid"
+      @submit="submit"
+    ></FormTemplateDialog>
+    <ResembleQueryDialog
+      :visible.sync="visible1"
+      :type="this.type"
+      :templateOid="this.templateOid"
+      :codeClassifyOid="this.codeClassifyOid"
+      :codeRuleOid="this.codeRuleOid"
+    ></ResembleQueryDialog>
+    <fileInHtml :options="{}"></fileInHtml>
+    <fileinDialog
+      :visible="visible2"
+      :options="{}"
+      @close="visible2=false"
+    ></fileinDialog>
+  </div>
+</template>
+
+<script>
+import ResembleQueryDialog from '@/components/FormTemplate/ResembleQueryDialog.vue';
+import fileInHtml from '@/components/file/inHtml.vue';
+import fileinDialog from '@/components/file/inDialog.vue';
+export default {
+  name: "FormTempalteTest",
+  components: { ResembleQueryDialog ,fileInHtml ,fileinDialog},
+  data() {
+    return {
+      visible: false,
+      visible1: false,
+      visible2: false,
+      // 榛樿绂佺敤鐨勮〃鍏冪礌
+      disabledProp: ["id", 'lcstatus'],
+      // 琛ㄥ崟绫诲瀷
+      type: "add",
+      templateOid: "78B8C7C5-A042-0B96-FE6D-65421451782A",
+      codeClassifyOid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
+      codeRuleOid: "B95872A6-9CEA-D490-8F1B-9D26548CAF96",
+      rowOid: '6EF696C3-CD87-0E7C-1EA1-8DE3913A95C9'
+    };
+  },
+  methods: {
+    submit(data) {
+      console.log(data);
+    }
+  }
+};
+</script>

--
Gitblit v1.9.3