王震
2023-09-12 49a5757c36d73524c74bc27fcecf486368d80311
Merge remote-tracking branch 'origin/master'
已修改10个文件
已添加3个文件
2328 ■■■■ 文件已修改
src/assets/api/controller.js 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/Processingproducts.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/processInspection.vue 987 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/raw-ins.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/rawInsDetail.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/rawUnqualified/raw.vue 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/standard-box/bomClickAdd.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/standard-table/material.vue 100 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/standard-table/product.vue 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/standard-table/target.vue 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/standard-table/technology.vue 144 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/standard.vue 609 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/unqualifiedManagement.vue 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/api/controller.js
@@ -6,6 +6,14 @@
    selectProductByMaterial: "product/selectTreeByMaterial", //根据物料查询项目表格
    selectTechnologyByMaterial: "technology/select",
    selectAll:"/material/selectAll",//右侧数据
    technologyWrite:"/technology/write",//工艺路线,移开保存生产定额
    productWrite:"/product/write",//技术指标,移开保存内控值和标准值
    chooseFather: "/technology/chooseFather",//获取工序列表
    chooseDevice: "/technology/chooseDevice",//获取设备组列表
    addTechnology: "/technology/add",//添加工艺路线
    leftAddOneTwo: "/material/add",//左侧新增1,2级
    leftAddThree: "/standard/add",//左侧三级新增
    leftAddFour: "/specifications/add",//左侧四级新增
    // æŠ€æœ¯ç®¡ç†-技术文件
    selectAllOrder: "/orders/selectAllOrder", //查询所有订单列表
    selectOrderById: "/orders/selectOrderById", //根据订单id查询订单详情
