NNowhZzU
2023-12-27 97c3f97a11524d8bacc6d36cf2ec4e3b93b5c277
Merge remote-tracking branch 'origin/master'

# Conflicts:
# north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/Create.vue
4个文件已添加
49个文件已修改
1个文件已删除
1 文件已重命名
6682 ■■■■■ 已修改文件
north-glass-erp/.idea/dataSources.local.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/workspace.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/basic/BasicTable.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/basic/product/GlassType.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/product/GlassType.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/hook/index.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/router/index.js 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/stores/sd/product/prduct.js 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/stores/sd/product/productGlassType.js 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredient/CreateIngredients.vue 282 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredient/Ingredients.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredient/SelectIngredients.vue 327 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/AccessoriesMonthlySettlement.vue 324 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/CreateOutBound.vue 225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/IngredientsStock.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/MaterialOutbound.vue 244 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/OriginalMonthlySettlement.vue 312 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue 471 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue 397 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue 338 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue 457 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductReturn.vue 251 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductRework.vue 330 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocation.vue 322 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStock.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue 563 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainTrader/CreateTrader.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainTrader/SelectTrader.vue 371 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainTrader/Trader.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/PurchaseOrder.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/Select.vue 427 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/stockReport/StockReport.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/BOM/OrderBOMDetails.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCard.vue 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/ProductionScheduling.vue 285 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/ReShelving.vue 203 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SplittingDetails.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/customer/Customer.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/Delivery.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/Order.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/product/Product.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue 240 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/returns/Returns.vue 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/common/Result.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/common/interceptor/JwtInterceptor.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/sd/ProductController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/ProductMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/ProductService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/application.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/Product.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/application.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/sd/Product.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/dataSources.local.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="dataSourceStorageLocal" created-in="IU-232.8660.185">
  <component name="dataSourceStorageLocal" created-in="IU-232.9559.62">
    <data-source name="@localhost [2]" uuid="165c5447-d19a-4aaf-af5f-cee92ae696c2">
      <database-info product="MySQL" version="8.0.22" jdbc-version="4.2" driver-name="MySQL Connector/J" driver-version="mysql-connector-java-8.0.25 (Revision: 08be9e9b4cba6aa115f9b27b215887af40b159e0)" dbms="MYSQL" exact-version="8.0.22" exact-driver-version="8.0">
        <extra-name-characters>#@</extra-name-characters>
north-glass-erp/.idea/workspace.xml
@@ -104,7 +104,7 @@
      <command value="length" />
    </option>
  </component>
  <component name="RunManager" selected="npm.dev">
  <component name="RunManager" selected="Spring Boot.ErpApplication">
    <configuration default="true" type="ArquillianJUnit" factoryName="" nameIsGenerated="true">
      <option name="arquillianRunConfiguration">
        <value>
@@ -212,7 +212,7 @@
      <workItem from="1702631535326" duration="205000" />
      <workItem from="1702858329054" duration="9016000" />
      <workItem from="1703031064839" duration="55055000" />
      <workItem from="1703463546867" duration="5864000" />
      <workItem from="1703463546867" duration="15771000" />
    </task>
    <task id="LOCAL-00001" summary="第一次推送">
      <option name="closed" value="true" />
north-glass-erp/northglass-erp/src/components/basic/BasicTable.vue
@@ -1,20 +1,10 @@
<template>
  <div style="width: 100%;height: 100%;">
  <div style="width: 100%;height: 100%;" >
    <!-- 正常区域的框 -->
    <div class="vxe-table--cell-area" ref="cellarea">
      <span class="vxe-table--cell-main-area"></span>
      <span class="vxe-table--cell-active-area"></span>
    </div>
    <!-- 左侧fixed区域的框 -->
<!--    <div class="vxe-table&#45;&#45;cell-area" ref="leftfixedcellarea">-->
<!--      <span class="vxe-table&#45;&#45;cell-main-area"></span>-->
<!--      <span class="vxe-table&#45;&#45;cell-active-area"></span>-->
<!--    </div>-->
    <!-- 右侧fixed区域的框 -->
<!--    <div class="vxe-table&#45;&#45;cell-area" ref="rightfixedcellarea">-->
<!--      <span class="vxe-table&#45;&#45;cell-main-area"></span>-->
<!--      <span class="vxe-table&#45;&#45;cell-active-area"></span>-->
<!--    </div>-->
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
@@ -22,6 +12,7 @@
        ref="xGrid"
        v-bind="gridOptions"
        v-on="gridEvents"
        @scroll ="scrollEvnt"
    >
<!--      @toolbar-button-click="toolbarButtonClickEvent"-->
@@ -57,11 +48,14 @@
<script lang="ts" setup>
import {ref, reactive, defineEmits, onMounted, nextTick, toRef, watch} from 'vue'
import {VxeGridProps, VXETable} from 'vxe-table'
import scrollEvnt from '@/hook/index'
import request from "@/utils/request"
import deepClone from "@/utils/deepClone";
import {ElMessage} from "element-plus";
import router from "@/router";
//prop接收父组件函数
let props = defineProps({
  tableProp:{
@@ -111,7 +105,7 @@
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true },//开启虚拟滚动
  scrollY:{ enabled: true , gt: 40},//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
north-glass-erp/northglass-erp/src/components/basic/product/GlassType.vue
@@ -2,7 +2,7 @@
import request from "@/utils/request";
import deepClone from "@/utils/deepClone";
import {ElMessage} from "element-plus";
import useProductGlassTypeStore from "@/stores/productGlassType"
import useProductGlassTypeStore from "@/stores/sd/product/productGlassType"
let productGlassTypeStore = useProductGlassTypeStore()
let options=$ref([])
north-glass-erp/northglass-erp/src/components/sd/product/GlassType.vue
@@ -2,7 +2,7 @@
import request from "@/utils/request";
import deepClone from "@/utils/deepClone";
import {ElMessage} from "element-plus";
import useProductGlassTypeStore from "@/stores/productGlassType"
import useProductGlassTypeStore from "@/stores/sd/product/productGlassType"
let productGlassTypeStore = useProductGlassTypeStore()
let options=$ref([])
north-glass-erp/northglass-erp/src/hook/index.js
@@ -0,0 +1,12 @@
import useProductStore from "@/stores/sd/product/prduct"
let productStore = useProductStore()
export default  function  scrollEvnt(row){
    // 内容高度
    var scrollHeight = row.$event.target.scrollHeight
    var clientHeight = row.$event.target.clientHeight
    var scrollTop = row.$event.target.scrollTop
    //滚动到底部
    if ((Math.round(scrollTop + clientHeight) >= scrollHeight ) ) {
        productStore.flag=true
    }
}
north-glass-erp/northglass-erp/src/router/index.js
@@ -255,9 +255,9 @@
              component: () => import('../views/pp/processCard/PrintProcess.vue'),
            },
            {
              path: 'reShelving',
              name: 'reShelving',
              component: () => import('../views/pp/processCard/ReShelving.vue'),
              path: 'productionScheduling',
              name: 'productionScheduling',
              component: () => import('../views/pp/processCard/ProductionScheduling.vue'),
            },
            {
              path: '',
@@ -631,6 +631,17 @@
              name: 'originalMonthlySettlement',
              component:()=>import('../views/mm/mainIngredientStock/OriginalMonthlySettlement.vue')
            },
            //   物料出库
            {
              path: 'materialOutbound',
              name: 'materialOutbound',
              component:()=>import('../views/mm/mainIngredientStock/MaterialOutbound.vue')
            },
            {
              path:'createOutBound',
              name:'createOutBound',
              component:()=>import('../views/mm/mainIngredientStock/CreateOutBound.vue')
            },
            {
              path: '',
              redirect:'/main/ingredientsStock/SelectIngredientsStock'
@@ -770,7 +781,7 @@
        },
        {
          path: '',
          redirect:'/main/Product'
          redirect:'/main/order'
        }
      ]
    },
north-glass-erp/northglass-erp/src/stores/sd/product/prduct.js
New file
@@ -0,0 +1,15 @@
import {defineStore} from 'pinia'
import {ref} from "vue";
export  default defineStore("product",{
    state: () =>{
        let pageNum=$ref(1)
        let pageSize=$ref(100)
        let flag=$ref(false)
        return {
            pageNum,
            pageSize,
            flag
        }
    }
})
north-glass-erp/northglass-erp/src/stores/sd/product/productGlassType.js
north-glass-erp/northglass-erp/src/views/mm/mainIngredient/CreateIngredients.vue
@@ -1,171 +1,183 @@
<!-- 物料资料新增 -->
<!-- 物料资料新增原片 -->
<script lang="ts" setup>
import {ref} from "vue";
const value = ref('')
const options = [
  {
    value: '原片',
    label: '原片'
  },
  {
    value: '辅料',
    label: '辅料',
  }
]
</script>
<template>
 <div class="center-box">
   <el-card class="form-card">
   <el-form  size="medium" >
<div>
  <el-row>
  <el-col :span="4">
    <el-select v-model="value" placeholder="请选择类别">
      <el-option
          v-for="item in options"
          :key="item.value"
          :label="item.label"
          :value="item.value"
      />
    </el-select>
  </el-col>
  </el-row>
</div>
     <el-divider ></el-divider> <!-- 添加分隔线 -->
     <el-row gutter="5">
     <el-row gutter="5" v-show="value=='原片'" >
       <el-col :span="4.5">
         <el-input v-model="name" placeholder="请输入物料编码" style="width: 150px; height: 30px;" />
        长度 <el-input v-show="value=='原片'" v-model="name" placeholder="请输入长度" style="width: 150px; height: 30px;" />
       </el-col>
       <el-col :span="4.5">
         <el-input v-model="productName" placeholder="请输入物料名称" style="width: 150px; height: 30px;" />
         厚度 <el-input v-show="value=='原片'"  v-model="name" placeholder="请输入厚度" style="width: 150px; height: 30px;" />
       </el-col>
       <el-col :span="4.5">
         <el-input v-model="salId" placeholder="请输入重量" style="width: 150px; height: 30px;" />
         宽度 <el-input v-show="value=='原片'" v-model="name" placeholder="请输入宽度" style="width: 150px; height: 30px;" />
       </el-col>
       <el-col :span="4">
         <el-dropdown>
           <el-button type="primary">
             等级<el-icon class="el-icon--right" style="width: 66px;"><arrow-down /></el-icon>
           </el-button>
           <template #dropdown>
             <el-dropdown-menu>
               <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>
           </template>
         </el-dropdown>
       </el-col>
<!--       <el-col :span="4">-->
<!--         <el-dropdown>-->
<!--           <el-button type="primary">-->
<!--             膜系<el-icon class="el-icon&#45;&#45;right" style="width: 66px;"><arrow-down /></el-icon>-->
<!--           </el-button>-->
<!--           <template #dropdown>-->
<!--             <el-dropdown-menu>-->
<!--               <el-dropdown-item>非镀膜</el-dropdown-item>-->
<!--               <el-dropdown-item>在线LOW-E</el-dropdown-item>-->
<!--               <el-dropdown-item>SUPPER-I</el-dropdown-item>-->
<!--               <el-dropdown-item>SUPPER-I+</el-dropdown-item>-->
<!--               <el-dropdown-item>SUPPER-II</el-dropdown-item>-->
<!--               <el-dropdown-item>SUPPER-III</el-dropdown-item>-->
<!--               <el-dropdown-item>SUPPER-V</el-dropdown-item>-->
<!--               <el-dropdown-item>SUPPER-IA</el-dropdown-item>-->
<!--               <el-dropdown-item>SUNLITE LOWE</el-dropdown-item>-->
<!--               <el-dropdown-item>LOW-E40</el-dropdown-item>-->
<!--               <el-dropdown-item>LOW-E40A</el-dropdown-item>-->
<!--               <el-dropdown-item>LOW-E50</el-dropdown-item>-->
<!--               <el-dropdown-item>LOW-E55N</el-dropdown-item>-->
<!--             </el-dropdown-menu>-->
<!--           </template>-->
<!--         </el-dropdown>-->
<!--       </el-col>-->
     </el-row>
     <el-divider ></el-divider> <!-- 添加分隔线 -->
       <el-row gutter="5" v-show="value=='原片'|| value=='辅料'">
       <el-col :span="4.5">
         名称 <el-input  v-show="value=='原片' || value=='辅料'" v-model="productName" placeholder="请输入名称" style="width: 150px; height: 30px;" />
       </el-col>
         <el-col :span="4.5">
           数量 <el-input v-show="value=='原片' || value=='辅料'"  v-model="salId" placeholder="请输入数量" style="width: 150px; height: 30px;" />
         </el-col>
         <el-col :span="4.5">
           单位 <el-input v-model="name" placeholder="请输入单位" style="width: 150px; height: 30px;" />
         </el-col>
         <el-col :span="4.5">
           型号<el-input v-model="name" placeholder="请输入型号" style="width: 150px; height: 30px;" />
         </el-col>
       </el-row>
     <el-divider v-show="false" ></el-divider> <!-- 添加分隔线 -->
<!--         <el-row gutter="5">-->
<!--           <el-col span="4.5">-->
<!--           <el-input v-model="name" placeholder="请输入换算单位" style="width: 150px; height: 30px;" />-->
<!--           </el-col>-->
<!--           <el-col :span="4.5">-->
<!--             <el-input v-model="name" placeholder="请输入换算率" style="width: 150px; height: 30px;" />-->
<!--           </el-col>-->
<!--     </el-row>-->
     <el-divider ></el-divider> <!-- 添加分隔线 -->
     <el-row gutter="5">
       <el-col :span="4.5">
         <el-input v-model="name" placeholder="请输入宽度" style="width: 150px; height: 30px;" />
       </el-col>
       <el-col :span="4.5">
         <el-input v-model="name" placeholder="请输入高度" style="width: 150px; height: 30px;" />
       </el-col>
       <el-col :span="4.5">
         <el-input v-model="name" placeholder="请输入厚度" style="width: 150px; height: 30px;" />
       </el-col>
       <el-col :span="4">
         <el-dropdown>
           <el-button type="primary">
             大类<el-icon class="el-icon--right" style="width: 66px;"><arrow-down /></el-icon>
           </el-button>
           <template #dropdown>
             <el-dropdown-menu>
               <el-dropdown-item>辅片</el-dropdown-item>
               <el-dropdown-item>原片</el-dropdown-item>
             </el-dropdown-menu>
           </template>
         </el-dropdown>
       </el-col>
     </el-row>
     <el-divider ></el-divider> <!-- 添加分隔线 -->
<!--     <el-divider ></el-divider> &lt;!&ndash; 添加分隔线 &ndash;&gt;-->
     <el-row gutter="5">
       <el-col :span="4.5">
         <el-input v-model="name" placeholder="请输入型号" style="width: 150px; height: 30px;" />
       </el-col>
<!--     <el-row gutter="5">-->
<!--       <el-col :span="4.5">-->
<!--         <el-input v-model="name" placeholder="请输入型号" style="width: 150px; height: 30px;" />-->
<!--       </el-col>-->
       <el-col :span="4.5">
         <el-input v-model="name" placeholder="请输入单位" style="width: 150px; height: 30px;" />
       </el-col>
       <el-col :span="4">
         <el-dropdown>
           <el-button type="primary">
             产地<el-icon class="el-icon--right" style="width: 66px;"><arrow-down /></el-icon>
           </el-button>
           <template #dropdown>
             <el-dropdown-menu>
               <el-dropdown-item>暂无</el-dropdown-item>
             </el-dropdown-menu>
           </template>
         </el-dropdown>
       </el-col>
       <el-col :span="4">
         <el-dropdown>
           <el-button type="primary">
             中类<el-icon class="el-icon--right" style="width: 66px;"><arrow-down /></el-icon>
           </el-button>
           <template #dropdown>
             <el-dropdown-menu>
               <el-dropdown-item>0</el-dropdown-item>
             </el-dropdown-menu>
           </template>
         </el-dropdown>
       </el-col>
     </el-row>
<!--       <el-col :span="4.5">-->
<!--         <el-input v-model="name" placeholder="请输入单位" style="width: 150px; height: 30px;" />-->
<!--       </el-col>-->
<!--       <el-col :span="4">-->
<!--         <el-dropdown>-->
<!--           <el-button type="primary">-->
<!--             产地<el-icon class="el-icon&#45;&#45;right" style="width: 66px;"><arrow-down /></el-icon>-->
<!--           </el-button>-->
<!--           <template #dropdown>-->
<!--             <el-dropdown-menu>-->
<!--               <el-dropdown-item>暂无</el-dropdown-item>-->
<!--             </el-dropdown-menu>-->
<!--           </template>-->
<!--         </el-dropdown>-->
<!--       </el-col>-->
<!--       <el-col :span="4">-->
<!--         <el-dropdown>-->
<!--           <el-button type="primary">-->
<!--             中类<el-icon class="el-icon&#45;&#45;right" style="width: 66px;"><arrow-down /></el-icon>-->
<!--           </el-button>-->
<!--           <template #dropdown>-->
<!--             <el-dropdown-menu>-->
<!--               <el-dropdown-item>0</el-dropdown-item>-->
<!--             </el-dropdown-menu>-->
<!--           </template>-->
<!--         </el-dropdown>-->
<!--       </el-col>-->
<!--     </el-row>-->
     <el-divider ></el-divider> <!-- 添加分隔线 -->
<!--     <el-divider ></el-divider> &lt;!&ndash; 添加分隔线 &ndash;&gt;-->
     <el-row gutter="5">
       <el-col :span="4.5">
         <el-input v-model="name" placeholder="请输入换算单位" style="width: 150px; height: 30px;" />
       </el-col>
       <el-col :span="4.5">
         <el-input v-model="name" placeholder="请输入换算率" style="width: 150px; height: 30px;" />
       </el-col>
       <el-col :span="4.5">
         <el-input v-model="name" placeholder="请输入备注" style="width: 150px; height: 30px;" />
       </el-col>
       <el-col :span="4">
         <el-dropdown>
           <el-button type="primary">
             小类<el-icon class="el-icon--right" style="width: 66px;"><arrow-down /></el-icon>
           </el-button>
           <template #dropdown>
             <el-dropdown-menu>
               <el-dropdown-item>0</el-dropdown-item>
             </el-dropdown-menu>
           </template>
         </el-dropdown>
       </el-col>
     </el-row>
<!--     <el-row gutter="5">-->
     <el-divider ></el-divider> <!-- 添加分隔线 -->
<!--       <el-col :span="4.5">-->
<!--         <el-input v-model="name" placeholder="请输入备注" style="width: 150px; height: 30px;" />-->
<!--       </el-col>-->
<!--       <el-col :span="4">-->
<!--         <el-dropdown>-->
<!--           <el-button type="primary">-->
<!--             小类<el-icon class="el-icon&#45;&#45;right" style="width: 66px;"><arrow-down /></el-icon>-->
<!--           </el-button>-->
<!--           <template #dropdown>-->
<!--             <el-dropdown-menu>-->
<!--               <el-dropdown-item>0</el-dropdown-item>-->
<!--             </el-dropdown-menu>-->
<!--           </template>-->
<!--         </el-dropdown>-->
<!--       </el-col>-->
<!--     </el-row>-->
<!--     <el-divider ></el-divider> &lt;!&ndash; 添加分隔线 &ndash;&gt;-->
     <el-row gutter="5">
       <el-col :span="4.5">
         <el-input v-model="name" placeholder="请输入保质期" style="width: 150px; height: 30px;" />
       </el-col>
       <el-col :span="4.5">
         <el-input v-model="name" placeholder="请输入最高预警" style="width: 150px; height: 30px;" />
       </el-col>
       <el-col :span="4.5">
         <el-input v-model="name" placeholder="请输入拆包预警" style="width: 150px; height: 30px;" />
       </el-col>
       <el-col :span="4">
         <el-dropdown>
           <el-button type="primary">
             膜系<el-icon class="el-icon--right" style="width: 66px;"><arrow-down /></el-icon>
           </el-button>
           <template #dropdown>
             <el-dropdown-menu>
               <el-dropdown-item>非镀膜</el-dropdown-item>
               <el-dropdown-item>在线LOW-E</el-dropdown-item>
               <el-dropdown-item>SUPPER-I</el-dropdown-item>
               <el-dropdown-item>SUPPER-I+</el-dropdown-item>
               <el-dropdown-item>SUPPER-II</el-dropdown-item>
               <el-dropdown-item>SUPPER-III</el-dropdown-item>
               <el-dropdown-item>SUPPER-V</el-dropdown-item>
               <el-dropdown-item>SUPPER-IA</el-dropdown-item>
               <el-dropdown-item>SUNLITE LOWE</el-dropdown-item>
               <el-dropdown-item>LOW-E40</el-dropdown-item>
               <el-dropdown-item>LOW-E40A</el-dropdown-item>
               <el-dropdown-item>LOW-E50</el-dropdown-item>
               <el-dropdown-item>LOW-E55N</el-dropdown-item>
             </el-dropdown-menu>
           </template>
         </el-dropdown>
       </el-col>
<!--       <el-col :span="4.5">-->
<!--         <el-input v-model="name" placeholder="请输入保质期" style="width: 150px; height: 30px;" />-->
<!--       </el-col>-->
<!--       <el-col :span="4.5">-->
<!--         <el-input v-model="name" placeholder="请输入最高预警" style="width: 150px; height: 30px;" />-->
<!--       </el-col>-->
<!--       <el-col :span="4.5">-->
<!--         <el-input v-model="name" placeholder="请输入拆包预警" style="width: 150px; height: 30px;" />-->
<!--       </el-col>-->
     </el-row>
     <el-divider ></el-divider> <!-- 添加分隔线 -->
     <el-row  gutter="10" justify="center" >
north-glass-erp/northglass-erp/src/views/mm/mainIngredient/Ingredients.vue
@@ -19,8 +19,9 @@
  <div id="main">
    <div id="div-title">
      <el-breadcrumb :separator-icon="ArrowRight">
        <el-breadcrumb-item :to="{ path: '/main/ingredients/SelectIngredients' }">产品查询</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/ingredients/SelectIngredients' }">物料资料</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/ingredients/CreateIngredients' }">物料新增</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">报表</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/mm/mainIngredient/SelectIngredients.vue
@@ -1,174 +1,183 @@
<!-- 物料资料 -->
<script lang="ts" setup>
import { ref } from 'vue';
const name = ref('')
const productName = ref('')
const salId = ref('')
let tableData = ref([
  {
    "自序":'1',
    "物料编码":'700900000000941',
    "物料名称":'丝袜防晒手套套袖',
    "产地":'00',
    "宽度":'0.00',
    "高度":'0.00',
    "厚度":'0.00',
    "型号":'',
    "换算率":'1000',
    "单位":'双',
    "换算单位":'1',
    "保质期":'12',
    "重量":'0.0000',
    "数量":'2016-10-17',
    "库存组织":'人工库',
    "备注":'',
<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/ingredients/CreateIngredients', query: { id: row.id }})
      break
    }
    case 'delete':{
      alert('我接收到子组件传送的删除信息')
      break
    }
  }
}
//子组件接收参数
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'CustomerList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true },//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true
  },
  {
    "自序":'2',
    "物料编码":'700900000000940',
    "物料名称":'自复位按钮开关',
    "产地":'00',
    "宽度":'0.00',
    "高度":'0.00',
    "厚度":'0.00',
    "型号":'',
    "换算率":'1000',
    "单位":'件',
    "换算单位":'1',
    "保质期":'12',
    "重量":'0.0000',
    "数量":'2016-10-17',
    "库存组织":'人工库',
    "备注":'',
  filterConfig: {   //筛选配置项
    remote: true
  },
  {
    "自序":'3',
    "物料编码":'700900000001189',
    "物料名称":'户外明装防水插座',
    "产地":'00',
    "宽度":'0.00',
    "高度":'0.00',
    "厚度":'0.00',
    "型号":'',
    "换算率":'1000',
    "单位":'个',
    "换算单位":'1',
    "保质期":'12',
    "重量":'0.0000',
    "数量":'2016-10-17',
    "库存组织":'人工库',
    "备注":'',
  customConfig: {
    storage: true
  },
  {
    "自序":'4',
    "物料编码":'700900000001188',
    "物料名称":'平板地拖',
    "产地":'00',
    "宽度":'0.00',
    "高度":'0.00',
    "厚度":'0.00',
    "型号":'',
    "换算率":'1000',
    "单位":'把',
    "换算单位":'1',
    "保质期":'12',
    "重量":'0.0000',
    "数量":'2016-10-17',
    "库存组织":'人工库',
    "备注":'',
  editConfig: {
    trigger: 'click',
    mode: 'row',
    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: '80' },
    {title: '操作', width: '110', slots: { default: 'button_slot' },fixed:"left"},
    {field: 'materialCode', width:'150', title: '物料编码', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } } },
    {field: 'materialName', width: '150',title: '物料名称', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'origin', width: '120',title: '产地', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'width', width: '100',title: '宽度', sortable: true},
    {field: 'height',width: '100', title: '高度', sortable: true,showOverflow:"ellipsis"},
    {field: 'thickness', width: '80',title: '厚度', sortable: true},
    {field: 'model',width: '100', title: '型号', sortable: true},
    {field: 'conversionRate', width: '100',title: '换算率', sortable: true},
    {field: 'unit',width: '100', title: '单位', sortable: true},
    {field: 'conversionUnit', width: '80',title: '换算单位', sortable: true},
    {field: 'shelfLife',width: '100', title: '保质期', sortable: true},
    {field: 'weight', width: '100',title: ' 重量', sortable: true},
    {field: 'quantity',width: '110', title: '数量', sortable: true},
    {field: 'inventoryOrganization',width: '100', title: '库存组织', sortable: true},
    {field: 'remark',width: '80', title: '备注', sortable: true},
  ],//表头按钮
  toolbarConfig: {
    import: false,
    export: true,
    print: true,
    zoom: true,
    custom: true
  },
])
  data:  [
    {
      "materialCode": 700900000000941,
      "materialName": "丝袜防晒手套套袖",
      "origin": "00",
      "width": "00",
      "height": "00",
      "thickness":'00',
      "model": "服饰",
      "conversionRate": "1000",
      "unit": "双",
      "conversionUnit": "1",
      "shelfLife": "12个月",
      "weight": "0.0000",
      "quantity": "10000",
      "inventoryOrganization": "人工库",
      "remark": "测试",
    },
    {
      "materialCode": 700900000000941,
      "materialName": "丝袜防晒手套套袖",
      "origin": "00",
      "width": "00",
      "height": "00",
      "thickness":'00',
      "model": "服饰",
      "conversionRate": "1000",
      "unit": "双",
      "conversionUnit": "1",
      "shelfLife": "12个月",
      "weight": "0.0000",
      "quantity": "10000",
      "inventoryOrganization": "人工库",
      "remark": "测试",
    },
  ],//table body实际数据
  footerMethod ({ columns, data }) {//页脚函数
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
        // }
        return ''
      })
    ]
  }
})
</script>
<template>
  <div>
    <!-- 表单开始 -->
    <div>
      <el-form  size="medium" >
  <div class="main-div-customer">
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
<!--        <el-row gutter="5">-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="name" placeholder="请输入物料编码" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="productName" placeholder="请输入物料名称" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="salId" placeholder="请输入宽度" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="salId" placeholder="请输入高度" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
      <!--      下拉显示所有信息插槽-->
      <template #content="{ row}">
        <ul class="expand-wrapper">
          <li  v-for="(item,key,index) in row">
            <span style="font-weight: bold">{{key+':  '}}</span>
            <span>{{ item }}</span>
          </li>
        </ul>
      </template>
