王震
2023-12-07 75e035a10a0faeff6b2ec4b9fcbf98d1536274f2
Merge branch 'master' of http://114.132.189.42:9002/r/mes-ocea-before
已修改23个文件
667 ■■■■■ 文件已修改
src/api/quality/rawMaterial.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/common/operation.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/equipment/equipment/index.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/plan/manufacturingorder/index.vue 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/product/workbench/batchproductout-form-new.vue 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/product/workbench/feed-pane.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/product/workbench/productInDialog.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/product/workbench/productoutput-list.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/product/workbench/productoutput-table.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/product/workbench/workReportCard.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/quality/Packaging_ledger/index.vue 117 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/quality/rawMaterial/index.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/technology/completeproductstructure/completeproductstructure-form.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/technology/completeproductstructure/index.vue 177 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/technology/operation/index.vue 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/technology/operation/operation-form.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/technology/routing/edit-routing-operation.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/technology/routing/index.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/technology/routing/routing-form.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/technology/structure/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/technology/structure/single-structure-form.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/warehouse/pallettransports/index.vue 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/quality/rawMaterial.js
@@ -34,6 +34,7 @@
  return request({
    url: '/mes/rawInspect/downloadReport',
    method: 'post',
    data: data,
    responseType: 'blob',
  })
}
src/views/common/operation.vue
@@ -94,8 +94,8 @@
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
          }/*,
           {
            minWidth: '100',
            prop: 'productionCounting',
            label: '是否报工',
@@ -159,7 +159,7 @@
            optList: () => {
              return this.getChangeList()
            }
          }
          } */
        ]
      },
      addOrUpdateVisible: false,
src/views/equipment/equipment/index.vue
@@ -19,11 +19,11 @@
        @refreshDataList="getData"
      ></table-form>
      <el-dialog title="标签列表" :visible.sync="diaPrintTab" width="500px">
        <div class="dia_body">
          <el-card class="box-card" id="printRaw" v-for="(tem, i) in multipleSelection" :key="i" style="margin-bottom: 30px;">
        <div class="dia_body" id="printRaw">
          <el-card class="box-card" v-for="(tem, i) in multipleSelection" :key="i" style="margin-bottom: 30px; font-size: 16px !important;">
            <el-row>
              <el-col :span="8" :offset="1">序号:</el-col>
              <el-col :span="7" style="font-weight: bold;">{{ i + 1 }}</el-col>
              <el-col :span="7" style="font-weight: bold;">{{ tem.id }}</el-col>
            </el-row>
            <el-row>
              <el-col :span="8" :offset="1">编号:</el-col>
@@ -43,7 +43,7 @@
        </div>
        <span slot="footer" class="dialog-footer">
          <el-button @click="diaPrintTab = false">取 消</el-button>
          <el-button type="primary" @click="printFun()">打 印</el-button>
          <el-button type="primary" @click="printFun">打 印</el-button>
        </span>
      </el-dialog>
    </basic-container>