@@ -27,7 +35,8 @@
}
//不合格原材料
const unqualifiedaa ={
    selectUnRawInspectsList: "/inspectUnaccepted/selectURawMaterials"
    selectUnRawInspectsList: "/inspectUnaccepted/selectURawMaterials", // æŸ¥è¯¢åŽŸææ–™ä¸åˆæ ¼å“æ£€éªŒå•åˆ—è¡¨
    evaluatePassOrNo: "/inspectUnaccepted/evaluatePassOrNo" // è¯„审
}
// æŸ¥è¯¢æˆå“ä¸åˆæ ¼å“ç®¡ç†
const unRawInspects ={
@@ -49,7 +58,10 @@
    projectListByfinishId: "/inspection-item/list_user", //根据id查询所有项目
}
// è¿‡ç¨‹æ£€éªŒ
const processInspection = {
    selectProcessInspectsList: "/processInspect/selectProcessInspectsList", // åˆ†é¡µæŸ¥è¯¢è¿‡ç¨‹æ£€éªŒå•列表
}
// QMS实验室管理
const laboratory = {
  delDeviceById:"/device/delDeviceById",//删除
@@ -135,6 +147,7 @@
    ...dispose,
    ...Basicdata,
    ...unRawInspects,
    ...processInspection,
    // ...gettable,
    selectSaleList: "sale/selectSaleList", //查询销售单列表
    selectSaleDatilById: "sale/selectSaleDatilById", //根据销售单id查看详情,
src/components/view/Processingproducts.vue
@@ -157,7 +157,11 @@
      </el-card>
    </div>
    <el-dialog title="提示" :visible.sync="dialogVisible" width="30%">
      <el-form label-width="130px">
      <el-form label-width="130px" style="height: 500px; overflow: auto ;">
        <el-empty
          v-if="updateEditList.length == 0"
          :image-size="200"
        ></el-empty>
        <div v-for="item in updateEditList" :key="item.$index">
          <el-form-item
            :label="
src/components/view/processInspection.vue
@@ -1,435 +1,588 @@
<template>
    <div class="content-main">
      <div v-if="!showAddPage" class="rawPage">
          <div class="title">
  <div class="content-main">
    <div v-if="!showAddPage" class="rawPage">
      <div class="title">
        <el-row>
          <el-col :span="12">过程检验</el-col>
          <el-col :span="12" style="text-align: right;">
            <el-button @click="handleAddNew" type="primary" size="mini" icon="el-icon-plus" style="background: #004EA2; ">新增</el-button>
            <el-button icon="el-icon-delete" size="mini">删除</el-button>
            <el-button
              @click="handleAddNew"
              type="primary"
              size="mini"
              icon="el-icon-plus"
              style="background: #004EA2; "
              >新增</el-button
            >
            <el-button icon="el-icon-download" size="mini">导出</el-button>
          </el-col>
        </el-row>
      </div>
      <div class="nav">
          <span>检验结果:</span>
          <el-select v-model="inspectionResult" size="small" placeholder="请选择" style="width: 224px;margin-right: 52px;">
              <el-option value="选项1"></el-option>
              <el-option value="选项2"></el-option>
            </el-select>
            <span>检验日期:</span>
            <el-date-picker
              v-model="inspectionDate"
              type="date"
              placeholder="选择日期"
              style="margin-right: 52px">
             </el-date-picker>
            <span>检验人:</span>
            <el-select v-model="inspecter" size="small" placeholder="请选择" style="width: 224px;margin-right: 52px;">
              <el-option value="选项1"></el-option>
              <el-option value="选项2"></el-option>
            </el-select>
            <el-button size="mini"><span>重 ç½®</span></el-button>
            <el-button size="mini" type="primary" style="background: #004EA2;"><span>查 è¯¢</span></el-button>
        <span>检验状态:</span>
        <el-select
          size="small"
          v-model="search.result"
          placeholder="请选择检测状态"
          style="width: 224px;margin-right: 52px;"
        >
          <el-option :value="''" label="全部"></el-option>
          <el-option :value="1" label="已检测"></el-option>
          <el-option :value="2" label="待检测"></el-option>
        </el-select>
        <span>产品名称:</span>
        <el-input
          size="small"
          style="width: 224px;margin-right: 30px;"
          v-model="search.name"
          placeholder="请输入产品名称"
        ></el-input>
        <span>工序:</span>
        <el-input
          size="small"
          style="width: 224px;margin-right: 30px;"
          v-model="search.techfather"
          placeholder="请输入工序"
        ></el-input>
        <el-button size="mini"><span>重 ç½®</span></el-button>
        <el-button size="mini" type="primary" style="background: #004EA2;"
          ><span>查 è¯¢</span></el-button
        >
      </div>
      <div class="content-body">
          <div class="inspectionTable">
              <el-table
                  ref="inspectionTable"
                  :height="400"
                  :max-height="400"
                  :cell-style="{textAlign: 'center'}"
                  :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}"
                  :data="inspectionTable"
                  style="width: 100%"
                  >
                  <el-table-column
                      type="selection"
                      width="50">
                  </el-table-column>
                  <el-table-column
                      prop="number"
                      label="订单号"
                      min-width="100"
                  />
                  <el-table-column
                      prop="username"
                      label="客户名称"
                      min-width="80"
                  />
                  <el-table-column
                      prop="projectname"
                      label="工程名称"
                      min-width="80"
                  />
                  <el-table-column
                      prop="tracenumber"
                      label="质量追溯号"
                      min-width="108"
                  />
                  <el-table-column
                      prop="code"
                      label="产品编码"
                      min-width="100"
                  />
                  <el-table-column
                      prop="class"
                      label="产品大类"
                      min-width="72"
                  />
                  <el-table-column
                      prop="specificationmodel"
                      label="规格型号"
                      min-width="110"
                  />
                  <el-table-column
                      prop="unit"
                      label="单位"
                      min-width="50"
                  />
                  <el-table-column
                      prop="quantity"
                      label="数量"
                      min-width="50"
                  />
                  <el-table-column
                      prop="machine"
                      label="机台"
                      min-width="60"
                  />
                  <el-table-column
                      prop="group"
                      label="班组"
                      min-width="50"
                  />
                  <el-table-column
                      prop="worker"
                      label="主机工"
                      min-width="60"
                  />
                  <el-table-column
                      prop="date"
                      label="检验日期"
                      min-width="80"
                  />
                  <el-table-column
                      prop="result"
                      label="检测结果"
                      min-width="80"
                  />
                  <el-table-column
                      label="操作"
                      min-width="80"
                  >
                      <template slot-scope="scope">
                      <el-button type="text" size="small" @click="handleClick(scope.row)">查看</el-button>
                      <el-button type="text" size="small" style="margin-left: 0;">打印</el-button>
                      </template>
                  </el-table-column>
              </el-table>
          </div>
          <!-- åˆ†é¡µå™¨ -->
          <div class="pagination">
              <el-pagination
              :current-page="currentPage"
              :page-sizes="[100, 200, 300, 400]"
              :page-size="pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="this.inspectionTable.length"
              @size-change="handleSizeChange"
              @current-change="handleCurrentChange"
        <div class="inspectionTable">
          <el-table
            ref="inspectionTable"
            height="calc(100vh - 320px)"
            :cell-style="{ textAlign: 'center' }"
            :header-cell-style="{
              border: '0px',
              background: '#f5f7fa',
              color: '#606266',
              boxShadow: 'inset 0 1px 0 #ebeef5',
              textAlign: 'center'
            }"
            border
            :data="inspectionTable"
            style="width: 100%"
          >
            <el-table-column type="selection" width="50"> </el-table-column>
            <el-table-column
              label="序号"
              type="index"
              width="60"
            ></el-table-column>
            <el-table-column
              prop="order_number"
              label="订单编号"
              min-width="90"
            />
          </div>
            <el-table-column prop="material" label="产品名称" min-width="80" />
            <el-table-column
              prop="specifications_model"
              label="规格型号"
              min-width="60"
            />
            <el-table-column prop="techfather" label="工序" min-width="70" />
            <el-table-column prop="techname" label="工艺名称" min-width="70" />
            <el-table-column prop="unit" label="单位" min-width="50" />
            <el-table-column prop="quantity" label="数量" min-width="50" />
            <el-table-column
              prop="createTime"
              label="报检日期"
              min-width="60"
            />
            <el-table-column prop="name" label="报检人" min-width="50" />
            <el-table-column
              prop="updateTime"
              label="检测日期"
              min-width="60"
            />
            <el-table-column prop="result" label="合格状态" min-width="80">
              <template slot-scope="scope">
                <span style="color: #34BD66;" v-if="scope.row.result == 1"
                  >合格</span
                >
                <span style="color: #E84738;" v-else-if="scope.row.result == 0"
                  >不合格</span
                >
              </template>
            </el-table-column>
            <el-table-column label="操作" min-width="80">
              <template slot-scope="scope">
                <el-button type="text" size="small" style="margin-left: 0;"
                  >详情</el-button
                >
                <el-button
                  type="text"
                  size="small"
                  @click="handleClick(scope.row)"
                  >查看</el-button
                >
                <el-button type="text" size="small" style="margin-left: 0;"
                  >编辑</el-button
                >
              </template>
            </el-table-column>
          </el-table>
        </div>
        <!-- åˆ†é¡µå™¨ -->
        <div class="pagination">
          <el-pagination
            :current-page="1"
            :page-sizes="[10, 20, 30, 40]"
            :page-size="pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="inspectionTableTotal"
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
          />
        </div>
      </div>
      </div>
      <div class="newPage" v-if="showAddPage">
          <!-- æ–°å¢žé¡µé¢ -->
              <div class="addInspection">
                  <el-row class="header">
                      <el-col :span="12">新增过程检验单</el-col>
                      <el-col :span="12" style="text-align: right;">
                          <!-- ç‚¹å‡»è¿”回,当前页面值为false -->
                      <el-button @click="showAddPage = false" type="primary" size="mini" icon="el-icon-back" style="background: #004EA2; ">返回</el-button>
                      </el-col>
                  </el-row>
                  <el-form :model="addInspectionform" ref="addInspectionform" class="addInspectionform" label-position="left" label-width="100px" size="mini" >
                      <div class="formwrapper">
                          <el-row :gutter="450">
                          <el-col :span="5">
                          <el-form-item label="订单号:">
                              <el-input style="width: 180px;" v-model="addInspectionform.number" placeholder="请输入订单号" autocomplete="off" />
                          </el-form-item>
                          </el-col>
                          <el-col :span="5">
                          <el-form-item label="客户名称:">
                              <el-input style="width: 180px;" v-model="addInspectionform.username" placeholder="请输入客户名称" autocomplete="off" />
                          </el-form-item>
                          </el-col>
                          <el-col :span="5">
                          <el-form-item label="工程名称:">
                              <el-input style="width: 180px;" v-model="addInspectionform.projectname" placeholder="请输入工程名称" autocomplete="off" />
                          </el-form-item>
                          </el-col>
                      </el-row>
                      <el-row :gutter="450">
                          <el-col :span="5">
                          <el-form-item label="质量追溯号:" >
                              <el-input style="width: 180px;" v-model="addInspectionform.tracenumber" placeholder="请输入追溯号" autocomplete="off" />
                          </el-form-item>
                          </el-col>
                          <el-col :span="5">
                          <el-form-item label="产品编码:">
                              <el-input style="width: 180px;" v-model="addInspectionform.code" placeholder="请输入产品编码" autocomplete="off" />                        </el-form-item>
                          </el-col>
                          <el-col :span="5">
                          <el-form-item label="产品名称:">
                              <el-select style="width: 180px;" v-model="addInspectionform.class" size="small" placeholder="请选择产品名称">
                                  <el-option value="选项1"></el-option>
                                  <el-option value="选项2"></el-option>
                              </el-select>
                          </el-form-item>
                          </el-col>
                      </el-row>
                      <el-row :gutter="450">
                          <el-col :span="5">
                          <el-form-item label="规格型号:" >
                              <el-select style="width: 180px;" v-model="addInspectionform.specificationmodel" size="small" placeholder="请选择规格型号">
                                  <el-option value="选项1"></el-option>
                                  <el-option value="选项2"></el-option>
                              </el-select>
                          </el-form-item>
                          </el-col>
                          <el-col :span="5">
                          <el-form-item label="单位:" >
                              <el-select style="width: 180px;" v-model="addInspectionform.unit" size="small" placeholder="请选择单位">
                                  <el-option value="选项1"></el-option>
                                  <el-option value="选项2"></el-option>
                              </el-select>
                          </el-form-item>
                          </el-col>
                          <el-col :span="5">
                          <el-form-item label="数量:">
                              <el-input style="width: 180px;" v-model="addInspectionform.quantity" placeholder="请输入数量" autocomplete="off" />
                          </el-form-item>
                          </el-col>
                      </el-row>
                      <el-row :gutter="450">
                          <!-- <el-col :span="5">
                          <el-form-item label="班组:" >
                              <el-select style="width: 180px;" v-model="addInspectionform.group" size="small" placeholder="请选择班组">
                                  <el-option value="选项1"></el-option>
                                  <el-option value="选项2"></el-option>
                              </el-select>                       </el-form-item>
                          </el-col> -->
                          <el-col :span="5">
                          <el-form-item label="主机工:" >
                              <el-select style="width: 180px;" v-model="addInspectionform.worker" size="small" placeholder="请选择主机工">
                                  <el-option value="选项1"></el-option>
                                  <el-option value="选项2"></el-option>
                              </el-select>
                          </el-form-item>
                          </el-col>
                          <el-col :span="5">
                          <el-form-item label="机台:" >
                              <el-select style="width: 180px;" v-model="addInspectionform.machine" size="small" placeholder="请选择产品机台">
                                  <el-option value="选项1"></el-option>
                                  <el-option value="选项2"></el-option>
                              </el-select>
                          </el-form-item>
                          </el-col>
                      </el-row>
                      </div>
                  </el-form>
              </div>
              <div class="inspectionProject">
                  <span>检验项目</span>
                  <el-table :data="inspectionItems">
                      <el-table-column type="index" label="序号" width="60"></el-table-column>
                      <el-table-column prop="project" label="项目"></el-table-column>
                      <el-table-column prop="unit" label="单位"></el-table-column>
                      <el-table-column prop="standardVal" label="标准值"></el-table-column>
                      <el-table-column prop="controlVal" label="内测值"></el-table-column>
                      <el-table-column prop="detectionVal" label="检验值"></el-table-column>
                      <el-table-column label="试验设备">
                          <template slot-scope="scope">
                          {{ scope.row.device }}
                          <el-select v-model="scope.row.device" size="small" slot="append" style="width: 100px;">
                              <el-option value="选项1"></el-option>
                              <el-option value="选项2"></el-option>
                          </el-select>
                      </template>
                      </el-table-column>
                      <el-table-column prop="conclusion" label="结论">
                          <template slot-scope="scope">
                              <span style="color: #34BD66;" v-if="scope.row.insState==1">合格</span>
                              <span style="color: #E84738;" v-else-if="scope.row.insState==0">不合格</span>
                          </template>
                      </el-table-column>
                  </el-table>
              </div>
              <div class="inspectionResult">
                  <span>检测结果</span>
                  <el-table :data="inspectionResultForm">
                      <el-table-column prop="id" label="物料编号"></el-table-column>
                      <el-table-column prop="name" label="物料名称"></el-table-column>
                      <el-table-column prop="inspecter" label="检验员"></el-table-column>
                      <el-table-column prop="conclusion" label="检验结论"></el-table-column>
                      <el-table-column prop="operation" label="上报"></el-table-column>
                  </el-table>
              </div>
          </div>
    </div>
  </template>
    <div class="newPage" v-if="showAddPage">
      <!-- æ–°å¢žé¡µé¢ -->
      <div class="addInspection">
        <el-row class="header">
          <el-col :span="12">新增过程检验单</el-col>
          <el-col :span="12" style="text-align: right;">
            <!-- ç‚¹å‡»è¿”回,当前页面值为false -->
            <el-button
              type="primary"
              size="mini"
              style="background: #004EA2; "
              icon="el-icon-circle-plus-outline"
              >新增</el-button
            >
            <el-button
              @click="showAddPage = false"
              type="primary"
              size="mini"
              icon="el-icon-back"
              style="background: #004EA2; "
              >返回</el-button
            >
          </el-col>
        </el-row>
        <el-form
          :model="addInspectionform"
          ref="addInspectionform"
          class="addInspectionform"
          label-position="right"
          label-width="120px"
          size="small"
        >
          <div class="formwrapper">
            <el-row :gutter="230">
              <el-col :span="7">
                <el-form-item label="订单号:">
                  <el-input
                    style="width: 210px;"
                    size="small"
                    v-model="addInspectionform.number"
                    placeholder="请输入订单号"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="7">
                <el-form-item label="产品名称:">
                  <el-input
                    style="width: 210px;"
                    size="small"
                    v-model="addInspectionform.code"
                    placeholder="请输入产品编码"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="7">
                <el-form-item label="产品编码:">
                  <el-input
                    style="width: 210px;"
                    size="small"
                    disabled
                    v-model="addInspectionform.code"
                    placeholder="请输入产品编码"
                  />
                </el-form-item>
              </el-col>
            </el-row>
            <el-row :gutter="230">
              <el-col :span="7">
                <el-form-item label="规格型号:">
                  <el-input
                    style="width: 210px;"
                    size="small"
                    disabled
                    v-model="addInspectionform.number"
                    placeholder="请输入规格型号"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="7">
                <el-form-item label="工序名称:">
                  <el-select
                    v-model="value"
                    placeholder="请选择"
                    style="width: 210px;"
                    size="small"
                  >
                    <el-option
                      v-for="item in options"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="7">
                <el-form-item label="工艺名称:">
                  <el-select
                    v-model="value"
                    placeholder="请选择"
                    style="width: 210px;"
                    size="small"
                  >
                    <el-option
                      v-for="item in options"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row :gutter="230">
              <el-col :span="7">
                <el-form-item label="单位:">
                  <el-input
                    style="width: 210px;"
                    size="small"
                    disabled
                    v-model="addInspectionform.quantity"
                    placeholder="请输入单位"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="7">
                <el-form-item label="数量:">
                  <el-input
                    style="width: 210px;"
                    size="small"
                    v-model="addInspectionform.quantity"
                    placeholder="请输入数量"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="7">
                <el-button
                  type="primary"
                  style="float: right; font-size: 14px; !important"
                  >生成检验项目</el-button
                >
              </el-col>
            </el-row>
          </div>
        </el-form>
      </div>
      <div class="inspectionProject">
        <el-row>
          <el-col :span="12" class="inspectionProject_span">检验项目</el-col>
          <el-col :span="12" class="inspectionProject_span">
            <el-button size="mini" @click="clickDeleteInspectionColumn()"
              >删除检验值列</el-button
            >
            <el-button
              style="margin-right: 30px;"
              size="mini"
              @click="clickAddInspectionColumn()"
              >添加检验值列</el-button
            >
            <el-button
              size="mini"
              style="margin-right: 30px;"
              @click="clickAddLine()"
              >添加检验行</el-button
            >
          </el-col>
        </el-row>
        <el-table
          :data="inspectionItems"
          height="calc(100vh - 550px)"
          style="width: 100%"
        >
          <el-table-column
            type="index"
            label="序号"
            width="60"
          ></el-table-column>
          <el-table-column prop="material" label="项目"></el-table-column>
          <el-table-column prop="unit" label="单位"></el-table-column>
          <el-table-column prop="standardVal" label="标准值"></el-table-column>
          <el-table-column prop="controlVal" label="内测值"></el-table-column>
          <el-table-column
            prop="testValue"
            label="检测值"
            min-width="150"
            v-for="(item, index) in empiricalValueAdd"
            :key="index"
          >
            <template slot-scope="scope">
              <el-tooltip
                :disabled="scope.row.deviceId != null"
                class="item"
                effect="dark"
                content="请先选择设备!"
                placement="top-start"
              >
                <el-input
                  :disabled="scope.row.deviceId == null"
                  // v-model="scope.row.testValueList[index]"
                  @blur="changeState(scope.row, index)"
                  placeholder="请输入检测值"
                ></el-input>
              </el-tooltip>
            </template>
          </el-table-column>
          <el-table-column label="试验设备">
            <template slot-scope="scope">
              {{ scope.row.device }}
              <el-select
                v-model="scope.row.device"
                size="small"
                slot="append"
                style="width: 100px;"
              >
                <el-option value="选项1"></el-option>
                <el-option value="选项2"></el-option>
              </el-select>
            </template>
          </el-table-column>
          <el-table-column prop="conclusion" label="结论">
            <template slot-scope="scope">
              <span style="color: #34BD66;" v-if="scope.row.insState == 1"
                >合格</span
              >
              <span style="color: #E84738;" v-else-if="scope.row.insState == 0"
                >不合格</span
              >
            </template>
          </el-table-column>
          <el-table-column v-if="detailId == null" label="操作" width="100">
          <template slot-scope="scope">
            <el-button type="text" @click="clickDeleteline(scope)"
              >删除</el-button
            >
          </template>
        </el-table-column>
        </el-table>
      </div>
      <div class="inspectionResult">
        <span>检测结果</span>
        <el-table :data="inspectionResultForm">
          <el-table-column prop="id" label="物料编号"></el-table-column>
          <el-table-column prop="name" label="物料名称"></el-table-column>
          <el-table-column prop="inspecter" label="检验员"></el-table-column>
          <el-table-column prop="conclusion" label="检验结论"></el-table-column>
          <el-table-column prop="operation" label="上报"></el-table-column>
        </el-table>
      </div>
    </div>
  </div>
