licp
2024-03-11 5e18bf58d03f4b6830afddb92af9079dcc5587e2
Merge branch 'master' of http://114.132.189.42:9002/r/mes-ocea-before into master
已修改6个文件
241 ■■■■ 文件已修改
src/api/plan/customerorder.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/technology/completeproductstructure.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/plan/customerorder/index.vue 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/quality/rawMaterial/rawMaterial-form.vue 105 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/quality/rawMaterial/testValue-select.vue 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/technology/completeproductstructure/index.vue 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/plan/customerorder.js
@@ -266,7 +266,7 @@
export function downloadProduct(data){
    return request({
        url: '/mes/plan/customerOrder/downloadProduct',
        url: '/mes/plan/customerOrder/getProduct',
        method: 'post',
        responseType: 'blob',
        data: data
src/api/technology/completeproductstructure.js
@@ -90,3 +90,12 @@
    data: obj
  })
}
export function exportBom(obj) {
  return request({
    url: '/mes/bom/exportBom',
    method: 'post',
    data: obj,
    responseType: 'blob'
  })
}
src/views/plan/customerorder/index.vue
@@ -586,7 +586,7 @@
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text',
            searchInfoType: 'date',
            formatter: this.formatDutyDate,
          },
          {
@@ -1036,20 +1036,24 @@
        permitArr: [],
      })
    }
    this.table.toolbar.push({
        text: '下载工艺文件',
        disabled: false,
        type: 'primary',
        fun: this.downloadWord,
        permitArr: ['03plan','04planed'],
    })
    this.table.toolbar.push({
        text: '下载排产单',
        disabled: false,
        type: 'primary',
        permitArr: [],
        fun: this.downloadProductionScheduling,
    })
    if(this.permissions.plan_download_process_file){
        this.table.toolbar.push({
            text: '下载工艺文件',
            disabled: false,
            type: 'primary',
            fun: this.downloadWord,
            permitArr: ['03plan','04planed'],
        })
    }
    if(this.permissions.plan_download_product_file){
        this.table.toolbar.push({
            text: '下载排产单',
            disabled: false,
            type: 'primary',
            permitArr: [],
            fun: this.downloadProductionScheduling,
        })
    }
    this.table.toolbar.push({
      text: '关联订单',
      disabled: false,
@@ -1130,7 +1134,7 @@
            this.$message.error("请选择一条数据")
            return
        }
        downloadProduct({ids: ids}).then(res=>{
        downloadProduct(ids).then(res=>{
            if(res.status===200){
                transform(res)
            }
src/views/quality/rawMaterial/rawMaterial-form.vue
@@ -177,30 +177,22 @@
                      <el-table-column prop="testValue" label="检测值" min-width="160" v-for="(item,index) in empiricalValueAdd" :key="index">
                        <template slot-scope="scope">
                          <div v-if="!scope.row.children">
                          <el-tooltip :disabled="scope.row.deviceId != null" class="item" effect="dark" content="请先选择设备!" placement="top-start">
                            <el-dropdown>
                            <el-input placeholder="检测值"/>
                            <i style="line-height: normal;padding: 10px 7px;" class="el-icon-arrow-down el-icon--right"></i>
                            <el-dropdown-menu slot="dropdown">
                                <el-dropdown-item>黄金糕</el-dropdown-item>
                                <el-dropdown-item>狮子头</el-dropdown-item>
                                <el-dropdown-item>螺蛳粉</el-dropdown-item>
                                <el-dropdown-item>双皮奶</el-dropdown-item>
                                <el-dropdown-item>蚵仔煎</el-dropdown-item>
                            </el-dropdown-menu>
                            </el-dropdown>
                            <!-- <el-autocomplete clearable
                            :disabled="scope.row.deviceId == null ||  (dataForm.id!=null&&(resultVal!=null && resultVal!=''))"
                            @blur.stop="changeState(scope.row,scope.$index)"
                            @select="changeState(scope.row,scope.$index)"
                            v-model="scope.row.testValueList[index]"
                            :fetch-suggestions="querySearch"
                            placeholder="请输入或选择检测值" >
                            <i style="line-height: normal;padding: 10px 7px;" class="el-icon-arrow-down" slot="suffix"></i>
                            <template slot-scope="{ item }">
                                <div>{{ item.value }}</div>
                            </template>
                            </el-autocomplete> -->
                            <!-- :disabled="scope.row.deviceId == null ||  (dataForm.id!=null&&(resultVal!=null && resultVal!=''))" -->
                                <!-- @input="$nextTick(()=>{checkTestValues(scope.row)})" -->
                                <!-- @blur.capture.native="changeState(scope.row)" -->
                            <el-tooltip :disabled="scope.row.deviceId != null" class="item" effect="dark" content="请先选择设备!" placement="top-start">
                                <el-autocomplete clearable
                                cache="false"
                                ref="testValueInput"
                                @blur="checkTestValues(scope.row,'blur',$event)"
                                @select="checkTestValues(scope.row,'select',$event)"
                                v-model="scope.row.testValueList[index]"
                                :fetch-suggestions="querySearch"
                                placeholder="请输入或选择检测值" >
                                <template slot-scope="{ item }">
                                    <div>{{ item.value }}</div>
                                </template>
                                </el-autocomplete>
                            </el-tooltip>
                          </div>
                        </template>
@@ -225,7 +217,7 @@
                      <el-table-column prop="note" label="检验描述" width="160" >
                        <template slot-scope="scope">
                          <div v-if="!scope.row.children">
                            <el-input @blur="changeState(scope.row, scope.$index)" :disabled="scope.row.deviceId == null ||  (dataForm.id!=null&&(resultVal!=null && resultVal!=''))" v-model="scope.row.note" placeholder="检验描述"></el-input>
                            <el-input @blur="checkTestValues(scope.row,'blur',$event)" :disabled="scope.row.deviceId == null ||  (dataForm.id!=null&&(resultVal!=null && resultVal!=''))" v-model="scope.row.note" placeholder="检验描述"></el-input>
                          </div>
                        </template>
                      </el-table-column>
@@ -415,11 +407,10 @@
  import rawMaterialPartDialog from '@/views/common/rawMaterial-part'
  import { getStore } from '@/util/store'
  import qrCodeApp from '@/views/common/qrCodeApp'
  import transformImage from '@/util/fileTransform'
  export default {
  components:{
    rawMaterialPartDialog,
    qrCodeApp
    qrCodeApp,
  },
    computed:{},
    data(){
@@ -485,7 +476,7 @@
            }],
            dataRule: {
              code:[{ required: true, message: '请扫描选择零件', trigger: 'blur' }],
              createTime: [{ required: true, message: '请选择报检日期', trigger: 'change' }]
              createTime: [{ required: true, message: '请选择报检日期', trigger: 'blur' }]
            },
            deviceList: [],
        }
@@ -748,7 +739,7 @@
              required: null,
              rpId: null,
              name: null,
              unit: 'mm',
              unit: '',
              userName: null,
              testValue: '',
              testValueList: [],
@@ -891,27 +882,38 @@
        console.log(e,e.target.tabIndex);
        console.log(e.target.value);
      },
      changeState(row, index) {
        this.$nextTick(()=>{
            if(row){
                let isTrue = true
                for(var i=0;i<row.testValueList.length;i++){
                    let val = row.testValueList[i]
                    if(!['是','否'].includes(val)){
                        let reg = /(^-?[0-9]{1,6}$)|(^-?[0-9]{1,6}[\.]{1}[0-9]{1,3}$)/
                        if(!reg.test(val)){
                          row.testValueList = ''
                          this.$message.error("请输入6位数字或选择是否")
                          isTrue = false
      checkTestValues(row,currentOption,event){
          if(row){
              let isTrue = true
              if(currentOption==='blur'){
                  let targetVal = event.target.value
                  if( (targetVal && ['是','否'].includes(targetVal)) || !targetVal){
                    isTrue = false
                  }else{
                      for(var i=0;i<row.testValueList.length;i++){
                          let val = row.testValueList[i]
                          if(val != '' && val != null){
                              if(!['是','否'].includes(val)){
                                  let reg = /(^-?[0-9]{1,6}$)|(^-?[0-9]{1,6}[\.]{1}[0-9]{1,3}$)/
                                  if(!reg.test(val)){
                                    row.testValueList[i] = ''
                                    event.target.value = ''
                                    this.$message.error("请输入6位数字或选择是否")
                                    isTrue = false
                                }
                            }
                          }
                      }
                  }
                }
                if(!isTrue){
                    return
                }
            }
            console.log(row.testValueList.join(","));
            return
              }
              if(!isTrue){
                  return
              }
              this.changeState(row)
          }
      },
      changeState(row) {
          this.$nextTick(()=>{
            if (row.rpId != null && row.rpId != '') {
                let val = row.testValueList.join(",")
                if (val === undefined || val === '' || val === null) {
@@ -1205,6 +1207,13 @@
  border: 1px solid #e4e7ed;
  border-bottom: none;
}
.dropdown{
    position: relative;
    right: 30px;
    top: 5px;
    color: #C0C4CC;
    font-size: 14px;
}
@media (max-width: 767px) {
  .pad-addcol-btn{
    font-size:12px;
src/views/quality/rawMaterial/testValue-select.vue
@@ -1,13 +1,71 @@
<!-- 原材料检验-检测值输入框组件 -->
<template>
    <el-select v-model="selectedValue" @change="handleChange" clearable>
        <el-option
        v-for="item in options"
        :key="item.value"
        :label="item.label"
        :value="item.value"
        ></el-option>
        <el-input
        v-model="inputValue"
        slot="prefix"
        placeholder="自定义输入"
        @input="handleInput"
        ></el-input>
  </el-select>
</template>
<script>
export default {
    props:{
        value: {
            type: [String, Number],
            default: ''
        },
        options: {
            type: Array,
            default: () => []
        }
    },
    data(){
        return {
            selectedValue: '',
            inputValue: '',
            // options: [{
            //     label:'是',
            //     value: '是'
            // },{
            //     label:'否',
            //     value: '否'
            // }]
        }
    },
    created() {
    this.selectedValue = this.value;
  },
  watch: {
    value(newValue) {
      this.selectedValue = newValue;
    }
  },
  methods: {
    handleChange(value) {
      this.$emit('input1', value);
    },
    handleInput(value) {
      this.$emit('input1', value);
    }
  }
}
</script>
<style>
<style scope>
    .dropdown{
        position: relative;
        right: 30px;
        top: 5px;
        color: #C0C4CC;
        font-size: 14px;
    }
</style>
src/views/technology/completeproductstructure/index.vue
@@ -21,11 +21,13 @@
  fetchList,
  delObj,
  addByStructure,
  exportBom
} 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'
import { transform } from '@/util/fileTransform'
export default {
  data() {
@@ -292,7 +294,14 @@
        permitArr: [],
        fun: ()=>{this.deleteAll()},
      })
    }
    }
    this.table.toolbar.push({
        text: 'BOM导出',
        type:'primary',
        disabled: false,
        permitArr: [],
        fun: ()=>{this.exportBomFun()},
      })
    if(this.permissions.technology_completeproductstructure_del){
        this.table.operator = [
          {
@@ -317,6 +326,20 @@
    }
  },
  methods: {
    exportBomFun(){
        let ids = this.multipleSelection.map(ele=>ele.id)
        if(ids.length<1){
            this.$message.error("请选择一条数据")
            return
        }
        exportBom(ids).then(res=>{
            if(res.status===200){
                transform(res)
            }
        }).catch(error=>{
            console.error(error)
        })
    },
    getBomTypeDbOptions() {
      remote('bom_type_db').then((response) => {
        if (response.data.code === 0) {