<!--        </el-row>-->
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">编辑</el-button>
        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button>
      </template>
<!--        &lt;!&ndash; <el-form-item size="large">-->
<!--          <el-button type="primary" @click="submitForm">查询</el-button>-->
<!--          <el-button @click="resetForm">重置</el-button>-->
<!--        </el-form-item>&ndash;&gt;-->
<!--        <el-row gutter="5">-->
<!--          <el-col :span="4">-->
<!--            <el-dropdown>-->
<!--              <el-button type="primary">-->
<!--                请选择库存组织<el-icon class="el-icon&#45;&#45;right" style="width: 66px;"><arrow-down /></el-icon>-->
<!--              </el-button>-->
<!--              <template #dropdown>-->
<!--                <el-dropdown-menu>-->
<!--                  <el-dropdown-item>Action 1</el-dropdown-item>-->
<!--                  <el-dropdown-item>Action 2</el-dropdown-item>-->
<!--                  <el-dropdown-item>Action 3</el-dropdown-item>-->
<!--                  <el-dropdown-item>Action 4</el-dropdown-item>-->
<!--                  <el-dropdown-item>Action 5</el-dropdown-item>-->
<!--                </el-dropdown-menu>-->
<!--              </template>-->
<!--            </el-dropdown>-->
<!--          </el-col>-->
      <template #num1_filter="{ column, $panel }">
        <div>
          <div v-for="(option, index) in column.filters" :key="index">
            <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
          </div>
        </div>
      </template>
<!--          <el-col :span="4">-->
<!--            <el-input v-model="name" placeholder="请输宽度" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="name" placeholder="请输型号" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-button id="searchButton" type="primary" :icon="Search">查询</el-button>-->
<!--          </el-col>-->
<!--        </el-row>-->
      </el-form>
    </div>
    <!-- 表单结束 -->
    <!-- 表格开始 -->
    <div>
      <el-table :data="tableData" border style="width: 100%">
        <el-table-column prop="自序" label="自序" width="180" />
        <el-table-column prop="物料编码" label="物料编码" width="180" />
        <el-table-column prop="物料名称" label="物料名称" width="180"/>
        <el-table-column prop="产地" label="产地" width="180"/>
        <el-table-column prop="宽度" label="宽度" width="180"/>
        <el-table-column prop="高度" label="高度" width="180"/>
        <el-table-column prop="厚度" label="厚度" width="180"/>
        <el-table-column prop="型号" label="型号" width="180"/>
        <el-table-column prop="换算率" label="换算率" width="180"/>
        <el-table-column prop="单位" label="单位" width="180"/>
        <el-table-column prop="换算单位" label="换算单位" width="180"/>
        <el-table-column prop="保质期" label="保质期" width="180"/>
        <el-table-column prop="重量" label="重量" width="180"/>
        <el-table-column prop="数量" label="数量" width="180"/>
        <el-table-column prop="库存组织" label="库存组织" width="180"/>
        <el-table-column prop="备注" label="备注" width="180"/>
        <el-table-column fixed="left" label="操作" width="120">
          <template #default>
            <el-button link type="primary" size="small" @click="handleClick"
            >编辑</el-button
            >
            <el-button link type="primary" size="small">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>
    </vxe-grid>
  </div>
</template>
<style>
<style scoped>
.main-div-customer{
  width: 99%;
  height: 100%;
}
</style>
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/AccessoriesMonthlySettlement.vue
@@ -1,94 +1,252 @@
<!--辅料月结-->
<script setup>
import {reactive, ref} from "vue";
import {useRouter} from  'vue-router'
import {VXETable} from "vxe-table";
let router=useRouter()
const getTableRow = (row,type) =>{
  switch (type) {
    case 'edit' :{
      //alert('我接收到子组件传送的编辑信息')
      router.push({path: '/main/trader/CreateTrader', query: { id: row.id }})
      break
    }
    case 'delete':{
      alert('我接收到子组件传送的删除信息')
      break
    }
<script lang="ts" setup>
  }
}
</script>
<template>
  <div>
    <div>
      <el-form>
        <el-row gutter="10" >
          <el-col :span="2.5">
            <div class="label-text">查询辅料报表日期</div>
          </el-col>
          <el-col :span="4">
            <el-date-picker
                type="daterange"
                start-placeholder="开始时间"
                end-placeholder="结束时间"
                style="width: 200px;"
            />
          </el-col>
          <el-col :span="4">
            <el-dropdown>
              <el-button type="primary">
                辅料类型<el-icon class="el-icon--right" style="width: 66px;"><arrow-down /></el-icon>
              </el-button>
              <template #dropdown>
                <el-dropdown-menu>
                  <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-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-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-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>
              </template>
            </el-dropdown>
          </el-col>
          <el-col :span="4">
            <el-button id="searchButton" type="primary" :icon="Search">查询报表</el-button>
          </el-col>
        </el-row>
      </el-form>
    </div>
    <div>
      <div>
        <el-table :data="tableData" border style="width: 100%">
          <el-table-column prop="自序" label="自序" width="100" />
          <el-table-column prop="月份" label="月份" width="100" />
          <el-table-column prop="单位" label="单位" width="60"/>
          <el-table-column prop="物料编码" label="物料编码" width="100"/>
          <el-table-column prop="物料名称" label="物料名称" width="100"/>
          <el-table-column prop="高度" label="高度" width="100"/>
          <el-table-column prop="厚度" label="厚度" width="100"/>
          <el-table-column prop="宽度" label="宽度" width="100"/>
          <el-table-column prop="上月数量" label="上月数量" width="100"/>
          <el-table-column prop="本月入库数量" label="本月入库数量" width="110"/>
          <el-table-column prop="本月出库数量" label="本月出库数量" width="110"/>
          <el-table-column prop="本月库存数量" label="本月库存数量" width="110"/>
        </el-table>
      </div>
    </div>
  </div>
</template>
<style>
.centered-box {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
//子组件接收参数
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'CustomerList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true },//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true
  },
  filterConfig: {   //筛选配置项
    remote: true
  },
  customConfig: {
    storage: true
  },
  editConfig: {
    trigger: 'click',
    mode: 'row',
    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: '80' },
    // {title: '操作', width: '110', slots: { default: 'button_slot' },fixed:"left"},
    {field: 'month', width:'150', title: '月份', sortable: true,editRender: { name: 'input' },filters:[{ data: '' }],slots: { filter: 'num1_filter' } },
    {field: 'unit', width: '150',title: '单位', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialCode', width: '120',title: '物料编码', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialName', width: '100',title: '物料名称', sortable: true},
    {field: 'height',width: '100', title: '高度', sortable: true,showOverflow:"ellipsis"},
    {field: 'thickness', width: '80',title: '厚度', sortable: true},
    {field: 'width',width: '100', title: '宽度', sortable: true},
    {field: 'lastMonthQuantity', width: '100',title: '上月数量', sortable: true},
    {field: 'lastMonthArea',width: '100', title: '上月面积', sortable: true},
    {field: 'thisMonthReceivedQuantity', width: '140',title: '本月入库数量', sortable: true},
    {field: 'thisMonthReceivedArea',width: '140', title: '本月入库面积', sortable: true},
    {field: 'thisMonthIssuedQuantity', width: '140',title: '本月出库数量', sortable: true},
    {field: 'thisMonthIssuedArea',width: '140', title: '本月出库面积', sortable: true},
    {field: 'thisMonthInventoryQuantity',width: '140', title: '本月库存数量', sortable: true},
    {field: 'thisMonthInventoryArea',width: '140', title: '本月库存面积', sortable: true},
  ],//表头按钮
  toolbarConfig: {
    // buttons: [{
    //   'name': '查询',
    //   'code':'add'
    // },],
    import: false,
    export: true,
    print: true,
    zoom: true,
    custom: true
  },
  data:  [
    {
      'month':'3',
      'unit':'件',
      'materialCode':'KF2023122101',
      'materialName':'公牛插座',
      'height':'0',
      'thickness':'0',
      'width':'0',
      'lastMonthQuantity':'100',
      'lastMonthArea':'0',
      'thisMonthReceivedQuantity':'100',
      'thisMonthReceivedArea':'0',
      'thisMonthIssuedQuantity':'23',
      'thisMonthIssuedArea':'0',
      'thisMonthInventoryQuantity':'77',
      'thisMonthInventoryArea':'0',
    },
    {
      'month':'3',
      'unit':'件',
      'materialCode':'KF2023122101',
      'materialName':'公牛插座',
      'height':'0',
      'thickness':'0',
      'width':'0',
      'lastMonthQuantity':'100',
      'lastMonthArea':'0',
      'thisMonthReceivedQuantity':'100',
      'thisMonthReceivedArea':'0',
      'thisMonthIssuedQuantity':'23',
      'thisMonthIssuedArea':'0',
      'thisMonthInventoryQuantity':'77',
      'thisMonthInventoryArea':'0',
    },
    {
      'month':'3',
      'unit':'件',
      'materialCode':'KF2023122101',
      'materialName':'公牛插座',
      'height':'0',
      'thickness':'0',
      'width':'0',
      'lastMonthQuantity':'100',
      'lastMonthArea':'0',
      'thisMonthReceivedQuantity':'100',
      'thisMonthReceivedArea':'0',
      'thisMonthIssuedQuantity':'23',
      'thisMonthIssuedArea':'0',
      'thisMonthInventoryQuantity':'77',
      'thisMonthInventoryArea':'0',
    },
  ],//table body实际数据
  footerMethod ({ columns, data }) {//页脚函数
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
        // }
        return ''
      })
    ]
  }
})
const  xGrid = ref();
const gridEvents = {
  toolbarButtonClick ({ code }) {
    const $grid = xGrid.value
    if ($grid) {
      switch (code) {
        case 'add': {
          router.push({path: '/main/trader/CreateTrader'})
          /*if($grid.getCheckboxRecords().length==0){
            VXETable.modal.message( '请选择一条数据!')
            return
          }*/
          return;
        }
      }
    }
  },
  toolbarToolClick ({ code }) {
    const $grid = xGrid.value
    if ($grid) {
      switch (code) {
        case 'myPrint': {
          $grid.print()
          break
        }
      }
    }
  },
}
</script>
<template>
  <div class="main-div-customer">
    <el-row gutter="10" >
      <el-col :span="2.5">
        <div class="label-text">查询辅料报表日期</div>
      </el-col>
      <el-col :span="4">
        <el-date-picker
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            style="width: 200px;"
        />
      </el-col>
      <el-col span="4">
        <el-button id="searchButton" type="primary" :icon="Search">查询报表</el-button>
      </el-col>
    </el-row>
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
        v-on="gridEvents"
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
      <!--      下拉显示所有信息插槽-->
      <template #content="{ row}">
        <ul class="expand-wrapper">
          <li  v-for="(item,key,index) in row">
            <span style="font-weight: bold">{{key+':  '}}</span>
            <span>{{ item }}</span>
          </li>
        </ul>
      </template>
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">编辑</el-button>
        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
        <div>
          <div v-for="(option, index) in column.filters" :key="index">
            <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
          </div>
        </div>
      </template>
.label-text {
  font-weight: bold;
    </vxe-grid>
  </div>
</template>
<style scoped>
.main-div-customer{
  width: 99%;
  height: 100%;
}
</style>
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/CreateOutBound.vue
New file
@@ -0,0 +1,225 @@
<!--物料出库-->
<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/trader/CreateTrader', query: { id: row.id }})
      break
    }
    case 'delete':{
      alert('我接收到子组件传送的删除信息')
      break
    }
  }
}
//子组件接收参数
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'CustomerList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true },//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true
  },
  filterConfig: {   //筛选配置项
    remote: true
  },
  customConfig: {
    storage: true
  },
  editConfig: {
    trigger: 'click',
    mode: 'row',
    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: '80' },
    {title: '操作', width: '110', slots: { default: 'button_slot' },fixed:"left"},
    {field: 'MaterialCode', width: '150',title: '物料编码', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'MaterialName', width: '120',title: '物料名称', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'InventoryCount',width: '100', title: '库存数量', sortable: true},
    {field: 'OutNum', width:'150', title: '出库数量', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } } },
    {field: 'Origin', width: '100',title: '产地', sortable: true},
    {field: 'Width', width: '80',title: '宽度', sortable: true},
    {field: 'Height',width: '100', title: '高度', sortable: true},
    {field: 'Thickness', width: '100',title: '厚度', sortable: true},
    {field: 'MainUnit',width: '100', title: '单位', sortable: true},
    {field: 'SafetyStock', width: '100',title: '单片面积', sortable: true},
    {field: 'AvailableInventory', width: '100',title: '换算率', sortable: true},
    {field: 'UnclaimedQuantity',width: '140', title: '未领取数量', sortable: true},
    {field: 'TotalArea',width: '100', title: '库区', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }},
    {field: 'ProductionDate',width: '100', title: '库位', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }},
    {field: 'ShelfLife',width: '100', title: '工程单号', sortable: true},
    {field: 'LocationNumber',width: '100', title: '生产日期', sortable: true},
    {field: 'remark',width: '80', title: '备注', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }},
  ],//表头按钮
  toolbarConfig: {
    buttons: [{
      'name': '提交',status:'primary'
    }],
    import: false,
    export: true,
    print: true,
    zoom: true,
    custom: true
  },
  data:  [
  ],//table body实际数据
  footerMethod ({ columns, data }) {//页脚函数
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
        // }
        return ''
      })
    ]
  }
})
</script>
<template>
  <el-row gutter="10" >
    <el-col :span="2.5">
      <div class="label-text">领料日期</div>
    </el-col>
    <el-col :span="4">
      <el-date-picker
          type="daterange"
          start-placeholder="开始时间"
          end-placeholder="结束时间"
          style="width: 200px;height: 30px"
      />
    </el-col>
    <el-col :span="4">
    <el-input v-model="productName" placeholder="请输入领料员名称" style="width: 200px; height: 30px;" />
    </el-col>
    <el-col :span="4">
    <el-input v-model="banzu" placeholder="请输入领料班组" style="width: 200px; height: 30px;" />
    </el-col>
    <el-col :span="7">
    仓管员<el-input v-model="banzu" placeholder="王翠兰" style="width: 200px; height: 30px;" />
    </el-col>
<!--    <el-col span="4">-->
<!--      <el-button id="searchButton" type="primary" :icon="Search">查询报表</el-button>-->
<!--    </el-col>-->
  </el-row>
  <el-row gutter="10" >
    <el-col :span="2.5">
      <div class="label-text">库存组织</div>
    </el-col>
    <el-col :span="4">
                  <el-dropdown>
                    <el-button type="primary">
                      请选择库存组织<el-icon class="el-icon--right" style="width: 66px;height: 30px"><arrow-down /></el-icon>
                    </el-button>
                    <template #dropdown>
                      <el-dropdown-menu>
                        <el-dropdown-item>人工库</el-dropdown-item>
                        <el-dropdown-item>计划库</el-dropdown-item>
                        <el-dropdown-item>自动化库</el-dropdown-item>
                      </el-dropdown-menu>
                    </template>
                  </el-dropdown>
                </el-col>
    <el-col :span="4">
      <el-dropdown>
        <el-button type="primary">
          请选择出库类型<el-icon class="el-icon--right" style="width:66px;"><arrow-down /></el-icon>
        </el-button>
        <template #dropdown>
          <el-dropdown-menu>
            <el-dropdown-item>标准出库</el-dropdown-item>
            <el-dropdown-item>补单领料</el-dropdown-item>
            <el-dropdown-item>返工领料</el-dropdown-item>
          </el-dropdown-menu>
        </template>
      </el-dropdown>
    </el-col>
    <el-col :span="12">
      <el-input v-model="banzu" placeholder="请输入销售单号" style="width: 200px; height: 30px;" />
    </el-col>
<!--    <el-col span="4">-->
<!--      <el-button id="searchButton" type="primary" :icon="Search">提交</el-button>-->
<!--    </el-col>-->
    <!--    <el-col span="4">-->
    <!--      <el-button id="searchButton" type="primary" :icon="Search">查询报表</el-button>-->
    <!--    </el-col>-->
  </el-row>
  <div class="main-div-customer">
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
      <!--      下拉显示所有信息插槽-->
      <template #content="{ row}">
        <ul class="expand-wrapper">
          <li  v-for="(item,key,index) in row">
            <span style="font-weight: bold">{{key+':  '}}</span>
            <span>{{ item }}</span>
          </li>
        </ul>
      </template>
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">编辑</el-button>
        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
        <div>
          <div v-for="(option, index) in column.filters" :key="index">
            <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
          </div>
        </div>
      </template>
    </vxe-grid>
  </div>
</template>
<style scoped>
.main-div-customer{
  width: 99%;
  height: 100%;
}
</style>
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/IngredientsStock.vue
@@ -19,9 +19,11 @@
  <div id="main">
    <div id="div-title">
      <el-breadcrumb :separator-icon="ArrowRight">
        <el-breadcrumb-item :to="{ path: '/main/ingredientsStock/SelectIngredientsStock' }">产品查询</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/ingredientsStock/SelectIngredientsStock' }">物料库存</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/ingredientsStock/MaterialOutbound' }">物料出库</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/ingredientsStock/OriginalMonthlySettlement' }">原片月结</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/ingredientsStock/AccessoriesMonthlySettlement' }">辅料月结</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">报表</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/MaterialOutbound.vue
New file
@@ -0,0 +1,244 @@
<!--物料出库-->
<script setup>
import {reactive, ref} from "vue";
import {useRouter} from  'vue-router'
let router=useRouter()
const getTableRow = (row,type) =>{
  switch (type) {
    case 'edit' :{
      alert('我接收到子组件传送的编辑信息')
      // router.push({path: '/main/trader/CreateTrader', query: { id: row.id }})
      break
    }
    case 'delete':{
      alert('我接收到子组件传送的删除信息')
      break
    }
  }
}
//子组件接收参数
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'CustomerList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true },//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true
  },
  filterConfig: {   //筛选配置项
    remote: true
  },
  customConfig: {
    storage: true
  },
  editConfig: {
    trigger: 'click',
    mode: 'row',
    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: '80' },
    {title: '操作', width: '110', slots: { default: 'button_slot' },fixed:"left"},
    {field: 'InventoryOrganization', width:'150', title: '库存组织', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } } },
    {field: 'MaterialCode', width: '150',title: '物料编码', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'MaterialName', width: '120',title: '物料名称', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'InventoryCount',width: '100', title: '库存数量', sortable: true},
    {field: 'OutNum', width:'150', title: '出库数量', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } } },
    {field: 'Origin', width: '100',title: '产地', sortable: true},
    {field: 'InventoryNumber',width: '100', title: '库存编号', sortable: true,showOverflow:"ellipsis"},
    {field: 'Width', width: '80',title: '宽度', sortable: true},
    {field: 'Height',width: '100', title: '高度', sortable: true},
    {field: 'Thickness', width: '100',title: '厚度', sortable: true},
    {field: 'MainUnit',width: '100', title: '主单位', sortable: true},
    {field: 'SafetyStock', width: '100',title: '安全库存', sortable: true},
    {field: 'AvailableInventory', width: '100',title: '可用库存', sortable: true},
    {field: 'UnclaimedQuantity',width: '140', title: '未领取数量', sortable: true},
    {field: 'TotalArea',width: '100', title: '总面积', sortable: true},
    {field: 'ProductionDate',width: '100', title: '生产日期', sortable: true},
    {field: 'ShelfLife',width: '100', title: '保质期', sortable: true},
    {field: 'LocationNumber',width: '100', title: '库位编号', sortable: true},
    {field: 'StorageArea',width: '100', title: '存储区域', sortable: true},
    {field: 'Location',width: '100', title: '库位', sortable: true},
    {field: 'BacklogInventory',width: '100', title: '积压库存', sortable: true},
    {field: 'remark',width: '80', title: '备注', sortable: true},
  ],//表头按钮
  toolbarConfig: {
    buttons: [{
      code:'add','name': '出库新增',status:'primary'
    }],
    import: false,
    export: true,
    print: true,
    zoom: true,
    custom: true
  },
  data:  [
    {
      "InventoryOrganization": "人工库",
      "MaterialCode": "700900000000115",
      "MaterialName": "冬装170",
      "Origin": "China",
      "InventoryNumber": "KC2006891",
      "Width": '',
      "Height": "",
      "Thickness": "",
      "MainUnit": "件",
      "SafetyStock": "5",
      "InventoryCount": "20",
      "AvailableInventory": "9",
      "UnclaimedQuantity": "2",
      "TotalArea": "0",
      "ProductionDate": "2016-10-17",
      "ShelfLife": "0",
      "LocationNumber": "0",
      "StorageArea": "0",
      "Location": "0",
      "BacklogInventory": "40",
      "remark": "测试",
    },
    {
      "InventoryOrganization": "人工库",
      "MaterialCode": "700900000000115",
      "MaterialName": "冬装175",
      "Origin": "China",
      "InventoryNumber": "KC2006891",
      "Width": '',
      "Height": "",
      "Thickness": "",
      "MainUnit": "件",
      "SafetyStock": "5",
      "InventoryCount": "20",
      "AvailableInventory": "9",
      "UnclaimedQuantity": "2",
      "TotalArea": "0",
      "ProductionDate": "2016-10-17",
      "ShelfLife": "0",
      "LocationNumber": "0",
      "StorageArea": "0",
      "Location": "0",
      "BacklogInventory": "40",
      "remark": "测试",
    },{
      "InventoryOrganization": "人工库",
      "MaterialCode": "700900000000115",
      "MaterialName": "冬装180",
      "Origin": "China",
      "InventoryNumber": "KC2006891",
      "Width": '',
      "Height": "",
      "Thickness": "",
      "MainUnit": "件",
      "SafetyStock": "2",
      "InventoryCount": "23",
      "AvailableInventory": "4",
      "UnclaimedQuantity": "3",
      "TotalArea": "0",
      "ProductionDate": "2016-10-17",
      "ShelfLife": "0",
      "LocationNumber": "0",
      "StorageArea": "0",
      "Location": "0",
      "BacklogInventory": "40",
      "remark": "测试",
    },
  ],//table body实际数据
  footerMethod ({ columns, data }) {//页脚函数
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
        // }
        return ''
      })
    ]
  }
})
const  xGrid = ref();
const gridEvents = {
  toolbarButtonClick({ code }) {
    const $grid = xGrid.value
    if($grid){
      switch (code){
        case 'add':{
          /*VXETable.modal.confirm('点击了库存调拨');*/
          router.push({path: '/main/ingredientsStock/CreateOutbound'});
          return;
          break
        }
      }
    }
  }
}
</script>
<template>
  <div class="main-div-customer">
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
        v-on="gridEvents"
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
      <!--      下拉显示所有信息插槽-->
      <template #content="{ row}">
        <ul class="expand-wrapper">
          <li  v-for="(item,key,index) in row">
            <span style="font-weight: bold">{{key+':  '}}</span>
            <span>{{ item }}</span>
          </li>
        </ul>
      </template>
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">编辑</el-button>
        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
        <div>
          <div v-for="(option, index) in column.filters" :key="index">
            <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
          </div>
        </div>
      </template>
    </vxe-grid>
  </div>
</template>
<style scoped>
.main-div-customer{
  width: 99%;
  height: 100%;
}
</style>
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/OriginalMonthlySettlement.vue
@@ -1,81 +1,253 @@
<!-- 原片月结  -->
<script setup>
import {reactive, ref} from "vue";
import {useRouter} from  'vue-router'
import {VXETable} from "vxe-table";
let router=useRouter()
const getTableRow = (row,type) =>{
  switch (type) {
    case 'edit' :{
      //alert('我接收到子组件传送的编辑信息')
      router.push({path: '/main/trader/CreateTrader', query: { id: row.id }})
      break
    }
    case 'delete':{
      alert('我接收到子组件传送的删除信息')
      break
    }
<script lang="ts" setup>
  }
}
</script>
<template>
  <div>
    <div>
      <el-form>
        <el-row gutter="10" >
        <el-col :span="2.5">
          <div class="label-text">查询原片报表日期</div>
        </el-col>
        <el-col :span="4">
          <el-date-picker
              type="daterange"
              start-placeholder="开始时间"
              end-placeholder="结束时间"
              style="width: 200px;"
          />
        </el-col>
          <el-col :span="4">
            <el-dropdown>
              <el-button type="primary">
                原片<el-icon class="el-icon--right" style="width: 66px;"><arrow-down /></el-icon>
              </el-button>
              <template #dropdown>
                <el-dropdown-menu>
                  <el-dropdown-item>原片</el-dropdown-item>
                  <el-dropdown-item>余料</el-dropdown-item>
                </el-dropdown-menu>
              </template>
            </el-dropdown>
          </el-col>
          <el-col :span="4">
            <el-button id="searchButton" type="primary" :icon="Search">查询报表</el-button>
          </el-col>
        </el-row>
      </el-form>
    </div>
    <div>
      <div>
        <el-table :data="tableData" border style="width: 100%">
          <el-table-column prop="自序" label="自序" width="100" />
          <el-table-column prop="月份" label="月份" width="100" />
          <el-table-column prop="单位" label="单位" width="60"/>
          <el-table-column prop="物料编码" label="物料编码" width="100"/>
          <el-table-column prop="物料名称" label="物料名称" width="100"/>
          <el-table-column prop="高度" label="高度" width="100"/>
          <el-table-column prop="厚度" label="厚度" width="100"/>
          <el-table-column prop="宽度" label="宽度" width="100"/>
          <el-table-column prop="上月数量" label="上月数量" width="100"/>
          <el-table-column prop="上月面积" label="上月面积" width="100"/>
          <el-table-column prop="本月入库数量" label="本月入库数量" width="110"/>
          <el-table-column prop="本月入库面积" label="本月入库面积" width="110"/>
          <el-table-column prop="本月出库数量" label="本月出库数量" width="110"/>
          <el-table-column prop="本月出库面积" label="本月出库面积" width="110"/>
          <el-table-column prop="本月库存数量" label="本月库存数量" width="110"/>
          <el-table-column prop="本月库存面积" label="本月库存面积" width="110"/>
        </el-table>
    </div>
  </div>
  </div>
