chenlu
2024-03-07 de18cca83738bdf6b279046e34b910ccd5b73a84
north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue
@@ -1,25 +1,44 @@
<script setup>
import {reactive} from "vue";
import {useRouter} from  'vue-router'
let router=useRouter()
const getTableRow = (row,type) =>{
  switch (type) {
    case 'edit' :{
      //alert('我接收到子组件传送的编辑信息')
      router.push({path: '/main/reportingWorks/ReportingWorkDetail', query: { id: row.id }})
      break
    }
    case 'delete':{
      alert('我接收到子组件传送的删除信息')
      break
    }
    case  'setType':{
      alert('我接收到子组件传送的反审状态')
      break
    }
import {onMounted, reactive, ref} from "vue";
import {useRouter} from 'vue-router'
import request from "@/utils/request";
import {ElMessage} from "element-plus";
import deepClone from "@/utils/deepClone";
import {changeFilterEvent,filterChanged} from "@/hook"
import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove";
let router = useRouter()
//定义页面总页数
let pageTotal=ref('')
//定义数据返回结果
let produceList = ref([])
//定义当前页数
let pageNum=$ref(1)
const  xGrid = ref();
let cellArea = ref()
let filterData = ref({
})
//第一次调用
request.post(`/Replenish/getSelectReplenish/${pageNum}/100`,filterData.value).then((res) => {
  if(res.code==200){
    produceList = deepClone(res.data)
    xGrid.value.loadData(produceList)
    gridOptions.loading=false
  }else{
    ElMessage.warning(res.msg)
    router.push("/login")
  }
}
})
//表尾求和
const sumNum = (list, field) => {
@@ -50,7 +69,7 @@
    useKey: true
  },
  filterConfig: {   //筛选配置项
    remote: true
    //remote: true
  },
  customConfig: {
    storage: true
@@ -61,39 +80,34 @@
    showStatus: true
  },//表头参数
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
    { type: 'checkbox',fixed:"left", title: '选择', width: 80 },
    { type: 'seq',fixed:"left", title: '自序', width: 50 },
    {field: '报工时间', width: 120,title: '报工时间', sortable: true},
    {field: '销售单号', width: 120, title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true, },
    {field: '流程卡号',width: 120, title: '流程卡号', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: '项目名称', width: 130,title: '项目名称', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: '产品名称',width: 120, title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: '报工编号', width: 100,title: '报工编号', sortable: true,showOverflow:"ellipsis"},
    {field: '序号', width: 70,title: '序号', sortable: true},
    {field: '单片名称',width: 100, title: '单片名称', sortable: true},
    {field: '楼层编号',width: 120, title: '楼层编号', sortable: true,showOverflow:"ellipsis"},
    {field: '标记', width: 80,title: '标记', sortable: true},
    {field: '片标记',width: 90, title: '片标记', sortable: true},
    {field: '流程卡数量',width: 120, title: '流程卡数量', sortable: true},
    {field: '宽',width: 80, title: '宽', sortable: true},
    {field: '高',width: 80, title: '高', sortable: true},
    {field: '面积',width: 80, title: '面积', sortable: true},
    {field: '形状',width: 80, title: '形状', sortable: true},
    {field: '次破数量',width: 120, title: '次破数量', sortable: true},
    {field: '次破类型',width: 120, title: '次破类型', sortable: true},
    {field: '次破原因',width: 120, title: '次破原因', sortable: true},
    {field: '责任设备',width: 120, title: '责任设备', sortable: true},
    {field: '报工工序',width: 120, title: '报工工序', sortable: true},
    {field: '责任工序',width: 120, title: '责任工序', sortable: true},
    {field: '责任班组',width: 120, title: '责任班组', sortable: true},
    {field: '责任人员',width: 120, title: '责任人员', sortable: true},
    {field: '质检员',width: 100, title: '质检员', sortable: true}
    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
    {field: 'select',type:'checkbox',title: '选择', width: 80,fixed:"left"},
    {type: 'seq', fixed: "left", title: '自序', width: 50},
    {field: 'reportingWorkTime', width: 120, title: '报工时间', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'orderId', width: 120, title: '销售单号', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'processId', width: 120, title: '流程卡号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'project', width: 120, title: '项目名称', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'batch', width: 80, title: '批次',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis",filterMethod:filterChanged},
    {field: 'orderSort', width: 80, title: '序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'productName', width: 120, title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'reportingWorkId', width: 120, title: '报工编号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'technologyNumber', width: 80, title: '标记',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis",filterMethod:filterChanged},
    {field: 'glassAddress', width: 90, title: '片标记', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'patchNum', width: 120, title: '次破数量', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'width', width: 80, title: '宽', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'height', width: 80, title: '高', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'shape', width: 80, title: '形状', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'patchProcesses', width: 100, title: '报工工序', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'patchType', width: 100, title: '次破类型', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'patchReason', width: 120, title: '次破原因', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'responsibleEquipment', width: 120, title: '责任设备', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'responsibleTeam', width: 120, title: '责任班组', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'qualityInsPector', width: 100, title: '质检员', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}
  ],//表头按钮
  toolbarConfig: {
    buttons: [
      {code: 'print_lck', name: '保存',status:'primary' ,icon:'vxe-icon-save'},
      {'code': 'add', 'name': '保存',status: 'primary',icon: 'vxe-icon-save'}
    ],
    import: false,
    export: true,
@@ -101,143 +115,6 @@
    zoom: true,
    custom: true
  },
  data:  [
    {
      报工时间:'2021-01-01',
      销售单号:'NG23010101',
      流程卡号:'NG23010101A01',
      项目名称:'xxxx',
      产品名称:"xxxxxxxxx",
      报工编号:"BG2301010001",
      楼层编号:"D4-010-01",
      面积:'23.11',
      报工工序:'钢化',
      质检员:"张三",
      序号:'1',
      单片名称: '6mm白玻平钢(外)',
      标记: '1',
      片标记: '(外)',
      流程卡数量: '11',
      宽: '575',
      高:"2241",
      形状: '普形',
      次破数量: '12',
      次破类型: '机器',
      次破原因:'气泡超标',
      责任工序:'中空',
      责任班组:'中空一班',
      责任人员:'',
      责任设备:'中空3#线',
    },
    {
      报工时间:'2021-01-01',
      销售单号:'NG23010101',
      流程卡号:'NG23010101A01',
      项目名称:'xxxx',
      产品名称:"xxxxxxxxx",
      报工编号:"BG2301010001",
      楼层编号:"D4-010-01",
      面积:'23.11',
      报工工序:'钢化',
      质检员:"张三",
      序号:'1',
      单片名称: '6mm白玻平钢(外)',
      标记: '1',
      片标记: '(外)',
      流程卡数量: '11',
      宽: '575',
      高:"2241",
      形状: '普形',
      次破数量: '12',
      次破类型: '机器',
      次破原因:'气泡超标',
      责任工序:'中空',
      责任班组:'中空一班',
      责任人员:'',
      责任设备:'中空3#线',
    },
    {
      报工时间:'2021-01-01',
      销售单号:'NG23010101',
      流程卡号:'NG23010101A01',
      项目名称:'xxxx',
      产品名称:"xxxxxxxxx",
      报工编号:"BG2301010001",
      楼层编号:"D4-010-01",
      面积:'23.11',
      报工工序:'钢化',
      质检员:"张三",
      序号:'1',
      单片名称: '6mm白玻平钢(外)',
      标记: '1',
      片标记: '(外)',
      流程卡数量: '11',
      宽: '575',
      高:"2241",
      形状: '普形',
      次破数量: '12',
      次破类型: '机器',
      次破原因:'气泡超标',
      责任工序:'中空',
      责任班组:'中空一班',
      责任人员:'',
      责任设备:'中空3#线',
    },
    {
      报工时间:'2021-01-01',
      销售单号:'NG23010101',
      流程卡号:'NG23010101A01',
      项目名称:'xxxx',
      产品名称:"xxxxxxxxx",
      报工编号:"BG2301010001",
      楼层编号:"D4-010-01",
      面积:'23.11',
      报工工序:'钢化',
      质检员:"张三",
      序号:'1',
      单片名称: '6mm白玻平钢(外)',
      标记: '1',
      片标记: '(外)',
      流程卡数量: '11',
      宽: '575',
      高:"2241",
      形状: '普形',
      次破数量: '12',
      次破类型: '机器',
      次破原因:'气泡超标',
      责任工序:'中空',
      责任班组:'中空一班',
      责任人员:'',
      责任设备:'中空3#线',
    },
    {
      报工时间:'2021-01-01',
      销售单号:'NG23010101',
      流程卡号:'NG23010101A01',
      项目名称:'xxxx',
      产品名称:"xxxxxxxxx",
      报工编号:"BG2301010001",
      楼层编号:"D4-010-01",
      面积:'23.11',
      报工工序:'钢化',
      质检员:"张三",
      序号:'1',
      单片名称: '6mm白玻平钢(外)',
      标记: '1',
      片标记: '(外)',
      流程卡数量: '11',
      宽: '575',
      高:"2241",
      形状: '普形',
      次破数量: '12',
      次破类型: '机器',
      次破原因:'气泡超标',
      责任工序:'中空',
      责任班组:'中空一班',
      责任人员:'',
      责任设备:'中空3#线',
    },
  ],//table body实际数据
  //脚部求和
  footerMethod ({ columns, data }) {//页脚函数
    let footList=['流程卡数量','面积','次破数量']
@@ -256,6 +133,105 @@
})
const gridEvents = {
  async toolbarButtonClick({code}) {
    const $grid = xGrid.value
    if ($grid) {
      switch (code) {
        case 'add': {
          const selectRecords = $grid.getCheckboxRecords()
          if (selectRecords.length > 0) {
            const errMap = await $grid.validate(selectRecords)
            if (errMap) {
              return
            }
          } else {
            ElMessage.warning("未选中数据")
            return
          }
          let flowData = ref({
            patchLog: selectRecords
          })
          request.post("/Replenish/saveReplenish", flowData.value).then((res) => {
            if(res.code==200){
              ElMessage.success("补片单提交成功")
              location.reload();
            }else{
              ElMessage.warning(res.msg)
              router.push("/login")
            }
          })
          break
        }
      }
    }
  },
  menuClick ({ menu, row, column }) {
    const $grid = xGrid.value
    if ($grid) {
      switch (menu.code) {
        case 'copyChecked' :{
          let result = toolbarButtonClickEvent()
          if(result){
            const dataList = xGrid.value.getTableData().visibleData
            let firstVal=null;
            if(result.cell.indexOf('.')>-1){
              firstVal = eval("dataList["+result.start +"]."+result.cell)
            }else {
              firstVal=dataList[result.start][result.cell];
            }
            dataList.forEach((item,index) =>{
              if(index>=result.start && index<=result.end){
                if(result.cell.indexOf('.')>-1){
                  const  columnArr = result.cell.split('.')
                  item[columnArr[0]][columnArr[1]]  = firstVal
                }else{
                  item[result.cell]  = firstVal
                }
              }
            })
          }
          break
        }
      }
    }
  }
}
const selectOrderList = ()=>{
  request.post(`/rework/SelectRework/${pageNum.value}/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
    if(res.code==200){
      selectDate.value = res.data.selectDate
      produceList = deepClone(res.data.data)
      xGrid.value.loadData(produceList)
      gridOptions.loading=false
    }else{
      ElMessage.warning(res.msg)
      router.push("/login")
    }
  })
}
//页脚跳转
const handlePageChange = ({ currentPage, pageSize }) => {
  total.pageTotal = pageSize
  pageNum.value=currentPage
  selectOrderList()
}
</script>
@@ -265,10 +241,10 @@
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
        v-on="gridEvents"
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->