Fixiaobai
2023-09-13 9ddf303ca99059fac2d6b83829f2d39c04d1cf5f
Merge branch 'master' of http://192.168.0.22:9001/r/mom-before
已修改16个文件
3437 ■■■■■ 文件已修改
src/assets/api/controller.js 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/Technicalindex.vue 963 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/equipmentmaintain.vue 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/laboratoryManagement.vue 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/mbom.vue 398 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/record-content.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/sale.vue 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/self-inspection.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/standard-table/material.vue 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/standard-table/product.vue 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/standard-table/target.vue 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/standard-table/technology.vue 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/standard.vue 417 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/technical.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/technology.vue 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/view/index.vue 1140 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/api/controller.js
@@ -17,7 +17,18 @@
    chooseTechByStandard:"/product/chooseTech",//右上角新增-->技术指标-->选择工序,工艺
    chooseFatherByStandard:"/product/chooseFather",//右上角新增-->技术指标-->选择项目父类
    addProductByStandard:"/product/add",//右上角新增-->技术指标
    addMBomByStandard:"/mbom/add",//右上角新增-->物料清单
    chooseTechByMBom:"/mbom/chooseTech",//右上角新增-->物料清单-->选择工序,工艺
    mBomWrite:"/mbom/write",//物料清单-->数量,移开保存
    chooseTechByProduct:"/technique/chooseTech",//右上角新增-->生产工艺-->选择工序,工艺
    addTechniqueByStandard:"/technique/add",//右上角新增-->生产工艺
    chooseProByProduct:"/technique/choosePro",//右上角新增-->生产工艺-->选择项目(父子),单位
    chooseDevByProduct:"/technique/chooseDev",//右上角新增-->生产工艺-->选择设备
    addVersion:"/material/addVersion",//添加同一个型号工艺路线,技术指标,物料清单,生产工艺的版本
    delAllByTechnology:"/technology/delAllTech",//工艺路线-批量删除
    delAllByTarget:"/product/delAllPro",//技术指标-批量删除
    delAllByMBom:"/mbom/delAllMbom",//物料清单-批量删除
    delAllByProduct:"/technique/delAllTeq",//生产工艺-批量删除
    // 技术管理-技术文件
    selectAllOrder: "/orders/selectAllOrder", //查询所有订单列表
    selectOrderById: "/orders/selectOrderById", //根据订单id查询订单详情