</template>
<style>
.centered-box {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
//子组件接收参数
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'CustomerList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true },//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true
  },
  filterConfig: {   //筛选配置项
    remote: true
  },
  customConfig: {
    storage: true
  },
  editConfig: {
    trigger: 'click',
    mode: 'row',
    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: '80' },
    // {title: '操作', width: '110', slots: { default: 'button_slot' },fixed:"left"},
    {field: 'month', width:'150', title: '月份', sortable: true,editRender: { name: 'input' },filters:[{ data: '' }],slots: { filter: 'num1_filter' } },
    {field: 'unit', width: '150',title: '单位', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialCode', width: '120',title: '物料编码', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialName', width: '100',title: '物料名称', sortable: true},
    {field: 'height',width: '100', title: '高度', sortable: true,showOverflow:"ellipsis"},
    {field: 'thickness', width: '80',title: '厚度', sortable: true},
    {field: 'width',width: '100', title: '宽度', sortable: true},
    {field: 'lastMonthQuantity', width: '100',title: '上月数量', sortable: true},
    {field: 'lastMonthArea',width: '100', title: '上月面积', sortable: true},
    {field: 'thisMonthReceivedQuantity', width: '140',title: '本月入库数量', sortable: true},
    {field: 'thisMonthReceivedArea',width: '140', title: '本月入库面积', sortable: true},
    {field: 'thisMonthIssuedQuantity', width: '140',title: '本月出库数量', sortable: true},
    {field: 'thisMonthIssuedArea',width: '140', title: '本月出库面积', sortable: true},
    {field: 'thisMonthInventoryQuantity',width: '140', title: '本月库存数量', sortable: true},
    {field: 'thisMonthInventoryArea',width: '140', title: '本月库存面积', sortable: true},
  ],//表头按钮
  toolbarConfig: {
    // buttons: [{
    //   'name': '查询',
    //   'code':'add'
    // },],
    import: false,
    export: true,
    print: true,
    zoom: true,
    custom: true
  },
  data:  [
    {
    'month':'3',
    'unit':'mm',
    'materialCode':'KF2023122101',
    'materialName':'普通钢化玻璃',
    'height':'110.20',
    'thickness':'3.00',
    'width':'90.40',
    'lastMonthQuantity':'100',
    'lastMonthArea':'0',
    'thisMonthReceivedQuantity':'100',
    'thisMonthReceivedArea':'0',
    'thisMonthIssuedQuantity':'23',
    'thisMonthIssuedArea':'0',
    'thisMonthInventoryQuantity':'77',
    'thisMonthInventoryArea':'0',
    },
    {
      'month':'3',
      'unit':'mm',
      'materialCode':'KF2023122101',
      'materialName':'普通钢化玻璃',
      'height':'224.50',
      'thickness':'5.00',
      'width':'120.80',
      'lastMonthQuantity':'100',
      'lastMonthArea':'0',
      'thisMonthReceivedQuantity':'100',
      'thisMonthReceivedArea':'0',
      'thisMonthIssuedQuantity':'23',
      'thisMonthIssuedArea':'0',
      'thisMonthInventoryQuantity':'77',
      'thisMonthInventoryArea':'0',
    },
    {
      'month':'3',
      'unit':'mm',
      'materialCode':'KF2023122101',
      'materialName':'普通钢化玻璃',
      'height':'190.00',
      'thickness':'4.00',
      'width':'90.00',
      'lastMonthQuantity':'100',
      'lastMonthArea':'0',
      'thisMonthReceivedQuantity':'100',
      'thisMonthReceivedArea':'0',
      'thisMonthIssuedQuantity':'23',
      'thisMonthIssuedArea':'0',
      'thisMonthInventoryQuantity':'77',
      'thisMonthInventoryArea':'0',
    },
  ],//table body实际数据
  footerMethod ({ columns, data }) {//页脚函数
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
        // }
        return ''
      })
    ]
  }
})
const  xGrid = ref();
const gridEvents = {
  toolbarButtonClick ({ code }) {
    const $grid = xGrid.value
    if ($grid) {
      switch (code) {
        case 'add': {
          router.push({path: '/main/trader/CreateTrader'})
          /*if($grid.getCheckboxRecords().length==0){
            VXETable.modal.message( '请选择一条数据!')
            return
          }*/
          return;
        }
      }
    }
  },
  toolbarToolClick ({ code }) {
    const $grid = xGrid.value
    if ($grid) {
      switch (code) {
        case 'myPrint': {
          $grid.print()
          break
        }
      }
    }
  },
}
</script>
<template>
  <div class="main-div-customer">
    <el-row gutter="10" >
      <el-col :span="2.5">
        <div class="label-text">查询原片报表日期</div>
      </el-col>
      <el-col :span="4">
        <el-date-picker
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            style="width: 200px;"
        />
      </el-col>
    <el-col span="4">
      <el-button id="searchButton" type="primary" :icon="Search">查询报表</el-button>
    </el-col>
    </el-row>
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
        v-on="gridEvents"
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
      <!--      下拉显示所有信息插槽-->
      <template #content="{ row}">
        <ul class="expand-wrapper">
          <li  v-for="(item,key,index) in row">
            <span style="font-weight: bold">{{key+':  '}}</span>
            <span>{{ item }}</span>
          </li>
        </ul>
      </template>
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">编辑</el-button>
        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
        <div>
          <div v-for="(option, index) in column.filters" :key="index">
            <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
          </div>
        </div>
      </template>
.label-text {
  font-weight: bold;
    </vxe-grid>
  </div>
</template>
<style scoped>
.main-div-customer{
  width: 99%;
  height: 100%;
}
</style>
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue
@@ -1,277 +1,224 @@
<!-- 物料库存 -->
<script lang="ts" setup>
import { ref } from 'vue';
const name = ref('')
const productName = ref('')
const salId = ref('')
let tableData = ref([
  {
    "库存组织":'人工库',
    "物料编码":'700900000000122',
    "物料名称":'夏装 品管',
    "产地":'',
    "库存编号":'KC2006891',
    "宽度":'0.00',
    "高度":'0.00',
    "厚度":'0.00',
    "主单位":'件',
    "安全库存":'0.00',
    "库存数":'20.00',
    "可用库存":'',
    "未领取数量":'',
    "总面积":'0.0000',
    "生产日期":'2016-10-17',
    "保质期":'',
    "库位编号":'',
    "库区":'',
    "库位":'',
    "积压库存":'40',
    "备注":'',
<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/trader/CreateTrader', query: { id: row.id }})
      break
    }
    case 'delete':{
      alert('我接收到子组件传送的删除信息')
      break
    }
  }
}
//子组件接收参数
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'CustomerList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true },//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true
  },
  {
    "库存组织":'人工库',
    "物料编码":'700900000000121',
    "物料名称":'夏装 浅蓝',
    "产地":'',
    "库存编号":'KC2006891',
    "宽度":'0.00',
    "高度":'0.00',
    "厚度":'0.00',
    "主单位":'件',
    "安全库存":'0.00',
    "库存数":'20.00',
    "可用库存":'',
    "未领取数量":'',
    "总面积":'0.0000',
    "生产日期":'2016-10-17',
    "保质期":'',
    "库位编号":'',
    "库区":'',
    "库位":'',
    "积压库存":'40',
    "备注":'',
  filterConfig: {   //筛选配置项
    remote: true
  },
  {
    "库存组织":'人工库',
    "物料编码":'700900000000120',
    "物料名称":'夏装 深蓝',
    "产地":'',
    "库存编号":'KC2006891',
    "宽度":'0.00',
    "高度":'0.00',
    "厚度":'0.00',
    "主单位":'件',
    "安全库存":'0.00',
    "库存数":'20.00',
    "可用库存":'',
    "未领取数量":'',
    "总面积":'0.0000',
    "生产日期":'2016-10-17',
    "保质期":'',
    "库位编号":'',
    "库区":'',
    "库位":'',
    "积压库存":'40',
    "备注":'',
  },{
    "库存组织":'人工库',
    "物料编码":'700900000000119',
    "物料名称":'冬装 品管',
    "产地":'',
    "库存编号":'KC2006891',
    "宽度":'0.00',
    "高度":'0.00',
    "厚度":'0.00',
    "主单位":'件',
    "安全库存":'0.00',
    "库存数":'20.00',
    "可用库存":'',
    "未领取数量":'',
    "总面积":'0.0000',
    "生产日期":'2016-10-17',
    "保质期":'',
    "库位编号":'',
    "库区":'',
    "库位":'',
    "积压库存":'40',
    "备注":'',
  },{
    "库存组织":'人工库',
    "物料编码":'700900000000118',
    "物料名称":'冬装 深蓝',
    "产地":'',
    "库存编号":'KC2006891',
    "宽度":'0.00',
    "高度":'0.00',
    "厚度":'0.00',
    "主单位":'件',
    "安全库存":'0.00',
    "库存数":'20.00',
    "可用库存":'',
    "未领取数量":'',
    "总面积":'0.0000',
    "生产日期":'2016-10-17',
    "保质期":'',
    "库位编号":'',
    "库区":'',
    "库位":'',
    "积压库存":'40',
    "备注":'',
  },{
    "库存组织":'人工库',
    "物料编码":'700900000000117',
    "物料名称":'航吊定期保养卡',
    "产地":'',
    "库存编号":'KC2006891',
    "宽度":'0.00',
    "高度":'0.00',
    "厚度":'0.00',
    "主单位":'件',
    "安全库存":'0.00',
    "库存数":'20.00',
    "可用库存":'',
    "未领取数量":'',
    "总面积":'0.0000',
    "生产日期":'2016-10-17',
    "保质期":'',
    "库位编号":'',
    "库区":'',
    "库位":'',
    "积压库存":'40',
    "备注":'',
  },{
    "库存组织":'人工库',
    "物料编码":'700900000000116',
    "物料名称":'冬装165',
    "产地":'',
    "库存编号":'KC2006891',
    "宽度":'0.00',
    "高度":'0.00',
    "厚度":'0.00',
    "主单位":'件',
    "安全库存":'0.00',
    "库存数":'20.00',
    "可用库存":'',
    "未领取数量":'',
    "总面积":'0.0000',
    "生产日期":'2016-10-17',
    "保质期":'',
    "库位编号":'',
    "库区":'',
    "库位":'',
    "积压库存":'40',
    "备注":'',
  },{
    "库存组织":'人工库',
    "物料编码":'700900000000115',
    "物料名称":'冬装170',
    "产地":'',
    "库存编号":'KC2006891',
    "宽度":'0.00',
    "高度":'0.00',
    "厚度":'0.00',
    "主单位":'件',
    "安全库存":'0.00',
    "库存数":'20.00',
    "可用库存":'',
    "未领取数量":'',
    "总面积":'0.0000',
    "生产日期":'2016-10-17',
    "保质期":'',
    "库位编号":'',
    "库区":'',
    "库位":'',
    "积压库存":'40',
    "备注":'',
  customConfig: {
    storage: true
  },
])
  editConfig: {
    trigger: 'click',
    mode: 'row',
    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: '80' },
    // {title: '操作', width: '110', slots: { default: 'button_slot' },fixed:"left"},
    {field: 'InventoryOrganization', width:'150', title: '库存组织', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } } },
    {field: 'MaterialCode', width: '150',title: '物料编码', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'MaterialName', width: '120',title: '物料名称', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'Origin', width: '100',title: '产地', sortable: true},
    {field: 'InventoryNumber',width: '100', title: '库存编号', sortable: true,showOverflow:"ellipsis"},
    {field: 'Width', width: '80',title: '宽度', sortable: true},
    {field: 'Height',width: '100', title: '高度', sortable: true},
    {field: 'Thickness', width: '100',title: '厚度', sortable: true},
    {field: 'MainUnit',width: '100', title: '主单位', sortable: true},
    {field: 'SafetyStock', width: '100',title: '安全库存', sortable: true},
    {field: 'InventoryCount',width: '100', title: '库存数量', sortable: true},
    {field: 'AvailableInventory', width: '100',title: '可用库存', sortable: true},
    {field: 'UnclaimedQuantity',width: '140', title: '未领取数量', sortable: true},
    {field: 'TotalArea',width: '100', title: '总面积', sortable: true},
    {field: 'ProductionDate',width: '100', title: '生产日期', sortable: true},
    {field: 'ShelfLife',width: '100', title: '保质期', sortable: true},
    {field: 'LocationNumber',width: '100', title: '库位编号', sortable: true},
    {field: 'StorageArea',width: '100', title: '存储区域', sortable: true},
    {field: 'Location',width: '100', title: '库位', sortable: true},
    {field: 'BacklogInventory',width: '100', title: '积压库存', sortable: true},
    {field: 'remark',width: '80', title: '备注', sortable: true},
  ],//表头按钮
  toolbarConfig: {
    // buttons: [{
    //   'name': '新增'
    // }],
    import: false,
    export: true,
    print: true,
    zoom: true,
    custom: true
  },
  data:  [
    {
      "InventoryOrganization": "人工库",
      "MaterialCode": "700900000000115",
      "MaterialName": "冬装170",
      "Origin": "China",
      "InventoryNumber": "KC2006891",
      "Width": '',
      "Height": "",
      "Thickness": "",
      "MainUnit": "件",
      "SafetyStock": "5",
      "InventoryCount": "20",
      "AvailableInventory": "9",
      "UnclaimedQuantity": "2",
      "TotalArea": "0",
      "ProductionDate": "2016-10-17",
      "ShelfLife": "0",
      "LocationNumber": "0",
      "StorageArea": "0",
      "Location": "0",
      "BacklogInventory": "40",
      "remark": "测试",
    },
    {
      "InventoryOrganization": "人工库",
      "MaterialCode": "700900000000115",
      "MaterialName": "冬装175",
      "Origin": "China",
      "InventoryNumber": "KC2006891",
      "Width": '',
      "Height": "",
      "Thickness": "",
      "MainUnit": "件",
      "SafetyStock": "5",
      "InventoryCount": "20",
      "AvailableInventory": "9",
      "UnclaimedQuantity": "2",
      "TotalArea": "0",
      "ProductionDate": "2016-10-17",
      "ShelfLife": "0",
      "LocationNumber": "0",
      "StorageArea": "0",
      "Location": "0",
      "BacklogInventory": "40",
      "remark": "测试",
    },{
      "InventoryOrganization": "人工库",
      "MaterialCode": "700900000000115",
      "MaterialName": "冬装180",
      "Origin": "China",
      "InventoryNumber": "KC2006891",
      "Width": '',
      "Height": "",
      "Thickness": "",
      "MainUnit": "件",
      "SafetyStock": "2",
      "InventoryCount": "23",
      "AvailableInventory": "4",
      "UnclaimedQuantity": "3",
      "TotalArea": "0",
      "ProductionDate": "2016-10-17",
      "ShelfLife": "0",
      "LocationNumber": "0",
      "StorageArea": "0",
      "Location": "0",
      "BacklogInventory": "40",
      "remark": "测试",
    },
  ],//table body实际数据
  footerMethod ({ columns, data }) {//页脚函数
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
        // }
        return ''
      })
    ]
  }
})
</script>
<template>
  <div>
    <div>
      <el-form  size="medium" >
  <div class="main-div-customer">
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
<!--        <el-row gutter="5">-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="name" placeholder="请输入物料编码" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="productName" placeholder="请输入宽" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="salId" placeholder="请输入高" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="name" placeholder="请输入物料名称" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col span="4">-->
<!--            <el-button id="searchWarehousing" type="primary" :icon="Search1">线边仓储查询</el-button>-->
<!--          </el-col>-->
<!--          <el-col span="4">-->
<!--            <el-button id="searchButton" type="primary" :icon="Search">查询</el-button>-->
<!--          </el-col>-->
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
      <!--      下拉显示所有信息插槽-->
      <template #content="{ row}">
        <ul class="expand-wrapper">
          <li  v-for="(item,key,index) in row">
            <span style="font-weight: bold">{{key+':  '}}</span>
            <span>{{ item }}</span>
          </li>
        </ul>
      </template>
<!--        </el-row>-->
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">编辑</el-button>
        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button>
      </template>
        <!-- <el-form-item size="large">
          <el-button type="primary" @click="submitForm">查询</el-button>
          <el-button @click="resetForm">重置</el-button>
        </el-form-item>-->
        <el-row gutter="5">
      <template #num1_filter="{ column, $panel }">
        <div>
          <div v-for="(option, index) in column.filters" :key="index">
            <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
          </div>
        </div>
      </template>
          <el-col :span="4">
          </el-col>
        </el-row>
      </el-form>
    </div>
    <!-- 表格开始 -->
    <div>
      <el-table :data="tableData" border style="width: 100%">
        <el-table-column prop="库存组织" label="库存组织" width="180" />
        <el-table-column prop="物料编码" label="物料编码" width="180" />
        <el-table-column prop="物料名称" label="物料名称" width="180"/>
        <el-table-column prop="产地" label="产地" width="180"/>
        <el-table-column prop="宽度" label="宽度" width="180"/>
        <el-table-column prop="高度" label="高度" width="180"/>
        <el-table-column prop="厚度" label="厚度" width="180"/>
        <el-table-column prop="主单位" label="主单位" width="180"/>
        <el-table-column prop="安全库存" label="安全库存" width="180"/>
        <el-table-column prop="库存数" label="库存数" width="180"/>
        <el-table-column prop="可用库存" label="可用库存" width="180"/>
        <el-table-column prop="未领取数量" label="未领取数量" width="180"/>
        <el-table-column prop="总面积" label="总面积" width="180"/>
        <el-table-column prop="生产日期" label="生产日期" width="180"/>
        <el-table-column prop="保质期" label="保质期" width="180"/>
        <el-table-column prop="库位编号" label="库位编号" width="180"/>
        <el-table-column prop="库区" label="库区" width="180"/>
        <el-table-column prop="库位" label="库位" width="180"/>
        <el-table-column prop="积压库存" label="积压库存" width="180"/>
        <el-table-column prop="备注" label="备注" width="180"/>
        <el-table-column fixed="left" label="操作" width="120">
          <template #default>
            <el-button link type="primary" size="small" @click="handleClick"
            >修改</el-button
            >
            <el-button link type="primary" size="small">审核</el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>
    <!-- 表格结束 -->
    </vxe-grid>
  </div>
</template>
<style>
<style scoped>
.main-div-customer{
  width: 99%;
  height: 100%;
}
</style>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue
@@ -1,156 +1,267 @@
<!--产品入库-->
<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/productStock/OrderAllocation', query: { id: row.id }})
      break
    }
    case 'back':{
      router.push({path: '/main/productStock/FinishedProductRework', query: { id: row.id }})
      break
    }
    case 'out' :{
      //alert('我接收到子组件传送的编辑信息')
      router.push({path: '/main/productStock/FinishedGoodsIssue', query: { id: row.id }})
      break
    }
  }
}
<script lang="ts" setup>
import {ref} from "vue";
let tableData = ref([
  {
    "销售单号":'NG23072003',
    "楼层编号":'10059419',
    "成品编号":'0604000027',
    "成品名称":'NG23072003A01',
    "产品名称":'',
    "长":'1075.00',
    "宽":'440.00',
    "业务员":'陈宗凯',
    "客户名称":'71',
    "项目名称":'钢化玻璃',
    "订序":'1',
    "订单总数":'3800',
    "数量":'1140',
    "完工":'1140',
    "面积":'505.270000',
    "流程卡号":'NG23112311A01',
    "已入数量":'0',
    "下工序":'成品',
    "批次":'',
  },{
    "销售单号":'NG23072003',
    "楼层编号":'10059419',
    "成品编号":'0604000027',
    "成品名称":'NG23072003A01',
    "产品名称":'',
    "长":'1075.00',
    "宽":'440.00',
    "业务员":'陈宗凯',
    "客户名称":'71',
    "项目名称":'钢化玻璃',
    "订序":'1',
    "订单总数":'3800',
    "数量":'1140',
    "完工":'1140',
    "面积":'505.270000',
    "流程卡号":'NG23112311A01',
    "已入数量":'0',
    "下工序":'成品',
    "批次":'',
  },{
    "销售单号":'NG23072003',
    "楼层编号":'10059419',
    "成品编号":'0604000027',
    "成品名称":'NG23072003A01',
    "产品名称":'',
    "长":'1075.00',
    "宽":'440.00',
    "业务员":'陈宗凯',
    "客户名称":'71',
    "项目名称":'钢化玻璃',
    "订序":'1',
    "订单总数":'3800',
    "数量":'1140',
    "完工":'1140',
    "面积":'505.270000',
    "流程卡号":'NG23112311A01',
    "已入数量":'0',
    "下工序":'成品',
    "批次":'',
  },{
    "销售单号":'NG23072003',
    "楼层编号":'10059419',
    "成品编号":'0604000027',
    "成品名称":'NG23072003A01',
    "产品名称":'',
    "长":'1075.00',
    "宽":'440.00',
    "业务员":'陈宗凯',
    "客户名称":'71',
    "项目名称":'钢化玻璃',
    "订序":'1',
    "订单总数":'3800',
    "数量":'1140',
    "完工":'1140',
    "面积":'505.270000',
    "流程卡号":'NG23112311A01',
    "已入数量":'0',
    "下工序":'成品',
    "批次":'',
//子组件接收参数
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'CustomerList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true },//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true
  },
])
const checked1 = ref(true)
  filterConfig: {   //筛选配置项
    remote: true
  },
  customConfig: {
    storage: true
  },
  editConfig: {
    trigger: 'click',
    mode: 'row',
    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: '80' },
    // {title: '操作', width: '220', slots: { default: 'button_slot' },fixed:"left"},
    {field: 'SalesOrderNumber', width: '150',title: '销售单号', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'floorNumber', width: '120',title: '楼层编号', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedProductNumber',width: '100', title: '成品编号', sortable: true,showOverflow:"ellipsis"},
    {field: 'finishedProductName', width: '100',title: ' 成品名称', sortable: true},
    {field: 'productName',width: '100', title: '产品名称', sortable: true},
    {field: 'length', width: '100',title: '长度', sortable: true},
    {field: 'width',width: '100', title: '宽度', sortable: true},
    {field: 'salesperson', width: '100',title: '业务员', sortable: true},
    {field: 'customerName',width: '100', title: '客户名称', sortable: true},
    {field: 'projectName', width: '100',title: '项目名称', sortable: true},
    {field: 'orderNumber',width: '140', title: '订序', sortable: true},
    {field: 'totalOrders',width: '140', title: '订单总数', sortable: true},
    {field: 'quantity',width: '100', title: '数量', sortable: true},
    {field: 'completion',width: '140', title: '完工', sortable: true},
    {field: 'area',width: '140', title: '面积', sortable: true},
    {field: 'processCardNumber',width: '100', title: '流程卡号', sortable: true},
    {field: 'quantityEntered',width: '100', title: '已入数量', sortable: true},
    {field: 'nextProcess',width: '100', title: ' 下工序', sortable: true},
    {field: 'Batch',width: '100', title: '批次', sortable: true},
  ],//表头按钮
  toolbarConfig: {
    buttons: [{
      'name': '确认入库',status: 'primary',
      'code':'add'
    }
      ],
    import: false,
    export: true,
    print: true,
    zoom: true,
    custom: true
  },
  data:  [
    {
      "SalesOrderNumber": "NG23072003",
      "floorNumber": "10059419",
      "finishedProductNumber": "0604000027",
      "finishedProductName": "NG23072003A01",
      "productName": '钢化玻璃',
      "length": "1075.00",
      "width": "440.00",
      "salesperson": "小岳",
      "customerName": "大头",
      "projectName": "Tempered Glass",
      "orderNumber": "1",
      "totalOrders": "3800",
      "quantity": "1140",
      "completion":'1140',
      "area": "505.270000",
      "processCardNumber": "NG23112311A01",
      "quantityEntered": "0",
      "nextProcess": "Finished Product",
      "Batch": "一",
    },
    {
      "SalesOrderNumber": "NG23072003",
      "floorNumber": "10059419",
      "finishedProductNumber": "0604000027",
      "finishedProductName": "NG23072003A01",
      "productName": '钢化玻璃',
      "length": "1075.00",
      "width": "440.00",
      "salesperson": "小岳",
      "customerName": "大头",
      "projectName": "Tempered Glass",
      "orderNumber": "1",
      "totalOrders": "3800",
      "quantity": "1140",
      "completion":'1140',
      "area": "505.270000",
      "processCardNumber": "NG23112311A01",
      "quantityEntered": "0",
      "nextProcess": "Finished Product",
      "Batch": "一",
    },
    {
      "SalesOrderNumber": "NG23072003",
      "floorNumber": "10059419",
      "finishedProductNumber": "0604000027",
      "finishedProductName": "NG23072003A01",
      "productName": '钢化玻璃',
      "length": "1075.00",
      "width": "440.00",
      "salesperson": "小岳",
      "customerName": "大头",
      "projectName": "Tempered Glass",
      "orderNumber": "1",
      "totalOrders": "3800",
      "quantity": "1140",
      "completion":'1140',
      "area": "505.270000",
      "processCardNumber": "NG23112311A01",
      "quantityEntered": "0",
      "nextProcess": "Finished Product",
      "Batch": "一",
    },
    {
      "SalesOrderNumber": "NG23072003",
      "floorNumber": "10059419",
      "finishedProductNumber": "0604000027",
      "finishedProductName": "NG23072003A01",
      "productName": '钢化玻璃',
      "length": "1075.00",
      "width": "440.00",
      "salesperson": "小岳",
      "customerName": "大头",
      "projectName": "Tempered Glass",
      "orderNumber": "1",
      "totalOrders": "3800",
      "quantity": "1140",
      "completion":'1140',
      "area": "505.270000",
      "processCardNumber": "NG23112311A01",
      "quantityEntered": "0",
      "nextProcess": "Finished Product",
      "Batch": "一",
    },
  ],//table body实际数据
  footerMethod ({ columns, data }) {//页脚函数
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
        // }
        return ''
      })
    ]
  }
})
const gridEvents = {
  toolbarButtonClick ({ code }) {
    const $grid = xGrid.value
    if ($grid) {
      switch (code) {
        case 'add': {
          router.push({path: '/main/trader/CreateTrader'})
          /*if($grid.getCheckboxRecords().length==0){
            VXETable.modal.message( '请选择一条数据!')
            return
          }*/
          return;
        }
      }
    }
  },
}
</script>
<template>
<div>
  <div>
    <el-form  size="medium" >
  <div class="main-div-customer">
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
        v-on="gridEvents"
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
      <!--      下拉显示所有信息插槽-->
      <template #content="{ row}">
        <ul class="expand-wrapper">
          <li  v-for="(item,key,index) in row">
            <span style="font-weight: bold">{{key+':  '}}</span>
            <span>{{ item }}</span>
          </li>
        </ul>
      </template>
