yangys
2025-08-16 fd307873b67f5a71817fe54226b2a104b6081d48
src/views/flowmgr/programexport.vue
@@ -1,24 +1,43 @@
<!--
 * @Date: 2025-06-20 20:48:17
 * @LastEditors: gaoshp
 * @LastEditTime: 2025-07-07 23:00:25
 * @LastEditors: 李喆(开发组) lzhe@yxqiche.com
 * @LastEditTime: 2025-08-11 16:34:15
 * @FilePath: /mdmweb/src/views/flowmgr/programexport.vue
-->
<template>
    <basic-container>
        <avue-crud :option="option" :table-loading="loading" :data="data" v-model:page="page" v-model="form" ref="crud" @current-change="currentChange"
            @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad" @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange">
            <template #menu-left>
                <!-- <el-button type="primary" plain @click="exportWebSite">导出回传涉密网</el-button> -->
                <!-- <el-button type="primary" plain @click="reassign">挂载车床程序库</el-button> -->
                <el-button type="primary" plain @click="exportExcel">导出</el-button>
            </template>
            <template #menu="scope">
                <!-- <el-button type="primary" text size="default"
                    @click.stop="handleAction(scope.row, scope.index)">处理意见
                </el-button> -->
            </template>
        </avue-crud>
        <el-tabs v-model="activeName" type="card" class="demo-tabs" @tab-click="tabsClick">
            <el-tab-pane label="待办" name="todo">
                <avue-crud :option="option" :table-loading="loading" :data="data" v-model:page="page" v-model="form" ref="crud" @current-change="currentChange"
                    @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad" @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange">
                    <template #menu-left>
                        <!-- <el-button type="primary" plain @click="exportWebSite">导出回传涉密网</el-button> -->
                        <!-- <el-button type="primary" plain @click="reassign">挂载车床程序库</el-button> -->
                        <el-button type="primary" plain @click="exportExcel">导出</el-button>
                    </template>
                    <template #menu="scope">
                        <!-- <el-button type="primary" text size="default"
                            @click.stop="handleAction(scope.row, scope.index)">处理意见
                        </el-button> -->
                    </template>
                </avue-crud>
            </el-tab-pane>
            <el-tab-pane label="已办" name="completed">
                <avue-crud :option="optionCompleted" :table-loading="loading" :data="data" v-model:page="page" v-model="form" ref="crud" @current-change="currentChange"
                    @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad" @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange">
                    <template #menu-left>
                        <!-- <el-button type="primary" plain @click="exportWebSite">导出回传涉密网</el-button> -->
                        <!-- <el-button type="primary" plain @click="reassign">挂载车床程序库</el-button> -->
                        <el-button type="primary" plain @click="exportExcel">导出</el-button>
                    </template>
                    <template #menu="scope">
                        <!-- <el-button type="primary" text size="default"
                            @click.stop="handleAction(scope.row, scope.index)">处理意见
                        </el-button> -->
                    </template>
                </avue-crud>
            </el-tab-pane>
        </el-tabs>
    </basic-container>
</template>
@@ -32,6 +51,7 @@
    name: 'programexport',
    data() {
        return {
            activeName: "todo",
            // Define your data properties here
            page: {
                pageSize: 10,
@@ -63,13 +83,17 @@
                menu: false,
                dialogClickModal: false,
                column: [
               {
                        label: '流程标题',
                        prop: 'title',
                    },
                    {
                        label: '图号',
                        prop: 'partNo',
                        label: '零组件号',
                        prop: 'drawingNo',
                    },
                    {
                        label: '图号版次',
                        prop: 'partNoEdition',
                        prop: 'drawingNoEdition',
                    },
                    {
                        label: '工序名称',
@@ -85,7 +109,69 @@
                        prop: 'createTime',
                    },
                    {
                        label: '完成时间',
                        label: '通过时间',
                        prop: 'passTime',
                        search: true,
                        hide: true,
                        type: 'datetime',
                        format: 'YYYY-MM-DD HH:mm:ss',
                        valueFormat: 'YYYY-MM-DD HH:mm:ss',
                        searchRange: true,
                        searchSpan: 8,
                    },
                ],
            },
            optionCompleted: {
                addBtn: false,
                editBtn: false,
                delBtn: false,
                viewBtn: true,
                columnBtn: false,
                tip: false,
                // simplePage: true,
                searchShow: true,
                searchMenuSpan: 6,
                dialogWidth: '60%',
                // tree: true,
                border: true,
                index: true,
                selection: true,
                // viewBtn: true,
                menuWidth: 200,
                menu: false,
                dialogClickModal: false,
                column: [
               {
                        label: '流程标题',
                        prop: 'title',
                    },
                    {
                        label: '零组件号',
                        prop: 'drawingNo',
                    },
                    {
                        label: '图号版次',
                        prop: 'drawingNoEdition',
                    },
                    {
                        label: '工序名称',
                        prop: 'processName',
                    },
                    {
                        label: '程序名称',
                        prop: 'name',
                        search: true,
                    },
                    {
                        label: '通过时间',
                        prop: 'createTime',
                    },
                    {
                        label: '已办时间',
                        prop: 'updateTime',
                    },
                    {
                        label: '通过时间',
                        prop: 'passTime',
                        search: true,
                        hide: true,
@@ -100,6 +186,9 @@
        };
    },
    methods: {
        tabsClick(tab,event) {
            this.onLoad(this.page, this.query);
        },
        selectionChange(list) {
            this.selection = list;
        },
@@ -138,12 +227,13 @@
        /** * 页面加载时获取数据
         */
        onLoad(page, params = {}) {
            console.log('onLoad', page, params);
            const query = {
                ...this.query,
                // category: params.category ? flowCategory(params.category) : null,
                mode: this.mode,
            };
            var status = this.activeName == 'todo'?null:2;
            params.status = status;
            try {
                delete query.confirmTime; // 删除不必要的查询条件
            } catch (error) {
@@ -171,15 +261,30 @@
                type: 'warning',
            }).then(() => {
                console.log(this.selection)
            if(this.selection == null || this.selection.length == 0){
               this.$message.error('请至少选择一条导出');
               return;
            }
                NProgress.start();
                exportBlobPost(
                    `/blade-mdm/program/exchange/export-dnc`,
                    {},
                    {ids: this.selection.map(item => item.id)},
                ).then(res => {
                    console.log(res);
                    downloadFile(res.data, `导出DNC${this.$dayjs().format('YYYY-MM-DD HH:mm:ss')}.zip`);
                console.log('status='+res.status)
               if(res.status == 200){
                  //console.log(res.data);
                  let name = res.headers['content-disposition'].split('filename=')[1]
                  //console.log(res.headers['content-disposition'].split('filename=')[1]);
                  downloadFile(res.data, `${name}`);
               }else{
                  this.$message.error('导出错误');
                  console.log(res);
               }
                    NProgress.done();
                    this.onLoad(this.page, this.query);
                });
            });
        },