@@ -149,6 +160,7 @@
    delQueById:"/techniqueModel/delQueById",//删除
    delAllQue:"/techniqueModel/delAllQue",//批量删除
    selecQueById:"/techniqueModel/selecQueById",//编辑
    writeQueById:"/techniqueModel/writeQueById",//编辑传参
}
const url = {
src/components/view/Technicalindex.vue
@@ -1,320 +1,242 @@
<template>
    <div class="record_content">
        <div class="title">
            <el-row>
            <el-row>
                <el-col :span="12" style="line-height: 32px;">技术指标维护</el-col>
                <el-col :span="12" style="text-align: right;">
                    <el-button type="primary" icon="el-icon-plus" style="background: #004EA2;" @click="event">新增</el-button>
                    <!-- <el-button icon="el-icon-edit-outline" @click="modify">修改</el-button> -->
                    <el-button icon="el-icon-delete"  @click="dels" >删除</el-button>
                    <el-button icon="el-icon-delete" @click="dels">删除</el-button>
                </el-col>
            </el-row>
        </div>
        <div>
            <!-- 编辑弹窗 -->
            <div>
            <el-dialog
            title="技术指标编辑"
            :visible.sync="modifyevent"
            width="40%"
            :before-close="handleClose">
            <el-form ref="form" :model="form" label-width="80px">
                <el-form-item label="类型">
                    <template>
                        <el-select v-model="value" placeholder="请选择" style="width: 560px;">
                            <el-option
                            v-for="item in options"
                            :key="item.value"
                            :label="item.label"
                            :value="item.value">
                            </el-option>
                        </el-select>
                        </template>
                    </el-form-item>
                <el-row>
                    <el-col :span="11">
                        <el-form-item label="工序">
                            <el-input v-model="form.name"  placeholder="请输入或选择工序"></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="11" :offset="2">
                        <el-form-item label="工艺">
                            <el-input v-model="form.name"  placeholder="请输入或选择工艺"></el-input>
                        </el-form-item>
                     </el-col>
                </el-row>
        <div style="height: calc(100% - 42px);">
            <!-- 编辑弹窗 -->
            <div>
                <el-dialog title="技术指标编辑" :visible.sync="modifyevent" width="40%" :before-close="handleClose">
                    <el-form ref="form" :model="form" label-width="80px">
                        <el-form-item label="类型">
                            <template>
                                <el-select v-model="value" placeholder="请选择" style="width: 560px;">
                                    <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
                                    </el-option>
                                </el-select>
                            </template>
                        </el-form-item>
                        <el-row>
                            <el-col :span="11">
                                <el-form-item label="工序">
                                    <el-input v-model="form.name" placeholder="请输入或选择工序"></el-input>
                                </el-form-item>
                            </el-col>
                            <el-col :span="11" :offset="2">
                                <el-form-item label="工艺">
                                    <el-input v-model="form.name" placeholder="请输入或选择工艺"></el-input>
                                </el-form-item>
                            </el-col>
                        </el-row>
                <el-row>
                    <el-col :span="11">
                        <el-form-item label="项目组">
                            <el-input v-model="form.name"  placeholder="请选择"></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="11" :offset="2">
                        <el-form-item label="项目">
                            <el-input v-model="form.name"  placeholder="请输入项目"></el-input>
                        </el-form-item>
                     </el-col>
                </el-row>
                        <el-row>
                            <el-col :span="11">
                                <el-form-item label="项目组">
                                    <el-input v-model="form.name" placeholder="请选择"></el-input>
                                </el-form-item>
                            </el-col>
                            <el-col :span="11" :offset="2">
                                <el-form-item label="项目">
                                    <el-input v-model="form.name" placeholder="请输入项目"></el-input>
                                </el-form-item>
                            </el-col>
                        </el-row>
                <el-form-item label="单位">
                    <el-input v-model="form.name"  placeholder="请输入单位" style="width: 220px;"></el-input>
                </el-form-item>
                </el-form>
            <span slot="footer" class="dialog-footer">
                <el-button @click="modifyevent = false">取 消</el-button>
                <el-button type="primary" @click="modifyevent = false">确 定</el-button>
            </span>
            </el-dialog>
            </div>
        <div class="choose">
            <span>类型:</span>
            <el-select v-model="search.type" size="small" placeholder="请选择" @change="TYpe" style="width: 224px;margin-right: 30px;">
                <el-option label="橡胶连接器" :value="0"></el-option>
                <el-option label="金属连接器" :value="1"></el-option>
                <el-option label="湿插拔电连接器" :value="2"></el-option>
                <el-option label="分支组件" :value="3"></el-option>
            </el-select>
            <!-- <span>工序:</span>
                        <el-form-item label="单位">
                            <el-input v-model="form.name" placeholder="请输入单位" style="width: 220px;"></el-input>
                        </el-form-item>
                    </el-form>
                    <span slot="footer" class="dialog-footer">
                        <el-button @click="modifyevent = false">取 消</el-button>
                        <el-button type="primary" @click="modifyevent = false">确 定</el-button>
                    </span>
                </el-dialog>
            </div>
            <div class="choose">
                <span>类型:</span>
                <el-select v-model="search.type" size="small" placeholder="请选择" @change="TYpe"
                    style="width: 224px;margin-right: 30px;">
                    <el-option label="橡胶连接器" :value="0"></el-option>
                    <el-option label="金属连接器" :value="1"></el-option>
                    <el-option label="湿插拔电连接器" :value="2"></el-option>
                    <el-option label="分支组件" :value="3"></el-option>
                </el-select>
                <!-- <span>工序:</span>
            <el-select v-model="search.name" size="small" placeholder="请选择" style="width: 224px;margin-right: 30px;">
                <el-option v-for="(a, ai) in process" key="ai" :label="a.name" :value="a.id"></el-option>
            </el-select>
            <el-button size="mini"><span>重 置</span></el-button>
            <el-button size="mini" type="primary" style="background: #004EA2;"><span>查询</span></el-button> -->
        </div>
        <div class="thing">
        <!-- 主体左 -->
            <div  class="left">
                <el-input v-model="search.technology"
                suffix-icon="el-icon-search"
                placeholder="请输入搜索内容"
                size="small"
                clearable @input="query" ></el-input>
                    <el-tree :data="list" ref="tree" :props="{children: 'children',label: 'father'}" node-key="name" default-expand-all
                    @node-click="handleNodeClick" highlight-current
                        >
                    <div class="custom-tree-node" slot-scope="{ node, data }">
                        <span><i :class="`node_i ${data.code != '[2]'?'el-icon-folder-opened':'el-icon-tickets'}`"></i>
                            {{data.code}} {{ data.name }}</span>
                        <!-- <el-button type="text" size="mini" @click.stop="remove(node, data)">
            </div>
            <div class="thing">
                <!-- 主体左 -->
                <div class="left">
                    <el-input v-model="search.technology" suffix-icon="el-icon-search" placeholder="请输入搜索内容" size="small"
                        clearable @input="query"></el-input>
                    <el-tree :data="list" ref="tree" :props="{children: 'children',label: 'father'}" node-key="name"
                        default-expand-all @node-click="handleNodeClick" highlight-current>
                        <div class="custom-tree-node" slot-scope="{ node, data }">
                            <span><i :class="`node_i ${data.code != '[2]'?'el-icon-folder-opened':'el-icon-tickets'}`"></i>
                                {{data.code}} {{ data.name }}</span>
                            <!-- <el-button type="text" size="mini" @click.stop="remove(node, data)">
                            <i class="el-icon-delete"></i>
                        </el-button> -->
                    </div>
                </el-tree>
            </div>
            <!-- 主体右 -->
            <div class="right">
                <el-table
                    :data="tableData"
                    style="width: 100%;margin-bottom: 20px;"
                    row-key="name"
                    border
                    @selection-change="handleSelectionChange"
                    default-expand-all
                    :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
                    <el-table-column
                    type="selection"
                    width="55">
                    </el-table-column>
                    <el-table-column
                    type="index"
                    width="50">
                    </el-table-column>
                    <el-table-column
                    prop="name"
                    label="项目"
                    sortable
                    width="400px">
                        <template slot-scope="scope">
                        <el-tag>
                            <div class="firstDiv" :style="`color: ${scope.row.children? '#16a7ff' : '#58c173'}`">
                            {{ scope.row.children ? "01" : "02" }}
                            </div>
                        </el-tag>
                        <span style="color: black">{{ scope.row.name }}</span>
                        </div>
                    </el-tree>
                </div>
                <!-- 主体右 -->
                <div class="right">
                    <el-table :data="tableData" style="width: 100%;overflow-y: auto;min-height: 100%"
                        max-height="100%" row-key="name" border @selection-change="handleSelectionChange"
                        default-expand-all :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
                        <el-table-column type="selection" width="55">
                        </el-table-column>
                        <el-table-column type="index" width="50">
                        </el-table-column>
                        <el-table-column prop="name" label="项目" sortable width="400px">
                            <template slot-scope="scope">
                                <el-tag>
                                    <div class="firstDiv" :style="`color: ${scope.row.children? '#16a7ff' : '#58c173'}`">
                                        {{ scope.row.children ? "01" : "02" }}
                                    </div>
                                </el-tag>
                                <span style="color: black">{{ scope.row.name }}</span>
                            </template>
                        </el-table-column>
                        <el-table-column prop="unit" label="单位">
                        </el-table-column>
                        <el-table-column prop="address" label="操作" width="200px">
                            <template slot-scope="scope" style="text-align: center;">
                                <div v-if="!scope.row.children">
                                    <el-button type="text" size="mini" @click="childrenClick(scope.row)">编辑</el-button>
                                    <el-button type="text" size="mini" @click="deleteRow(scope.$index, scope.row)">删除</el-button>
                                </div>
                            </template>
                        </el-table-column>
                    </el-table>
                </div>
                <div>
                    <el-dialog title="编辑技术内容" :visible.sync="upDia" width="500px">
                        <div class="body">
                        </template>
                        </el-table-column>
                        <el-table-column
                        prop="unit"
                        label="单位">
                        </el-table-column>
                        <el-table-column
                        prop="address"
                        label="操作"
                        width="200px">
                        <template slot-scope="scope" style="text-align: center;">
                            <div v-if="!scope.row.children">
                        <el-button type="text" size="mini" @click="childrenClick(scope.row)">编辑</el-button>
                        <el-button type="text" size="mini" @click="deleteRow(scope.$index, scope.row)">删除</el-button>
                            </div>
                        </template>
                    </el-table-column>
                </el-table>
            </div>
            <div>
                <el-dialog title="编辑技术内容" :visible.sync="upDia" width="500px">
            <div class="body">
                            <el-row style="line-height: 46px;">
                                <el-col :span="4" style="font-size: 14px;text-align: right;">类型:</el-col>
                                <el-col :span="16" :offset="1">
                                    <template>
                                        <el-select v-model="edit.type" disabled placeholder="请选择" @change="TYpe"
                                            style="width: 306px;margin-right: 30px;">
                                            <el-option label="橡胶连接器" :value="0"></el-option>
                                            <el-option label="金属连接器" :value="1"></el-option>
                                            <el-option label="湿插拔电连接器" :value="2"></el-option>
                                            <el-option label="分支组件" :value="3"></el-option>
                                        </el-select>
                                    </template>
                                </el-col>
                            </el-row>
                            <el-row style="line-height: 46px;">
                                <el-col :span="4" style="font-size: 14px;text-align: right;">工序:</el-col>
                                <el-col :span="16" :offset="1">
                                    <template>
                                        <el-select v-model="edit.techFather" placeholder="请选择" allow-create disabled style="width: 306px;"
                                            filterable @change="workevent">
                                            <el-option v-for="(item,index) in process" :key="item.name" :label="item.name" :value="item.name">
                                            </el-option>
                                        </el-select>
                                    </template>
                                </el-col>
                            </el-row>
                            <el-row style="line-height: 46px;">
                                <el-col :span="4" style="font-size: 14px;text-align: right;">工艺:</el-col>
                                <el-col :span="16" :offset="1">
                                    <template>
                                        <el-select v-model="edit.techName" placeholder="请选择" disabled style="width: 306px;" allow-create
                                            filterable>
                                            <el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id">
                                            </el-option>
                                        </el-select>
                                    </template>
                                </el-col>
                            </el-row>
                            <el-row style="line-height: 46px;">
                                <el-col :span="4" style="font-size: 14px;text-align: right;">项目组:</el-col>
                                <el-col :span="16" :offset="1">
                                    <el-input v-model="edit.father" :disabled="true" size="small" clearable></el-input>
                                </el-col>
                            </el-row>
                            <el-row style="line-height: 46px;">
                                <el-col :span="4" style="font-size: 14px;text-align: right;">项目名称:</el-col>
                                <el-col :span="16" :offset="1">
                                    <el-input v-model="edit.name" size="small" clearable></el-input>
                                </el-col>
                            </el-row>
                            <el-row style="line-height: 46px;">
                                <el-col :span="4" style="font-size: 14px;text-align: right;">单位:</el-col>
                                <el-col :span="16" :offset="1">
                                    <el-input v-model="edit.unit" size="small" clearable></el-input>
                                </el-col>
                            </el-row>
                        </div>
                        <span slot="footer" class="dialog-footer">
                            <el-button type="primary" @click="submitUpData">确 定</el-button>
                            <el-button @click="upDia = false">取 消</el-button>
                        </span>
                    </el-dialog>
                </div>
                <!-- 新增弹窗 -->
                <div>
                    <el-dialog title="技术指标新增" :visible.sync="dialogVisible" width="40%">
                        <el-form ref="form" :model="form" label-width="80px">
                            <el-form-item label="类型">
                                <template>
                                    <el-select v-model="form.type" size="small" placeholder="请选择" @change="edittype"
                                        style="width: 554px;margin-right: 30px;">
                                        <el-option label="橡胶连接器" :value="0"></el-option>
                                        <el-option label="金属连接器" :value="1"></el-option>
                                        <el-option label="湿插拔电连接器" :value="2"></el-option>
                                        <el-option label="分支组件" :value="3"></el-option>
                                    </el-select>
                                </template>
                            </el-form-item>
                            <el-row>
                                <el-col :span="11">
                                    <el-form-item label="工序">
                                        <template>
                                            <el-select v-model="form.work" placeholder="请选择" allow-create filterable @change="workevent">
                                                <el-option v-for="(item,index) in process" :key="item.name" :label="item.name"
                                                    :value="item.name">
                                                </el-option>
                                            </el-select>
                                        </template>
                                    </el-form-item>
                                </el-col>
                                <el-col :span="11" :offset="2">
                                    <el-form-item label="工艺">
                                        <template>
                                            <el-select v-model="form.name" placeholder="请选择" allow-create filterable>
                                                <el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id">
                                                </el-option>
                                            </el-select>
                                        </template>
                                    </el-form-item>
                                </el-col>
                            </el-row>
                <el-row style="line-height: 46px;">
                    <el-col :span="4" style="font-size: 14px;text-align: right;">类型:</el-col>
                    <el-col :span="16" :offset="1">
                        <template>
                        <el-select v-model="edit.type"   disabled placeholder="请选择" @change="TYpe" style="width: 306px;margin-right: 30px;">
                            <el-option label="橡胶连接器" :value="0"></el-option>
                            <el-option label="金属连接器" :value="1"></el-option>
                            <el-option label="湿插拔电连接器" :value="2"></el-option>
                            <el-option label="分支组件" :value="3"></el-option>
                        </el-select>
                        </template>
                    </el-col>
                </el-row>
                <el-row style="line-height: 46px;">
                    <el-col :span="4"  style="font-size: 14px;text-align: right;">工序:</el-col>
                    <el-col :span="16" :offset="1">
                        <template>
                                <el-select v-model="edit.techFather"
                                placeholder="请选择"
                                allow-create
                                disabled
                                style="width: 306px;"
                                filterable
                                @change="workevent"
                                >
                                    <el-option
                                    v-for="(item,index) in process"
                                    :key="item.name"
                                    :label="item.name"
                                    :value="item.name">
                                    </el-option>
                                </el-select>
                                </template>
                    </el-col>
                </el-row>
                <el-row style="line-height: 46px;">
                    <el-col :span="4" style="font-size: 14px;text-align: right;">工艺:</el-col>
                    <el-col :span="16" :offset="1">
                        <template>
                                <el-select v-model="edit.techName"
                                placeholder="请选择"
                                disabled
                                style="width: 306px;"
                                allow-create
                                filterable
                                >
                                    <el-option
                                    v-for="item in craftapi"
                                    :key="item.id"
                                    :label="item.name"
                                    :value="item.id">
                                    </el-option>
                                </el-select>
                                </template>
                    </el-col>
                </el-row>
                <el-row style="line-height: 46px;">
                    <el-col :span="4"  style="font-size: 14px;text-align: right;">项目组:</el-col>
                    <el-col :span="16" :offset="1">
                        <el-input v-model="edit.father" :disabled="true" size="small" clearable></el-input>
                    </el-col>
                </el-row>
                <el-row style="line-height: 46px;">
                    <el-col :span="4" style="font-size: 14px;text-align: right;">项目名称:</el-col>
                    <el-col :span="16" :offset="1">
                        <el-input v-model="edit.name" size="small" clearable></el-input>
                    </el-col>
                </el-row>
                <el-row style="line-height: 46px;">
                    <el-col :span="4" style="font-size: 14px;text-align: right;">单位:</el-col>
                    <el-col :span="16" :offset="1">
                        <el-input v-model="edit.unit" size="small" clearable></el-input>
                    </el-col>
                </el-row>
            </div>
            <span slot="footer" class="dialog-footer">
                <el-button type="primary" @click="submitUpData">确 定</el-button>
                <el-button @click="upDia = false">取 消</el-button>
            </span>
        </el-dialog>
            </div>
                 <!-- 新增弹窗 -->
        <div>
            <el-dialog
            title="技术指标新增"
            :visible.sync="dialogVisible"
            width="40%"
           >
            <el-form ref="form" :model="form" label-width="80px">
                <el-form-item label="类型">
                    <template>
                        <el-select v-model="form.type"  size="small" placeholder="请选择" @change="edittype" style="width: 554px;margin-right: 30px;">
                            <el-option label="橡胶连接器" :value="0"></el-option>
                            <el-option label="金属连接器" :value="1"></el-option>
                            <el-option label="湿插拔电连接器" :value="2"></el-option>
                            <el-option label="分支组件" :value="3"></el-option>
                        </el-select>
                        </template>
                    </el-form-item>
                <el-row>
                    <el-col :span="11">
                        <el-form-item label="工序">
                            <template>
                                <el-select v-model="form.work"
                                placeholder="请选择"
                                allow-create
                                filterable
                                @change="workevent"
                                >
                                    <el-option
                                    v-for="(item,index) in process"
                                    :key="item.name"
                                    :label="item.name"
                                    :value="item.name">
                                    </el-option>
                                </el-select>
                                </template>
                        </el-form-item>
                    </el-col>
                    <el-col :span="11" :offset="2">
                        <el-form-item label="工艺">
                            <template>
                                <el-select v-model="form.name"
                                placeholder="请选择"
                                allow-create
                                filterable
                                >
                                    <el-option
                                    v-for="item in craftapi"
                                    :key="item.id"
                                    :label="item.name"
                                    :value="item.id">
                                    </el-option>
                                </el-select>
                                </template>
                        </el-form-item>
                     </el-col>
                </el-row>
                <el-row>
                    <el-col :span="11">
                        <el-form-item label="项目组" >
                            <template>
                                <el-select v-model="form.father"
                                placeholder="请选择"
                                allow-create
                                filterable
                                @create="electadd"
                                >
                                    <el-option
                                    v-for="item in higherlevel"
                                    :key="item"
                                    :label="item"
                                    :value="item">
                                    </el-option>
                                </el-select>
                                <!-- <el-autocomplete
                            <el-row>
                                <el-col :span="11">
                                    <el-form-item label="项目组">
                                        <template>
                                            <el-select v-model="form.father" placeholder="请选择" allow-create filterable @create="electadd">
                                                <el-option v-for="item in higherlevel" :key="item" :label="item" :value="item">
                                                </el-option>
                                            </el-select>
                                            <!-- <el-autocomplete
                                popper-class="my-autocomplete"
                                v-model="form.father"
                                :fetch-suggestions="higherlevel"
@@ -331,33 +253,32 @@
                                </template>
                                </el-autocomplete> -->
                                </template>
                        </el-form-item>
                    </el-col>
                    <el-col :span="11" :offset="2">
                        <el-form-item label="项目">
                            <el-input v-model="form.project"  style="width: 200px;" placeholder="请输入项目"></el-input>
                        </el-form-item>
                     </el-col>
                </el-row>
                                        </template>
                                    </el-form-item>
                                </el-col>
                                <el-col :span="11" :offset="2">
                                    <el-form-item label="项目">
                                        <el-input v-model="form.project" style="width: 200px;" placeholder="请输入项目"></el-input>
                                    </el-form-item>
                                </el-col>
                            </el-row>
                <el-form-item label="单位">
                    <el-input v-model="form.unit"  placeholder="请输入单位" style="width: 200px;"></el-input>
                </el-form-item>
                </el-form>
            <span slot="footer" class="dialog-footer">
                <el-button @click="dialogVisible = false">取 消</el-button>
                <el-button type="primary" @click="add">确 定</el-button>
            </span>
            </el-dialog>
            </div>
        </div>
                            <el-form-item label="单位">
                                <el-input v-model="form.unit" placeholder="请输入单位" style="width: 200px;"></el-input>
                            </el-form-item>
                        </el-form>
                        <span slot="footer" class="dialog-footer">
                            <el-button @click="dialogVisible = false">取 消</el-button>
                            <el-button type="primary" @click="add">确 定</el-button>
                        </span>
                    </el-dialog>
                </div>
            </div>
        </div>
    </div>
</template>
<script>
export default {
    export default {
        data() {
            return {
              search:{
@@ -397,20 +318,58 @@
                    unit:'',
                    id:'',
                }
                },
                isAllSelect:false,
            }
        },
        mounted() {
            this.selectAllleft()
            this.selectAllright()
            this.selectAllright()
        },
        methods:{
              // 表格树全部选中配置
                // 全选/取消选操作
                selectAll(val) {
                    this.isAllSelect = !this.isAllSelect;
                    let data = this.tableData;
                    this.toggleSelect(data, this.isAllSelect, "all");
                },
             //选择某行
            selectTr(selection, row) {
                console.log(selection,row);
                this.$set(row, "isChecked", !row.isChecked);
                this.$nextTick(() => {
                    this.isAllSelect = row.isChecked;
                    this.toggleSelect(row, row.isChecked, "tr");
                });
            },
             //递归子级
            toggleSelect(data, flag, type) {
                if (type === "all") {
                    console.log('222');
                    if (data.length > 0) {
                        data.forEach((item) => {
                        this.toggleSelection(item, flag);
                        if (item.children && item.children.length > 0) {
                            this.toggleSelect(item.children, flag, type);
                        }
                        });
                    }
                } else {
                    if (data.children && data.children.length > 0) {
                        data.children.forEach((item) => {
                        item.isChecked = !item.isChecked;
                        this.$refs.multipleTable.toggleRowSelection(item, flag);
                        this.toggleSelect(item, flag, type);
                        });
                    }
                }
            },
            handleClose(){
            },
            selectDataList() {
            },
            selectDataList() {
                this.list.forEach(a => {
                    a.code = '[1]'
                    if (a.children != undefined) {
@@ -426,66 +385,66 @@
                })
                this.upIndex++
            },
            //编辑
            selecTech() {
                this.$axios.get(this.$api.url.selecTech,{
                    params:{
                        id:this.upData.id
            //编辑
            selecTech() {
                this.$axios.get(this.$api.url.selecTech, {
                    params: {
                        id: this.upData.id
                    }
                }).then(res => {
                    this.edit = res.data[0]
                    console.log(this.edit);
                })
            },
            childrenClick(val) {
            childrenClick(val) {
                this.upData = val
                this.selecTech()
                this.upDia = true
            },
            writeTechByIdskill() {
                this.selecTech()
                this.upDia = true
            },
            writeTechByIdskill() {
                // console.log(this.upData.id);
                this.$axios.post(this.$api.url.writeTechByIdskill + '?id=' + this.upData.id,{
                    name:this.edit.name,
                    father:this.edit.father,
                    techTemId:this.edit.id,
                    unit:this.edit.unit
                this.$axios.post(this.$api.url.writeTechByIdskill + '?id=' + this.upData.id, {
                    name: this.edit.name,
                    father: this.edit.father,
                    techTemId: this.edit.id,
                    unit: this.edit.unit
                }, {
                    headers: {
                        "Content-Type": "application/json"
                      }
                        "Content-Type": "application/json"
                    }
                }).then(res => {
                    this.selectAllright()
                })
            },
            submitUpData() {//确定
                this.writeTechByIdskill()
                this.upDia = false
            },
            //删除
            delTechBy() {
                console.log(this.$api.url.delTechBy,this.upData.id);
                this.$axios.post(this.$api.url.delTechBy,{
                        id:this.upData.id
                }).then(res =>{
                    this.selectAllright()
                    this.$message.success('删除完成')
                })
            },
            deleteRow(index, rows) {
                this.tableData.splice(index,1)
                this.upData = rows
            submitUpData() { //确定
                this.writeTechByIdskill()
                this.upDia = false
            },
            //删除
            delTechBy() {
                console.log(this.$api.url.delTechBy, this.upData.id);
                this.$axios.post(this.$api.url.delTechBy, {
                    id: this.upData.id
                }).then(res => {
                    this.selectAllright()
                    this.$message.success('删除完成')
                })
            },
            deleteRow(index, rows) {
                this.tableData.splice(index, 1)
                this.upData = rows
                this.upData.id = rows.id
                this.delTechBy()
            },
             //批量删除
             delAllTechskill() {
                this.$axios.post(this.$api.url.delAllTechskill,{
                    ids:this.delete
                }).then(res =>{
                    this.selectAllright()
                })
            },
            dels() {
            //批量删除
            delAllTechskill() {
                this.$axios.post(this.$api.url.delAllTechskill, {
                    ids: this.delete
                }).then(res => {
                    this.selectAllright()
                })
            },
            dels() {
                this.selects.forEach(a => {
                    for (var b = 0; b < this.tableData.length; b++) {
                        if (this.tableData[b].id == a.id) {
@@ -494,7 +453,7 @@
                        }
                    }
                })
                let cc = this.selects.map(el => {
                let cc = this.selects.map(el => {
                    return el.id
                })
                this.delete = cc.join(',')
@@ -502,141 +461,152 @@
                this.delAllTechskill()
                this.$message.success('删除完成')
            },
            add() {
                this.dialogVisible = false
                this.addTechMode()
            add() {
                this.dialogVisible = false
                this.addTechMode()
                this.form = {};
            },
            electadd(value) {
                console.log(value);
                this.higherlevel.push({});
                this.form.father = value;
            },
            addTechMode() {
                this.$axios.post(this.$api.url.addTechMode,{
                    father:this.form.father,
                    name:this.form.project,
                    techTemId:this.form.name,
                    unit:this.form.unit,
                }, {
            },
            electadd(value) {
                console.log(value);
                this.higherlevel.push({});
                this.form.father = value;
            },
            addTechMode() {
                this.$axios.post(this.$api.url.addTechMode, {
                    father: this.form.father,
                    name: this.form.project,
                    techTemId: this.form.name,
                    unit: this.form.unit,
                }, {
                    headers: {
                        "Content-Type": "application/json"
                      }
                }).then(res =>{
                    this.$message.success('新增完成')
                    this.selectAllright()
                        "Content-Type": "application/json"
                    }
                }).then(res => {
                    this.$message.success('新增完成')
                    this.selectAllright()
                })
            },
            TYpe(val) {
                this.typeselect = val
                console.log(this.typeselect);
                this.selectAllleft()
            },
            edittype(val) {
                })
            },
            TYpe(val) {
                this.typeselect = val
                console.log(this.typeselect);
                this.selectAllleft()
            },
            edittype(val) {
                this.typeselect = val
                this.chooseTechFath()
            },
            //主体左
            selectAllleft() {
            this.$axios.get(this.$api.url.selectAllleft,{
                params:{type:this.typeselect,message:this.search.technology}
            }).then(res => {
                this.list = res.data;
                console.log(this.list);
                this.selectDataList()
                this.$nextTick(() => {
                this.$refs.tree.setCurrentKey(this.list[0].children[0].name) // 默认选中节点第一个
            })
            let one=this.list.filter(item=>{
            return item.children.length>0
            })[0]
            console.log(one);
            let name=one.children[0].id
            console.log(name);
            this.selectAllrightStart(name)
            this.selectDataList();
            });
            //主体左
            selectAllleft() {
                this.$axios.get(this.$api.url.selectAllleft, {
                    params: {
                        type: this.typeselect,
                        message: this.search.technology
                    }
                }).then(res => {
                    this.list = res.data;
                    console.log(this.list);
                    this.selectDataList()
                    this.$nextTick(() => {
                        this.$refs.tree.setCurrentKey(this.list[0].children[0].name) // 默认选中节点第一个
                    })
                    let one = this.list.filter(item => {
                        return item.children.length > 0
                    })[0]
                    console.log(one);
                    let name = one.children[0].id
                    console.log(name);
                    this.selectAllrightStart(name)
                    this.selectDataList();
                });
            },
            selectAllrightStart(name) {
            this.$axios.get(this.$api.url.selectAllright,{
                params:{id:name}
            }).then(res => {
                this.tableData = res.data;
                console.log(this.tableData);
            });
            selectAllrightStart(name) {
                this.$axios.get(this.$api.url.selectAllright, {
                    params: {
                        id: name
                    }
                }).then(res => {
                    this.tableData = res.data;
                    console.log(this.tableData);
                });
            },
            //
            //查询
            query(val) {
                this.selectAllleft()
            },
            //右
            selectAllright() {
            this.$axios.get(this.$api.url.selectAllright,{
                params:{id:this.checkTreeNode.id}
            }).then(res => {
                this.tableData = res.data;
                console.log(this.tableData);
            });
            //
            //查询
            query(val) {
                this.selectAllleft()
            },
            //上级
            chooseProFath() {
                console.log(this.checkTreeNode.id);
            this.$axios.get(this.$api.url.chooseProFath,{
                params:{techTemId:this.checkTreeNode.id}
            }).then(res => {
                this.higherlevel = res.data;
                console.log(this.higherlevel);
            }, {
                headers: {
                        "Content-Type": "application/json"
                      }
            })
            //右
            selectAllright() {
                this.$axios.get(this.$api.url.selectAllright, {
                    params: {
                        id: this.checkTreeNode.id
                    }
                }).then(res => {
                    this.tableData = res.data;
                    console.log(this.tableData);
                });
            },
            //工序工艺
            chooseTechFath() {
            this.$axios.get(this.$api.url.chooseTechFath,{
                params:{type:this.typeselect}
            }).then(res => {
                this.process = res.data;
                console.log(this.process);
            }, {
                headers: {
                        "Content-Type": "application/json"
                      }
            })
            //上级
            chooseProFath() {
                console.log(this.checkTreeNode.id);
                this.$axios.get(this.$api.url.chooseProFath, {
                    params: {
                        techTemId: this.checkTreeNode.id
                    }
                }).then(res => {
                    this.higherlevel = res.data;
                    console.log(this.higherlevel);
                }, {
                    headers: {
                        "Content-Type": "application/json"
                    }
                })
            },
            workevent(val){
                console.log(val);
                let idx = this.process.findIndex(el => el.name === val)
                this.craftapi = this.process[idx].children
            },
            handleNodeClick(data){
                this.checkTreeNode = data
            //工序工艺
            chooseTechFath() {
                this.$axios.get(this.$api.url.chooseTechFath, {
                    params: {
                        type: this.typeselect
                    }
                }).then(res => {
                    this.process = res.data;
                    console.log(this.process);
                }, {
                    headers: {
                        "Content-Type": "application/json"
                    }
                })
            },
            workevent(val) {
                console.log(val);
                let idx = this.process.findIndex(el => el.name === val)
                this.craftapi = this.process[idx].children
            },
            handleNodeClick(data) {
                this.checkTreeNode = data
                console.log(this.checkTreeNode.id);
                this.selectAllright()
            },
            event(){
                this.dialogVisible = true
                this.chooseProFath()
                this.chooseTechFath()
            },
            modify(){
                this.modifyevent = true
            },
            // deleteRow(index, rows) {
                // console.log();
                // rows.splice(index, 1);
            },
            event() {
                this.dialogVisible = true
                this.chooseProFath()
                this.chooseTechFath()
            },
            modify() {
                this.modifyevent = true
            },
            // deleteRow(index, rows) {
            // console.log();
            // rows.splice(index, 1);
            // },
            handleSelectionChange(val) {
            handleSelectionChange(val) {
                this.selects = val;
            },
            //编辑
        }
    }
            //编辑
        }
    }
</script>
<style scoped>
@@ -677,7 +647,7 @@
    .thing {
        width: 100%;
        height: calc(100% - 120px);
        height: calc(100% - 78px);
        background-color: #fff;
        display: flex;
    }
@@ -687,6 +657,7 @@
        height: calc(100% - 20px);
        border-right: 3px solid rgb(245, 247, 251);
        padding: 16px;
        overflow-y: auto;
    }
    .thing .left .custom-tree-node span {
@@ -726,8 +697,9 @@
        color: #004ea0;
        cursor: pointer;
    }
.firstDiv {
  /* float: left;
    .firstDiv {
        /* float: left;
  width: 20px;
  height: 20px;
  border-radius: 60px;
@@ -737,11 +709,12 @@
  display: flex;
  align-items: center;
  margin-right: 8px; */
  /* border-radius: 60px; */
}
.el-tag{
    border-radius: 50%;
}
        /* border-radius: 60px; */
    }
    .el-tag {
        border-radius: 50%;
    }
</style>
<style>
    .record_content .title .el-button * {
src/components/view/equipmentmaintain.vue
@@ -245,7 +245,6 @@
                placeholder="请输入搜索内容" 
                size="small" clearable ></el-input>
                    <el-tree :data="list" ref="tree" 
                    style="height: 500px;overflow-y: auto;"
                    :props="{children: 'children',label: 'name'}" highlight-current node-key="name" default-expand-all
                         
                        @node-click="handleNodeClick"
@@ -263,11 +262,13 @@
            <div class="right">
                <el-table
                    :data="tableData"
                    style="width: 100%;margin-bottom: 20px;"
                    style="width: 100%;margin-bottom: 20px;height: 600px;overflow: auto;"
                    row-key="name"
                    border
                    @select="selectTr"
                    @selection-change="handleSelectionChange"
                    default-expand-all
                    ref="multipleTable"
                    :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
                    <el-table-column
                    type="selection"
@@ -318,7 +319,7 @@
                        width="200px">
                        <template slot-scope="scope" style="text-align: center;">
                            <div v-if="!scope.row.children">
                        <el-button type="text" size="mini" @click="childrenClick(scope.row)">编辑</el-button>
                        <!-- <el-button type="text" size="mini" @click="childrenClick(scope.row)">编辑</el-button> -->
                        <el-button type="text" size="mini" @click="deleteRow(scope.$index, scope.row)">删除</el-button>
                            </div>
                    </template>
@@ -569,9 +570,6 @@
                console.log(this.upData.id);
                this.delQueById()
            },
            handleSelectionChange(val) {
                this.selects = val
            },
            //批量删除
            delAllQue() {
                this.$axios.post(this.$api.url.delAllQue,{
@@ -609,6 +607,52 @@
            // // filterNode(){
            // },
            handleSelectionChange(val) {
                this.deleteList = [];
                val.forEach((v) => {
                if (v.id !== undefined) {
                    this.deleteList.push(v.id);
                }
                });
            },
             // 表格树全部选中配置
                // 全选/取消选操作
                selectAll(val) {
                    this.isAllSelect = !this.isAllSelect;
                    let data = this.tableData;
                    this.toggleSelect(data, this.isAllSelect, "all");
                },
             //选择某行
            selectTr(selection, row) {
                console.log(selection,row);
                this.$set(row, "isChecked", !row.isChecked);
                this.$nextTick(() => {
                    this.isAllSelect = row.isChecked;
                    this.toggleSelect(row, row.isChecked, "tr");
                });
            },
             //递归子级
            toggleSelect(data, flag, type) {
                if (type === "all") {
                    console.log('222');
                    if (data.length > 0) {
                        data.forEach((item) => {
                        this.toggleSelection(item, flag);
                        if (item.children && item.children.length > 0) {
                            this.toggleSelect(item.children, flag, type);
                        }
                        });
                    }
                } else {
                    if (data.children && data.children.length > 0) {
                        data.children.forEach((item) => {
                        item.isChecked = !item.isChecked;
                        this.$refs.multipleTable.toggleRowSelection(item, flag);
                        this.toggleSelect(item, flag, type);
                        });
                    }
                }
            },
          
        }
    }
@@ -662,6 +706,7 @@
        height: calc(100% - 20px);
        border-right: 3px solid rgb(245, 247, 251);
        padding: 16px;
        overflow-y: auto;
    }
    .thing .left .custom-tree-node span {
src/components/view/laboratoryManagement.vue
@@ -1,8 +1,8 @@
<template>
  <div>
  <div class="laboratoryMangement">
    <el-row>
      <el-col :span="12" class="top_left_name">设备维护</el-col>
      <el-col :span="12" style="text-align: right;">
      <el-col :span="12" style="text-align: right;" class="title">
        <el-button
          @click="testItem()"
          type="primary"
@@ -39,6 +39,7 @@
                <el-form-item label="设备用途" prop="type">
                  <el-select
                    v-model="ruleForm.type"
                    @change="selectinstall"
                    placeholder="请选择设备用途"
                  >
                    <el-option label="生产设备" value="1"></el-option>
@@ -207,12 +208,11 @@
          :data="towTree"
          ref="tree"
          :props="{ children: 'children', label: 'father' }"
          node-key="id"
          node-key="father"
          default-expand-all
          highlight-current
          style="margin-top: 20px;"
          @node-click="handleNodeClick"
        >
          <div class="custom-tree-node" slot-scope="{ node, data }">
            <span
@@ -397,8 +397,10 @@
  name: "LaboratoryManagement",
  data() {
    return {
      value: "",
      dialogVisible: false,
      checkTreeNode:{},
      isCollapse: true, //默认为展开
      radio1: "true", // 分类切换
      tableData: [], // 主页表格数据
@@ -411,7 +413,7 @@
      staue_value: "", // 主页表格上方的状态选择
      // BOM树数据结构
      towTree: [],
      equipment: '',
      equipment: '1',
      equaip:'',
      ruleForm: {
        // 新增仪器表单
@@ -424,10 +426,11 @@
        name: "",
        rawInsProductId: "",
        type: "",
        treedata:{
            father:'设备组1',
        },
        // treedata:{
        //     father:'设备组1',
        // },
        equr:'',
      },
      delete:{},
      equip:1,
@@ -473,25 +476,29 @@
    this.twoTreeApi();
    // 初始化调用表格数据
    // this.tableDataApi();
    this.selectDevice()//右边
    // this.selectDevice()
  },
  methods: {
    selectDevice() {//右边数据
      console.log(this.ruleForm.treedata.father);
      console.log(this.equip);
      this.$axios.get(this.$api.url.selectDevice,{
        params:{
          father:this.ruleForm.treedata.father,
          type:this.equip,
        }
      }).then(res =>{
        console.log(res);
        this.tableData = res.data
      }, {
                headers: {
                        "Content-Type": "application/json"
                      }
      })
    handleNodeClick(val) {
      this.checkTreeNode = val
      console.log(this.checkTreeNode);
        this.selectDevice()
    },
    staueValueChange() {
      this.selectDevice()
      // this.tableData = [];
      // let val = 1;
      // if (this.radio1 === "false") {
      //   val = 2;
      // }
      // this.$axios
      //   .get(this.$api.url.tableDeviceList, {
      //     params: { type: val, deviceStatue: this.staue_value }
      //   })
      //   .then(res => {
      //     this.tableData = res.data;
      //   });
    },
    // 动态控制展开与收起和切换对应图标
    isC() {
@@ -535,14 +542,21 @@
        .catch(_ => {});
    },
    testItem() {
      this.listgroup()
      this.dialogVisible = true;
      this.$axios.get(this.$api.url.addDeviceKeeper).then(res => {
        this.keeperList = res.data;
      });
    },
    selectinstall(val) {
      this.equip = val
      this.listgroup()
    },
    listgroup() {
        this.$axios.get(this.$api.url.listgroup).then(res =>{
        this.$axios.get(this.$api.url.listgroup,{
            params:{
              type:this.equip
            }
        }).then(res =>{
            this.equaip = res.data
            console.log(this.equip);
        })
@@ -567,7 +581,51 @@
        //   }
        // });
        this.towTree = res.data;
      });
        this.$nextTick(() => {
                this.$refs.tree.setCurrentKey(this.towTree[0].father) // 默认选中节点第一个
            })
      console.log(this.towTree);
        let one=this.towTree[0]
        console.log(one);
        let name =one.father
              console.log(name);
        this.selectDeviceStart(name)
        });
    },
    selectDeviceStart(name,) {//右边数据
      this.$axios.get(this.$api.url.selectDevice,{
        params:{
          father:name,
          type:this.equip,
          deviceStatus:this.staue_value,
          message:this.codeNameModel,
        }
      }).then(res =>{
        console.log(res);
        this.tableData = res.data
      }, {
                headers: {
                        "Content-Type": "application/json"
                      }
      })
    },
    selectDevice() {//右边数据
      this.$axios.get(this.$api.url.selectDevice,{
        params:{
          father:this.checkTreeNode.father,
          type:this.equip,
          deviceStatus:this.staue_value,
          message:this.codeNameModel,
        }
      }).then(res =>{
        console.log(res);
        this.tableData = res.data
      }, {
                headers: {
                        "Content-Type": "application/json"
                      }
      })
    },
    addApi() {
      this.$axios.post(this.$api.url.addApi,{
@@ -581,9 +639,9 @@
        type:this.ruleForm.type,
      }, {headers: {"Content-Type": "application/json"}
    }).then(res =>{
      this.selectDevice()
      this.$message.success('新增成功')
      this.ruleForm = {}
      this.selectDevice()
    })
    },
    // tableDataApi() {
@@ -592,15 +650,13 @@
    //   });
    // },
    reset() {
      this.tableDataApi();
      this.radio1 = "true";
      this.codeNameModel = "";
      this.staue_value = "";
    },
    handleNodeClick(data) {
      console.log(data);
        // this.treedata = data
        this.selectDevice()
      // this.tableDataApi();
      // this.radio1 = "true";
      // this.codeNameModel = "";
      // this.staue_value = "";
      this.staue_value = ""
      this.codeNameModel = ""
      this.selectDevice()
    },
    handlerDeptList() {
      this.towTree = [];
@@ -617,24 +673,25 @@
        });
    },
    selectSearch() {
      this.tableData = [];
      if (this.radio1 === "false") {
        this.$axios
          .get(this.$api.url.tableDeviceList, {
            params: { type: 1, codeNameModel: this.codeNameModel }
          })
          .then(res => {
            this.tableData = res.data;
          });
      } else if (this.radio1 === "true") {
        this.$axios
          .get(this.$api.url.tableDeviceList, {
            params: { type: 2, codeNameModel: this.codeNameModel }
          })
          .then(res => {
            this.tableData = res.data;
          });
      }
      this.selectDevice()
      // this.tableData = [];
      // if (this.radio1 === "false") {
      //   this.$axios
      //     .get(this.$api.url.tableDeviceList, {
      //       params: { type: 1, codeNameModel: this.codeNameModel }
      //     })
      //     .then(res => {
      //       this.tableData = res.data;
      //     });
      // } else if (this.radio1 === "true") {
      //   this.$axios
      //     .get(this.$api.url.tableDeviceList, {
      //       params: { type: 2, codeNameModel: this.codeNameModel }
      //     })
      //     .then(res => {
      //       this.tableData = res.data;
      //     });
      // }
    },
    delDeviceById() {
      this.$axios.post(this.$api.url.delDeviceById,{
@@ -722,20 +779,7 @@
        }
      });
    },
    staueValueChange() {
      this.tableData = [];
      let val = 1;
      if (this.radio1 === "false") {
        val = 2;
      }
      this.$axios
        .get(this.$api.url.tableDeviceList, {
          params: { type: val, deviceStatue: this.staue_value }
        })
        .then(res => {
          this.tableData = res.data;
        });
    }
  },
 
  watch: {
@@ -951,3 +995,25 @@
  line-height: 14px;
}
</style>
<style>
    .laboratoryMangement .title *{
        font-size: 14px;
    }
    .laboratoryMangement .table_top_div *{
        font-size: 14px;
    }
    .laboratoryMangement .title .el-button {
      height: 32px;
      border: 1px solid rgba(190, 190, 190, 0.44);
      box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
      padding: 0 12px;
    }
    .laboratoryMangement .table_top_div .el-button {
      height: 32px;
      border: 1px solid rgba(190, 190, 190, 0.44);
      box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
      padding: 0 12px;
    }
</style>
src/components/view/mbom.vue
@@ -1,127 +1,96 @@
<template>
    <div class="record_content">
        <div class="title">
            <el-row>
            <el-row>
                <el-col :span="12" style="line-height: 32px;">物料清单维护</el-col>
                <el-col :span="12" style="text-align: right;">
                    <el-button type="primary" icon="el-icon-plus" style="background: #004EA2;" @click="event">新增</el-button>
                    <el-button icon="el-icon-delete" @click="dels" >删除</el-button>
                    <el-button icon="el-icon-delete" @click="dels">删除</el-button>
                </el-col>
            </el-row>
        </div>
        <div>
            <el-dialog
            title="物料清单的维护"
            :visible.sync="dialogVisible"
            width="80%"
            :before-close="handleClose" :center="true">
            <div>
                <el-form>
                <el-row :gutter="2">
                <el-col :span="8">
                    <el-form-item label="类型:">
                    <el-select v-model="search.type" size="small" placeholder="请选择" style="width: 224px;margin-right: 30px;">
                        <el-option label="橡胶连接器" :value="0"></el-option>
                        <el-option label="金属连接器" :value="1"></el-option>
                        <el-option label="湿插拔电连接器" :value="2"></el-option>
                        <el-option label="分支组件" :value="3"></el-option>
                    </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="8">
                    <el-form-item label="工序">
                            <template>
                                <el-select v-model="search.work"
                                placeholder="请选择"
                                allow-create
                                filterable
                                @change="workevent"
                                >
                                    <el-option
                                    v-for="(item,index) in process"
                                    :key="item.name"
                                    :label="item.name"
                                    :value="item.name">
                                    </el-option>
                                </el-select>
                                </template>
                        </el-form-item>
                </el-col>
                <el-col :span="8">
                    <el-form-item label="工艺名称:">
                    <el-select v-model="search.craft" size="small" placeholder="请选择" style="width: 224px;margin-right: 30px;">
                        <el-option
                            v-for="item in craftapi"
                            :key="item.id"
                            :label="item.name"
                            :value="item.id">
                            </el-option>
                    </el-select>
                </el-form-item>
                </el-col>
                </el-row>
            </el-form>
                <el-button size="mini" @click="Addrow" >添加行</el-button>
            </div>
            <div style="margin: 10px 0px;">
                <template>
                    <el-table
                    border
                    :data="tableapi"
                    height="calc(80vh - 250px)"
                    style="width: 100%">
                    <el-table-column type="index" label="序号" width="70">
                    </el-table-column>
                    <el-table-column
                        prop="date"
                        label="供应商名称"
                        width="180">
                        <template slot-scope="scope">
                            <el-input v-model="scope.row.supplier" placeholder="" ></el-input>
                        </template>
                    </el-table-column>
                    <el-table-column
                        prop=""
                        label="质量追溯号"
                        width="180">
                        <template slot-scope="scope">
                            <el-input v-model="scope.row.qualityTraceability" placeholder="" ></el-input>
                        </template>
                    </el-table-column>
                    <el-table-column
                        prop="name"
                        label="原材料名称">
                        <template slot-scope="scope">
                            <el-input v-model="scope.row.name" placeholder="" ></el-input>
                        </template>
                    </el-table-column>
                    <el-table-column
                        prop="address"
                        label="规格型号">
                        <template slot-scope="scope">
                            <el-input v-model="scope.row.specifications" placeholder="" ></el-input>
                        </template>
                    </el-table-column>
                    <el-table-column
                        prop="unit"
                        label="单位">
                        <template slot-scope="scope">
                            <el-input v-model="scope.row.unit" placeholder="" ></el-input>
                        </template>
                    </el-table-column>
                    </el-table>
                </template>
            </div>
            <span slot="footer" class="dialog-footer">
                <el-button @click="dialogVisible = false">取 消</el-button>
                <el-button type="primary" @click="skipshow">确 定</el-button>
            </span>
            </el-dialog>
        </div>
            <el-dialog title="物料清单的维护" :visible.sync="dialogVisible" width="80%" :before-close="handleClose" :center="true">
                <div>
                    <el-form>
                        <el-row :gutter="2">
                            <el-col :span="8">
                                <el-form-item label="类型:">
                                    <el-select v-model="search.type" size="small" placeholder="请选择"
                                        style="width: 224px;margin-right: 30px;">
                                        <el-option label="橡胶连接器" :value="0"></el-option>
                                        <el-option label="金属连接器" :value="1"></el-option>
                                        <el-option label="湿插拔电连接器" :value="2"></el-option>
                                        <el-option label="分支组件" :value="3"></el-option>
                                    </el-select>
                                </el-form-item>
                            </el-col>
                            <el-col :span="8">
                                <el-form-item label="工序">
                                    <template>
                                        <el-select v-model="search.work" placeholder="请选择" allow-create filterable @change="workevent">
                                            <el-option v-for="(item,index) in process" :key="item.name" :label="item.name" :value="item.name">
                                            </el-option>
                                        </el-select>
                                    </template>
                                </el-form-item>
                            </el-col>
                            <el-col :span="8">
                                <el-form-item label="工艺名称:">
                                    <el-select v-model="search.craft" size="small" placeholder="请选择"
                                        style="width: 224px;margin-right: 30px;">
                                        <el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id">
                                        </el-option>
                                    </el-select>
                                </el-form-item>
                            </el-col>
                        </el-row>
                    </el-form>
                    <el-button size="mini" @click="Addrow">添加行</el-button>
                </div>
                <div style="margin: 10px 0px;">
                    <template>
                        <el-table border :data="tableapi" height="calc(80vh - 250px)" style="width: 100%">
                            <el-table-column type="index" label="序号" width="70">
                            </el-table-column>
                            <el-table-column prop="date" label="供应商名称" width="180">
                                <template slot-scope="scope">
                                    <el-input v-model="scope.row.supplier" placeholder=""></el-input>
                                </template>
                            </el-table-column>
                            <el-table-column prop="" label="质量追溯号" width="180">
                                <template slot-scope="scope">
                                    <el-input v-model="scope.row.qualityTraceability" placeholder=""></el-input>
                                </template>
                            </el-table-column>
                            <el-table-column prop="name" label="原材料名称">
                                <template slot-scope="scope">
                                    <el-input v-model="scope.row.name" placeholder=""></el-input>
                                </template>
                            </el-table-column>
                            <el-table-column prop="address" label="规格型号">
                                <template slot-scope="scope">
                                    <el-input v-model="scope.row.specifications" placeholder=""></el-input>
                                </template>
                            </el-table-column>
                            <el-table-column prop="unit" label="单位">
                                <template slot-scope="scope">
                                    <el-input v-model="scope.row.unit" placeholder=""></el-input>
                                </template>
                            </el-table-column>
                        </el-table>
                    </template>
                </div>
                <span slot="footer" class="dialog-footer">
                    <el-button @click="dialogVisible = false">取 消</el-button>
                    <el-button type="primary" @click="skipshow">确 定</el-button>
                </span>
            </el-dialog>
        </div>
        <div class="choose">
            <span>类型:</span>
            <el-select v-model="search.type" size="small" @change="TYpe" placeholder="请选择" style="width: 224px;margin-right: 30px;">
            <span>类型:</span>
            <el-select v-model="search.type" size="small" @change="TYpe" placeholder="请选择"
                style="width: 224px;margin-right: 30px;">
                <el-option label="橡胶连接器" :value="0"></el-option>
                <el-option label="金属连接器" :value="1"></el-option>
                <el-option label="湿插拔电连接器" :value="2"></el-option>
@@ -136,15 +105,11 @@
        </div>
        <div class="thing">
            <div class="left">
                <el-input v-model="search.technology" @input="query" suffix-icon="el-icon-search" placeholder="请输入搜索内容"  size="small" clearable ></el-input>
                <el-tree
                :data="list" ref="tree"
                style="height: 500px;overflow-y: auto;"
                highlight-current
                :props="{children: 'children',label: 'name'}"
                node-key="name"
                default-expand-all
                @node-click="handleNodeClick" >
                <el-input v-model="search.technology" @input="query" suffix-icon="el-icon-search" placeholder="请输入搜索内容"
                    size="small" clearable></el-input>
                <el-tree :data="list" ref="tree" style="overflow-y: auto;" highlight-current
                    :props="{children: 'children',label: 'name'}" node-key="name" default-expand-all
                    @node-click="handleNodeClick">
                    <div class="custom-tree-node" slot-scope="{ node, data }">
                        <span><i :class="`node_i ${data.code != '[2]'?'el-icon-folder-opened':'el-icon-tickets'}`"></i>
                            {{data.code}} {{ data.name }}</span>
@@ -155,7 +120,7 @@
                </el-tree>
            </div>
            <div class="right">
                <el-table :data="tableData" border style="width: 100%;overflow-y: auto;min-height: 100%" max-height="100%"
                <el-table :data="tableData" border style="width: 100%;overflow-y: auto;min-height: 100%" max-height="100%"
                    @selection-change="handleSelectionChange" default-expand-all>
                    <el-table-column type="selection" width="50">
                    </el-table-column>
@@ -176,48 +141,48 @@
        </div>
        <!-- <el-dialog title="编辑记录内容" :visible.sync="upDia" width="500px">
            <div class="body">
            </div>
        </el-dialog> -->
    </div>
</template>
<script>
export default {
    export default {
        data() {
            return {
              search:{
                search: {
                    type: 0,
                    technology: ''
                },
              list:[],
                process:{},
                list: [],
                process: {},
                // handleClose:[],
                checkTreeNode:{
                    id:2,
                    id:'',
                },
                tableData:[],
                tableapi:[{
                    supplier:'',
                    qualityTraceability:'',
                    name:'',
                    specifications:'',
                    unit:'',
                    }],
                addsearch:{},
                upData:{},
                form:{},
                dialogVisible:false,
                typeselect:0,
                input:'',
                craftapi:[],
            }
        },
        mounted() {
            this.selectAllleft()
            this.selectAllMbom()
                tableData: [],
                tableapi: [{
                    supplier: '',
                    qualityTraceability: '',
                    name: '',
                    specifications: '',
                    unit: '',
                }],
                addsearch: {},
                upData: {},
                form: {},
                dialogVisible: false,
                typeselect: 0,
                input: '',
                craftapi: [],
            }
        },
        methods:{
        mounted() {
            this.selectAllleft()
            this.selectAllMbom()
        },
        methods: {
            selectDataList() {
                this.list.forEach(a => {
                    a.code = '[1]'
@@ -234,35 +199,39 @@
                })
                this.upIndex++
            },
             workevent(val){
                console.log(val);
                let idx = this.process.findIndex(el => el.name === val)
                this.craftapi = this.process[idx].children
            },
            workevent(val) {
                console.log(val);
                let idx = this.process.findIndex(el => el.name === val)
                this.craftapi = this.process[idx].children
            },
            //新增
            chooseTechFath() {
            this.$axios.get(this.$api.url.chooseTechFath,{
                params:{type:this.typeselect}
            }).then(res => {
                this.process = res.data;
                console.log(this.process);
            }, {
                headers: {
                        "Content-Type": "application/json"
                      }
            })
                this.$axios.get(this.$api.url.chooseTechFath, {
                    params: {
                        type: this.typeselect
                    }
                }).then(res => {
                    this.process = res.data;
                    console.log(this.process);
                }, {
                    headers: {
                        "Content-Type": "application/json"
                    }
                })
            },
            addMbom(data) {
                this.$axios.post(this.$api.url.addMbom,data
                // {
                    // name:this.tableapi.name,
                    // qualityTraceability:this.tableapi.qualityTraceability,
                    // specifications:this.tableapi.specifications,
                    // supplier:this.tableapi.supplier,
                    // techTemId:this.craftapi.id,
                    // unit:this.tableapi.unit,
                // }
                , {
                this.$axios.post(this.$api.url.addMbom,data,{
                    // params:{
                    //     techTemId:this.craftapi.id,
                    //     mbomModelDto2List:[{
                    //         name:this.tableapi.name,
                    //         qualityTraceability:this.tableapi.qualityTraceability,
                    //         specifications:this.tableapi.specifications,
                    //         supplier:this.tableapi.supplier,
                    //         unit:this.tableapi.unit,
                    //     }]
                    // }
                }, {
                    headers: {
                        "Content-Type": "application/json"
                      }
@@ -276,11 +245,11 @@
            //删除
            material(index) {
                console.log(this.upData.id);
                this.$axios.post(this.$api.url.material,{
                    id:this.upData.id
                }).then(res =>{
                this.$axios.post(this.$api.url.material, {
                    id: this.upData.id
                }).then(res => {
                    this.$message.success(res.message)
                    this.tableData.splice(index,1)
                    this.tableData.splice(index, 1)
                    // console.log(res);
                })
@@ -305,16 +274,23 @@
                this.$nextTick(() => {
                this.$refs.tree.setCurrentKey(this.list[0].children[0].name) // 默认选中节点第一个
            })
                let one=this.list.filter(item=>{
                return item.children.length>0
                })[0]
                console.log(one);
                let name=one.children[0].id
                console.log(name);
                this.selectAllMbomStart(name)
                this.selectDataList();
            }, {
                headers: {
                        "Content-Type": "application/json"
                      }
            })
            },
            //右边
            selectAllMbom() {
            selectAllMbomStart(name) {
            this.$axios.get(this.$api.url.selectAllMbom,{
                params:{id:this.checkTreeNode.id}
                params:{id:name}
            }).then(res => {
                this.tableData = res.data;
                console.log(this.tableData);
@@ -324,50 +300,62 @@
                      }
            })
            },
            //右边
            selectAllMbom() {
                this.$axios.get(this.$api.url.selectAllMbom, {
                    params: {
                        id: this.checkTreeNode.id
                    }
                }).then(res => {
                    this.tableData = res.data;
                    console.log(this.tableData);
                }, {
                    headers: {
                        "Content-Type": "application/json"
                    }
                })
            },
            handleNodeClick(data){
                this.checkTreeNode = data
                console.log(data);
                console.log(this.checkTreeNode.id);
                this.selectAllMbom()
            },
            },
            handleClose(done) {
                this.$confirm('确认关闭?')
                .then(_ => {
                    done();
                })
                .catch(_ => {});
                    .then(_ => {
                        done();
                    })
                    .catch(_ => {});
            },
            //新增
            event(){
                this.dialogVisible = true
                this.chooseTechFath()
            },
            //添加行
             Addrow() {
            if (this.tableapi == undefined) {
                this.tableapi = new Array();
            }
            let obj = [];
            this.tableapi.push(obj);
            },
            skipshow(){
            skipshow() {
                console.log('666');
                let data = this.tableapi.at(-1)
                // this.addMbom()
                data.techTemId = this.search.craft
                // console.log(this.search.craft);
                // console.log(data);
                this.addMbom(data)
                this.dialogVisible = false
            },
            //delAllMbom 批量删除
            delAllMbom() {
                this.$axios.post(this.$api.url.delAllMbom,{
                    ids:this.delete
                }).then(res =>{
                    this.selectAllMbom()
                })
            },
                this.$axios.post(this.$api.url.delAllMbom, {
                    ids: this.delete
                }).then(res => {
                    this.selectAllMbom()
                })
            },
            dels() {
                this.selects.forEach(a => {
                    for (var b = 0; b < this.tableData.length; b++) {
@@ -396,8 +384,8 @@
                this.material(index)
            },
        }
    }
        }
    }
</script>
<style scoped>
@@ -416,7 +404,8 @@
    .title * {
        font-size: 16px;
    }
    .choose-1{
    .choose-1 {
        padding: 5px 24px;
        display: flex;
        align-items: center;
@@ -455,6 +444,7 @@
        height: calc(100% - 20px);
        border-right: 3px solid rgb(245, 247, 251);
        padding: 16px;
        overflow-y: auto;
    }
    .thing .left .custom-tree-node span {
src/components/view/record-content.vue
@@ -46,6 +46,7 @@
        height: calc(100% - 20px);
        border-right: 3px solid rgb(245, 247, 251);
        padding: 16px;
        overflow-y: auto;
    }
    .thing .left .custom-tree-node span {
@@ -141,7 +142,6 @@
            <div class="left">
                <el-input v-model="search.technology" suffix-icon="el-icon-search" placeholder="请输入搜索内容" size="small" clearable @input="query"></el-input>
                <el-tree :data="list" ref="tree"
                style="height: 500px;overflow-y: auto;"
                :props="{children: 'children',label: 'name'}" node-key="name" default-expand-all
                    @node-click="handleNodeClick" highlight-current
                    :key="upIndex">
src/components/view/sale.vue
@@ -132,9 +132,8 @@
            <span>状态:</span>
            <el-select v-model="search.type" size="small" placeholder="请选择" style="width: 224px;margin-right: 30px;">
                <el-option label="全部" :value="null"></el-option>
                <el-option label="通过" :value="0"></el-option>
                <el-option label="不通过" :value="1"></el-option>
                <el-option label="未审核" :value="2"></el-option>
                <el-option label="通过" :value="1"></el-option>
                <el-option label="不通过" :value="0"></el-option>
            </el-select>
            <span>交货日期:</span>
            <el-date-picker v-model="search.delTime" size="small" placeholder="请输入" style="width: 224px;margin-right: 30px;"
@@ -174,7 +173,8 @@
                        <span class="table_do" @click="changeShowDetail(scope.row)">&nbsp;查看详情&nbsp;</span>
                        <span class="table_do" v-if="scope.row.type==null" @click="saleCheck(scope)">&nbsp;审核&nbsp;</span>
                        <span class="table_do" v-else>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
                        <span class="table_do" @click="openUpDia(scope.row.id)">&nbsp;编辑&nbsp;</span>
                        <span class="table_do" v-if="scope.row.type==null" @click="openUpDia(scope.row.id)">&nbsp;编辑&nbsp;</span>
                        <span class="table_do" v-else>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
                        <span class="table_do" @click="delSale(scope.$index)">&nbsp;删除&nbsp;</span>
                    </template>
                </el-table-column>
@@ -402,7 +402,7 @@
                    delTime: null
                },
                tableData: [],
                selects: [],
                selects: '',
                currentPage: 1,
                countSize: 0,
                pageSize: 10,
@@ -430,7 +430,13 @@
        },
        methods: {
            handleSelectionChange(val) {
                this.selects = val.id;
                this.selects = ''
                val.forEach((a, ai)=>{
                    this.selects += a.id
                    if(ai!=val.length-1){
                        this.selects += ','
                    }
                })
            },
            handleSizeChange(val) {
                this.pageSize = val
@@ -456,7 +462,7 @@
                })
            },
            clean() {
                this.selects = []
                this.selects = ''
                this.currentPage = 1
                this.countSize = 0
                this.pageSize = 10
@@ -464,7 +470,8 @@
                    formTime: null,
                    createTime: null,
                    insState: 2,
                    judgeState: 2
                    judgeState: 2,
                    type: null
                }
                this.selectRawInspectsList()
            },
@@ -565,7 +572,6 @@
                })
            },
            upSale() {
                console.log(this.addData);
                for (var b = 0; b < this.addData.saleMaterialList.length; b++) {
                    if (Object.keys(this.addData.saleMaterialList[b]).length == 0) {
                        this.addData.saleMaterialList.splice(b, 1)
@@ -581,7 +587,8 @@
                    }
                }
                for (var a in this.addData) {
                    if ((this.addData[a] == null || this.addData[a] == '') && a != 'type') {
                    console.log(a);
                    if ((this.addData[a] == null || this.addData[a] == '') && a!='checkname' && a!='checkTime' && a != 'type') {
                        if (a == 'saleMaterialList') {
                            this.$message.error('产品信息不能为空')
                        } else {
@@ -612,13 +619,12 @@
                })
            },
            delSales(){
                console.log(this.selects);
                if(this.selects=='') {
                    this.$message.warning('请选择一条数据删除')
                    return
                }
                this.axios.post(this.$api.url.delAllSale,{
                    ids: this.selects
                }, {
                    headers: {
                        'Content-Type': 'application/json'
                    }
                }).then(res=>{
                    this.$message.success('删除成功')
                    this.selectRawInspectsList()
src/components/view/self-inspection.vue
@@ -141,7 +141,7 @@
        <div class="thing">
            <div class="left">
                <el-input v-model="search.technology" suffix-icon="el-icon-search" placeholder="请输入搜索内容" size="small" clearable @input="(val)=>$refs.tree.filter(val)"></el-input>
                <el-tree :data="list" style="height: 500px;overflow-y: auto;" ref="tree" :props="{children: 'children',label: 'name'}" node-key="name" default-expand-all
                <el-tree :data="list" ref="tree" :props="{children: 'children',label: 'name'}" node-key="name" default-expand-all
                    @node-click="handleNodeClick" highlight-current @node-expand="nodeOpen" @node-collapse="nodeClose" :filter-node-method="filterNode"
                    :key="upIndex">
                    <div class="custom-tree-node" slot-scope="{ node, data }">
src/components/view/standard-table/material.vue
@@ -40,6 +40,11 @@
              <el-table-column prop="unit" label="单位">
              </el-table-column>
              <el-table-column prop="num" label="数量">
                <template slot-scope="scope">
                  <el-input v-model="scope.row.num"
                    v-if="scope.row.mname != null"
                    @blur="updateVal(scope.row)"></el-input>
                </template>
              </el-table-column>
            </el-table>
          </div>
@@ -51,13 +56,25 @@
      data() {
        return {
          hasChildren:true,
          selects: []
          selects: [],
          isAllSelect:false,
          deleteList:[],
        }
      },
      props:['tableData','tableType'],
      created() {},
      mounted() {},
      methods: {
        updateVal(row){
          this.$axios.post(this.$api.url.mBomWrite,{
            id : row.id,
            num : row.num
          }).then(res=>{
            this.$message.success(res.message);
          }).catch(error=>{
            this.$message.error(error.message);
          })
        },
        // 表格树全部选中配置
        // 全选/取消选操作
        selectAll(val) {
@@ -94,14 +111,33 @@
            }
          }
        },
        handleSelectionChange(val) {
          this.deleteList = [];
          val.forEach((v) => {
            if (v.id !== undefined) {
              this.deleteList.push(v.id);
        //改变选中
        toggleSelection(row, flag) {
          this.$set(row, "isChecked", flag);
          this.$nextTick(() => {
            if (flag) {
              this.$refs.multipleTable.toggleRowSelection(row, flag);
            } else {
              this.$refs.multipleTable.clearSelection();
            }
          });
        },
        handleSelectionChange(val) {
        this.deleteList = [];
        val.forEach((v) => {
          this.searchIdFun(v);
        });
        this.$emit("childData",this.deleteList);
      },
      //递归查找选中数据id
      searchIdFun(data){
        let obj = data;
        if(obj.children != undefined){
          this.searchIdFun(obj.children);
        }else{
          this.deleteList.push(obj.id);
        }
      },
        // 表格树全部选中配置  结束
      }
    }
@@ -146,8 +182,8 @@
    .standard .el-table__body {
      height: 100%;
    }
    .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){
    /* .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){
      padding-left: 23px !important;
     }
     } */
  </style>
  
src/components/view/standard-table/product.vue
@@ -35,9 +35,9 @@
    /* .standard .el-table__body {
      height: 100%;
    } */
    .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){
    /* .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){
      padding-left: 23px !important;
     }
     } */
</style>
<template>
    <div class="standard">
@@ -69,12 +69,18 @@
        </el-table-column>
        <el-table-column prop="productFather" label="项目">
          <template slot-scope="scope">
                <el-tag type="info" v-if="scope.row.productFather != null">03</el-tag>
                <el-tag type="info" v-if="scope.row.productFather != null">04</el-tag>
                <span>{{scope.row.productFather}}</span>
            </template>
        </el-table-column>
        <el-table-column prop="productFather" hidden></el-table-column>
        <el-table-column prop="unit" label="单位"></el-table-column>
        <el-table-column prop="product" label="指标"></el-table-column>
        <el-table-column label="操作">
          <template slot-scope="scope">
            <el-button type="text" @click="updateProduct(scope.row)">编辑</el-button>
          </template>
        </el-table-column>
        </el-table>
    </div>
</template>
@@ -85,10 +91,14 @@
        deviceGroupDialog:false,
        selects: [],
        isAllSelect:false,
        deleteList:[],
      }
    },
    props:['tableData','tableType'],
    methods:{
      updateProduct(row){
        console.log(row);
      },
        // 表格树全部选中配置
      // 全选/取消选操作
      selectAll(val) {
@@ -125,13 +135,32 @@
          }
        }
      },
      //改变选中
      toggleSelection(row, flag) {
        this.$set(row, "isChecked", flag);
        this.$nextTick(() => {
          if (flag) {
            this.$refs.multipleTable.toggleRowSelection(row, flag);
          } else {
            this.$refs.multipleTable.clearSelection();
          }
        });
      },
      handleSelectionChange(val) {
        this.deleteList = [];
        val.forEach((v) => {
          if (v.id !== undefined) {
            this.deleteList.push(v.id);
          }
          this.searchIdFun(v);
        });
        this.$emit("childData",this.deleteList);
      },
      //递归查找选中数据id
      searchIdFun(data){
        let obj = data;
        if(obj.children != undefined){
          this.searchIdFun(obj.children);
        }else{
          this.deleteList.push(obj.tqid);
        }
      },
      // 表格树全部选中配置  结束
    }
src/components/view/standard-table/target.vue
@@ -57,6 +57,8 @@
      data() {
        return {
          selects: [],
          deleteList:[],
          isAllSelect:false,
        }
      },
      props:['tableData','tableType'],
@@ -99,13 +101,32 @@
          }
        }
      },
      //改变选中
      toggleSelection(row, flag) {
        this.$set(row, "isChecked", flag);
        this.$nextTick(() => {
          if (flag) {
            this.$refs.multipleTable.toggleRowSelection(row, flag);
          } else {
            this.$refs.multipleTable.clearSelection();
          }
        });
      },
      handleSelectionChange(val) {
        this.deleteList = [];
        val.forEach((v) => {
          if (v.id !== undefined) {
            this.deleteList.push(v.id);
          }
          this.searchIdFun(v);
        });
        this.$emit("childData",this.deleteList);
      },
      //递归查找选中数据id
      searchIdFun(data){
        let obj = data;
        if(obj.children != undefined){
          this.searchIdFun(obj.children);
        }else{
          this.deleteList.push(obj.pid);
        }
      },
      // 表格树全部选中配置  结束
        updateVal(row){
@@ -118,9 +139,6 @@
          }).catch(error=>{
            this.$message.error(error.message);
          })
        },
        handleSelectionChange(val) {
          this.selects = val;
        },
      }
    }
@@ -169,8 +187,8 @@
    /* .standard .el-table__body {
      height: 100%;
    } */
    .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){
    /* .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){
      padding-left: 23px !important;
     }
     } */
  </style>
  
src/components/view/standard-table/technology.vue
@@ -67,16 +67,10 @@
    props:['tableData','tableType'],
    created() {},
    mounted() {
    },
    methods: {
      // 表格树全部选中配置
      // 全选/取消选操作
      selectAll(val) {
        this.isAllSelect = !this.isAllSelect;
        let data = this.tableData;
        this.toggleSelect(data, this.isAllSelect, "all");
      },
      //选择某行
          selectTr(selection, row) {
        this.$set(row, "isChecked", !row.isChecked);
@@ -106,13 +100,37 @@
          }
        }
      },
      //改变选中
      toggleSelection(row, flag) {
        this.$set(row, "isChecked", flag);
        this.$nextTick(() => {
          if (flag) {
            this.$refs.multipleTable.toggleRowSelection(row, flag);
          } else {
            this.$refs.multipleTable.clearSelection();
          }
        });
      },
      selectAll(val) {
        this.isAllSelect = !this.isAllSelect;
        let data = this.tableData;
        this.toggleSelect(data, this.isAllSelect, "all");
      },
      handleSelectionChange(val) {
        this.deleteList = [];
        val.forEach((v) => {
          if (v.id !== undefined) {
            this.deleteList.push(v.id);
          }
          this.searchIdFun(v);
        });
        this.$emit("childData",this.deleteList);
      },
      //递归查找选中数据id
      searchIdFun(data){
        let obj = data;
        if(obj.children != undefined){
          this.searchIdFun(obj.children);
        }else{
          this.deleteList.push(obj.id);
        }
      },
      // 表格树全部选中配置  结束
      showDialog(){
@@ -189,7 +207,7 @@
  /* .standard .el-table__body {
    height: 100%;
  } */
  .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){
  /* .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){
    padding-left: 23px !important;
   }
   } */
</style>
src/components/view/standard.vue
@@ -5,9 +5,9 @@
        <el-col :span="12" style="line-height: 32px;">标准BOM</el-col>
        <el-col :span="12" style="text-align: right;">
          <el-button type="primary" icon="el-icon-plus" style="background: #004EA2;"
            @click="bomAddModelVisible = true">新增</el-button>
          <el-button icon="el-icon-plus">新增版本</el-button>
          <el-button @click="bomRightDl=true" icon="el-icon-delete">删除</el-button>
            @click="showBomAddModel">新增</el-button>
          <el-button icon="el-icon-plus" @click="addVersionBtn">新增版本</el-button>
          <el-button @click="deleteDataBtn" icon="el-icon-delete">删除</el-button>
        </el-col>
      </el-row>
    </div>
@@ -32,8 +32,6 @@
          </div>
        </el-tree>
      </div>
      <div class="right">
        <div class="choose">
          <span>类型:</span>
@@ -45,10 +43,10 @@
            <el-option :value="3" label="生产工艺"></el-option>
          </el-select>
          <span>{{ tableType == 1 ? '项目:' : '工艺名称:' }}</span>
          <el-input v-model="searchName" size="small" placeholder="请输入" style="width: 224px;margin-right: 24px;"
          <el-input v-model="searchName" size="small" placeholder="请输入" style="width: 224px;margin-right: 50px;"
            clearable></el-input>
          <span>{{ tableType == 1 ? '版本:' : '版本:' }}</span>
          <el-select v-model="VER" @change="verevent" style="width: 280px;" placeholder="请选择">
          <span>版本:</span>
          <el-select v-model="version2" @change="verevent" size="small" style="width: 280px;margin-right: 10px;" placeholder="请选择">
            <el-option v-for="item in version" :key="item" :label="item" :value="item">
            </el-option>
          </el-select>
@@ -58,16 +56,17 @@
        </div>
        <div class="contentTable" v-if="this.typeselect == 0">
          <technology  :tableType="tableType" :tableData="tableData"></technology>
          <technology @childData="getChildData"  :tableType="tableType" :tableData="tableData"></technology>
        </div>
        <div v-if="this.typeselect == 1">
          <target :tableType="tableType" :tableData="tableData"></target>
          <target @childData="getChildData" :tableType="tableType" :tableData="tableData"></target>
        </div>
        <div v-if="this.typeselect == 2">
          <bom  :tableType="tableType" :tableData="tableData"></bom>
          <material @childData="getChildData" :tableType="tableType" :tableData="tableData"></material>
        </div>
        <div v-if="this.typeselect == 3">生产工艺</div>
        <div v-if="this.typeselect == 3">
          <product @childData="getChildData" :tableType="tableType" :tableData="tableData"></product>
        </div>
      </div>
    </div>
@@ -155,45 +154,82 @@
        <!-- 物料清单 -->
        <div v-if="typeselect == 2">
          <el-form :model="materialForm" label-position="right"
          :rules="materialRules" ref="materialForm" label-width="80px">
          <el-row>
          :rules="materialRules" ref="materialForm" label-width="90px">
          <el-row :gutter="100">
            <el-col :span="12">
              <el-form-item label="规格型号:" width="250">
                <el-input style="width:200px;" v-model="materialForm.pname" placeholder="请输入单位"/>
              </el-form-item>
              <el-form-item label="工序:" prop="mfather">
                <el-select placeholder="请选择工序" @change="changeMName"
                  style="width:100%;" v-model="materialForm.mfather">
                  <el-option v-for="(item,index) in materialFormList" :key="index"
                  :label="item.name" :value="item.name" ></el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="12" style="text-align: right;">
              <el-form-item label="产品大类:" width="250">
                <el-select placeholder="请选择产品大类"
                style="width:240px;" v-model="materialForm.dg">
                <el-option value="1">1</el-option>
                  <el-option value="2">2</el-option>
                  <el-option value="3">3</el-option>
                  <el-option value="4">4</el-option>
              <el-col :span="12">
              <el-form-item label="工艺名称:" prop="mtechnologyId">
                <el-select placeholder="请选择工艺名称" style="width:100%;"
                v-model="materialForm.mtechnologyId">
                <el-option v-for="(item,index) in mIdList" :key="index"
                :value="item.id" :label="item.name"></el-option>
                </el-select>            
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="材料信息"></el-form-item>
              <el-form-item label="材料信息" style="font-weight: bold;"></el-form-item>
            </el-col>
            <el-col :span="12" style="text-align: right;">
              <el-button size="mini" style="text-align: right;">添加行</el-button>
              <el-button size="mini" @click="addRowByMaterial">添加行</el-button>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="24">
              <el-table >
                <el-table-column label="材料名称"></el-table-column>
                <el-table-column label="规格型号"></el-table-column>
                <el-table-column label="单位"></el-table-column>
                <el-table-column label="数量"></el-table-column>
              <el-table :data="materialForm.tableList" border max-height="470"
              style="width:100%;text-align: left;margin: 0;padding: 0;"
              :cell-style="{height:'20px',textAlign:'left'}"
              :header-cell-style="{height:'20px'}">
                <el-table-column label="供应商名称">
                  <template slot-scope="scope">
                      <el-input size="mini" v-model="scope.row.supplier"
                      placeholder="请输入"></el-input>
                  </template>
                </el-table-column>
                <el-table-column label="质量追溯号">
                  <template slot-scope="scope">
                      <el-input size="mini" v-model="scope.row.qualityTraceability"
                      placeholder="请输入"></el-input>
                  </template>
                </el-table-column>
                <el-table-column label="原材料名称">
                  <template slot-scope="scope">
                      <el-input size="mini" v-model="scope.row.name"
                      placeholder="请输入"></el-input>
                  </template>
                </el-table-column>
                <el-table-column label="规格型号">
                  <template slot-scope="scope">
                      <el-input size="mini" v-model="scope.row.specifications"
                      placeholder="请输入"></el-input>
                  </template>
                </el-table-column>
                <el-table-column label="单位">
                  <template slot-scope="scope">
                      <el-input size="mini" v-model="scope.row.unit"
                      placeholder="请输入"></el-input>
                  </template>
                </el-table-column>
                <el-table-column label="数量">
                  <template slot-scope="scope">
                      <el-input size="mini" v-model="scope.row.num"
                      placeholder="请输入"></el-input>
                  </template>
                </el-table-column>
              </el-table>
            </el-col>
          </el-row>
          </el-form>
          <div style="width:100%;text-align: right;">
          <div style="width:100%;margin-top: 20px;margin-left:75%">
            <span slot="footer" class="dialog-footer" >
              <el-button type="primary" @click="confirmAdd('materialForm')">确 定</el-button>
              <el-button @click="bomAddModelVisible = false">取 消</el-button>
@@ -203,52 +239,49 @@
        <!-- 生产工艺 -->
        <div v-if="typeselect == 3">
          <el-form :model="productForm" :inline="true" label-position="right"
          label-width="80px">
            <el-form-item label="工序:" width="250">
              <el-select v-model="productForm.father"
              style="width:200px;"
              placeholder="请输入或选择生产定额">
                <el-option value="1">1</el-option>
                <el-option value="2">2</el-option>
                <el-option value="3">3</el-option>
                <el-option value="4">4</el-option>
          :rules="productRules" ref="productForm" label-width="90px">
            <el-form-item label="工序:" prop="profather">
              <el-select v-model="productForm.profather"
              style="width:200px;" @change="changeProduct"
              placeholder="请选择工序">
                <el-option v-for="(item,index) in productFormList" :key="index"
                :value="item.name" :label="item.name"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="工艺名称:" width="250">
              <el-select placeholder="请输入或选择工艺名称"
              style="width:200px;"
              v-model="productForm.name">
              <el-option value="1">1</el-option>
                <el-option value="2">2</el-option>
                <el-option value="3">3</el-option>
                <el-option value="4">4</el-option>
            <el-form-item label="工艺名称:" prop="protechnologyId">
              <el-select placeholder="请选择工艺名称"
              style="width:200px;" @change="getProductDeviceList"
              v-model="productForm.protechnologyId">
              <el-option v-for="(item,index) in proIdList" :key="index"
                :value="item.id" :label="item.name"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="设备:" width="250">
            <el-form-item label="设备:" prop="device">
              <el-select placeholder="请选择设备"
              style="width:200px;"
              v-model="productForm.dg">
              <el-option value="1">1</el-option>
                <el-option value="2">2</el-option>
                <el-option value="3">3</el-option>
                <el-option value="4">4</el-option>
              v-model="productForm.device">
              <el-option v-for="(item,index) in productDeviceList" :key="index"
                :value="item.device" :label="item.device"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="项目:" width="250">
            <el-form-item label="项目:" prop="productFather">
              <el-select placeholder="请选择项目"
              style="width:200px;"
              v-model="productForm.dg">
              <el-option value="1">1</el-option>
                <el-option value="2">2</el-option>
                <el-option value="3">3</el-option>
                <el-option value="4">4</el-option>
              style="width:200px;" @change="changeProductFather"
              v-model="productForm.productFather">
              <el-option v-for="(item,index) in productProjectList" :key="index"
                :value="item.name" :label="item.name"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="单位:" width="250">
              <el-input style="width:200px;" v-model="productForm.unit" placeholder="请输入单位"/>
            <el-form-item label="指标:" prop="product">
              <el-select placeholder="请选择指标"
                style="width:200px;" @change="changeProProduct"
                v-model="productForm.product">
                <el-option v-for="(item,index) in proProductList" :key="index"
                :value="item.name" :label="item.name"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="指标:" width="250">
              <el-input style="width:200px;" v-model="productForm.pq" placeholder="请输入指标" />
            <el-form-item label="单位:" prop="unit">
              <el-input style="width:200px;" disabled v-model="productForm.unit"/>
            </el-form-item>
          </el-form>
          <div style="width:100%;text-align: right;">
@@ -300,10 +333,11 @@
<script>
import technology from "./standard-table/technology.vue"
import material from "./standard-table/material.vue"
// import bom from "./standard-table/bom.vue"
import target from "./standard-table/target.vue"
import product from "./standard-table/product.vue"
import bomClickAdd from '@/components/view/standard-box/bomClickAdd'
export default {
  components: { technology,material,bomClickAdd },
  components: { technology,material,target,product,bomClickAdd },
  data() {
    var checkPq = (rule,value,callback)=>{
@@ -320,14 +354,11 @@
      callback();
    };
    return {
      //技术指标-新增-工序,工艺下拉框数据
      targetFormList:[],
      technologyIdList:[],
      //技术指标-新增-项目下拉框数据
      projectList:[],
      //子组件传的id列表
      childIds:[],
      //工序列表
      technologyIdList:[],
      fatherList:[],
      //设备组列表
      deviceList:[],
      technologyForm:{
        tefather:'',
@@ -335,6 +366,15 @@
        deviceGroup:'',
        productionQuota:''
      },
      technologyRules:{
        tefather:{required:true,message:'工序不能为空',trigger:'change'},
        tename:{required:true,message:'工艺名称不能为空',trigger:'blur'},
        deviceGroup:{required:true,message:'设备组不能为空',trigger:'change'},
        productionQuota:{validator:checkPq,trigger:'change'}
      },
      //技术指标
      targetFormList:[],
      projectList:[],
      targetForm:{
        pfather:'',
        father: '',
@@ -343,14 +383,6 @@
        unit:'',
        internal:'',
        required: ''
      },
      materialForm:{},
      productForm:{},
      technologyRules:{
        tefather:{required:true,message:'工序不能为空',trigger:'change'},
        tename:{required:true,message:'工艺名称不能为空',trigger:'blur'},
        deviceGroup:{required:true,message:'设备组不能为空',trigger:'change'},
        productionQuota:{validator:checkPq,trigger:'change'}
      },
      targetRules:{
        pfather:{required:true,message:'工序不能为空',trigger:'change'},
@@ -361,16 +393,47 @@
        internal:{validator:checkVal,trigger:'change'},
        required:{validator:checkVal,trigger:'change'}
      },
      //物料清单
      materialForm:{
        mfather: '',
        mtechnologyId:'',
        tableList:[]
      },
      materialFormList:[],
      mIdList:[],
      materialRules:{
        mfather:{required:true,message:'工序不能为空',trigger:'change'},
        mtechnologyId:{required:true,message:'工艺名称不能为空',trigger:'change'},
      },
      //生产工艺
      productForm:{
        profather:'',
        protechnologyId:'',
        productFather:'',
        product:'',
        unit:'',
        device:''
      },
      //设备列表
      productDeviceList:[],
      //工艺名称列表
      proIdList:[],
      //项目列表
      productProjectList:[],
      //指标列表
      proProductList:[],
      productRules:{
        profather:{required:true,message:'工序不能为空',trigger:'change'},
        protechnologyId:{required:true,message:'工艺名称不能为空',trigger:'change'},
        productFather:{required:true,message:'项目不能为空',trigger:'change'},
        product:{required:true,message:'指标不能为空',trigger:'change'},
        device:{required:true,message:'设备不能为空',trigger:'change'}
      },
      productFormList:[],
      // BOM树数据结构
      list: [],
      search: null,
      tableType: 1, // 表格类型 1:技术指标,0:工艺路线
      tableType: 0, // 表格类型 1:技术指标,0:工艺路线
      searchName: "",// 查询条件-名称
      checkTreeNode: {},// 点击选中树节点
      tableData: [],
@@ -380,9 +443,7 @@
      bomRightDl: false,
      formTypeOptions: null,
      typeselect: 0,
      returntree: {
        id:28,
      },
      returntree: {id:28},
      version: {},
      leftAdd:{
        type: [],
@@ -391,7 +452,7 @@
        name: null,
        specifications: null
      },
      VER: {},
      version2: {},
      verdata: {},
      character: 0,
      restaurants: [],
@@ -515,6 +576,69 @@
    leftAddBom(){
      
    },
    //获取子组件数据
    getChildData(data){
      this.childIds = data;
    },
    //删除按钮
    deleteDataBtn(){
      let ids;
      let url;
      ids = this.childIds.filter(item=>{
        return item != undefined;
      });
      if(ids.length < 1){
        this.$message.error("请先选择数据!");
        return;
      }
      switch(this.typeselect){
        case 0:
          url = this.$api.url.delAllByTechnology;
          break;
        case 1:
          url = this.$api.url.delAllByTarget;
          break;
        case 2:
          url = this.$api.url.delAllByMBom;
          break;
        case 3:
          url = this.$api.url.delAllByProduct;
          break;
      }
      this.$confirm('确认删除已选中的数据吗', '删除', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          this.$axios.post(url,{
            ids : ids.join(",")
          }).then(res=>{
            this.selectAll();
            this.$message.success(res.message);
          }).catch(error=>{
            this.$message.error(error.message);
          })
        }).catch(() => {});
    },
    //新增版本
    addVersionBtn(){
        this.$confirm('确认新增版本吗', '新增版本', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'info'
        }).then(() => {
          this.$axios.post(this.$api.url.addVersion,{
            specificationsId : this.returntree.id,
            version : this.version2.substring(1,2),
          }).then(res=>{
            this.selectVersion();
            this.$message.success(res.message);
          }).catch(error=>{
            this.$message.error(error.message);
          })
        }).catch(() => {});
    },
    //右侧bom,确认新增
    confirmAdd(formName){
      this.$refs[formName].validate(valid=>{
        if(valid){
@@ -531,8 +655,25 @@
              this.submitBomAdd(this.$api.url.addTechnology,obj);
          }else if(type == 1){
            this.submitBomAdd(this.$api.url.addProductByStandard,this.targetForm);
          }else if(type == 2){
            obj = {
              mbomDto2List:this.materialForm.tableList,
              technologyId:this.materialForm.mtechnologyId
            }
            this.submitBomAdd(this.$api.url.addMBomByStandard,obj);
          }else if(type == 3){
                let form = this.productForm;
                obj = {
                    device: form.device,
                    product: form.product,
                    productFather: form.productFather,
                    technologyId: form.protechnologyId,
                    unit: form.unit
                }
                this.submitBomAdd(this.$api.url.addTechniqueByStandard,obj);
          }else{
            return
          }
        }
      })
    },
@@ -576,7 +717,35 @@
        this.technologyIdList = arr[0].children;
      }
    },
    //获取工序,工艺列表
    //物料清单--添加行
    addRowByMaterial(){
      let obj = {
        "name": "",
        "num": null,
        "qualityTraceability": "",
        "specifications": "",
        "supplier": "",
        "unit": ""
      }
      this.materialForm.tableList.push(obj);
    },
    //物料清单--获取工序,工艺列表
    getMaterialFormList(){
      this.$axios.get(this.$api.url.chooseTechByMBom,{
        params:{specificationsId : this.returntree.id}
      }).then(res=>{
        this.materialFormList = res.data;
      }).catch(error=>{
        this.$message.error(error.message);
      })
    },
    changeMName(val){
      let arr = this.materialFormList.filter(item=>{
        return item.name == val;
      })
      this.mIdList = arr[0].children;
    },
    //技术指标--获取工序,工艺列表
    getTargetFormList(){
      this.$axios.get(this.$api.url.chooseTechByStandard,{
        params:{specificationsId : this.returntree.id}
@@ -586,11 +755,59 @@
        this.$message.error(error.message);
      })
    },
    //获取项目列表
    getProjectFormList(){
    //1.生产工艺-->选择工序,工艺
    getProductFormList(){
      this.$axios.get(this.$api.url.chooseTechByProduct,{
        params:{specificationsId : this.returntree.id}
      }).then(res=>{
        this.productFormList = res.data;
      }).catch(error=>{
        this.$message.error(error.message);
      })
    },
    //获取工序列表
    //2.选择工序,获取工艺名称
    changeProduct(val){
      let arr = this.productFormList.filter(item=>{
        return item.name == val
      });
      this.proIdList = arr[0].children;
    },
    //3.生产工艺-->选择设备
    getProductDeviceList(val){
      this.$axios.get(this.$api.url.chooseDevByProduct,{
        params:{technologyId : val}
      }).then(res=>{
        this.productDeviceList = res.data;
        this.getProjectFormList(val);
      }).catch(error=>{
        this.$message.error(error.message);
      })
    },
    //4.生产工艺--获取项目列表
    getProjectFormList(val){
      this.$axios.get(this.$api.url.chooseProByProduct,{
        params:{technologyId : val}
      }).then(res=>{
        this.productProjectList = res.data;
      }).catch(error=>{
        this.$message.error(error.message);
      })
    },
    //5.选择项目列表,获取指标
    changeProductFather(val){
      let arr = this.productProjectList.filter(item=>{
        return item.name == val;
      })
      this.proProductList = arr[0].children;
    },
    //选择指标列表
    changeProProduct(val){
      let arr = this.proProductList.filter(item=>{
        return item.name == val;
      })
      this.productForm.unit = arr[0].unit;
    },
    //工艺路线--获取工序列表
    getFatherList(){
      this.$axios.get(this.$api.url.chooseFather,{
        params:{specificationsId : this.returntree.id}
@@ -600,7 +817,7 @@
        this.$message.error(error.message);
      })
    },
    //获取设备组列表
    //工艺路线--获取设备组列表
    getDeviceList(){
      this.$axios.get(this.$api.url.chooseDevice).then(res=>{
        this.deviceList = res.data;
@@ -612,6 +829,8 @@
      this.getFatherList();
      this.getDeviceList();
      this.getTargetFormList();
      this.getMaterialFormList();
      this.getProductFormList();
      this.bomAddModelVisible = true
    },
    startLeftAdd(){
@@ -708,7 +927,7 @@
        return this.verdata[0]
      })
      this.character=v
      this.VER="v"+v
      this.version2="v"+v
      this.selectAll()
    },
    //右侧数据
src/components/view/technical.vue
@@ -4,7 +4,7 @@
      <el-row>
        <el-col :span="12">技术文件</el-col>
        <el-col :span="12" style="text-align: right;">
          <el-button  icon="el-icon-plus">生成项目书</el-button>
          <el-button icon="el-icon-plus">生成项目书</el-button>
        </el-col>
      </el-row>
    </div>
@@ -25,14 +25,14 @@
          <el-input v-model="searchData.name" @input="query"></el-input>
        </el-form-item>
        <el-form-item label="编制状态:" >
          <el-select v-model="searchData.type" placeholder="全部" style="width: 310px;">
          <el-select v-model="searchData.type" size="small" placeholder="全部" style="width: 250px;">
              <el-option label="待编制" :value="0"></el-option>
                            <el-option label="已编制" :value="1"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item >
                <el-button  plain @click="resetBtn">重 置</el-button>
                <el-button  @click="searchTechnical">查 询</el-button>
        <el-form-item>
              <el-button plain @click="resetBtn" style="margin-left: 12px;">重 置</el-button>
              <el-button @click="searchTechnical">查 询</el-button>
        </el-form-item>
      </el-form>
    </div>
@@ -335,6 +335,7 @@
  background: #fff;
  padding: 24px 32px;
}
.search-header .el-form-item__label{
  padding: 0 30px 0 0;
}
@@ -416,3 +417,12 @@
}
</style>
<style>
    .technical .title *{
        font-size: 14px;
    }
    .technical .search-header *{
        font-size: 14px;
    }
</style>
src/components/view/technology.vue
@@ -46,6 +46,7 @@
  height: calc(100% - 20px);
  border-right: 3px solid rgb(245, 247, 251);
  padding: 16px;
    overflow-y: auto;
}
.thing .left .custom-tree-node span {
@@ -174,7 +175,6 @@
          node-key="name"
          default-expand-all
          @node-click="handleNodeClick"
          style="height: 500px;overflow-y: auto;"
          :key="upIndex"
          highlight-current
        >
@@ -602,7 +602,7 @@
          }
        )
        .then((res) => {
          console.log(res);
                    this.$parent.removeAllTab()
          this.selectAllTechNam();
          this.form = {};
        });
@@ -640,17 +640,17 @@
            },
    //批量删除
    delAllTech() {
      console.log(this.delete);
      this.$axios.post(this.$api.url.delAllTech, {
        ids: this.delete,
        ids: this.delete
      });
            this.$parent.removeAllTab()
    },
    //删除
    delTechById() {
      console.log(this.$api.url.delTechById, this.upData.id);
      this.$axios.post(this.$api.url.delTechById, {
        id: this.upData.id,
        id: this.upData.id
      });
            this.$parent.removeAllTab()
    },
    //编辑
    writeTechById() {
@@ -677,7 +677,7 @@
          }
        )
        .then((res) => {
          console.log(res);
                    this.$parent.removeAllTab()
        });
    },
@@ -789,7 +789,6 @@
        return el.id;
      });
      this.delete = cc.join(",");
      console.log(this.delete);
      this.delAllTech();
      this.$message.success("删除完成");
    },
