From b14bf62abb3480d95beee8314fcb08c0d893813b Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 22 九月 2025 14:18:19 +0800
Subject: [PATCH] 文件下发,回传文件处理的查看下载

---
 src/views/tasks/machinereturnfileop.vue |  239 +++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 174 insertions(+), 65 deletions(-)

diff --git a/src/views/tasks/machinereturnfileop.vue b/src/views/tasks/machinereturnfileop.vue
index 4dadcf5..ea61970 100644
--- a/src/views/tasks/machinereturnfileop.vue
+++ b/src/views/tasks/machinereturnfileop.vue
@@ -1,30 +1,38 @@
 <!--
  * @Date: 2025-06-18 09:17:09
  * @LastEditors: gaoshp
- * @LastEditTime: 2025-06-20 09:03:42
+ * @LastEditTime: 2025-08-13 21:23:34
  * @FilePath: /mdmweb/src/views/tasks/machinereturnfileop.vue
 -->
 <template>
     <basic-container>
-        <avue-crud :option="option" :table-loading="loading" :data="data" v-model:page="page" v-model="form" ref="crud"
+        <avue-crud :option="option" :search="query" :table-loading="loading" :data="data" v-model:page="page" v-model="form" ref="crud"
             @search-change="searchChange" @search-reset="searchReset" @current-change="currentChange"
-            @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
+            @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad" @selection-change="selectionChange">
             <template #menu-left>
-                <el-button type="primary" plain @click="reassign">瀵煎嚭鍥炰紶娑夊瘑缃�</el-button>
-                <el-button type="primary" plain @click="reassign">鎸傝浇杞﹀簥绋嬪簭搴�</el-button>
-                <el-button type="primary" plain @click="reassign">瀵煎嚭鍒癊XCEL</el-button>
+                <el-button type="primary" :disabled="this.selectedList.length==0" plain @click="exportWebSite">瀵煎嚭鍥炰紶娑夊瘑缃�</el-button>
+                <!--<el-button type="primary" plain @click="reassign">鎸傝浇杞﹀簥绋嬪簭搴�</el-button>-->
+                <el-button type="primary" :disabled="this.selectedList.length==0" plain @click="exportExcel">瀵煎嚭鍒癊XCEL</el-button>
             </template>
             <template #menu="scope">
-                <el-button type="primary" text size="default" v-if="permission.flow_model_update"
-                    @click.stop="handleAction(scope.row, scope.index)">瀹℃壒
-                </el-button>
+                <el-button type="primary" text size="default" @click.stop="showContent(scope.row)">鏌ョ湅</el-button>
+                <el-button type="primary" text size="default" @click.stop="download(scope.row, scope.index)">涓嬭浇</el-button>
             </template>
         </avue-crud>
+
+        <el-dialog title="绋嬪簭鍐呭" append-to-body v-model="fileViewModel">
+            <div v-html="appContent" class="app-content"></div>
+        </el-dialog>
     </basic-container>
 </template>
 
 <script>
 import { getList } from '@/api/tasks/machinereturnfileop.js';