<!--      <el-row gutter="7">-->
<!--        <el-col :span="4">-->
<!--          <el-input v-model="name" placeholder="销售单号" style="width: 200px; height: 30px;" />-->
<!--        </el-col>-->
<!--        <el-col :span="4">-->
<!--          <el-input v-model="productName" placeholder="流程卡号" style="width: 200px; height: 30px;" />-->
<!--        </el-col>-->
<!--        <el-col :span="4">-->
<!--          <el-input v-model="salId" placeholder="订序" style="width: 200px; height: 30px;" />-->
<!--        </el-col>-->
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
<!--        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">订单调拨</el-button>-->
<!--        <el-button @click="getTableRow(row,'out')" link type="primary" size="small">成品领出</el-button>-->
<!--        <el-button @click="getTableRow(row,'back')" link type="primary" size="small">成品返工</el-button>-->
      </template>
<!--        <el-col :span="4">-->
<!--          <el-button id="searchButton" type="primary" :icon="Search" style="width: 100px; height: 25px">查询</el-button>-->
<!--        </el-col>-->
<!--      </el-row>-->
      <el-row gutter="7">
        <el-col :span="4">
          <el-input v-model="name" placeholder="制单员" style="width: 200px; height: 30px;" />
        </el-col>
        <el-col :span="4">
          <el-input v-model="productName" placeholder="工号" style="width: 200px; height: 30px;" />
        </el-col>
        <el-col :span="4">
          <el-input v-model="salId" placeholder="库位" style="width: 200px; height: 30px;" />
        </el-col>
      <template #num1_filter="{ column, $panel }">
        <div>
          <div v-for="(option, index) in column.filters" :key="index">
            <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
          </div>
        </div>
      </template>
        <el-col :span="4">
          <el-button id="searchButton" type="primary" :icon="Search" style="width: 100px; height: 25px">确定</el-button>
        </el-col>
      </el-row>
    </el-form>
    <div>
      <el-table :data="tableData" border style="width: 100%">
        <el-table-column prop="销售单号" label="销售单号" width="100" />
        <el-table-column prop="楼层编号" label="楼层编号" width="100" />
        <el-table-column prop="成品编号" label="成品编号" width="100"/>
        <el-table-column prop="成品名称" label="成品名称" width="180"/>
        <el-table-column prop="长" label="长" width="80"/>
        <el-table-column prop="宽" label="宽" width="80"/>
        <el-table-column prop="业务员" label="业务员" width="100"/>
        <el-table-column prop="客户名称" label="客户名称" width="100"/>
        <el-table-column prop="项目名称" label="项目名称" width="180"/>
        <el-table-column prop="订序" label="订序" width="80"/>
        <el-table-column prop="订单总数" label="订单总数" width="100"/>
        <el-table-column prop="数量" label="数量" width="80"/>
        <el-table-column prop="完工" label="完工" width="80"/>
        <el-table-column prop="面积" label="面积" width="80"/>
        <el-table-column prop="流程卡号" label="流程卡号" width="100"/>
        <el-table-column prop="已入数量" label="已入数量" width="100"/>
        <el-table-column prop="下工序" label="下工序" width="80"/>
        <el-table-column prop="批次" label="批次" width="80"/>
        <el-table-column prop="选择" label="选择"  type="selection" width="80"/>
      </el-table>
    </div>
    </vxe-grid>
  </div>
</div>
</template>
<style>
<style scoped>
.main-div-customer{
  width: 99%;
  height: 100%;
}
</style>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue
@@ -1,119 +1,247 @@
<!-- 成品领出 -->
<!--成品领出-->
<script lang="ts" setup>
import {ref} from "vue";
<script setup>
let tableData = ref([
  {
    "销售单号":'NG23121309',
    "项目名称":'钢化玻璃',
    "客户编号":'89',
    "客户名称":'',
    "流程卡号":'NG23121309A01',
    "成品编号":'0604000299',
    "箱架号":'0',
    "成品名称":'3.2mm拱形钢化玻璃',
    "长":'1610.00',
    "宽":'520.00',
    "厚":'3.20',
    "数量":'122.00',
    "单片面积":'0.8372',
    "总面积":'102.1384',
    "库区":'库区',
    "库位":'0',
  },  {
    "销售单号":'NG23121309',
    "项目名称":'钢化玻璃',
    "客户编号":'89',
    "客户名称":'',
    "流程卡号":'NG23121309A01',
    "成品编号":'0604000299',
    "箱架号":'0',
    "成品名称":'3.2mm拱形钢化玻璃',
    "长":'1610.00',
    "宽":'520.00',
    "厚":'3.20',
    "数量":'122.00',
    "单片面积":'0.8372',
    "总面积":'102.1384',
    "库区":'库区',
    "库位":'0',
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/productStock/OrderAllocation', query: { id: row.id }})
    //   break
    // }
    // case 'back':{
    //   router.push({path: '/main/productStock/FinishedProductRework', query: { id: row.id }})
    //   break
    // }
    // case 'out' :{
    //   //alert('我接收到子组件传送的编辑信息')
    //   router.push({path: '/main/productStock/FinishedGoodsIssue', query: { id: row.id }})
    //   break
    // }
  }
}
const gridEvents = {
  toolbarButtonClick ({ code }) {
    const $grid = xGrid.value
    if ($grid) {
      switch (code) {
        case 'add': {
          router.push({path: '/main/trader/CreateTrader'})
          /*if($grid.getCheckboxRecords().length==0){
            VXETable.modal.message( '请选择一条数据!')
            return
          }*/
          return;
        }
      }
    }
  },
  {
    "销售单号":'NG23121309',
    "项目名称":'钢化玻璃',
    "客户编号":'89',
    "客户名称":'',
    "流程卡号":'NG23121309A01',
    "成品编号":'0604000299',
    "箱架号":'0',
    "成品名称":'3.2mm拱形钢化玻璃',
    "长":'1610.00',
    "宽":'520.00',
    "厚":'3.20',
    "数量":'122.00',
    "单片面积":'0.8372',
    "总面积":'102.1384',
    "库区":'库区',
    "库位":'0',
  toolbarToolClick ({ code }) {
    const $grid = xGrid.value
    if ($grid) {
      switch (code) {
        case 'myPrint': {
          $grid.print()
          break
        }
      }
    }
  },
])
}
//子组件接收参数
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'CustomerList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true },//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true
  },
  filterConfig: {   //筛选配置项
    remote: true
  },
  customConfig: {
    storage: true
  },
  editConfig: {
    trigger: 'click',
    mode: 'row',
    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: '80' },
    // {title: '操作', width: '220', slots: { default: 'button_slot' },fixed:"left"},
    {field: 'SalesOrderNumber', width: '150',title: '销售单号', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'ProjectName', width: '120',title: '项目名称', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'ProcessCardNumber',width: '100', title: '流程卡号', sortable: true,showOverflow:"ellipsis"},
    {field: 'FinishedProductNumber', width: '100',title: '成品编号', sortable: true},
    {field: 'Quantity',width: '140', title: '数量', sortable: true},
    {field: 'DiaoQuantity',width: '140', title: '领出数量',editRender: { name: 'input', attrs: { placeholder: '' } }, sortable: true},
    {field: 'ProductNumber',width: '100', title: '产品编号', sortable: true},
    {field: 'CustomerNumber', width: '100',title: '客户编号', sortable: true},
    {field: 'CustomerName',width: '100', title: '客户名称', sortable: true},
    {field: 'Length', width: '100',title: '长度', sortable: true},
    {field: 'Width',width: '100', title: '宽度', sortable: true},
    {field: 'Thickness', width: '100',title: '厚度', sortable: true},
    {field: 'SingleArea',width: '140', title: '单片面积', sortable: true},
    {field: 'TotalArea',width: '100', title: '总面积', sortable: true},
    {field: 'StorageArea',width: '100', title: '库区', sortable: true},
    {field: 'Location',width: '100', title: '库位', sortable: true},
  ],//表头按钮
  toolbarConfig: {
    buttons: [{
      'name': '确认领出',
      status: 'primary'
    },{
      'name': '领出记录',
    }],
    import: false,
    export: true,
    print: true,
    zoom: true,
    custom: true
  },
  data:  [
    {
      "SalesOrderNumber": "NG23072003",
      "ProjectName": "钢化玻璃",
      "ProcessCardNumber": "NG23072003A01",
      'FinishedProductNumber':'',
      'FinishedProductName':'',
      'BoxNumber':'',
      "CustomerNumber": "KD0071",
      "CustomerName": "件",
      "Length": "1075.00",
      "Width": "440.00",
      "Thickness": "3.00",
      "Quantity": "360",
      "SingleArea": "0.473000",
      "TotalArea": "170.28",
      "StorageArea": "0.47",
      "Location": "170.28",
    },{
      "SalesOrderNumber": "NG23072003",
      "ProjectName": "钢化玻璃",
      "ProcessCardNumber": "NG23072003A01",
      'FinishedProductNumber':'',
      'FinishedProductName':'',
      'BoxNumber':'',
      "CustomerNumber": "KD0071",
      "CustomerName": "件",
      "Length": "1075.00",
      "Width": "440.00",
      "Thickness": "3.00",
      "Quantity": "360",
      "SingleArea": "0.473000",
      "TotalArea": "170.28",
      "StorageArea": "0.47",
      "Location": "170.28",
    },{
      "SalesOrderNumber": "NG23072003",
      "ProjectName": "钢化玻璃",
      "ProcessCardNumber": "NG23072003A01",
      'FinishedProductNumber':'',
      'FinishedProductName':'',
      'BoxNumber':'',
      "CustomerNumber": "KD0071",
      "CustomerName": "件",
      "Length": "1075.00",
      "Width": "440.00",
      "Thickness": "3.00",
      "Quantity": "360",
      "SingleArea": "0.473000",
      "TotalArea": "170.28",
      "StorageArea": "0.47",
      "Location": "170.28",
    },
  ],//table body实际数据
  footerMethod ({ columns, data }) {//页脚函数
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
        // }
        return ''
      })
    ]
  }
})
</script>
<template>
  <div>
    <div>
      <el-form  size="medium" >
  <div class="main-div-customer">
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
        <el-row gutter="5">
<!--          <el-col :span="4">-->
<!--            <el-input v-model="name" placeholder="请输客户名称" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="name" placeholder="请输项目名称" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="name" placeholder="请输销售单号" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
          <el-col :span="2.5">
            <el-button id="searchButton" type="primary" :icon="Search">领出记录</el-button>
          </el-col>
          <el-col :span="4">
            <el-button id="searchButton" type="primary" :icon="Search">查询</el-button>
          </el-col>
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
      <!--      下拉显示所有信息插槽-->
      <template #content="{ row}">
        <ul class="expand-wrapper">
          <li  v-for="(item,key,index) in row">
            <span style="font-weight: bold">{{key+':  '}}</span>
            <span>{{ item }}</span>
          </li>
        </ul>
      </template>
        </el-row>
      </el-form>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%;">
        <el-table-column prop="销售单号" label="销售单号" width="180" style="text-align: center"/>
        <el-table-column prop="项目名称" label="项目名称" width="180" />
        <el-table-column prop="客户编号" label="客户编号" width="180"/>
        <el-table-column prop="客户名称" label="客户名称" width="180"/>
        <el-table-column prop="流程卡号" label="流程卡号" width="180"/>
        <el-table-column prop="成品编号" label="成品编号" width="180"/>
        <el-table-column prop="箱架号" label="箱架号" width="180"/>
        <el-table-column prop="成品名称" label="成品名称" width="180"/>
        <el-table-column prop="长" label="长" width="180"/>
        <el-table-column prop="宽" label="宽" width="180"/>
        <el-table-column prop="厚" label="厚" width="180"/>
        <el-table-column prop="数量" label="数量" width="180"/>
        <el-table-column prop="单片面积" label="单片面积" width="180"/>
        <el-table-column prop="总面积" label="总面积" width="180"/>
        <el-table-column prop="库区" label="库区" width="180"/>
        <el-table-column prop="库位" label="库位" width="180"/>
        <el-table-column fixed="left" label="操作" width="80">
          <template #default>
            <el-button link type="primary" size="small" @click="handleClick(row)"
            >编辑</el-button>
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">订单调拨</el-button>
        <el-button @click="getTableRow(row,'out')" link type="primary" size="small">成品领出</el-button>
        <el-button @click="getTableRow(row,'back')" link type="primary" size="small">成品返工</el-button>
      </template>
          </template>
        </el-table-column>
      </el-table>
    </div>
      <template #num1_filter="{ column, $panel }">
        <div>
          <div v-for="(option, index) in column.filters" :key="index">
            <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
          </div>
        </div>
      </template>
    </vxe-grid>
  </div>
</template>
<style>
<style scoped>
.main-div-customer{
  width: 99%;
  height: 100%;
}
</style>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue
@@ -1,200 +1,289 @@
<!--成品出库-->
<script setup>
<script lang="ts" setup>
import {ref} from "vue";
import {Search} from "@element-plus/icons-vue";
import {defineComponent} from "vue";
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/productStock/OrderAllocation', query: { id: row.id }})
      break
    }
    case 'back':{
      router.push({path: '/main/productStock/FinishedProductRework', query: { id: row.id }})
      break
    }
    case 'out' :{
      //alert('我接收到子组件传送的编辑信息')
      router.push({path: '/main/productStock/FinishedGoodsIssue', query: { id: row.id }})
      break
    }
  }
}
//子组件接收参数
let tableData = ref([
  {
    "送货单号":'JG23121112',
    "销售单号":'NG23120610',
    "客户名称":'中山市横栏镇环照灯饰厂',
    "项目名称":'钢化镜',
    "业务员":'王良',
    "订序":'1',
    "楼层编号":'813404',
    "订单数":'346',
    "长":'813.00',
    "宽":'404.00',
    "厚度":'4.00',
    "总数量":'176.00',
    "总面积":'58.0800',
    "箱号":'',
    "报表日期":'2023-23-13',
    "成品编号":'0601000622',
    "成品名称":'4mm方形钢化镜',
    "数量":'176',
    "状态":'已出库',
    "备注":'',
  }, {
    "送货单号":'JG23121112',
    "销售单号":'NG23120610',
    "客户名称":'中山市横栏镇环照灯饰厂',
    "项目名称":'钢化镜',
    "业务员":'王良',
    "订序":'1',
    "楼层编号":'813404',
    "订单数":'346',
    "长":'813.00',
    "宽":'404.00',
    "厚度":'4.00',
    "总数量":'176.00',
    "总面积":'58.0800',
    "箱号":'',
    "报表日期":'2023-23-13',
    "成品编号":'0601000622',
    "成品名称":'4mm方形钢化镜',
    "数量":'176',
    "状态":'已出库',
    "备注":'',
  }, {
    "送货单号":'JG23121112',
    "销售单号":'NG23120610',
    "客户名称":'中山市横栏镇环照灯饰厂',
    "项目名称":'钢化镜',
    "业务员":'王良',
    "订序":'1',
    "楼层编号":'813404',
    "订单数":'346',
    "长":'813.00',
    "宽":'404.00',
    "厚度":'4.00',
    "总数量":'176.00',
    "总面积":'58.0800',
    "箱号":'',
    "报表日期":'2023-23-13',
    "成品编号":'0601000622',
    "成品名称":'4mm方形钢化镜',
    "数量":'176',
    "状态":'已出库',
    "备注":'',
  }, {
    "送货单号":'JG23121112',
    "销售单号":'NG23120610',
    "客户名称":'中山市横栏镇环照灯饰厂',
    "项目名称":'钢化镜',
    "业务员":'王良',
    "订序":'1',
    "楼层编号":'813404',
    "订单数":'346',
    "长":'813.00',
    "宽":'404.00',
    "厚度":'4.00',
    "总数量":'176.00',
    "总面积":'58.0800',
    "箱号":'',
    "报表日期":'2023-23-13',
    "成品编号":'0601000622',
    "成品名称":'4mm方形钢化镜',
    "数量":'176',
    "状态":'已出库',
    "备注":'',
  }, {
    "送货单号":'JG23121112',
    "销售单号":'NG23120610',
    "客户名称":'中山市横栏镇环照灯饰厂',
    "项目名称":'钢化镜',
    "业务员":'王良',
    "订序":'1',
    "楼层编号":'813404',
    "订单数":'346',
    "长":'813.00',
    "宽":'404.00',
    "厚度":'4.00',
    "总数量":'176.00',
    "总面积":'58.0800',
    "箱号":'',
    "报表日期":'2023-23-13',
    "成品编号":'0601000622',
    "成品名称":'4mm方形钢化镜',
    "数量":'176',
    "状态":'已出库',
    "备注":'',
  }, {
    "送货单号":'JG23121112',
    "销售单号":'NG23120610',
    "客户名称":'中山市横栏镇环照灯饰厂',
    "项目名称":'钢化镜',
    "业务员":'王良',
    "订序":'1',
    "楼层编号":'813404',
    "订单数":'346',
    "长":'813.00',
    "宽":'404.00',
    "厚度":'4.00',
    "总数量":'176.00',
    "总面积":'58.0800',
    "箱号":'',
    "报表日期":'2023-23-13',
    "成品编号":'0601000622',
    "成品名称":'4mm方形钢化镜',
    "数量":'176',
    "状态":'已出库',
    "备注":'',
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'CustomerList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true },//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true
  },
  filterConfig: {   //筛选配置项
    remote: true
  },
  customConfig: {
    storage: true
  },
  editConfig: {
    trigger: 'click',
    mode: 'row',
    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: '80' },
    {title: '操作', width: '80', slots: { default: 'button_slot' },fixed:"left"},
    {field: 'DeliveryOrderNumber', width:'150', title: '送货单号', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } } },
    {field: 'SalesOrderNumber', width: '150',title: '销售单号', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'ProjectName', width: '120',title: '项目名称', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'ProductName', width: '100',title: '成品名称', sortable: true},
    {field: 'ProductNumber',width: '100', title: '成品编号', sortable: true},
    {field: 'CustomerName',width: '100', title: '客户名称', sortable: true},
    {field: 'Length', width: '100',title: '长度', sortable: true},
    {field: 'Width',width: '100', title: '宽度', sortable: true},
    {field: 'Thickness', width: '100',title: '厚度', sortable: true},
    {field: 'TotalQuantity',width: '140', title: '总数量', sortable: true},
    {field: 'TotalArea',width: '100', title: '总面积', sortable: true},
    {field: 'FloorNumber',width: '100', title: '楼层编号', sortable: true},
    {field: 'OrderNumber',width: '100', title: '订序', sortable: true},
    {field: 'Salesman',width: '100', title: '业务员', sortable: true},
    {field: 'BoxNumber',width: '100', title: '箱号', sortable: true},
    {field: 'Quantity',width: '100', title: '数量', sortable: true},
    {field: 'ReportingDate',width: '140', title: '报表日期', sortable: true},
    {field: 'OrderQuantity',width: '100', title: '订单数', sortable: true},
    {field: 'Status',width: '100', title: '状态', sortable: true},
    {field: 'remark',width: '80', title: '备注', sortable: true},
  ],//表头按钮
  toolbarConfig: {
    buttons: [{
      'name': '确认出库',
      status: 'primary'
    }],
    import: false,
    export: true,
    print: true,
    zoom: true,
    custom: true
  },
  data:  [
    {
      "DeliveryOrderNumber": "1",
      "SalesOrderNumber": "NG23072003",
      "ProjectName": "钢化玻璃",
      "CustomerName": "李二牛",
      "Salesman": "小岳",
      "OrderNumber": '7',
      "FloorNumber": "06040000022",
      "OrderQuantity": "7",
      "Length": "1230.00",
      "Width": "1075.00",
      "Thickness": "6。700",
      "TotalQuantity": "100.00",
      "TotalArea": "360.80",
      "BoxNumber": "06",
      "ReportingDate": "2023-12-22",
      "ProductNumber": "NG2312220001",
      "ProductName": "超级玻璃",
      "Quantity": "360",
      "Status": "已调架",
      "remark": "测试",
    },  {
      "DeliveryOrderNumber": "1",
      "SalesOrderNumber": "NG23072003",
      "ProjectName": "钢化玻璃",
      "CustomerName": "李二牛",
      "Salesman": "小岳",
      "OrderNumber": '7',
      "FloorNumber": "06040000022",
      "OrderQuantity": "7",
      "Length": "1230.00",
      "Width": "1075.00",
      "Thickness": "6。700",
      "TotalQuantity": "100.00",
      "TotalArea": "360.80",
      "BoxNumber": "06",
      "ReportingDate": "2023-12-22",
      "ProductNumber": "NG2312220001",
      "ProductName": "超级玻璃",
      "Quantity": "360",
      "Status": "已调架",
      "remark": "测试",
    },  {
      "DeliveryOrderNumber": "1",
      "SalesOrderNumber": "NG23072003",
      "ProjectName": "钢化玻璃",
      "CustomerName": "李二牛",
      "Salesman": "小岳",
      "OrderNumber": '7',
      "FloorNumber": "06040000022",
      "OrderQuantity": "7",
      "Length": "1230.00",
      "Width": "1075.00",
      "Thickness": "6。700",
      "TotalQuantity": "100.00",
      "TotalArea": "360.80",
      "BoxNumber": "06",
      "ReportingDate": "2023-12-22",
      "ProductNumber": "NG2312220001",
      "ProductName": "超级玻璃",
      "Quantity": "360",
      "Status": "已调架",
      "remark": "测试",
    },  {
      "DeliveryOrderNumber": "1",
      "SalesOrderNumber": "NG23072003",
      "ProjectName": "钢化玻璃",
      "CustomerName": "李二牛",
      "Salesman": "小岳",
      "OrderNumber": '7',
      "FloorNumber": "06040000022",
      "OrderQuantity": "7",
      "Length": "1230.00",
      "Width": "1075.00",
      "Thickness": "6。700",
      "TotalQuantity": "100.00",
      "TotalArea": "360.80",
      "BoxNumber": "06",
      "ReportingDate": "2023-12-22",
      "ProductNumber": "NG2312220001",
      "ProductName": "超级玻璃",
      "Quantity": "360",
      "Status": "已调架",
      "remark": "测试",
    },  {
      "DeliveryOrderNumber": "1",
      "SalesOrderNumber": "NG23072003",
      "ProjectName": "钢化玻璃",
      "CustomerName": "李二牛",
      "Salesman": "小岳",
      "OrderNumber": '7',
      "FloorNumber": "06040000022",
      "OrderQuantity": "7",
      "Length": "1230.00",
      "Width": "1075.00",
      "Thickness": "6。700",
      "TotalQuantity": "100.00",
      "TotalArea": "360.80",
      "BoxNumber": "06",
      "ReportingDate": "2023-12-22",
      "ProductNumber": "NG2312220001",
      "ProductName": "超级玻璃",
      "Quantity": "360",
      "Status": "已调架",
      "remark": "测试",
    },  {
      "DeliveryOrderNumber": "1",
      "SalesOrderNumber": "NG23072003",
      "ProjectName": "钢化玻璃",
      "CustomerName": "李二牛",
      "Salesman": "小岳",
      "OrderNumber": '7',
      "FloorNumber": "06040000022",
      "OrderQuantity": "7",
      "Length": "1230.00",
      "Width": "1075.00",
      "Thickness": "6。700",
      "TotalQuantity": "100.00",
      "TotalArea": "360.80",
      "BoxNumber": "06",
      "ReportingDate": "2023-12-22",
      "ProductNumber": "NG2312220001",
      "ProductName": "超级玻璃",
      "Quantity": "360",
      "Status": "已调架",
      "remark": "测试",
    },
]);
  ],//table body实际数据
  footerMethod ({ columns, data }) {//页脚函数
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
        // }
        return ''
      })
    ]
  }
})
</script>
<template>
  <div>
    <div>
      <el-form  size="medium" >
  <div class="main-div-customer">
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
        <el-row gutter="7">
<!--          <el-col :span="4">-->
<!--            <el-input v-model="name" placeholder="销售单号" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="productName" placeholder="送货单号" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="salId" placeholder="客户名称" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="2">-->
<!--            <el-button id="searchButton" type="primary" :icon="Search" style="width: 100px; height: 25px">导出</el-button>-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-button id="searchButton" type="primary" :icon="Search" style="width: 100px; height: 25px">查询</el-button>-->
<!--          </el-col>-->
          <el-col :span="4">
            <el-button id="searchButton" type="primary" :icon="Search" style="width: 100px; height: 25px">确定</el-button>
          </el-col>
        </el-row>
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
      <!--      下拉显示所有信息插槽-->
      <template #content="{ row}">
        <ul class="expand-wrapper">
          <li  v-for="(item,key,index) in row">
            <span style="font-weight: bold">{{key+':  '}}</span>
            <span>{{ item }}</span>
          </li>
        </ul>
      </template>
      </el-form>
      <div>
        <el-table :data="tableData" border style="width: 100%">
          <el-table-column prop="送货单号" label="送货单号" width="100" />
          <el-table-column prop="销售单号" label="销售单号" width="120" />
          <el-table-column prop="客户名称" label="客户名称" width="180"/>
          <el-table-column prop="项目名称" label="项目名称" width="100"/>
          <el-table-column prop="业务员" label="业务员" width="80"/>
          <el-table-column prop="订序" label="订序" width="80"/>
          <el-table-column prop="楼层编号" label="楼层编号" width="100"/>
          <el-table-column prop="订单数" label="订单数" width="100"/>
          <el-table-column prop="长" label="长" width="180"/>
          <el-table-column prop="宽" label="宽" width="80"/>
          <el-table-column prop="厚度" label="厚度" width="100"/>
          <el-table-column prop="总数量" label="总数量" width="80"/>
          <el-table-column prop="箱号" label="箱号" width="80"/>
          <el-table-column prop="总面积" label="总面积" width="80"/>
          <el-table-column prop="报表日期" label="报表日期" width="100"/>
          <el-table-column prop="成品编号" label="成品编号" width="120"/>
          <el-table-column prop="成品名称" label="成品名称" width="130"/>
          <el-table-column prop="数量" label="数量" width="80"/>
          <el-table-column prop="状态" label="状态" width="80"/>
          <el-table-column prop="备注" label="备注" width="80"/>
          <el-table-column prop="选择" label="选择" type="selection"  width="80"/>
        </el-table>
      </div>
    </div>
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">编辑</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
        <div>
          <div v-for="(option, index) in column.filters" :key="index">
            <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
          </div>
        </div>
      </template>
    </vxe-grid>
  </div>
