廖井涛
2024-03-11 15f335a0553bbc56c23a1eea9548e53b8fdbcb87
north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue
@@ -43,6 +43,7 @@
}
let flag = $ref(true)
function intoCreateProduct(){
  if(flag){
    router.push(`/main/processCard/SplittingDetails?orderId=${orderId}`)
@@ -91,6 +92,8 @@
let orderId = route.query.orderId
let productionId = route.query.productionId
//第一次加载数据
request.post(`/processCard/selectNoCard/${orderId}/${productionId}`, filterData.value).then((res) => {
@@ -114,7 +117,6 @@
function padLeftZero(str) {
  return ('00' + str).substr(str.length)
}
/*后端返回结果多层嵌套展示*/
@@ -165,10 +167,39 @@
  },//表头参数
  columns: [
    {type: 'checkbox', fixed: "left", title: '选择'},
    {field: 'orderNumber', title: '订序', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'shape', title: '形状', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'width', title: '宽', sortable: true, filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged,width:'60px'},
    {field: 'height', title: '高', sortable: true, filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged,width:'60px'},
    {
      field: 'orderNumber',
      title: '订序',
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'shape',
      title: '形状',
      showOverflow: "ellipsis",
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'width',
      title: '宽',
      sortable: true,
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged,
      width: '60px'
    },
    {
      field: 'height',
      title: '高',
      sortable: true,
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged,
      width: '60px'
    },
    {field: 'baiscQuantity', title: '待分数量', showOverflow: "ellipsis",width:'60px'},
    {field: 'computeGrossArea', title: '待分面积',width:'60px'},
    {field: 'totalThickness', title: '总厚度',width:'80px'},
@@ -189,7 +220,7 @@
  data: [],//table body实际数据
  //脚部求和
  footerMethod({columns, data}) {//页脚函数
    let footList = ['baiscQuantity', 'computeGrossArea', 'totalThickness','thickness', 'weight']
    let footList = ['', '', '', '', '']
    return [
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
@@ -204,7 +235,6 @@
  }
})
//左侧子组件接收参数
const xGridLeft = ref()
@@ -238,7 +268,14 @@
  },//表头参数
  columns: [
    {type: 'checkbox', fixed: "left", title: '选择'},
    {field: 'processId', title: '流程卡号', filters: [{data: ''}], slots: {filter: 'num1_filter'}, width: 130,filterMethod:filterChanged},
    {
      field: 'processId',
      title: '流程卡号',
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      width: 130,
      filterMethod: filterChanged
    },
    {
      field: 'orderNumber',
      title: '订序',
@@ -247,7 +284,13 @@
      slots: {filter: 'num1_filter'}
      ,filterMethod:filterChanged
    },
    {field: 'landingSequence', title: '小片顺序', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {
      field: 'landingSequence',
      title: '小片顺序',
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {field: 'shape', title: '形状', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'width', title: '宽', showOverflow: "ellipsis"},
    {field: 'height', title: '高'},
@@ -268,7 +311,7 @@
  data: [],//table body实际数据
  //脚部求和
  footerMethod({columns, data}) {//页脚函数
    let footList = ['总数量', '总面积', '分箱数']
    let footList = ['']
    return [
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
@@ -287,6 +330,7 @@
const createProcessCard = () => {
  const $grid = xGrid.value
  const checkedList = $grid.getCheckboxRecords()
  if (checkedList.length === 0) {
    ElMessage.warning("请先选择右侧数据")
    return
@@ -308,9 +352,12 @@
  checkedList.forEach((item)=>{
    delete item._X_ROW_KEY
  })
  $gridLeft.insertAt(checkedList)
  $grid.remove(checkedList)
  if ($gridLeft || $grid) {
    $gridLeft.clearCheckboxRow()
    $grid.clearCheckboxRow()
  }
}
let checkedNum = ref('')
@@ -356,6 +403,9 @@
        } else {
          //右边表格没有此条数据则往右边表格插入数据
          item.baiscQuantity = checkedNum.value
          if (item.quantity === 0) {
            $gridLeft.remove(item)
          }
          $grid.insert(item)
        }
      })
@@ -374,8 +424,11 @@
        $gridLeft.remove(item)
      })
    }
    }
    $gridLeft.clearCheckboxRow()
    $grid.clearCheckboxRow()
  } catch (e) {
    ElMessage.warning(e.message)
  }
