王震
2023-09-13 a15fb376f2a52a36be5ce2f1eeaf252a509dfcb7
Merge remote-tracking branch 'origin/master'

# Conflicts:
# src/components/view/Technicalindex.vue
# src/components/view/mbom.vue
# src/main.js
已修改16个文件
3670 ■■■■ 文件已修改
src/assets/api/controller.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/Technicalindex.vue 925 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/equipmentmaintain.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/mbom.vue 359 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/processInspection.vue 527 ●●●● 补丁 | 查看 | 原始文档 | 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 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/standard-table/product.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/standard-table/target.vue 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/standard-table/technology.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/standard.vue 587 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/technology.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/view/index.vue 1135 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/api/controller.js
@@ -14,6 +14,17 @@
    leftAddOneTwo: "/material/add",//左侧新增1,2级
    leftAddThree: "/standard/add",//左侧三级新增
    leftAddFour: "/specifications/add",//左侧四级新增
    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",//右上角新增-->生产工艺-->选择设备
    // 技术管理-技术文件
    selectAllOrder: "/orders/selectAllOrder", //查询所有订单列表
    selectOrderById: "/orders/selectOrderById", //根据订单id查询订单详情
@@ -56,11 +67,14 @@
    // listMaterial:"/finished-inspect/list_material",//添加检验单时的项目列表
    finishedInspectUser: "/finished-inspect/page_user", //获取所有主机工
    projectListByfinishId: "/inspection-item/list_user", //根据id查询所有项目
    processInspectAddProcess: "/processInspect/addProcess",//新增检验
    inspectionItemListUser: "/inspection-item/list_user",//查询所有检验项目
}
// 过程检验
const processInspection = {
    selectProcessInspectsList: "/processInspect/selectProcessInspectsList", // 分页查询过程检验单列表
    chooseMaterProcessInspect: "/processInspect/chooseMater",//根据订单号选择产品和工艺
}
// QMS实验室管理
const laboratory = {
src/components/view/Technicalindex.vue
@@ -1,322 +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'}" style="height: 500px;overflow-y: auto;" 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; height: 580px;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"
                    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"
@@ -333,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:{
@@ -402,12 +321,11 @@
                },
                isAllSelect:false,
            }
        },
        mounted() {
            this.selectAllleft()
            this.selectAllright()
            this.selectAllright()
        },
        methods:{
              // 表格树全部选中配置
@@ -450,8 +368,8 @@
            },
            handleClose(){
            },
            selectDataList() {
            },
            selectDataList() {
                this.list.forEach(a => {
                    a.code = '[1]'
                    if (a.children != undefined) {
@@ -467,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) {
@@ -535,7 +453,7 @@
                        }
                    }
                })
                let cc = this.selects.map(el => {
                let cc = this.selects.map(el => {
                    return el.id
                })
                this.delete = cc.join(',')
@@ -543,142 +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) {
                console.log(val);
            handleSelectionChange(val) {
                this.selects = val;
            },
            //编辑
        }
    }
            //编辑
        }
    }
</script>
<style scoped>
@@ -719,7 +647,7 @@
    .thing {
        width: 100%;
        height: calc(100% - 120px);
        height: calc(100% - 78px);
        background-color: #fff;
        display: flex;
    }
@@ -729,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 {
@@ -768,8 +697,9 @@
        color: #004ea0;
        cursor: pointer;
    }