</template>
  <script>
  export default {
      data(){
          return {
              inspectionResult: '',
              inspectionDate: '',
              inspecter: '',
              inspectionTable:[{
                  number: '8540395029753',
                  username: 'jack',
                  projectname: '布隆迪',
                  tracenumber: '826403164021',
                  code: 'C-982164',
                  class: '成品',
                  specificationmodel: '8.8/15kV JLS-3.2',
                  unit: '吨',
                  quantity: '15',
                  machine: '拉闸机',
                  group: '1组',
                  worker: '黄小明',
                  date: '2023-08-01',
                  result: '合格',
                  operation: ''
              },{
                  number: '2497320327652',
                  username: 'rose',
                  projectname: '布隆迪',
                  tracenumber: '826403164021',
                  code: 'C-24114',
                  class: '成品',
                  specificationmodel: '8.6/15kV JAD-3.2',
                  unit: '吨',
                  quantity: '43',
                  machine: '拉闸机',
                  group: '1组',
                  worker: '黄小明',
                  date: '2023-08-01',
                  result: '合格',
                  operation: ''
              }],
              currentPage: 1, // å½“前页码
              pageSize: 100,
              showAddPage: false,
              addInspectionform: [{
                  number: '',
                  username: '',
                  projectname: '',
                  tracenumber: '',
                  code: '',
                  class: '',
                  specificationmodel: '',
                  unit: '',
                  quantity: '',
                  group: '',
                  worker: '',
                  machine: ''
              }],
              inspectionItems:[{
                  project:'布隆迪',
                  unit:'吨',
                  standardVal: '8219384314',
                  controlVal:'9823401',
                  detectionVal:'11111',
                  device:'',
                  conclusion:'合格'
              }],
              inspectionResultForm:[{
                  id:'274024',
                  name:'111',
                  inspecter:'111',
                  conclusion:'',
                  operation:''
              }]
          }
<script>
export default {
  data() {
    return {
      search: {
        countSize: 10,
        pageSize: 1,
        result: "", // æ£€æµ‹çŠ¶æ€
        name: "", // äº§å“åç§°
        techfather: "" // å·¥åº
      },
      methods:{
          // æ¯é¡µæ¡æ•°æ”¹å˜æ—¶è§¦å‘ é€‰æ‹©ä¸€é¡µæ˜¾ç¤ºå¤šå°‘行
          handleSizeChange(val) {
          console.log(`每页 ${val} æ¡`)
          this.currentPage = 1
          this.pageSize = val
          },
          // å½“前页改变时触发 è·³è½¬å…¶ä»–页
          handleCurrentChange(val) {
          console.log(`当前页: ${val}`)
          this.currentPage = val
          },
          handleAddNew(){
              this.showAddPage=true
          }
      inspectionTable: [],
      inspectionTableTotal: "",
      // æ·»åŠ åˆ—
      empiricalValueAdd: 1,
      // ç¼–辑时存储最长的列数字,做删除判断
      empiricalValueAddMaxNumber: 0,
      showAddPage: false,
      addInspectionform: [
        {
          number: "",
          username: "",
          projectname: "",
          tracenumber: "",
          code: "",
          class: "",
          specificationmodel: "",
          unit: "",
          quantity: "",
          group: "",
          worker: "",
          machine: ""
        }
      ],
      inspectionItems: [], // æ–°å¢žæ£€éªŒé¡¹ç›®è¡¨æ ¼
      inspectionResultForm: [
        {
          id: "274024",
          name: "111",
          inspecter: "111",
          conclusion: "",
          operation: ""
        }
      ],
      options: [
        {
          value: "选项1",
          label: "黄金糕"
        },
        {
          value: "选项2",
          label: "双皮奶"
        },
        {
          value: "选项3",
          label: "蚵仔煎"
        },
        {
          value: "选项4",
          label: "龙须面"
        },
        {
          value: "选项5",
          label: "北京烤鸭"
        }
      ],
      value: ""
    };
  },
  methods: {
    // æ¯é¡µæ¡æ•°æ”¹å˜æ—¶è§¦å‘ é€‰æ‹©ä¸€é¡µæ˜¾ç¤ºå¤šå°‘行
    handleSizeChange(val) {
      this.search.countSize = val;
      this.defaultInitializationTable();
    },
    // å½“前页改变时触发 è·³è½¬å…¶ä»–页
    handleCurrentChange(val) {
      this.search.pageSize = val;
      this.defaultInitializationTable();
    },
    // æ˜¾ç¤ºæ–°å¢žé¡µé¢
    handleAddNew() {
      this.showAddPage = true;
    },
    // è¡¨æ ¼åˆå§‹åŒ–接口
    defaultInitializationTable() {
      this.$axios
        .post(this.$api.url.selectProcessInspectsList, this.search)
        .then(res => {
          this.inspectionTableTotal = res.data.total;
          this.inspectionTable = res.data.row;
        });
    },
    // æ·»åŠ è¡Œ
    clickAddLine() {
      let obj = {
        material: "",
        materialCode: "",
        orderNumber: "",
        quantity: 0,
        specificationsModel: "",
        techfather: "",
        techname: "",
        technologyId: 0,
        unit: ""
      };
      this.inspectionItems.push(obj);
    },
    // åˆ é™¤è¡Œ
    clickDeleteline(scope) {
      this.inspectionItems.splice(scope.$index, 1);
    },
    // åˆ é™¤æ£€éªŒå€¼åˆ—
    clickDeleteInspectionColumn() {
      if (this.empiricalValueAdd - 1 === 0) {
      } else {
        if (this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1) {
          this.empiricalValueAdd = this.empiricalValueAdd - 1;
          this.inspectionItems.forEach(i => {
            i.testValueList.splice(this.empiricalValueAdd, 1);
          });
        }
      }
    },
    // æ·»åŠ æ£€éªŒå€¼åˆ—
    clickAddInspectionColumn() {
      this.empiricalValueAdd = this.empiricalValueAdd + 1;
    }
  },
  created() {
    this.defaultInitializationTable(); // åˆå§‹åŒ–表格数据
  }
};
</script>
  }
  </script>
  <style>
  .title{
      padding: 12px;
  }
  .nav{
      display: flex;
      padding: 20px 20px;
      align-items: center;
      background-color: #fff;
  }
  .nav *{
      font-size: 14px;
  }
  .content-body .rawPage{
      background-color: #fff;
      overflow: hidden;
  }
  .inspectionTable{
      padding: 20px 20px;
  }
  .pagination{
      float: right;
      margin-right: 20px;
  }
  .newPage{
      overflow: hidden;
  }
  .header{
      padding: 12px;
  }
  .addInspectionform{
      background-color: #fff;
  }
  .addInspectionform .formwrapper{
      padding: 20px 0px;
      margin-left: 100px;
  }
  .inspectionProject span{
      display: block;
      padding: 5px 0px;
  }
  .inspectionProject .el-table{
      background-color: #fff;
      padding: 10px 12px;
  }
  .inspectionResult span{
      display: block;
      padding: 5px 0px;
  }
  .inspectionResult .el-table{
      background-color: #fff;
      padding: 10px 12px;
  }
  </style>
<style>
.nav {
  display: flex;
  padding: 20px 20px;
  align-items: center;
  background-color: #fff;
}
.table_header {
  height: calc(100vh - 550px);
}
.nav * {
  font-size: 14px;
}
.content-body .rawPage {
  background-color: #fff;
  overflow: hidden;
}
.inspectionTable {
  padding: 20px 20px;
}
.pagination {
  float: right;
  margin-right: 20px;
}
.newPage {
  overflow: hidden;
}
.header {
  padding: 12px;
}
.addInspectionform {
  background-color: #fff;
}
.addInspectionform .formwrapper {
  padding: 20px 0px;
  margin-left: 100px;
}
.inspectionProject .el-table {
  background-color: #fff;
  padding: 10px 12px;
}
.inspectionResult span {
  display: block;
  padding: 5px 0px;
}
.inspectionResult .el-table {
  background-color: #fff;
  padding: 10px 12px;
}
.inspectionProject_span {
  line-height: 32px;
  padding: 10px 20px;
}
.inspectionProject_span .el-button {
  float: right;
  font-size: 13px !important;
}
</style>
src/components/view/raw-ins.vue
@@ -106,8 +106,8 @@
      <span>原材料编码:</span>
      <el-input
        v-model="search.code"
        size="small"
        placeholder="请输入"
        size="small"
        style="width: 224px;margin-right: 30px;"
        clearable
      ></el-input>
src/components/view/rawInsDetail.vue
@@ -118,7 +118,7 @@
          <el-col :span="7">
            <el-form-item label="供应商名称:">
              <el-input
                :placeholder="detailId !== null ? '' : '请输入检验数量'"
                :placeholder="detailId !== null ? '' : '请输入供应商名称'"
                :disabled="detailId !== null"
                v-model="detailInfo.supplier"
              ></el-input>
@@ -274,7 +274,7 @@
      <el-table :data="conclusionTable" style="100%">
        <el-table-column prop="code" label="物料编号"> </el-table-column>
        <el-table-column prop="name" label="物料名称"> </el-table-column>
        <el-table-column prop="uName" label="检验员">
        <el-table-column v-if="detailId != null" prop="uName" label="检验员">
          <template slot-scope="scope">
            <span
              v-for="item in scope.row.uName"
@@ -439,7 +439,11 @@
          this.projectTable = res.data.children;
          this.projectTable.forEach(i => {
            // è§£å†³é‡æ–°èµ‹å€¼æ— æ³•编辑操作
            this.$set(i, "testValueList", i.testValue.split(","));
            if (i.testValue == null) {
              this.$set(i, "testValueList", []);
            } else {
              this.$set(i, "testValueList", i.testValue.split(","));
            }
            // å–最长的列表数
            if (i.testValueList.length > this.empiricalValueAdd) {
              this.empiricalValueAdd = i.testValueList.length;
src/components/view/rawUnqualified/raw.vue
@@ -86,7 +86,7 @@
          >
          </el-table-column>
          <el-table-column prop="code" label="材料编码"> </el-table-column>
          <el-table-column prop="id" label="材料名称"> </el-table-column>
          <el-table-column prop="name" label="材料名称"> </el-table-column>
          <el-table-column prop="specifications" label="规格型号">
          </el-table-column>
          <el-table-column prop="unit" label="单位"> </el-table-column>
@@ -108,25 +108,61 @@
          </el-table-column>
          <el-table-column prop="deal_reasult" label="处理结果" width="100">
            <template slot-scope="scope">
              <span style="color:#34BD66;" v-if="scope.row.deal_reasult == 1"
              <span style="color:#E84738;" v-if="scope.row.deal_reasult == 0"
                >不通过</span
              >
              <span
                style="color:#E84738;"
                v-else-if="scope.row.deal_reasult == 0"
                style="color:#34BD66;"
                v-else-if="scope.row.deal_reasult == 1"
                >通过</span
              >
            </template>
          </el-table-column>
          <el-table-column label="操作" width="100">
            <template>
            <template slot-scope="scope">
              <div style="display: flex;">
                <el-button type="text" siae="small" size="mini">评审</el-button>
                <el-popover
                  placement="left"
                  width="160"
                  :ref="`popover-${scope.$index}`"
                >
                  <div style="padding: 6px">评审是否通过?</div>
                  <div style="text-align: right; margin: 6px;">
                    <el-button
                      size="mini"
                      type="text"
                      style="color: #E84738;"
                      @click="
                        scope._self.$refs[`popover-${scope.$index}`].doClose();
                        rawEvaluate(scope.row, 0);
                      "
                      >不通过</el-button
                    >
                    <el-button
                      type="text"
                      style="color: #34bd66;"
                      size="mini"
                      @click="
                        scope._self.$refs[`popover-${scope.$index}`].doClose();
                        rawEvaluate(scope.row, 1);
                      "
                      >通过</el-button
                    >
                  </div>
                  <el-button
                    slot="reference"
                    type="text"
                    siae="small"
                    size="mini"
                    >评审</el-button
                  >
                </el-popover>
                <el-button
                  type="text"
                  siae="small"
                  size="mini"
                  style=" color:87, 138, 193 ;"
                  style=" color:87, 138, 193 ; margin-left: 10px;"
                  >查看</el-button
                >
              </div>
@@ -165,7 +201,8 @@
        supplier: "" // ä¾›åº”商
      },
      unqualifiedTable: [], // é¡µé¢è¡¨æ ¼æ•°æ®
      total: 0
      total: 0,
      visible: false
    };
  },
  mounted() {
@@ -200,6 +237,17 @@
        supplier: "" // ä¾›åº”商
      };
      this.getDetailInfo();
    },
    rawEvaluate(row, passOrNo) {
      this.$axios
        .post(this.$api.url.evaluatePassOrNo, {
          rawId: row.id,
          passOrNo: passOrNo
        })
        .then(res => {
          this.unqualifiedTable = [];
          this.getDetailInfo();
        });
    }
  }
};
src/components/view/standard-box/bomClickAdd.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
<template>
    <div>
        1
    </div>