@@ -289,13 +289,23 @@
    printFun() {
            // this.printDialogVisible = false;
            this.diaPrintTab = false;
            console.log(printRaw);
            PrintJS({
                printable: "printRaw",//页面
                printable: 'printRaw',//页面
                type: "html",//文档类型
                  maxWidth:450,
                  targetStyles:['*'],                 
                  style:"@page {margin:0  ;resolution: 300dpi;portrait}",
                  style: `@page {
                    margin:0;
                    size: 360px 175px;
                  }
                  hrml{
                    zoom:100%;
                  }
                  @media print{
                    width: 360px;
                    height: 175px;
                    margin:0;
                  }`,
                  onPrintDialogClose: this.erexcel=false,
                  targetStyles: ["*"], // 使用dom的所有样式,很重要
                  font_size: '',
src/views/plan/manufacturingorder/index.vue
@@ -109,7 +109,7 @@
            @click="labelPrint"
            type="primary"
            style="margin-left:10px;"
            >打印标签
            >标签打印
          </el-button>
          <!-- <el-button
            v-if="permissions.manufacturingorder_update_orderno"
@@ -195,38 +195,32 @@
          </div>
        </span>
      </el-dialog>
      <!-- 标签打印 -->
      <el-dialog title="标签列表" :visible.sync="diaPrintTab" width="30%">
        <div class="dia_body" style="height: 400px;overflow-y: auto;padding: 0 10px;">
          <el-card class="box-card" v-for="(tem, i) in orderDatalist" :key="i" style="margin-bottom: 15px;">
            <!-- <el-row>
              <el-col :span="10" :offset="3">序号:</el-col>
              <el-col :span="10" style="font-weight: bold;">{{ i + 1 }}</el-col>
            </el-row> -->
            <!-- <el-row>
              <el-col :span="10" :offset="3">客户订单号:</el-col>
              <el-col :span="10" style="font-weight: bold;">{{ tem.customerOrderNo }}</el-col>
            </el-row> -->
            <el-row style="font-size: 18px;">
              <!-- <el-col :span="10" :offset="3">零件名称:</el-col> -->
              <el-col :span="10" :offset="6" style="font-weight: bold;" >{{ tem.partNo }}</el-col>
            </el-row>
            <el-row>
              <el-col :span="10" style="padding-left: 20px;">
                <vueQr :text="tem.moNo" :size="150" :margin="1"></vueQr>
              </el-col>
              <el-col :span="10" :offset="3" style="font-weight: bold;" >批次号: &nbsp;{{ tem.moNo }}</el-col>
              <!-- <el-col :span="10" :offset="4" style="font-weight: bold;" ></el-col> -->
              <!-- <el-col :span="10" :offset="4" style="font-weight: bold;" >{{ tem.partName }}</el-col> -->
            </el-row>
          </el-card>
        </div>
        <span slot="footer" class="dialog-footer">
          <el-button @click="diaPrintTab = false">取 消</el-button>
          <el-button type="primary" @click="diaPrintTab = false">打 印</el-button>
        </span>
      </el-dialog>
    </basic-container>
    <!-- 标签打印 -->
    <el-dialog title="标签列表" :visible.sync="diaPrintTab" width="500px">
      <div class="dia_body" style="height: 400px;overflow-y: auto;padding: 0 10px;">
        <el-card class="box-card" v-for="(item, i) in qrData" :key="i" style="margin-bottom: 15px;width:100%">
              <el-row>
                <el-col :span="10" :offset="3">序号:</el-col>
                <el-col :span="10" style="font-weight: bold;">{{ i + 1 }}</el-col>
              </el-row>
              <el-row>
                <el-col :span="10" :offset="3">车间订单号:</el-col>
                <el-col :span="10" style="font-weight: bold;">{{ item.moNo2 }}</el-col>
              </el-row>
              <el-row>
                <el-col :span="10" :offset="3">订单二维码:</el-col>
                <el-col :span="10">
                  <vueQr :text="JSON.stringify(item)" :size="80" :margin="2"></vueQr>
                </el-col>
              </el-row>
          </el-card>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="diaPrintTab = false">取 消</el-button>
        <el-button type="primary" @click="diaPrintTab = false">打 印</el-button>
      </span>
    </el-dialog>
  </div>
</template>
@@ -259,6 +253,8 @@
export default {
  data() {
    return {
      checkList: [],
      qrData: [],
      orderDatalist:[],
      diaPrintTab:false,
      showCustomerorder: false,
@@ -461,6 +457,15 @@
            minWidth: '120',
            prop: 'lengthRequirement',
            label: '盘长要求',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
           {
            minWidth: '120',
            prop: 'scrapQty',
            label: '报废数量',
            sort: true,
            isTrue: true,
            isSearch: true,
@@ -1037,7 +1042,6 @@
      }
    })
  },
  computed: {
    ...mapGetters(['permissions'])
  },
@@ -1396,6 +1400,23 @@
        }
      }
    },
    //初始化二维码标签数据
    initQrData(data){
      if(data){
        let index = Number(data.qtyRequired) + Number(data.scrapQty)
        if(index>0){
          for(var i=1;i<= index;i++){
            let obj = {
              moNo: data.moNo,
              moNo2: null,
            }
            let no = (i+"").padStart(3,'0')
            obj.moNo2 = data.moNo + no
            this.qrData.push(obj)
          }
        }
      }
    },
    // table自带事件
    handleSelectionChange(val) {
      console.log(val,"一行");
@@ -1403,21 +1424,12 @@
      orderData =val.map( el =>{
         return{
            moNo:el.moNo,
            workShop:el.workShop,
            operationNames:el.operationNames,
            customerOrderNo:el.customerOrderNo,
            customerName:el.customerName,
            mpsNo:el.mpsNo,
            remark:el.remark,
            partNo:el.partNo,
            partName:el.partName,
            unit:el.unit,
            requiredDate:el.requiredDate,
            id:el.id,
            qtyRequired: el.qtyRequired,
            scrapQty: el.scrapQty
         }
      })
     this.orderDatalist = orderData
      console.log(orderData,"二维码需要的");
     this.initQrData(orderData[0])
      // 根据状态,禁用表头按钮
      // 筛选出选中记录的状态
      var stateArr = val.map(function(value, index) {
src/views/product/workbench/batchproductout-form-new.vue
@@ -57,9 +57,9 @@
        ><el-col :span="2" class="batch-product-out-form-header-col"
          ><span>零件名称</span></el-col
        >
        <el-col :span="4" class="batch-product-out-form-header-col"
        <!-- <el-col :span="4" class="batch-product-out-form-header-col"
          ><span>序列号</span></el-col
        >
        > -->
        <!-- <el-col :span="2" class="batch-product-out-form-header-col"
          ><span>载具编号</span></el-col
        >
@@ -78,9 +78,9 @@
        <el-col :span="1" class="batch-product-out-form-header-col"
          ><span>单位</span></el-col
        >
        <el-col :span="2" class="batch-product-out-form-header-col"
        <!-- <el-col :span="2" class="batch-product-out-form-header-col"
          ><span>WDR号</span></el-col
        >
        > -->
        <!-- <el-col :span="1" class="batch-product-out-form-header-col"
          ><span>分段描述</span></el-col
        > -->
@@ -133,11 +133,11 @@
              <span class="inline-el-hidden">{{ item.partName }}</span>
            </el-tooltip>
          </el-col>
          <el-col :span="4" class="batch-product-out-form-body-col l-mes">
          <!-- <el-col :span="4" class="batch-product-out-form-body-col l-mes"> -->
            <!-- <span>{{ item.outBatchNo }}</span> -->
            <el-input v-model="item.outBatchNo">
            <!-- <el-input v-model="item.outBatchNo">
            </el-input>
          </el-col>
          </el-col> -->
          <!-- <el-col :span="2" class="batch-product-out-form-body-col l-mes">
            <el-input v-model="item.reelNumber"></el-input>
          </el-col>
@@ -156,17 +156,22 @@
          <el-col :span="1" class="batch-product-out-form-body-col">
            <span>{{ item.unit }}</span>
          </el-col>
          <el-col :span="2" class="batch-product-out-form-body-col l-mes">
          <!-- <el-col :span="2" class="batch-product-out-form-body-col l-mes">
            <el-input v-model="item.wdr"></el-input>
          </el-col>
          </el-col> -->
          <!-- <el-col :span="1" class="batch-product-out-form-body-col l-mes">
            <el-input v-model="item.segmentDesc"></el-input>
          </el-col> -->
                    <el-col :span="2" class="batch-product-out-form-body-col l-mes">
                      <el-input v-model="item.outNum"></el-input>
                      <span v-text="item.outNum"></span>
                    </el-col>
          <el-col :span="2" class="batch-product-out-form-body-col l-mes">
            <el-input v-model="item.scrapQty"></el-input>
            <el-select v-model="item.scrapQty">
              <el-option label="0" value="0">
              </el-option>
              <el-option label="1" value="1">
              </el-option>
            </el-select>
          </el-col>
          <!-- <el-col :span="1" class="batch-product-out-form-body-col l-mes">
            <el-input v-model="item.reelWeight"></el-input>
@@ -392,6 +397,7 @@
          this.products = this.productList
          this.products.forEach(item=>{
            item.staffName = staffName
            item.outNum=1
          })
        }else{
          this.products = []
@@ -478,7 +484,8 @@
          newProduct.partNo = this.parentInfo.partNo
          newProduct.partName = this.parentInfo.partName
          newProduct.outBatchNo = oriOutBatchNo
          newProduct.productQty = 0
          newProduct.productQty = 1
          newProduct.outNum = 1
          newProduct.unit = this.parentInfo.unit
          newProduct.productStaffs = productStaffs
          newProduct.productStaffIds = productStaffIds
src/views/product/workbench/feed-pane.vue
@@ -250,9 +250,9 @@
              <span>{{ scope.row.partName }}</span>
            </template>
          </el-table-column>
          <el-table-column label="IFS批次号" prop="ifsBatchNo" align="center">
          <el-table-column label="批次号" prop="ifsBatchNo" align="center">
            <template slot="header">
              <div style="line-height: 14px;">IFS批次号</div>
              <div style="line-height: 14px;">批次号</div>
              <div class="th" @click.stop>
                <el-input
                  type="text"
@@ -268,7 +268,7 @@
              <span>{{ scope.row.ifsBatchNo }}</span>
            </template>
          </el-table-column>
                    <el-table-column label="WDR号" prop="ifsWdr" align="center">
                    <!-- <el-table-column label="WDR号" prop="ifsWdr" align="center">
                      <template slot="header">
                        <div style="line-height: 14px;">WDR号</div>
                        <div class="th" @click.stop>
@@ -285,7 +285,7 @@
                      <template slot-scope="scope">
                        <span>{{ scope.row.ifsWdr }}</span>
                      </template>
                    </el-table-column>
                    </el-table-column> -->
          <!-- <el-table-column label="SN号" prop="partBatchNo" align="center">
            <template slot="header">
              <div style="line-height: 14px;">SN号</div>
@@ -1242,9 +1242,9 @@
          <span>{{ scope.row.partName }}</span>
        </template>
      </el-table-column>
      <el-table-column label="IFS批次号" prop="ifsBatchNo" align="center">
      <el-table-column label="批次号" prop="ifsBatchNo" align="center">
        <template slot="header" slot-scope="scope">
          <div style="line-height: 14px;">IFS批次号</div>
          <div style="line-height: 14px;">批次号</div>
          <div class="th" @click.stop>
            <el-input
              type="text"
@@ -1260,7 +1260,7 @@
          <span>{{ scope.row.ifsBatchNo }}</span>
        </template>
      </el-table-column>
            <el-table-column label="WDR号" prop="ifsWdr" align="center">
            <!-- <el-table-column label="WDR号" prop="ifsWdr" align="center">
              <template slot="header" slot-scope="scope">
                <div style="line-height: 14px;">WDR号</div>
                <div class="th" @click.stop>
@@ -1277,7 +1277,7 @@
              <template slot-scope="scope">
                <span>{{ scope.row.ifsWdr }}</span>
              </template>
            </el-table-column>
            </el-table-column> -->
      <!-- <el-table-column label="SN号" prop="partBatchNo" align="center">
        <template slot="header" slot-scope="scope">
          <div style="line-height: 14px;">SN号</div>
src/views/product/workbench/productInDialog.vue
@@ -25,7 +25,7 @@
      >
      </el-table-column>
      <el-table-column
        label="IFS批次号"
        label="批次号"
        prop="ifsBatchNo"
        align="center"
        :show-overflow-tooltip="true"
@@ -46,6 +46,10 @@
      <el-table-column label="单位" prop="unit" align="center">
      </el-table-column>
      <el-table-column label="是否工序库存" prop="operationStockStatus" align="center">
        <template slot-scope="scope">
              <span v-if="scope.row.operationStockStatus">是</span>
              <span v-else>否</span>
            </template>
      </el-table-column>
      <el-table-column label="所属工序" prop="name" align="center">
      </el-table-column>
src/views/product/workbench/productoutput-list.vue
@@ -130,7 +130,7 @@
            isSearch: true,
            searchInfoType: 'text'
          },
          {
          /* {
            minWidth: '100',
            prop: 'checkStatus',
            label: '检测状态',
@@ -152,8 +152,8 @@
            optList: () => {
              return this.checkStatusOptions
            }
          },
          {
          }, */
         /*  {
            minWidth: '140',
            prop: 'isQualified',
            label: '检测是否合格',
@@ -198,7 +198,7 @@
            optList: () => {
              return this.booleanOptions
            }
          },
          }, */
          {
            minWidth: '140',
            prop: 'remark',
src/views/product/workbench/productoutput-table.vue
@@ -438,6 +438,15 @@
            searchInfoType: 'text'
          },
          {
            minWidth: '100',
            prop: 'scrapQty',
            label: '报废数量',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '80',
            prop: 'unit',
            label: '单位',
@@ -446,7 +455,7 @@
            isSearch: true,
            searchInfoType: 'text'
          },
          {
          /* {
            minWidth: '100',
            prop: 'checkStatus',
            label: '检测状态',
@@ -537,7 +546,7 @@
            optList: () => {
              return this.booleanOptions
            }
          },
          }, */
          {
            minWidth: '140',
            prop: 'remark',
src/views/product/workbench/workReportCard.vue
@@ -256,7 +256,7 @@
            }}</template>
          </template>
        </el-table-column>
        <el-table-column label="WDR号" prop="wdr" align="center" width="100">
        <!-- <el-table-column label="WDR号" prop="wdr" align="center" width="100">
          <template slot-scope="scope">
            <el-input :id="'idReport_' + +scope.$index" :ref="'reference_' + scope.$index" v-if="scope.row.isEdit"
              v-model="scope.row.wdr" placeholder="WDR号"></el-input>
@@ -264,7 +264,7 @@
              scope.row.wdr
            }}</template>
          </template>
        </el-table-column>
        </el-table-column> -->
        <!-- <el-table-column label="分段描述" prop="segmentDesc" align="center">
          <template slot-scope="scope">
            <el-input
@@ -288,8 +288,8 @@
            }}</template>
          </template>
        </el-table-column>
        <el-table-column label="IFS批次号" prop="ifsBatchNo" align="center" width="120">
          <!-- <template slot="header" slot-scope="scope">
        <!-- <el-table-column label="IFS批次号" prop="ifsBatchNo" align="center" width="120">
          <template slot="header" slot-scope="scope">
            <div style="line-height: 14px;">IFS批次号</div>
            <div class="th" @click.stop>
              <template>
