chenhaozhe
2025-12-18 032a92d28ca42d28f35894405d975c7313154e5e
Merge branch 'master' of http://101.37.171.70:10101/r/MES-WEB-VUEUI
1个文件已添加
7个文件已修改
1309 ■■■■ 已修改文件
src/router/index.js 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/permission.js 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CaiGouGuanLi/CaiGouRuKu/Kf_POStockInBillList.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ProductInBill/Kf_ProductInBillList.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/gyMaterial/GyMaterial.vue 422 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sell/sellOut/sellOutBill.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/warehouse/barcodeMaster/Gy_BarCodeBill.vue 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/warehouse/barcodeMaster/Gy_BarCodeBillList.vue 755 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js
@@ -138,6 +138,31 @@
    ],
  },
  //#endregion
  //#region 条码主挡
  {
    path: "/warehouse/barcodeMaster/Gy_BarCodeBillList",
    component: Layout,
    hidden: true,
    redirect: "noredirect",
    meta: {
      breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示
      activeMenu: "/warehouse/barcodeMaster/Gy_BarCodeBillList", // 当路由设置了该属性,则会高亮相对应的侧边栏。
    },
    children: [
      {
        path: "/warehouse/barcodeMaster/Gy_BarCodeBillList",
        component: () =>
          import("@/views/warehouse/barcodeMaster/Gy_BarCodeBillList.vue"),
        name: "Gy_BarCodeBillList",
        meta: {
          title: "条码主档",
          activeMenu: "warehouse/barcodeMaster",
        },
      },
    ],
  },
  //#endregion
  //#endregion
  //#region 仓存管理
src/store/modules/permission.js
@@ -423,6 +423,21 @@
                    name: "Gy_BarCodeBill",
                    path: "Gy_BarCodeBill",
                  },
                  {
                    meta: {
                      icon: "build",
                      link: null,
                      noCache: false,
                      title: "条码主档",
                    },
                    component: () =>
                      import(
                        "@/views/warehouse/barcodeMaster/Gy_BarCodeBillList.vue"
                      ),
                    hidden: false,
                    name: "Gy_BarCodeBillList",
                    path: "Gy_BarCodeBillList",
                  },
                ],
              },
            ],
src/views/CaiGouGuanLi/CaiGouRuKu/Kf_POStockInBillList.vue
@@ -150,6 +150,9 @@
      <el-col :span="1.5">
        <el-button type="primary" icon="el-icon-printer" size="mini" :disabled="single" @click="get_BarCodeDetail">条码明细</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button type="primary" icon="el-icon-printer" size="mini" :disabled="single" @click="get_PackStockDetail">包装容器出入库明细</el-button>
      </el-col>
    </el-row>
    <div class="tableBox" v-loading="loading">
      <el-table :data="tableData" ref="tableData" max-height="710" :summary-method="getSummaries"
@@ -195,6 +198,8 @@
      </el-dialog>
      <!-- 条码明细 -->
      <BarCodeDetail :visible.sync="barCodeDetailShow" ref="barcodeDetail"/>
      <!-- 包装容器出入库明细 -->
      <PackStockDetail :visible.sync="packStockDetailShow" ref="packStockDetail"/>
    </div>
  </div>
