chenlu
2024-03-01 a8dfd464f4a7edd0c55808c1271873268c6c5290
north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue
@@ -4,9 +4,16 @@
import {useRouter} from 'vue-router'
import request from "@/utils/request";
import {ElMessage} from "element-plus";
import deepClone from "@/utils/deepClone";
import {Search} from "@element-plus/icons-vue";
import useUserInfoStore from "@/stores/userInfo";
import {changeFilterEvent,filterChanged} from "@/hook"
const userStore = useUserInfoStore()
const username = userStore.user.userName
const userid = userStore.user.userId
let router = useRouter()
const dateValue = ref("");//查询日期
let produceList = ref([])
const dialogFormVisible = ref(false)
const formLabelWidth = '140px'
/*编辑弹窗显示数据*/
@@ -20,8 +27,6 @@
  resource: '',
  desc: '',
})
const getTableRow = (row, type) => {
  switch (type) {
    case 'edit' : {
@@ -40,6 +45,39 @@
    }
  }
}
let pageNum=ref(1)
let total = reactive({
  pageTotal : 0,
  dataTotal : 0,
  pageSize : 10
})
let selectDate = ref(["",""])
//筛选条件,有外键需要先定义明细里面的数据
let filterData = ref({
})
//第一次调用
request.post(`/rework/SelectRework/1/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
  if(res.code==200){
    total.dataTotal = res.data.total.total*1
    total.pageTotal= res.data.total.pageTotal
    selectDate.value = res.data.selectDate
    pageNum.value=1
    produceList = deepClone(res.data.data)
    xGrid.value.loadData(produceList)
    gridOptions.loading=false
  }else{
    ElMessage.warning(res.msg)
    router.push("/login")
  }
})
//表尾求和
const sumNum = (list, field) => {
@@ -70,7 +108,7 @@
    useKey: true
  },
  filterConfig: {   //筛选配置项
    remote: true
   // remote: true
  },
  customConfig: {
    storage: true
@@ -82,199 +120,144 @@
  },//表头参数
  columns: [
    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
    {title: '操作', width: 110, slots: {default: 'button_slot'}, fixed: "left"},
    {type:'checkbox',title: '选择', width: 80,fixed:"left"},
    {type: 'seq', fixed: "left", title: '自序', width: 50},
    {field: 'reworkTeam', width: 120, title: '返工班组'},
    {
      field: 'order.orderId',
      width: 120,
      title: '销售单号',
      showOverflow: "ellipsis",
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'}
    },
    {
      field: 'reportingWork.processId',
      width: 120,
      title: '流程卡号',
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'}
    },
    {field: 'order.project', width: 120, title: '项目名称', filters: [{data: ''}], slots: {filter: 'num1_filter'}},
    {field: 'order.batch', width: 80, title: '批次', showOverflow: "ellipsis"},
    {field: 'orderNumber', width: 80, title: '序号'},
    {field: 'orderGlassDetail.glassChild', width: 120, title: '单片名称'},
    {field: 'orderGlassDetail.technologyNumber', width: 80, title: '标记', showOverflow: "ellipsis"},
    {field: 'orderGlassDetail.glassAddress', width: 90, title: '片标记'},
    {field: 'breakageNumber', width: 80, title: '数量'},
    {field: 'orderGlassDetail.childWidth', width: 80, title: '宽'},
    {field: 'orderGlassDetail.childHeight', width: 80, title: '高'},
    {field: 'orderDetail.shape', width: 80, title: '形状'},
    {field: 'breakageType', width: 100, title: '返工类型'},
    {field: 'breakageReason', width: 120, title: '返工原因'},
    {field: 'responsibleEquipment', width: 120, title: '责任设备'},
    {field: 'responsibleTeam', width: 120, title: '责任班组'},
    {field: 'reworkArea', width: 120, title: '返工面积'},
    {field: 'returnProcess', width: 120, title: '返工工序'},
    {field: 'qualityInspector', width: 100, title: '质检员'},
    {field: 'reworkTime', width: 100, title: '返工时间'},
    {field: 'reworkUpdateTime', width: 120, title: '返工审核时间'}
    {field: 'review_status',title: '审核', width: 40, slots: { default: 'state' }},
    {field: 'rework_id', width: 120, title: '返工单号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_team', width: 120, title: '返工班组', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'order_id', width: 120, title: '销售单号', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'process_id', width: 120, title: '流程卡号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'project', width: 120, title: '项目名称', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'batch', width: 80, title: '批次', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'order_sort', width: 80, title: '序号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'product_name', width: 120, title: '单片名称', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'technology_number', width: 80, title: '标记', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'glass_address', width: 90, title: '片标记', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_num', width: 80, title: '数量', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'width', width: 80, title: '宽', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'height', width: 80, title: '高', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'shape', width: 80, title: '形状', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_type', width: 100, title: '返工类型', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_reason', width: 120, title: '返工原因', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'responsible_equipment', width: 120, title: '责任设备', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'responsible_team', width: 120, title: '责任班组', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_area', width: 120, title: '返工面积', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_processes', width: 120, title: '返工工序', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'quality_inspector', width: 100, title: '质检员', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'reviewer', width: 100, title: '审核员', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'create_time', width: 100, title: '返工时间'},
    {field: 'update_time', width: 120, title: '返工审核时间'}
  ],//表头按钮
  toolbarConfig: {
    // buttons: [{
    //
    // }],
    import: false,
    buttons: [{
      'name': '审核',status: 'primary',
      'code':'add'
    }],
    /*import: false,
    export: true,
    print: true,
    print: true,*/
    zoom: true,
    custom: true
  },
  data: null,//table body实际数据
  //脚部求和
  footerMethod({columns, data}) {//页脚函数
    let footList = ['number', 'area']
    return [
  footerMethod ({ columns, data }) {//页脚函数
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
          return `合计`
        }
        if (footList.includes(column.field)) {
          return sumNum(data, column.field)
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
        // }
        return ''
      })
    ]
  }, mergeFooterItems: [
    {row: 0, col: 0, rowspan: 1, colspan: 2}
  ],//合并脚
  }
})
const gridEvents = {
  toolbarButtonClick ({ code }) {
    const $grid = xGrid.value
    if ($grid) {
      switch (code) {
        case 'add': {
          const $table = xGrid.value
          //gridOptions.columns.unshift(a)
          if ($table) {
            const selectRecords = $table.getCheckboxRecords()
/*查询*/
const queryData = () => {
            let flowData = ref({
  if (dateValue.value === "") {
    MessageShow("未选择时间,请选择时间后再次进行查询", "warning");
    return;
  }
              userId:userid,
              userName:username,
              rework:selectRecords
  request.post(`/reportData/rework/manage/query/1/100/${dateValue.value[0]}/${dateValue.value[1]}`).then((res) => {
            })
            request.post("/rework/updateRework",flowData.value).then((res) => {
              if(res.code==200){
                ElMessage.success("审核成功")
                location.reload();
              }else{
                ElMessage.warning(res.msg)
                router.push("/login")
              }
            })
          }
          return;
        }
    console.log(res);
    //MessageShow(res);
    if (res.code === 200 || res.code === '200') {
      pageTotal.value = res.data.total
      }
    }
  },
      MessageShow(res.data.data.total)
      xGrid.value.loadData(res.data.data)
}
      gridOptions.loading = false
    } else {
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")
    }
  })
}
//筛选条件,有外键需要先定义明细里面的数据
let filterData = ref({})
//定义页面总页数
let pageTotal = ref('')
//定义数据返回结果
let produceList = ref([])
//定义当前页数
let pageNum = $ref(1)
let pageState = null
//定义滚动条高度
let scrollTop = ref(null)
let scrollHeight = ref(null)
let clientHeight = ref(null)
const scrollEvnt = (row) => {
  // 内容高度
  scrollTop.value = row.$event.target.scrollTop
  scrollHeight.value = row.$event.target.scrollHeight
  clientHeight.value = row.$event.target.clientHeight
const changeDate =  ()=>{
  selectOrderList()
}
/*时间框快速选择*/
const shortcuts = [
  {
    text: '近一周',
    value: () => {
      const end = new Date()
      const start = new Date()
      start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
      return [start, end]
    },
//页脚跳转
const handlePageChange = ({ currentPage, pageSize }) => {
  total.pageTotal = pageSize
  pageNum.value=currentPage
  selectOrderList()
}
const checkBoxConfig = {
  checkMethod: ({ row }) => {
    if (row['review_status']===1){
      return row.disable
    }else{
      return !row.disable
    }
  },
  {
    text: '近一个月',
    value: () => {
      const end = new Date()
      const start = new Date()
      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
      return [start, end]
    },
  },
  {
    text: '近三个月',
    value: () => {
      const end = new Date()
      const start = new Date()
      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
      return [start, end]
    },
  },
]
const MessageShow = (content, type = 'success') => {
  ElMessage({
    message: content,
    type: type,
    showClose: true,
  })
  reserve:true
}
/*使用筛选,后端获取数据*/
const changeFilterEvent = (event, option, $panel,) => {
  // 手动触发筛选
  $panel.changeOption(event, !!option.data, option)
}
function filterChanged(column) {
  /*gridOptions.loading=true
 //筛选条件发生变化条件发生变化
 let value = column.datas[0]!=undefined?column.datas[0]:''
 value = value.trim()
 //判断是否存在外键
 if (column.property.indexOf('.')>-1){
   const  columnArr = column.property.split('.')
   filterData.value[columnArr[0]] = {
     [columnArr[1]]:value
   }
 }else{
   filterData.value[column.property] = value
 }
request.post("/product/1/100/"+productGlassTypeStore.GlassType,filterData.value).then((res) => {
   if(res.code==200){
     pageTotal.value=res.data.total
     pageNum=1
     produceList = deepClone(res.data.data)
     xGrid.value.loadData(produceList)
     gridOptions.loading=false
   }else{
     ElMessage.warning(res.msg)
   }
 })*/
}
</script>
@@ -282,36 +265,27 @@
<template>
  <div class="main-div-customer">
    <el-header height="auto" style="padding: 0;margin:0">
      <el-row :gutter="0" style="margin-bottom: 5px">
        <el-col :span="7">
          <el-date-picker
              v-model="dateValue"
              type="daterange"
              unlink-panels
              range-separator="-"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
              :shortcuts="shortcuts"
              format="YYYY-MM-DD"
              value-format="YYYY-MM-DD"
              width:99%
          />
        </el-col>
      <el-date-picker
          v-model="selectDate"
          type="daterange"
          start-placeholder="开始时间"
          end-placeholder="结束时间"
          format="YYYY-MM-DD"
          value-format="YYYY-MM-DD"
        <el-col :span="2">
          <el-button type="primary" @click="queryData()">查询</el-button>
        </el-col>
      </el-row>
      />
      <el-button @click="changeDate" style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">查询</el-button>
    </el-header>
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
        @scroll="scrollEvnt"
        v-on="gridEvents"
        :checkbox-config="checkBoxConfig"
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
@@ -339,6 +313,23 @@
        </div>
      </template>
      <template #state="{ row,column}">
        <el-checkbox @click.native.prevent  :checked="row[column.field]===1"/>
      </template>
      <template #pager>
        <!--使用 pager 插槽-->
        <vxe-pager
            @page-change="handlePageChange"
            :layouts="[  'PrevPage', 'Jump','PageCount', 'NextPage',  'Total']"
            v-model:current-page="pageNum"
            v-model:page-size="total.pageSize"
            v-model:pager-count="total.pageTotal"
            :total="total.dataTotal"
        >
        </vxe-pager>
      </template>
    </vxe-grid>