Browse Source

接口接入

scorpio 2 năm trước cách đây
mục cha
commit
2c1f9762ef
3 tập tin đã thay đổi với 230 bổ sung41 xóa
  1. 22 0
      src/api/store/index.js
  2. 48 0
      src/views/msg/index.vue
  3. 160 41
      src/views/store/component/info3.vue

+ 22 - 0
src/api/store/index.js

@@ -21,5 +21,27 @@ export default {
       '/blade-project-manage-v2/project-dispatch/v2/pre-storage-detail',
       params
     )
+  },
+  /**
+   * 入库文件删除
+   * @param params
+   * @returns {Promise | Promise<unknown>}
+   */
+  removeFile(params) {
+    return fetch(
+      '/blade-project-manage-v2/project-dispatch/v2/delete-file',
+      params
+    )
+  },
+  /**
+   * 导出项目入库文件
+   * @param params
+   * @returns {Promise | Promise<unknown>}
+   */
+  exportFile(params) {
+    return fetch(
+      '/blade-project-manage-v2/project-dispatch/v2/export-storage-word',
+      params
+    )
   }
 }

+ 48 - 0
src/views/msg/index.vue

@@ -0,0 +1,48 @@
+<template>
+  <el-card shadow="hover">
+    <div class="light-green-bg">
+      <el-collapse v-model="activeName" accordion>
+        <el-collapse-item v-for="i in 20" :name="i" :key="i">
+          <template #title>
+            <div class="padding-left flex flex-align-center flex-justify-start">
+              <div class="dot" />
+              <span>消息标题</span>
+            </div>
+          </template>
+          <div>
+            Consistent with real life: in line with the process and logic of
+            real life, and comply with languages and habits that the users are
+            used to;
+          </div>
+          <div>
+            Consistent within interface: all elements should be consistent, such
+            as: design style, icons and texts, position of elements, etc.
+          </div>
+        </el-collapse-item>
+      </el-collapse>
+    </div>
+  </el-card>
+</template>
+
+<route>
+{
+name: '通知中心',
+meta: { 'back':true,'showMsg' : "填写了”项目实际入库时间“的项目将不在预审管理中显示"}
+}
+</route>
+<script>
+export default {}
+</script>
+
+<style lang="scss" scoped>
+.dot {
+  background-color: red;
+  width: 10px;
+  height: 10px;
+  margin-right: 10px;
+  border-radius: 10px;
+}
+:deep(.el-collapse-item__header):hover {
+  background-color: #efefef;
+}
+</style>

+ 160 - 41
src/views/store/component/info3.vue

@@ -5,77 +5,117 @@
     </div>
     <div class="padding-left padding-right mt-20" style="padding: 20px">
       <avue-crud
-        v-model="form"
         :option="option"
         :data="data"
         ref="crud"
-        :before-open="beforeOpen"
-        @row-del="rowDel"
+        v-model="form"
+        v-model:page="page"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @refresh-change="refreshChange"
         @on-load="onLoad"
       >
         <template #menu-left>
           <div>
             <el-dropdown @command="openFile">
               <el-button type="primary">
-                上传附件<el-icon class="el-icon--right"><arrow-down /></el-icon>
+                上传附件
+                <el-icon class="el-icon--right">
+                  <arrow-down />
+                </el-icon>
               </el-button>
               <template #dropdown>
                 <el-dropdown-menu>
                   <el-dropdown-item command="1"
-                    >备案证/可研批复</el-dropdown-item
-                  >
+                    >备案证/可研批复
+                  </el-dropdown-item>
                   <el-dropdown-item command="2">合同</el-dropdown-item>
                   <el-dropdown-item command="3">工程量清单</el-dropdown-item>
                   <el-dropdown-item command="4">现场照片</el-dropdown-item>
                   <el-dropdown-item command="5"
-                    >项目核实认定表</el-dropdown-item
-                  >
+                    >项目核实认定表
+                  </el-dropdown-item>
                   <el-dropdown-item command="6">其他资料</el-dropdown-item>
                 </el-dropdown-menu>
               </template>
             </el-dropdown>
-            <el-button type="primary" plain>导出</el-button>
+            <el-button type="primary" plain @click="exportFile"
+              >导 出</el-button
+            >
           </div>
         </template>
 
         <template #menu-right>
-          <el-button icon="Refresh" circle></el-button>
+          <el-button icon="Refresh" circle @click="onLoad"></el-button>
         </template>
-        <template #menu>
+        <template #menu="{ row }">
           <div>
-            <el-button icon="Download" type="primary" size="mini" text
-              >下载</el-button
-            >
-            <el-button icon="Download" type="primary" size="mini" text
-              >打开文件夹</el-button
-            >
+            <el-button
+              icon="View"
+              type="primary"
+              size="mini"
+              text
+              @click="previewFile(row)"
+              >查 看
+            </el-button>
+            <el-button
+              icon="Download"
+              type="primary"
+              size="mini"
+              text
+              @click="downLoad(row)"
+              >下 载
+            </el-button>
+            <el-button
+              icon="Download"
+              type="primary"
+              size="mini"
+              text
+              @click="openFolder(row)"
+              >打开文件夹
+            </el-button>
+            <el-button
+              icon="Delete"
+              type="primary"
+              size="mini"
+              text
+              @click="rowDel(row)"
+              >删 除
+            </el-button>
           </div>
         </template>
       </avue-crud>
     </div>