</template>
<script>
export default {
}
</script>
<style>
</style>
src/components/view/standard-table/material.vue
@@ -1,38 +1,39 @@
<template>
    <div class="standard">
      <div>
            <el-table :data="tableData" style="width: 100%;margin-bottom: 20px;" row-key="name" border
              @selection-change="handleSelectionChange" default-expand-all
            <el-table :data="tableData" max-height="675" row-key="rowId" border
            @select-all="selectAll" @select="selectTr" ref="multipleTable"
            @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" label="序号">
              <el-table-column type="index" width="60" label="序号">
              </el-table-column>
              <el-table-column prop="father" label="工序" sortable width="200px">
                <template slot-scope="scope">
                      <el-tag v-if="scope.row.children" :type="scope.row.children ? 'primary' : 'success'">
                        <div class="firstDiv" :style="{ color: scope.row.children ? '#16a7ff' : '#58c173' }">
                          01
                        </div>
                      </el-tag>
                      <span style="color: black">
                        {{ scope.row.father }}
                      </span>
                  <el-tag v-if="scope.row.father != null" type="primary">01</el-tag>
                  <span style="color: #000000">
                    {{ scope.row.father }}
                  </span>
              </template>
              </el-table-column>
              <el-table-column prop="tanme" sortable label="工艺名称">
                <!-- <template slot-scope="scope">
                          <el-tag v-if="!scope.row.children">
                              <div class="firstDiv" :style="`color: ${scope.row.children? '#16a7ff' : '#58c173'}`">
                                02
                              </div>
                          </el-tag>
                          <span style="color: black">
                            {{ scope.row.tname  }}
                          </span>
                          </template> -->
              <el-table-column prop="tname" sortable label="工艺名称">
                <template slot-scope="scope">
                  <el-tag type="success" v-if="scope.row.tname != null">02</el-tag>
                  <span style="color: #000000">
                    {{ scope.row.tname  }}
                  </span>
                  </template>
              </el-table-column>
              <el-table-column prop="mname" label="材料名称">
                <template slot-scope="scope">
                  <el-tag type="info" color="#faf2ff" v-if="scope.row.mname != null">
                    <span style="color: #e1affb">03</span>
                  </el-tag>
                  <span>
                    {{scope.row.mname}}
                  </span>
                </template>
              </el-table-column>
              <el-table-column prop="specifications" label="规格">
              </el-table-column>
@@ -49,20 +50,59 @@
    export default {
      data() {
        return {
          hasChildren:true,
          selects: []
        }
      },
      props:['tableData','tableType'],
      created() {
        console.log(this.tableData,this.tableType)
      },
      mounted() {
      },
      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);
          this.$nextTick(() => {
            this.isAllSelect = row.isChecked;
            this.toggleSelect(row, row.isChecked, "tr");
          });
        },
        //递归子级
        toggleSelect(data, flag, type) {
          if (type === "all") {
            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);
              });
            }
          }
        },
        handleSelectionChange(val) {
          this.selects = val;
        }
          this.deleteList = [];
          val.forEach((v) => {
            if (v.id !== undefined) {
              this.deleteList.push(v.id);
            }
          });
        },
        // è¡¨æ ¼æ ‘全部选中配置  ç»“束
      }
    }
  </script>