</template>
<style>
<style scoped>
.main-div-customer{
  width: 99%;
  height: 100%;
}
</style>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductReturn.vue
@@ -1,87 +1,184 @@
<!-- 成品退货 -->
<!--成品退货-->
<script lang="ts" setup>
import {ref} from "vue";
let tableData = ref([
  {
    "退货单号":'TH23113001',
    "销售单号":'NG23112209',
    "发货单号":'JG23112209',
    "客户名称":'79',
    "项目名称":'高性能环保镜',
    "产品名称":'4mm高性能环保镜',
    "退货数量":'367',
    "业务员":'毛卫',
    "制单日期":'23-11-30 00:00:00',
    "备注":'',
  },
  {
    "退货单号":'TH23113001',
    "销售单号":'NG23112209',
    "发货单号":'JG23112209',
    "客户名称":'79',
    "项目名称":'高性能环保镜',
    "产品名称":'4mm高性能环保镜',
    "退货数量":'367',
    "业务员":'毛卫',
    "制单日期":'23-11-30 00:00:00',
    "备注":'',
  },
  {
    "退货单号":'TH23113001',
    "销售单号":'NG23112209',
    "发货单号":'JG23112209',
    "客户名称":'79',
    "项目名称":'高性能环保镜',
    "产品名称":'4mm高性能环保镜',
    "退货数量":'367',
    "业务员":'毛卫',
    "制单日期":'23-11-30 00:00:00',
    "备注":'',
<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/trader/CreateTrader', query: { id: row.id }})
      break
    }
    case 'delete':{
      alert('我接收到子组件传送的删除信息')
      break
    }
  }
])
}
//子组件接收参数
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'CustomerList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true },//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true
  },
  filterConfig: {   //筛选配置项
    remote: true
  },
  customConfig: {
    storage: true
  },
  editConfig: {
    trigger: 'click',
    mode: 'row',
    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: '80' },
    {title: '操作', width: '100', slots: { default: 'button_slot' },fixed:"left"},
    {field: 'ReturnNumber', width: '150',title: '退货单号', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'SalesNumber', width: '120',title: '销售单号', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'NewNum', width:'150', title: '订序', sortable: true },
    {field: 'ShippingNumber',width: '100', title: '发货单号', sortable: true,showOverflow:"ellipsis"},
    {field: 'CustomerName', width: '100',title: '客户名称', sortable: true},
    {field: 'ProjectName',width: '100', title: '产品名称', sortable: true},
    {field: 'ReturnedQuantity', width: '100',title: '退货数量', sortable: true},
    {field: 'ProductName',width: '100', title: '客户名称', sortable: true},
    {field: 'Salesperson', width: '100',title: '业务员', sortable: true},
    {field: 'OrderDate',width: '100', title: '制单日期', sortable: true},
    {field: 'Remark', width: '100',title: '备注', sortable: true},
  ],//表头按钮
  toolbarConfig: {
    // buttons: [{
    //   'name': '新增'
    // }],
    import: false,
    export: true,
    print: true,
    zoom: true,
    custom: true
  },
  data:  [
    {
      "ReturnNumber": "TD23072003",
      "SalesNumber": "NG23112209",
      "ShippingNumber": "JG23112209",
      'CustomerName':'张三',
      'ProjectName':'高性能环保镜',
      'ProductName':'4mm高性能环保镜',
      "ReturnedQuantity": "367",
      "Salesperson": "毛卫",
      "OrderDate": "23-11-30 00:00:00",
      "NewNum":'123123123',
      "Remark": "测试",
    } ,{
      "ReturnNumber": "TD23072003",
      "SalesNumber": "NG23112209",
      "ShippingNumber": "JG23112209",
      'CustomerName':'张三',
      'ProjectName':'高性能环保镜',
      'ProductName':'4mm高性能环保镜',
      "ReturnedQuantity": "367",
      "Salesperson": "毛卫",
      "OrderDate": "23-11-30 00:00:00",
      "NewNum":'123123123',
      "Remark": "测试",
    }, {
      "ReturnNumber": "TD23072003",
      "SalesNumber": "NG23112209",
      "ShippingNumber": "JG23112209",
      'CustomerName':'张三',
      'ProjectName':'高性能环保镜',
      'ProductName':'4mm高性能环保镜',
      "ReturnedQuantity": "367",
      "Salesperson": "毛卫",
      "OrderDate": "23-11-30 00:00:00",
      "NewNum":'123123123',
      "Remark": "测试",
    }
  ],//table body实际数据
  footerMethod ({ columns, data }) {//页脚函数
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
        // }
        return ''
      })
    ]
  }
})
</script>
<template>
<div>
  <div>
    <el-form  size="medium" >
  <div class="main-div-customer">
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
<!--      <el-row gutter="7">-->
<!--        <el-col :span="4">-->
<!--          <el-input v-model="name" placeholder="销售单号" style="width: 200px; height: 30px;" />-->
<!--        </el-col>-->
<!--        <el-col :span="4">-->
<!--          <el-input v-model="productName" placeholder="发货单号" style="width: 200px; height: 30px;" />-->
<!--        </el-col>-->
<!--        <el-col :span="4">-->
<!--          <el-input v-model="salId" placeholder="客户名称" style="width: 200px; height: 30px;" />-->
<!--        </el-col>-->
<!--        <el-col :span="4">-->
<!--          <el-input v-model="salId" placeholder="项目名称" style="width: 200px; height: 30px;" />-->
<!--        </el-col>-->
<!--        <el-col :span="4">-->
<!--          <el-button id="searchButton" type="primary" :icon="Search" style="width: 100px; height: 25px">查询</el-button>-->
<!--        </el-col>-->
<!--      </el-row>-->
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
      <!--      下拉显示所有信息插槽-->
      <template #content="{ row}">
        <ul class="expand-wrapper">
          <li  v-for="(item,key,index) in row">
            <span style="font-weight: bold">{{key+':  '}}</span>
            <span>{{ item }}</span>
          </li>
        </ul>
      </template>
    </el-form>
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">编辑</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
        <div>
          <div v-for="(option, index) in column.filters" :key="index">
            <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
          </div>
        </div>
      </template>
    </vxe-grid>
  </div>
  <div>
    <el-table :data="tableData" border style="width: 85.3%">
      <el-table-column prop="退货单号" label="退货单号" width="110" />
      <el-table-column prop="销售单号" label="销售单号" width="110" />
      <el-table-column prop="发货单号" label="发货单号" width="100"/>
      <el-table-column prop="客户名称" label="客户名称" width="80"/>
      <el-table-column prop="项目名称" label="项目名称" width="110"/>
      <el-table-column prop="产品名称" label="产品名称" width="180"/>
      <el-table-column prop="退货数量" label="退货数量" width="100"/>
      <el-table-column prop="业务员" label="业务员" width="100"/>
      <el-table-column prop="制单日期" label="制单日期" width="180"/>
      <el-table-column prop="备注" label="备注" width="80"/>
    </el-table>
  </div>
</div>
</template>
<style>
<style scoped>
.main-div-customer{
  width: 99%;
  height: 100%;
}
</style>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductRework.vue
@@ -1,146 +1,216 @@
<!-- 成品返工 -->
<!--成品返工-->
<script lang="ts" setup>
import {ref} from "vue";
const handleClick = (row)=>{
  router.push({
    path: '/orderAllocationUpdate',
    query: {
      rowData: JSON.stringify(row)
<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/productStock/OrderAllocation', query: { id: row.id }})
      break
    }
  });
  return {
    tableData,
    handleClick
  };
    case 'back':{
      router.push({path: '/main/productStock/FinishedProductRework', query: { id: row.id }})
      break
    }
    case 'out' :{
      //alert('我接收到子组件传送的编辑信息')
      router.push({path: '/main/productStock/FinishedGoodsIssue', query: { id: row.id }})
      break
    }
  }
}
let tableData = ref([
  {
    "销售单号":'NG23121309',
    "项目名称":'钢化玻璃',
    "客户编号":'89',
    "客户名称":'',
    "流程卡号":'NG23121309A01',
    "成品编号":'0604000299',
    "箱架号":'0',
    "成品名称":'3.2mm拱形钢化玻璃',
    "长":'1610.00',
    "宽":'520.00',
    "厚":'3.20',
    "数量":'122.00',
    "单片面积":'0.8372',
    "总面积":'102.1384',
    "库区":'库区',
    "库位":'0',
  },  {
    "销售单号":'NG23121309',
    "项目名称":'钢化玻璃',
    "客户编号":'89',
    "客户名称":'',
    "流程卡号":'NG23121309A01',
    "成品编号":'0604000299',
    "箱架号":'0',
    "成品名称":'3.2mm拱形钢化玻璃',
    "长":'1610.00',
    "宽":'520.00',
    "厚":'3.20',
    "数量":'122.00',
    "单片面积":'0.8372',
    "总面积":'102.1384',
    "库区":'库区',
    "库位":'0',
//子组件接收参数
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'CustomerList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true },//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true
  },
  {
    "销售单号":'NG23121309',
    "项目名称":'钢化玻璃',
    "客户编号":'89',
    "客户名称":'',
    "流程卡号":'NG23121309A01',
    "成品编号":'0604000299',
    "箱架号":'0',
    "成品名称":'3.2mm拱形钢化玻璃',
    "长":'1610.00',
    "宽":'520.00',
    "厚":'3.20',
    "数量":'122.00',
    "单片面积":'0.8372',
    "总面积":'102.1384',
    "库区":'库区',
    "库位":'0',
  filterConfig: {   //筛选配置项
    remote: true
  },
])
  customConfig: {
    storage: true
  },
  editConfig: {
    trigger: 'click',
    mode: 'row',
    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: '80' },
    // {title: '操作', width: '220', slots: { default: 'button_slot' },fixed:"left"},
    {field: 'SalesOrderNumber', width: '150',title: '销售单号', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'ProjectName', width: '120',title: '项目名称', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'ProcessCardNumber',width: '100', title: '流程卡号', sortable: true,showOverflow:"ellipsis"},
    {field: 'FinishedProductNumber', width: '100',title: '成品编号', sortable: true},
    {field: 'Quantity',width: '140', title: '数量', sortable: true},
    {field: 'ReworkQuantity',width: '140', title: '返工数量',editRender: { name: 'input', attrs: { placeholder: '' } }, sortable: true},
    {field: 'ProductNumber',width: '100', title: '产品编号', sortable: true},
    {field: 'CustomerNumber', width: '100',title: '客户编号', sortable: true},
    {field: 'CustomerName',width: '100', title: '客户名称', sortable: true},
    {field: 'Length', width: '100',title: '长度', sortable: true},
    {field: 'Width',width: '100', title: '宽度', sortable: true},
    {field: 'Thickness', width: '100',title: '厚度', sortable: true},
    {field: 'SingleArea',width: '140', title: '单片面积', sortable: true},
    {field: 'TotalArea',width: '100', title: '总面积', sortable: true},
    {field: 'StorageArea',width: '100', title: '库区', sortable: true},
    {field: 'Location',width: '100', title: '库位', sortable: true},
  ],//表头按钮
  toolbarConfig: {
    buttons: [{
      'name': '返工确认',status: 'primary'
    },{
      'name': '返工记录'
    }],
    import: false,
    export: true,
    print: true,
    zoom: true,
    custom: true
  },
  data:  [
    {
      "SalesOrderNumber": "NG23072003",
      "ProjectName": "钢化玻璃",
      "ProcessCardNumber": "NG23072003A01",
      'FinishedProductNumber':'',
      'FinishedProductName':'',
      'BoxNumber':'',
      "CustomerNumber": "KD0071",
      "CustomerName": "件",
      "Length": "1075.00",
      "Width": "440.00",
      "Thickness": "3.00",
      "Quantity": "360",
      "SingleArea": "0.473000",
      "TotalArea": "170.28",
      "StorageArea": "0.47",
      "Location": "170.28",
    },{
      "SalesOrderNumber": "NG23072003",
      "ProjectName": "钢化玻璃",
      "ProcessCardNumber": "NG23072003A01",
      'FinishedProductNumber':'',
      'FinishedProductName':'',
      'BoxNumber':'',
      "CustomerNumber": "KD0071",
      "CustomerName": "件",
      "Length": "1075.00",
      "Width": "440.00",
      "Thickness": "3.00",
      "Quantity": "360",
      "SingleArea": "0.473000",
      "TotalArea": "170.28",
      "StorageArea": "0.47",
      "Location": "170.28",
    },{
      "SalesOrderNumber": "NG23072003",
      "ProjectName": "钢化玻璃",
      "ProcessCardNumber": "NG23072003A01",
      'FinishedProductNumber':'',
      'FinishedProductName':'',
      'BoxNumber':'',
      "CustomerNumber": "KD0071",
      "CustomerName": "件",
      "Length": "1075.00",
      "Width": "440.00",
      "Thickness": "3.00",
      "Quantity": "360",
      "SingleArea": "0.473000",
      "TotalArea": "170.28",
      "StorageArea": "0.47",
      "Location": "170.28",
    },
  ],//table body实际数据
  footerMethod ({ columns, data }) {//页脚函数
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
        // }
        return ''
      })
    ]
  }
})
</script>
<template>
  <div>
    <div>
      <el-form  size="medium" >
  <div class="main-div-customer">
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
        <el-row gutter="5">
<!--          <el-col :span="4">-->
<!--            <el-input v-model="name" placeholder="请输客户名称" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="name" placeholder="请输项目名称" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="name" placeholder="请输销售单号" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
      <!--      下拉显示所有信息插槽-->
      <template #content="{ row}">
        <ul class="expand-wrapper">
          <li  v-for="(item,key,index) in row">
            <span style="font-weight: bold">{{key+':  '}}</span>
            <span>{{ item }}</span>
          </li>
        </ul>
      </template>
          <el-col :span="4">
            <el-dropdown>
              <el-button type="primary" style="width: auto">
                请选择返工类型<el-icon class="el-icon--right" style="width: 60px;">
                <arrow-down />
              </el-icon>
              </el-button>
              <template #dropdown>
                <el-dropdown-menu>
                  <el-dropdown-item>库存返工</el-dropdown-item>
                  <el-dropdown-item>退货返工</el-dropdown-item>
                </el-dropdown-menu>
              </template>
            </el-dropdown>
          </el-col>
          <el-col :span="2">
            <el-button id="searchButton" type="primary" :icon="Search">返工记录</el-button>
          </el-col>
          <el-col :span="4">
            <el-button id="searchButton" type="primary" :icon="Search">查询</el-button>
          </el-col>
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">订单调拨</el-button>
        <el-button @click="getTableRow(row,'out')" link type="primary" size="small">成品领出</el-button>
        <el-button @click="getTableRow(row,'back')" link type="primary" size="small">成品返工</el-button>
      </template>
        </el-row>
      </el-form>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%;">
        <el-table-column prop="销售单号" label="销售单号" width="180" style="text-align: center"/>
        <el-table-column prop="项目名称" label="项目名称" width="180" />
        <el-table-column prop="客户编号" label="客户编号" width="180"/>
        <el-table-column prop="客户名称" label="客户名称" width="180"/>
        <el-table-column prop="流程卡号" label="流程卡号" width="180"/>
        <el-table-column prop="成品编号" label="成品编号" width="180"/>
        <el-table-column prop="箱架号" label="箱架号" width="180"/>
        <el-table-column prop="成品名称" label="成品名称" width="180"/>
        <el-table-column prop="长" label="长" width="180"/>
        <el-table-column prop="宽" label="宽" width="180"/>
        <el-table-column prop="厚" label="厚" width="180"/>
        <el-table-column prop="数量" label="数量" width="180"/>
        <el-table-column prop="单片面积" label="单片面积" width="180"/>
        <el-table-column prop="总面积" label="总面积" width="180"/>
        <el-table-column prop="库区" label="库区" width="180"/>
        <el-table-column prop="库位" label="库位" width="180"/>
        <el-table-column fixed="left" label="操作" width="80">
          <template #default>
            <el-button link type="primary" size="small" @click="handleClick(row)"
            >编辑</el-button>
      <template #num1_filter="{ column, $panel }">
        <div>
          <div v-for="(option, index) in column.filters" :key="index">
            <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
          </div>
        </div>
      </template>
          </template>
        </el-table-column>
      </el-table>
    </div>
    </vxe-grid>
  </div>
</template>
<style>
<style scoped>
.main-div-customer{
  width: 99%;
  height: 100%;
}
</style>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocation.vue
@@ -1,130 +1,220 @@
<!-- 订单调拨 -->
<!--成品调拨-->
<script lang="ts" setup>
import {ref} from "vue";
const handleClick = (row)=>{
  router.push({
    path: '/orderAllocationUpdate',
    query: {
      rowData: JSON.stringify(row)
<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/productStock/OrderAllocation', query: { id: row.id }})
      break
    }
  });
  return {
    tableData,
    handleClick
  };
    case 'back':{
      router.push({path: '/main/productStock/FinishedProductRework', query: { id: row.id }})
      break
    }
    case 'out' :{
      //alert('我接收到子组件传送的编辑信息')
      router.push({path: '/main/productStock/FinishedGoodsIssue', query: { id: row.id }})
      break
    }
  }
}
let tableData = ref([
  {
    "销售单号":'NG23121309',
    "项目名称":'钢化玻璃',
    "客户编号":'89',
    "客户名称":'',
    "流程卡号":'NG23121309A01',
    "成品编号":'0604000299',
    "箱架号":'0',
    "成品名称":'3.2mm拱形钢化玻璃',
    "长":'1610.00',
    "宽":'520.00',
    "厚":'3.20',
    "数量":'122.00',
    "单片面积":'0.8372',
    "总面积":'102.1384',
    "库区":'库区',
    "库位":'0',
  },  {
    "销售单号":'NG23121309',
    "项目名称":'钢化玻璃',
    "客户编号":'89',
    "客户名称":'',
    "流程卡号":'NG23121309A01',
    "成品编号":'0604000299',
    "箱架号":'0',
    "成品名称":'3.2mm拱形钢化玻璃',
    "长":'1610.00',
    "宽":'520.00',
    "厚":'3.20',
    "数量":'122.00',
    "单片面积":'0.8372',
    "总面积":'102.1384',
    "库区":'库区',
    "库位":'0',
//子组件接收参数
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'CustomerList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true },//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true
  },
  {
    "销售单号":'NG23121309',
    "项目名称":'钢化玻璃',
    "客户编号":'89',
    "客户名称":'',
    "流程卡号":'NG23121309A01',
    "成品编号":'0604000299',
    "箱架号":'0',
    "成品名称":'3.2mm拱形钢化玻璃',
    "长":'1610.00',
    "宽":'520.00',
    "厚":'3.20',
    "数量":'122.00',
    "单片面积":'0.8372',
    "总面积":'102.1384',
    "库区":'库区',
    "库位":'0',
  filterConfig: {   //筛选配置项
    remote: true
  },
])
  customConfig: {
    storage: true
  },
  editConfig: {
    trigger: 'click',
    mode: 'row',
    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: '80' },
    // {title: '操作', width: '80', slots: { default: 'button_slot' },fixed:"left"},
    {field: 'SalesOrderNumber', width: '150',title: '销售单号', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'ProjectName', width: '120',title: '项目名称', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'NowNum', width: '120',title: '当前序号', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'Quantity',width: '140', title: '订单数量', sortable: true},
    {field: 'DiaoSalesOrderNumber', width: '150',title: '调拨单号',editRender: { name: 'input', attrs: { placeholder: '' } }, sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'NewNum', width:'150', title: '新订序', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } } },
    {field: 'DiaoQuantity',width: '140', title: '调拨数量',editRender: { name: 'input', attrs: { placeholder: '' } }, sortable: true},
    {field: 'ProcessCardNumber',width: '100', title: '流程卡号', sortable: true,showOverflow:"ellipsis"},
    {field: 'FinishedProductNumber', width: '100',title: '成品编号', sortable: true},
    {field: 'ProductNumber',width: '100', title: '产品编号', sortable: true},
    {field: 'CustomerNumber', width: '100',title: '客户编号', sortable: true},
    {field: 'CustomerName',width: '100', title: '客户名称', sortable: true},
    {field: 'Length', width: '100',title: '长度', sortable: true},
    {field: 'Width',width: '100', title: '宽度', sortable: true},
    {field: 'Thickness', width: '100',title: '厚度', sortable: true},
    {field: 'SingleArea',width: '140', title: '单片面积', sortable: true},
    {field: 'TotalArea',width: '100', title: '总面积', sortable: true},
    {field: 'StorageArea',width: '100', title: '库区', sortable: true},
    {field: 'Location',width: '100', title: '库位', sortable: true},
  ],//表头按钮
  toolbarConfig: {
    buttons: [
        {'name': '确认调架',status: 'primary'},
        {'name': '调拨记录'}
    ],
    import: false,
    export: true,
    print: true,
    zoom: true,
    custom: true
  },
  data:  [
    {
      "SalesOrderNumber": "NG23072003",
      "ProjectName": "钢化玻璃",
      "ProcessCardNumber": "NG23072003A01",
      'FinishedProductNumber':'',
      'FinishedProductName':'',
      'BoxNumber':'',
      "CustomerNumber": "KD0071",
      "CustomerName": "件",
      "Length": "1075.00",
      "Width": "440.00",
      "Thickness": "3.00",
      "Quantity": "360",
      "SingleArea": "0.473000",
      "TotalArea": "170.28",
      "StorageArea": "0.47",
      "Location": "170.28",
      "NowNum":'1'
    },{
      "SalesOrderNumber": "NG23072003",
      "ProjectName": "钢化玻璃",
      "ProcessCardNumber": "NG23072003A01",
      'FinishedProductNumber':'',
      'FinishedProductName':'',
      'BoxNumber':'',
      "CustomerNumber": "KD0071",
      "CustomerName": "件",
      "Length": "1075.00",
      "Width": "440.00",
      "Thickness": "3.00",
      "Quantity": "360",
      "SingleArea": "0.473000",
      "TotalArea": "170.28",
      "StorageArea": "0.47",
      "Location": "170.28",
      "NowNum":'1'
    },{
      "SalesOrderNumber": "NG23072003",
      "ProjectName": "钢化玻璃",
      "ProcessCardNumber": "NG23072003A01",
      'FinishedProductNumber':'',
      'FinishedProductName':'',
      'BoxNumber':'',
      "CustomerNumber": "KD0071",
      "CustomerName": "件",
      "Length": "1075.00",
      "Width": "440.00",
      "Thickness": "3.00",
      "Quantity": "360",
      "SingleArea": "0.473000",
      "TotalArea": "170.28",
      "StorageArea": "0.47",
      "Location": "170.28",
      "NowNum":'1'
    },
  ],//table body实际数据
  footerMethod ({ columns, data }) {//页脚函数
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
        // }
        return ''
      })
    ]
  }
})
</script>
<template>
<div>
  <div>
    <el-form  size="medium" >
  <div class="main-div-customer">
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
      <el-row gutter="5">
<!--      <el-col :span="4">-->
<!--        <el-input v-model="name" placeholder="请输客户名称" style="width: 200px; height: 30px;" />-->
<!--      </el-col>-->
<!--      <el-col :span="4">-->
<!--        <el-input v-model="name" placeholder="请输项目名称" style="width: 200px; height: 30px;" />-->
<!--      </el-col>-->
<!--        <el-col :span="4">-->
<!--          <el-input v-model="name" placeholder="请输销售单号" style="width: 200px; height: 30px;" />-->
<!--        </el-col>-->
        <el-col :span="2.5  ">
          <el-button id="searchButton" type="primary" :icon="Search">调架记录</el-button>
        </el-col>
        <el-col :span="4">
          <el-button id="searchButton" type="primary" :icon="Search">查询</el-button>
        </el-col>
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
      <!--      下拉显示所有信息插槽-->
      <template #content="{ row}">
        <ul class="expand-wrapper">
          <li  v-for="(item,key,index) in row">
            <span style="font-weight: bold">{{key+':  '}}</span>
            <span>{{ item }}</span>
          </li>
        </ul>
      </template>
      </el-row>
    </el-form>
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">编辑</el-button>
<!--        <el-button @click="getTableRow(row,'out')" link type="primary" size="small">成品领出</el-button>-->
<!--        <el-button @click="getTableRow(row,'back')" link type="primary" size="small">成品返工</el-button>-->
      </template>
      <template #num1_filter="{ column, $panel }">
        <div>
          <div v-for="(option, index) in column.filters" :key="index">
            <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
          </div>
        </div>
      </template>
    </vxe-grid>
  </div>
  <div>
    <el-table :data="tableData" border style="width: 100%;">
      <el-table-column prop="销售单号" label="销售单号" width="180" style="text-align: center"/>
      <el-table-column prop="项目名称" label="项目名称" width="180" />
      <el-table-column prop="客户编号" label="客户编号" width="180"/>
      <el-table-column prop="客户名称" label="客户名称" width="180"/>
      <el-table-column prop="流程卡号" label="流程卡号" width="180"/>
      <el-table-column prop="成品编号" label="成品编号" width="180"/>
      <el-table-column prop="箱架号" label="箱架号" width="180"/>
      <el-table-column prop="成品名称" label="成品名称" width="180"/>
      <el-table-column prop="长" label="长" width="180"/>
      <el-table-column prop="宽" label="宽" width="180"/>
      <el-table-column prop="厚" label="厚" width="180"/>
      <el-table-column prop="数量" label="数量" width="180"/>
      <el-table-column prop="单片面积" label="单片面积" width="180"/>
      <el-table-column prop="总面积" label="总面积" width="180"/>
      <el-table-column prop="库区" label="库区" width="180"/>
      <el-table-column prop="库位" label="库位" width="180"/>
      <el-table-column fixed="left" label="操作" width="80">
        <template #default>
          <el-button link type="primary" size="small" @click="handleClick(row)"
          >编辑</el-button>
        </template>
      </el-table-column>
    </el-table>
  </div>