+    <el-image-viewer
+      v-if="showImage"
+      :url-list="preList"
+      @close="showImage = false"
+    />
     <!--dialog-->
     <el-dialog v-model="show" width="800px" title="附件要素">
       <el-descriptions title="合同">
         <el-descriptions-item label="Username"
-          >kooriookami</el-descriptions-item
-        >
+          >kooriookami
+        </el-descriptions-item>
         <el-descriptions-item label="Telephone"
-          >18100000000</el-descriptions-item
-        >
+          >18100000000
+        </el-descriptions-item>
         <el-descriptions-item label="Place">Suzhou</el-descriptions-item>
         <el-descriptions-item label="Remarks">
           <el-tag size="small">School</el-tag>
         </el-descriptions-item>
         <el-descriptions-item label="Address"
-          >No.1188, Wuzhong Avenue, Wuzhong District, Suzhou, Jiangsu
-          Province</el-descriptions-item
-        >
+          >No.1188, Wuzhong Avenue, Wuzhong District, Suzhou, Jiangsu Province
+        </el-descriptions-item>
       </el-descriptions>
     </el-dialog>
   </div>
 </template>
 
 <script>
+import api from '@/api/index.js'
+import { ElMessageBox } from 'element-plus'
+
 export default {
   props: {
     info: {
@@ -86,8 +126,10 @@ export default {
   data() {
     return {
       pid: '',
+      showImage: false,
       uploadShow: false,
       show: false,
+      preList: [],
       form: {},
       data: [],
       page: {
@@ -100,6 +142,7 @@ export default {
         height: 525,
         size: 'mini',
         addBtn: false,
+        delBtn: false,
         editBtn: false,
         refreshBtn: false,
         columnBtn: false,
@@ -120,11 +163,11 @@ export default {
                 value: 2
               },
               {
-                label: '现场照片',
+                label: '工程量清单',
                 value: 3
               },
               {
-                label: '分享工程清单',
+                label: '现场照片',
                 value: 4
               },
               {
@@ -139,7 +182,8 @@ export default {
           },
           {
             label: '附件名称',
-            prop: 'title'
+            prop: 'title',
+            type: 'input'
           },
           {
             label: '上传情况',
@@ -167,15 +211,70 @@ export default {
     onLoad() {
       const data = Object.assign(this.page, { id: this.pid })
       this.$api.store.fileList(data).then(res => {
-        if (res.code === 200) {
+        if (res.code === 200 && res.data.files.length > 0) {
           this.data = res.data.files.map(ele => {
+            delete ele.fileId
             const tmp = ele.fileFolder
+            tmp.folderId = tmp.id
             delete tmp.id
             return Object.assign(tmp, ele)
           })
         }
       })
     },
+    currentChange(currentPage) {
+      this.page.current = currentPage
+    },
+    sizeChange(pageSize) {
+      this.page.size = pageSize
+    },
+    refreshChange() {
+      this.onLoad()
+    },
+    /**
+     * 文件下载
+     * @param row
+     */
+    downLoad(row) {
+      window.open(row.url, '_blank')
+    },
+    /**
+     * 文件预览
+     * @param item
+     */
+    previewFile(item) {
+      console.log(item)
+      if (api.offices.includes(item.suffix)) {
+        const routeData = this.$router.resolve({
+          path: '/home/file_detail',
+          query: { id: item.fileId }
+        })
+        window.open(routeData.href, '_blank')
+      } else {
+        this.preList.length = 0
+        this.preList.push(item.url)
+        this.showImage = true
+      }
+    },
+    /**
+     * 打开文件夹
+     * @param item
+     */
+    openFolder(item) {
+      console.log(item)
+      const data = this.$router.resolve({
+        path: '/home/files',
+        query: {
+          id: item.parentId,
+          projectId: item.projectId
+        }
+      })
+      window.open(data.href, '_blank')
+    },
+    /**
+     * 打开文件
+     * @param row
+     */
     openFile(row) {
       const routeUrl = this.$router.resolve({
         path: '/home/details',
@@ -188,20 +287,40 @@ export default {
       })
       window.open(routeUrl.href, '_blank')
     },
-    rowDel(row, index, done) {
-      console.log(row)
-    },
-    beforeOpen(done, type) {
-      if (['view'].includes(type)) {
-        console.log(this.showInfo)
-      } else if (type === 'edit') {
-        this.$router.push({
-          path: '/home/details',
-          query: { id: this.form.id, type: '1' }
+    exportFile() {
+      console.log('export')
+      this.$api.store
+        .exportFile({ projectId: this.info.projectId })
+        .then(res => {
+          if (res.code === 200) {
+            ElMessageBox.alert(
+              '智能生成文档中,生成完成后系统将会发送通知消息给您!',
+              ''
+            )
+          }
         })
-      } else {
-        done()
-      }
+    },
+    rowDel(row) {
+      ElMessageBox.confirm('确定要执行删除操作?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(res => {
+        if (res === 'confirm') {
+          const data = {
+            id: row.id,
+            projectId: row.projectId,
+            fileId: row.folderId
+          }
+          this.$api.store.removeFile(data).then(res => {
+            if (res.code === 200) {
+              this.$message.success('删除成功')
+            } else {
+              this.$message.error(res.msg)
+            }
+          })
+        }
+      })
     }
   }
 }