@@ -305,8 +305,8 @@
            <template v-if="!scope.row.isIfsBatchNoEdit">{{
              scope.row.ifsBatchNo
            }}</template>
          </template> -->
        </el-table-column>
          </template>
        </el-table-column> -->
        <el-table-column label="备注" prop="remark" align="center">
          <template slot-scope="scope">
            <el-input :id="'idReport_' + +scope.$index" :ref="'reference_' + scope.$index" v-if="scope.row.isEdit"
src/views/quality/Packaging_ledger/index.vue
@@ -9,10 +9,10 @@
            :prelang="prelang"
            :ajaxFun="ajaxFun"
            :options="options" 
            @currentChange="handleCurrentChange"
            @handleSelectionChange="handleSelectionChange"
            ref="processconfiguration"
            >
        <template #toolbar></template>
              <template #toolbar></template>
            </ttable>
            </el-col>
            <el-col :span="13" style="padding-left: 10px">
@@ -101,7 +101,6 @@
                  <el-input v-model="scope.row.number"></el-input>
                </template>
              </el-table-column>
              <el-table-column label="单位" prop="unit" align="center" />
              <el-table-column
                fixed="right"
                label="操作"
@@ -127,7 +126,31 @@
        @handleSelectionChange = "preserve"
        >
        </packfromadd>
        </basic-container>
      </basic-container>
      <el-dialog title="标签列表" top="5vh" :visible.sync="diaPrintTab" width="500px">
        <div id="qrCard" class="dia_body" style="height: 400px;overflow-y: auto;padding: 0 10px;">
          <el-card class="box-card" v-for="(item, i) in qrData" :key="i" style="margin-bottom: 15px;">
            <el-row>
              <el-col :span="10" :offset="3">序号:</el-col>
              <el-col :span="10" style="font-weight: bold;">{{ i + 1 }}</el-col>
            </el-row>
            <el-row>
              <el-col :span="10" :offset="3">包装编号:</el-col>
              <el-col :span="10" style="font-weight: bold;">{{ item.packageNo }}</el-col>
            </el-row>
            <el-row>
              <el-col :span="10" :offset="3">二维码:</el-col>
              <el-col :span="10">
                <vueQr :text="JSON.stringify(item)" :size="120" :margin="1"></vueQr>
              </el-col>
            </el-row>
          </el-card>
        </div>
        <span slot="footer" class="dialog-footer">
          <el-button @click="diaPrintTab = false">取 消</el-button>
          <el-button type="primary" @click="printFun">打 印</el-button>
        </span>
      </el-dialog>
    </div>