src/view/index.vue
@@ -1,629 +1,585 @@
<style scoped>
.all {
  width: 100vw;
  height: 100vh;
  background-size: 100% 100%;
  display: flex;
  flex-wrap: wrap;
}
    .all {
        width: 100vw;
        height: 100vh;
        background-size: 100% 100%;
        display: flex;
        flex-wrap: wrap;
    }
.title {
  width: 100%;
  height: 58px;
  display: flex;
  align-items: center;
  padding: 0 30px;
}
    .title {
        width: 100%;
        height: 58px;
        display: flex;
        align-items: center;
        padding: 0 30px;
    }
.logo {
  width: 130px;
}
    .logo {
        width: 130px;
    }
.logo img {
  width: 100%;
  height: 100%;
}
    .logo img {
        width: 100%;
        height: 100%;
    }
.title .label {
  font-size: 18px;
  text-align: center;
  width: calc(100% - 130px - 200px);
}
    .title .label {
        font-size: 18px;
        text-align: center;
        width: calc(100% - 130px - 200px);
    }
.user {
  width: 200px;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: right;
  color: #000;
}
    .user {
        width: 200px;
        height: 100%;
        display: flex;
        align-items: center;
        justify-content: right;
        color: #000;
    }
.user * {
  margin: 0 5px;
}
    .user * {
        margin: 0 5px;
    }