</div>
</template>
<style>
<style scoped>
.main-div-customer{
  width: 99%;
  height: 100%;
}
</style>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStock.vue
@@ -16,13 +16,14 @@
  <div id="main">
   <div id="div-title">
     <el-breadcrumb :separator-icon="ArrowRight">
       <el-breadcrumb-item :to="{ path: '/main/productStock/ProductStockList' }">产品查询</el-breadcrumb-item>
       <el-breadcrumb-item :to="{ path: '/main/productStock/ProductStockList' }">库存查询</el-breadcrumb-item>
       <el-breadcrumb-item :to="{ path: '/main/productStock/CreateProductStock' }">成品入库</el-breadcrumb-item>
       <el-breadcrumb-item :to="{ path: '/main/productStock/FinishedProductOut' }">成品出库</el-breadcrumb-item>
       <el-breadcrumb-item :to="{ path: '/main/productStock/FinishedProductReturn' }">订单成品退货</el-breadcrumb-item>
       <el-breadcrumb-item :to="{ path: '/main/productStock/OrderAllocation' }">订单调拨</el-breadcrumb-item>
       <el-breadcrumb-item :to="{ path: '/main/productStock/FinishedGoodsIssue' }">成品领出</el-breadcrumb-item>
       <el-breadcrumb-item :to="{ path: '/main/productStock/FinishedProductRework' }">成品返工</el-breadcrumb-item>
       <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">报表</el-breadcrumb-item>
<!--       <el-breadcrumb-item :to="{ path: '/main/productStock/OrderAllocation' }">订单调拨</el-breadcrumb-item>-->
<!--       <el-breadcrumb-item :to="{ path: '/main/productStock/FinishedGoodsIssue' }">成品领出</el-breadcrumb-item>-->
<!--       <el-breadcrumb-item :to="{ path: '/main/productStock/FinishedProductRework' }">成品返工</el-breadcrumb-item>-->
       <!-- <el-breadcrumb-item :to="{ path: '/main/product/createProduct' }"></el-breadcrumb-item> -->
     </el-breadcrumb>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue
@@ -1,287 +1,292 @@
<!-- 成品库存 -->
<script  lang="ts" setup>
import { ref } from 'vue'
import router from "@/router";
let tableData = ref([
  {
    "自序":'30',
    "订单序号":'1',
    "销售单号":'NG23072003',
    "项目名称":'钢化玻璃',
    "订单类型":'普通订单',
    "流程卡号":'NG23072003A01',
    "产品名称":'',
    "产品编号":'06040000022',
    "客户编号":'KD0071',
    "客户名称":'',
    "长度":'1075.00',
    "宽度":'440.00',
    "厚度":'3.00',
    "库存数":'360',
    "实际单片面积":'0.473000',
    "面积":'170.28',
    "结算单片面积":'0.47',
    "结算总面积":'170.28',
    "可用数量":'360',
    "楼层编号":'10927769',
    "送货地址":'钢化玻璃',
    "批次":'',
    "业务员":'陈宗凯',
    "平凡毫米":'1915.6500',
    "重量":'1.91565',
    "最后入库日期":'2023-09-22 08:31:17',
    "库位编号":'成品库',
    "库区":'库区',
    "库位":'0',
    "单据状态":'1',
    "备注":'',
  }, {
    "自序":'31',
    "订单序号":'1',
    "销售单号":'NG23072003',
    "项目名称":'钢化玻璃',
    "订单类型":'普通订单',
    "流程卡号":'NG23072003A02',
    "产品名称":'',
    "产品编号":'06040000022',
    "客户编号":'KD0071',
    "客户名称":'',
    "长度":'1075.00',
    "宽度":'440.00',
    "厚度":'3.00',
    "库存数":'360',
    "实际单片面积":'0.473000',
    "面积":'170.28',
    "结算单片面积":'0.47',
    "结算总面积":'170.28',
    "可用数量":'360',
    "楼层编号":'10927769',
    "送货地址":'钢化玻璃',
    "批次":'',
    "业务员":'陈宗凯',
    "平凡毫米":'1915.6500',
    "重量":'1.91565',
    "最后入库日期":'2023-09-22 08:31:17',
    "库位编号":'成品库',
    "库区":'库区',
    "库位":'0',
    "单据状态":'1',
    "备注":'',
  }, {
    "自序":'32',
    "订单序号":'1',
    "销售单号":'NG23072003',
    "项目名称":'钢化玻璃',
    "订单类型":'普通订单',
    "流程卡号":'NG23072003A01',
    "产品名称":'',
    "产品编号":'06040000022',
    "客户编号":'KD0071',
    "客户名称":'',
    "长度":'1075.00',
    "宽度":'440.00',
    "厚度":'3.00',
    "库存数":'360',
    "实际单片面积":'0.473000',
    "面积":'170.28',
    "结算单片面积":'0.47',
    "结算总面积":'170.28',
    "可用数量":'360',
    "楼层编号":'10927769',
    "送货地址":'钢化玻璃',
    "批次":'',
    "业务员":'陈宗凯',
    "平凡毫米":'1915.6500',
    "重量":'1.91565',
    "最后入库日期":'2023-09-22 08:31:17',
    "库位编号":'成品库',
    "库区":'库区',
    "库位":'0',
    "单据状态":'1',
    "备注":'',
  }, {
    "自序":'33',
    "订单序号":'1',
    "销售单号":'NG23072003',
    "项目名称":'钢化玻璃',
    "订单类型":'普通订单',
    "流程卡号":'NG23072003A01',
    "产品名称":'',
    "产品编号":'06040000022',
    "客户编号":'KD0071',
    "客户名称":'',
    "长度":'1075.00',
    "宽度":'440.00',
    "厚度":'3.00',
    "库存数":'360',
    "实际单片面积":'0.473000',
    "面积":'170.28',
    "结算单片面积":'0.47',
    "结算总面积":'170.28',
    "可用数量":'360',
    "楼层编号":'10927769',
    "送货地址":'钢化玻璃',
    "批次":'',
    "业务员":'陈宗凯',
    "平凡毫米":'1915.6500',
    "重量":'1.91565',
    "最后入库日期":'2023-09-22 08:31:17',
    "库位编号":'成品库',
    "库区":'库区',
    "库位":'0',
    "单据状态":'1',
    "备注":'',
  }, {
    "自序":'34',
    "订单序号":'1',
    "销售单号":'NG23072003',
    "项目名称":'钢化玻璃',
    "订单类型":'普通订单',
    "流程卡号":'NG23072003A01',
    "产品名称":'',
    "产品编号":'06040000022',
    "客户编号":'KD0071',
    "客户名称":'',
    "长度":'1075.00',
    "宽度":'440.00',
    "厚度":'3.00',
    "库存数":'360',
    "实际单片面积":'0.473000',
    "面积":'170.28',
    "结算单片面积":'0.47',
    "结算总面积":'170.28',
    "可用数量":'360',
    "楼层编号":'10927769',
    "送货地址":'钢化玻璃',
    "批次":'',
    "业务员":'陈宗凯',
    "平凡毫米":'1915.6500',
    "重量":'1.91565',
    "最后入库日期":'2023-09-22 08:31:17',
    "库位编号":'成品库',
    "库区":'库区',
    "库位":'0',
    "单据状态":'1',
    "备注":'',
  }, {
    "自序":'35',
    "订单序号":'1',
    "销售单号":'NG23072003',
    "项目名称":'钢化玻璃',
    "订单类型":'普通订单',
    "流程卡号":'NG23072003A01',
    "产品名称":'',
    "产品编号":'06040000022',
    "客户编号":'KD0071',
    "客户名称":'',
    "长度":'1075.00',
    "宽度":'440.00',
    "厚度":'3.00',
    "库存数":'360',
    "实际单片面积":'0.473000',
    "面积":'170.28',
    "结算单片面积":'0.47',
    "结算总面积":'170.28',
    "可用数量":'360',
    "楼层编号":'10927769',
    "送货地址":'钢化玻璃',
    "批次":'',
    "业务员":'陈宗凯',
    "平凡毫米":'1915.6500',
    "重量":'1.91565',
    "最后入库日期":'2023-09-22 08:31:17',
    "库位编号":'成品库',
    "库区":'库区',
    "库位":'0',
    "单据状态":'1',
    "备注":'',
<script setup>
import {reactive, ref} from "vue";
import {useRouter} from  'vue-router'
let router=useRouter()
const getTableRow = (row,type) =>{
  switch (type) {
    case 'edit' :{
      //alert('我接收到子组件传送的编辑信息')
      router.push({path: '/main/productStock/OrderAllocation', query: { id: row.id }})
      break
    }
    case 'back':{
      router.push({path: '/main/productStock/FinishedProductRework', query: { id: row.id }})
      break
    }
    case 'out' :{
      //alert('我接收到子组件传送的编辑信息')
      router.push({path: '/main/productStock/FinishedGoodsIssue', query: { id: row.id }})
      break
    }
  }
])
const name = ref('')
const productName = ref('')
const salId = ref('')
}
//子组件接收参数
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'CustomerList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true },//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true
  },
  filterConfig: {   //筛选配置项
    remote: true
  },
  customConfig: {
    storage: true
  },
  editConfig: {
    trigger: 'click',
    mode: 'row',
    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: '80' },
    // {title: '操作', width: '220', slots: { default: 'button_slot' },fixed:"left"},
    {field: 'OrderNumber', width:'150', title: '订单序号', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } } },
    {field: 'SalesOrderNumber', width: '150',title: '销售单号', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'ProjectName', width: '120',title: '项目名称', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'OrderType', width: '100',title: '订单类型', sortable: true},
    {field: 'ProcessCardNumber',width: '100', title: '流程卡号', sortable: true,showOverflow:"ellipsis"},
    {field: 'ProductName', width: '100',title: '产品名称', sortable: true},
    {field: 'ProductNumber',width: '100', title: '产品编号', sortable: true},
    {field: 'CustomerNumber', width: '100',title: '客户编号', sortable: true},
    {field: 'CustomerName',width: '100', title: '客户名称', sortable: true},
    {field: 'Length', width: '100',title: '长度', sortable: true},
    {field: 'Width',width: '100', title: '宽度', sortable: true},
    {field: 'Thickness', width: '100',title: '厚度', sortable: true},
    {field: 'InventoryCount',width: '140', title: '库存数', sortable: true},
    {field: 'ActualSingleArea',width: '140', title: '实际单片面积', sortable: true},
    {field: 'Area',width: '100', title: '面积', sortable: true},
    {field: 'SettlementSingleArea',width: '140', title: '结算单片面积', sortable: true},
    {field: 'SettlementTotalArea',width: '140', title: '结算总面积', sortable: true},
    {field: 'AvailableQuantity',width: '100', title: '可用数量', sortable: true},
    {field: 'FloorNumber',width: '100', title: '楼层编号', sortable: true},
    {field: 'DeliveryAddress',width: '100', title: '送货地址', sortable: true},
    {field: 'Batch',width: '100', title: '批次', sortable: true},
    {field: 'Salesman',width: '100', title: '业务员', sortable: true},
    {field: 'OrdinaryMillimeter',width: '100', title: '平凡毫米', sortable: true},
    {field: 'Weight',width: '100', title: '重量', sortable: true},
    {field: 'LastWarehousingDate',width: '140', title: '最后入库日期', sortable: true},
    {field: 'LocationNumber',width: '100', title: '库位编号', sortable: true},
    {field: 'StorageArea',width: '100', title: '存储区域', sortable: true},
    {field: 'Location',width: '100', title: '库位', sortable: true},
    {field: 'DocumentStatus',width: '100', title: '单据状态', sortable: true},
    {field: 'remark',width: '80', title: '备注', sortable: true},
  ],//表头按钮
  toolbarConfig: {
    buttons: [
      { 'code' :'issue','name':'订单调拨',status: 'primary'},
      { 'code' :'out','name':'成品领出',status: 'primary'},
      { 'code' :'rework','name':'成品返工',status: 'primary'},
    ],
    import: false,
    export: true,
    print: true,
    zoom: true,
    custom: true
  },
  data:  [
    {
      "OrderNumber": "1",
      "SalesOrderNumber": "NG23072003",
      "ProjectName": "钢化玻璃",
      "OrderType": "普通订单",
      "ProcessCardNumber": "NG23072003A01",
      "ProductName": '',
      "ProductNumber": "06040000022",
      "CustomerNumber": "KD0071",
      "CustomerName": "件",
      "Length": "1075.00",
      "Width": "440.00",
      "Thickness": "3.00",
      "InventoryCount": "360",
      "ActualSingleArea": "0.473000",
      "Area": "170.28",
      "SettlementSingleArea": "0.47",
      "SettlementTotalArea": "170.28",
      "AvailableQuantity": "360",
      "FloorNumber": "10927769",
      "DeliveryAddress": "上海",
      "Batch": "测试",
      "OrdinaryMillimeter": "陈宗凯",
      "Weight": "1915.6500",
      "LastWarehousingDate": "2023-09-22 08:31:17",
      "LocationNumber": "成品库",
      "StorageArea": "测试",
      "Location": "2",
      "DocumentStatus": "1",
      "Remarks": "测试",
    },
    {
      "OrderNumber": "1",
      "SalesOrderNumber": "NG23072003",
      "ProjectName": "钢化玻璃",
      "OrderType": "普通订单",
      "ProcessCardNumber": "NG23072003A01",
      "ProductName": '',
      "ProductNumber": "06040000022",
      "CustomerNumber": "KD0071",
      "CustomerName": "件",
      "Length": "1075.00",
      "Width": "440.00",
      "Thickness": "3.00",
      "InventoryCount": "360",
      "ActualSingleArea": "0.473000",
      "Area": "170.28",
      "SettlementSingleArea": "0.47",
      "SettlementTotalArea": "170.28",
      "AvailableQuantity": "360",
      "FloorNumber": "10927769",
      "DeliveryAddress": "上海",
      "Batch": "测试",
      "OrdinaryMillimeter": "陈宗凯",
      "Weight": "1915.6500",
      "LastWarehousingDate": "2023-09-22 08:31:17",
      "LocationNumber": "成品库",
      "StorageArea": "测试",
      "Location": "2",
      "DocumentStatus": "1",
      "Remarks": "测试",
    },{
      "OrderNumber": "1",
      "SalesOrderNumber": "NG23072003",
      "ProjectName": "钢化玻璃",
      "OrderType": "普通订单",
      "ProcessCardNumber": "NG23072003A01",
      "ProductName": '',
      "ProductNumber": "06040000022",
      "CustomerNumber": "KD0071",
      "CustomerName": "件",
      "Length": "1075.00",
      "Width": "440.00",
      "Thickness": "3.00",
      "InventoryCount": "360",
      "ActualSingleArea": "0.473000",
      "Area": "170.28",
      "SettlementSingleArea": "0.47",
      "SettlementTotalArea": "170.28",
      "AvailableQuantity": "360",
      "FloorNumber": "10927769",
      "DeliveryAddress": "上海",
      "Batch": "测试",
      "OrdinaryMillimeter": "陈宗凯",
      "Weight": "1915.6500",
      "LastWarehousingDate": "2023-09-22 08:31:17",
      "LocationNumber": "成品库",
      "StorageArea": "测试",
      "Location": "2",
      "DocumentStatus": "1",
      "Remarks": "测试",
    },
  ],//table body实际数据
  footerMethod ({ columns, data }) {//页脚函数
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
        // }
        return ''
      })
    ]
  }
})
const  xGrid = ref();
const gridEvents = {
  toolbarButtonClick({ code }) {
    const $grid = xGrid.value
    if($grid){
      switch (code){
        case 'issue':{
          /*VXETable.modal.confirm('点击了库存调拨');*/
          router.push({path: '/main/productStock/OrderAllocation'});
          return;
          break
        }
        case 'out':{
          router.push({path: '/main/productStock/FinishedGoodsIssue'});
          return;
          break;
        }
        case 'rework':{
          router.push({path: '/main/productStock/FinishedProductRework'});
          return;
          break;
        }
      }
    }
  }
}
</script>
<template>
  <div>
    <!-- 表单开始 -->
    <div>
      <el-form  size="medium" >
       <el-row gutter="7">
<!--  <el-col :span="4">-->
<!--    <el-input v-model="name" placeholder="请输入客户名称" style="width: 200px; height: 30px;" />-->
<!--  </el-col>-->
<!--  <el-col :span="4">-->
<!--    <el-input v-model="productName" placeholder="请输入项目名称" style="width: 200px; height: 30px;" />-->
<!--  </el-col>-->
<!--  <el-col :span="4">-->
<!--    <el-input v-model="salId" placeholder="请输入销售单号" style="width: 200px; height: 30px;" />-->
<!--  </el-col>-->
  <el-col :span="6.5">
    <el-date-picker
    type="daterange"
    start-placeholder="开始时间"
    end-placeholder="结束时间"
   />
  </el-col>
  <el-col :span="4">
           <el-button id="searchButton" type="primary" :icon="Search" style="width: 100px;">查询</el-button>
         </el-col>
</el-row>
  <div class="main-div-customer">
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
        v-on="gridEvents"
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
      <!--      下拉显示所有信息插槽-->
      <template #content="{ row}">
        <ul class="expand-wrapper">
          <li  v-for="(item,key,index) in row">
            <span style="font-weight: bold">{{key+':  '}}</span>
            <span>{{ item }}</span>
          </li>
        </ul>
      </template>
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
<!--        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">订单调拨</el-button>-->
<!--        <el-button @click="getTableRow(row,'out')" link type="primary" size="small">成品领出</el-button>-->
<!--        <el-button @click="getTableRow(row,'back')" link type="primary" size="small">成品返工</el-button>-->
      </template>
      <template #num1_filter="{ column, $panel }">
        <div>
          <div v-for="(option, index) in column.filters" :key="index">
            <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
          </div>
        </div>
      </template>
        <!-- <el-form-item size="large">
          <el-button type="primary" @click="submitForm">查询</el-button>
          <el-button @click="resetForm">重置</el-button>
        </el-form-item>-->
      </el-form>
    </div>
    <!-- 表单结束 -->
    <!-- 表格开始 -->
    <div>
  <el-table :data="tableData" border style="width: 100%">
    <el-table-column prop="自序" label="自序" width="180" />
    <el-table-column prop="订单序号" label="订单序号" width="180" />
    <el-table-column prop="销售单号" label="销售单号" width="180"/>
    <el-table-column prop="项目名称" label="项目名称" width="180"/>
    <el-table-column prop="订单类型" label="订单类型" width="180"/>
    <el-table-column prop="流程卡号" label="流程卡号" width="180"/>
    <el-table-column prop="产品名称" label="产品名称" width="180"/>
    <el-table-column prop="产品编号" label="产品编号" width="180"/>
    <el-table-column prop="客户编号" label="客户编号" width="180"/>
    <el-table-column prop="客户名称" label="客户名称" width="180"/>
    <el-table-column prop="长度" label="长度" width="180"/>
    <el-table-column prop="宽度" label="宽度" width="180"/>
    <el-table-column prop="厚度" label="厚度" width="180"/>
    <el-table-column prop="库存数" label="库存数" width="180"/>
    <el-table-column prop="实际单片面积" label="实际单片面积" width="180"/>
    <el-table-column prop="面积" label="面积" width="180"/>
    <el-table-column prop="结算单片面积" label="结算单片面积" width="180"/>
    <el-table-column prop="结算总面积" label="结算总面积" width="180"/>
    <el-table-column prop="可用数量" label="可用数量" width="180"/>
    <el-table-column prop="楼层编号" label="楼层编号" width="180"/>
    <el-table-column prop="送货地址" label="送货地址" width="180"/>
    <el-table-column prop="批次" label="批次" width="180"/>
    <el-table-column prop="业务员" label="业务员" width="180"/>
    <el-table-column prop="平方毫米" label="平方毫米" width="180"/>
    <el-table-column prop="重量" label="重量" width="180"/>
    <el-table-column prop="最后入库日期" label="最后入库日期" width="180"/>
    <el-table-column prop="库位编号" label="库位编号" width="180"/>
    <el-table-column prop="库区" label="库区" width="180"/>
    <el-table-column prop="库位" label="库位" width="180"/>
    <el-table-column prop="单据状态" label="单据状态" width="180"/>
    <el-table-column prop="备注" label="备注" width="180"/>
  </el-table>
    </div>
    <!-- 表格结束 -->
    </vxe-grid>
  </div>
  </template>
</template>
  <style scoped>
  </style>
<style scoped>
.main-div-customer{
  width: 99%;
  height: 100%;
}
</style>
north-glass-erp/northglass-erp/src/views/mm/mainTrader/CreateTrader.vue
@@ -1,4 +1,4 @@
<script>
<script lang="ts" setup>
</script>
<template>
@@ -79,7 +79,7 @@
            <el-button id="searchButton" type="primary" :icon="Search">查询</el-button>
          </el-col>
          <el-col span="4.5">
            <el-button id="searchButton" type="primary" :icon="Search">确定</el-button>
            <el-button id="searchButton" type="primary" :icon="save">确定</el-button>
          </el-col>
        </el-row>
      </el-form>
north-glass-erp/northglass-erp/src/views/mm/mainTrader/SelectTrader.vue
@@ -1,184 +1,219 @@
<!-- 供应商管理 -->
<script lang="ts" setup>
import { ref } from "vue";
const name = ref('')
const productName = ref('')
const salId = ref('')
let tableData = ref([
  {
    "供应商编码":'221',
    "供应商名称":'成都正华电子仪器有限公司',
    "代理产品":'辅料',
    "结算方式":'货到付款',
    "联系人":'',
    "联系电话":'',
    "税率":'13.00',
    "公司地址":'北京市辖区东城区',
    "收货地址":'北京市辖区东城区',
    "所属集团":'',
    "等级":'',
    "单据状态":'未审核',
    "审核员":'0.0000',
    "审核日期":'2023-11-19',
    "换算单位":'0',
    "备注":'0',
<script setup>
import {reactive, ref} from "vue";
import {useRouter} from  'vue-router'
import {VXETable} from "vxe-table";
let router=useRouter()
const getTableRow = (row,type) =>{
  switch (type) {
    case 'edit' :{
      //alert('我接收到子组件传送的编辑信息')
      router.push({path: '/main/trader/CreateTrader', query: { id: row.id }})
      break
    }
    case 'delete':{
      alert('我接收到子组件传送的删除信息')
      break
    }
  }
}
//子组件接收参数
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'CustomerList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true },//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true
  },
  {
    "供应商编码":'220',
    "供应商名称":'广州合申机电科技有限公司',
    "代理产品":'辅料',
    "结算方式":'货到付款',
    "联系人":'',
    "联系电话":'',
    "税率":'13.00',
    "公司地址":'北京市辖区东城区',
    "收货地址":'北京市辖区东城区',
    "所属集团":'',
    "等级":'',
    "单据状态":'未审核',
    "审核员":'0.0000',
    "审核日期":'2023-11-19',
    "换算单位":'0',
    "备注":'0',
  filterConfig: {   //筛选配置项
    remote: true
  },
  {
    "供应商编码":'219',
    "供应商名称":'江门市中锐金刚石工具有限公司',
    "代理产品":'辅料',
    "结算方式":'货到付款',
    "联系人":'',
    "联系电话":'',
    "税率":'13.00',
    "公司地址":'北京市辖区东城区',
    "收货地址":'北京市辖区东城区',
    "所属集团":'',
    "等级":'',
    "单据状态":'未审核',
    "审核员":'0.0000',
    "审核日期":'2023-11-19',
    "换算单位":'0',
    "备注":'0',
  customConfig: {
    storage: true
  },
  {
    "供应商编码":'218',
    "供应商名称":'深圳悦创精密自动化技术有限公司',
    "代理产品":'辅料',
    "结算方式":'货到付款',
    "联系人":'',
    "联系电话":'',
    "税率":'13.00',
    "公司地址":'北京市辖区东城区',
    "收货地址":'北京市辖区东城区',
    "所属集团":'',
    "等级":'',
    "单据状态":'未审核',
    "审核员":'0.0000',
    "审核日期":'2023-11-19',
    "换算单位":'0',
    "备注":'0',
  editConfig: {
    trigger: 'click',
    mode: 'row',
    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: '80' },
    {title: '操作', width: '110', slots: { default: 'button_slot' },fixed:"left"},
    {field: 'supplierCode', width:'150', title: '供应商编号', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } } },
    {field: 'supplierName', width: '150',title: '供应商名称', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'agentProduct', width: '120',title: '代理产品', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'settlementMethod', width: '100',title: '结算方式', sortable: true},
    {field: 'contactPerson',width: '100', title: '联系人', sortable: true,showOverflow:"ellipsis"},
    {field: 'taxRate', width: '80',title: '税率', sortable: true},
    {field: 'companyAddress',width: '100', title: '公司地址', sortable: true},
    {field: 'receivingAddress', width: '100',title: '收货地址', sortable: true},
    {field: 'belongingGroup',width: '100', title: '所属集团', sortable: true},
    {field: 'grade', width: '80',title: '等级', sortable: true},
    {field: 'documentStatus',width: '100', title: '单据状态', sortable: true},
    {field: 'auditor', width: '100',title: '审核员', sortable: true},
    {field: 'auditDate',width: '110', title: '审核日期', sortable: true},
    {field: 'conversionUnit',width: '100', title: '换算单位', sortable: true},
    {field: 'remark',width: '80', title: '备注', sortable: true},
  ],//表头按钮
  toolbarConfig: {
    buttons: [{
      'name': '新增',
       'code':'add'
    },],
    import: false,
    export: true,
    print: true,
    zoom: true,
    custom: true
  },
  {
    "供应商编码":'217',
    "供应商名称":'深圳市伯欣科技有限公司',
    "代理产品":'辅料',
    "结算方式":'货到付款',
    "联系人":'',
    "联系电话":'',
    "税率":'13.00',
    "公司地址":'北京市辖区东城区',
    "收货地址":'北京市辖区东城区',
    "所属集团":'',
    "等级":'',
    "单据状态":'未审核',
    "审核员":'0.0000',
    "审核日期":'2023-11-19',
    "换算单位":'0',
    "备注":'0',
  data:  [
    {
      "supplierCode": 216,
      "supplierName": "宿迁宣之文电子商务有限公司",
      "agentProduct": "辅料",
      "settlementMethod": "货到付款",
      "contactPerson": "平钢",
      "taxRate": 13.00,
      "companyAddress": "北京市辖区东城区",
      "receivingAddress": "北京市辖区东城区",
      "belongingGroup": "上海北玻",
      "grade": "5",
      "documentStatus": "未审核",
      "auditor": "小岳",
      "auditDate": "2023-11-19",
      "conversionUnit": "0",
      "remark": "测试",
    },
    {
      "supplierCode": 215,
      "supplierName": "宿迁宣之文电子商务有限公司",
      "agentProduct": "辅料",
      "settlementMethod": "货到付款",
      "contactPerson": "小岳",
      "taxRate": 13.00,
      "companyAddress": "北京市辖区东城区",
      "receivingAddress": "北京市辖区东城区",
      "belongingGroup": "上海北玻",
      "grade": "5",
      "documentStatus": "未审核",
      "auditor": "小岳",
      "auditDate": "2023-11-19",
      "conversionUnit": "0",
      "remark": "测试",
    },
  ],//table body实际数据
  footerMethod ({ columns, data }) {//页脚函数
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
        // }
        return ''
      })
    ]
  }
})
const  xGrid = ref();
const gridEvents = {
  toolbarButtonClick ({ code }) {
    const $grid = xGrid.value
    if ($grid) {
      switch (code) {
        case 'add': {
          router.push({path: '/main/trader/CreateTrader'})
          /*if($grid.getCheckboxRecords().length==0){
            VXETable.modal.message( '请选择一条数据!')
            return
          }*/
          return;
        }
      }
    }
  },
  {
    "供应商编码":'216',
    "供应商名称":'宿迁宣之文电子商务有限公司',
    "代理产品":'辅料',
    "结算方式":'货到付款',
    "联系人":'',
    "联系电话":'',
    "税率":'13.00',
    "公司地址":'北京市辖区东城区',
    "收货地址":'北京市辖区东城区',
    "所属集团":'',
    "等级":'',
    "单据状态":'未审核',
    "审核员":'0.0000',
    "审核日期":'2023-11-19',
    "换算单位":'0',
    "备注":'0',
  toolbarToolClick ({ code }) {
    const $grid = xGrid.value
    if ($grid) {
      switch (code) {
        case 'myPrint': {
          $grid.print()
          break
        }
      }
    }
  },
])
}
</script>
<template>
  <div>
    <!-- 表单开始 -->
    <div>
      <el-form  size="medium" >
  <div class="main-div-customer">
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
        v-on="gridEvents"
