gaoshp
2024-11-19 f29900986f01cf5d39b5755cec674825cef27961
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<!--
 * @Date: 2024-05-12 20:02:31
 * @LastEditors: Sneed
 * @LastEditTime: 2024-06-16 16:18:09
 * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/console/tooling/tray-fixturePreview.vue
-->
<template>
    <el-container>
        <el-aside width="200px">
            <el-tree :expand-on-click-node="false" default-expand-all ref="group" node-key="id" :data="treeData" :props="{
                label: 'name',
                disabled: 'isGroup'
            }" @node-click="nodeClick">
                <template #default="{ node, data }">
                    <span :class="data.isGroup ? 'active' : ''" class="custom-tree-node">
                        <span>{{
                            node.label || data.code }}</span>
                    </span>
                </template>
            </el-tree>
        </el-aside>
        <!-- <el-main> -->
        <el-container>
            <el-header>
                <import-table style="margin:0 8px" exportUrl="/api/smis/tray-fixture/excel/template"
                    uploadUrl="/api/smis/tray-fixture/excel/import"></import-table>
            </el-header>
            <el-main v-if="selectNode.id">
                <el-row>
                    <el-col style="margin-bottom: 8px">
                        <h2>托盘信息</h2>
                    </el-col>
                    <el-col :span="4">
                        托盘编号: {{ info?.code || '-' }}
                    </el-col>
                    <el-col :span="4">
                        托盘名称: {{ info?.name || '-' }}
                    </el-col>
                    <el-col :span="4">
                        托盘规格: {{ info?.standardModel || '-' }}
                    </el-col>
                    <el-col :span="4">
                        托盘状态: {{ info?.trayStatus ? '空载' : '负载' }}
                    </el-col>
                    <el-col :span="4">
                        可用状态: {{ info?.availability ? '激活' : '冻结' }}
                        <!-- 1-激活 0-冻结 -->
                    </el-col>
                    <el-col :span="4">
                        托盘描述: {{ info?.description || '-' }}
                    </el-col>
                </el-row>
                <el-row>
                    <el-col style="margin: 20px 0">
                        <h2>托盘面</h2>
                    </el-col>
                    <el-col :span="24">
                        <el-collapse v-model="activeNames" style="margin-top: 20px;">
                            <el-collapse-item v-for="item in surfaceList" :key="item.id" :title="item.name"
                                :name="item.id">
                                <el-table stripe :data="item.list">
                                    <el-table-column label="夹具编号" prop="fixtureCode"></el-table-column>
                                    <el-table-column label="夹具名称" prop="fixtureName"></el-table-column>
                                </el-table>
                            </el-collapse-item>
                        </el-collapse>
                    </el-col>
                </el-row>
 
                <el-row>
                    <el-col style="margin: 20px 0">
                        <h2>托盘工艺文件</h2>
 
                    </el-col>
                </el-row>
            </el-main>
            <el-main class="empty" v-else>
                <el-empty></el-empty>
            </el-main>
        </el-container>
        <!-- </el-main> -->
    </el-container>
</template>
 
<script>
import importTable from '@/layout/components/importTable.vue'
export default {
    components: {
        importTable
    },
    data() {
        return {
            treeData: [],
            info: {},
            surfaceList: [], //托盘面
            fileList: [], //附件
            selectNode: {},
            activeNames: ''
        }
    },
    watch: {
        'selectNode.id': {
            handler(val) {
                if (val) {
                    this.queryInfo()
                } else {
                    this.info = {}
                }
            }
        }
    },
    created() {
        this.init()
    },
    methods: {
        init() {
            this.$HTTP.post(`/api/smis/tray/tray-tree`, {
                groupCategory: 1,
                groupType: "group_tray"
            }).then(res => {
                this.treeData = res.data
            })
        },
        async queryInfo() {
            this.$HTTP.get(`/api/smis/tray/${this.selectNode.id}`).then(res => {
                this.info = res.data
            })
 
            this.$HTTP.post(`/api/smis/tray/tool-appendix?id=${this.selectNode.id}`).then(res => {
                this.fileList = res.data
            })
            await this.$HTTP.get(`/api/smis/tray-surface/list/${this.selectNode.id}`).then(res => {
                this.surfaceList = res.data
                this.activeNames = res.data?.[0]?.id
            })
            Promise.all(this.surfaceList.map(item => {
                return this.$HTTP.get(`/api/smis/tray-fixture/list/fixture?faceId=${item.id}`)
            })).then(data => {
                data.forEach((v, i) => {
                    this.surfaceList[i].list = v.data
                })
            })
            console.log(this.surfaceList)
        },
        nodeClick(node) {
            if (!node.isGroup) this.selectNode = node
        }
    }
}
</script>
 
<style lang="scss" scoped>
.custom-tree-node.active {
    color: #ccc;
}
 
.empty {
    justify-content: center;
}
</style>