.user img {
  margin-left: 20px;
  cursor: pointer;
  width: 14px;
}
    .user img {
        margin-left: 20px;
        cursor: pointer;
        width: 14px;
    }
.user span {
  font-size: 14px;
}
    .user span {
        font-size: 14px;
    }
.left {
  height: calc(100vh - 58px - 40px);
  background-color: #004ea2;
  display: flex;
  align-items: center;
  flex-direction: column;
  padding: 20px 0;
  transition: 0.3s;
  overflow-y: auto;
}
    .left {
        height: calc(100vh - 58px - 40px);
        background-color: #004ea2;
        display: flex;
        align-items: center;
        flex-direction: column;
        padding: 20px 0;
        transition: 0.3s;
        overflow-y: auto;
    }
.left::-webkit-scrollbar {
  width: 0;
}
    .left::-webkit-scrollbar {
        width: 0;
    }
.left .box {
  color: #fff;
  width: 68px;
  height: 68px;
  margin: 8px 0;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  border-radius: 8px;
}
    .left .box {
        color: #fff;
        width: 68px;
        height: 68px;
        margin: 8px 0;
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        flex-direction: column;
        border-radius: 8px;
    }
.left .box:active {
  opacity: 0.8;
}
    .left .box:active {
        opacity: 0.8;
    }