src/components/view/standard-table/product.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,130 @@
<style scoped>
    .standard {
      width: 100%;
      height: 100%;
    }
    .standard * {
      font-size: 14px;
    }
    .standard .has-gutter .el-table__cell {
      background-color: #F0F1F5 !important;
      color: #333;
    }
    .standard .has-gutter .el-table__cell .cell {
      font-size: 16px;
      font-weight: 500;
    }
    .standard .cell {
      color: #333;
      padding-left: 17px !important;
    }
    .standard {
      width: 100%;
      height: 100%;
      overflow: auto;
    }
    /* .standard .el-table__body-wrapper {
      height: 100%;
    } */
    /* .standard .el-table__body {
      height: 100%;
    } */
    .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">
        <el-table ref="multipleTable" :data="tableData" row-key="rowId" border max-height="675"
        @select-all="selectAll" @select="selectTr"
        @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="60" label="序号"></el-table-column>
        <el-table-column prop="father" label="工序">
            <template slot-scope="scope">
                <el-tag type="primary" v-if="scope.row.father != null">01</el-tag>
                <span>{{scope.row.father}}</span>
            </template>
        </el-table-column>
        <el-table-column prop="name" label="工艺名称">
            <template slot-scope="scope">
                <el-tag type="success" v-if="scope.row.name != null">02</el-tag>
                <span>{{scope.row.name}}</span>
            </template>
        </el-table-column>
        <el-table-column prop="device" label="设备名称">
            <template slot-scope="scope">
                <el-tag type="info" color="#faf2ff" v-if="scope.row.device != null">
                    <span style="color: #e1affb">03</span>
                </el-tag>
                <span>{{scope.row.device}}</span>
            </template>
        </el-table-column>
        <el-table-column prop="productFather" label="项目"></el-table-column>
        <el-table-column prop="unit" label="单位"></el-table-column>
        <el-table-column prop="product" label="指标"></el-table-column>
        </el-table>
    </div>
</template>
<script>
export default ({
    data() {
    },
    props:['tableData','tableType'],
    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);
        this.$nextTick(() => {
          this.isAllSelect = row.isChecked;
          this.toggleSelect(row, row.isChecked, "tr");
        });
      },
      //递归子级
      toggleSelect(data, flag, type) {
        if (type === "all") {
          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);
            });
          }
        }
      },
      handleSelectionChange(val) {
        this.deleteList = [];
        val.forEach((v) => {
          if (v.id !== undefined) {
            this.deleteList.push(v.id);
          }
        });
      },
      // è¡¨æ ¼æ ‘全部选中配置  ç»“束
    }
})
</script>
src/components/view/standard-table/target.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,171 @@
<template>
    <div class="standard">
      <div>
        <el-table ref="multipleTable" :data="tableData" row-key="rowId" border max-height="675"
        @select-all="selectAll" @select="selectTr"
        @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="60" label="序号"></el-table-column>
        <el-table-column prop="tfather" label="工序">
            <template slot-scope="scope">
                <el-tag type="primary" v-if="scope.row.tfather != null">01</el-tag>
                <span>{{scope.row.tfather}}</span>
            </template>
        </el-table-column>
        <el-table-column prop="tname" label="工艺名称">
            <template slot-scope="scope">
                <el-tag type="success" v-if="scope.row.tname != null">02</el-tag>
                <span>{{scope.row.tname}}</span>
            </template>
        </el-table-column>
        <el-table-column prop="pname" label="指标名称">
            <template slot-scope="scope">
                <el-tag type="info" color="#faf2ff" v-if="scope.row.pname != null">
                    <span style="color: #e1affb">03</span>
                </el-tag>
                <span>{{scope.row.pname}}</span>
            </template>
        </el-table-column>
        <el-table-column prop="unit" label="单位"></el-table-column>
        <el-table-column prop="internal" label="内控值">
          <template slot-scope="scope">
            <el-input v-model="scope.row.internal"
            v-if="scope.row.internal != null"
            @blur="updateVal(scope.row)"></el-input>
          </template>
        </el-table-column>
        <el-table-column prop="required" label="标准值">
          <template slot-scope="scope">
            <el-input v-model="scope.row.required"
            v-if="scope.row.required != null"
            @blur="updateVal(scope.row)"></el-input>
          </template>
        </el-table-column>
        </el-table>
      </div>
    </div>
  </template>
  <script>
    export default {
      data() {
        return {
          selects: [],
        }
      },
      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);
        this.$nextTick(() => {
          this.isAllSelect = row.isChecked;
          this.toggleSelect(row, row.isChecked, "tr");
        });
      },
      //递归子级
      toggleSelect(data, flag, type) {
        if (type === "all") {
          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);
            });
          }
        }
      },
      handleSelectionChange(val) {
        this.deleteList = [];
        val.forEach((v) => {
          if (v.id !== undefined) {
            this.deleteList.push(v.id);
          }
        });
      },
      // è¡¨æ ¼æ ‘全部选中配置  ç»“束
        updateVal(row){
          this.$axios.post(this.$api.url.productWrite,{
            id : row.pid,
            internal : row.internal,
            required : row.required
          }).then(res=>{
            this.$message.success(res.message);
          }).catch(error=>{
            this.$message.error(error.message);
          })
        },
        handleSelectionChange(val) {
          this.selects = val;
        },
      }
    }
  </script>
  <style scoped>
  .expand-button {
      cursor: pointer;
      color: #1890ff;
    }
    .standard {
      width: 100%;
      height: 100%;
    }
  </style>
  <style>
    .standard * {
      font-size: 14px;
    }
    .standard .has-gutter .el-table__cell {
      background-color: #F0F1F5 !important;
      color: #333;
    }
    .standard .has-gutter .el-table__cell .cell {
      font-size: 16px;
      font-weight: 500;
    }
    .standard .cell {
      color: #333;
      padding-left: 17px !important;
    }
    .standard {
      width: 100%;
      height: 100%;
      overflow: auto;
    }
    /* .standard .el-table__body-wrapper {
      height: 100%;
    } */
    /* .standard .el-table__body {
      height: 100%;
    } */
    .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
@@ -1,46 +1,57 @@
<template>
  <div class="standard">
    <div>
          <el-table :data="tableData" style="width: 100%;margin-bottom: 20px;" row-key="name" border
          <el-table :data="tableData" max-height="675" row-key="rowId" border
          @select-all="selectAll" @select="selectTr" ref="multipleTable"
          :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'left'}"
            @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" label="序号">
            <el-table-column type="index" width="60" label="序号">
            </el-table-column>
            <el-table-column prop="father" label="工序" sortable width="200px">
              <template slot-scope="scope">
                    <el-tag v-if="scope.row.children" :type="scope.row.children ? 'primary' : 'success'">
                      <div class="firstDiv" :style="{ color: scope.row.children ? '#16a7ff' : '#58c173' }">
                        01
                      </div>
                    </el-tag>
                    <el-tag v-if="scope.row.children" type="primary">01</el-tag>
                    <span style="color: black">
                      {{ scope.row.father }}
                    </span>
            </template>
            </el-table-column>
            <el-table-column prop="name" sortable label="工艺名称">
            <el-table-column sortable label="工艺名称">
              <template slot-scope="scope">
                        <el-tag v-if="!scope.row.children">
                            <div class="firstDiv" :style="`color: ${scope.row.children? '#16a7ff' : '#58c173'}`">
                              02
                            </div>
                        </el-tag>
                        <span style="color: black">
                          {{ scope.row.name  }}
                        </span>
                        </template>
                <el-tag type="success" v-if="!scope.row.children">02</el-tag>
                <span style="color: black">{{ scope.row.name  }}</span>
              </template>
            </el-table-column>
            <el-table-column prop="dg" label="设备组">
              <template slot-scope="scope">
                <div class="showDiv">
                  <span>{{scope.row.dg}}</span>
                  <div @click="showDialog">选择</div>
                </div>
              </template>
            </el-table-column>
            <el-table-column prop="pq" label="生产定额">
            </el-table-column>
            <el-table-column prop="" label="操作">
              <el-butten style="color: rgb(137, 137, 229);">编辑</el-butten>
            <el-table-column prop="pq" label="生产定额(个/天)">
              <template slot-scope="scope">
                  <el-input v-model="scope.row.pq"
                  v-if="scope.row.pq != null"
                  @blur="updatePq(scope.row)"
                  ></el-input>
              </template>
            </el-table-column>
          </el-table>
        </div>
        <el-dialog
          title="选择设备组"
          :visible.sync="deviceGroupDialog"
          width="30%">
          <span>这是一段信息</span>
          <span slot="footer" class="dialog-footer">
            <el-button type="primary" @click="deviceGroupDialog = false">ç¡® å®š</el-button>
            <el-button @click="deviceGroupDialog = false">取 æ¶ˆ</el-button>
          </span>
        </el-dialog>
  </div>
</template>
@@ -48,20 +59,77 @@
  export default {
    data() {
      return {
        selects: []
        deviceGroupDialog:false,
        selects: [],
        isAllSelect:false,
      }
    },
    props:['tableData','tableType'],
    created() {
      console.log(this.tableData,this.tableType)
      console.log(this.tableData)
    },
    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);
        this.$nextTick(() => {
          this.isAllSelect = row.isChecked;
          this.toggleSelect(row, row.isChecked, "tr");
        });
      },
      //递归子级
      toggleSelect(data, flag, type) {
        if (type === "all") {
          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);
            });
          }
        }
      },
      handleSelectionChange(val) {
        this.selects = val;
      }
        this.deleteList = [];
        val.forEach((v) => {
          if (v.id !== undefined) {
            this.deleteList.push(v.id);
          }
        });
      },
      // è¡¨æ ¼æ ‘全部选中配置  ç»“束
      showDialog(){
          this.deviceGroupDialog = true
      },
      updatePq(row){
        this.$axios.post(this.$api.url.technologyWrite,{
            id : row.id,
            productionQuota : row.pq
        }).then(res=>{
          this.$message.success(res.message);
        }).catch(error=>{
          this.$message.error(error.message);
        })
      },
    }
  }
