1
lzhe
2024-04-17 117d37c8cee4b83eda0625f758faf467ab12f674
1
已修改2个文件
221 ■■■■■ 文件已修改
src/api/model/workstation.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/state-feedback.vue 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/model/workstation.js
@@ -25,6 +25,13 @@
            return await http.get(this.url, params);
        }
    },
    groupWorkstationType: {
        url: `${config.API_URL}/blade-cps/group/groupWorkstation/type`,
        name: "获取状态反馈树",
        post: async function(params){
            return await http.post(this.url, params);
        }
    },
    calendarList: {
        url: `${config.API_URL}/blade-cps/calendar/list`,
        name: "获取生产日历",
src/views/mdc/state-feedback.vue
@@ -1,24 +1,206 @@
<!--
 * @Date: 2024-04-09 22:11:21
 * @LastEditors: Sneed
 * @LastEditTime: 2024-04-13 22:15:38
 * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/mdc/state-feedback.vue
 状态反馈
 * @Author: lzhe lzhe@example.com
 * @Date: 2024-03-26 10:28:33
 * @LastEditors: lzhe lzhe@example.com
 * @LastEditTime: 2024-04-17 17:52:50
 * @FilePath: /smart-web/src/views/master/person/main/index.vue
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
    <el-main>
        <el-card shadow="never">
            效率分析
        </el-card>
    </el-main>
    <div class="aposcope-main">
        <div class="aposcope-left">
            <div class="left-title">工位</div>
            <el-tree :data="tableData" row-key="id" default-expand-all :expand-on-click-node="false" :props="defalutProps" @node-click="handleNodeClick" ref="treeRef"/>
        </div>
        <div class="aposcope-right">
            <div>
                <!-- <el-button type="primary" @click="addData">+ 添加</el-button> -->
                <!-- <el-button type="danger" plain @click="delData">删除</el-button> -->
            </div>
            <el-table ref="searchDataListRef" :data="searchDataList" border style="width: 100%;margin-top: 20px;" class="multipleTableRef" @selection-change="searchHandleSelectionChange">
                <el-table-column type="selection" width="55" />
                <el-table-column prop="moduleCode" label="工位名称"></el-table-column>
                <el-table-column prop="controllerCode" label="状态"></el-table-column>
                <el-table-column prop="scopeName" label="描述"></el-table-column>
                <el-table-column prop="httpMethod" label="持续时长"></el-table-column>
                <el-table-column prop="scopePath" label="状态时间"></el-table-column>
                <el-table-column prop="scopePath" label="反馈时间"></el-table-column>
                <el-table-column fixed="right" label="操作">
                    <template #default="scope">
                        <el-button text type="primary" size="small" @click="showDrawer(scope.row, scope.$index)">删除</el-button>
                    </template>
                </el-table-column>
            </el-table>
        </div>
    </div>
</template>
<script>
    export default {
    }
    export default {
        name: "state-feedback",
        data(){
            return {
                searchData: {
                    menuId: "",
                    size: "15",
                    current: "1"
                },
                searchDataList: [],  //右侧数据list
                aList: [],
                defalutProps: {
                    label: 'title',
                      children: 'children',
                    isLeaf: 'hasChildren'
                },
                parentId: "0",
                tableData: [],
                searchSelection: []
            }
        },
        created(){
        },
        mounted(){
            this.getTreeList();
        },
        components: {
        },
        methods: {
            searchHandleSelectionChange(selection) {
                this.searchSelection = selection;
            },
            handleClose(done) {
                done();
            },
            handleNodeClick(data) {
                // var obj = {
                //     groupCategory: 1,
                //     groupType: "group_workstation"
                // }
                // this.$HTTP.post("/api/blade-cps/group/groupWorkstation/type",obj).then(res=> {
                //     if(res.code == 200) {
                //         this.searchDataList = res.data.records;
                //     }
                // })
            },
            buildTree(items) {
              const idMap = {};
              const tree = [];
              // 第一步:创建id到对象的映射
              items.forEach(item => {
                idMap[item.id] = { ...item, children: [] };
              });
              // 第二步:构建树形结构
              items.forEach(item => {
                const currentNode = idMap[item.id];
                // 如果parentId为0,说明是根节点
                if (item.parentId === 0) {
                  tree.push(currentNode);
                } else {
                  // 否则,查找父节点,并将当前节点添加到父节点的children数组中
                  const parentId = item.parentId;
                  if (idMap[parentId]) {
                    idMap[parentId].children.push(currentNode);
                  }
                }
              });
              return tree;
            },
            getTreeList(flag) {
                var obj = {
                    groupCategory: 1,
                    groupType: "group_workstation"
                }
                this.$HTTP.post("/api/blade-cps/group/groupWorkstation/type",obj).then(res=> {
                    if(res.code == 200) {
                        if (res.code == 200) {
                            this.tableData = this.buildTree(res.data);
                            console.log(this.buildTree(res.data))
                        }
                    }
                })
            },
            loadNode(node, resolve, reject) {
                if(node.data.id) {
                    this.parentId = node.data.id;
                }else {
                    this.parentId = '0';
                }
                this.$HTTP.get("/api/blade-system/menu/lazy-list",{parentId: this.parentId}).then(res=> {
                    if(res.code == 200) {
                        res.data.forEach(node => {
                            node.hasChildren = !node.hasChildren;
                        });
                        resolve(res.data);
                    }
                })
            },
            addData() {
            },
            delData() {
                if(this.searchSelection.length == 0) {
                    this.$message({
                      message: '请选择至少一条数据',
                      type: 'warning'
                    });
                    return;
                }
                var selStr = "";
                this.searchSelection.map(item=> {
                    selStr += item.id + ","
                })
                selStr = selStr.replace(/,$/, '');
                var that = this;
            }
        }
    }
</script>
<style lang="scss" scoped>
<style scoped>
.aposcope-main {
    display: flex;
    min-height: 100%;
    margin: 8px;
}
.aposcope-left {
    width: 240px;
    margin-right: 8px;
    padding: 4px;
    background-color: #fff;
}
.aposcope-right {
    flex: 1;
    padding: 8px;
    background-color: #fff;
}
.left-title {
    font-size: 16px;
    text-align: center;
    height: 38px;
    line-height: 38px;
    border-bottom: 1px solid #e2e2e2;
    background-color: #409eff;
    color: #fff;
    border-radius: 2px 2px 0 0;
}
.right-content {
    text-align: center;
}
.right-content img {
    width: 350px;
    height: 350px;
}
.right-content > div {
    font-size: 14px;;
}
.right-content > div span:nth-child(2) {
    margin-left: 8px;
    color: #409eff;
    cursor: pointer;
}
</style>