.left .active_box {
  background-color: #fff;
  color: #004ea2;
}
    .left .active_box {
        background-color: #fff;
        color: #004ea2;
    }
.left .box i {
  font-size: 32px;
  margin-bottom: 8px;
}
    .left .box i {
        font-size: 24px;
        margin-bottom: 8px;
    }
.left .box div {
  font-size: 14px;
}
    .left .box div {
        font-size: 14px;
    }
.small_menu {
  color: #666;
}
    .small_menu {
        color: #666;
    }
.small_menu .active_p {
  color: #004ea2;
}
    .small_menu .active_p {
        color: #004ea2;
    }
.small_menu p {
  padding: 12px 15px;
  cursor: pointer;
}
    .small_menu p {
        padding: 12px 15px;
        cursor: pointer;
    }
.small_menu p:hover {
  background-color: rgba(0, 0, 0, 0.05);
}
    .small_menu p:hover {
        background-color: rgba(0, 0, 0, 0.05);
    }
.small_menu i {
  font-size: 16px;
}
    .small_menu i {
        font-size: 16px;
    }
.small_menu span {
  font-size: 14px;
}
    .small_menu span {
        font-size: 14px;
    }
.right {
  height: calc(100vh - 58px);
  transition: 0.3s;
}
    .right {
        height: calc(100vh - 58px);
        transition: 0.3s;
    }