</script>
@@ -70,6 +138,24 @@
  .standard {
    width: 100%;
    height: 100%;
  }
  .standard .showDiv{
    cursor: pointer;
  }
  .standard .showDiv div{
    color:#407ab9;
    display: none;
  }
  .showDiv span{
    cursor: pointer;
    display: block;
    width: 100%;
  }
  .showDiv:hover span{
    display: none;
  }
  .showDiv:hover div{
    display: block;
  }
</style>
<style>
@@ -98,13 +184,13 @@
    overflow: auto;
  }
  .standard .el-table__body-wrapper {
  /* .standard .el-table__body-wrapper {
    height: 100%;
  }
  } */
  .standard .el-table__body {
  /* .standard .el-table__body {
    height: 100%;
  }
  } */
  .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){
    padding-left: 23px !important;
   }
src/components/view/standard.vue
@@ -5,22 +5,28 @@
        <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>
            @click="showBomAddModel">新增</el-button>
          <el-button icon="el-icon-plus">新增版本</el-button>
          <el-button icon="el-icon-edit-outline">修改</el-button>
          <el-button icon="el-icon-delete">删除</el-button>
          <el-button @click="bomRightUp=true" icon="el-icon-edit-outline">修改</el-button>
          <el-button @click="bomRightDl=true" icon="el-icon-delete">删除</el-button>
        </el-col>
      </el-row>
    </div>
    <div class="thing">
      <div class="left">
        <el-input v-model="search" suffix-icon="el-icon-search" placeholder="请输入搜索内容" size="small" clearable></el-input>
        <el-tree :data="list" ref="tree" default-expand-all :props="{ children: 'children', label: 'name' }"
        <el-row>
          <el-col :span="21">
            <el-input v-model="search" suffix-icon="el-icon-search" placeholder="请输入搜索内容" size="small" clearable></el-input>
          </el-col>
          <el-col :span="2">
            <el-button  size="mini" icon="el-icon-plus" @click="bomLeftAdd=true"></el-button>
          </el-col>
        </el-row>
        <el-tree style="width: ;" :data="list" ref="tree" default-expand-all :props="{ children: 'children', label: 'name' }"
          node-key="id" :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current>
          <div class="custom-tree-node" slot-scope="{ node, data }">
            <span><i :class="`node_i ${data.code != '[5]' ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i>
              {{ data.name }}</span>
              {{ data.code }}{{ data.name }}</span>
            <el-button type="text" size="mini" @click.stop="remove(node, data)">
              <i class="el-icon-delete"></i>
            </el-button>
@@ -43,11 +49,11 @@
          <el-input v-model="searchName" size="small" placeholder="请输入" style="width: 224px;margin-right: 24px;"
            clearable></el-input>
          <span>{{ tableType == 1 ? '版本:' : '版本:' }}</span>
          <el-select v-model="VER" @change="verevent" style="width: 280px;" placeholder="请选择">
          <el-select size="small" v-model="VER" @change="verevent" style="width: 280px;" placeholder="请选择">
            <el-option v-for="item in version" :key="item" :label="item" :value="item">
            </el-option>
          </el-select>
          <el-button size="mini" @click="() => { searchName = ''; selectProductTableData() }"><span>重 ç½®</span></el-button>
          <el-button style="margin-left:10px;" size="mini" @click="() => { searchName = ''; selectProductTableData() }"><span>重 ç½®</span></el-button>
          <el-button size="mini" type="primary" style="background: #004EA2;" @click="selectProductTableData"><span>查
              è¯¢</span></el-button>
        </div>
@@ -56,32 +62,207 @@
          <technology  :tableType="tableType" :tableData="tableData"></technology>
        </div>
        <div v-if="this.typeselect == 1">
          æŠ€æœ¯æŒ‡æ ‡
          <target :tableType="tableType" :tableData="tableData"></target>
        </div>
        <div v-if="this.typeselect == 2">
          <material  :tableType="tableType" :tableData="tableData"></material>
          <material :tableType="tableType" :tableData="tableData"></material>
        </div>
        <div v-if="this.typeselect == 3">
          ç”Ÿäº§å·¥è‰º
          <product :tableType="tableType" :tableData="tableData"></product>
        </div>
        <!-- <div class="table">
          <technology v-if="tableData.length !== 0" :tableType="tableType" :tableData="tableData"></technology>
        </div> -->
        <!-- <div class="table">
          <technology v-if="tableData.length !== 0" :tableType="tableType" :tableData="tableData"></technology>
        </div> -->
      </div>
    </div>
    <div class="bom-add-model">
      <el-dialog title="BOM新增" :visible.sync="bomAddModelVisible" width="30%">
        <el-form>
        </el-form>
      <el-dialog title="BOM新增" :visible.sync="bomAddModelVisible" width="35%">
        <!-- å·¥è‰ºè·¯çº¿ -->
        <div v-if="typeselect == 0">、
          <el-form :model="technologyForm" :inline="true" class="demo-form-inline" label-position="right"
          :rules="boomRules" ref="boomForm" label-width="90px">
            <el-form-item label="工序:" prop="father" width="250">
              <el-select v-model="technologyForm.father"
              style="width:200px;" placeholder="请输入或选择工序">
                <el-option :value="item.father" :label="item.father" v-for="(item,index) in fatherList" :key="index"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="工艺名称:" prop="name" width="250">
              <el-input placeholder="请输入工艺名称" style="width:200px;"
              v-model="technologyForm.name"></el-input>
            </el-form-item>
            <el-form-item label="设备组:" prop="deviceGroup" width="250">
              <el-select placeholder="请选择设备组"
              style="width:200px;"
              v-model="technologyForm.deviceGroup">
              <el-option :value="item.father"
              v-for="(item,index) in deviceList" :key="index" :label="item.father"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="生产定额:" prop="productionQuota" width="250">
              <el-input style="width:200px;" v-model.number="technologyForm.productionQuota" placeholder="请输入生产定额" />
            </el-form-item>
          </el-form>
        </div>
        <!-- æŠ€æœ¯æŒ‡æ ‡ -->
        <div v-if="typeselect == 1">
          <el-form :model="targetForm" :inline="true" class="demo-form-inline" label-position="right"
          label-width="80px">
            <el-form-item label="指标名称:" prop="father" width="250">
              <el-input style="width:200px;" v-model="targetForm.pname" placeholder="请输入单位"/>
            </el-form-item>
            <el-form-item label="单位:" prop="name" width="250">
              <el-input style="width:200px;" v-model="targetForm.unit" placeholder="请输入单位"/>
            </el-form-item>
            <el-form-item label="内控值:" prop="dg" width="250">
              <el-input style="width:200px;" v-model="targetForm.internal" placeholder="请输入单位"/>
            </el-form-item>
            <el-form-item label="标准值:" prop="unit" width="250">
              <el-input style="width:200px;" v-model="targetForm.required" placeholder="请输入单位"/>
            </el-form-item>
          </el-form>
        </div>
        <!-- ç‰©æ–™æ¸…单 -->
        <div v-if="typeselect == 2">
          <el-form :model="materialForm" class="demo-form-inline" label-position="right"
          label-width="80px">
          <el-row>
            <el-col :span="12">
              <el-form-item label="规格型号:" prop="father" width="250">
                <el-input style="width:200px;" v-model="materialForm.pname" placeholder="请输入单位"/>
              </el-form-item>
              </el-col>
              <el-col :span="12" style="text-align: right;">
              <el-form-item label="产品大类:" prop="name" width="250">
                <el-select placeholder="请选择产品大类"
                style="width:240px;" v-model="materialForm.dg">
                <el-option value="1">1</el-option>
                  <el-option value="2">2</el-option>
                  <el-option value="3">3</el-option>
                  <el-option value="4">4</el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="材料信息"></el-form-item>
            </el-col>
            <el-col :span="12" style="text-align: right;">
              <el-button size="mini" style="text-align: right;">添加行</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>
            </el-col>
          </el-row>
          </el-form>
        </div>
        <!-- ç”Ÿäº§å·¥è‰º -->
        <div v-if="typeselect == 3">
          <el-form :model="technologyForm" :inline="true" class="demo-form-inline" label-position="right"
          label-width="80px">
            <el-form-item label="工序:" prop="father" width="250">
              <el-select v-model="technologyForm.father"
              style="width:200px;"
              placeholder="请输入或选择生产定额">
                <el-option value="1">1</el-option>
                <el-option value="2">2</el-option>
                <el-option value="3">3</el-option>
                <el-option value="4">4</el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="工艺名称:" prop="name" width="250">
              <el-select placeholder="请输入或选择工艺名称"
              style="width:200px;"
              v-model="technologyForm.name">
              <el-option value="1">1</el-option>
                <el-option value="2">2</el-option>
                <el-option value="3">3</el-option>
                <el-option value="4">4</el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="设备:" prop="dg" width="250">
              <el-select placeholder="请选择设备"
              style="width:200px;"
              v-model="technologyForm.dg">
              <el-option value="1">1</el-option>
                <el-option value="2">2</el-option>
                <el-option value="3">3</el-option>
                <el-option value="4">4</el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="项目:" prop="dg" width="250">
              <el-select placeholder="请选择项目"
              style="width:200px;"
              v-model="technologyForm.dg">
              <el-option value="1">1</el-option>
                <el-option value="2">2</el-option>
                <el-option value="3">3</el-option>
                <el-option value="4">4</el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="单位:" prop="unit" width="250">
              <el-input style="width:200px;" v-model="technologyForm.unit" placeholder="请输入单位"/>
            </el-form-item>
            <el-form-item label="指标:" prop="pq" width="250">
              <el-input style="width:200px;" v-model="technologyForm.pq" placeholder="请输入指标" />
            </el-form-item>
          </el-form>
        </div>
        <span slot="footer" class="dialog-footer">
          <el-button @click="bomAddModelVisible = false">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="bomAddModelVisible = false">ç¡® å®š</el-button>
          <el-button type="primary" @click="confirmAdd('boomForm')">ç¡® å®š</el-button>
        </span>
      </el-dialog>
      <!-- å·¦ä¾§ç‚¹å‡»+按钮 -->
      <el-dialog title="BOM新增" :visible.sync="bomLeftAdd" width="29%">
        <el-form ref="leftAdd" :model="leftAdd">
            <el-form-item :rules="[{ required: true, message: '请选择产品类型', trigger: 'blur' }]" label="产品类型" prop="type">
              <el-cascader @change="changeLeftAdd" v-model="leftAdd.type"  style="width: 86%;" :options="formTypeOptions" :props="{ checkStrictly: true }" clearable></el-cascader>
            </el-form-item>
            <el-form-item v-if="leftAdd.type.length<2" label="产品大类" prop="father">
              <el-autocomplete  class="inline-input" style="width: 88%;" v-model="leftAdd.father" :fetch-suggestions="querySearch" placeholder="请选择产品大类" @select="handleSelect"></el-autocomplete>
            </el-form-item>
            <el-form-item v-if="leftAdd.type.length<3"  label="产品名称" prop="name">
              <el-autocomplete class="inline-input" style="width: 88%;" v-model="leftAdd.name" :fetch-suggestions="querySearchName" placeholder="请选择产品名称" @select="handleSelect"></el-autocomplete>
            </el-form-item>
            <el-form-item v-if="leftAdd.type.length<4"  label="产品标准" prop="standard">
              <el-autocomplete class="inline-input" style="width: 88%;" v-model="leftAdd.standard" :fetch-suggestions="querySearchStandar" placeholder="请选择产品标准" @select="handleSelect"></el-autocomplete>
            </el-form-item>
            <el-form-item  label="产品型号" prop="specifications">
              <el-input v-model="leftAdd.specifications" style="width: 88%;" placeholder="请输入产品型号"></el-input>
            </el-form-item>
        </el-form>
        <span slot="footer" class="dialog-footer">
          <el-button @click="resetForm('leftAdd')">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="submitForm('leftAdd')">ç¡® å®š</el-button>
        </span>
      </el-dialog>
            <!-- å³ä¸Šä¾§ç‚¹å‡»ä¿®æ”¹æŒ‰é’® -->
      <el-dialog title="BOM修改" :visible.sync="bomRightUp" width="30%">
        <el-form>
            ä¿®æ”¹
        </el-form>
        <span slot="footer" class="dialog-footer">
          <el-button @click="bomRightUp = false">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="bomRightUp = false">ç¡® å®š</el-button>
        </span>
      </el-dialog>
        <!-- å³ä¸Šä¾§ç‚¹å‡»åˆ é™¤æŒ‰é’® -->
      <el-dialog title="BOM删除" :visible.sync="bomRightDl" width="30%">
        <el-form>
            åˆ é™¤
        </el-form>
        <span slot="footer" class="dialog-footer">
          <el-button @click="bomRightDl=false">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="bomRightDl = false">ç¡® å®š</el-button>
        </span>
      </el-dialog>
    </div>
@@ -91,11 +272,40 @@
<script>
import technology from "./standard-table/technology.vue"
import material from "./standard-table/material.vue"
import target from "./standard-table/target.vue"
import product from "./standard-table/product.vue"
import bomClickAdd from '@/components/view/standard-box/bomClickAdd'
export default {
  components: { technology,material },
  components: { technology,material,target,product,bomClickAdd },
  data() {
    return {
      //工序列表
      fatherList:[],
      //设备组列表
      deviceList:[],
      technologyForm:{
        father:'',
        name:'',
        deviceGroup:'',
        productionQuota:''
      },
      targetForm:{
        pname:'',
        unit:'',
        internal:'',
        required: ''
      },
      formTypeOptions:[],
      materialForm:{},
      boomRules:{
        father:{required:true,message:'工序不能为空',trigger:'change'},
        name:{required:true,message:'工艺名称不能为空',trigger:'blur'},
        deviceGroup:{required:true,message:'设备组不能为空',trigger:'change'},
        productionQuota:[
          {required:true,message:'生产定额不能为空',trigger:'blur'},
          {type:'number',required:true,message:'数据类型必须是纯数字',trigger:'blur'}
        ]
      },
      // BOM树数据结构
      list: [],
      search: null,
@@ -104,15 +314,29 @@
      checkTreeNode: {},// ç‚¹å‡»é€‰ä¸­æ ‘节点
      tableData: [],
      bomAddModelVisible: false,// æŽ§åˆ¶bom新增模态框是否显示
      list: [],
      bomLeftAdd: false,
      bomRightUp: false,
      bomRightDl: false,
      formTypeOptions: null,
      typeselect: 0,
      returntree: {
        id:28,
      },
      version: {},
      leftAdd:{
        type: [],
        father: null,
        standard: null,
        name: null,
        specifications: null
      },
      VER: {},
      verdata: {},
      character: 0,
      restaurants: [],
      bomName:[],
      bomStandard:[],
      isLeftAdd: true
    }
  },
  // watch: {
@@ -124,11 +348,204 @@
  //   }
  // },
  mounted() {
    this.tableType=0
    this.selectMaterialTree()
    // this.selectAll()
    this.selectVersion()
    console.log(this.formTypeOptions);
  },
  methods: {
    changeLeftAdd(){
        if(this.leftAdd.type.length===2){
          this.leftAdd.father=null
          this.leftAdd.father=this.leftAdd.type[1]
        }
        if(this.leftAdd.type.length===3){
          this.leftAdd.name=null
          this.leftAdd.father=this.leftAdd.type[1]
          this.leftAdd.name=this.leftAdd.type[2]
        }
        if(this.leftAdd.type.length===4){
          this.leftAdd.standard=null
          this.leftAdd.father=this.leftAdd.type[1]
          this.leftAdd.name=this.leftAdd.type[2]
          this.leftAdd.standard=this.leftAdd.type[3]
        }
    },
    submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            let obj=JSON.parse(JSON.stringify(this.leftAdd))
            console.log(obj);
            let one=this.list.filter(item=>{
                return item.name===obj.type[0]
              })[0]
              let two=one.children.filter(item=>{
                return item.name===obj.father
              })[0]
              console.log("two",two);
              //执行一二级新增
              if(two===undefined||two===null){
                  obj.type=this.getType(obj.type[0])
                  this.$axios.post(this.$api.url.leftAddOneTwo,obj,{
                     headers: { "Content-Type": "application/json" }
                 }).then(res=>{
                     this.$message({
                      message: res.message,
                      type: 'success'
                      });
                      this.selectMaterialTree()
                  })
              }else{
                let three=two.children.filter(item=>{
                  return item.name===obj.name
                })[0]
                console.log("three",three);
                if(three===undefined||three===null){
                  obj.type=this.getType(obj.type[0])
                  this.$axios.post(this.$api.url.leftAddOneTwo,obj,{
                     headers: { "Content-Type": "application/json" }
                 }).then(res=>{
                     this.$message({
                      message: res.message,
                      type: 'success'
                      });
                      this.selectMaterialTree()
                  })
                }else{
                  //新增标准型号
                  let four=three.children.filter(item=>{
                    return item.name===obj.standard
                  })[0]
                  if(four===undefined||four===null){
                     let StandardDto={
                        "id": three.id,
                       "specifications": obj.specifications,
                       "standard": obj.standard
                     }
                     this.$axios.post(this.$api.url.leftAddThree,StandardDto,{
                     headers: { "Content-Type": "application/json" }
                 }).then(res=>{
                     this.$message({
                      message: res.message,
                      type: 'success'
                      });
                      this.selectMaterialTree()
                   })
                  }else{
                     let specificationsDto={
                      "id": four.id,
                       "specifications": obj.specifications
                     }
                     this.$axios.post(this.$api.url.leftAddFour,specificationsDto,{
                     headers: { "Content-Type": "application/json" }
                 }).then(res=>{
                     this.$message({
                      message: res.message,
                      type: 'success'
                      });
                      this.selectMaterialTree()
                      this.selectVersion()
                   })
                  }
                }
              }
              this.resetForm('leftAdd')
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },
      resetForm(formName) {
        this.bomLeftAdd=false
        this.$refs[formName].resetFields();
      },
    leftAddBom(){
    },
    confirmAdd(formName){
      this.$refs[formName].validate(valid=>{
        if(valid){
          console.log(this.technologyForm);
          this.$axios.post(this.$api.url.addTechnology,
          {
            "specificationsId": this.returntree.id,
            "technologyDto": JSON.stringify({
                deviceGroup: this.technologyForm.deviceGroup,
                father: this.technologyForm.father,
                name: this.technologyForm.name,
                productionQuota: this.technologyForm.productionQuota,
              })
          },{
            headers: { "Content-Type": "application/json" }
          }).then(res=>{
            this.$message.success(res.message);
          }).catch(error=>{
            this.$message.error(error.message);
          })
          this.bomAddModelVisible = false;
        }
      })
    },
    //获取工序列表
    getFatherList(){
      this.$axios.get(this.$api.url.chooseFather,{
        params:{specificationsId : this.returntree.id}
      }).then(res=>{
        this.fatherList = res.data;
      }).catch(error=>{
        this.$message.error(error.message);
      })
    },
    //获取设备组列表
    getDeviceList(){
      this.$axios.get(this.$api.url.chooseDevice).then(res=>{
        this.deviceList = res.data;
      }).catch(error=>{
        this.$message.error(error.message);
      })
    },
    showBomAddModel(){
      this.getFatherList();
      this.getDeviceList();
      this.bomAddModelVisible = true
    },
    startLeftAdd(){
    },
    getType(typeName){
      return typeName==="成品"?1:2
    },
    handleSelect(item) {
        console.log(item);
      },
      querySearch(queryString, cb) {
        var restaurants = this.restaurants;
        var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
        // è°ƒç”¨ callback è¿”回建议列表的数据
        cb(results);
      },
      querySearchName(queryString, cb) {
        var restaurants = this.bomName;
        var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
        // è°ƒç”¨ callback è¿”回建议列表的数据
        cb(results);
      },
      querySearchStandar(queryString, cb) {
        var restaurants = this.bomStandard;
        var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
        // è°ƒç”¨ callback è¿”回建议列表的数据
        cb(results);
      },
      loadFatherType(){
        return [{label:"橡胶连接器",value: "橡胶连接器"},{label:"金属连接器",value: "金属连接器"},
        {label:"湿插拔电连接器",value: "湿插拔电连接器"},{label:"分支组件",value: "分支组件"}]
      },
      createFilter(queryString) {
        return (restaurant) => {
          return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
        };
      },
    selectDataList() {
                this.list.forEach(a => {
                    a.code = '[1]'
@@ -158,18 +575,21 @@
    },
    TYPE(val) {//类型.数据
      console.log(val);
      // console.log(val);
      this.typeselect = val
      // console.log(this.typeselect);
      this.selectVersion()
    },
    handleNodeClick(val) {//树的值
      console.log(val);
      this.returntree = val
      if(val.code==='[5]'&&val.children===undefined){
        console.log(val);
        this.returntree = val
        this.typeselect=0
        this.selectVersion()
      }
    },
    selectVersion() {//版本
      this.$axios.get(this.$api.url.selectVersion, {
    async selectVersion() {//版本
      let v=await this.$axios.get(this.$api.url.selectVersion, {
        params: {
          specificationsId: this.returntree.id,
          type: this.typeselect,
@@ -179,12 +599,15 @@
        this.version = this.verdata.map(el => {
          return el = `v${el}`
        })
        console.log(this.verdata);
        // console.log("版本");
        return this.verdata[0]
      })
      this.character=v
      this.VER="v"+v
      this.selectAll()
    },
    //右侧数据
    selectAll() {
      console.log(this.$axios.get(this.$api.url.selectAll));
      this.$axios.get(this.$api.url.selectAll, {
        params: {
          specificationsId: this.returntree.id,//tree的点击反馈
@@ -192,14 +615,24 @@
          version: this.character,//版本
        }
      }).then(res => {
        console.log(res.data);
        this.tableData = res.data
        let arr = res.data;
        this.formatData(arr)
        this.tableData = arr;
      })
    },
    formatData(data){
      let arr = data;
      for(var i=0;i<arr.length;i++){
            arr[i].rowId = Math.random();
            if(arr[i].children != undefined){
              this.formatData(arr[i].children);
            }
        }
    },
    verevent(val) {
      console.log(val);
      // console.log(val);
      let cc = val.replace('v', '')
      console.log(cc);
      // console.log(cc);
      this.character = cc
      this.selectAll()
      // const { v, ...newObj } = val;
@@ -208,8 +641,8 @@
    },
    //五级树
    selectMaterialTree() {
      this.$axios.get(this.$api.url.selectTreeByMaterial).then(res => {
        this.list = res.data
      this.$axios.get(this.$api.url.selectTreeByMaterial).then( res => {
        this.list=res.data
        this.list.forEach((el, idx, arr) => {
          if (idx == 0) {
            arr[idx].name = '成品'
@@ -219,8 +652,33 @@
          }
        })
        this.selectDataList()
        // é»˜è®¤ç¬¬ä¸€ä¸ªäº”级节点搜索,新增配置项
        const treeOptions = JSON.parse(JSON.stringify(this.list));
        this.getDefault(treeOptions, 0);
        this.formTypeOptions = treeOptions;
        this.$nextTick().then(() => {
          const firstNode = document.querySelector(
            ".el-tree-node .el-tree-node__children .el-tree-node .el-tree-node__children .el-tree-node .el-tree-node__children .el-tree-node .el-tree-node__children .el-tree-node"
          );
          try {
            firstNode.click();
          } catch (e) {
            //TODO handle the exception
          }
        });
      })
    },
    getDefault(arr, index) {
            for (const item of arr) {
                if (item.children && item.children.length > 0) {
                    // æœ‰å­èŠ‚ç‚¹
                    this.getDefault(item.children, index + 1);
                    if (index === 2) {
                        item.children = null;
                    }
                }
            }
        },
    filterNode(value, data) {
      if (!value) return true;
      return data.label.indexOf(value) !== -1;
@@ -260,7 +718,75 @@
          this.tableData = productList
          break;
      }
    },
    // é€’归更改添加级联所需属性
    replaceProp(arr){
      for (let index = 0; index < arr.length; index++) {
        let element = arr[index];
        element.label=element.name
        element.value=element.name
        if(element.children!=undefined){
          if(element.code==='[4]'){
            delete element['children']
            continue
          }
          this.replaceProp(element.children)
        }
      }
    }
  },
  watch:{
    leftAdd: {
    handler(newVal, oldVal) {
    if(this.isLeftAdd){
      let tree=JSON.parse(JSON.stringify(this.list))
      let father=null;
      if(newVal.father!=null&&newVal.father!=''&&newVal.type.length>0){
          let one=tree.filter(item=>{
            return item.name===newVal.type[0]
          })[0]
          console.log(one);
          let two=one.children.filter(item=>{
            return item.name===newVal.father
          })[0]
          if(two!=undefined){
            this.bomName=[]
            father=JSON.parse(JSON.stringify(two))
            two.children.forEach(item=>{
              let obj={label: item.name,value: item.name}
              this.bomName.push(obj)
            })
          }
      }
      if(newVal.name!=null&&newVal!=''&&newVal.father!=null&&newVal.father!=''&&newVal.type.length>0){
          let three=null
          if(father!=undefined&&father!=null){
            three=father.children.filter(item=>{
            return item.name===newVal.name
          })[0]
          }
          if(three!=undefined&&three!=null){
            this.bomStandard=[]
            three.children.forEach(item=>{
              let obj={label: item.name,value: item.name}
              this.bomStandard.push(obj)
            })
          }
      }
      }
    },
     deep: true // æ·±åº¦ç›‘听对象内部属性的变化,可选的
  },
  bomLeftAdd:{
    handler(newval,oldVal){
      if(newval){
       let treeOptions = JSON.parse(JSON.stringify(this.list));
       this.replaceProp(treeOptions)
             this.formTypeOptions=treeOptions
       this.restaurants=this.loadFatherType()
      }
    }
  }
  }
}
</script>
@@ -295,6 +821,7 @@
.thing .left {
  width: 295px;
  height: calc(100% - 32px);
  overflow-y: auto;
  border-right: 3px solid rgb(245, 247, 251);
  padding: 16px;
}
src/components/view/unqualifiedManagement.vue
@@ -30,6 +30,17 @@
            clearable
            value-format="yyyy-MM-dd"
          ></el-date-picker>
          <span>产品大类:</span>
          <el-select
            v-model="search.productCategories"
            size="small"
            placeholder="请选择"
            style="width: 224px;margin-right: 30px;"
          >
            <el-option label="全部" :value="''"></el-option>
            <el-option label="成品" :value="1"></el-option>
            <el-option label="半成品" :value="2"></el-option>
          </el-select>
          <el-button size="mini" @click="clean()"><span>重 ç½®</span></el-button>
          <el-button
            size="mini"
@@ -71,7 +82,8 @@
          </el-table-column>
          <el-table-column prop="material_code" label="材料编码">
          </el-table-column>
          <el-table-column prop="id" label="材料名称"> </el-table-column>
          <el-table-column prop="project_name" label="材料名称">
          </el-table-column>
          <el-table-column
            prop="specifications_model"
            label="规格型号"
@@ -97,25 +109,60 @@
          </el-table-column>
          <el-table-column prop="deal_reasult" label="处理结果" width="100">
            <template slot-scope="scope">
              <span style="color:#34BD66;" v-if="scope.row.deal_reasult == 1"
              <span style="color:#E84738;" v-if="scope.row.deal_reasult == 0"
                >不通过</span
              >
              <span
                style="color:#E84738;"
                v-else-if="scope.row.deal_reasult == 0"
                style="color:#34BD66;"
                v-else-if="scope.row.deal_reasult == 1"
                >通过</span
              >
            </template>
          </el-table-column>
          <el-table-column label="操作" width="100">
            <template>
            <template slot-scope="scope">
              <div style="display: flex;">
                <el-button type="text" siae="small" size="mini">评审</el-button>
                <el-popover
                  placement="left"
                  width="160"
                  :ref="`popover-${scope.$index}`"
                >
                  <div style="padding: 6px">评审是否通过?</div>
                  <div style="text-align: right; margin: 6px;">
                    <el-button
                      size="mini"
                      type="text"
                      style="color: #E84738;"
                      @click="
                        scope._self.$refs[`popover-${scope.$index}`].doClose();
                        rawEvaluate(scope.row, 0);
                      "
                      >不通过</el-button
                    >
                    <el-button
                      type="text"
                      style="color: #34bd66;"
                      size="mini"
                      @click="
                        scope._self.$refs[`popover-${scope.$index}`].doClose();
                        rawEvaluate(scope.row, 1);
                      "
                      >通过</el-button
                    >
                  </div>
                  <el-button
                    slot="reference"
                    type="text"
                    siae="small"
                    size="mini"
                    >评审</el-button
                  >
                </el-popover>
                <el-button
                  type="text"
                  siae="small"
                  size="mini"
                  style=" color:87, 138, 193 ;"
                  style=" color:87, 138, 193 ;margin-left: 10px;"
                  >查看</el-button
                >
              </div>
@@ -149,6 +196,7 @@
        countSize: 10, // æ¡æ•°/页
        pageSize: 1, // èµ·å§‹é¡µ
        formTime: "", // æ¥æ–™æ—¥æœŸ
        productCategories: "", // äº§å“å¤§ç±»
        dealState: "" // å¤„理状态
      },
      unqualifiedTable: [], // é¡µé¢è¡¨æ ¼æ•°æ®
@@ -185,6 +233,17 @@
        dealState: "" // å¤„理状态
      };
      this.getDetailInfo();
    },
    rawEvaluate(row, passOrNo) {
      this.$axios
        .post(this.$api.url.evaluatePassOrNo, {
          rawId: row.id,
          passOrNo: passOrNo
        })
        .then(res => {
          this.unqualifiedTable = [];
          this.getDetailInfo();
        });
    }
  }
};