.firstDiv {
  /* float: left;
    .firstDiv {
        /* float: left;
  width: 20px;
  height: 20px;
  border-radius: 60px;
@@ -779,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"
@@ -707,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/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:'',
                },
                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,23 +199,25 @@
                })
                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,{
@@ -278,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);
                })
@@ -335,29 +302,31 @@
            },
            //右边
            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"
                      }
            })
                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(){
@@ -372,7 +341,7 @@
            let obj = [];
            this.tableapi.push(obj);
            },
            skipshow(){
            skipshow() {
                console.log('666');
                let data = this.tableapi.at(-1)
                data.techTemId = this.search.craft
@@ -381,12 +350,12 @@
            },
            //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++) {
@@ -415,8 +384,8 @@
                this.material(index)
            },
        }
    }
        }
    }
</script>
<style scoped>
@@ -435,7 +404,8 @@
    .title * {
        font-size: 16px;
    }
    .choose-1{
    .choose-1 {
        padding: 5px 24px;
        display: flex;
        align-items: center;
@@ -474,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/processInspection.vue
@@ -5,137 +5,70 @@
        <el-row>
          <el-col :span="12">过程检验</el-col>
          <el-col :span="12" style="text-align: right;">
            <el-button
              @click="handleAddNew"
              type="primary"
              size="mini"
              icon="el-icon-plus"
              style="background: #004EA2; "
              >新增</el-button
            >
            <el-button @click="handleAddNew" type="primary" size="mini" icon="el-icon-plus"
              style="background: #004EA2; ">新增</el-button>
            <el-button icon="el-icon-download" size="mini">导出</el-button>
          </el-col>
        </el-row>
      </div>
      <div class="nav">
        <span>检验状态:</span>
        <el-select
          size="small"
          v-model="search.result"
          placeholder="请选择检测状态"
          style="width: 224px;margin-right: 52px;"
        >
        <el-select size="small" v-model="search.result" placeholder="请选择检测状态" style="width: 224px;margin-right: 52px;">
          <el-option :value="''" label="全部"></el-option>
          <el-option :value="1" label="已检测"></el-option>
          <el-option :value="2" label="待检测"></el-option>
        </el-select>
        <span>产品名称:</span>
        <el-input
          size="small"
          style="width: 224px;margin-right: 30px;"
          v-model="search.name"
          placeholder="请输入产品名称"
        ></el-input>
        <el-input size="small" style="width: 224px;margin-right: 30px;" v-model="search.name"
          placeholder="请输入产品名称"></el-input>
        <span>工序:</span>
        <el-input
          size="small"
          style="width: 224px;margin-right: 30px;"
          v-model="search.techfather"
          placeholder="请输入工序"
        ></el-input>
        <el-input size="small" style="width: 224px;margin-right: 30px;" v-model="search.techfather"
          placeholder="请输入工序"></el-input>
        <el-button size="mini"><span>重 置</span></el-button>
        <el-button size="mini" type="primary" style="background: #004EA2;"
          ><span>查 询</span></el-button
        >
        <el-button size="mini" type="primary" style="background: #004EA2;"><span>查 询</span></el-button>
      </div>
      <div class="content-body">
        <div class="inspectionTable">
          <el-table
            ref="inspectionTable"
            height="calc(100vh - 320px)"
            :cell-style="{ textAlign: 'center' }"
          <el-table ref="inspectionTable" height="calc(100vh - 320px)" :cell-style="{ textAlign: 'center' }"
            :header-cell-style="{
              border: '0px',
              background: '#f5f7fa',
              color: '#606266',
              boxShadow: 'inset 0 1px 0 #ebeef5',
              textAlign: 'center'
            }"
            border
            :data="inspectionTable"
            style="width: 100%"
          >
            }" border :data="inspectionTable" style="width: 100%">
            <el-table-column type="selection" width="50"> </el-table-column>
            <el-table-column
              label="序号"
              type="index"
              width="60"
            ></el-table-column>
            <el-table-column
              prop="order_number"
              label="订单编号"
              min-width="90"
            />
            <el-table-column label="序号" type="index" width="60"></el-table-column>
            <el-table-column prop="order_number" label="订单编号" min-width="90" />
            <el-table-column prop="material" label="产品名称" min-width="80" />
            <el-table-column
              prop="specifications_model"
              label="规格型号"
              min-width="60"
            />
            <el-table-column prop="specifications_model" label="规格型号" min-width="60" />
            <el-table-column prop="techfather" label="工序" min-width="70" />
            <el-table-column prop="techname" label="工艺名称" min-width="70" />
            <el-table-column prop="unit" label="单位" min-width="50" />
            <el-table-column prop="quantity" label="数量" min-width="50" />
            <el-table-column
              prop="createTime"
              label="报检日期"
              min-width="60"
            />
            <el-table-column prop="createTime" label="报检日期" min-width="60" />
            <el-table-column prop="name" label="报检人" min-width="50" />
            <el-table-column
              prop="updateTime"
              label="检测日期"
              min-width="60"
            />
            <el-table-column prop="updateTime" label="检测日期" min-width="60" />
            <el-table-column prop="result" label="合格状态" min-width="80">
              <template slot-scope="scope">
                <span style="color: #34BD66;" v-if="scope.row.result == 1"
                  >合格</span
                >
                <span style="color: #E84738;" v-else-if="scope.row.result == 0"
                  >不合格</span
                >
                <span style="color: #34BD66;" v-if="scope.row.result == 1">合格</span>
                <span style="color: #E84738;" v-else-if="scope.row.result == 0">不合格</span>
              </template>
            </el-table-column>
            <el-table-column label="操作" min-width="80">
              <template slot-scope="scope">
                <el-button type="text" size="small" style="margin-left: 0;"
                  >详情</el-button
                >
                <el-button
                  type="text"
                  size="small"
                  @click="handleClick(scope.row)"
                  >查看</el-button
                >
                <el-button type="text" size="small" style="margin-left: 0;"
                  >编辑</el-button
                >
                <el-button type="text" size="small" style="margin-left: 0;">详情</el-button>
                <el-button type="text" size="small" @click="handleClick(scope.row)">查看</el-button>
                <el-button type="text" size="small" style="margin-left: 0;">编辑</el-button>
              </template>
            </el-table-column>
          </el-table>
        </div>
        <!-- 分页器 -->
        <div class="pagination">
          <el-pagination
            :current-page="1"
            :page-sizes="[10, 20, 30, 40]"
            :page-size="pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="inspectionTableTotal"
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
          />
          <el-pagination :current-page="1" :page-sizes="[10, 20, 30, 40]" :page-size="pageSize"
            layout="total, sizes, prev, pager, next, jumper" :total="inspectionTableTotal" @size-change="handleSizeChange"
            @current-change="handleCurrentChange" />
        </div>
      </div>
    </div>
@@ -146,109 +79,60 @@
          <el-col :span="12">新增过程检验单</el-col>
          <el-col :span="12" style="text-align: right;">
            <!-- 点击返回,当前页面值为false -->
            <el-button
              type="primary"
              size="mini"
              style="background: #004EA2; "
              icon="el-icon-circle-plus-outline"
              >新增</el-button
            >
            <el-button
              @click="showAddPage = false"
              type="primary"
              size="mini"
              icon="el-icon-back"
              style="background: #004EA2; "
              >返回</el-button
            >
            <el-button type="primary" size="mini" style="background: #004EA2; "
              icon="el-icon-circle-plus-outline">新增</el-button>
            <el-button @click="showAddPage = false" type="primary" size="mini" icon="el-icon-back"
              style="background: #004EA2; ">返回</el-button>
          </el-col>
        </el-row>
        <el-form
          :model="addInspectionform"
          ref="addInspectionform"
          class="addInspectionform"
          label-position="right"
          label-width="120px"
          size="small"
        >
        <el-form :model="processInspectVo" ref="addInspectionform" class="addInspectionform" label-position="right"
          label-width="120px" size="small">
          <div class="formwrapper">
            <el-row :gutter="230">
              <el-col :span="7">
                <el-form-item label="订单号:">
                  <el-input
                    style="width: 210px;"
                    size="small"
                    v-model="addInspectionform.number"
                    placeholder="请输入订单号"
                  />
                  <el-input @blur="selectInfoByOrderId" style="width: 210px;" size="small"
                    v-model="processInspectVo.orderNumber" placeholder="请输入订单号" />
                </el-form-item>
              </el-col>
              <el-col :span="7">
                <el-form-item label="产品名称:">
                  <el-input
                    style="width: 210px;"
                    size="small"
                    v-model="addInspectionform.code"
                    placeholder="请输入产品编码"
                  />
                  <el-select style="width: 210px;" size="small" @change="selectSample" v-model="processInspectVo.material"
                    placeholder="请选择产品">
                    <el-option v-for="item in optionsSamplename" :key="item.value" :label="item.name" :value="item.name">
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="7">
                <el-form-item label="产品编码:">
                  <el-input
                    style="width: 210px;"
                    size="small"
                    disabled
                    v-model="addInspectionform.code"
                    placeholder="请输入产品编码"
                  />
                  <el-input style="width: 210px;" size="small" disabled v-model="processInspectVo.materialCode"
                    placeholder="请输入产品编码" />
                </el-form-item>
              </el-col>
            </el-row>
            <el-row :gutter="230">
              <el-col :span="7">
                <el-form-item label="规格型号:">
                  <el-input
                    style="width: 210px;"
                    size="small"
                    disabled
                    v-model="addInspectionform.number"
                    placeholder="请输入规格型号"
                  />
                  <el-input style="width: 210px;" size="small" disabled v-model="processInspectVo.specificationsModel"
                    placeholder="请输入规格型号" />
                </el-form-item>
              </el-col>
              <el-col :span="7">
                <el-form-item label="工序名称:">
                  <el-select
                    v-model="value"
                    placeholder="请选择"
                    style="width: 210px;"
                    size="small"
                  >
                    <el-option
                      v-for="item in options"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    >
                  <el-select @change="changeOptionSoptionSprocesses" v-model="processInspectVo.techfather"
                    placeholder="请选择" style="width: 210px;" size="small">
                    <el-option v-for="item in optionSoptionSprocesses" :key="item.name" :label="item.name"
                      :value="item.name">
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="7">
                <el-form-item label="工艺名称:">
                  <el-select
                    v-model="value"
                    placeholder="请选择"
                    style="width: 210px;"
                    size="small"
                  >
                    <el-option
                      v-for="item in options"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    >
                  <el-select v-model="processInspectVo.techname" placeholder="请选择" style="width: 210px;" size="small">
                    <el-option v-for="item in optionTechnology" :key="item.id" :label="item.name"
                      :value="item.id + '-' + item.name">
                    </el-option>
                  </el-select>
                </el-form-item>
@@ -257,31 +141,17 @@
            <el-row :gutter="230">
              <el-col :span="7">
                <el-form-item label="单位:">
                  <el-input
                    style="width: 210px;"
                    size="small"
                    disabled
                    v-model="addInspectionform.quantity"
                    placeholder="请输入单位"
                  />
                  <el-input style="width: 210px;" size="small" disabled v-model="processInspectVo.unit"
                    placeholder="请输入单位" />
                </el-form-item>
              </el-col>
              <el-col :span="7">
                <el-form-item label="数量:">
                  <el-input
                    style="width: 210px;"
                    size="small"
                    v-model="addInspectionform.quantity"
                    placeholder="请输入数量"
                  />
                  <el-input style="width: 210px;" size="small" v-model="processInspectVo.quantity" placeholder="请输入数量" />
                </el-form-item>
              </el-col>
              <el-col :span="7">
                <el-button
                  type="primary"
                  style="float: right; font-size: 14px; !important"
                  >生成检验项目</el-button
                >
              <el-col :span="10" style="display: flex;justify-content: end;">
                <el-button type="primary" @click="addTestProjevt">生成检验项目</el-button>
              </el-col>
            </el-row>
          </div>
@@ -291,92 +161,52 @@
        <el-row>
          <el-col :span="12" class="inspectionProject_span">检验项目</el-col>
          <el-col :span="12" class="inspectionProject_span">
            <el-button size="mini" @click="clickDeleteInspectionColumn()"
              >删除检验值列</el-button
            >
            <el-button
              style="margin-right: 30px;"
              size="mini"
              @click="clickAddInspectionColumn()"
              >添加检验值列</el-button
            >
            <el-button
            <el-button size="mini" @click="clickDeleteInspectionColumn()">删除检验值列</el-button>
            <el-button style="margin-right: 30px;" size="mini" @click="clickAddInspectionColumn()">添加检验值列</el-button>
            <!-- <el-button
              size="mini"
              style="margin-right: 30px;"
              @click="clickAddLine()"
              >添加检验行</el-button
            >
            > -->
          </el-col>
        </el-row>
        <el-table
          :data="inspectionItems"
          height="calc(100vh - 550px)"
          style="width: 100%"
        >
          <el-table-column
            type="index"
            label="序号"
            width="60"
          ></el-table-column>
          <el-table-column prop="material" label="项目"></el-table-column>
        <el-table :row-key="inspectionItems.id" :data="inspectionItems" max-height="420" :span-method="handleSpanMethod" height="calc(100vh - 550px)" style="width: 100%">
          <el-table-column type="index" label="序号" width="60"></el-table-column>
          <el-table-column label="项目" prop="father"></el-table-column>
          <el-table-column prop="name" label="指标"></el-table-column>
          <el-table-column prop="unit" label="单位"></el-table-column>
          <el-table-column prop="standardVal" label="标准值"></el-table-column>
          <el-table-column prop="controlVal" label="内测值"></el-table-column>
          <el-table-column
            prop="testValue"
            label="检测值"
            min-width="150"
            v-for="(item, index) in empiricalValueAdd"
            :key="index"
          >
            <template slot-scope="scope">
              <el-tooltip
                :disabled="scope.row.deviceId != null"
                class="item"
                effect="dark"
                content="请先选择设备!"
                placement="top-start"
              >
                <el-input
                  :disabled="scope.row.deviceId == null"
                  // v-model="scope.row.testValueList[index]"
                  @blur="changeState(scope.row, index)"
                  placeholder="请输入检测值"
                ></el-input>
              </el-tooltip>
            </template>
          </el-table-column>
          <el-table-column prop="required" label="标准值"></el-table-column>
          <el-table-column prop="internal" label="内测值"></el-table-column>
            <el-table-column prop="inspectionValue" label="检测值" min-width="100"  style="text-align: center;">
              <template slot-scope="scope">
                      <el-tooltip :disabled="scope.row.deviceId != null" class="item" effect="dark" content="请先选择设备!"
                    placement="top-start">
                    <el-input :disabled="scope.row.deviceId === null" :value="item"
                      @blur="changeState(scope.row, index)" placeholder="请输入检测值"></el-input>
                  </el-tooltip>
              </template>
            </el-table-column>
          <el-table-column label="试验设备">
            <template slot-scope="scope">
              {{ scope.row.device }}
              <el-select
                v-model="scope.row.device"
                size="small"
                slot="append"
                style="width: 100px;"
              >
              <el-select v-model="scope.row.device" size="small" slot="append" style="width: 100px;">
                <el-option value="选项1"></el-option>
                <el-option value="选项2"></el-option>
              </el-select>
            </template>
          </el-table-column>
          <el-table-column prop="conclusion" label="结论">
          <el-table-column label="结论">
            <template slot-scope="scope">
              <span style="color: #34BD66;" v-if="scope.row.insState == 1"
                >合格</span
              >
              <span style="color: #E84738;" v-else-if="scope.row.insState == 0"
                >不合格</span
              >
              <span style="color: #34BD66;" v-if="scope.row.result === 1">合格</span>
              <span style="color: #E84738;" v-else-if="scope.row.result === 0">不合格</span>
            </template>
          </el-table-column>
          <el-table-column v-if="detailId == null" label="操作" width="100">
          <template slot-scope="scope">
            <el-button type="text" @click="clickDeleteline(scope)"
              >删除</el-button
            >
          </template>
        </el-table-column>
            <template slot-scope="scope">
              <el-button type="text" @click="clickDeleteline(scope)">删除</el-button>
            </template>
          </el-table-column>
        </el-table>
      </div>
      <div class="inspectionResult">
@@ -397,6 +227,7 @@
export default {
  data() {
    return {
      detailId: null,
      search: {
        countSize: 10,
        pageSize: 1,
@@ -404,13 +235,29 @@
        name: "", // 产品名称
        techfather: "" // 工序
      },
      optionsSamplename: [],
      inspectionTable: [],
      optionSoptionSprocesses: [],
      optionTechnology: [],
      inspectionTableTotal: "",
      treeProject: [],
      // 添加列
      empiricalValueAdd: 1,
      empiricalValueAdd: [],
      // 编辑时存储最长的列数字,做删除判断
      empiricalValueAddMaxNumber: 0,
      showAddPage: false,
      processInspectVo: {
        material: null,
        materialCode: null,
        orderNumber: "D-001",
        quantity: null,
        specificationsModel: null,
        techfather: null,
        techname: null,
        technologyId: null,
        unit: null
      },
      InspectioniD: null,
      addInspectionform: [
        {
          number: "",
@@ -425,8 +272,8 @@
          group: "",
          worker: "",
          machine: ""
        }
      ],
        }]
      ,
      inspectionItems: [], // 新增检验项目表格
      inspectionResultForm: [
        {
@@ -437,36 +284,151 @@
          operation: ""
        }
      ],
      options: [
        {
          value: "选项1",
          label: "黄金糕"
        },
        {
          value: "选项2",
          label: "双皮奶"
        },
        {
          value: "选项3",
          label: "蚵仔煎"
        },
        {
          value: "选项4",
          label: "龙须面"
        },
        {
          value: "选项5",
          label: "北京烤鸭"
        }
      ],
      value: ""
      options: [],
      value: "",
      rowList: [],
      spanArr: [],
      position: 0
    };
  },
  mounted() {
    // this.getTableData()
  },
  methods: {
    // 每页条数改变时触发 选择一页显示多少行
    handleSizeChange(val) {
      this.search.countSize = val;
      this.defaultInitializationTable();
    },
    getInsArr(val){
      console.log(val);
      return val.split(",")
    },
    handleSpanMethod({ row, column, rowIndex, columnIndex }) {
      if (columnIndex === 0) {
            const _row = this.spanArr[rowIndex];
            const _col = _row>0 ? 1 : 0;
            return {
                rowspan: _row,
                colspan: _col
            }
        }
        if(columnIndex === 1){
            const _row = this.spanArr[rowIndex];
            const _col = _row>0 ? 1 : 0;
            return {
                rowspan: _row,
                colspan: _col
            }
        }
    },
    // 合并表格
    mergeTable() {
      this.rowList=[]
      this.spanArr=[]
      this.position=0
      this.inspectionItems.forEach((item,index) => {
            if( index === 0){
                this.spanArr.push(1);
                this.position = 0;
            }else{
                if(this.inspectionItems[index].father === this.inspectionItems[index-1].father ){
                    this.spanArr[this.position] += 1;
                    this.spanArr.push(0);
                }else{
                    this.spanArr.push(1);
                    this.position = index;
                }
            }
        })
    },
    changeOptionSoptionSprocesses() {
      this.optionTechnology = []
      let working = this.optionSoptionSprocesses.filter(item => {
        return item.name === this.processInspectVo.techfather
      })[0]
      this.optionTechnology = working.children
    },
    addTestProjevt() {
      let val = JSON.parse(JSON.stringify(this.processInspectVo))
      val.techname = this.processInspectVo.techname.split("-")[1]
      val.technologyId = this.processInspectVo.techname.split("-")[0]
      this.$axios.post(this.$api.url.processInspectAddProcess, {
        material: val.material,
        materialCode: val.materialCode,
        orderNumber: val.orderNumber,
        quantity: val.quantity,
        specificationsModel: val.specificationsModel,
        techfather: val.techfather,
        techname: val.techname,
        technologyId: val.technologyId,
        unit: val.unit
      }, {
        headers: { "Content-Type": "application/json" }
      }).then(res => {
        if (res.code === 201) {
          this.$message({
            message: res.message,
            type: 'warning'
          });
          return
        }
        this.InspectioniD = res.data
        this.getTableData()
      })
    },
    getTableData() {
      this.$axios.get(this.$api.url.inspectionItemListUser, {
        params: {
          id: 28,
          type: 1
        }
      }).then(res => {
        this.inspectionItems = res.data
        let arr = []
        let val=JSON.parse(JSON.stringify(this.inspectionItems))
        //转成一维数组
        val.forEach(l => {
          let father = l.father
          l.children.forEach(c => {
            c.father = father
            c.empiricalValueAdd=[]
            arr.push(c)
          })
        })
        this.inspectionItems = arr
        console.log(this.inspectionItems);
        this.mergeTable(arr)
      })
    },
    selectSample() {
      let sample = this.optionsSamplename.filter(item => {
        return item.name === this.processInspectVo.material
      })[0]
      this.processInspectVo.techfather = null
      this.processInspectVo.techname = null
      this.processInspectVo.materialCode = sample.code
      this.processInspectVo.specificationsModel = sample.specifications
      this.processInspectVo.unit = sample.unit
      this.optionSoptionSprocesses = []
      this.optionSoptionSprocesses = sample.children
    },
    selectInfoByOrderId() {
      this.$axios.get(this.$api.url.chooseMaterProcessInspect, {
        params: {
          orderNumber: this.processInspectVo.orderNumber
        }
      }).then(res => {
        if (res.data.length > 0) {
          console.log(res.data);
          this.optionsSamplename = res.data
        } else {
          this.$message({
            message: '没有该订单号!',
            type: 'warning'
          });
        }
      })
    },
    // 当前页改变时触发 跳转其他页
    handleCurrentChange(val) {
@@ -476,6 +438,7 @@
    // 显示新增页面
    handleAddNew() {
      this.showAddPage = true;
      this.getTableData()
    },
    // 表格初始化接口
    defaultInitializationTable() {
@@ -535,52 +498,66 @@
  align-items: center;
  background-color: #fff;
}
.table_header {
  height: calc(100vh - 550px);
}
.nav * {
  font-size: 14px;
}
.content-body .rawPage {
  background-color: #fff;
  overflow: hidden;
}
.inspectionTable {
  padding: 20px 20px;
}
.pagination {
  float: right;
  margin-right: 20px;
}
.newPage {
  overflow: hidden;
}
.header {
  padding: 12px;
}
.addInspectionform {
  background-color: #fff;
}
.addInspectionform .formwrapper {
  padding: 20px 0px;
  margin-left: 100px;
}
.inspectionProject .el-table {
  background-color: #fff;
  padding: 10px 12px;
}
.inspectionResult span {
  display: block;
  padding: 5px 0px;
}
.inspectionResult .el-table {
  background-color: #fff;
  padding: 10px 12px;
}
.inspectionProject_span {
  line-height: 32px;
  padding: 10px 20px;
}
.inspectionProject_span .el-button {
  float: right;
  font-size: 13px !important;
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>
@@ -58,6 +63,16 @@
      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) {
@@ -146,8 +161,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">
@@ -67,19 +67,37 @@
                <span>{{scope.row.device}}</span>
            </template>
        </el-table-column>
        <el-table-column prop="productFather" label="项目"></el-table-column>
        <el-table-column prop="productFather" label="项目">
          <template slot-scope="scope">
                <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>
<script>
export default ({
    data() {
      return {
        deviceGroupDialog:false,
        selects: [],
        isAllSelect:false,
      }
    },
    props:['tableData','tableType'],
    methods:{
      updateProduct(row){
        console.log(row);
      },
        // 表格树全部选中配置
      // 全选/取消选操作
      selectAll(val) {
src/components/view/standard-table/target.vue
@@ -19,11 +19,16 @@
                <span>{{scope.row.tname}}</span>
            </template>  
        </el-table-column>
        <el-table-column prop="pfather" label="项目">
            <template slot-scope="scope">
                <el-tag type="info" color="#faf2ff" v-if="scope.row.pfather != null">
                  <span style="color: #e1affb">03</span>
                </el-tag>
                <span>{{scope.row.pfather}}</span>
            </template>
        </el-table-column>
        <el-table-column prop="pname" label="指标名称">
            <template slot-scope="scope">
                <el-tag type="info" color="#faf2ff" v-if="scope.row.pname != null">
                    <span style="color: #e1affb">03</span>
                </el-tag>
                <span>{{scope.row.pname}}</span>
            </template>
        </el-table-column>
@@ -31,14 +36,14 @@
        <el-table-column prop="internal" label="内控值">
          <template slot-scope="scope">
            <el-input v-model="scope.row.internal" 
            v-if="scope.row.internal != null"
            v-if="scope.row.pname != null"
            @blur="updateVal(scope.row)"></el-input>
          </template>
        </el-table-column>
        <el-table-column prop="required" label="标准值">
          <template slot-scope="scope">
            <el-input v-model="scope.row.required" 
            v-if="scope.row.required != null"
            v-if="scope.row.pname != null"
            @blur="updateVal(scope.row)"></el-input>
          </template>
        </el-table-column>
@@ -164,8 +169,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
@@ -35,7 +35,7 @@
            <el-table-column prop="pq" label="生产定额(个/天)">
              <template slot-scope="scope">
                  <el-input v-model="scope.row.pq" 
                  v-if="scope.row.pq != null"
                  v-if="scope.row.dg != null"
                  @blur="updatePq(scope.row)"
                  ></el-input>
              </template>
@@ -65,9 +65,7 @@
      }
    },
    props:['tableData','tableType'],
    created() {
      console.log(this.tableData)
    },
    created() {},
    mounted() {
    },
    methods: {
@@ -190,7 +188,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,8 @@
        <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="showBomAddModel">新增</el-button>
            @click="bomAddModelVisible = true">新增</el-button>
          <el-button icon="el-icon-plus">新增版本</el-button>
          <el-button @click="bomRightUp=true" icon="el-icon-edit-outline">修改</el-button>
          <el-button @click="bomRightDl=true" icon="el-icon-delete">删除</el-button>
        </el-col>
      </el-row>
@@ -33,8 +32,6 @@
          </div>
        </el-tree>
      </div>
      <div class="right">
        <div class="choose">
          <span>类型:</span>
@@ -46,180 +43,253 @@
            <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 size="small" 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>
          <el-button style="margin-left:10px;" size="mini" @click="() => { searchName = ''; selectProductTableData() }"><span>重 置</span></el-button>
          <el-button size="mini" @click="() => { searchName = ''; selectProductTableData() }"><span>重 置</span></el-button>
          <el-button size="mini" type="primary" style="background: #004EA2;" @click="selectProductTableData"><span>查
              询</span></el-button>
        </div>
        <div v-if="this.typeselect == 0">
        <div class="contentTable" v-if="this.typeselect == 0">
          <technology  :tableType="tableType" :tableData="tableData"></technology>
        </div>
        <div v-if="this.typeselect == 1">
          <target :tableType="tableType" :tableData="tableData"></target>
        </div>
        <div v-if="this.typeselect == 2">
          <material :tableType="tableType" :tableData="tableData"></material>
          <bom  :tableType="tableType" :tableData="tableData"></bom>
        </div>
        <div v-if="this.typeselect == 3">
          <product :tableType="tableType" :tableData="tableData"></product>
        </div>
        <div v-if="this.typeselect == 3">生产工艺</div>
        
      </div>
    </div>
    <div class="bom-add-model">
      <el-dialog title="BOM新增" :visible.sync="bomAddModelVisible" width="35%">
      <el-dialog title="BOM新增" :visible.sync="bomAddModelVisible" width="45%">
        <!-- 工艺路线 -->
        <div v-if="typeselect == 0">、
          <el-form :model="technologyForm" :inline="true" class="demo-form-inline" label-position="right"
          :rules="boomRules" ref="boomForm" label-width="90px">
            <el-form-item label="工序:" prop="father" width="250">
              <el-select v-model="technologyForm.father"
              style="width:200px;" placeholder="请输入或选择工序">
        <div v-if="typeselect == 0">
          <el-form :model="technologyForm" :inline="true" label-position="right"
           ref="technologyForm" :rules="technologyRules" label-width="90px">
            <el-form-item label="工序:" prop="tefather">
              <el-select id="tefather" size="small"
              filterable allow-create default-first-option
              v-model="technologyForm.tefather" placeholder="请输入或选择工序">
                <el-option :value="item.father" :label="item.father" v-for="(item,index) in fatherList" :key="index"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="工艺名称:" prop="name" width="250">
              <el-input placeholder="请输入工艺名称" style="width:200px;"
              v-model="technologyForm.name"></el-input>
            <el-form-item label="工艺名称:" prop="tename">
              <el-input id="tename" size="small" placeholder="请输入工艺名称"
              clearable v-model="technologyForm.tename"></el-input>
            </el-form-item>
            <el-form-item label="设备组:" prop="deviceGroup" width="250">
              <el-select placeholder="请选择设备组"
              style="width:200px;"
            <el-form-item label="设备组:" prop="deviceGroup">
              <el-select id="deviceGroup" placeholder="请选择设备组" size="small"
              v-model="technologyForm.deviceGroup">
              <el-option :value="item.father" 
              v-for="(item,index) in deviceList" :key="index" :label="item.father"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="生产定额:" prop="productionQuota" width="250">
              <el-input style="width:200px;" v-model.number="technologyForm.productionQuota" placeholder="请输入生产定额" />
            <el-form-item label="生产定额:" prop="productionQuota">
              <el-input id="productionQuota" size="small" clearable v-model.number="technologyForm.productionQuota" placeholder="请输入生产定额" />
            </el-form-item>
          </el-form>
          <div style="width:100%;text-align: right;">
            <span slot="footer" class="dialog-footer" >
              <el-button type="primary" @click="confirmAdd('technologyForm')">确 定</el-button>
              <el-button @click="bomAddModelVisible = false">取 消</el-button>
            </span>
          </div>
        </div>
        <!-- 技术指标 -->
        <div v-if="typeselect == 1">
          <el-form :model="targetForm" :inline="true" class="demo-form-inline" label-position="right"
          label-width="80px">
            <el-form-item label="指标名称:" prop="father" width="250">
              <el-input style="width:200px;" v-model="targetForm.pname" placeholder="请输入单位"/>
          <el-form :model="targetForm" :inline="true" label-position="right"
          :rules="targetRules" ref="targetForm" label-width="90px">
            <el-form-item label="工序:" prop="pfather">
              <el-select v-model="targetForm.pfather"
              @change="changeFather"
              style="width:200px;" placeholder="请选择工序">
                <el-option :value="item.name" :label="item.name" v-for="(item,index) in targetFormList" :key="index"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="单位:" prop="name" width="250">
            <el-form-item label="工艺名称:" prop="technologyId">
              <el-select v-model="targetForm.technologyId"
              @change="changeTechnologyId"
              style="width:200px;" placeholder="请选择工艺名称">
                <el-option :value="item.id" :label="item.name" v-for="(item,index) in technologyIdList" :key="index"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="项目:" prop="father">
              <el-select v-model="targetForm.father"
              filterable allow-create default-first-option
              style="width:200px;" placeholder="请输入或选择项目">
                <el-option :value="item.father" :label="item.father" v-for="(item,index) in projectList" :key="index"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="指标名称:" prop="name">
              <el-input style="width:200px;" v-model="targetForm.name" placeholder="请输入指标名称"/>
            </el-form-item>
            <el-form-item label="单位:" prop="unit">
              <el-input style="width:200px;" v-model="targetForm.unit" placeholder="请输入单位"/>
            </el-form-item>
            <el-form-item label="内控值:" prop="dg" width="250">
              <el-input style="width:200px;" v-model="targetForm.internal" placeholder="请输入单位"/>
            <el-form-item label="内控值:" prop="internal">
              <el-input style="width:200px;" v-model="targetForm.internal" placeholder="请输入内控值"/>
            </el-form-item>
            <el-form-item label="标准值:" prop="unit" width="250">
              <el-input style="width:200px;" v-model="targetForm.required" placeholder="请输入单位"/>
            <el-form-item label="标准值:" prop="required">
              <el-input style="width:200px;" v-model="targetForm.required" placeholder="请输入标准值"/>
            </el-form-item>
          </el-form>
          <div style="width:100%;text-align: right;">
            <span slot="footer" class="dialog-footer" >
              <el-button type="primary" @click="confirmAdd('targetForm')">确 定</el-button>
              <el-button @click="bomAddModelVisible = false">取 消</el-button>
            </span>
          </div>
        </div>
        <!-- 物料清单 -->
        <div v-if="typeselect == 2">
          <el-form :model="materialForm" class="demo-form-inline" label-position="right"
          label-width="80px">
          <el-row>
          <el-form :model="materialForm" label-position="right"
          :rules="materialRules" ref="materialForm" label-width="90px">
          <el-row :gutter="100">
            <el-col :span="12">
              <el-form-item label="规格型号:" prop="father" 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="产品大类:" prop="name" 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%;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>
            </span>
          </div>
        </div>
        <!-- 生产工艺 -->
        <div v-if="typeselect == 3">
          <el-form :model="technologyForm" :inline="true" class="demo-form-inline" label-position="right"
          label-width="80px">
            <el-form-item label="工序:" prop="father" width="250">
              <el-select v-model="technologyForm.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>
          <el-form :model="productForm" :inline="true" label-position="right"
          :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="工艺名称:" prop="name" width="250">
              <el-select placeholder="请输入或选择工艺名称"
              style="width:200px;"
              v-model="technologyForm.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="设备:" prop="dg" width="250">
            <el-form-item label="设备:" prop="device">
              <el-select placeholder="请选择设备"
              style="width:200px;"
              v-model="technologyForm.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="项目:" prop="dg" width="250">
            <el-form-item label="项目:" prop="productFather">
              <el-select placeholder="请选择项目"
              style="width:200px;"
              v-model="technologyForm.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="单位:" prop="unit" width="250">
              <el-input style="width:200px;" v-model="technologyForm.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="指标:" prop="pq" width="250">
              <el-input style="width:200px;" v-model="technologyForm.pq" placeholder="请输入指标" />
            <el-form-item label="单位:" prop="unit">
              <el-input style="width:200px;" disabled v-model="productForm.unit"/>
            </el-form-item>
          </el-form>
        </div>
        <span slot="footer" class="dialog-footer">
          <el-button @click="bomAddModelVisible = false">取 消</el-button>
          <el-button type="primary" @click="confirmAdd('boomForm')">确 定</el-button>
        </span>
          <div style="width:100%;text-align: right;">
              <span slot="footer" class="dialog-footer" >
                <el-button type="primary" @click="confirmAdd('productForm')">确 定</el-button>
                <el-button @click="bomAddModelVisible = false">取 消</el-button>
              </span>
            </div>
          </div>
      </el-dialog>
      <!-- 左侧点击+按钮 -->
      <el-dialog title="BOM新增" :visible.sync="bomLeftAdd" width="29%">
@@ -245,16 +315,6 @@
          <el-button type="primary" @click="submitForm('leftAdd')">确 定</el-button>
        </span>
      </el-dialog>
            <!-- 右上侧点击修改按钮 -->
      <el-dialog title="BOM修改" :visible.sync="bomRightUp" width="30%">
        <el-form>
            修改
        </el-form>
        <span slot="footer" class="dialog-footer">
          <el-button @click="bomRightUp = false">取 消</el-button>
          <el-button type="primary" @click="bomRightUp = false">确 定</el-button>
        </span>
      </el-dialog>
        <!-- 右上侧点击删除按钮 -->
      <el-dialog title="BOM删除" :visible.sync="bomRightDl" width="30%">
        <el-form>
@@ -272,40 +332,100 @@
<script>
import technology from "./standard-table/technology.vue"
import material from "./standard-table/material.vue"
import target from "./standard-table/target.vue"
import product from "./standard-table/product.vue"
// import bom from "./standard-table/bom.vue"
import bomClickAdd from '@/components/view/standard-box/bomClickAdd'
export default {
  components: { technology,material,target,product,bomClickAdd },
  components: { technology,material,bomClickAdd },
  data() {
    var checkPq = (rule,value,callback)=>{
      if(value!='' && !Number.isInteger(value)){
        return callback(new Error('请输入数字值'));
      }
      callback();
    };
    var checkVal = (rule,value,callback)=>{
      let arr = [">","<","="];
      if(value!='' && arr.indexOf(value.substring(0,1))==-1){
        callback(new Error("开头需包含 > 或 < 或 = "))
      }
      callback();
    };
    return {
      //工序列表
      technologyIdList:[],
      fatherList:[],
      //设备组列表
      deviceList:[],
      technologyForm:{
        father:'',
        name:'',
        tefather:'',
        tename:'',
        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:{
        pname:'',
        pfather:'',
        father: '',
        technologyId:'',
        name:'',
        unit:'',
        internal:'',
        required: ''
      },
      formTypeOptions:[],
      materialForm:{},
      boomRules:{
        father:{required:true,message:'工序不能为空',trigger:'change'},
        name:{required:true,message:'工艺名称不能为空',trigger:'blur'},
        deviceGroup:{required:true,message:'设备组不能为空',trigger:'change'},
        productionQuota:[
          {required:true,message:'生产定额不能为空',trigger:'blur'},
          {type:'number',required:true,message:'数据类型必须是纯数字',trigger:'blur'}
        ]
      targetRules:{
        pfather:{required:true,message:'工序不能为空',trigger:'change'},
        technologyId:{required:true,message:'工艺名称不能为空',trigger:'change'},
        father:{required:true,message:'项目不能为空',trigger:'change'},
        name:{required:true,message:'指标名称不能为空',trigger:'blur'},
        unit:{required:true,message:'单位不能为空',trigger:'change'},
        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,
@@ -330,7 +450,7 @@
        name: null,
        specifications: null
      },
      VER: {},
      version2: {},
      verdata: {},
      character: 0,
      restaurants: [],
@@ -339,19 +459,10 @@
      isLeftAdd: true
    }
  },
  // watch: {
  //   search(val) {
  //     this.$refs.tree.filter(val);
  //   },
  //   tableType(val){
  //     this.selectProductTableData()
  //   }
  // },
  mounted() {
    this.tableType=0
    this.selectMaterialTree()
    this.selectVersion()
    console.log(this.formTypeOptions);
  },
  methods: {
    changeLeftAdd(){
@@ -461,33 +572,178 @@
        this.$refs[formName].resetFields();
      },
    leftAddBom(){
    },
    //右侧bom,确认新增
    confirmAdd(formName){
      this.$refs[formName].validate(valid=>{
        if(valid){
          console.log(this.technologyForm);
          this.$axios.post(this.$api.url.addTechnology,
          {
            "specificationsId": this.returntree.id,
            "technologyDto": JSON.stringify({
          let type = this.typeselect;
          let obj = {}
          if(type == 0){
            obj = {
                specificationsId: Number.parseInt(this.returntree.id),
                deviceGroup: this.technologyForm.deviceGroup,
                father: this.technologyForm.father,
                name: this.technologyForm.name,
                productionQuota: this.technologyForm.productionQuota,
              })
          },{
            headers: { "Content-Type": "application/json" }
          }).then(res=>{
            this.$message.success(res.message);
          }).catch(error=>{
            this.$message.error(error.message);
          })
          this.bomAddModelVisible = false;
                father: this.technologyForm.tefather,
                name: this.technologyForm.tename,
                productionQuota: Number.parseInt(this.technologyForm.productionQuota),
              }
              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
          }
        }
      })
    },
    //获取工序列表
    submitBomAdd(url,data){
      this.$axios.post(
          url,data,
          {headers: { "Content-Type": "application/json" }}
      ).then(res=>{
        this.selectAll();
        this.$message.success(res.message);
      }).catch(error=>{
        this.$message.error(error.message);
      })
      this.bomAddModelVisible = false;
    },
    clearBomAddModel(){
      if(this.typeselect == 0){
        this.$refs["technologyForm"].resetFields();
      }else if(this.typeselect == 1){
        this.$refs["targetForm"].resetFields();
      }else if(this.typeselect == 2){
        this.$refs["materialForm"].resetFields();
      }else{
        this.$refs["productForm"].resetFields();
      }
    },
    changeTechnologyId(val){
      this.$axios.get(this.$api.url.chooseFatherByStandard,{
        params:{technologyId : val}
      }).then(res=>{
        this.projectList = res.data;
      }).catch(error=>{
        this.$message.error(error.message);
      });
    },
    changeFather(val){
      let arr = this.targetFormList.filter(item=>{
        return item.name == val;
      });
      if(arr != undefined || arr.children != null){
        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}
      }).then(res=>{
        this.targetFormList = res.data;
      }).catch(error=>{
        this.$message.error(error.message);
      })
    },
    //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}
@@ -497,7 +753,7 @@
        this.$message.error(error.message);
      })
    },
    //获取设备组列表
    //工艺路线--获取设备组列表
    getDeviceList(){
      this.$axios.get(this.$api.url.chooseDevice).then(res=>{
        this.deviceList = res.data;
@@ -508,6 +764,9 @@
    showBomAddModel(){
      this.getFatherList();
      this.getDeviceList();
      this.getTargetFormList();
      this.getMaterialFormList();
      this.getProductFormList();
      this.bomAddModelVisible = true
    },
    startLeftAdd(){
@@ -577,6 +836,7 @@
    TYPE(val) {//类型.数据
      // console.log(val);
      this.typeselect = val
      // console.log(this.typeselect);
      this.selectVersion()
    },
@@ -603,7 +863,7 @@
        return this.verdata[0]
      })
      this.character=v
      this.VER="v"+v
      this.version2="v"+v
      this.selectAll()
    },
    //右侧数据
@@ -786,6 +1046,11 @@
       this.restaurants=this.loadFatherType()
      }
    }
  },
  bomAddModelVisible(newVal){
    if(!newVal){
      this.clearBomAddModel();
    }
  }
  }
}
@@ -793,7 +1058,15 @@
<style scoped>
.standard {}
.standard .bom-add-model{
  width: 100%;
}
.standard .bom-add-model form{
  width: 90%;
  margin-left: 5%;
}
.standard .title .el-button {
  height: 32px;
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
        >
src/main.js
@@ -12,7 +12,6 @@
import swal from 'sweetalert'
Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80/"; //前端本地端口
Vue.prototype.HaveJson = (val) => {
    return JSON.parse(JSON.stringify(val))
}
@@ -27,7 +26,7 @@
const javaApi = 'http://192.168.0.23:8001'
// localhost 127.0.0.1
// const javaApi = 'http://127.0.0.1:8001/'
// const javaApi = 'http://127.0.0.1'
src/view/index.vue
@@ -1,629 +1,582 @@
<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: 32px;
        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">
                </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");
            }
        }
    };
</script>