.tag {
  width: 100%;
  height: 36px;
  background: rgb(255, 255, 255);
  opacity: 0.8;
  box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.1);
  display: flex;
  align-items: center;
  color: #999;
  font-size: 14px;
}
    .tag {
        width: 100%;
        height: 36px;
        background: rgb(255, 255, 255);
        opacity: 0.8;
        box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.1);
        display: flex;
        align-items: center;
        color: #999;
        font-size: 14px;
    }
.tag > .el-icon-s-unfold,
.el-icon-s-fold {
  font-size: 18px;
  cursor: pointer;
  margin: 0 8px;
}
    .tag .el-icon-delete {
        display: none;
    }
.tabs {
  min-width: calc(100% - 34px);
  height: 100%;
  align-items: center;
  display: flex;
  overflow-x: auto;
}
    .tag .el-icon-delete:hover {
        color: #F56C6C;
    }
.tab {
  cursor: pointer;
  font-size: 14px;
  margin: 0 8px;
  line-height: 32px;
  transition: 0.3s;
  border-top: 2px solid transparent;
  border-bottom: 2px solid transparent;
  user-select: none;
  flex-shrink: 0;
}
    .tag:hover .el-icon-delete {
        display: block;
    }
.tab i {
  font-size: 12px;
  display: none;
}
    .tag>.el-icon-s-unfold,
    .el-icon-s-fold,
    .el-icon-delete {
        font-size: 18px;
        cursor: pointer;
        margin: 0 8px;
    }