+import { exportBlob } from '@/api/common';
+import { getToken } from '@/utils/auth';
+import NProgress from 'nprogress';
+import { downloadXls,downloadFile } from '@/utils/util';
+import 'nprogress/nprogress.css';
 export default {
     name: 'MachineReturnFileOp',
     data() {
@@ -35,96 +43,197 @@
                 total: 0,
             },
             form: {},
-            query: {},
+            query: {status:1},
             loading: true,
             data: [],
+            fileViewModel:false,
+            appContent:'',
             option: {
                 addBtn: false,
                 editBtn: false,
                 delBtn: false,
                 columnBtn: false,
                 tip: false,
-                // simplePage: true,
                 searchShow: true,
                 searchMenuSpan: 6,
                 dialogWidth: '60%',
-                // tree: true,
                 border: true,
                 index: true,
                 selection: true,
-                // viewBtn: true,
-                menuWidth: 100,
+                menuWidth: 110,
+                menu: true,
                 dialogClickModal: false,
                 column: [
+                    
+					{
+                        label: '鏂囦欢鍚嶇О',
+                        prop: 'name',
+                        search:true,
+                        searchSpan:4
+                    },
                     {
+                        label: '瀵煎嚭鐘舵��',
+                        prop: 'status',
+                        search:true,
+                        type:'select',
+                        searchSpan:4,
+                        dicData:[
+                            {
+                                label: '鏈鍑�',
+                                value:1
+                            },
+                            {
+                                label: '宸插鍑�',
+                                value:2
+                            }
+                        ]
+                    },
+                    {
+                        label: '鍥炰紶鏈哄簥',
+                        prop: 'machineCode',
+                    },
+                    {
+                        label: '绋嬪簭鐘舵��',
+                        prop: 'programStatus',
+                        render: ({ row,value }) => {
+                            var txt = '鏈煡';
+                            switch(row.programStatus){
+                                case 1:
+                                txt = '璇曞垏';
+                                break;
+                                case 2:
+                                txt = '鍥哄寲';
+                                break;
+                                case 3:
+                                txt = '鍋忕';
+                                break;
+                                default:
+                                txt = '鏈煡';
+                            }
+                            return txt;
+                        }
+                    },
+                    {
+                        label: '鏂囦欢鍒拌揪鏃堕棿',
+                        prop: 'fileCreateTime',
+                        type: 'datetime',
+                        format: 'YYYY-MM-DD HH:mm:ss',
+                        valueFormat: 'YYYY-MM-DD HH:mm:ss',
+                    },
+					{
                         label: '纭鏃堕棿',
-                        prop: '',
+                        prop: 'createTime',
                         type: 'datetime',
                         format: 'YYYY-MM-DD HH:mm:ss',
                         valueFormat: 'YYYY-MM-DD HH:mm:ss',
                         search: true,
                         searchRange: true,
-                        searchSpan: 8,
-                        hide: true,
+                        searchSpan: 10,
+                        hide: false,
                     },
-
-                    {
-                        label: '绋嬪簭缂栧彿',
-                        prop: 'processDefinitionName',
-                    },
-                    {
-                        label: '鍥炰紶鏈哄簥',
-                        prop: 'processDefinitionName',
-                    },
-
-                    {
-                        label: '鏂囦欢鍚嶇О',
-                        prop: '',
-                        formatter: (val, value, label) => {
-                            return `${val?.variables?.machineCode}`;
-                        },
-                    },
-                    {
-                        label: '鏂囦欢鍥哄寲鐘舵��',
-                        prop: 'startUserName',
-                    },
-                    {
-                        label: '鏂囦欢鍒拌揪鏃堕棿',
-                        prop: 'processCreateTime',
+					{
+                        label: '瀵煎嚭鏃堕棿',
+                        prop: 'exportTime',
                         type: 'datetime',
                         format: 'YYYY-MM-DD HH:mm:ss',
                         valueFormat: 'YYYY-MM-DD HH:mm:ss',
-                    },
-                    {
-                        label: '鏂囦欢鏁版嵁搴撶紪鍙�',
-                        prop: 'createTime',
-                    },
+                    }
                 ],
-            }
+            },
+            selectedList: [],
         }
     },
     methods: {
-        reassign() {
-
+        showContent(row) {
+            this.fileViewModel = true;
+            this.appContent = '';
+            axios({
+                url: '/blade-mdm/ossfile/file-content',
+                method: 'get',
+                params: {ossFileName: row.ossName}
+            }).then(
+                res => {
+                    console.log(res)
+                    if(res.data.code === 200) {
+                        this.appContent = res.data.data;
+                    } else {
+                        this.appContent = '绋嬪簭鍐呭鍔犺浇澶辫触'
+                    }
+            });
+        },
+        download(row){
+            exportBlob(
+            `/blade-mdm/machinefile/filehandle/download-by-id?id=${row.id}&${this.website.tokenHeader}=${getToken()}`,
+            
+            ).then(res => {
+            
+                let name = res.headers['content-disposition'].split('filename=')[1]
+                //console.log(res.headers['content-disposition'].split('filename=')[1]);
+                name = decodeURI(name)
+                downloadFile(res.data, `${name}`);
+                NProgress.done();
+            });
+        },
+        selectionChange (list) {
+            this.selectedList = list;
+        },
+        exportWebSite() {
+            if (this.selectedList.length === 0) {
+                this.$message.warning('璇峰厛閫夋嫨闇�瑕佸鍑虹殑鏁版嵁');
+                return;
+            }
+            this.$confirm('鏄惁瀵煎嚭?', '鎻愮ず', {
+                confirmButtonText: '纭畾',
+                cancelButtonText: '鍙栨秷',
+                type: 'warning',
+            }).then(() => {
+                NProgress.start();
+                exportBlob(
+                    `/blade-mdm/machinefile/filehandle/export-to-inner`,
+                    {
+                        ids: this.selectedList.map(item => item.id).join(','),
+                    }
+                ).then(res => {
+                    downloadXls(res.data, `宸ユ帶缃戝洖浼犵▼搴�${this.$dayjs().format('YYYY-MM-DD HH:mm:ss')}.zip`);
+                    this.onLoad(this.page, {});
+                    NProgress.done();
+                });
+            });
+        },
+        exportExcel() {
+            if (this.selectedList.length === 0) {
+                this.$message.warning('璇峰厛閫夋嫨闇�瑕佸鍑虹殑鏁版嵁');
+                return;
+            }
+            this.$confirm('鏄惁瀵煎嚭?', '鎻愮ず', {
+                confirmButtonText: '纭畾',
+                cancelButtonText: '鍙栨秷',
+                type: 'warning',
+            }).then(() => {
+                NProgress.start();
+                exportBlob(
+                    `/blade-mdm/machinefile/filehandle/export-excel?${this.website.tokenHeader}=${getToken()}`
+                ).then(res => {
+                    downloadXls(res.data, `鏈哄簥鍥炰紶绋嬪簭鍒楄〃${this.$dayjs().format('YYYY-MM-DD HH:mm:ss')}.xlsx`);
+                    NProgress.done();
+                });
+            });
         },
         searchChange(params, done) {
             let data = {}
             this.query = params;
             this.page.currentPage = 1;
             console.log('searchChange', params);
-            params.createTimeBegin = params?.processCreateTime?.[0] || '';
-            params.createTimeEnd = params?.processCreateTime?.[1] || '';
-            console.log(params);
-            // data = {
-            //     createTimeBegin: dayjs(params.createTimeBegin).isValid() ? dayjs(params.createTimeBegin).format('YYYY-MM-DD') : '',
-            //     createTimeEnd: dayjs(params.createTimeEnd).isValid() ? dayjs(params.createTimeEnd).format('YYYY-MM-DD') : '',
-            //     keyword: params.keyword || ''
-            // }
+            params.confirmTimeBegin = params?.determineTime?.[0] || '';
+            params.confirmTimeEnd = params?.determineTime?.[1] || '';
+           
             data = {
-                createTimeBegin: params.createTimeBegin,
-                createTimeEnd: params.createTimeEnd,
-                keyword: params.keyword || ''
+                confirmTimeBegin: params.confirmTimeBegin,
+                confirmTimeEnd: params.confirmTimeEnd,
+                name: params.name,
+                status: this.query.status,
             }
+            this.query = data
             this.onLoad(this.page, data);
             done();
         },
@@ -133,8 +242,8 @@
             this.query = params;
             this.page.currentPage = 1;
             data = {
-                createTimeBegin: params.createTimeBegin,
-                createTimeEnd: params.createTimeEnd,
+                createTimeBegin: params.confirmTimeBegin,
+                createTimeEnd: params.confirmTimeEnd,
                 keyword: params.keyword || ''
             }
             this.onLoad(this.page, data);
@@ -153,13 +262,13 @@
         /** * 椤甸潰鍔犺浇鏃惰幏鍙栨暟鎹�
          */
         onLoad(page, params = {}) {
+            console.log('onLoad', page, params);
             const query = {
                 ...this.query,
-                // category: params.category ? flowCategory(params.category) : null,
                 mode: this.mode,
             };
             try {
-                delete query.processCreateTime; // 鍒犻櫎涓嶅繀瑕佺殑鏌ヨ鏉′欢
+                delete query.confirmTime; // 鍒犻櫎涓嶅繀瑕佺殑鏌ヨ鏉′欢
             } catch (error) {
                 console.error('鏃ユ湡鏍煎紡鍖栭敊璇�', error);
             }
@@ -170,7 +279,7 @@
                 this.page.total = data.total;
                 this.data = data.records;
                 this.loading = false;
-            },() => {
+            }, () => {
                 this.data = [];
                 this.loading = false;
             }).catch(err => {

--
Gitblit v1.9.3