<!--        <el-row gutter="5">-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="name" placeholder="请输入供应商编码" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="productName" placeholder="请输入供应商名称" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="salId" placeholder="请输入代理产品" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="salId" placeholder="请输入联系人" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-button id="searchButton" type="primary" :icon="Search">查询</el-button>-->
<!--          </el-col>-->
<!--        </el-row>-->
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
      <!--      下拉显示所有信息插槽-->
      <template #content="{ row}">
        <ul class="expand-wrapper">
          <li  v-for="(item,key,index) in row">
            <span style="font-weight: bold">{{key+':  '}}</span>
            <span>{{ item }}</span>
          </li>
        </ul>
      </template>
        <!-- <el-form-item size="large">
          <el-button type="primary" @click="submitForm">查询</el-button>
          <el-button @click="resetForm">重置</el-button>
        </el-form-item>-->
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">编辑</el-button>
        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button>
      </template>
      </el-form>
    </div>
    <!-- 表单结束 -->
    <!-- 表格开始 -->
    <div>
      <el-table :data="tableData" border style="width: 100%">
        <el-table-column prop="供应商编码" label="供应商编码" width="180" />
        <el-table-column prop="供应商名称" label="供应商名称" width="180" />
        <el-table-column prop="代理产品" label="代理产品" width="180"/>
        <el-table-column prop="结算方式" label="结算方式" width="180"/>
        <el-table-column prop="联系人" label="联系人" width="180"/>
        <el-table-column prop="联系电话" label="联系电话" width="180"/>
        <el-table-column prop="税率" label="税率" width="180"/>
        <el-table-column prop="公司地址" label="公司地址" width="180"/>
        <el-table-column prop="收货地址" label="收货地址" width="180"/>
        <el-table-column prop="所属集团" label="所属集团" width="180"/>
        <el-table-column prop="等级" label="等级" width="180"/>
        <el-table-column prop="单据状态" label="单据状态" width="180"/>
        <el-table-column prop="审核员" label="审核员" width="180"/>
        <el-table-column prop="审核日期" label="审核日期" width="180"/>
        <el-table-column prop="换算单位" label="换算单位" width="180"/>
        <el-table-column prop="备注" label="备注" width="180"/>
        <el-table-column fixed="left" label="操作" width="120">
          <template #default>
            <el-button link type="primary" size="small" @click="handleClick"
            >修改</el-button
            >
            <el-button link type="primary" size="small">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>
      <template #num1_filter="{ column, $panel }">
        <div>
          <div v-for="(option, index) in column.filters" :key="index">
            <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
          </div>
        </div>
      </template>
    </vxe-grid>
  </div>
</template>
<style>
<style scoped>
.main-div-customer{
  width: 99%;
  height: 100%;
}
</style>
north-glass-erp/northglass-erp/src/views/mm/mainTrader/Trader.vue
@@ -19,8 +19,9 @@
  <div id="main">
    <div id="div-title">
      <el-breadcrumb :separator-icon="ArrowRight">
        <el-breadcrumb-item :to="{ path: '/main/trader/SelectTrader' }">产品查询</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/trader/CreateTrader' }">创建</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/trader/SelectTrader' }">供应商列表</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">报表</el-breadcrumb-item>
<!--        <el-breadcrumb-item :to="{ path: '/main/trader/CreateTrader' }">创建</el-breadcrumb-item>-->
      </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/PurchaseOrder.vue
@@ -1,33 +1,27 @@
<template>
  <div class="common-layout">
   <el-container>
    <el-container>
      <el-header style="height: 30px">
        <el-breadcrumb :separator-icon="ArrowRight" >
<!--          <el-breadcrumb-item>采购与物资</el-breadcrumb-item>
          <el-breadcrumb-item>采购与物资</el-breadcrumb-item>
          <el-breadcrumb-item>采购订单
          </el-breadcrumb-item>-->
          <el-breadcrumb-item :to="{path:'/main/purchaseOrder/SelectPurchaseOrder'}">查询采购订单
          </el-breadcrumb-item>
          <el-breadcrumb-item :to="{path:'/main/purchaseOrder/CreatePurchaseOrder'}">创建采购订单
          <el-breadcrumb-item :to="{path:'/main/purchaseOrder/SelectPurchaseOrder'}">查询
          </el-breadcrumb-item>
          <el-breadcrumb-item :to="{path:'/main/purchaseOrder/StoragePurchaseOrder'}">采购入库
          <el-breadcrumb-item :to="{path:'/main/purchaseOrder/CreatePurchaseOrder'}">创建
          </el-breadcrumb-item>
          <el-breadcrumb-item :to="{path:'/main/purchaseOrder/ReturnPurchaseOrder'}">采购退货
          <el-breadcrumb-item :to="{path:'/main/purchaseOrder/PaymentPurchaseOrder'}">应付
          </el-breadcrumb-item>
          <el-breadcrumb-item :to="{path:'/main/purchaseOrder/PaymentPurchaseOrder'}">应付采购订单
          <el-breadcrumb-item >
          </el-breadcrumb-item>
          <el-breadcrumb-item style="display: none"></el-breadcrumb-item>
        </el-breadcrumb>
      </el-header>
      <el-main style="padding: 0">
<router-view/>
        <router-view/>
      </el-main>
<!--     <el-footer>Footer</el-footer>-->
      <!--      <el-footer>Footer</el-footer>-->
    </el-container>
  </div>
</template>
north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/Select.vue
@@ -23,306 +23,189 @@
              id="select"
              type="primary"
              :icon="Search"
              @click="BtnSearchPurchaseOrder">查询
              @click="autoAddRow">查询
          </el-button>
        </el-col>
      </el-row>
    </el-header>
    <el-main style="padding-top: 5px;height:100%">
      <vxe-grid
    <el-main style="padding-top: 5px">
      <div @scroll="handleTableScroll">
          max-height="600"
          @filter-change="filterChanged"
          class="mytable-scrollbar"
          ref="xGrid"
          v-bind="gridOptions"
          v-on="gridEvents"
      >
        <el-table :data="tableData" empty-text="暂无数据" style="width: 100%" max-height="550px" border
                  show-summary
                  sum-text=" ">
          <el-table-column fixed="left" prop="rIndex" label="" width="50" align="center"></el-table-column>
        <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
        <!--      下拉显示所有信息插槽-->
        <template #content="{ row}">
          <ul class="expand-wrapper">
            <li v-for="(item,key,index) in row">
              <span style="font-weight: bold">{{ key + ':  ' }}</span>
              <span>{{ item }}</span>
            </li>
          </ul>
        </template>
        <!--左边固定显示的插槽-->
        <template #button_slot="{ row }">
          <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">编辑</el-button>
<!--          <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button>-->
<!--          <el-button @click="cellClickEvent" link type="primary" size="small">详情</el-button>-->
        </template>
          <el-table-column fixed="left" label="操作" width="120">
            <template #default="scope">
              <el-button
                  link
                  type="primary"
                  size="small"
                  @click.prevent="editRow(scope.$index)"
              >
                编辑
              </el-button>
              <el-button
                  link
                  type="primary"
                  size="small"
                  @click.prevent="deleteRow(scope.$index)"
              >
                删除
              </el-button>
            </template>
          </el-table-column>
        <template #num1_filter="{ column, $panel }">
          <div>
            <div v-for="(option, index) in column.filters" :key="index">
              <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
            </div>
          </div>
        </template>
      </vxe-grid>
          <el-table-column prop="ordernumber" label="采购单号" width="150"/>
          <el-table-column prop="name" label="供应商" width="120"/>
          <el-table-column prop="strockNumber" label="物料编号" width="200"/>
          <el-table-column prop="city" label="物料名称" width="120"/>
          <el-table-column prop="width" sortable label="宽度" width="120"/>
          <el-table-column prop="height" sortable label="高度" width="120"/>
          <el-table-column prop="thick" sortable label="厚度" width="120"/>
          <el-table-column prop="zip" label="型号" width="120"/>
          <el-table-column prop="number" label="单位" width="120"/>
          <el-table-column prop="number" sortable label="不含税单价" width="120"/>
          <el-table-column prop="number" label="数量" width="120" show-summary="ture"/>
          <el-table-column prop="number" label="已采购数量" width="120"/>
          <el-table-column prop="zip" sortable label="金额" width="120"/>
          <el-table-column prop="zip" label="不含税金额" width="120"/>
          <el-table-column prop="date" label="税率" width="120"/>
          <el-table-column prop="date" label="库存" width="120"/>
          <el-table-column prop="zip" label="周用量" width="120"/>
          <el-table-column prop="zip" label="月用量" width="120"/>
          <el-table-column prop="state" label="单据状态" width="120"/>
          <el-table-column prop="ordernumber" label="销售单号" width="200"/>
          <el-table-column prop="date" label="制单日期" width="120"/>
          <el-table-column prop="zip" label="制单人" width="120"/>
          <el-table-column prop="zip" label="采购部门" width="120"/>
          <el-table-column prop="zip" label="采购组织" width="120"/>
          <el-table-column prop="zip" label="备注" width="200"/>
      <vxe-modal v-model="showDetails" title="查看详情" width="600" height="400" :mask="false" :lock-view="false" resize>
        <template #default>
          <vxe-table
              border="inner"
              auto-resize
              show-overflow
              height="auto"
              :row-config="{isHover: true}"
              :show-header="false"
              :sync-resize="showDetails"
              :data="detailData">
            <vxe-column field="label" width="40%"></vxe-column>
            <vxe-column field="value"></vxe-column>
          </vxe-table>
        </template>
      </vxe-modal>
        </el-table>
      </div>
    </el-main>
  </el-container>
</template>
<script setup>
import {ref} from "vue";
import {reactive} from "vue";
import {useRouter} from 'vue-router'
import {Search} from "@element-plus/icons-vue";
import dayjs from "dayjs";
import {VXETable} from "vxe-table";
import {ref} from 'vue'
import {Plus, Search} from "@element-plus/icons-vue";
let router = useRouter()
const getTableRow = (row, type) => {
  switch (type) {
    case 'edit' : {
      //alert('我接收到子组件传送的编辑信息')
      router.push({path: '/main/purchaseOrder/CreatePurchaseOrder', query: {id: row.id}})
      break
    }
    case 'delete': {
const s_wuliaomingcheng = ref('')
const s_buyOrderNumber = ref('')
const s_width = ref('')
const s_height = ref('')
const s_thick = ref('')
      alert('我接收到子组件传送的删除信息'+row.id)
      break
    }
  }
}
const xGrid = ref()
const gridEvents = {
  toolbarButtonClick({code}) {
    const $grid = xGrid.value
    if ($grid) {
      switch (code) {
        case 'Add': {//新增
          router.push({path: '/main/purchaseOrder/CreatePurchaseOrder'})
          break
        }
        case 'AddNo': {//无单新增
          openAlert({type: 'alert', content: '点击了无单新增', status: 'success'})
          break
        }
      }
    }
const options = [
  {
    value: '0',
    label: '全部'
  },
  toolbarToolClick({code}) {
    const $grid = xGrid.value
    if ($grid) {
      switch (code) {
        case 'myPrint': {
          $grid.print()
          break
        }
      }
    }
  {
    value: '1',
    label: '原片'
  },
}
const openAlert = (options) => {
  if(options.type==='message'){
    VXETable.modal.message(options)
  }else{
    VXETable.modal.alert(options)
  }
}
const closeAlert = (id) => {
  VXETable.modal.close(id)
}
const confirmEvent = async () => {
  const type = await VXETable.modal.confirm('您确定要删除吗?')
  VXETable.modal.message({ content: `点击了 ${type}` })
}
const BtnSearchPurchaseOrder =()=>{
  for (let i = 1; i < 6; i++) {
    const randomInt = Math.floor(Math.random() * 999) + 1000;//4位数随机数
    const randomSumInt = Math.floor(Math.random() * 99) + 10;//2位数随机数
    const randomOrderInt = Math.floor(Math.random() * 99) + 100;//3位数随机数
    const t = i % 2 === 0 ? 5 : 6;
    const s = i % 2 === 0 ? '入库':i % 3 === 0 ? '待审核' : i % 5 === 0 ? '已采购' :'退库';
    const CGNo = 'NGCG231200' + randomOrderInt;//采购编号
    const wlNo = 'NGWL1000' + randomInt;
    const xh = 'NGXH' + randomSumInt;
    const wlmc = 'WLMC' + randomInt;
    const gys = '供应商' + randomSumInt;
    const xhdh='NG231200'+randomOrderInt;
    const w = i % 2 === 0 ? '3300' : i % 3 === 0 ? '3660' : i % 4 === 0 ? '2250' : '2580';
    const h = i % 2 === 0 ? '2440' : i % 3 === 0 ? '2440' : i % 4 === 0 ? '2000' : '2300';
    const dw = i % 2 === 0 ? '片' : i % 3 === 0 ? '平米' : i % 4 === 0 ? '包' : '吨';
    now.setDate(now.getDate() + 1);
    gridOptions.data.push({
      cgdh: CGNo,
      h: t,
      xh: xh,
      wlbh: wlNo,
      wlmc: wlmc,
      gys: gys,
      w: w,
      g: h,
      dw: dw,
      cgzt:s,
      rq:dayjs(now).format('YYYY-MM-DD'),
      yl:randomSumInt,
      sl:randomOrderInt,
      xsdh:xhdh,
      je:randomInt,
      6: '139xxxxxxxx',
    })
  }
}
//组件接收参数
const gridOptions = reactive({
  border: "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe: true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true, height: 50},//鼠标移动或选择高亮
  id: 'CustomerList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY: {enabled: true},//开启虚拟滚动
  showOverflow: true,
  columnConfig: {
    resizable: true,
    useKey: true
  {
    value: '2',
    label: '化学品'
  },
  filterConfig: {   //筛选配置项
    remote: true
  {
    value: '3',
    label: '工具'
  },
  customConfig: {
    storage: true
  {
    value: '4',
    label: '木箱'
  },
  editConfig: {
    trigger: 'click',
    mode: 'row',
    showStatus: true
  {
    value: '5',
    label: '白玻'
  },
  columns: [
    {title: '操作', width: '8%', slots: {default: 'button_slot'}, fixed: "left"},
    {type: 'seq', fixed: "left", title: ' ', width: 50},
    { type: 'checkbox',fixed:"left", title: '', width: 50 },
    {type: 'expand', title:'详情', fixed: "left", slots: {content: 'content'}, width: 50},
    {field: 'cgdh', width: '10%', title: '采购单号', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: 'cgzt', width: '10%', title: '状态', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: 'gys', width: '10%',title: '供应商', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: 'wlbh', width: '10%',title: '物料编号', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: 'wlmc', width: '10%', title: '物料名称', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: 'w', width: '8%',title: '宽度', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: 'g', width: '8%',title: '高度', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: 'h', width: '8%',title: '厚度', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: 'xh', width: '8%',title: '型号', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: 'dw', width: '8%',title: '单位', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: '6', width: '12%',title: '不含税单价', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: 'sl', width: '8%',title: '数量', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: 'sl', width: '12%',title: '已采购数量', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: 'je', width: '8%',title: '金额', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: 'je', width: '12%',title: '不含税金额', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: '6', width: '8%',title: '税率', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: 'sl', width: '8%',title: '库存', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: 'yl', width: '10%',title: '周用量', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: 'yl', width: '10%',title: '月用量', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: 'cgzt', width: '10%',title: '单据状态', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: 'xsdh', width: '10%',title: '销售单号', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: 'rq', width: '10%',title: '制单日期', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: '6', width: '10%', title: '制单人', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: '6', width: '10%',title: '采购部门', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: '6', width: '10%',title: '采购组织', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
    {field: '6', width: '10%',title: '备注', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true}
  ],//表头参数
  toolbarConfig: {
    buttons: [/*{type:'text'},
      {
      'name': '创建订单',
]
      'code':'Add',
    },
      {
        'name': '无单新增',
        'code':'AddNo'
      }*/
      ],
    import: false,
    export: true,
    print: true,
    zoom: true,
    custom: true,
    style: 'paddling-left:10px'
  },//表头按钮
  data: [],//table body实际数据
  mergeFooterItems: [
    {row: 0, col: 0, rowspan: 1, colspan: 4}
  ],//合并脚
  footerMethod({columns, data}) {//页脚函数
    return [
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
        }
        /* if (props.tableProp.footList.includes(column.field)) {
           return sumNum(data, column.field)
         }*/
        return ''
      })
    ]
const buyerOptions = [
  {
    value: '0',
    label: '全部'
  },
  {
    value: '1',
    label: '采购甲'
  },
  {
    value: '2',
    label: '采购乙'
  },
]
})
const stateOptions = [
  {
    value: '0',
    label: '待审核'
  },
  {
    value: '1',
    label: '待采购'
  },
  {
    value: '2',
    label: '已采购'
  },
]
/*const showDetails = ref(false)
const detailData = ref([])
const cellClickEvent = ({ row }) => {
  detailData.value = ['采购单号', 'wlbh', 'wlmc', 'gys', 'h', 'k', 'g'].map(field => {
    return { label: field, value: row[field] }
  })
  showDetails.value = true
}*/
import dayjs from 'dayjs'
import 'dayjs/locale/zh-cn'
const now = new Date()
//时间快捷选择
const tableData = ref([])
const autoAddRow = () => {
  for (let i = 0; i < 10; i++) {
    now.setDate(now.getDate() + 1)
    const randomInt = Math.floor(Math.random() * 999) + 1000;
    const randomOrderInt = Math.floor(Math.random() * 99) + 100;
    const randomSumInt = Math.floor(Math.random() * 99) + 10;
    var t = i % 2 === 0 ? 5 : 6;
    var s = i % 3 === 0 ? '' : i % 4 === 0 ? '已采购' : '待审核';
    var oNo = 'NGNO100000' + randomOrderInt;//订单编号
    var wlNo = 'NGWL100000' + randomInt
    tableData.value.push({
      date: dayjs(now).format('YYYY-MM-DD'),
      name: '供应商' + randomSumInt,
      state: s,
      city: 'Los Angeles',
      address: 'No. 189, Grove St, Los Angeles',
      zip: 'CA 90036',
      number: randomInt,
      width: '3660',
      height: '2440',
      rIndex: tableData.value.length + 1,
      ordernumber: oNo,
      strockNumber: wlNo,
      thick: t
    })
  }
}
const CreatePurchaseOrder = () => {
}
const datevalue = ref('')
const shortcuts = [
  {
    text: '近一周',
@@ -357,5 +240,19 @@
<style scoped>
.el-row {
  margin-bottom: 20px;
}
.el-row:last-child {
  margin-bottom: 0;
}
.el-col {
  border-radius: 4px;
}
.m-header {
  height: 32px;
}
</style>
north-glass-erp/northglass-erp/src/views/mm/stockReport/StockReport.vue
@@ -3,9 +3,9 @@
    <el-container>
      <el-header style="height: 30px">
        <el-breadcrumb :separator-icon="ArrowRight">
<!--          <el-breadcrumb-item>采购与物资</el-breadcrumb-item>
          <el-breadcrumb-item>采购与物资</el-breadcrumb-item>
          <el-breadcrumb-item>仓储报表
          </el-breadcrumb-item>-->
          </el-breadcrumb-item>
          <el-breadcrumb-item :to="{path:'/main/stockReport/WarehouseReport'}">原材料报表
          </el-breadcrumb-item>
          <el-breadcrumb-item :to="{path:'/main/stockReport/StockWarehouseReport'}">成品报表
@@ -15,7 +15,7 @@
          <el-breadcrumb-item :to="{path:'/main/stockReport/SubsidiaryMonthReport'}">
            辅料月结
          </el-breadcrumb-item>
          <el-breadcrumb-item style="display: none"></el-breadcrumb-item>
          <el-breadcrumb-item></el-breadcrumb-item>
        </el-breadcrumb>
      </el-header>
      <el-main style="padding: 0;width: 99%;height: 100%;">
north-glass-erp/northglass-erp/src/views/pp/BOM/OrderBOMDetails.vue
@@ -73,7 +73,6 @@
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
    { type: 'seq',fixed:"left", title: '自序', width: 50 },
    {title: '操作', width: 60, slots: { default: 'button_slot' },fixed:"left"},
    { slots: { default: 'state' }, title: '基准BOM', width: 110 },
    { slots: { default: 'state' }, title: '标准BOM', width: 110 },
    { slots: { default: 'state' }, title: '审核', width: 80 },
north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCard.vue
@@ -10,36 +10,7 @@
const router = useRouter()
let flag = $ref(true)
let flag1 = $ref(true)
let flag2 = $ref(true)
// let flag2=router.currentRoute.value.path!='/main/processCard/SelectProcessCard'?false:true
function intoSplitFrame(){
  if(flag1){
    router.push('/main/processCard/SelectAddProcess')
  }else {
    router.push('/main/processCard/SelectProcessCard')
  }
  flag1=!flag1
}
function intoPrint(){
  if(flag){
    router.push('/main/processCard/SelectPrintFlowCard')
  }else {
    router.push('/main/processCard/SelectProcessCard')
  }
  flag=!flag
}
function intoRe(){
  console.log(flag2)
  if(flag2){
    router.push('/main/processCard/ReShelving')
  }else {
    router.push('/main/processCard/SelectProcessCard')
  }
  flag2=!flag2
}
</script>
<template>
@@ -48,7 +19,7 @@
      <el-breadcrumb :separator-icon="ArrowRight">
        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectProcessCard' }">流程卡管理</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectAddProcess' }">分架</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/processCard/ReShelving' }">情况变更</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/processCard/ProductionScheduling' }">排产</el-breadcrumb-item>
<!--        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }">打印</el-breadcrumb-item>-->
        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">打印</el-breadcrumb-item>
      </el-breadcrumb>
north-glass-erp/northglass-erp/src/views/pp/processCard/ProductionScheduling.vue
New file
@@ -0,0 +1,285 @@
<script setup>
import {reactive, ref} from "vue";
import {useRouter} from  'vue-router'
let router=useRouter()
const getTableRow = (row,type) =>{
  switch (type) {
    case 'edit' :{
      //alert('我接收到子组件传送的编辑信息')
      router.push({path: '/main/processCard/PrintFlowCard', query: { id: row.id }})
      break
    }
    case 'delete':{
      alert('我接收到子组件传送的删除信息')
      break
    }
    case  'setType':{
      alert('我接收到子组件传送的排版状态')
      break
    }
  }
}
//表尾求和
const sumNum = (list, field) => {
  let count = 0
  list.forEach(item => {
    count += Number(item[field])
  })
  return count.toFixed(2)
}
//子组件接收参数
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'CustomerList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true },//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true
  },
  filterConfig: {   //筛选配置项
    remote: true
  },
  customConfig: {
    storage: true
  },
  editConfig: {
    trigger: 'click',
    mode: 'row',
    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: 'id', title: '排产编号', sortable: true, width: 120 },
    {field: 'salesOrderNo', title: '销售单号',slots: { filter: 'num1_filter' }, sortable: true, width: 100 },
    {field: 'customerName', title: '客户名称', sortable: true, width: 110},
    {field: 'EntryName', title: '项目名称', sortable: true , width: 100},
    {field: 'serialNumber', title: '序号', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }, width: 90},
    {field: 'productName', title: '产品名称', sortable: true, width: 140},
    {field: 'width', title: '宽', sortable: true , width: 70},
    {field: 'height', title: '高', sortable: true , width: 70},
    {field: 'number', title: '数量', sortable: true , width: 70},
    {field: 'area', title: '面积', sortable: true , width: 90},
    {field: 'productionSchedulingQuantity' , width: 120,editRender: { name: 'input', attrs: { placeholder: '' } }, title: '排产数量', sortable: true},
    {field: 'availableQuantity', title: '已排产数量', sortable: true , width: 120},
    {field: 'availableQuantityArea', title: '已排产面积', sortable: true , width: 120},
    {field: 'usedQuantity', title: '未排产数量', sortable: true , width: 120},
    {field: 'usedQuantityArea', title: '未排产面积', sortable: true , width: 120},
    {field: 'shape', title: '形状', sortable: true , width: 80},
    {field: 'notes', title: '备注', sortable: true , width: 120},
  ],//表头按钮
  toolbarConfig: {
    buttons: [
      {code: 'print_lck', name: '删除',status:'primary' },
      {code: 'print_lck', name: '排产',status:'primary' ,icon:'vxe-icon-save'},
    ],
    import: false,
    export: true,
    print: true,
    zoom: true,
    custom: true
  },
  data:  [
    {
      id:"PC20230100001",
      salesOrderNo: 'NG231207',
      customerName:'XXX公司',
      EntryName:"XXXX公园",
      serialNumber: '1',
      productName: '6mm超白Low-E(外)+A12+6mm超白平钢(内)',
      width: '2000',
      height: '1000',
      number: '10',
      area: '20000',
      productionSchedulingQuantity: '',
      availableQuantity: '10000',
      availableQuantityArea: '10000',
      usedQuantity: '',
      usedQuantityArea: '',
      shape: '矩形',
      notes: '备注'
    },
    {
      id:"PC20230100001",
      salesOrderNo: 'NG231207',
      customerName:'XXX公司',
      EntryName:"XXXX公园",
      serialNumber: '1',
      productName: '12mm超白Low-E(外)+A12+12mm超白平钢(内)',
      width: '2000',
      height: '1000',
      number: '10',
      area: '20000',
      productionSchedulingQuantity: '',
      availableQuantity: '10000',
      availableQuantityArea: '10000',
      usedQuantity: '123',
      usedQuantityArea: '123',
      shape: '矩形',
      notes: '备注'
    },
    {
      id:"",
      salesOrderNo: 'NG231207',
      customerName:'XXX公司',
      EntryName:"XXXX公园",
      serialNumber: '1',
      productName: '8mm超白Low-E(外)+A12+8mm超白平钢(内)',
      width: '2000',
      height: '1000',
      number: '10',
      area: '20000',
      productionSchedulingQuantity: '',
      availableQuantity: '10000',
      availableQuantityArea: '10000',
      usedQuantity: '',
      usedQuantityArea: '',
      shape: '矩形',
      notes: '备注'
    },
  ],//table body实际数据
  //脚部求和
  footerMethod ({ columns, data }) {//页脚函数
    let footList=['number','productionSchedulingQuantity','availableQuantity','availableQuantityArea','usedQuantity','area','usedQuantityArea']
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
        }
        if (footList.includes(column.field)) {
          return sumNum(data, column.field)
        }
        return ''
      })
    ]
  }
})
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const value = ref('')
const options = [
  {
    value: 'Option1',
    label: 'Option1',
  },
  {
    value: 'Option2',
    label: 'Option2',
  },
  {
    value: 'Option3',
    label: 'Option3',
  },
]
</script>
<template>
  <div class="main-div-customer">
    <div id="selectForm">
      <el-row :gutter="0">
        <el-date-picker
            v-model="form.date1"
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
        />
        &nbsp;&nbsp;
        <el-select v-model="value" class="m-2" placeholder="工序">
          <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
          />
        </el-select>
        <el-select v-model="value" class="m-2" placeholder="是否排产">
          <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
          />
        </el-select>
        &nbsp;&nbsp;
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
      <!--      下拉显示所有信息插槽-->
      <template #content="{ row}">
        <ul class="expand-wrapper">
          <li  v-for="(item,key,index) in row">
            <span style="font-weight: bold">{{key+':  '}}</span>
            <span>{{ item }}</span>
          </li>
        </ul>
      </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>
      </template>
      <template #num1_filter="{ column, $panel }">
        <div>
          <div v-for="(option, index) in column.filters" :key="index">
            <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
          </div>
        </div>
      </template>
    </vxe-grid>
  </div>