.active_tab {
  border-bottom: 2px solid #004ea2;
  color: #004ea2;
}
    .tabs {
        min-width: calc(100% - 68px);
        height: 100%;
        align-items: center;
        display: flex;
        overflow-x: auto;
    }
.active_tab i {
  display: inline;
  color: #004ea2;
}
    .tab {
        cursor: pointer;
        font-size: 14px;
        margin: 0 8px;
        line-height: 32px;
        transition: 0.3s;
        border-top: 2px solid transparent;
        border-bottom: 2px solid transparent;
        user-select: none;
        flex-shrink: 0;
    }
.component_view {
  height: calc(100vh - 94px - 22px);
  width: calc(100% - 48px);
  padding: 11px 24px;
  background: rgb(245, 247, 251);
  overflow-y: auto;
}
    .tab i {
        font-size: 12px;
        display: none;
    }
.com_index {
  width: 100%;
  height: 100%;
}
    .active_tab {
        border-bottom: 2px solid #004ea2;
        color: #004ea2;
    }
    .active_tab i {
        display: inline;
        color: #004ea2;
    }
    .component_view {
        height: calc(100vh - 94px - 22px);
        width: calc(100% - 48px);
        padding: 11px 24px;
        background: rgb(245, 247, 251);
        overflow-y: auto;
    }
    .com_index {
        width: 100%;
        height: 100%;
    }
</style>
<style></style>
<template>
  <div class="all">
    <div class="title">
      <div class="logo">
        <img src="../../static/img/logo 1.png" />
      </div>
      <div class="label">中天海洋新一代mom系统</div>
      <div class="user">
        <el-avatar :size="24">{{ userName.substring(0, 1) }}</el-avatar>
        <span>{{ userName }}</span>
        <img src="../../static/img/退出.png" @click="out" />
      </div>
    </div>
    <div class="left" :style="`width: ${leftOpen ? '92' : '0'}px;`">
      <div
        :class="`box ${activeBox == 0 ? 'active_box' : ''}`"
        @click="addTab(menu[0].c[0])"
      >
        <i class="font icon-shouye"></i>
        <div>首页</div>
      </div>
      <div
        :class="`box ${activeBox == 3 ? 'active_box' : ''}`"
        @click="addTab(menu[1].c[0])"
      >
        <i class="font icon-jine"></i>
        <div>销售管理</div>
      </div>
      <el-popover
        placement="right-start"
        width="90"
        trigger="click"
        v-for="(a, ai) in menu"
        :key="ai"
        v-if="a.k != '0' && a.k != '3'"
      >
        <div
          :class="`box ${activeBox == a.k ? 'active_box' : ''}`"
          @click="activeBox = a.k"
          slot="reference"
        >
          <i :class="a.i"></i>
          <div>{{ a.v }}</div>
        </div>
        <div class="small_menu">
          <p
            v-for="(b, bi) in a.c"
            :key="bi"
            :class="activeP == b.k ? 'active_p' : ''"
            @click="addTab(b)"
          >
            <i :class="b.i"></i>
            <span>{{ b.v }}</span>
          </p>
        </div>
      </el-popover>
    </div>
    <div
      class="right"
      :style="`width: calc(100% - ${leftOpen ? '92' : '0'}px);`"
    >
      <div class="tag">
        <i
          :class="`${leftOpen ? 'el-icon-s-unfold' : 'el-icon-s-fold'}`"
          @click="leftOpen = !leftOpen"
        ></i>
        <div class="tabs">
          <div
            :class="`tab ${tabActive == a.k ? 'active_tab' : ''}`"
            v-for="(a, ai) in tabs"
            :key="ai"
            @click="upTabActive(a.k)"
          >
            {{ a.v }}
            <i
              class="el-icon-close"
              @click="removeTab(ai)"
              v-if="tabActive != 0"
            ></i>
          </div>
        </div>
      </div>
      <div class="component_view">
        <component
          class="com_index"
          v-for="(com, index) in tabs"
          :is="com.u"
          :key="upIndex + '|' + index"
          v-show="com.k == tabActive"
        >
        </component>
      </div>
    </div>
  </div>
    <div class="all">
        <div class="title">
            <div class="logo">
                <img src="../../static/img/logo 1.png" />
            </div>
            <div class="label">中天海洋新一代mom系统</div>
            <div class="user">
                <el-avatar :size="24">{{ userName.substring(0, 1) }}</el-avatar>
                <span>{{ userName }}</span>
                <img src="../../static/img/退出.png" @click="out" />
            </div>
        </div>
        <div class="left" :style="`width: ${leftOpen ? '92' : '0'}px;`">
            <div :class="`box ${activeBox == 0 ? 'active_box' : ''}`" @click="addTab(menu[0].c[0])">
                <i class="font icon-shouye"></i>
                <div>首页</div>
            </div>
            <div :class="`box ${activeBox == 3 ? 'active_box' : ''}`" @click="addTab(menu[1].c[0])">
                <i class="font icon-jine"></i>
                <div>销售管理</div>
            </div>
            <el-popover placement="right-start" width="90" trigger="click" v-for="(a, ai) in menu" :key="ai"
                v-if="a.k != '0' && a.k != '3'">
                <div :class="`box ${activeBox == a.k ? 'active_box' : ''}`" @click="activeBox = a.k" slot="reference">
                    <i :class="a.i"></i>
                    <div>{{ a.v }}</div>
                </div>
                <div class="small_menu">
                    <p v-for="(b, bi) in a.c" :key="bi" :class="activeP == b.k ? 'active_p' : ''" @click="addTab(b)">
                        <i :class="b.i"></i>
                        <span>{{ b.v }}</span>
                    </p>
                </div>
            </el-popover>
        </div>
        <div class="right" :style="`width: calc(100% - ${leftOpen ? '92' : '0'}px);`">
            <div class="tag">
                <i :class="`${leftOpen ? 'el-icon-s-unfold' : 'el-icon-s-fold'}`" @click="leftOpen = !leftOpen"></i>
                <div class="tabs">
                    <div :class="`tab ${tabActive == a.k ? 'active_tab' : ''}`" v-for="(a, ai) in tabs" :key="ai"
                        @click="upTabActive(a.k)">
                        {{ a.v }}
                        <i class="el-icon-close" @click="removeTab(ai)" v-if="tabActive != 0"></i>
                    </div>
                </div>
                <i class="el-icon-delete" @click="allDel" title="删除所有标签页"></i>
            </div>
            <div class="component_view">
                <component class="com_index" v-for="(com, index) in tabs" :is="com.u" :key="upIndex + '|' + index"
                    v-show="com.k == tabActive" @removeAllTab="removeAllTab">
                </component>
            </div>
        </div>
    </div>