</template>
@@ -205,11 +210,12 @@
import RowSettings from '@/views/component/rowSettings'                   //列设置组件
import PrintList from '@/views/component/printList'                       //打印组件
import BarCodeDetail from '@/views/component/BarCodeDetail'               //条码明细组件
import PackStockDetail from '@/views/component/PackStockDetail'               //条码明细组件
import Edit from '@/views/CaiGouGuanLi/CaiGouRuKu/Kf_POStockInBillEdit'   //编辑页面组件
export default {
  name: 'Kf_POStockInBillList',
  components: { RowSettings, Edit, PrintList,BarCodeDetail },
  components: { RowSettings, Edit, PrintList,BarCodeDetail,PackStockDetail },
  data() {
    return {
      baseURL: process.env.VUE_APP_BASE_API,                //后端接口前缀(后端服务器ip地址)
@@ -265,6 +271,7 @@
      openRowHide: false,                                   //列设置组件显示标记
      rowHideShow: false,                                   //列设置组件容器显示标记
      barCodeDetailShow: false,                             //条码明细组件容器显示标记
      packStockDetailShow:false,                            //包装容器出入库明细容器显示标记
      
      
      
@@ -863,6 +870,19 @@
        },
    //#endregion
    //#region 包装容器出入库明细
    get_PackStockDetail() {
      // if (this.selectedRow.length !== 1) {
      //   this.$message.warning('请选择一行数据查看条码明细!')
      //   return
      // }
      this.packStockDetailShow = true
      this.$nextTick(() => {
        this.$refs.packStockDetail.open(this.rowForm)
      })
        },
    //#endregion
    //#region 退出
    close() {
      // this.reset()
src/views/ProductInBill/Kf_ProductInBillList.vue
@@ -141,6 +141,9 @@
      <el-col :span="1.5">
        <el-button type="primary" icon="el-icon-printer" size="mini" :disabled="single" @click="get_BarCodeDetail">条码明细</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button type="primary" icon="el-icon-printer" size="mini" :disabled="single" @click="get_PackStockDetail">包装容器出入库明细</el-button>
      </el-col>
    </el-row>
    <div class="tableBox" v-loading="loading">
      <el-table :data="tableData" ref="tableData" max-height="710" :summary-method="getSummaries"
@@ -186,6 +189,8 @@
      </el-dialog>
      <!-- 条码明细 -->
      <BarCodeDetail :visible.sync="barCodeDetailShow" ref="barcodeDetail"/>
      <!-- 包装容器出入库明细 -->
      <PackStockDetail :visible.sync="packStockDetailShow" ref="packStockDetail"/>
    </div>
  </div>
</template>
@@ -196,11 +201,12 @@
import RowSettings from '@/views/component/rowSettings'                   //列设置组件
import PrintList from '@/views/component/printList'                       //打印组件
import BarCodeDetail from '@/views/component/BarCodeDetail'               //条码明细组件
import PackStockDetail from '@/views/component/PackStockDetail'               //条码明细组件
import Edit from '@/views/ProductInBill/Kf_ProductInBillEdit'             //编辑页面组件
export default {
  name: 'Kf_ProductInBillList',
  components: { RowSettings, Edit, PrintList,BarCodeDetail },
  components: { RowSettings, Edit, PrintList,BarCodeDetail,PackStockDetail },
  data() {
    return {
      baseURL: process.env.VUE_APP_BASE_API,                //后端接口前缀(后端服务器ip地址)
@@ -253,6 +259,7 @@
      openRowHide: false,                                   //列设置组件显示标记
      rowHideShow: false,                                   //列设置组件容器显示标记
      barCodeDetailShow: false,                             //条码明细组件容器显示标记
      packStockDetailShow:false,                            //包装容器出入库明细容器显示标记
      
      
      
@@ -837,6 +844,19 @@
      })
        },
    //#endregion
    //#region 包装容器出入库明细
    get_PackStockDetail() {
      // if (this.selectedRow.length !== 1) {
      //   this.$message.warning('请选择一行数据查看条码明细!')
      //   return
      // }
      this.packStockDetailShow = true
      this.$nextTick(() => {
        this.$refs.packStockDetail.open(this.rowForm)
      })
        },
    //#endregion
    //#region 退出
    close() {
src/views/gyMaterial/GyMaterial.vue
@@ -3,65 +3,28 @@
    <el-card style="margin-bottom: 10px">
      <el-form :inline="true" :model="queryParams" ref="queryForm" class="mb8">
        <el-form-item label="物料代码" prop="HNumber">
          <el-input
            v-model="queryParams.HNumber"
            placeholder="请输入物料代码"
            style="width: 160px"
          />
          <el-input v-model="queryParams.HNumber" placeholder="请输入物料代码" style="width: 160px" />
        </el-form-item>
        <el-form-item label="物料名称" prop="HName">
          <el-input
            v-model="queryParams.HName"
            placeholder="请输入物料名称"
            style="width: 160px"
          />
          <el-input v-model="queryParams.HName" placeholder="请输入物料名称" style="width: 160px" />
        </el-form-item>
        <el-form-item label="组织名称" prop="HOrgID">
          <el-select
            v-model="queryParams.HOrgID"
            placeholder="请选择组织"
            style="width: 160px"
          >
            <el-option
              v-for="(item, index) in organizationOptions"
              :key="index"
              :label="item.Name"
              :value="item.ID.toString()"
            />
          <el-select v-model="queryParams.HOrgID" placeholder="请选择组织" style="width: 160px">
            <el-option v-for="(item, index) in organizationOptions" :key="index" :label="item.Name"
              :value="item.ID.toString()" />
          </el-select>
        </el-form-item>
        <el-form-item label="项目号" prop="HProject">
          <el-select
            v-model="queryParams.HProject"
            placeholder="请选择项目号"
            style="width: 160px"
          >
            <el-option
              v-for="item in projectOptions"
              :key="item.HName"
              :label="item.HName"
              :value="item.HName"
            />
          <el-select v-model="queryParams.HProject" placeholder="请选择项目号" style="width: 160px">
            <el-option v-for="item in projectOptions" :key="item.HName" :label="item.HName" :value="item.HName" />
          </el-select>
        </el-form-item>
        <el-form-item label="重新同步">
          <el-input
            v-model="queryParams.HNumber2"
            placeholder="请输入物料代码"
            style="width: 160px"
          />
          <el-button
            type="primary"
            size="mini"
            @click="handleResCnz"
            style="margin-left: 10px"
            >重新同步</el-button
          >
          <el-input v-model="queryParams.HNumber2" placeholder="请输入物料代码" style="width: 160px" />
          <el-button type="primary" size="mini" @click="handleResCnz" style="margin-left: 10px">重新同步</el-button>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
            >搜索</el-button
          >
          <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
          <el-button size="mini" @click="resetQuery">重置</el-button>
        </el-form-item>
      </el-form>
@@ -69,11 +32,7 @@
        <el-collapse v-model="activeCollapse" class="filter-collapse">
          <el-collapse-item title="更多" name="more">
            <el-form-item label="规格型号" prop="HModel">
              <el-input
                v-model="queryParams.HModel"
                placeholder="请输入规格型号"
                style="width: 160px"
              />
              <el-input v-model="queryParams.HModel" placeholder="请输入规格型号" style="width: 160px" />
            </el-form-item>
            <el-card class="box-card" style="margin-top: 20px">
              <div slot="header" class="clearfix"><span>过滤</span></div>
@@ -81,126 +40,66 @@
                <el-form-item label-width="0">
                  <el-row>
                    <el-col :span="7">
                      <el-select
                        v-model="queryParams.ColName"
                        placeholder="请选择"
                        style="width: 100%"
                      >
                      <el-select v-model="queryParams.ColName" placeholder="请选择" style="width: 100%">
                        <!-- <el-option value="" label=""></el-option> -->
                        <el-option
                          v-for="(item, index) in visibleColumns"
                          :key="index"
                          :label="item.title"
                          :value="item.field"
                        ></el-option>
                        <el-option v-for="(item, index) in visibleColumns" :key="index" :label="item.title"
                          :value="item.field"></el-option>
                      </el-select>
                    </el-col>
                    <el-col :span="6" style="padding: 0 10px">
                      <el-select
                        v-model="queryParams.Comparator"
                        placeholder="请选择"
                        style="width: 100%"
                      >
                      <el-select v-model="queryParams.Comparator" placeholder="请选择" style="width: 100%">
                        <!-- <el-option value="0" label=""></el-option> -->
                        <el-option
                          v-for="(item, index) in comparatorList"
                          :key="index"
                          :label="item.label"
                          :value="item.value"
                        ></el-option>
                        <el-option v-for="(item, index) in comparatorList" :key="index" :label="item.label"
                          :value="item.value"></el-option>
                      </el-select>
                    </el-col>
                    <el-col :span="11">
                      <el-input
                        v-model="queryParams.ColContent"
                        placeholder="请输入"
                        clearable
                        @keyup.enter.native="handleQuery"
                      />
                      <el-input v-model="queryParams.ColContent" placeholder="请输入" clearable
                        @keyup.enter.native="handleQuery" />
                    </el-col>
                  </el-row>
                </el-form-item>
                <el-form-item label-width="0">
                  <el-row>
                    <el-col :span="7">
                      <el-select
                        v-model="queryParams.ColName1"
                        placeholder="请选择"
                        style="width: 100%"
                      >
                      <el-select v-model="queryParams.ColName1" placeholder="请选择" style="width: 100%">
                        <!-- <el-option value="0" label=""></el-option> -->
                        <el-option
                          v-for="(item, index) in visibleColumns"
                          :key="index"
                          :label="item.title"
                          :value="item.field"
                        ></el-option>
                        <el-option v-for="(item, index) in visibleColumns" :key="index" :label="item.title"
                          :value="item.field"></el-option>
                      </el-select>
                    </el-col>
                    <el-col :span="6" style="padding: 0 10px">
                      <el-select
                        v-model="queryParams.Comparator1"
                        placeholder="请选择"
                        style="width: 100%"
                      >
                      <el-select v-model="queryParams.Comparator1" placeholder="请选择" style="width: 100%">
                        <!-- <el-option value="0" label=""></el-option> -->
                        <el-option
                          v-for="(item, index) in comparatorList"
                          :key="index"
                          :label="item.label"
                          :value="item.value"
                        ></el-option>
                        <el-option v-for="(item, index) in comparatorList" :key="index" :label="item.label"
                          :value="item.value"></el-option>
                      </el-select>
                    </el-col>
                    <el-col :span="11">
                      <el-input
                        v-model="queryParams.ColContent1"
                        placeholder="请输入"
                        clearable
                        @keyup.enter.native="handleQuery"
                      />
                      <el-input v-model="queryParams.ColContent1" placeholder="请输入" clearable
                        @keyup.enter.native="handleQuery" />
                    </el-col>
                  </el-row>
                </el-form-item>
                <el-form-item label-width="0">
                  <el-row>
                    <el-col :span="7">
                      <el-select
                        v-model="queryParams.ColName2"
                        placeholder="请选择"
                        style="width: 100%"
                      >
                      <el-select v-model="queryParams.ColName2" placeholder="请选择" style="width: 100%">
                        <!-- <el-option value="0" label=""></el-option> -->
                        <el-option
                          v-for="(item, index) in visibleColumns"
                          :key="index"
                          :label="item.title"
                          :value="item.field"
                        ></el-option>
                        <el-option v-for="(item, index) in visibleColumns" :key="index" :label="item.title"
                          :value="item.field"></el-option>
                      </el-select>
                    </el-col>
                    <el-col :span="6" style="padding: 0 10px">
                      <el-select
                        v-model="queryParams.Comparator2"
                        placeholder="请选择"
                        style="width: 100%"
                      >
                      <el-select v-model="queryParams.Comparator2" placeholder="请选择" style="width: 100%">
                        <!-- <el-option value="0" label=""></el-option> -->
                        <el-option
                          v-for="(item, index) in comparatorList"
                          :key="index"
                          :label="item.label"
                          :value="item.value"
                        ></el-option>
                        <el-option v-for="(item, index) in comparatorList" :key="index" :label="item.label"
                          :value="item.value"></el-option>
                      </el-select>
                    </el-col>
                    <el-col :span="11">
                      <el-input
                        v-model="queryParams.ColContent2"
                        placeholder="请输入"
                        clearable
                        @keyup.enter.native="handleQuery"
                      />
                      <el-input v-model="queryParams.ColContent2" placeholder="请输入" clearable
                        @keyup.enter.native="handleQuery" />
                    </el-col>
                  </el-row>
                </el-form-item>
@@ -209,15 +108,13 @@
          </el-collapse-item>
        </el-collapse>
      </el-form>
      <div
        style="
      <div style="
          text-align: center;
          font-size: 15px;
          font-weight: bold;
          color: #fc9393;
          margin: 20px 0;
        "
      >
        ">
        {{ currentFilterScheme }}
      </div>
    </el-card>
@@ -241,25 +138,19 @@
        <el-button size="mini" :disabled="single" @click="handleEdit">编辑</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button type="danger" size="mini" :disabled="single" @click="handleDelete"
          >删除</el-button
        >
        <el-button type="danger" size="mini" :disabled="single" @click="handleDelete">删除</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button size="mini" :disabled="single" @click="handleAudit(0)">审核</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button size="mini" :disabled="single" @click="handleAudit(1)"
          >反审核</el-button
        >
        <el-button size="mini" :disabled="single" @click="handleAudit(1)">反审核</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button size="mini" :disabled="single" @click="handleStop(0)">禁用</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button size="mini" :disabled="single" @click="handleStop(1)"
          >反禁用</el-button
        >
        <el-button size="mini" :disabled="single" @click="handleStop(1)">反禁用</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button size="mini" @click="handleColumnSetting">列设置</el-button>
@@ -268,14 +159,10 @@
        <el-button size="mini" @click="handleButtonSetting">按钮设置</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button type="primary" size="mini" @click="handleSaveScheme"
          >保存方案</el-button
        >
        <el-button type="primary" size="mini" @click="handleSaveScheme">保存方案</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button type="primary" size="mini" @click="handleReadScheme"
          >读取方案</el-button
        >
        <el-button type="primary" size="mini" @click="handleReadScheme">读取方案</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button size="mini" @click="handleRefresh">刷新</el-button>
@@ -287,68 +174,41 @@
        <el-button type="primary" size="mini" @click="handleCorrect">批改</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button type="primary" size="mini" @click="handleCorrect2"
          >批改(方案2)</el-button
        >
        <el-button type="primary" size="mini" @click="handleCorrect2">批改(方案2)</el-button>
      </el-col>
    </el-row>
    <el-row :gutter="10" style="margin-top: 10px">
      <el-col :span="6">
        <el-card
          style="height: 600px; overflow: hidden; display: flex; flex-direction: column"
        >
        <el-card style="height: 600px; overflow: hidden; display: flex; flex-direction: column">
          <div slot="header">
            <span>物料分类</span>
          </div>
          <div style="flex: 1; overflow: auto; margin-bottom: 10px">
            <el-tree
              :data="treeData"
              :props="treeProps"
              node-key="id"
              default-expand-all
              :expand-on-click-node="false"
              @node-click="handleTreeNodeClick"
              :highlight-current="true"
              class="custom-tree"
            >
            <el-tree :data="treeData" :props="treeProps" node-key="id" default-expand-all :expand-on-click-node="false"
              @node-click="handleTreeNodeClick" :highlight-current="true" class="custom-tree">
              <span class="custom-tree-node" slot-scope="{ node, data }">
                <span>{{ node.label }}</span>
              </span>
            </el-tree>
          </div>
          <div style="height: 200px; border: 1px solid #ebeef5; border-radius: 4px">
            <el-carousel
              :autoplay="false"
              indicator-position="none"
              height="200px"
              ref="carousel"
            >
            <el-carousel :autoplay="false" indicator-position="none" height="200px" ref="carousel">
              <el-carousel-item v-for="(item, index) in fileList" :key="index">
                <div v-if="item.type === 'image'" class="carousel-item">
                  <img
                    :src="item.url"
                    :alt="item.name"
                    style="width: 100%; height: 100%; object-fit: contain"
                    @click="previewImg(item.url)"
                  />
                  <img :src="item.url" :alt="item.name" style="width: 100%; height: 100%; object-fit: contain"
                    @click="previewImg(item.url)" />
                </div>
                <div v-else-if="item.type === 'pdf'" class="carousel-item">
                  <embed
                    :src="item.url"
                    type="application/pdf"
                    style="width: 100%; height: 100%"
                  />
                  <embed :src="item.url" type="application/pdf" style="width: 100%; height: 100%" />
                </div>
                <div v-else class="carousel-item">
                  <h1
                    style="
                  <h1 style="
                      text-align: center;
                      line-height: 180px;
                      color: red;
                      font-weight: bolder;
                    "
                  >
                    ">
                    暂未上传文件
                  </h1>
                </div>
@@ -360,45 +220,21 @@
      <el-col :span="18">
        <div class="tableBox" v-loading="loading">
          <el-table
            :data="tableData"
            ref="tableData"
            height="600"
            @selection-change="handleSelectionChange"
            border
            @row-click="handleRowClick"
            @row-dblclick="handleDblclick"
            :row-style="rowStyle"
            v-if="tableShow"
          >
          <el-table :data="tableData" ref="tableData" height="600" @selection-change="handleSelectionChange" border
            @row-click="handleRowClick" @row-dblclick="handleDblclick" :row-style="rowStyle" v-if="tableShow">
            <el-table-column type="selection" width="55" align="center" fixed="left" />
            <el-table-column prop="hmainid" label="单据ID" v-if="false" />
            <el-table-column
              v-for="(item, index) in btList"
              :key="index"
              :align="item.align"
              :prop="item.field"
              :label="item.title"
              :width="item.width"
              v-if="!item.hide"
              :sortable="item.sort"
              show-overflow-tooltip
              :fixed="item.fixed"
            >
            <el-table-column v-for="(item, index) in btList" :key="index" :align="item.align" :prop="item.field"
              :label="item.title" :width="item.width" v-if="!item.hide" :sortable="item.sort" show-overflow-tooltip
              :fixed="item.fixed">
              <template slot-scope="{ row, column }">
                <div :style="item.style">
                  <el-button
                    type="text"
                    @click="handleMaterialCodeClick(row)"
                    v-if="column.property === '物料代码'"
                    >{{ row[column.property] }}</el-button
                  >
                  <span
                    v-else-if="
                      (column.property || '').includes('时间') ||
                      (column.property || '').includes('日期')
                    "
                  >
                  <el-button type="text" @click="handleMaterialCodeClick(row)" v-if="column.property === '物料代码'">{{
                    row[column.property] }}</el-button>
                  <span v-else-if="
                    (column.property || '').includes('时间') ||
                    (column.property || '').includes('日期')
                  ">
                    {{ formatDate(row[column.property]) }}
                  </span>
                  <span v-else>{{ row[column.property] }}</span>
@@ -406,68 +242,30 @@
              </template>
            </el-table-column>
          </el-table>
          <pagination
            v-show="total > 0"
            :total="total"
            :page.sync="page"
            :limit.sync="pageSize"
            :pageSizes="pageSizes"
            @pagination="handleQuery"
          />
          <pagination v-show="total > 0" :total="total" :page.sync="page" :limit.sync="pageSize" :pageSizes="pageSizes"
            @pagination="handleQuery" />
        </div>
      </el-col>
    </el-row>
    <el-dialog
      :visible.sync="previewVisible"
      width="80%"
      top="5vh"
      :before-close="handlePreviewClose"
    >
    <el-dialog :visible.sync="previewVisible" width="80%" top="5vh" :before-close="handlePreviewClose">
      <img :src="previewImage" style="width: 100%" />
    </el-dialog>
    <el-dialog
      title="隐藏列设置"
      :visible.sync="openColumnSetting"
      width="816px"
      append-to-body
    >
      <RowSettings
        :colName="btResList"
        :HModName="HModName"
        @rowEditClose="columnSettingClose"
        v-if="columnSettingShow"
      />
    <el-dialog title="隐藏列设置" :visible.sync="openColumnSetting" width="816px" append-to-body>
      <RowSettings :colName="btResList" :HModName="HModName" @rowEditClose="columnSettingClose"
        v-if="columnSettingShow" />
    </el-dialog>
    <el-dialog
      :title="editTitle"
      :visible.sync="openEdit"
      width="95%"
      top="2vh"
      append-to-body
      class="material-edit-dialog"
      :before-close="closeEdit"
    >
      <MaterialEdit
        v-if="editShow"
        :hID="currentEditId"
        :OperationType="OperationType"
        :HMaterTypeID="currentMaterTypeID"
        @close="handleEditClose"
      />
    <el-dialog :title="editTitle" :visible.sync="openEdit" width="95%" top="2vh" append-to-body
      class="material-edit-dialog" :before-close="closeEdit">
      <MaterialEdit v-if="editShow" :hID="currentEditId" :OperationType="OperationType"
        :HMaterTypeID="currentMaterTypeID" @close="handleEditClose" />
    </el-dialog>
    <MaterialCorrection :visible.sync="openCorrect" @close="closeCorrect" />
    <el-dialog
      title="批改(方案2)"
      :visible.sync="openCorrect2"
      width="1480px"
      append-to-body
      :before-close="closeCorrect2"
    >
    <el-dialog title="批改(方案2)" :visible.sync="openCorrect2" width="1480px" append-to-body :before-close="closeCorrect2">
      <div style="text-align: center; padding: 50px">
        <h2>物料批改功能(方案2)</h2>
        <p>物料批改功能(方案2)待后续开发</p>
@@ -475,29 +273,13 @@
      </div>
    </el-dialog>
    <el-dialog
      :title="upload.title"
      :visible.sync="upload.open"
      width="1500px"
      append-to-body
    >
    <el-dialog :title="upload.title" :visible.sync="upload.open" width="1500px" append-to-body>
      <div style="margin-top: -20px">
        <el-button type="primary" size="mini" @click="handleImportSubmit"
          >导入数据</el-button
        >
        <el-button type="primary" size="mini" @click="upload.open = false"
          >退 出</el-button
        >
        <el-upload
          ref="upload"
          :limit="1"
          accept=".xlsx, .xls"
          style="display: inline-block; margin-left: 10px"
          :action="upload.url + '?updateSupport=' + upload.updateSupport"
          :disabled="upload.isUploading"
          :on-progress="handleFileUploadProgress"
          :on-success="handleFileSuccess"
        >
        <el-button type="primary" size="mini" @click="handleImportSubmit">导入数据</el-button>
        <el-button type="primary" size="mini" @click="upload.open = false">退 出</el-button>
        <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" style="display: inline-block; margin-left: 10px"
          :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
          :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess">
          <el-button type="primary" size="mini">文件上传</el-button>
        </el-upload>
      </div>
@@ -508,13 +290,8 @@
        <el-table-column label="物料分类" prop="物料分类" align="center" width="120" />
        <el-table-column label="操作" align="center">
          <template slot-scope="scope">
            <el-button
              size="mini"
              type="text"
              icon="el-icon-delete"
              @click="uploadDataDelete(scope.$index)"
              >删除</el-button
            >
            <el-button size="mini" type="text" icon="el-icon-delete"
              @click="uploadDataDelete(scope.$index)">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
@@ -615,6 +392,7 @@
      sWhere: "",
      selectedRow: null,
      selRowList: [],
      ids: [],
      single: true,
      multiple: true,
@@ -1005,7 +783,7 @@
              this.$modal.msgError("接口请求失败!");
            });
        })
        .catch(() => {});
        .catch(() => { });
    },
    handleAudit(isAudit) {
@@ -1114,7 +892,11 @@
    handleRowClick(row, column, event) {
      if (this.openPage) {
        if (this.openPage == 'Gy_BarCodeBill') {
          this.$emit('deptEmit', this.selRowList, 3)
        }else{
        this.$emit("deptEmit", row, 3);
        }
      }
      if (this.checkIsIframe()) {
        // 将当前选中的数据暴露到window中
@@ -1189,7 +971,13 @@
    // 双击行
    handleDblclick(row, column, cell, event) {
      if (this.openPage) {
        this.$emit("deptEmitDb", row, 3);
        if (this.openPage == 'Gy_BarCodeBill') {
          let list = []
          list.push(row)
          this.$emit("deptEmitDb", list, 3)
        } else {
          this.$emit("deptEmitDb", row, 3);
        }
      }
      if (this.checkIsIframe()) {
        // IFrame 双击 返回当前双击的数据
@@ -1201,14 +989,15 @@
    handleSelectionChange(selection) {
      this.ids = selection.map((item) => item.hmainid);
      this.selRowList = selection
      this.single = selection.length != 1;
      this.multiple = !selection.length;
      if (!this.single) {
        this.selectedRow = selection[0];
      }
      //   if(this.openPage){
      //   this.$emit('deptEmit', this.selectedRow, 3)
      // }
      if (this.openPage == 'Gy_BarCodeBill') {
        this.$emit('deptEmit', this.selRowList, 3)
      }
    },
    // 编辑关闭回调
    handleEditClose() {
@@ -1254,8 +1043,8 @@
      } else {
        this.$alert(
          "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
            response.Message +
            "</div>",
          response.Message +
          "</div>",
          "导入结果",
          { dangerouslyUseHTMLString: true }
        );
@@ -1279,8 +1068,8 @@
        .then((res) => {
          this.$alert(
            "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
              res.data.Message +
              "</div>",
            res.data.Message +
            "</div>",
            "导入结果",
            { dangerouslyUseHTMLString: true }
          );
@@ -1336,8 +1125,7 @@
.searchImg {
  height: 60px;
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="60" height="60" viewBox="0 0 24 24"><path fill="%23a0a0a0" d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/></svg>')
    no-repeat center;
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="60" height="60" viewBox="0 0 24 24"><path fill="%23a0a0a0" d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/></svg>') no-repeat center;
  margin-top: 10px;
}
@@ -1367,7 +1155,7 @@
  width: 100%;
}
.el-tree-node.is-current > .el-tree-node__content {
.el-tree-node.is-current>.el-tree-node__content {
  background-color: #aef0f7;
}
src/views/sell/sellOut/sellOutBill.vue
@@ -314,6 +314,9 @@
          >条码明细</el-button
        >
      </el-col>
      <el-col :span="1.5">
        <el-button type="primary" icon="el-icon-printer" size="mini" :disabled="single" @click="get_PackStockDetail">包装容器出入库明细</el-button>
      </el-col>
    </el-row>
    <div class="tableBox" v-loading="loading">
      <el-table
@@ -424,6 +427,8 @@
      </el-dialog>
      <!-- 条码明细 -->
      <BarCodeDetail :visible.sync="barCodeDetailShow" ref="barcodeDetail" />
      <!-- 包装容器出入库明细 -->
      <PackStockDetail :visible.sync="packStockDetailShow" ref="packStockDetail"/>
    </div>
  </div>
</template>
@@ -434,11 +439,12 @@
import Edit from "@/views/sell/sellOut/sellOutBillEdit";
import PrintList from "@/views/component/printList";
import BarCodeDetail from "@/views/component/BarCodeDetail"; //条码明细组件
import PackStockDetail from '@/views/component/PackStockDetail'               //条码明细组件
import moment from "moment";
export default {
  name: "SellOutBill",
  components: { RowSettings, Edit, PrintList, BarCodeDetail },
  components: { RowSettings, Edit, PrintList, BarCodeDetail,PackStockDetail },
  data() {
    return {
      activeSeach: "",
@@ -449,6 +455,7 @@
      openPrintList: false,
      printListShow: false,
      barCodeDetailShow: false, //条码明细组件容器显示标记
      packStockDetailShow:false,                            //包装容器出入库明细容器显示标记
      openBtnHide: false,
      btnHideShow: false,
      rowHideShow: false,
@@ -1162,6 +1169,19 @@
      });
    },
    //#endregion
    //#region 包装容器出入库明细
    get_PackStockDetail() {
      // if (this.selectedRow.length !== 1) {
      //   this.$message.warning('请选择一行数据查看条码明细!')
      //   return
      // }
      this.packStockDetailShow = true
      this.$nextTick(() => {
        this.$refs.packStockDetail.open(this.rowForm)
      })
        },
    //#endregion
    //#region 获取公司名,根据公司进行定制化开发
    defaintOperationByCompanyName() {
src/views/warehouse/barcodeMaster/Gy_BarCodeBill.vue
@@ -786,6 +786,7 @@
        },
        //弹窗赋值
        dbEmitData(deptRow, num) {
            console.log(deptRow)
            if (num) {
                if (num == 'gyProperty') {
                    this.editWlxxData[this.zbIndex].HAuxPropID = deptRow.HItemID;
@@ -793,27 +794,34 @@
                    this.editWlxxData[this.zbIndex]["HAuxPropNumber"] = deptRow["辅助属性代码"];
                    this.propertyShow = false;
                    this.openData = false;
                } else if (num == 3) {
                    this.editWlxxData[this.zbIndex].HMaterID = deptRow.HItemID;
                    this.editWlxxData[this.zbIndex].HMaterNumber = deptRow.物料代码;
                    this.editWlxxData[this.zbIndex].HMaterName = deptRow.物料名称;
                    this.editWlxxData[this.zbIndex].HMaterModel = deptRow.规格型号
                    this.editWlxxData[this.zbIndex].HUnitID = deptRow.HUnitID;
                    this.editWlxxData[this.zbIndex].HUnitName = deptRow.计量单位名称
                    this.editWlxxData[this.zbIndex].HUnitNumber = deptRow.计量单位代码
                    this.editWlxxData = []
                    for (var i = 0; i < deptRow.length; i++) {
                        this.editWlxxData.push({
                            "HMaterID": deptRow[i].HItemID,
                            "HMaterNumber": deptRow[i].物料代码,
                            "HMaterName": deptRow[i].物料名称,
                            "HMaterModel": deptRow[i].规格型号,
                            "HUnitID": deptRow[i].HUnitID,
                            "HUnitNumber": deptRow[i].计量单位代码,
                            "HUnitName": deptRow[i].计量单位,
                            "HAuxQty": 0,
                        })
                    }
                    this.materialShow = false
                    this.openData = false
                }
                return
            }
            console.log(deptRow)
            if (deptRow.length > 0) {
                this.zbDataShow = false
                this.editWlxxData = []
                var list = []
                var BillSelect = []
                for (var i = 0; i < deptRow.length; i++) {
                    if (deptRow[i].部门 != "" && deptRow[i].部门 != null) {
                    if (!deptRow[i].部门) {
                        list.push(deptRow[i].部门)
                    }
                    BillSelect.push({
src/views/warehouse/barcodeMaster/Gy_BarCodeBillList.vue
New file
@@ -0,0 +1,755 @@
<template>
  <div style="padding: 10px;">
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="78px" class="searchBox">
      <el-form-item label="开始日期" style="margin-left: 100px;">
        <el-date-picker v-model="queryParams.sTime" type="date" placeholder="开始日期" style="width: 150px;">
        </el-date-picker>
      </el-form-item>
      <el-form-item label="结束日期">
        <el-date-picker v-model="queryParams.eTime" type="date" placeholder="结束日期" style="width: 150px;">
        </el-date-picker>
      </el-form-item>
      <el-form-item label="日期间隔">
        <el-select v-model="queryParams.HInitTimeCycle" placeholder="请选择" @change="riqiChange" style="width: 150px;">
          <el-option v-for="(item, index) in rqsgList" :key="index" :label="item.label" :value="item.value">
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="条码编号" prop="HBarCode">
        <el-input v-model="queryParams.HBarCode" placeholder="请输入条码编号" @keyup.enter.native="handleQuery" />
      </el-form-item>
      <el-form-item label="组织" prop="HOrgID">
        <el-select v-model="queryParams.HOrgID" placeholder="请选择组织">
          <el-option v-for="(item, index) in organizationList" :key="index" :label="item.Name" :value="item.ID">
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="源单单号" prop="HSourceBillNo">
        <el-input v-model="queryParams.HSourceBillNo" placeholder="请输入源单单号" @keyup.enter.native="handleQuery" />
      </el-form-item>
      <el-form-item label="物料代码" prop="HMaterNumber">
        <el-input v-model="queryParams.HMaterNumber" placeholder="请输入物料代码" @keyup.enter.native="handleQuery" />
      </el-form-item>
      <el-form-item label="物料名称" prop="HMaterName">
        <el-input v-model="queryParams.HMaterName" placeholder="请输入物料名称" @keyup.enter.native="handleQuery" />
      </el-form-item>
      <el-form-item label-width="78px">
        <el-button type="primary" icon="el-icon-search" @click="handleQuery"> 搜 索</el-button>
        <el-button icon="el-icon-circle-close" @click="resetQuery">重 置</el-button>
      </el-form-item>
      <el-collapse v-model="activeSeach">
        <el-collapse-item title="更多" name="1">
          <el-card class="box-card">
            <div slot="header" class="clearfix"><span>过滤</span></div>
            <div>
              <el-row>
                <el-form-item label-width="0">
                  <el-row>
                    <el-col :span="7">
                      <el-select v-model="queryParams.ColName1" placeholder="请选择" @change="riqiChange">
                        <span v-for="(item, index) in btList" :key="index">
                          <el-option :label="item.field" :value="item.field" v-if="!item.hide"></el-option>
                        </span>
                      </el-select>
                    </el-col>
                    <el-col :span="6" style="padding: 0 10px;">
                      <el-select v-model="queryParams.Comparator1" placeholder="请选择" @change="riqiChange">
                        <el-option v-for="(item, index) in comparatorList" :key="index" :label="item.label"
                          :value="item.value"></el-option>
                      </el-select>
                    </el-col>
                    <el-col :span="11">
                      <el-input v-model="queryParams.ColContent1" placeholder="请输入" clearable
                        @keyup.enter.native="handleQuery" />
                    </el-col>
                  </el-row>
                </el-form-item>
              </el-row>
              <el-row>
                <el-form-item label-width="0">
                  <el-row>
                    <el-col :span="7">
                      <el-select v-model="queryParams.ColName2" placeholder="请选择" @change="riqiChange">
                        <span v-for="(item, index) in btList" :key="index">
                          <el-option :label="item.field" :value="item.field" v-if="!item.hide"></el-option>
                        </span>
                      </el-select>
                    </el-col>
                    <el-col :span="6" style="padding: 0 10px;">
                      <el-select v-model="queryParams.Comparator2" placeholder="请选择" @change="riqiChange">
                        <el-option v-for="(item, index) in comparatorList" :key="index" :label="item.label"
                          :value="item.value"></el-option>
                      </el-select>
                    </el-col>
                    <el-col :span="11">
                      <el-input v-model="queryParams.ColContent2" placeholder="请输入" clearable
                        @keyup.enter.native="handleQuery" />
                    </el-col>
                  </el-row>
                </el-form-item>
              </el-row>
              <el-form-item label-width="0">
                <el-row>
                  <el-col :span="7">
                    <el-select v-model="queryParams.ColName" placeholder="请选择" @change="riqiChange">
                      <el-option v-for="(item, index) in btList" :key="index" :label="item.field"
                        :value="item.field"></el-option>
                    </el-select>
                  </el-col>
                  <el-col :span="6" style="padding: 0 10px;">
                    <el-select v-model="queryParams.Comparator" placeholder="请选择" @change="riqiChange">
                      <el-option v-for="(item, index) in comparatorList" :key="index" :label="item.label"
                        :value="item.value"></el-option>
                    </el-select>
                  </el-col>
                  <el-col :span="11">
                    <el-input v-model="queryParams.ColContent" placeholder="请输入" clearable
                      @keyup.enter.native="handleQuery" />
                  </el-col>
                </el-row>
              </el-form-item>
            </div>
          </el-card>
        </el-collapse-item>
      </el-collapse>
    </el-form>
    <el-row :gutter="10" class="mb8" style="margin-top: 10px;">
      <el-col :span="1.5">
        <el-button type="primary" icon="el-icon-delete" size="mini" :disabled="single" @click="handleDelete">删除
        </el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button type="primary" icon="el-icon-download" size="mini" @click="handleExport">导出</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button type="primary" icon="el-icon-date" size="mini" @click="handleRowHide">隐藏列设置</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button type="primary" icon="el-icon-printer" size="mini" @click="get_PrintReport">打印</el-button>
      </el-col>
    </el-row>
    <div class="tableBox" v-loading="loading">
      <el-table :data="tableData" ref="tableData" max-height="710" :summary-method="getSummaries"
        @selection-change="handleSelectionChange" show-summary border @row-click="handleRowClick" :row-style="rowStyle"
        @cell-dblclick="handleDblclick" v-if="tableShow">
        <template v-for="(item, index) in btList">
          <el-table-column type="selection" width="55" align="center" :fixed="item.fixed" v-if="item.type == 'checkbox'"
            :key="index" />
          <el-table-column :align="item.align" :prop="item.field" :label="item.title" :width="item.width" :key="item.id"
            v-else-if="!item.hide && item.type != 'checkbox'" :sortable="item.sort" show-overflow-tooltip
            :fixed="item.fixed">
            <template slot-scope="{row,  column }">
              <el-checkbox v-model="checked" v-if="item.type == 'checkbox'"></el-checkbox>
              <div :style="item.style">
                <span v-if="column.property.includes('日期')">{{ parseTime(row[column.property], '{y}-{m}-{d}') }}</span>
                <el-button type="text" @click="handleEdit(row, OperationType = 3)"
                  v-else-if="column.property == '单据号'">{{
                    row.单据号
                  }}</el-button>
                <span v-else>{{ row[column.label] }}</span>
              </div>
            </template>
          </el-table-column>
        </template>
      </el-table>
      <!-- 记录数、页数、当前页 -->
      <pagination v-show="total > 0" :total="total" :page.sync="page" :limit.sync="pageSize" @pagination="handleQuery" />
      <!-- 列设置 -->
      <el-dialog title="隐藏列设置" :visible.sync="openRowHide" width="816px" append-to-body>
        <RowSettings :colName="btResList" HModName="Kf_POStockInBillList" @rowEditClose="rowSetClose"
          v-if="rowHideShow" />
      </el-dialog>
      <!-- 打印 -->
      <el-dialog title="打印模板选择" :visible.sync="openPrintList" width="800px" append-to-body>
        <PrintList :linterid="rowSel.toString()" :MyMsg="rowSel.toString()" Type="HGy_BarCodeBillList"
          HModName="HGy_BarCodeBillList" @rowEditClose="rowSetClose" v-if="printListShow" />
      </el-dialog>
    </div>
  </div>
</template>
<script>
import axios from 'axios'
import moment from 'moment';                                              //导出组件
import RowSettings from '@/views/component/rowSettings'                   //列设置组件
import PrintList from "@/views/component/printList";                       //打印组件
export default {
  name: 'Gy_BarCodeBillList',
  components: { RowSettings, PrintList},
  data() {
    return {
      baseURL: process.env.VUE_APP_BASE_API,                //后端接口前缀(后端服务器ip地址)
      HInterID: null,
      checkDataList: [],                                    //表格选中数据集合
      rowSel: [],                                           //用于打印的数据集合
      rqsgList: [                                           //日期间隔下拉列表数据
        { label: '今天', value: 0 },
        { label: '近两天', value: 1 },
        { label: '近三天', value: 2 },
        { label: '近四天', value: 3 },
        { label: '近五天', value: 4 },
        { label: '近六天', value: 5 },
        { label: '近七天', value: 6 },
        { label: '近30天', value: 29 },
        { label: '近半年', value: 180 },
        { label: '近一年', value: 365 },
      ],
      organizationList: [],                                 //组织列表
      btList: [],                                           //列表表头字段列表
      comparatorList: [                                     //运算标识下拉列表
        { label: '=', value: '=' },
        { label: '>=', value: '>=' },
        { label: '>', value: '>' },
        { label: '<=', value: '<=' },
        { label: '<', value: '<' },
        { label: '<>', value: '<>' },
        { label: '包含', value: '7' },
        { label: '左包含', value: '8' },
        { label: '右包含', value: '9' },
        { label: '不包含', value: '10' },
      ],
      dialogTitle: '',                                      // 弹窗标题
      title: "",                                            // 弹出层标题
      open: false,                                          // 是否显示弹出层
      loading: true,                                        // 遮罩层
      activeSeach: '',
      openPrintList: false,                                 //打印组件容器显示标记
      printListShow: false,                                 //打印组件显示标记
      openBtnHide: false,                                   //按钮组件容器显示标记
      btnHideShow: false,                                   //按钮组件显示标记
      openRowHide: false,                                   //列设置组件显示标记
      rowHideShow: false,                                   //列设置组件容器显示标记
      // 查询参数
      sWhere: '',                                                   // 拼接过滤条件
      queryParams: {                                                // form数据
        HBarCode: '',
        HInitTimeCycle: 29,
        sTime: '',
        eTime: '',
        HOrgID: 0,
        HSourceBillNo: '',
        HMaterNumumber: '',
        HMaterName: '',
        ColName: '',
        Comparator: '',
        ColContent: '',
        ColName1: '',
        Comparator1: '',
        ColContent1: '',
        ColName2: '',
        Comparator2: '',
        ColContent2: '',
      },
      page: 1,                                                      //page页索引
      pageSize: 0,                                                  //page页面记录数
      total: 0,                                                     //记录合计数
      tableShow: true,                                              // table显示标记
      totalNameList: [],                                            // 需要设置合计行的列数组
      tableData: [],                                                // 列表数据。用于table监听事件
      ids: [],                                                      // 选中行的hmainid数组
      single: true,                                                 // 当选中的行数不为1时为true。用于禁用相关操作
      multiple: true,                                               // 当选中的行数为0时为true。用于禁用相关操作
      lastSelectedRowIndex: null,                                   // 用于记录上次点击的行索引
      lastSelectedRow: null,                                        // 上一次选中的行
      selectedRow: null,                                            // 当前选中的行
      rowForm: {},                                                  // 当选中的只有一行时,更新数据为该选中的行。
      tyResList: [],                                                // 列表数据,用于导出
      titleData: [],                                                // 不需要显示的字段 可扩展
      btResList: [],                                                // 列表表头数据。用于列设置
      dataList: [],                                                 // option记录。用于当option数据无效时,用于列设置
    };
  },
  created() {
    this.fetchData()                //加载组织下拉列表数据
    this.riqiChange()
    this.handleQuery();
  },
  methods: {
    //#region 设置表头
    renderHeader(h, { column, $index }) {// 新建一个 span
      let span = document.createElement(span)// 设置表头名称
      span.innerText = column.label
      //临时插入 document
      document.body.appendChild(span)// 重点:获取 span 最小宽度,设置当前列,注意这里加了 20,字段较多时column.minWidth=span.getBoundingClientRect().width + 50.//移除 document 中临时的 span
      document.body.removeChild(span)
      return h(span, column.label)
    },
    //#endregion
    //#region 点击行
    handleRowClick(row, column, event) {
      this.lastSelectedRow = this.selectedRow; // 记录上一次选中的行
      this.selectedRow = row; // 记录当前选中的行
      this.lastSelectedRowIndex = this.tableData.indexOf(row);
      this.$refs.tableData.toggleRowSelection(row);
    },
    //#endregion
    //#region 选中行高亮样式
    rowStyle({ row, rowIndex }) {
      if (this.ids.includes(row.hmainid)) {
        return { "background": "#ecf5ff" }
      }
    },
    //#endregion
    //#region 双击行
    handleDblclick(row, column, cell, event) {
    },
    //#endregion
    //#region 多选框选中数据
    handleSelectionChange(selection) {
      // this.rowForm = {}
      checkDataList = selection;
      this.ids = selection.map(item => item.hmainid)
      this.single = selection.length != 1
      this.multiple = !selection.length
      if (!this.single) {
        this.rowForm = selection[0]
      }
    },
    //#endregion
    //#region 根据日期间隔,设置开始日期、结束日期
    riqiChange() {
      const end = new Date();
      const start = new Date();
      start.setTime(start.getTime() - 3600 * 1000 * 24 * this.queryParams.HInitTimeCycle);
      const yyyyS = start.getFullYear();
      const mmS = String(start.getMonth() + 1).padStart(2, '0'); // 月份是从0开始的
      const ddS = String(start.getDate()).padStart(2, '0');
      const yyyyE = end.getFullYear();
      const mmE = String(end.getMonth() + 1).padStart(2, '0'); // 月份是从0开始的
      const ddE = String(end.getDate()).padStart(2, '0');
      this.queryParams.sTime = yyyyS + '-' + mmS + '-' + ddS
      this.queryParams.eTime = yyyyE + '-' + mmE + '-' + ddE
    },
    //#endregion
    //#region 加载组织下拉列表数据
    fetchData() {
      axios.get(this.baseURL + "/Web/GetOrganizations", {
      }).then(response => {
        if (response.data.count == 1) {
          this.organizationList = response.data.data;//组织列表
        }
      }).catch(error => {
        this.$modal.msgError("接口请求失败!");
      });
      this.queryParams.HOrgID = sessionStorage["OrganizationID"];
    },
    //#endregion
    //#region 重置
    resetQuery() {
      this.sWhere = ''
      this.queryParams = {
        HBarCode: '',
        HInitTimeCycle: 29,
        HSourceBillNo: '',
        HMaterNumber: '',
        HMaterName: '',
        ColName: '',
        Comparator: '',
        ColContent: '',
        ColName1: '',
        Comparator1: '',
        ColContent1: '',
        ColName2: '',
        Comparator2: '',
        ColContent2: '',
      }
      this.riqiChange()
      this.resetForm("queryForm")
      this.handleQuery()
    },
    //#endregion
    //#region 快速过滤
    handleQuery() {
      this.sWhere = ''
      if (this.queryParams.ColName && this.queryParams.Comparator) {
        var com = "";
        switch (this.queryParams.Comparator) {
          case "7":
            com = "like''%" + this.queryParams.ColContent + "%''";
            break;
          case "8":
            com = "like''%" + this.queryParams.ColContent + "''";
            break;
          case "9":
            com = "like''" + this.queryParams.ColContent + "%''";
            break;
          case "10":
            com = "not like''%" + this.queryParams.ColContent + "%''";
            break;
          default:
            com = "" + this.queryParams.Comparator + "''" + this.queryParams.ColContent + "''";
            break;
        }
        this.sWhere += " and " + this.queryParams.ColName + " " + com;
      }
      if (this.queryParams.ColName1 && this.queryParams.Comparator1) {
        var com1 = "";
        switch (this.queryParams.Comparator1) {
          case "7":
            com1 = "like''%" + this.queryParams.ColContent1 + "%''";
            break;
          case "8":
            com1 = "like''%" + this.queryParams.ColContent1 + "''";
            break;
          case "9":
            com1 = "like''" + this.queryParams.ColContent1 + "%''";
            break;
          case "10":
            com1 = "not like''%" + this.queryParams.ColContent1 + "%''";
            break;
          default:
            com1 = "" + this.queryParams.Comparator1 + "''" + this.queryParams.ColContent1 + "''";
            break;
        }
        this.sWhere += " and " + this.queryParams.ColName1 + " " + com1;
      }
      if (this.queryParams.ColName2 && this.queryParams.Comparator2) {
        var com2 = "";
        switch (this.queryParams.Comparator2) {
          case "7":
            com2 = "like''%" + this.queryParams.ColContent2 + "%''";
            break;
          case "8":
            com2 = "like''%" + this.queryParams.ColContent2 + "''";
            break;
          case "9":
            com2 = "like''" + this.queryParams.ColContent2 + "%''";
            break;
          case "10":
            com2 = "not like''%" + this.queryParams.ColContent2 + "%''";
            break;
          default:
            com2 = "" + this.queryParams.Comparator + "''" + this.queryParams.ColContent + "''";
            break;
        }
        this.sWhere += " and " + this.queryParams.ColName2 + " " + com2;
      }
      if (this.queryParams.sTime) {
        this.queryParams.sTime = moment(this.queryParams.sTime).format('YYYY-MM-DD')
        this.queryParams.eTime = moment(this.queryParams.eTime).format('YYYY-MM-DD')
        console.log(this.queryParams.sTime, this.queryParams.eTime)
        this.sWhere += " and CONVERT(varchar(100),日期, 23) >= ''" + this.queryParams.sTime + "''" + " and CONVERT(varchar(100),日期, 23) <= ''" + this.queryParams.eTime + "''";
      }
      if (this.queryParams.HBarCode) {
        this.sWhere += " and 条码编号 like ''%" + this.queryParams.HBarCode + "%''";
      }
      if (this.queryParams.HSupName) {
        this.sWhere += " and 源单单号 like ''%" + this.queryParams.HSourceBillNo + "%''";
      }
      if (this.queryParams.HMaterNumber) {
        this.sWhere += " and 物料代码 like ''%" + this.queryParams.HMaterNumber + "%''";
      }
      if (this.queryParams.HMaterName) {
        this.sWhere += " and 物料名称 like ''%" + this.queryParams.HMaterName + "%''";
      }
      if (this.queryParams.HOrgID) {
        this.sWhere += " and HStockOrgID = ''" + this.queryParams.HOrgID + "''";
      }
      this.getList()
    },
    //#endregion
    //#region 查询
    getList() {
      this.pageSize = 50
      if (this.pageSize == 0) {
        this.pageSize = 50
      }
      this.tableShow = false
      this.loading = true
      // 列表查询
      axios.get(this.baseURL + '/Gy_BarCodeBillList/page', {
        params: {
          "sWhere": this.sWhere,
          "user": sessionStorage["HUserName"],
          "page": this.page,
          "size": this.pageSize
        },
      }).then(response => {
        this.tyResList = response.data.data//总数据
        let data1 = response.data
        let option = []
        if (data1.code == 1) {
          this.btResList = data1.list             //列表表头数据
          this.total = data1.count;
          var data = [];//列字段数据
          var col = [];
          var totalArray = [];
          //给空的数组赋值
          for (var key in data1.list) {//循序遍历数组
            data.push({ "id": data1.list[key].ColmCols, "name": data1.list[key].ColmCols, "Type": data1.list[key].ColmType });//从每个对象中提取数据
          }
          //在列表左边添加勾选框
          col.push({ type: 'checkbox', fixed: 'left', totalRowText: '合计' });
          for (var i = 0; i < data.length; i++) {//遍历data数组重的数据
            if (this.titleData.indexOf(data[i].name) > -1) {//检查data【i】.name是否在数组中  //计算列
              col.push({ field: data[i].id, title: data[i].name, align: 'center', hide: true }); //隐藏id列
            } else if (totalArray.indexOf(data[i].name) > -1 || (data[i].Type == "Decimal" || data[i].Type == "Int32")) { //计算列
              col.push({ field: data[i].id, title: data[i].name, align: 'center', sort: true, totalRow: true, width: 120 });
            }
            else {
              col.push({ field: data[i].id, title: data[i].name, align: 'center', sort: true, width: 200 });
            }
          }
          option.cols = [col]
          this.dataList = option
          option.data = data1.data;
          var result = data1.data;
          option.data = result;
          let HModName = "Gy_BarCodeBillList"
          this.DisPlay_HideColumn(HModName, sessionStorage["HUserName"], option, this.dataList);
        }
      }).catch(error => {
        this.$modal.msgError("接口请求失败!");
      });
    },
    //#region 合计行数据处理
    getSummaries(param) {
      const { columns, data } = param;
      const sums = [];
      columns.forEach((column, index) => {
        if (index === 0) {
          sums[index] = '合计';
          return;
        }
        const values = data.map(item => Number(item[column.property]));
        if (this.totalNameList[index].totalRow) {
          if (!values.every(value => isNaN(value))) {
            sums[index] = values.reduce((prev, curr) => {
              const value = Number(curr);
              if (!isNaN(value)) {
                return prev + curr;
              } else {
                return prev;
              }
            }, 0)
          } else {
            sums[index] = '';
          }
        }
      }, 1000);
      return sums;
    },
    //#endregion
    //#endregion
    //#region 删除
    handleDelete() {
    },
    //#endregion
    //#region 列设置
    handleRowHide() {
      this.rowHideShow = true
      this.openRowHide = true
    },
    rowSetClose(val) {
      this.rowHideShow = false
      this.tableShow = true
      this.openRowHide = val
      this.handleQuery()
    },
    DisPlay_HideColumn(HModName, user, option, dataOption) {
      this.totalNameList = []
      axios.get(this.baseURL + '/Xt_grdAlignment_WMES/grdAlignmentWMESList', {
        params: {
          "HModName": HModName,
          "user": user,
        },
      }).then(res => {
        let data1 = res.data
        if (data1.data.length != 0) {
          var dataCol = [];//数据库查询出的列数据
          var newCols = [[]];//对应数据库列顺序col
          newCols[0].push(option.cols[0][0]);//放入第一个checkbox
          dataCol = data1.data[0].HGridString.split(',');
          //列设置列数与页面列数是否一致
          if (dataCol.length == option.cols[0].length - 1) {
            //遍历寻找列设置对应列按顺序插入
            for (var j = 0; j < option.cols[0].length - 1; j++) {
              for (var i = 0; i < option.cols[0].length - 1; i++) {
                var dataCols = dataCol[j].split('|');
                //选择与datacols相应列进行修改
                if (option.cols[0][i + 1]["field"] == dataCols[5]) {
                  //隐藏列
                  if (dataCols[1] == 1) {
                    option.cols[0][i + 1]["hide"] = true;
                  }
                  //设置列宽
                  if (dataCols[3] > 0) {
                    option.cols[0][i + 1]["width"] = dataCols[3];
                  }
                  //设置内容字体大小
                  if (data1.data[0].HFontSize != 0) {
                    option.cols[0][i + 1]["style"] = "font-size:" + data1.data[0].HFontSize + "px;";
                  } else {
                    option.cols[0][i + 1]["style"] = "font-size:100%";
                  }
                  //显示列
                  if (dataCols[1] == 0 && this.titleData.indexOf(option.cols[0][i + 1]["title"]) == -1) {
                    option.cols[0][i + 1]["hide"] = false;
                  }
                  //统计列
                  if (dataCols[6] == 1) {
                    option.cols[0][i + 1]["totalRow"] = true;
                  } else {
                    option.cols[0][i + 1]["totalRow"] = false;
                  }
                  //字体所在位置(左 居中 右)
                  switch (dataCols[2]) {
                    case "L":
                      option.cols[0][i + 1]["align"] = "left";
                      break;
                    case "M":
                      option.cols[0][i + 1]["align"] = "center";
                      break;
                    case "R":
                      option.cols[0][i + 1]["align"] = "right";
                      break;
                  }
                  //设置表格title属性显示别名
                  if (dataCols[4] != null && dataCols[4] != "") {
                    option.cols[0][i + 1]["title"] = dataCols[4];
                  }
                  newCols[0].push(option.cols[0][i + 1]);
                  break;
                }
              }
            }
            //遍历循环后判断对应列数是否一致
            if (dataCol.length == newCols[0].length - 1) {
              option.cols = newCols;
              //取消冻结列
              for (var i = 1; i < option.cols[0].length - 1; i++) {
                if (option.cols[0][i + 1]["fixed"] != null) {
                  option.cols[0][i + 1]["fixed"] = null;
                }
                else {
                  break;
                }
              }
              //冻结列
              if (data1.data[0].HFixCols != 0) {
                for (var i = 0; i < data1.data[0].HFixCols; i++) {
                  if (dataOption.cols[0].indexOf(option.cols[0][i + 1]["title"]) != -1) {
                    data1.data[0].HFixCols += 1;
                  }
                  option.cols[0][i + 1]["fixed"] = "left";
                }
              }
              //设置列排序
              for (var i = 1; i < option.cols[0].length; i++) {
                if (data1.data[0].HSortFlag == "是") {
                  option.cols[0][i]["sort"] = true;
                }
                else {
                  option.cols[0][i]["sort"] = false;
                }
              }
            }
          }
          this.btList = option.cols[0]
          this.btList.map(item => {
            if (!item.hide) {
              this.totalNameList.push(item)
            }
          })
          if (data1.data[0].HPageSize == 0) {
            this.pageSize = 50
          } else {
            this.pageSize = data1.data[0].HPageSize
          }
          this.tableData = option.data
          this.tableShow = true
          this.loading = false
        } else {
          this.btList = dataOption.cols[0]
          this.btList.map(item => {
            if (!item.hide) {
              this.totalNameList.push(item)
            }
          })
          this.tableData = dataOption.data
          this.tableShow = true
          this.loading = false
        }
      }).catch(error => {
        this.$modal.msgError("接口请求失败!");
      });
    },
    //#endregion
    //#region 按钮设置
    handleBtnHide() {
      this.btnHideShow = true
      this.openBtnHide = true
    },
    //#endregion
    //#region 导出
    handleExport() {
      const ws = this.$XLSX.utils.json_to_sheet(this.tyResList); // 将数据转换为工作表
      const wb = this.$XLSX.utils.book_new(); // 创建一个新的工作簿
      this.$XLSX.utils.book_append_sheet(wb, ws, "Sheet1"); // 将工作表添加到工作簿中,并命名为"Sheet1"
      this.$XLSX.writeFile(wb, `Gy_BarCodeBillList_${new Date().getTime()}.xlsx`); // 导出文件
    },
    //#endregion
    //#region 打印
    get_PrintReport() {
      if (this.checkDataList.length == 0) {
       this.$modal.msgError("请选择数据");
      } else {
        this.rowSel = [];
        for (var i = 0; i < this.selection.length; i++) {
          this.rowSel.push(this.selection[i].HItemID.toString());
        }
        this.printListShow = true;
        this.openPrintList = true;
      }
    },
    //#endregion
    //#region 退出
    close() {
      // this.reset()
      this.tableShow = true
      this.openEdit = false
      this.editShow = false
      this.handleQuery()
    },
    //#endregion
  }
};
</script>
<style>
.xsckdBox .el-date-editor.el-input {
  width: 100%;
}
</style>