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