</template>
<script>
const requireComponent = require.context("../components/view", false, /\.vue/);
var comObj = {};
requireComponent.keys().forEach(fileName => {
  var names = fileName
    .split("/")
    .pop()
    .replace(".vue", "");
  const componentConfig = requireComponent(fileName);
  comObj[names] = componentConfig.default || componentConfig;
});
export default {
  components: comObj,
  data() {
    return {
      userName: "value",
      leftOpen: true,
      menu: [
        {
          k: 0,
          v: "首页",
          i: "font icon-shouye",
          c: [
            {
              k: 0,
              v: "首页",
              i: "font icon-shouye",
              u: "index-index"
            }
          ]
        },
        {
          k: 3,
          v: "销售管理",
          i: "font icon-jine",
          c: [
            {
              k: 11,
              v: "销售管理",
              i: "font icon-jine",
              u: "sale"
            }
          ]
        },
        {
          k: 1,
          v: "技术管理",
          i: "font icon-ic_form_set24px",
          c: [
            {
              k: 1,
              v: "标准BOM",
              i: "font icon-shouye",
              u: "standard"
            },
            {
              k: 2,
              v: "订单BOM",
              i: "font icon-shouye",
              u: "technical"
            }
          ]
        },
        {
          k: 4,
          v: "生产管理",
          i: "font icon-shengchanguanli",
          c: [
            {
              k: 12,
              v: "生产订单",
              i: "font icon-shouye",
              u: ""
            },
            {
              k: 13,
              v: "生产计划",
              i: "font icon-shouye",
              u: ""
            },
            {
              k: 14,
              v: "生产报工",
              i: "font icon-shouye",
              u: ""
            }
          ]
        },
        {
          k: 5,
          v: "WMS管理",
          i: "font icon-a-Inventorydumprequest",
          c: [
            {
              k: 15,
              v: "原材料库存",
              i: "font icon-shouye",
              u: ""
            },
            {
              k: 16,
              v: "回单管理",
              i: "font icon-shouye",
              u: ""
            },
            {
              k: 17,
              v: "半成品库存",
              i: "font icon-shouye",
              u: ""
            },
            {
              k: 18,
              v: "成品库存",
              i: "font icon-shouye",
              u: ""
            },
            {
              k: 19,
              v: "成品发货",
              i: "font icon-shouye",
              u: ""
            },
            {
              k: 20,
              v: "成品入库",
              i: "font icon-shouye",
              u: ""
            }
          ]
        },
        {
          k: 2,
          v: "QMS管理",
          i: "font icon-xunhuan",
          c: [
            {
              k: 3,
              v: "原材料检验",
              i: "font icon-shouye",
              u: "rawInsBox"
            },
            {
              k: 4,
              v: "原材料不合格品",
              i: "font icon-shouye",
              u: "rawUnqualifiedBox"
            },
            {
              k: 5,
              v: "过程检验",
              i: "font icon-shouye",
              u: "processInspection"
            },
            {
              k: 6,
              v: "成品检验",
              i: "font icon-shouye",
              u: "finishedProductInspection"
            },
            {
              k: 7,
              v: "不合格品管理",
              i: "font icon-shouye",
              u: "unqualifiedManagement"
            },
            {
              k: 9,
              v: "质量统计",
              i: "font icon-shouye",
              u: ""
            },
            {
              k: 10,
              v: "计量管理",
              i: "font icon-shouye",
              u: "measurementManagement"
            },
            {
              k: 10.1,
              v: "不合格品处置",
              i: "font icon-shouye",
              u: "Processingproducts"
            }
          ]
        },
        {
          k: 6,
          v: "核算管理",
          i: "font icon-caiwuhesuanxitong",
          c: [
            {
              k: 21,
              v: "产量工资",
              i: "font icon-shouye",
              u: ""
            },
            {
              k: 22,
              v: "员工出勤",
              i: "font icon-shouye",
              u: ""
            }
          ]
        },
        {
          k: 7,
          v: "基础数据",
          i: "font icon-a-ziyuan20",
          c: [
            {
              k: 23,
              v: "生产记录维护",
              i: "font icon-shouye",
              u: "record-content"
            },
            {
              k: 24,
              v: "自检项目维护",
              i: "font icon-shouye",
              u: "self-inspection"
            },
            {
              k: 25,
              v: "技术指标维护",
              i: "font icon-shouye",
              u: "Technicalindex"
            },
            {
              k: 26,
              v: "工艺路线维护",
              i: "font icon-shouye",
              u: "technology"
            },
            {
              k: 27,
              v: "设备维护",
              i: "font icon-shouye",
              u: "laboratoryManagement"
            },
            {
              k: 28,
              v: "物料清单维护",
              i: "font icon-shouye",
              u: "mbom"
            },
            // {
            //     k: 29,
            //     v: "巡检项目维护",
            //     i: "font icon-shouye",
            //     u: "routinginspection"
            // },
            {
              k: 30,
              v: "生产工艺维护",
              i: "font icon-shouye",
              u: "equipmentmaintain"
            }
          ]
        }
      ],
      activeBox: 0,
      activeP: 0,
      tabActive: 0,
      tabs: [
        {
          k: 0,
          v: "首页",
          i: "font icon-shouye",
          u: "index-index"
        }
      ],
      upIndex: 0
    };
  },
  created() {},
  mounted() {
    this.userName = JSON.parse(localStorage.getItem("user")).name;
  },
  methods: {
    addTab(ob) {
      if (ob.k == 0) this.activeBox = 0;
      if (ob.k == 11) this.activeBox = 3;
      this.activeP = ob.k; //0
      this.tabActive = ob.k; //0
      let num = -1;
      this.tabs.forEach((a, ai) => {
        if (ob.k == a.k) {
          num = a.k;
        }
      });
      // 如果没有遍历到tabs里没有该ob对应的table,往tabs里面加入该ob
      if (num == -1) {
        this.tabs.push(ob);
      }
    },
    removeTab(index) {
      if (this.tabs.length > 1) {
        this.tabs.splice(index, 1);
        this.activeP = this.tabs[this.tabs.length - 1].k;
        this.tabActive = this.tabs[this.tabs.length - 1].k;
      } else {
        this.$message.warning("不能关闭最后的标签");
      }
    },
    upTabActive(num) {
      this.tabActive = num;
      this.activeP = num;
      if (num == 0) {
        this.activeBox = 0;
      } else if (num > 0 && num <= 2) {
        this.activeBox = 1;
      } else if (num > 2 && num < 11) {
        this.activeBox = 2;
      } else if (num == 11) {
        this.activeBox = 3;
      } else if (num > 11 && num <= 14) {
        this.activeBox = 4;
      } else if (num > 14 && num <= 20) {
        this.activeBox = 5;
      } else if (num > 20 && num <= 22) {
        this.activeBox = 6;
      } else if (num > 22 && num <= 30) {
        this.activeBox = 7;
      }
    },
    out() {
      sessionStorage.clear();
      localStorage.removeItem("autoenter");
      this.$router.push("/enter");
    }
  }
};
</script>
    const requireComponent = require.context("../components/view", false, /\.vue/);
    var comObj = {};
    requireComponent.keys().forEach(fileName => {
        var names = fileName
            .split("/")
            .pop()
            .replace(".vue", "");
        const componentConfig = requireComponent(fileName);
        comObj[names] = componentConfig.default || componentConfig;
    });
    export default {
        components: comObj,
        data() {
            return {
                userName: "value",
                leftOpen: true,
                menu: [{
                        k: 0,
                        v: "首页",
                        i: "font icon-shouye",
                        c: [{
                            k: 0,
                            v: "首页",
                            i: "font icon-shouye",
                            u: "index-index"
                        }]
                    },
                    {
                        k: 3,
                        v: "销售管理",
                        i: "font icon-jine",
                        c: [{
                            k: 11,
                            v: "销售管理",
                            i: "font icon-jine",
                            u: "sale"
                        }]
                    },
                    {
                        k: 1,
                        v: "技术管理",
                        i: "font icon-ic_form_set24px",
                        c: [{
                                k: 1,
                                v: "标准BOM",
                                i: "font icon-shouye",
                                u: "standard"
                            },
                            {
                                k: 2,
                                v: "订单BOM",
                                i: "font icon-shouye",
                                u: "technical"
                            }
                        ]
                    },
                    {
                        k: 4,
                        v: "生产管理",
                        i: "font icon-shengchanguanli",
                        c: [{
                                k: 12,
                                v: "生产订单",
                                i: "font icon-shouye",
                                u: ""
                            },
                            {
                                k: 13,
                                v: "生产计划",
                                i: "font icon-shouye",
                                u: ""
                            },
                            {
                                k: 14,
                                v: "生产报工",
                                i: "font icon-shouye",
                                u: ""
                            }
                        ]
                    },
                    {
                        k: 5,
                        v: "WMS管理",
                        i: "font icon-a-Inventorydumprequest",
                        c: [{
                                k: 15,
                                v: "原材料库存",
                                i: "font icon-shouye",
                                u: ""
                            },
                            {
                                k: 16,
                                v: "回单管理",
                                i: "font icon-shouye",
                                u: ""
                            },
                            {
                                k: 17,
                                v: "半成品库存",
                                i: "font icon-shouye",
                                u: ""
                            },
                            {
                                k: 18,
                                v: "成品库存",
                                i: "font icon-shouye",
                                u: ""
                            },
                            {
                                k: 19,
                                v: "成品发货",
                                i: "font icon-shouye",
                                u: ""
                            },
                            {
                                k: 20,
                                v: "成品入库",
                                i: "font icon-shouye",
                                u: ""
                            }
                        ]
                    },
                    {
                        k: 2,
                        v: "QMS管理",
                        i: "font icon-xunhuan",
                        c: [{
                                k: 3,
                                v: "原材料检验",
                                i: "font icon-shouye",
                                u: "rawInsBox"
                            },
                            {
                                k: 4,
                                v: "原材料不合格品",
                                i: "font icon-shouye",
                                u: "rawUnqualifiedBox"
                            },
                            {
                                k: 5,
                                v: "过程检验",
                                i: "font icon-shouye",
                                u: "processInspection"
                            },
                            {
                                k: 6,
                                v: "成品检验",
                                i: "font icon-shouye",
                                u: "finishedProductInspection"
                            },
                            {
                                k: 7,
                                v: "不合格品管理",
                                i: "font icon-shouye",
                                u: "unqualifiedManagement"
                            },
                            {
                                k: 9,
                                v: "质量统计",
                                i: "font icon-shouye",
                                u: ""
                            },
                            {
                                k: 10,
                                v: "计量管理",
                                i: "font icon-shouye",
                                u: "measurementManagement"
                            },
                            {
                                k: 10.1,
                                v: "不合格品处置",
                                i: "font icon-shouye",
                                u: "Processingproducts"
                            }
                        ]
                    },
                    {
                        k: 6,
                        v: "核算管理",
                        i: "font icon-caiwuhesuanxitong",
                        c: [{
                                k: 21,
                                v: "产量工资",
                                i: "font icon-shouye",
                                u: ""
                            },
                            {
                                k: 22,
                                v: "员工出勤",
                                i: "font icon-shouye",
                                u: ""
                            }
                        ]
                    },
                    {
                        k: 7,
                        v: "基础数据",
                        i: "font icon-a-ziyuan20",
                        c: [{
                                k: 23,
                                v: "生产记录维护",
                                i: "font icon-shouye",
                                u: "record-content"
                            },
                            {
                                k: 24,
                                v: "自检项目维护",
                                i: "font icon-shouye",
                                u: "self-inspection"
                            },
                            {
                                k: 25,
                                v: "技术指标维护",
                                i: "font icon-shouye",
                                u: "Technicalindex"
                            },
                            {
                                k: 26,
                                v: "工艺路线维护",
                                i: "font icon-shouye",
                                u: "technology"
                            },
                            {
                                k: 27,
                                v: "设备维护",
                                i: "font icon-shouye",
                                u: "laboratoryManagement"
                            },
                            {
                                k: 28,
                                v: "物料清单维护",
                                i: "font icon-shouye",
                                u: "mbom"
                            },
                            {
                                k: 30,
                                v: "生产工艺维护",
                                i: "font icon-shouye",
                                u: "equipmentmaintain"
                            }
                        ]
                    }
                ],
                activeBox: 0,
                activeP: 0,
                tabActive: 0,
                tabs: [{
                    k: 0,
                    v: "首页",
                    i: "font icon-shouye",
                    u: "index-index"
                }],
                upIndex: 0
            };
        },
        created() {},
        mounted() {
            this.userName = JSON.parse(localStorage.getItem("user")).name;
        },
        methods: {
            addTab(ob) {
                if (ob.k == 0) this.activeBox = 0;
                if (ob.k == 11) this.activeBox = 3;
                this.activeP = ob.k; //0
                this.tabActive = ob.k; //0
                let num = -1;
                this.tabs.forEach((a, ai) => {
                    if (ob.k == a.k) {
                        num = a.k;
                    }
                });
                // 如果没有遍历到tabs里没有该ob对应的table,往tabs里面加入该ob
                if (num == -1) {
                    this.tabs.push(ob);
                }
            },
            removeTab(index) {
                this.tabs.splice(index, 1);
                this.activeP = this.tabs[this.tabs.length - 1].k;
                this.tabActive = this.tabs[this.tabs.length - 1].k;
            },
            allDel() {
                this.activeBox = 0
                this.activeP = 0
                this.tabActive = 0
                this.tabs = [{
                    k: 0,
                    v: " 首页",
                    i: "font icon-shouye",
                    u: "index-index"
                }]
            },
            upTabActive(num) {
                this.tabActive = num;
                this.activeP = num;
                for (var i = 0; i < this.menu.length; i++) {
                    this.menu[i].c.forEach(b => {
                        if (b.k == num) {
                            this.activeBox = this.menu[i].k;
                            return
                        }
                    })
                }
            },
            out() {
                sessionStorage.clear();
                localStorage.removeItem("autoenter");
                this.$router.push("/enter");
            },
            removeAllTab(){
                this.upIndex++
            }
        }
    };
</script>