@@ -392,7 +445,7 @@
    //获取左边表格checkbox选中的数据
    const checkedListLeft = $gridLeft.getCheckboxRecords()
    //判断右边表格是否有选中的数据
    if (checkedList.length === 0) {
    if (checkedList.length * 1 === 0) {
      ElMessage.warning("请先选择右侧数据")
      return
    }
@@ -409,12 +462,17 @@
    if (/^[1-9]\d*$/.test(checkedNum.value)) {
      checkedList.forEach((item) => {
        //判断可用数量是否大于等于输入的数量,不满足则抛出异常
        if (item.baiscQuantity < checkedNum.value) throw new Error("请输入小于等于可用数量的数字");
        if (item.baiscQuantity * 1 < checkedNum.value * 1) throw new Error("请输入小于等于可用数量的数字");
        item.baiscQuantity = item.baiscQuantity - checkedNum.value
        //定义key值保持
        let key = item._X_ROW_KEY
        //左边表格数据
        let leftData = $gridLeft.getTableData().fullData
        //左边表格数据中查找当前数据下标
        let filterIndex = leftData.findIndex(item1 => item1.orderNumber === item.orderNumber)
        //判断右侧勾选值与左侧是否相同
        if (checkedListLeft[0].orderNumber === item.orderNumber) {
        //如果右边表格数据中存在当前数据则数量相加
        if (filterIndex >= 0) {
          leftData[filterIndex].quantity = leftData[filterIndex].quantity * 1 + checkedNum.value * 1
@@ -422,28 +480,82 @@
          if (item.baiscQuantity === 0) {
            $grid.remove(checkedList)
          }
            //delete item._X_ROW_KEY
        } else {
          item.quantity = checkedNum.value
          item.processId = checkedListLeft[0].processId
          item.landingSequence = checkedListLeft[0].landingSequence
          delete item._X_ROW_KEY
          $gridLeft.insert(item)
            item._X_ROW_KEY = key
          }
        } else {
          // if (){
          //
          // }
          //如果勾选两个值不同则插入同流程卡
          item.quantity = checkedNum.value
          item.processId = checkedListLeft[0].processId
          item.landingSequence = checkedListLeft[0].landingSequence
          if (item.baiscQuantity === 0) {
            $grid.remove(checkedList)
          }
          for (let i = 0; i < leftData.length; i++) {
            if (leftData[i].orderNumber === item.orderNumber && leftData[i].processId === item.processId) {
              leftData[i].quantity = leftData[i].quantity * 1 + checkedNum.value * 1
              break
            } else if (leftData[i].orderNumber === item.orderNumber && leftData[i].processId !== item.processId) {
              delete item._X_ROW_KEY
              $gridLeft.insert(item)
              item._X_ROW_KEY = key
              break
            }
            else if (leftData[i].orderNumber !== item.orderNumber && leftData[i].processId !== item.processId) {
              delete item._X_ROW_KEY
              $gridLeft.insert(item)
              item._X_ROW_KEY = key
              break
            }
          }
          // leftData.forEach((items) => {
          //   console.log(items.processId, item.processId,"——————",items.orderNumber, item.orderNumber)
          //   if (items.orderNumber === item.orderNumber && items.processId===item.processId) {
          //     console.log("测试333")
          //
          //   }
          //   else{
          //
          //   }
          //
          // })
        }
      })
    } else if (checkedNum.value === '') {//判断数量输入框有无输入数字
    } else if (checkedNum.value === '') {//判断数量输入框无输入数字
      checkedList.forEach((item) => {
        item.processId = checkedListLeft[0].processId
        item.landingSequence = checkedListLeft[0].landingSequence
        item.quantity = checkedListLeft[0].baiscQuantity
        delete item._X_ROW_KEY
      })
      $gridLeft.insertAt(checkedList)
      $grid.remove(checkedList)
    }
    if ($gridLeft || $grid) {
      $gridLeft.clearCheckboxRow()
      $grid.clearCheckboxRow()
    }
  } catch (e) {
    ElMessage.warning(e.message)
  }
}
//保存流程卡数据
const gridEvents = {
@@ -475,7 +587,10 @@
              if (res.code == 200) {
                ElMessage.success("保存成功")
                //router.push('/main/processCard/SplittingDetails?orderId=${orderId}')
                  router.push({path: '/main/processCard/AddProcessCard', query: {orderId: orderId,productionId:productionId,random:Math.random()}})
                router.push({
                  path: '/main/processCard/AddProcessCard',
                  query: {orderId: orderId, productionId: productionId, random: Math.random()}
                })
                //location.reload();
              } else {
@@ -502,12 +617,12 @@
      <div class="header" style="height: 5%;width: 100%">
        <el-button
            style="float: left"
            @click="intoCreateProduct"
            id="searchButton1"
            type="primary"
            :icon="ArrowLeftBold"
            round>
            round
            style="float: left"
            type="primary"
            @click="intoCreateProduct">
          {{ flag ? '返回' : '返回' }}
        </el-button>
        <!--      <el-button  type="primary">保存分架</el-button>-->
@@ -519,9 +634,9 @@
      <el-container style="height: 100%;width: 100%">
        <el-aside style="width: 44%;height: 100%" >
          <vxe-grid
              max-height="100%"
              class="mytable-scrollbar"
              ref="xGridLeft"
              class="mytable-scrollbar"
              max-height="100%"
              v-bind="gridLeftOptions"
              v-on="gridEvents"
          >
@@ -540,15 +655,15 @@
            </template>
            <!--左边固定显示的插槽-->
            <template #button_slot="{ row }">
              <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">打印</el-button>
              <el-button @click="getTableRow(row,'setType')" link type="primary" size="small">排版</el-button>
              <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button>
              <el-button link size="small" type="primary" @click="getTableRow(row,'edit')">打印</el-button>
              <el-button link size="small" type="primary" @click="getTableRow(row,'setType')">排版</el-button>
              <el-button link size="small" type="primary" @click="getTableRow(row,'delete')">删除</el-button>
            </template>
            <template #num1_filter="{ column, $panel }">
              <div>
                <div v-for="(option, index) in column.filters" :key="index">
                  <input type="text"
                         v-model="option.data"
                  <input v-model="option.data"
                         type="text"
                         @input="changeFilterEvent($event, option, $panel)"/>
                </div>
              </div>
@@ -561,14 +676,14 @@
        <div width="12%">
          <el-main  style="">
            <span>选中数量:<el-input type="number" v-model="checkedNum"></el-input></span><br>
            <span>选中数量:<el-input v-model="checkedNum" clearable type="number"></el-input></span><br>
            <el-button type="primary" @click="addRight"> →</el-button>
            <br>
            <br>
            <el-button type="primary" @click="addLeft"> ←</el-button>
            <br>
            <br>
            <el-button @click="createProcessCard" type="primary">建立流程卡</el-button>
            <el-button type="primary" @click="createProcessCard">建立流程卡</el-button>
          </el-main>
        </div>
@@ -579,9 +694,9 @@
        <el-aside style="width: 100%;height: 100%">
          <vxe-grid
              max-height="100%"
              class="mytable-scrollbar"
              ref="xGrid"
                class="mytable-scrollbar"
                max-height="100%"
              v-bind="gridOptions"
          >
            <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
@@ -601,8 +716,8 @@
            <template #num1_filter="{ column, $panel }">
              <div>
                <div v-for="(option, index) in column.filters" :key="index">
                  <input type="text"
                         v-model="option.data"
                    <input v-model="option.data"
                           type="text"
                         @input="changeFilterEvent($event, option, $panel)"/>
                </div>
              </div>