</template>
<style scoped>
.main-div-customer{
  width: 99%;
  height: 100%;
}
#selectForm {
  width: 70%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/processCard/ReShelving.vue
File was deleted
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue
@@ -65,7 +65,7 @@
    { type: 'seq',fixed:"left", title: '自序', width: 50 },
    {title: '操作', width: 140, slots: { default: 'button_slot' },fixed:"left"},
    {field: 'salesOrderNo', title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true, },
    {field: 'productionOrderNo', title: '流程卡号', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productionOrderNo', width: 120, title: '流程卡号', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productID', title: '产品编号', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productName', title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'entryName', title: '项目名称', sortable: true,showOverflow:"ellipsis"},
@@ -89,7 +89,7 @@
  data:  [
    {
      salesOrderNo: 'NG231201',
      productionOrderNo: 'NG231201A',
      productionOrderNo: 'NG231201A01 ',
      productID: '9001010203000008',
      productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
      entryName: '信合春天里',
@@ -101,7 +101,7 @@
    },
    {
      salesOrderNo: 'NG231201',
      productionOrderNo: 'NG231201B',
      productionOrderNo: 'NG231201B01',
      productID: '9001010203000008',
      productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
      entryName: '信合春天里',
@@ -113,7 +113,7 @@
    },
    {
      salesOrderNo: 'NG231202',
      productionOrderNo: 'NG231202A',
      productionOrderNo: 'NG231202A01',
      productID: '9001010203000008',
      productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
      entryName: '信合春天里',
@@ -125,7 +125,7 @@
    },
    {
      salesOrderNo: 'NG231203',
      productionOrderNo: 'NG231203A',
      productionOrderNo: 'NG231203A01',
      productID: '9001010203000008',
      productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
      entryName: '信合春天里',
@@ -137,7 +137,7 @@
    },
    {
      salesOrderNo: 'NG231204',
      productionOrderNo: 'NG231204A',
      productionOrderNo: 'NG231204A01',
      productID: '9001010203000008',
      productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
      entryName: '信合春天里',
@@ -149,7 +149,7 @@
    },
    {
      salesOrderNo: 'NG231205',
      productionOrderNo: 'NG231205A',
      productionOrderNo: 'NG231205A01',
      productID: '9001010203000008',
      productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
      entryName: '信合春天里',
@@ -161,7 +161,7 @@
    },
    {
      salesOrderNo: 'NG231206',
      productionOrderNo: 'NG231206A',
      productionOrderNo: 'NG231206A01',
      productID: '9001010203000008',
      productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
      entryName: '信合春天里',
@@ -173,7 +173,7 @@
    },
    {
      salesOrderNo: 'NG231207',
      productionOrderNo: 'NG231207A',
      productionOrderNo: 'NG231207A01',
      productID: '9001010203000008',
      productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
      entryName: '信合春天里',
north-glass-erp/northglass-erp/src/views/pp/processCard/SplittingDetails.vue
@@ -65,7 +65,7 @@
    { type: 'seq',fixed:"left", title: '自序', width: 50 },
    {title: '操作', width: 80, slots: { default: 'button_slot' },fixed:"left"},
    {field: 'salesOrderNo',  title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true, },
    {field: 'productionOrderNo', title: '流程卡号', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productionOrderNo', title: '生产订单号', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productID', title: '产品编号', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productName', title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'total', title: '总数量', sortable: true,showOverflow:"ellipsis"},
north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue
@@ -1,6 +1,6 @@
<script setup>
import {reactive} from "vue";
import {reactive, ref} from "vue";
import {useRouter} from  'vue-router'
let router=useRouter()
const getTableRow = (row,type) =>{
@@ -61,7 +61,7 @@
    { type: 'seq',fixed:"left", title: '自序', width: 50 },
    {title: '操作', width: 110, slots: { default: 'button_slot' },fixed:"left"},
    {field: 'salesOrderNo', title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true, },
    {field: 'productionOrderNo', title: '流程卡号', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productionOrderNo', title: '生产订单号', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'batch', title: '批次', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productName', title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'monolithicTotalArea', title: '单片总面积', sortable: true,showOverflow:"ellipsis"},
@@ -204,6 +204,22 @@
  desc: '',
})
const value = ref('')
const options = [
  {
    value: 'Option1',
    label: 'Option1',
  },
  {
    value: 'Option2',
    label: 'Option2',
  },
  {
    value: 'Option3',
    label: 'Option3',
  },
]
</script>
<template>
@@ -217,6 +233,15 @@
            end-placeholder="结束时间"
            :default-time="defaultTime"
        />
        &nbsp;&nbsp;
        <el-select v-model="value" class="m-2" placeholder="是否转工单">
          <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
          />
        </el-select>
        &nbsp;&nbsp;
        <el-button type="primary">查询</el-button>
      </el-row>
@@ -266,7 +291,7 @@
  height: 100%;
}
#selectForm {
  width: 40%;
  width: 50%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue
@@ -126,7 +126,6 @@
}
.div-form{
  margin-left: 30%;
  height:70%;
  width: 40%;
}
north-glass-erp/northglass-erp/src/views/sd/customer/Customer.vue
@@ -1,6 +1,10 @@
<script setup>
import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
import {useRouter} from "vue-router";
let indexFlag=$ref(1)
function changeRouter(index){
  indexFlag=index
}
</script>
@@ -8,8 +12,9 @@
  <div id="main-div">
    <div id="div-title">
      <el-breadcrumb :separator-icon="ArrowRight">
        <el-breadcrumb-item :to="{ path: '/main/customer/selectCustomer' }">客户首页</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/customer/CreateCustomer' }">新增</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/customer/selectCustomer' }">客户首页</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/customer/CreateCustomer' }">新增</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" :to="{ path: '/main/product/test1' }">测试</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
@@ -44,4 +49,7 @@
#select{
  margin-left:0.5rem;
}
:deep(.indexTag .el-breadcrumb__inner){
  color: #5CADFE !important;
}
</style>
north-glass-erp/northglass-erp/src/views/sd/delivery/Delivery.vue
@@ -1,16 +1,19 @@
<script setup>
import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
import {useRouter} from "vue-router";
let indexFlag=$ref(1)
function changeRouter(index){
  indexFlag=index
}
</script>
<template>
  <div id="main-div">
    <div id="div-title">
      <el-breadcrumb :separator-icon="ArrowRight">
        <el-breadcrumb-item :to="{ path: '/main/delivery/selectDelivery' }">发货首页</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/delivery/selectOrderList' }">订单发货</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/delivery/deliveryReport' }">报表</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/delivery/selectDelivery' }">发货首页</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/delivery/selectOrderList' }">订单发货</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/delivery/deliveryReport' }">报表</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" :to="{ path: '/main/delivery/deliveryReport' }">报表</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
@@ -46,4 +49,7 @@
#select{
  margin-left:0.5rem;
}
:deep(.indexTag .el-breadcrumb__inner){
  color: #5CADFE !important;
}
</style>
north-glass-erp/northglass-erp/src/views/sd/order/Order.vue
@@ -3,15 +3,19 @@
import {useRouter} from "vue-router";
const router = useRouter()
let indexFlag=$ref(1)
function changeRouter(index){
  indexFlag=index
}
</script>
<template>
  <div id="main-div">
    <div id="div-title">
      <el-breadcrumb :separator-icon="ArrowRight">
        <el-breadcrumb-item :to="{ path: '/main/order/selectOrder' }">订单首页</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/order/createOrder' }">创建</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/order/orderReport' }">报表</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/order/selectOrder' }">订单首页</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/order/createOrder' }">创建</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/order/orderReport' }">报表</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">报表</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
@@ -47,4 +51,7 @@
#select{
  margin-left:0.5rem;
}
:deep(.indexTag .el-breadcrumb__inner){
  color: #5CADFE !important;
}
</style>
north-glass-erp/northglass-erp/src/views/sd/product/Product.vue
@@ -6,9 +6,11 @@
import {ElMessage} from "element-plus";
import {useRouter} from "vue-router";
import  GlassType from '@/components/sd/product/GlassType.vue'
const router = useRouter()
let indexFlag=$ref(1)
function changeRouter(index){
  indexFlag=index
}
</script>
@@ -16,8 +18,8 @@
  <div id="main">
   <div id="div-title">
     <el-breadcrumb :separator-icon="ArrowRight">
       <el-breadcrumb-item :to="{ path: '/main/product/selectProduct' }">产品首页</el-breadcrumb-item>
       <el-breadcrumb-item :to="{ path: '/main/product/createProduct' }">创建</el-breadcrumb-item>
       <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/product/selectProduct' }">产品首页</el-breadcrumb-item>
       <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/product/createProduct' }">创建</el-breadcrumb-item>
<!--       <el-breadcrumb-item :to="{ path: '/main/product/test' }">测试</el-breadcrumb-item>-->
<!--       <el-breadcrumb-item :to="{ path: '/main/product/test1' }">测试</el-breadcrumb-item>-->
       <el-breadcrumb-item v-show="false" :to="{ path: '/main/product/test1' }">测试</el-breadcrumb-item>
@@ -56,4 +58,7 @@
#select{
  margin-left:0.5rem;
}
:deep(.indexTag .el-breadcrumb__inner){
  color: #5CADFE !important;
}
</style>
north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue
@@ -2,25 +2,57 @@
import request from "@/utils/request"
import deepClone from "@/utils/deepClone"
import {ElDatePicker, ElMessage} from "element-plus"
import useProductGlassTypeStore from "@/stores/productGlassType"
import {watch} from "vue"
import useProductGlassTypeStore from "@/stores/sd/product/productGlassType"
import useProductStore from "@/stores/sd/product/prduct"
import {onMounted, reactive, ref, watch} from "vue"
import {Search} from "@element-plus/icons-vue"
import GlassType from "@/components/sd/product/GlassType.vue"
import {useRouter} from  'vue-router'
import BasicTable from '@/components/basic/BasicTable.vue'
import scrollEvnt from "@/hook";
let productGlassTypeStore = useProductGlassTypeStore()
let productStore = useProductStore()
let router=useRouter()
//监听玻璃类型改变
watch(productGlassTypeStore,(newVal,oldVal) => {
  let list = productList.filter( product=>{
    return  product.glassType==newVal.GlassType
  })
})
//let productList=$ref([])
let pageNum=$ref(1)
watch(productStore,(newVal,oldVal) => {
  if(newVal.flag===true){
    pageNum=pageNum+1
    //后端获取有多少页,超过多少页不再请求
    /*if(pageNum>5){
      console.log(newVal.pageNum)
      return
    }*/
    request.get(`/product/${pageNum}/100`).then((res) => {
      gridOptions.loading=true
      try{
        if(res.code==200){
          gridOptions.data=  gridOptions.data.concat(res.data)
          newVal.flag=false
          setTimeout(()=>{
            gridOptions.loading=false
          },1000)
        }else{
          ElMessage.warning(res.msg)
        }
      }finally {
      }
    })
  }
})
let flag = $ref(false)
request.get("/product").then((res) => {
request.get("/product/1/100").then((res) => {
  if(res.code==200){
    tableProp.datas= deepClone(res.data)
    gridOptions.data= deepClone(res.data)
    flag = true
  }else{
    ElMessage.warning(res.msg)
@@ -30,18 +62,6 @@
//子组件接收参数
let tableProp = $ref({
  title:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
    {type: 'seq',fixed:"left", title: '自序', width: 80 },
    {title: '操作', width: 110, slots: { default: 'button_slot' },fixed:"left"},
    {field: 'prodID', title: '编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'product', title: '名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'typeName', title: '所属类别',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'query', title: '快速查询',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'remarks', title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'creator', title: '创建人',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'createTime', title: '创建时间',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
  ],
  datas:null,
  footList:[],
  //筛选条件列
@@ -51,7 +71,7 @@
const getChildren = (row,type) =>{
const getTableRow = (row,type) =>{
  switch (type) {
    case 'edit' : {
      router.push({path: '/main/product/createProduct', query: { id: row.id }})
@@ -64,10 +84,80 @@
  }
}
const getCheckList = (row) =>{
  alert('我接收到子组件传送的确认复选框信息可在控制台查看')
  console.log(row)
}
// const getCheckList = (row) =>{
//   alert('我接收到子组件传送的确认复选框信息可在控制台查看')
// }
const xGrid = ref()
const gridOptions = reactive({
  loading: false,
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'demo_1',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true ,gt:100},//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true
  },
  filterConfig: {   //筛选配置项
    remote: true
  },
  customConfig: {
    storage: true
  },
  editConfig: {
    trigger: 'click',
    mode: 'row',
    showStatus: true
  },
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
    {type: 'seq',fixed:"left", title: '自序', width: 80 },
    {title: '操作', width: 110, slots: { default: 'button_slot' },fixed:"left"},
    {field: 'prodID', title: '编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'product', title: '名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'typeName', title: '所属类别',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'query', title: '快速查询',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'remarks', title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'creator', title: '创建人',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'createTime', title: '创建时间',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
  ],//表头参数
  toolbarConfig: {
    buttons: [],
    import: false,
    export: true,
    print: true,
    zoom: true,
    custom: true
  },
  data:  null,//table body实际数据
  footerMethod ({ columns, data }) {//页脚函数
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
        }
        return ''
      })
    ]
  }
})
</script>
@@ -80,53 +170,79 @@
          type="primary" :icon="Search">查询</el-button>
      <basic-table style="height: 97%" v-if="flag"
                   :tableProp="tableProp"
                   @getCheckList="getCheckList"
                   @getChildren="getChildren"
      ></basic-table>
    <vxe-grid
        max-height="100%"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
        v-on="gridEvents"
        @scroll ="scrollEvnt"
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
      <!--      下拉显示所有信息插槽-->
      <template #content="{ row }">
        <ul class="expand-wrapper">
          <li  v-for="(item,key) in row">
            <span style="font-weight: bold">{{key+':  '}}</span>
            <span>{{ item }}</span>
          </li>
        </ul>
      </template>
<!--    <el-table
        v-loading="loading"
        :data="productList"
        :header-cell-style="{ 'text-align': 'center' }"
        :cell-style="{ 'text-align': 'center' }"
        lazy
        border
        style="width: 100%;"
        max-height="80vh">
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">编辑</el-button>
        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button>
      </template>
      <el-table-column type="expand" fixed>
        <template #default="props">
          <div m="4">
            <p m="t-0 b-2">编号: {{ props.row.prodID }}</p>
            <p m="t-0 b-2">名称: {{ props.row.product }}</p>
            <p m="t-0 b-2">所属类别: {{ props.row.glassType }}</p>
            <p m="t-0 b-2">快速查询: {{ props.row.query }}</p>
            <p m="t-0 b-2">备注: {{ props.row.remarks }}</p>
            <p m="t-0 b-2">创建人: {{ props.row.creator }}</p>
            <p m="t-0 b-2">创建时间: {{ props.row.createTime }}</p>
      <template #num1_filter="{ column, $panel }">
        <div>
          <div v-for="(option, index) in column.filters" :key="index">
            <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
          </div>
        </template>
      </el-table-column>
      <el-table-column label="操作" width="110" fixed  >
        <el-button link type="primary" size="small">编辑</el-button>
        <el-button link type="primary" size="small">删除</el-button>
      </el-table-column>
      <el-table-column sortable prop="prodID" label="编号" width="110"  />
      <el-table-column prop="product" label="名称" :show-overflow-tooltip='true'  />
      <el-table-column prop="typeName" label="所属类别" width="175" />
      <el-table-column prop="query" label="快速查询" width="150" />
      <el-table-column prop="remarks" label="备注" :show-overflow-tooltip='true' width="100" />
      <el-table-column prop="creator" label="创建人" width="75" />
      <el-table-column prop="createTime" label="创建时间" width="100" />
    </el-table>-->
        </div>
      </template>
    </vxe-grid>
<!--      <basic-table-->
<!--           style="height: 97%" v-if="flag"-->
<!--          :tableProp="tableProp"-->
<!--          @getCheckList="getCheckList"-->
<!--          @getChildren="getChildren"-->
<!--      ></basic-table>-->
  </div>
</template>
<style scoped>
/*滚动条整体部分*/
.mytable-scrollbar ::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
/*滚动条的轨道*/
.mytable-scrollbar ::-webkit-scrollbar-track {
  background-color: #FFFFFF;
}
/*滚动条里面的小方块,能向上向下移动*/
.mytable-scrollbar ::-webkit-scrollbar-thumb {
  background-color: transparent;
  border-radius: 5px;
  border: 1px solid #F1F1F1;
  box-shadow: inset 0 0 6px rgba(0,0,0,.3);
}
.mytable-scrollbar ::-webkit-scrollbar-thumb:hover {
  background-color: #ffffff;
}
.mytable-scrollbar ::-webkit-scrollbar-thumb:active {
  background-color: white;
}
/*边角,即两个滚动条的交汇处*/
.mytable-scrollbar ::-webkit-scrollbar-corner {
  background-color: #FFFFFF;
}
</style>
north-glass-erp/northglass-erp/src/views/sd/returns/Returns.vue
@@ -1,16 +1,20 @@
<script setup>
import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
import {useRouter} from "vue-router";
let indexFlag=$ref(1)
function changeRouter(index){
  indexFlag=index
}
</script>
<template>
  <div id="main-div">
    <div id="div-title">
      <el-breadcrumb :separator-icon="ArrowRight">
        <el-breadcrumb-item :to="{ path: '/main/returns/selectReturns' }">退货首页</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/returns/selectDeliveryList' }">发货退货</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/returns/returnsReport' }">报表</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/returns/selectReturns' }">退货首页</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/returns/selectDeliveryList' }">发货退货</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/returns/returnsReport' }">报表</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" :to="{ path: '/main/product/test1' }">测试</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
@@ -45,4 +49,7 @@
#select{
  margin-left:0.5rem;
}
:deep(.indexTag .el-breadcrumb__inner){
  color: #5CADFE !important;
}
</style>
north-glass-erp/src/main/java/com/example/erp/common/Result.java
@@ -23,7 +23,7 @@
        return new Result(code,msg,null);
    }
    public static  Result error(){
        return new Result(Constants.Code_500,"系统发生错误",null);
        return new Result(Constants.Code_500,"服务器发生异常",null);
    }
}
north-glass-erp/src/main/java/com/example/erp/common/interceptor/JwtInterceptor.java
@@ -29,7 +29,7 @@
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //return HandlerInterceptor.super.preHandle(request, response, handler);
        String token=request.getHeader("token");
        /*String token=request.getHeader("token");
        if(!(handler instanceof HandlerMethod)){
            return  true;
        }
@@ -58,7 +58,7 @@
            jwtVerifier.verify(token);
        } catch (JWTVerificationException e) {
            throw new ServiceException(Constants.Code_401,"token验证失败,请重新登陆");
        }
        }*/
        return true;
    }
north-glass-erp/src/main/java/com/example/erp/controller/sd/ProductController.java
@@ -3,9 +3,7 @@
import com.example.erp.common.Result;
import com.example.erp.service.sd.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/product")
@@ -13,9 +11,8 @@
    @Autowired
    ProductService productService;
    @GetMapping
    public Result defaultDateProduct(){
        //调用productService的defaultDateProduct方法,返回结果
        return Result.seccess(productService.defaultDateProduct());
    @GetMapping("/{pageNum}/{pageSize}")
    public Result defaultDateProduct(@PathVariable Integer pageNum, @PathVariable Integer pageSize){
        return Result.seccess(productService.defaultDateProduct(pageNum,pageSize));
    }
}
north-glass-erp/src/main/java/com/example/erp/mapper/sd/ProductMapper.java
@@ -2,10 +2,11 @@
import com.example.erp.entity.sd.Product;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface ProductMapper {
    List<Product> defaultProduct();
    List<Product> defaultProduct(@Param("offset") Integer offset, @Param("pageSize") Integer pageSize);
}
north-glass-erp/src/main/java/com/example/erp/service/sd/ProductService.java
@@ -13,7 +13,8 @@
public class ProductService {
    @Autowired
    ProductMapper productMapper;
    public List<Product> defaultDateProduct() {
        return productMapper.defaultProduct();
    public List<Product> defaultDateProduct(Integer pageNum,Integer pageSize) {
        Integer offset = (pageNum-1)*pageSize;
        return productMapper.defaultProduct(offset,pageSize);
    }
}
north-glass-erp/src/main/resources/application.yml
@@ -10,12 +10,12 @@
      strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源.
      datasource:
        user_info:
          url: jdbc:mysql://10.153.19.12:3306/erp_user_info?serverTimezone=GMT%2b8
          url: jdbc:mysql://10.153.19.150:3306/erp_user_info?serverTimezone=GMT%2b8
          username: root
          password: beibo.123/
          driver-class-name: com.mysql.cj.jdbc.Driver
        erp_sd:
          url: jdbc:mysql://10.153.19.12:3306/erp_sd?serverTimezone=GMT%2b8
          url: jdbc:mysql://10.153.19.150:3306/erp_sd?serverTimezone=GMT%2b8
          username: root
          password: beibo.123/
          driver-class-name: com.mysql.cj.jdbc.Driver
north-glass-erp/src/main/resources/mapper/sd/Product.xml
@@ -23,6 +23,7 @@
        left join basic_glass_type bgt on bgt.typeID = a.glassType
        order by id desc
        limit #{offset},#{pageSize}
        ;
    </select>
</mapper>
north-glass-erp/target/classes/application.yml
@@ -10,12 +10,12 @@
      strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源.
      datasource:
        user_info:
          url: jdbc:mysql://10.153.19.12:3306/erp_user_info?serverTimezone=GMT%2b8
          url: jdbc:mysql://10.153.19.150:3306/erp_user_info?serverTimezone=GMT%2b8
          username: root
          password: beibo.123/
          driver-class-name: com.mysql.cj.jdbc.Driver
        erp_sd:
          url: jdbc:mysql://10.153.19.12:3306/erp_sd?serverTimezone=GMT%2b8
          url: jdbc:mysql://10.153.19.150:3306/erp_sd?serverTimezone=GMT%2b8
          username: root
          password: beibo.123/
          driver-class-name: com.mysql.cj.jdbc.Driver
north-glass-erp/target/classes/mapper/sd/Product.xml
@@ -23,6 +23,7 @@
        left join basic_glass_type bgt on bgt.typeID = a.glassType
        order by id desc
        limit #{offset},#{pageSize}
        ;
    </select>
</mapper>