</template>
@@ -136,9 +159,14 @@
import ttable from '@/views/common/ztt-table.vue'
import packfrom from './pack-from.vue'
import packfromadd from './pack-fromadd.vue'
import vueQr from 'vue-qr'
import PrintJS from 'print-js'
export default {
    data(){
        return {
          qrData:[],
          diaPrintTab: false,
          multipleSelection: [],
          isCheck: false,
          dataway:{},
          goid:'',
@@ -156,7 +184,7 @@
                border: true, // 是否有纵向边框
                lazy: false, // 是否需要懒加载
                fit: true, // 列的宽度是否自撑开
                multiSelect: false, //
                multiSelect: true, //
                isEdit:false,
                seqNo: true,
                isShowHide: true, // 是否显示显影按钮
@@ -237,6 +265,11 @@
                      type: 'primary',
                      fun: this.addOrUpdateHandle
                    },
                    {
                      text: '标签打印',
                      type: 'primary',
                      fun: this.printLabel
                    },
                ],
                operator: [
                    {
@@ -263,14 +296,71 @@
       }
    },
    components: {
        ttable,
        packfrom,
        packfromadd
        },
        watch: {
      },
      ttable,
      packfrom,
      packfromadd,
      vueQr
    },
    watch: {
      diaPrintTab(newVal){
        if(!newVal){
          this.qrData = []
        }
      }
    },
    methods: {
      //打印按钮
      printFun() {
          this.diaPrintTab = false;
          PrintJS({
              printable: "qrCard",
              type: "html",
              // header: "原材料检测报告",
              targetStyles: ["*"],
              style: `@page {margin: 0mm 5mm;}
                      html {zoom:100%;}
                      @media print {
                        html,body{
                          width:60mm;
                          height:40mm;
                        }
                      }`,
              ignoreElements: ["no-ignore"],
              orientation: 'portrait'
          });
      },
      handleSelectionChange(val){
        this.multipleSelection = val
        let lastRow = val[val.length - 1]
        this.handleCurrentChange(lastRow)
      },
      printLabel(){
        if(this.multipleSelection.length==0){
          this.$message.warning('请选择一条数据')
          return
        }
        this.diaPrintTab = true
        console.log(this.multipleSelection);
        this.multipleSelection.forEach(item=>{
          let obj = {
            packageNo: item.packageNo,
            contractNo: item.contractNo,
            boxInfo: []
          }
          list({packageBoxId:item.id}).then((res) =>{
            res.data.data.forEach(ele=>{
              obj.boxInfo.push({
                product: ele.product,
                productNo: ele.productNo,
                specs: ele.specs,
                unit: ele.unit,
                number: ele.number
              })
            })
          })
          this.qrData.push(obj)
        })
      },
       // 获取数据列表
      getData() {
        this.$refs.processconfiguration.refreshData()
@@ -315,7 +405,6 @@
      },
      preserve(datalist){
        this.testStandardParams = datalist
      },
      //右边保存
      addpreserve(){
@@ -348,7 +437,5 @@
        })
      },
    },
    computed: {
  },
}
</script>
src/views/quality/rawMaterial/index.vue
@@ -287,8 +287,11 @@
                    this.$message.error("只能选择已检测的数据")
                    return
                }
                console.log(selection)
                downloadReport().then(res=>{
                let ids = []
                selection.forEach(ele=>{
                    ids.push(ele.id)
                })
                downloadReport({ids : ids}).then(res=>{
                    transformZip(res)
                }).catch(error=>{
                    console.log(error)
src/views/technology/completeproductstructure/completeproductstructure-form.vue
@@ -75,32 +75,26 @@
                </el-input>
              </el-form-item>
              <el-form-item label="替代号" prop="alternativeNo">
              <!-- <el-form-item label="替代号" prop="alternativeNo">
                <el-input
                  v-model="treeForm.alternativeNo"
                  placeholder="替代号"
                  disabled
                >
                </el-input>
              </el-form-item>
              </el-form-item> -->
              <el-form-item label="替代描述" prop="alternativeDesc">
              <!-- <el-form-item label="替代描述" prop="alternativeDesc">
                <el-input
                  v-model="treeForm.alternativeDesc"
                  placeholder="替代描述"
                  disabled
                >
                </el-input>
              </el-form-item>
              </el-form-item> -->
              <el-form-item label="绝缘颜色">
                <el-input
                  v-model="treeForm.insulationColor"
                  placeholder="绝缘颜色"
                >
                </el-input>
              </el-form-item>
              <el-form-item label="护套颜色">
              <!--   -->
              <!-- <el-form-item label="护套颜色">
                <el-input v-model="treeForm.sheathColor" placeholder="护套颜色">
                </el-input>
              </el-form-item>
@@ -110,7 +104,7 @@
                  placeholder="特性1"
                >
                </el-input>
              </el-form-item>
              </el-form-item> -->
            </el-col>
          </el-row>
        </el-form>
@@ -134,7 +128,7 @@
            <el-table-column label="零件名称" prop="partName"></el-table-column>
            <el-table-column label="单位" prop="unit"></el-table-column>
            <el-table-column label="数量" prop="qpa"></el-table-column>
            <el-table-column label="盘数" prop="discNum"></el-table-column>
            <!-- <el-table-column label="盘数" prop="discNum"></el-table-column> -->
          </el-table>
          <!-- <el-table
            class="tree-select-table"
src/views/technology/completeproductstructure/index.vue
@@ -20,12 +20,13 @@
import {
  fetchList,
  delObj,
  addByStructure
  addByStructure,
} from '@/api/technology/completeproductstructure'
import ttable from '@/views/common/ztt-table.vue'
import { mapGetters } from 'vuex'
import { changeState } from '../../../api/technology/completeproductstructure'
import { remote } from '@/api/admin/dict'
export default {
  data() {
    return {
@@ -34,7 +35,7 @@
      uploadInfo: {
        // 是否展示上传EXCEL以及对应的url
        isShow: true,
        url: 'mes/bom/uploadExcel'
        url: 'mes/bom/uploadExcel',
      },
      prelang: 'completeProductStructure',
      options: {
@@ -49,7 +50,7 @@
        isRefresh: true, // 是否显示刷新按钮
        isShowHide: true, // 是否显示显影按钮
        isSearch: false, // 高级查询按钮
        defaultOrderBy: { column: 'id', direction: 'desc' }
        defaultOrderBy: { column: 'id', direction: 'desc' },
      },
      table: {
        total: 0,
@@ -67,7 +68,7 @@
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text',
            render: { fun: this.addOrUpdateHandle }
            render: { fun: this.addOrUpdateHandle },
          },
          // 零件名称
          {
@@ -77,7 +78,7 @@
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
            searchInfoType: 'text',
          },
          // 零件号
          {
@@ -87,7 +88,7 @@
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
            searchInfoType: 'text',
          },
          // 状态
@@ -112,7 +113,7 @@
                formatVal = '已取消'
              }
              return formatVal
            }
            },
          },
          // 类型
@@ -127,7 +128,7 @@
            formatter: this.formatBomTypeDbType,
            optList: () => {
              return this.bomTypeDbOptions
            }
            },
          },
          // 版本号
          {
@@ -137,61 +138,61 @@
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
            searchInfoType: 'text',
          },
          // 替代号
          {
            minWidth: '120',
            prop: 'alternativeNo',
            label: '替代号',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          // {
          //   minWidth: '120',
          //   prop: 'alternativeNo',
          //   label: '替代号',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text',
          // },
          // 替代描述
          {
            minWidth: '120',
            prop: 'alternativeDesc',
            label: '替代描述',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          // {
          //   minWidth: '120',
          //   prop: 'alternativeDesc',
          //   label: '替代描述',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text',
          // },
          // 绝缘颜色
          {
            minWidth: '120',
            prop: 'insulationColor',
            label: '绝缘颜色',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          // {
          //   minWidth: '120',
          //   prop: 'insulationColor',
          //   label: '绝缘颜色',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text',
          // },
          // 护套颜色
          {
            minWidth: '120',
            prop: 'sheathColor',
            label: '护套颜色',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          // {
          //   minWidth: '120',
          //   prop: 'sheathColor',
          //   label: '护套颜色',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text',
          // },
          // 特性1
          {
            minWidth: '120',
            prop: 'characteristicOne',
            label: '特性1',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          // {
          //   minWidth: '120',
          //   prop: 'characteristicOne',
          //   label: '特性1',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text',
          // },
          // 创建人
          {
            minWidth: '120',
@@ -200,7 +201,7 @@
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
            searchInfoType: 'text',
          },
          // 创建时间
          {
@@ -210,8 +211,8 @@
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'datetimerange'
          }
            searchInfoType: 'datetimerange',
          },
        ],
        toolbar: [
          // {
@@ -226,7 +227,7 @@
            text: '产品结构生成BOM',
            fun: this.addByStructureHandle,
            disabled: false,
            permitArr: []
            permitArr: [],
          },
          {
            text: '批准',
@@ -234,7 +235,7 @@
              this.approveHandle('ACCEPT')
            },
            disabled: false,
            permitArr: ['01draft']
            permitArr: ['01draft'],
          },
          {
            text: '撤回',
@@ -242,7 +243,7 @@
              this.approveHandle('REVOKE')
            },
            disabled: false,
            permitArr: ['02accepted']
            permitArr: ['02accepted'],
          },
          {
            text: '拒绝',
@@ -250,7 +251,7 @@
              this.approveHandle('CANCEL')
            },
            disabled: false,
            permitArr: ['02accepted']
            permitArr: ['02accepted'],
          },
          {
            text: '删除',
@@ -258,46 +259,46 @@
              this.deleteAll()
            },
            disabled: false,
            permitArr: []
          }
            permitArr: [],
          },
        ],
        operator: [
          {
            text: '删除',
            type: 'text',
            size: 'small',
            fun: this.deleteHandle
          }
            fun: this.deleteHandle,
          },
        ],
        operatorConfig: {
          fixed: 'right',
          label: '操作',
          width: 100,
          minWidth: 100
        }
          minWidth: 100,
        },
      },
      stateOptionList: [
        {
          value: '01draft',
          label: '草稿'
          label: '草稿',
        },
        {
          value: '02accepted',
          label: '已接受'
          label: '已接受',
        },
        {
          value: '03cancelled',
          label: '已取消'
        }
          label: '已取消',
        },
      ],
      bomTypeDbOptions: []
      bomTypeDbOptions: [],
    }
  },
  components: {
    ttable
    ttable,
  },
  computed: {
    ...mapGetters(['permissions'])
    ...mapGetters(['permissions']),
  },
  activated() {
    this.getData()
@@ -334,16 +335,20 @@
    addOrUpdateHandle(row) {
      this.$router.push({
        name: 'completeProductStructure',
        params: { id: row == null ? null : row.id }
        params: { id: row == null ? null : row.id },
      })
    },
    // 按产品结构生成BOM
    addByStructureHandle() {
      addByStructure()
      this.$message({
        message: '已在后台生成BOM,请执行结束后刷新页面',
        type: 'success'
      addByStructure().then((res) => {
        let result = Array.from(new Set(res.data.data))
        this.$message.success(result.join(','))
        this.getData()
      })
      // this.$message({
      //   message: '已在后台生成BOM,请执行结束后刷新页面',
      //   type: 'success',
      // })
    },
    // 删除
    deleteHandle(row) {
@@ -351,9 +356,9 @@
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
        closeOnClickModal: false
        closeOnClickModal: false,
      })
        .then(function() {
        .then(function () {
          const ids = []
          ids.push(row.id)
          return delObj(ids)
@@ -375,9 +380,9 @@
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning',
          closeOnClickModal: false
          closeOnClickModal: false,
        })
          .then(function() {
          .then(function () {
            const ids = that.multipleSelection.map((item) => {
              return item.id
            })
@@ -428,7 +433,7 @@
    handleSelectionChange(val) {
      // 根据状态,禁用表头按钮
      // 筛选出选中记录的状态
      var stateArr = val.map(function(value, index) {
      var stateArr = val.map(function (value, index) {
        return value.state
      })
      // 选中状态数组元素去重
@@ -458,7 +463,7 @@
    },
    getStateOptionList() {
      return this.stateOptionList
    }
  }
    },
  },
}
</script>
src/views/technology/operation/index.vue
@@ -35,7 +35,7 @@
      multipleSelection: [],
      uploadInfo: {
        // 是否展示上传EXCEL以及对应的url
        isShow: true,
        isShow: false,
        url: '/mes/operation/excel/upload'
      },
      prelang: 'operation',
@@ -186,19 +186,19 @@
          //   isSearch: true,
          //   searchInfoType: 'text'
          // },
          {
            minWidth: '120',
            prop: 'outsideOpItem',
            label: '外部工序项目',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'select',
            formatter: this.formatOutsideOpItem,
            optList: () => {
              return this.outsideOpItemOptions
            }
          },
          // {
          //   minWidth: '120',
          //   prop: 'outsideOpItem',
          //   label: '外部工序项目',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'select',
          //   formatter: this.formatOutsideOpItem,
          //   optList: () => {
          //     return this.outsideOpItemOptions
          //   }
          // },
          // 备注
          {
            minWidth: '120',
src/views/technology/operation/operation-form.vue
@@ -150,7 +150,7 @@
              </el-form-item>
            </el-col>
          </el-row>
          <el-row style="padding-top: 10px">
          <!-- <el-row style="padding-top: 10px">
            <el-col :span="24">
              <el-form-item label="配置项">
                <el-checkbox-group
@@ -182,7 +182,7 @@
                </el-checkbox-group>
              </el-form-item>
            </el-col>
          </el-row>
          </el-row> -->
        </el-form>
      </div>
src/views/technology/routing/edit-routing-operation.vue
@@ -35,7 +35,7 @@
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="12">
        <!-- <el-col :span="12">
          <el-form-item label="因素单位" prop="runTimeCodeDb" :rules="disabled ?  [{required: false}] : dataRule.runTimeCodeDb">
            <el-select
              v-model="dataForm.runTimeCodeDb"
@@ -51,9 +51,9 @@
              />
            </el-select>
          </el-form-item>
        </el-col>
        </el-col> -->
      </el-row>
      <el-row>
      <!-- <el-row>
        <el-col :span="12">
          <el-form-item label="机器运转因素" prop="machRunFactor" :rules="disabled ?  [{required: false}] : dataRule.machRunFactor">
            <el-input
@@ -92,7 +92,7 @@
            ></el-input>
          </el-form-item>
        </el-col>
      </el-row>
      </el-row> -->
      <el-row>
        <el-col :span="12">
          <el-form-item label="人工类别" prop="laborClassNo">
@@ -124,7 +124,7 @@
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="12">
        <!-- <el-col :span="12">
          <el-form-item label="外部工序项目" prop="outsideOpItem">
            <el-select
              v-model="dataForm.outsideOpItem"
@@ -141,7 +141,7 @@
              />
            </el-select>
          </el-form-item>
        </el-col>
        </el-col> -->
        <el-col :span="12"> </el-col>
      </el-row>
    </el-form>
src/views/technology/routing/index.vue
@@ -196,7 +196,7 @@
            noShowTip: false
          },
          // 是否为主工艺
          {
          /* {
            minWidth: '120',
            prop: 'master',
            label: '主工艺',
@@ -210,7 +210,7 @@
            formatter: (row, column, cellValue) => {
              return cellValue == true ? '是' : '否'
            }
          },
          }, */
          // 状态
          {
            minWidth: '120',
@@ -300,7 +300,7 @@
            searchInfoType: 'datetimerange'
          },
          // 替代
          {
          /* {
            minWidth: '120',
            prop: 'alternativeNo',
            label: '替代',
@@ -308,9 +308,9 @@
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          }, */
          // 替代描述
          {
         /*  {
            minWidth: '120',
            prop: 'alternativeDesc',
            label: '替代描述',
@@ -318,7 +318,7 @@
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          }, */
          // 是否已同步至IFS
          // {
          //   minWidth: '120',
src/views/technology/routing/routing-form.vue
@@ -58,13 +58,13 @@
                  style="width: 280px"
                ></el-input>
              </el-form-item>
              <el-form-item prop="wireCore" label="线芯">
              <!-- <el-form-item prop="wireCore" label="线芯">
                <el-input
                  v-model="dataForm.wireCore"
                  placeholder="线芯"
                  style="width: 60px"
                ></el-input>
              </el-form-item>
              </el-form-item> -->
              <el-form-item label="BOM" prop="bomId">
                <el-select :disabled="dataForm.id != null" v-model="dataForm.bomId" placeholder="" filterable>
                  <el-option
@@ -133,9 +133,9 @@
                  >{{ dataForm.ifsSync ? '是' : '否' }}</span
                >
              </el-form-item> -->
              <el-form-item label="主工艺" prop="master">
              <!-- <el-form-item label="主工艺" prop="master">
                <el-switch v-model="dataForm.master"> </el-switch>
              </el-form-item>
              </el-form-item> -->
            </el-col>
          </el-row>
        </el-form>
@@ -277,13 +277,13 @@
                <span v-if="!editable">{{ scope.row.operationName }}</span>
              </template>
            </el-table-column>
            <el-table-column
            <!-- <el-table-column
              prop="outsideOpItem"
              label="外部工序项目"
              align="center"
              show-overflow-tooltip
            >
            </el-table-column>
            </el-table-column> -->
            <el-table-column
              prop="partName"
              label="零件"
@@ -310,7 +310,7 @@
                }}</span>
              </template>
            </el-table-column>
            <el-table-column
            <!-- <el-table-column
              prop="runTimeCodeDb"
              label="因素单位"
              align="center"
@@ -350,7 +350,7 @@
              label="劳力设置时间"
              align="center"
            >
            </el-table-column>
            </el-table-column> -->
            <el-table-column
              prop="laborClassNo"
              label="人工类别"
@@ -428,7 +428,7 @@
                </el-input>
              </div>
              <el-divider content-position="left">配置项</el-divider>
              <!-- <el-divider content-position="left">配置项</el-divider>
              <div class="node-content-config">
                <el-checkbox-group
@@ -462,7 +462,7 @@
                    >工单预留</el-checkbox-button
                  >
                </el-checkbox-group>
              </div>
              </div> -->
              <!-- <el-divider content-position="left">能力</el-divider>
              <div class="node-content">
src/views/technology/structure/index.vue
@@ -235,7 +235,7 @@
            }
          },
          // 是否为默认结构
          {
          /* {
            minWidth: '120',
            prop: 'master',
            label: '默认结构',
@@ -249,7 +249,7 @@
            formatter: (row, column, cellValue) => {
              return cellValue == true ? '是' : '否'
            }
          },
          }, */
          // 描述
          {
            minWidth: '120',
src/views/technology/structure/single-structure-form.vue
@@ -88,9 +88,9 @@
                  >{{ dataForm.ifsSync ? '是' : '否' }}</span
                >
              </el-form-item> -->
              <el-form-item label="默认结构" prop="master">
              <!-- <el-form-item label="默认结构" prop="master">
                <el-checkbox v-model="dataForm.master"></el-checkbox>
              </el-form-item>
              </el-form-item> -->
            </el-col>
          </el-row>
        </el-form>
@@ -196,7 +196,7 @@
            <el-table-column label="单位" prop="unit" align="center">
            </el-table-column>
            <el-table-column label="盘数(盘)" prop="discNum" align="center">
            <!-- <el-table-column label="盘数(盘)" prop="discNum" align="center">
              <template slot-scope="scope">
                <el-input
                  size="small"
@@ -208,7 +208,7 @@
                  scope.row.discNum
                }}</span>
              </template>
            </el-table-column>
            </el-table-column> -->
            <!-- <el-table-column label="图号" prop="drawingNumber" align="center">
            </el-table-column> -->
            <el-table-column align="center" label="操作" width="85px">
src/views/warehouse/pallettransports/index.vue
@@ -52,10 +52,15 @@
            </div>
          </div>
          <div>
            <el-table class="pallet-transports-material-table" :data="palletTransportsMaterialData" style="width: 100%;"
              height="350px" border @selection-change="palletTransportsMaterialSelectionChange" stripe
            <el-table class="pallet-transports-material-table" @current-change="handleCurrentChange"  :data="palletTransportsMaterialData" style="width: 100%;"
              height="350px" border  stripe
              ref="palletTransportsMaterialTable">
              <el-table-column type="selection" width="55"> </el-table-column>
                              <!--单选框 @selection-change="palletTransportsMaterialSelectionChange"-->
                      <el-table-column align="center"  width="55" label="单选">
                            <template slot-scope="scope">
                                <el-checkbox v-model="scope.row.commonChecked" @change="handleCurrentChange(scope.row)" ></el-checkbox>
                            </template>
                      </el-table-column>
              <el-table-column prop="partNo" label="零件号" align="center" show-overflow-tooltip>
              </el-table-column>
              <el-table-column prop="partDesc" label="零件描述" align="center" show-overflow-tooltip>
@@ -78,10 +83,10 @@
              </el-table-column>
              <el-table-column label="操作" align="center" width="100">
                <template slot-scope="scope">
                  <el-button v-show="!scope.row.canEdit" type="text" :disabled="scope.row.detailExistState"
                    @click="scope.row.canEdit = true">编辑</el-button>
                  <el-button v-show="scope.row.canEdit" type="text" :disabled="scope.row.detailExistState"
                    @click="updateMaterial(scope.row)">保存</el-button>
                  <!-- <el-button v-show="!scope.row.canEdit" type="text" :disabled="scope.row.detailExistState"
                    @click="scope.row.canEdit = true">编辑</el-button> -->
                  <!-- <el-button v-show="scope.row.canEdit" type="text" :disabled="scope.row.detailExistState"
                    @click="updateMaterial(scope.row)">保存</el-button> -->
                  <el-button type="text" :disabled="scope.row.detailExistState"
                    @click="delMaterial(scope.row)">删除</el-button>
                </template>
@@ -360,6 +365,19 @@
  },
  created() { },
  methods: {
                // 单行选中
            handleCurrentChange(row) {
                    this.palletTransportsMaterialData.forEach((item) => {
                        // 排他,每次选择时把其他选项都清除
                        if (item.id !== row.id) {
                            item.commonChecked = false
                        }else{
              item.commonChecked = true
            }
                    })
          this.palletTransportsMaterialSelectionChange([row])
          console.log(row);
            },
    // 工艺类型中文格式化
    formatStateType(row, column, cellValue) {
      this.stateOptions.forEach((obj) => {
@@ -408,7 +426,8 @@
                unit: item.unit,
                transportsId: item.transportsId,
                detailExistState: item.detailExistState,
                canEdit: false
                canEdit: false,
                commonChecked: false
              }
              this.palletTransportsMaterialData.push(palletTransportsMaterial)
            })
vue.config.js
@@ -4,6 +4,8 @@
 */
// const url = 'http://192.168.2.7:9999'
const url = 'http://192.168.32.45:9999'
//const url = 'http://192.168.2.7:9999'
//const url = 'http://192.168.32.45:9999'
// const url = 'http://192.168.0.23:9999'
//  const url = 'http://localhost:9999'