llj
2025-11-27 ff16dc69b0ec8688669f2a87adb8d12ccfd7c31a
生产汇报单
2个文件已添加
3个文件已修改
2648 ■■■■■ 已修改文件
src/router/index.js 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/permission.js 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ICMO/ScICMOReportBill/ScICMOReportBillEdit.vue 929 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ICMO/ScICMOReportBill/ScICMOReportBillList.vue 1649 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/gyMaterial/GyMaterial.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js
@@ -1250,6 +1250,31 @@
      },
    ],
  },
  // 生产汇报单维护
  {
    path: "/icmo/scICMOReportBill/scICMOReportBillList",
    component: Layout,
    hidden: true,
    redirect: "noredirect",
    meta: {
      breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示
      activeMenu: "/icmo/scICMOReportBill", // 当路由设置了该属性,则会高亮相对应的侧边栏。
    },
    children: [
      {
        path: "/icmo/scICMOReportBill/scICMOReportBillList",
        component: () => import("@/views/ICMO/ScICMOReportBill/ScICMOReportBillList.vue"),
        name: "ScICMOBillList",
        meta: { title: "生产汇报单维护", activeMenu: "/icmo/scICMOReportBill" },
      },
      // {
      //   path: "/icmo/scIcmoBill/scIcmoBillEdit",
      //   component: () => import("@/views/ICMO/ScICMOBillEdit.vue"),
      //   name: "ScICMOBillEdit",
      //   meta: { title: "生产订单", activeMenu: "/icmo/scIcmoBill" },
      // },
    ],
  },
];
// 动态路由,基于用户权限动态去加载
src/store/modules/permission.js
@@ -895,6 +895,45 @@
                  },
                ],
              },
              {
                meta: {
                  icon: "build",
                  link: null,
                  noCache: false,
                  title: "生产汇报",
                },
                hidden: false,
                name: "ScICMOReportBill",
                path: "scICMOReportBill",
                redirect: "noRedirect",
                component: "Layout",
                children: [
                  {
                    meta: {
                      icon: "build",
                      link: null,
                      noCache: false,
                      title: "生产汇报列表",
                    },
                    component: () => import("@/views/ICMO/ScICMOReportBill/ScICMOReportBillList.vue"),
                    hidden: false,
                    name: "ScICMOReportBillList",
                    path: "scICMOReportBillList",
                  },
                  // {
                  //   meta: {
                  //     icon: "build",
                  //     link: null,
                  //     noCache: false,
                  //     title: "生产入库单",
                  //   },
                  //   component: () => import("@/views/ProductInBill/Kf_ProductInBillEdit.vue"),
                  //   hidden: false,
                  //   name: "ProductInBillEdit",
                  //   path: "ProductInBillEdit",
                  // },
                ],
              },
            ],
          },
          {
src/views/ICMO/ScICMOReportBill/ScICMOReportBillEdit.vue
New file
@@ -0,0 +1,929 @@
<template>
  <div v-loading="formLoading" style="padding: 20px">
    <div class="operation-buttons">
      <el-button-group>
        <el-button type="primary" @click="handleAdd">新增</el-button>
        <el-button type="primary" @click="handleCopyBill">复制</el-button>
        <el-button type="primary" @click="handleCheckBill">审核</el-button>
        <el-button type="primary" @click="handleAbandonCheck">反审核</el-button>
        <el-button type="primary" @click="handleDeleteBill">删除</el-button>
        <el-button type="primary" @click="handlePrint">打印</el-button>
        <el-button type="primary" @click="handleSave" :disabled="saveDisabled">保存</el-button>
        <el-button type="primary" @click="handleExit">退出</el-button>
      </el-button-group>
    </div>
    <div class="page-title">
      <h1>生产汇报单</h1>
    </div>
    <el-form ref="form" :model="form" :rules="rules" label-width="120px">
      <el-tabs v-model="activeTab">
        <el-tab-pane label="基本信息" name="basic">
          <el-row :gutter="20">
            <el-col :span="8">
              <el-form-item label="单据号" prop="HBillNo">
                <el-input v-model="form.HBillNo" readonly />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="日期" prop="HDate">
                <el-date-picker v-model="form.HDate" type="date" placeholder="选择日期" value-format="yyyy-MM-dd" />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="生产车间" prop="HDeptName">
                <el-input v-model="form.HDeptName" readonly>
                  <el-button slot="append" icon="el-icon-search" @click="openDeptDialog"></el-button>
                </el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="8">
              <el-form-item label="班组" prop="HGroupName">
                <el-input v-model="form.HGroupName" readonly>
                  <el-button slot="append" icon="el-icon-search" @click="openGroupDialog"></el-button>
                </el-input>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="统计员" prop="HEmpName">
                <el-input v-model="form.HEmpName" readonly>
                  <el-button slot="append" icon="el-icon-search" @click="openEmpDialog"></el-button>
                </el-input>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="源单类型" prop="HMainSourceBillType">
                <el-select v-model="form.HMainSourceBillType" @change="handleSourceTypeChange">
                  <el-option label="生产任务单" value="2"></el-option>
                  <el-option label="手工录入" value="1"></el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="8">
              <el-form-item label="选单号" prop="HMainSourceBillNo">
                <el-input v-model="form.HMainSourceBillNo" :disabled="sourceBillDisabled" readonly>
                  <el-button slot="append" icon="el-icon-search" @click="openSourceBillDialog"
                    :disabled="sourceBillBtnDisabled"></el-button>
                </el-input>
              </el-form-item>
            </el-col>
            <el-col :span="16">
              <el-form-item label="备注" prop="HRemark">
                <el-input v-model="form.HRemark" />
              </el-form-item>
            </el-col>
          </el-row>
        </el-tab-pane>
        <el-tab-pane label="制单信息" name="maker">
          <el-row :gutter="20">
            <el-col :span="8">
              <el-form-item label="制单人">
                <el-input v-model="form.HMaker" readonly />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="审核人">
                <el-input v-model="form.HChecker" readonly />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="关闭人">
                <el-input v-model="form.HCloseMan" readonly />
              </el-form-item>
            </el-col>
          </el-row>
        </el-tab-pane>
        <el-tab-pane label="附件信息" name="attachment">
          <el-upload class="upload-demo" action="/api/upload" :on-preview="handlePreview" :on-remove="handleRemove"
            :before-remove="beforeRemove" multiple :limit="3" :on-exceed="handleExceed" :file-list="fileList">
            <el-button size="small" type="primary">点击上传</el-button>
            <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
          </el-upload>
        </el-tab-pane>
      </el-tabs>
      <el-tabs v-model="detailTab">
        <el-tab-pane label="生产汇报单" name="main">
          <div class="table-toolbar">
            <el-button type="primary" size="small" @click="addTableRow">增加一行</el-button>
            <el-button type="primary" size="small" @click="copyTableRow">复制一行</el-button>
          </div>
          <el-table :data="tableData" border style="width: 100%" height="400" @selection-change="handleSelectionChange">
            <el-table-column type="selection" width="55"></el-table-column>
            <el-table-column type="index" label="序号" width="60"></el-table-column>
            <el-table-column prop="HMaterCode" label="物料代码" width="120">
              <template slot-scope="scope">
                <el-input v-model="scope.row.HMaterCode" @focus="openMaterialDialog(scope.row, scope.$index)" readonly>
                </el-input>
              </template>
            </el-table-column>
            <el-table-column prop="HMaterName" label="物料名称" width="150"></el-table-column>
            <el-table-column prop="HMaterSpec" label="规格型号" width="150"></el-table-column>
            <el-table-column prop="HUnitCode" label="单位代码" width="100">
              <template slot-scope="scope">
                <el-input v-model="scope.row.HUnitCode" @focus="openUnitDialog(scope.row, scope.$index)" readonly>
                </el-input>
              </template>
            </el-table-column>
            <el-table-column prop="HUnitName" label="单位名称" width="100"></el-table-column>
            <el-table-column prop="HSourceCode" label="资源代码" width="120">
              <template slot-scope="scope">
                <el-input v-model="scope.row.HSourceCode" @focus="openSourceDialog(scope.row, scope.$index)" readonly>
                </el-input>
              </template>
            </el-table-column>
            <el-table-column prop="HSourceName" label="资源名称" width="150"></el-table-column>
            <el-table-column prop="HWorkerCode" label="操作员代码" width="120">
              <template slot-scope="scope">
                <el-input v-model="scope.row.HWorkerCode" @focus="openWorkerDialog(scope.row, scope.$index)" readonly>
                </el-input>
              </template>
            </el-table-column>
            <el-table-column prop="HWorkerName" label="操作员名称" width="150"></el-table-column>
            <el-table-column prop="HQty" label="生产数量" width="100">
              <template slot-scope="scope">
                <el-input-number v-model="scope.row.HQty" :min="0" :precision="2" controls-position="right" size="mini">
                </el-input-number>
              </template>
            </el-table-column>
            <el-table-column prop="HBadQty" label="不良数量" width="100">
              <template slot-scope="scope">
                <el-input-number v-model="scope.row.HBadQty" :min="0" :precision="2" controls-position="right"
                  size="mini">
                </el-input-number>
              </template>
            </el-table-column>
            <el-table-column prop="HICMOBillNo" label="生产订单" width="120"></el-table-column>
            <el-table-column prop="HPRODUCEDATE" label="生产日期" width="120">
              <template slot-scope="scope">
                <el-date-picker v-model="scope.row.HPRODUCEDATE" type="date" placeholder="选择日期"
                  value-format="yyyy-MM-dd" size="mini">
                </el-date-picker>
              </template>
            </el-table-column>
            <el-table-column prop="HRemark" label="表体备注" width="150">
              <template slot-scope="scope">
                <el-input v-model="scope.row.HRemark" size="mini"></el-input>
              </template>
            </el-table-column>
            <el-table-column label="操作" width="80">
              <template slot-scope="scope">
                <el-button type="danger" size="mini" @click="deleteTableRow(scope.$index)">删除</el-button>
              </template>
            </el-table-column>
          </el-table>
        </el-tab-pane>
        <el-tab-pane label="产量汇报单明细" name="production">
          <el-table :data="productionData" border height="400">
          </el-table>
        </el-tab-pane>
      </el-tabs>
    </el-form>
    <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="80%" append-to-body>
      <component :is="currentDialogComponent" @select="handleDialogSelect" @dbSelect="handleDialogDbSelect">
      </component>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">取消</el-button>
        <el-button type="primary" @click="confirmDialogSelect">确定</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import axios from 'axios'
import Dept from "@/views/component/dept";
export default {
  name: 'ProductionReport',
  components: {
    Dept,
  },
  props: {
    propOperationType: { type: Number, default: null },
    propLinterid: { type: [Number, String], default: null },
    propHSouceBillType: { type: String, default: '' },
    propCopyType: { type: Number, default: -1 }
  },
  data() {
    return {
      formLoading: false,
      saveDisabled: false,
      activeTab: 'basic',
      detailTab: 'main',
      dialogVisible: false,
      dialogTitle: '',
      currentDialogComponent: null,
      currentDialogType: '',
      currentRowIndex: null,
      currentRow: null,
      fileList: [],
      sourceBillDisabled: false,
      sourceBillBtnDisabled: true,
      form: {
        HBillNo: '',
        HDate: '',
        HDeptName: '',
        HDeptID: 0,
        HDeptNumber: '',
        HGroupName: '',
        HGroupID: 0,
        HEmpName: '',
        HEmpID: 0,
        HMainSourceBillType: '1',
        HMainSourceBillNo: '',
        HMainSourceInterID: 0,
        HMainSourceEntryID: 0,
        HRemark: '',
        HMaker: '',
        HChecker: '',
        HCloseMan: '',
        HMakeDate: '',
        HCheckDate: '',
        HCloseDate: '',
        HUpDater: '',
        HDeleteMan: '',
        HUpDateDate: '',
        HDeleteDate: ''
      },
      rules: {
        HDeptName: [{ required: true, message: '生产车间不能为空', trigger: 'blur' }],
        HGroupName: [{ required: true, message: '班组不能为空', trigger: 'blur' }],
        HEmpName: [{ required: true, message: '统计员不能为空', trigger: 'blur' }],
        HDate: [{ required: true, message: '日期不能为空', trigger: 'change' }]
      },
      tableData: [],
      productionData: [],
      OperationType: 1,
      linterid: 0,
      HSouceBillType: '',
      baseURL: process.env.VUE_APP_BASE_URL || 'http://47.96.97.237/API/'
    }
  },
  created() {
    this.initData()
  },
  watch: {
    form: {
      handler(newVal) {
        console.log('表单数据变化:', newVal)
      },
      deep: true,
      immediate: true
    },
    'form.HDeptName': function (newVal) {
      console.log('HDeptName变化:', newVal)
    },
    'form.HGroupName': function (newVal) {
      console.log('HGroupName变化:', newVal)
    },
    'form.HEmpName': function (newVal) {
      console.log('HEmpName变化:', newVal)
    }
  },
  methods: {
    async initData() {
      const params = this.$route ? this.$route.query : {}
      if (this.propOperationType !== null && this.propOperationType !== undefined) {
        this.OperationType = this.propOperationType
      } else {
        this.OperationType = params.OperationType || 1
      }
      if (this.propLinterid !== null && this.propLinterid !== undefined && this.propLinterid !== '') {
        this.linterid = Number(this.propLinterid)
      } else {
        this.linterid = params.linterid || 0
      }
      this.HSouceBillType = this.propHSouceBillType || params.HSouceBillType || ''
      console.log("操作参数:", {
        OperationType: this.OperationType,
        linterid: this.linterid,
        HSouceBillType: this.HSouceBillType
      })
      try {
        if (this.OperationType === 1) {
          await this.setAddFNew()
        } else if (this.OperationType === 2) {
          await this.setAddNew()
        } else if (this.OperationType === 3) {
          await this.setEditFromGrid()
        } else if (this.OperationType === 5) {
          await this.setCopyBill()
        }
        if (this.OperationType === 1 || this.OperationType === 2) {
          this.$set(this.form, 'HDeptID', sessionStorage.HDeptID || 0)
          this.$set(this.form, 'HDeptName', sessionStorage.HDept || '')
          this.$set(this.form, 'HGroupID', sessionStorage.HGroupID || 0)
          this.$set(this.form, 'HGroupName', sessionStorage.HGroup || '')
          this.$set(this.form, 'HEmpID', sessionStorage.HEmpID || 0)
          this.$set(this.form, 'HEmpName', sessionStorage.HEmpName || '')
        }
      } catch (error) {
        this.$message.error('初始化数据失败: ' + error.message)
      }
    },
    // 无源单新增
    async setAddFNew() {
      await this.getMaxBillNo()
      this.sourceBillDisabled = false
      this.sourceBillBtnDisabled = true
      this.tableData = [this.getEmptyRow()]
    },
    // 有源单新增
    async setAddNew() {
      await this.getMaxBillNo()
      if (this.linterid && this.HSouceBillType === '3724') {
        try {
          const response = await axios.get('/api/Sc_ICMOReportBill/GetProdReportBillList', {
            params: {
              HInterID: this.linterid,
              user: sessionStorage.HUserName
            }
          })
          if (response.data.code === 1) {
            const data = response.data.data.h_p_Sc_ICMOBillWorkQtyStatus_TmpList1
            this.tableData = data.map(item => ({
              HMaterID: item.物料ID,
              HMaterCode: item.物料代码,
              HMaterName: item.物料名称,
              HMaterSpec: item.规格型号,
              HUnitID: item.单位ID,
              HUnitCode: item.计量单位代码,
              HUnitName: item.计量单位,
              HSourceID: item.生产资源ID,
              HSourceCode: item.生产资源代码,
              HSourceName: item.生产资源名称,
              HWorkerid: item.操作员ID,
              HWorkerCode: item.操作员代码,
              HWorkerName: item.操作员名称,
              HQty: item.产量,
              HBadQty: item.不良数量 || 0,
              HICMOBillNo: item.生产订单号,
              HICMOInterID: item.HICMOInterID,
              HICMOEntryID: item.HICMOEntryID,
              HPRODUCEDATE: item.生产日期,
              HRemark: ''
            }))
          }
        } catch (error) {
          this.$message.error('获取源单数据失败')
        }
      } else {
        this.tableData = [this.getEmptyRow()]
      }
    },
    // 编辑
    async setEditFromGrid() {
      await this.setEditForm(this.linterid)
      await this.setEditGrid(this.linterid)
    },
    // 复制
    async setCopyBill() {
      await this.setEditFromGrid()
      await this.getMaxBillNo()
      this.form.HMaker = sessionStorage.HUserName
      this.form.HMakeDate = this.formatDate(new Date())
      this.form.HUpDater = ''
      this.form.HUpDateDate = ''
      this.form.HChecker = ''
      this.form.HCheckDate = ''
      this.form.HCloseMan = ''
      this.form.HCloseDate = ''
      this.form.HDeleteMan = ''
      this.form.HDeleteDate = ''
    },
    // 获取最大单据号
    async getMaxBillNo() {
      try {
        const response = await axios.get(`${this.baseURL}/Web/GetMAXNum`, {
          params: { HBillType: '3711' }
        })
        if (response.data && response.data.data && response.data.data.length > 0) {
          this.form.HBillNo = response.data.data[0].HBillNo
          this.form.HInterID = response.data.data[0].HInterID
          this.form.HDate = this.formatDate(new Date())
          this.form.HMakeDate = this.formatDate(new Date())
          this.form.HMaker = sessionStorage.HUserName
        }
      } catch (error) {
        console.error('获取单据号失败:', error)
        this.$message.error('获取单据号失败')
      }
    },
    // 编辑获取表头
    async setEditForm(linterid) {
      console.log("neima", linterid)
      try {       //'/api/Sc_ICMOReportBill/Sc_GetICMOReportBillListCheckDetai'
        const response = await axios.get(`${this.baseURL}/Sc_ICMOReportBill/Sc_GetICMOReportBillListCheckDetai`, {
          params: { HID: linterid }
        })
        if (response.data.code === 1) {
          const data = response.data.data.h_v_IF_ICMOReportBillList_Edit[0]
          this.form.HBillNo = data.单据号
          this.form.HDate = this.formatDate(data.日期)
          this.form.HDeptID = data.HDeptID
          this.form.HDeptName = data.部门
          this.form.HDeptNumber = data.部门代码
          this.form.HGroupID = data.HGroupID
          this.form.HGroupName = data.班组
          this.form.HEmpID = data.HEmpID
          this.form.HEmpName = data.统计员
          this.form.HMainSourceBillNo = data.HMainSourceBillNo
          this.form.HMainSourceInterID = data.HMainSourceInterID || 0
          this.form.HMainSourceEntryID = data.HMainSourceEntryID || 0
          this.form.HRemark = data.表头备注
          console.log("response", data.单据号, "---", data.部门, "----", data.统计员)
        }
      } catch (error) {
        this.$message.error('获取表单数据失败')
      }
    },
    // 编辑获取表体
    async setEditGrid(linterid) {
      this.form.HInterID = linterid
      try {//Sc_ICMOReportBill/Sc_ICMOReportBillListProjectDetai
        const response = await axios.get(`${this.baseURL}/Sc_ICMOReportBill/Sc_ICMOReportBillListProjectDetai`, {
          params: { sqlWhere: `and hmainid=${linterid}` }
        })
        if (response.data.count === 1) {
          this.tableData = response.data.data
        }
      } catch (error) {
        this.$message.error('获取表格数据失败')
      }
    },
    handleSourceTypeChange(value) {
      if (value === '1') {
        this.sourceBillDisabled = false
        this.sourceBillBtnDisabled = true
        this.OperationType = 1
      } else if (value === '2') {
        this.sourceBillDisabled = true
        this.sourceBillBtnDisabled = false
        this.OperationType = 2
      }
    },
    openDeptDialog() {
      this.dialogTitle = '部门列表'
      this.currentDialogComponent = 'Dept'
      this.currentDialogType = 'dept'
      this.dialogVisible = true
    },
    openGroupDialog() {
      this.dialogTitle = '班组列表'
      this.currentDialogComponent = 'Group'
      this.currentDialogType = 'group'
      this.dialogVisible = true
    },
    openEmpDialog() {
      this.dialogTitle = '职员列表'
      this.currentDialogComponent = 'Employee'
      this.currentDialogType = 'emp'
      this.dialogVisible = true
    },
    openSourceBillDialog() {
      this.dialogTitle = '生产任务单列表'
      this.currentDialogComponent = 'ProductionOrder'
      this.currentDialogType = 'sourceBill'
      this.dialogVisible = true
    },
    openMaterialDialog(row, index) {
      this.currentRow = row
      this.currentRowIndex = index
      this.dialogTitle = '物料列表'
      this.currentDialogComponent = 'Material'
      this.currentDialogType = 'material'
      this.dialogVisible = true
    },
    openUnitDialog(row, index) {
      this.currentRow = row
      this.currentRowIndex = index
      this.dialogTitle = '单位列表'
      this.currentDialogComponent = 'Unit'
      this.currentDialogType = 'unit'
      this.dialogVisible = true
    },
    openSourceDialog(row, index) {
      this.currentRow = row
      this.currentRowIndex = index
      this.dialogTitle = '资源列表'
      this.currentDialogComponent = 'Source'
      this.currentDialogType = 'source'
      this.dialogVisible = true
    },
    openWorkerDialog(row, index) {
      this.currentRow = row
      this.currentRowIndex = index
      this.dialogTitle = '职员列表'
      this.currentDialogComponent = 'Employee'
      this.currentDialogType = 'worker'
      this.dialogVisible = true
    },
    handleDialogSelect(data) {
      this.selectedData = data
    },
    handleDialogDbSelect(data) {
      this.applySelectedData(data)
      this.dialogVisible = false
    },
    confirmDialogSelect() {
      if (this.selectedData) {
        this.applySelectedData(this.selectedData)
        this.dialogVisible = false
      }
    },
    applySelectedData(data) {
      switch (this.currentDialogType) {
        case 'dept':
          this.form.HDeptName = data.部门名称
          this.form.HDeptID = data.HItemID
          this.form.HDeptNumber = data.部门代码
          break
        case 'group':
          this.form.HGroupName = data.班组名称
          this.form.HGroupID = data.HItemID
          break
        case 'emp':
          this.form.HEmpName = data.职员名称
          this.form.HEmpID = data.HItemID
          break
        case 'sourceBill':
          this.handleSourceBillSelect(data)
          break
        case 'material':
          if (this.currentRow) {
            this.currentRow.HMaterID = data.HItemID
            this.currentRow.HMaterCode = data.物料代码
            this.currentRow.HMaterName = data.物料名称
            this.currentRow.HMaterSpec = data.规格型号
            this.currentRow.HUnitID = data.HUnitID
            this.currentRow.HUnitCode = data.计量单位代码
            this.currentRow.HUnitName = data.计量单位名称
          }
          break
        case 'unit':
          if (this.currentRow) {
            this.currentRow.HUnitID = data.HItemID
            this.currentRow.HUnitCode = data.计量单位代码
            this.currentRow.HUnitName = data.计量单位名称
          }
          break
        case 'source':
          if (this.currentRow) {
            this.currentRow.HSourceID = data.HItemID
            this.currentRow.HSourceCode = data.生产资源代码
            this.currentRow.HSourceName = data.生产资源名称
          }
          break
        case 'worker':
          if (this.currentRow) {
            this.currentRow.HWorkerid = data.HItemID
            this.currentRow.HWorkerCode = data.职员代码
            this.currentRow.HWorkerName = data.职员名称
          }
          break
      }
    },
    handleSourceBillSelect(data) {
      if (!Array.isArray(data)) data = [data]
      const billNos = data.map(item => item.单据号)
      if (!this.isAllEqual(billNos)) {
        this.$message.error('请选择相同单号!')
        return
      }
      this.form.HMainSourceBillNo = data[0].单据号
      this.form.HMainSourceInterID = data[0].hmainid
      this.form.HMainSourceEntryID = data[0].HEntryID
      const newRows = data.map(item => ({
        HMaterID: item.HMaterID,
        HMaterCode: item.HMaterCode,
        HMaterName: item.HMaterName,
        HMaterSpec: item.HMaterSpec,
        HUnitID: item.HUnitID,
        HUnitCode: item.HUnitCode,
        HUnitName: item.HUnitName,
        HSourceID: 0,
        HSourceCode: '',
        HSourceName: '',
        HWorkerid: 0,
        HWorkerCode: '',
        HWorkerName: '',
        HQty: 0,
        HBadQty: 0,
        HICMOBillNo: item.单据号,
        HICMOInterID: item.hmainid,
        HICMOEntryID: item.HEntryID,
        HRemark: '',
        HSourceInterID: item.hmainid,
        HSourceEntryID: item.HEntryID,
        HSourceBillNo: item.单据号,
        HSourceBillType: 3710
      }))
      this.tableData = newRows
    },
    addTableRow() {
      this.tableData.push(this.getEmptyRow())
    },
    copyTableRow() {
      if (this.selectedRows && this.selectedRows.length === 1) {
        const copyRow = JSON.parse(JSON.stringify(this.selectedRows[0]))
        this.tableData.push(copyRow)
      } else {
        this.$message.warning('请选择一行数据进行复制')
      }
    },
    deleteTableRow(index) {
      if (this.tableData.length <= 1) {
        this.$message.warning('至少保留一行数据')
        return
      }
      this.tableData.splice(index, 1)
    },
    handleSelectionChange(selection) {
      this.selectedRows = selection
    },
    getEmptyRow() {
      return {
        HMaterID: 0,
        HMaterCode: '',
        HMaterName: '',
        HMaterSpec: '',
        HUnitID: 0,
        HUnitCode: '',
        HUnitName: '',
        HSourceID: 0,
        HSourceCode: '',
        HSourceName: '',
        HWorkerid: 0,
        HWorkerCode: '',
        HWorkerName: '',
        HQty: 0,
        HBadQty: 0,
        HICMOBillNo: '',
        HICMOInterID: '0',
        HICMOEntryID: '0',
        HRemark: '',
        HSourceInterID: 0,
        HSourceEntryID: 0,
        HSourceBillNo: '',
        HSourceBillType: 0,
        HICMOTempID: 0,
        HPRODUCEDATE: ''
      }
    },
    // 保存
    async handleSave() {
      try {
        await this.$refs.form.validate()
        if (!this.validateForm()) {
          return
        }
        const refSav = this.OperationType === 3 ? 'Update' : 'Add'
        const mainData = {
          ...this.form,
          HMaker: sessionStorage.HUserName
        }
        const rowData = this.tableData.filter(row =>
          row.HMaterCode && row.HMaterName
        ).map(row => ({
          ...row,
          HMaterName: row.HMaterName.replace(/"/g, '”').replace(/;/g, ';'),
          HMaterSpec: row.HMaterSpec.replace(/"/g, '”').replace(/;/g, ';')
        }))
        const submitData = {
          main: JSON.stringify(mainData),
          detail: JSON.stringify(rowData),
          operation: refSav,
          user: sessionStorage.HUserName
        }
        const response = await axios.post('/api/Sc_ICMOReportBill/SaveGetICMOReportBillList', submitData)
        if (response.data.count === 1) {
          this.$message.success(response.data.Message)
          this.saveDisabled = true
        } else {
          this.$message.error(response.data.Message)
        }
      } catch (error) {
        this.$message.error('保存失败')
      }
    },
    validateForm() {
      if (!this.form.HDeptID) {
        this.$message.error('车间不能为空!')
        return false
      }
      if (!this.form.HGroupID) {
        this.$message.error('班组不能为空!')
        return false
      }
      if (!this.form.HEmpID) {
        this.$message.error('统计员不能为空!')
        return false
      }
      if (this.tableData.length === 0) {
        this.$message.error('没有物料明细记录')
        return false
      }
      for (let i = 0; i < this.tableData.length; i++) {
        const row = this.tableData[i]
        if (!row.HMaterID) {
          this.$message.error(`明细记录第${i + 1}行,物料信息为空!`)
          return false
        }
        if (!row.HUnitID) {
          this.$message.error(`明细记录第${i + 1}行,单位信息为空!`)
          return false
        }
        if (!row.HQty || parseFloat(row.HQty) <= 0) {
          this.$message.error(`明细记录第${i + 1}行,生产数量不能为空或0或者小于0!`)
          return false
        }
      }
      return true
    },
    // 审核
    async handleCheckBill() {
      try {
        const response = await axios.get('/api/Sc_ICMOReportBill/AuditProcessReportList', {
          params: {
            HInterID: this.form.HInterID,
            IsAudit: 0,
            CurUserName: sessionStorage.HUserName
          }
        })
        if (response.data.count === 1) {
          this.$message.success(response.data.Message)
        } else {
          this.$message.error(response.data.Message)
        }
      } catch (error) {
        this.$message.error('审核失败')
      }
    },
    handleAdd() {
      this.$router.push({
        name: 'ProductionReport',
        query: { OperationType: 1 }
      })
    },
    handleCopyBill() {
      // 复制逻辑
    },
    handleAbandonCheck() {
      // 反审核逻辑
    },
    handleDeleteBill() {
      // 删除逻辑
    },
    handlePrint() {
      // 打印逻辑
    },
    handleExit() {
      this.$router.back()
    },
    formatDate(date) {
      if (!date) return ''
      const d = new Date(date)
      const month = '' + (d.getMonth() + 1)
      const day = '' + d.getDate()
      const year = d.getFullYear()
      return [year, month.padStart(2, '0'), day.padStart(2, '0')].join('-')
    },
    isAllEqual(array) {
      if (array.length > 0) {
        return !array.some((value, index) => value !== array[0])
      }
      return true
    },
    handleRemove(file, fileList) {
      console.log(file, fileList)
    },
    handlePreview(file) {
      console.log(file)
    },
    handleExceed(files, fileList) {
      this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`)
    },
    beforeRemove(file, fileList) {
      return this.$confirm(`确定移除 ${file.name}?`)
    }
  }
}
</script>
<style scoped>
.operation-buttons {
  margin-bottom: 20px;
  padding-bottom: 10px;
  border-bottom: 1px solid #eee;
}
.page-title {
  text-align: center;
  margin: 20px 0;
}
.page-title h1 {
  font-size: 24px;
  font-weight: bold;
}
.table-toolbar {
  margin-bottom: 10px;
}
.el-form-item {
  margin-bottom: 18px;
}
.el-table {
  margin-top: 10px;
}
</style>
src/views/ICMO/ScICMOReportBill/ScICMOReportBillList.vue
New file
@@ -0,0 +1,1649 @@
<template>
  <div style="padding: 10px">
    <el-form
      :model="queryParams"
      ref="queryForm"
      size="small"
      :inline="true"
      label-width="78px"
      class="searchBox"
    >
      <el-row>
        <el-form-item label="开始日期" style="margin-left: 100px">
          <el-date-picker
            v-model="sTime"
            type="date"
            placeholder="开始日期"
            style="width: 150px"
            :disabled="queryParams.HInitTimeCycle != -1"
            value-format="yyyy-MM-dd"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="结束日期">
          <el-date-picker
            v-model="eTime"
            type="date"
            placeholder="结束日期"
            style="width: 150px"
            :disabled="queryParams.HInitTimeCycle != -1"
            value-format="yyyy-MM-dd"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="日期间隔">
          <el-select
            v-model="queryParams.HInitTimeCycle"
            placeholder="请选择"
            @change="riqiChange"
          >
            <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="HBillNo">
          <el-input
            v-model="queryParams.HBillNo"
            placeholder="请输入单据号"
            @keyup.enter.native="handleQuery"
          />
        </el-form-item>
        <el-form-item label="组织">
          <el-select
            v-model="queryParams.HOrgID"
            placeholder="请选择"
            class="ForFilteringSchemes"
          >
            <el-option
              v-for="(item, index) in organizationList"
              :key="index"
              :label="item.Name"
              :value="item.ID"
            >
            </el-option>
          </el-select>
        </el-form-item>
      </el-row>
      <el-form-item label-width="78px">
        <el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery">
          搜 索</el-button
        >
        <el-button icon="el-icon-circle-close" size="small" @click="searchOpen = false"
          >取 消</el-button
        >
      </el-form-item>
      <el-collapse v-model="activeSeach">
        <el-collapse-item title="更多" name="1">
          <el-card class="box-card">
            <el-form :inline="true">
              <el-form-item label="业务员">
                <el-input></el-input>
              </el-form-item>
              <el-form-item label="物料代码">
                <el-input></el-input>
              </el-form-item>
              <el-form-item label="物料名称">
                <el-input></el-input>
              </el-form-item>
              <el-form-item label="供应商">
                <el-input></el-input>
              </el-form-item>
            </el-form>
            <div slot="header" class="clearfix"><span>过滤</span></div>
            <div>
              <el-row>
                <el-form-item label-width="0">
                  <el-col :span="7">
                    <el-select
                      v-model="queryParams.ColName1"
                      placeholder="请选择"
                      @change="riqiChange"
                      class="ForFilteringSchemes"
                    >
                      <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"
                      class="ForFilteringSchemes"
                    >
                      <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"
                      class="ForFilteringSchemes"
                    />
                  </el-col>
                </el-form-item>
              </el-row>
              <el-row>
                <el-form-item label-width="0">
                  <el-col :span="7">
                    <el-select
                      v-model="queryParams.ColName2"
                      placeholder="请选择"
                      @change="riqiChange"
                      class="ForFilteringSchemes"
                    >
                      <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"
                      class="ForFilteringSchemes"
                    >
                      <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="11">
                    <el-input
                      v-model="queryParams.ColContent2"
                      placeholder="请输入"
                      clearable
                      @keyup.enter.native="handleQuery"
                      class="ForFilteringSchemes"
                    />
                  </el-col>
                </el-form-item>
              </el-row>
              <el-row>
                <el-form-item label-width="0">
                  <el-col :span="7">
                    <el-select
                      v-model="queryParams.ColName"
                      placeholder="请选择"
                      @change="riqiChange"
                      class="ForFilteringSchemes"
                    >
                      <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"
                      class="ForFilteringSchemes"
                    >
                      <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"
                      class="ForFilteringSchemes"
                    />
                  </el-col>
                </el-form-item>
              </el-row>
            </div> </el-card
        ></el-collapse-item>
      </el-collapse>
    </el-form>
    <el-row :gutter="10" class="mb8">
      <!-- <el-col :span="1.5">
        <el-button
          type="warning"
          plain
          icon="el-icon-download"
          size="mini"
          @click="handleImport"
          >导入</el-button
        >
      </el-col> -->
      <el-col :span="1.5">
        <el-button
          type="primary"
          icon="el-icon-plus"
          size="mini"
          @click="handleAddEdit((OperationType = 1))"
          id="btn-Add"
          >新增</el-button
        >
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="primary"
          icon="el-icon-edit"
          size="mini"
          :disabled="single"
          @click="handleEdit((row = rowForm), (OperationType = 3), (copyType = -1))"
          >编辑</el-button
        >
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="primary"
          icon="el-icon-edit"
          size="mini"
          :disabled="single"
          @click="handleEdit((row = rowForm), (OperationType = 2), (copyType = 1))"
          >复制</el-button
        >
      </el-col>
      <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-edit"
          size="mini"
          :disabled="single"
          @click="set_CheckBill(0, (form = rowForm))"
          >审核</el-button
        >
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="primary"
          icon="el-icon-edit"
          size="mini"
          :disabled="single"
          @click="set_CheckBill(1, (form = rowForm))"
          >反审核</el-button
        >
      </el-col>
      <!-- <el-col :span="1.5">
        <el-button
          type="success"
          plain
          icon="el-icon-edit"
          size="mini"
          :disabled="single"
          @click="set_De_Stop(0, (form = rowForm))"
          >禁用</el-button
        >
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="success"
          plain
          icon="el-icon-edit"
          size="mini"
          :disabled="single"
          @click="set_De_Stop(1, (form = rowForm))"
          >反禁用</el-button
        >
      </el-col> -->
      <el-col :span="1.5">
        <el-button
          type="primary"
          icon="el-icon-edit"
          size="mini"
          :disabled="single"
          @click="set_CloseBill(1, (form = rowForm))"
          >关闭</el-button
        >
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="primary"
          icon="el-icon-edit"
          size="mini"
          :disabled="single"
          @click="set_CloseBill(2, (form = rowForm))"
          >反关闭</el-button
        >
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="primary"
          icon="el-icon-edit"
          size="mini"
          :disabled="single"
          @click="set_CloseRow(0, (form = rowForm))"
          >行关闭</el-button
        >
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="primary"
          icon="el-icon-edit"
          size="mini"
          :disabled="single"
          @click="set_CloseRow(1, (form = rowForm))"
          >行反关闭</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-download"
          size="mini"
          @click="handleRowHide"
          >隐藏列设置</el-button
        >
      </el-col>
      <el-col :span="1.5">
        <el-button type="primary" icon="el-icon-help" size="mini" @click="handleSearch"
          >搜 索</el-button
        >
      </el-col>
      <el-col :span="1.5">
        <el-button type="" icon="el-icon-refresh" size="mini" @click="resetQuery"
          >重 置</el-button
        >
      </el-col>
      <!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> -->
    </el-row>
    <div class="tableBox" v-loading="loading">
      <el-table
        :data="tableData"
        ref="tableData"
        max-height="750"
        :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.sorderid"
            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), (copyType = 1))"
                  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"
        :pageSizes="pageSizes"
        @pagination="getList"
      />
      <el-dialog
        title="隐藏列设置"
        :visible.sync="openRowHide"
        width="816px"
        append-to-body
      >
        <RowSettings
          :colName="btResList"
          :HModName="HModName"
          @rowEditClose="rowSetClose"
          v-if="rowHideShow"
        />
      </el-dialog>
      <!-- 编辑 -->
         <!-- 编辑弹窗 -->
      <el-dialog
        :title="editDialogTitle"
        :visible.sync="openEdit"
        width="90%"
        append-to-body
        class="production-report-dialog"
        :before-close="handleEditClose"
        fullscreen
      >
          <ProductionReportEdit
            v-if="openEdit"
            :propOperationType="currentOperationType"
            :propLinterid="currentLinterid"
            :propHSouceBillType="currentHSouceBillType"
            :propCopyType="currentCopyType"
            @editClose="handleEditClose"
            @saveSuccess="handleSaveSuccess"
          />
      </el-dialog>
      <el-dialog
        :title="upload.title"
        :visible.sync="upload.open"
        width="1500px"
        append-to-body
      >
        <div style="margin-top: -20px">
          <el-button type="primary" @click="set_AddNew">导入数据</el-button>
          <el-button type="primary" @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">文件上传</el-button>
          </el-upload>
        </div>
        <el-table
          :data="uploadData"
          v-loading="uploadTableLoading"
          :row-class-name="uploadDataIndex"
          border
          height="550"
        >
          <el-table-column type="index" label="序号" width="55" align="center" />
          <el-table-column label="组织代码" prop="组织代码" align="center" width="120" />
          <el-table-column label="组织名称" prop="组织名称" align="center" width="120" />
          <el-table-column
            label="生产资源名称"
            prop="生产资源名称"
            align="center"
            width="120"
          />
          <el-table-column
            label="生产资源代码"
            prop="生产资源代码"
            align="center"
            width="120"
          />
          <el-table-column label="部门代码" prop="部门代码" align="center" width="120" />
          <el-table-column label="部门名称" prop="部门名称" align="center" width="120" />
          <el-table-column
            label="负责人代码"
            prop="负责人代码"
            align="center"
            width="120"
          />
          <el-table-column label="负责人" prop="负责人" align="center" width="120" />
          <el-table-column
            label="工作中心代码"
            prop="工作中心代码"
            align="center"
            width="120"
          />
          <el-table-column
            label="工作中心名称"
            prop="工作中心名称"
            align="center"
            width="120"
          />
          <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.row)"
                >删除</el-button
              >
            </template>
          </el-table-column>
        </el-table>
        <pagination
          v-show="uploadTotal > 0"
          :total="uploadTotal"
          :page.sync="uploadPage"
          :limit.sync="uploadPageSize"
          :pageSizes="uploadPageSizes"
          @pagination="currentPage"
        />
      </el-dialog>
    </div>
  </div>
</template>
<script>
import axios from "axios";
import RowSettings from "@/views/component/rowSettings";
import gySource from "@/views/basic/gySource";
import dayjs from "dayjs";
import ProductionReportEdit from "./ScICMOReportBillEdit";
export default {
  name: "ProductionReportList",
  components: { RowSettings, gySource,ProductionReportEdit  },
  props: {
    openPage: { type: String },
  },
  data() {
    return {
       // 编辑弹窗相关数据
      openEdit: false,
      editDialogTitle: "生产汇报单",
      currentOperationType: 1,
      currentLinterid: 0,
      currentHSouceBillType: "",
      currentCopyType: -1,
      iframeUrl: "",
      activeSeach: "",
      dateRange: [],
      HModName: "cgPoInStockBill",
      editShow: false,
      totalNameList: [],
      tableShow: true,
      openPrintList: false,
      printListShow: false,
      HClassTag: "ForFilteringSchemes", //过滤条件的class类
      HBillType: "1103",
      openBtnHide: false,
      btnHideShow: false,
      rowHideShow: false,
      openRowHide: false,
      copyType: 0,
      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" },
      ],
      sWhere: "",
      sTime: "",
      eTime: "",
      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 },
        { label: "任意间隔", value: -1 },
      ],
      hPriceTypeList: ["成本价", "结算价"],
      addBtnShow: false,
      zbIndex: null,
      zbSelForm: {}, //子表选中数据
      dialogTypeNum: null, //部门弹窗1,仓库弹窗2
      deptShow: false, //部门数据组件
      warehouseShow: false, //仓库数据组件
      materialShow: false, //物料数据组件
      deptform: {}, //弹窗选中数据
      openData: false, //数据弹窗
      organizationList: JSON.parse(sessionStorage.getItem("organizationList")), //组织列表
      dialogTitle: "",
      zuzhiId: "",
      subDisabled: false, //编辑页面保存按钮是否禁用(true禁用,false可用)
      OperationType: null, //保存类型(新增1修改3)
      HInterID: null,
      baseURL: process.env.VUE_APP_BASE_API || "http://47.96.97.237/API/",
      currentRow: [],
      lastSelectedRowIndex: null, // 用于记录上次点击的行索引
      lastSelectedRow: null, // 上一次选中的行
      selectedRow: null, // 当前选中的行
      rowForm: {},
      checkedSysZb: [],
      editData: [], //生产资料子表
      editBtData: [], //子表表头
      activeName: "first",
      searchOpen: false,
      // 弹出层标题
      title: "",
      // 是否显示弹出层
      open: false,
      // 日期范围
      dateRange: [],
      // 查询参数
      queryParams: {
        HOrgID: null,
        HName: null,
        HNumber: null,
        Comparator1: "",
        Comparator2: "",
        Comparator: "",
        ColContent1: "",
        ColContent2: "",
        ColContent: "",
        HInitTimeCycle: 29,
        HBeginDate: dayjs(new Date()).subtract(29, "d").format("YYYY-MM-DDTHH:mm:ss"),
        HEndDate: dayjs(new Date()).format("YYYY-MM-DDTHH:mm:ss"),
      },
      // 显示搜索条件
      showSearch: true,
      // 选中数组
      ids: [],
      // 非单个禁用
      single: true,
      // 非多个禁用
      multiple: true,
      // 遮罩层
      loading: true,
      // 禁用日期选择
      disableDataPicker: true,
      tyResList: [], //收料通知单列表(接口数据)
      btList: [], //收料通知单列表显示
      btResList: [],
      tableData: [], //收料通知单列表(分页显示)
      dataList: [],
      titleData: [
        "HItemID",
        "hmainid",
        "Hprocid",
        "HUSEORGID",
        "HCREATEORGID",
        "HParentID",
      ], //不需要显示的字段 可扩展
      pageSizes: [50, 100, 500, 5000, 50000],
      page: 1,
      pageSize: 50,
      total: 0,
      scollHeight: document.body.clientHeight * (38.056 / 100),
      // 表单参数
      form: {},
      // 表单校验
      rules: {
        HSupName: [{ required: true, message: "客户不能为空", trigger: "blur" }],
        HDate: [{ required: true, message: "日期不能为空", trigger: "blur" }],
        HExRate: [{ required: true, message: "汇率不能为空", trigger: "blur" }],
      },
      upload: {
        // 是否显示弹出层
        open: false,
        // 弹出层标题
        title: "",
        // 是否禁用上传
        isUploading: false,
        // 是否更新已经存在的数据
        updateSupport: 0,
        // 设置上传的请求头部
        // headers: { Authorization: "Bearer " + getToken() },
        // 上传的地址
        url: "http://47.96.97.237/API/Gy_Source/Gy_Source_Excel",
      },
      uploadData: [],
      alluploadList: [],
      uploadTableLoading: false,
      uploadPageSizes: [50, 100, 500, 5000, 50000],
      uploadPage: 1,
      uploadPageSize: 50,
      uploadTotal: 0,
    };
  },
  mounted() {
    this.queryParams.HOrgID = sessionStorage["Organization"];
    window.editGyClose = () => {
      this.editGyClose(); // 组件内的方法绑定到windows
    };
  },
  created() {
    this.riqiChange();
    // this.getList();
    this.handleQuery();
  },
  beforeDestroy() {
    // 组件销毁时清理全局方法,避免内存泄漏
    delete window.editGyClose;
  },
  methods: {
    onDateScanOptionChangerHandler(e) {
      this.queryParams.timeSpan = e;
      if (e == -1) {
        this.disableDataPicker = true;
        return;
      }
      this.disableDataPicker = false;
    },
    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;
    },
    //#region 获取公司名,根据公司进行定制化开发
    defaintOperationByCompanyName() {
      var result = false;
      axios
        .get(this.baseURL + "/Xt_getInfo/getCompanyName")
        .then((res) => {
          var data1 = res.data;
          if (data1.count == 1) {
            if (data1.data == "水务") {
              result = true;
            }
          }
        })
        .catch((error) => {
          this.$modal.msgError("接口请求失败!");
        });
      return result;
    },
    handleSellOpen() {
      this.$router.push("/sellBill");
    },
    handleSellOutOpen() {
      this.$router.push("/sellOutBill");
    },
    handleBtnHide() {
      this.btnHideShow = true;
      this.openBtnHide = true;
    },
    handleRowHide() {
      this.rowHideShow = true;
      this.openRowHide = true;
    },
    rowSetClose(val) {
      this.rowHideShow = false;
      this.tableShow = true;
      this.openRowHide = val;
      this.getList();
    },
    riqiChange() {
      if (this.queryParams.HInitTimeCycle == -1) {
        return;
      }
      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.sTime = yyyyS + "-" + mmS + "-" + ddS;
      this.eTime = yyyyE + "-" + mmE + "-" + ddE;
    },
    organizationChange(val) {
      // let options=undefined
      //  this.form=this.organizationList.find(option => option.ID === val)?.Name || '';
    },
    //部门弹窗赋值
    dbEmitData(deptRow, num) {
      // num=1部门 num=2出库仓库
      if (num == 1) {
        this.form.HDeptName = deptRow.部门名称;
        this.form.HDeptID = deptRow.HItemID;
        this.form.HEmpID = deptRow.HEmpID;
        this.form.HManagerName = deptRow.负责人;
        this.openData = false;
      } else if (num == 2) {
        this.editData[this.zbIndex].HWHID = deptRow.HItemID;
        this.editData[this.zbIndex].发货仓库 = deptRow.仓库名称;
        this.openData = false;
      } else if (num == 3) {
        this.editData[this.zbIndex].HMaterID = deptRow.HItemID;
        this.editData[this.zbIndex].物料代码 = deptRow.物料代码;
        this.editData[this.zbIndex].物料名称 = deptRow.物料名称;
        this.editData[this.zbIndex].HUnitID = deptRow.HUnitID;
        this.editData[this.zbIndex].规格型号 = deptRow.规格型号;
        this.editData[this.zbIndex].计量单位 = deptRow.计量单位名称;
        this.editData[this.zbIndex].HTaxPrice = deptRow.含税成本价;
        this.editData[this.zbIndex].HTaxRate = deptRow.默认税率;
        this.openData = false;
      }
    },
    emitData(deptRow, num) {
      this.dialogTypeNum = num;
      this.deptform = deptRow;
    },
    deptClickSub() {
      this.dbEmitData(this.deptform, this.dialogTypeNum);
      this.deptform = {};
    },
    async getList() {
      this.tableShow = false;
      this.loading = true;
      if (this.pageSize == 0) {
        this.pageSize = 50;
      }
      if (this.sTime && this.eTime) {
        this.sWhere += " and CONVERT(varchar(100),日期, 23) >= '" + this.sTime + "'";
        this.sWhere += " and CONVERT(varchar(100),日期, 23) <= '" + this.eTime + "'";
      }
      try {
        let res = await axios.get(this.baseURL + "Sc_ICMOReportBill/list", {
          params: {
            sWhere: this.sWhere,
            user: sessionStorage["HUserName"],
          },
        });
        this.tyResList = [...JSON.parse(JSON.stringify(res.data.data))]; //总数据
        let data1 = res.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;
          var temp = "";
          for (var i = 0; i < result.length; i++) {
            if (temp != result[i]["hmainid"]) {
              temp = result[i]["hmainid"];
            } else {
              result[i].日期 = null;
              result[i].单据号 = "";
              /*result[i].状态 = "";*/
              result[i].红蓝单标记 = "";
              result[i].hsupid = "";
              result[i].客户 = "";
              result[i].HEmpID = "";
              result[i].业务员 = "";
              result[i].hmanagerid = "";
              result[i].主管 = "";
              result[i].hsecmanagerid = "";
              result[i].发货人 = "";
              result[i].hkeeperid = "";
              result[i].保管员 = "";
              result[i].HDeptID = "";
              result[i].部门 = "";
              result[i].销售方式 = "";
            }
          }
          option.data = result;
          this.DisPlay_HideColumn(
            this.HModName,
            sessionStorage["HUserName"],
            option,
            this.dataList
          );
        }
      } catch (err) {
        this.$modal.msgError(`获取收料通知单错误: ${err}`);
      }
    },
    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("接口请求失败!");
        });
    },
    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);
    },
    //点击行
    handleRowClick(row, column, event) {
      this.lastSelectedRow = this.selectedRow; // 记录上一次选中的行
      this.selectedRow = row; // 记录当前选中的行
      this.lastSelectedRowIndex = this.tableData.indexOf(row);
      this.$refs.tableData.toggleRowSelection(row);
    },
    //选中行高亮样式
    rowStyle({ row, rowIndex }) {
      if (this.ids.includes(row.hmainid)) {
        return { background: "#ecf5ff" };
      }
    },
    //双击行
    handleDblclick(row, column, cell, event) {
      this.currentOperationType = 3;
      this.handleEdit(row, 3, -1);
    },
    // 多选框选中数据
    handleSelectionChange(selection) {
      // this.rowForm = {}
      this.ids = selection.map((item) => item.hmainid);
      this.single = selection.length != 1;
      this.multiple = !selection.length;
      if (!this.single) {
        this.rowForm = selection[0];
      }
    },
    //打开侧边搜索弹窗
    handleSearch() {
      this.searchOpen = true;
    },
    /** 搜索按钮操作 */
    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.HBillNo) {
        this.sWhere += " and 单据号 like '%" + this.queryParams.HBillNo + "%'";
      }
      // if (this.queryParams.HOrgID) {
      //   this.sWhere += " and HOrgID = '" + this.queryParams.HOrgID + "'";
      // }
      this.sWhere += this.addSWhereByOpenType();
      // this.sWhere += this.getOrgIDByUser();
      this.searchOpen = false;
      this.getList();
    },
    // 判断是直接打开页面还是其它页面通过选择按钮打开,并显示相应数据
    addSWhereByOpenType() {
      //获取参数
      var sWhere = "";
      //this.openPage判断是否有值,有代表其它页面通过选择按钮打开
      if (this.openPage) {
        sWhere += " and 禁用标记 != 'Y' and ISNULL(审核人,'')  != ''";
        return sWhere;
      }
      return sWhere;
    },
    //根据用户获取用户关联组织的过滤条件
    getOrgIDByUser() {
      var res = "";
      axios
        .get(this.baseURL + "/Xt_User/getOrgIDListByUser", {
          params: {
            HModName: this.HModName,
            user: sessionStorage["HUserName"],
            HOrgID: this.zuzhiId,
          },
        })
        .then((res) => {
          let result = res.data;
          if (result.count == 1) {
            if (result.data[0].sWhere == "1") {
              res = " and HUSEORGID = '" + this.zuzhiId + "'";
            } else {
              res = result.data[0].sWhere;
            }
          }
        })
        .catch((error) => {
          res = " and 1 = 0";
          this.$modal.msgError("接口请求失败!");
        });
      return res;
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.dateRange = [];
      this.sWhere = "";
      Object.assign(this.Parameters, {
        HBillNo: "",
        HInitTimeCycle: 29,
        HProjectNumber: "",
        HCusID: null,
        HMaterNumber: "",
        HMaterName: "",
        ColName1: "",
        ColName2: "",
        ColName: "",
        Comparator1: "",
        Comparator2: "",
        Comparator: "",
        ColContent1: "",
        ColContent2: "",
        ColContent: "",
      });
      this.riqiChange();
      this.resetForm("queryForm");
      this.getList();
    },
    //退出
    close() {
      this.tableShow = true;
      this.openEdit = false;
      this.getList();
    },
    //打开新增组件弹窗
    handleAddEdit() {
      this.currentOperationType = 1; // 无源单新增
      this.currentLinterid = 0;
      this.currentHSouceBillType = "";
      this.currentCopyType = -1;
      this.editDialogTitle = "新增生产汇报单";
      this.openEdit = true;
    },
    //打开修改组件弹窗
    handleEdit(row, currentOperationType, copyType) {
      if (!row || !row.hmainid) {
        this.$message.warning("请选择要操作的数据");
        return;
      }
      this.currentOperationType = currentOperationType;
      this.currentLinterid = row.hmainid;
      this.currentHSouceBillType = row.HSourceBillType || "";
      this.currentCopyType = copyType;
      if (currentOperationType === 3) {
        this.editDialogTitle = "编辑生产汇报单";
      } else if (currentOperationType === 5) {
        this.editDialogTitle = "复制生产汇报单";
      } else if (currentOperationType === 2) {
        this.editDialogTitle = "有源单新增生产汇报单";
      }
      this.openEdit = true;
    },
    // 关闭编辑弹窗
    handleEditClose() {
      this.openEdit = false;
      this.currentOperationType = 1;
      this.currentLinterid = 0;
      this.currentHSouceBillType = "";
      this.currentCopyType = -1;
    },
     // 保存成功回调
    handleSaveSuccess() {
      this.handleEditClose();
      this.getList(); // 刷新列表
      this.$message.success("操作成功");
    },
    /** 删除按钮操作 */
    handleDelete() {
      this.$modal
        .confirm("确认要删除吗,删除后不能恢复")
        .then(() => {
          if (!this.rowForm.审核人) {
            axios
              .get(this.baseURL + "Sc_ICMOReportBill/DeltetICMOReportBill", {
                params: {
                  HInter: this.rowForm.hmainid.toString(),
                  user: sessionStorage["HUserName"],
                },
              })
              .then((res) => {
                if (res.data.count == 1) {
                  this.handleQuery();
                  this.$modal.msgSuccess("删除成功");
                } else {
                  this.$modal.msgError("错误:" + result.code + result.Message);
                }
              })
              .catch((error) => {
                this.$modal.msgError("接口请求失败!");
              });
          } else {
            this.$modal.msgError("此条数据不是创建状态,无法删除!");
          }
        })
        .catch(() => {});
    },
    // 反审核/审核数据
    set_CheckBill(num, form) {
      var InterID = form.HItemID || form.HInterID || form.hmainid;
      //逻辑审核方法
      axios
        .get(this.baseURL + "/Sc_ICMOReportBill/AuditProcessReportList", {
          params: {
            HInterID: InterID,
            IsAudit: num,
            CurUserName: sessionStorage["HUserName"],
          },
        })
        .then((res) => {
          let result = res.data;
          if (result.code == 1) {
            this.$modal.msgSuccess("操作成功");
            this.getList();
          } else {
            this.$modal.msgError("错误:" + result.code + result.Message);
          }
        })
        .catch((error) => {
          this.$modal.msgError("接口请求失败!");
        });
    },
    // 关闭/反关闭数据
    async set_CloseBill(num, form) {
      let HInterID = form.HItemID || form.HInterID || form.hmainid;
      try {
        let res = await axios.get(
          `${this.baseURL}/Sc_ICMOReportBill/CloseSc_ICMOReportBill`,
          {
            params: {
              HInterID: HInterID,
              Type: num,
              user: sessionStorage["HUserName"],
            },
          }
        );
        let { data, Message, count } = res.data;
        if (count == 1) {
          this.handleQuery();
        } else {
          this.$modal.msgError(`${Message}`);
        }
      } catch (err) {
        this.$modal.msgError(`接口请求失败: ${err}`);
      }
    },
    // 行关闭/行反关闭数据
    async set_CloseRow(num, form) {
      let HInterID = form.HItemID || form.HInterID || form.hmainid;
      let HEntryID = form.HEntryID || form.hsubid;
      try {
        let res = await axios.get(
          `${this.baseURL}/Cg_POInStockBill/CloseRowCg_POInStockBill`,
          {
            params: {
              HInterID: HInterID,
              HEntryID: HEntryID,
              ISAudit: num,
              CurUserName: sessionStorage["HUserName"],
            },
          }
        );
        let { data, Message, count } = res.data;
        if (count == 1) {
          this.handleQuery();
        } else {
          this.$modal.msgError(`${Message}`);
        }
      } catch (err) {
        this.$modal.msgError(`接口请求失败: ${err}`);
      }
    },
    // 反禁用/禁用数据
    set_De_Stop(num, form) {
      var InterID = form.HItemID || form.HInterID;
      //逻辑审核方法
      axios
        .get(this.baseURL + "/Gy_Employee/StopGy_Employee", {
          params: {
            HInterID: InterID,
            IsStop: num,
            CurUserName: sessionStorage["HUserName"],
          },
        })
        .then((res) => {
          let result = res.data;
          if (result.code == 1) {
            this.$modal.msgSuccess("操作成功");
            this.getList();
          } else {
            this.$modal.msgError("错误:" + result.code + result.Message);
          }
        })
        .catch((error) => {
          this.$modal.msgError("接口请求失败!");
        });
    },
    //导出
    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, `gySource_${new Date().getTime()}.xlsx`); // 导出文件
    },
    handleImport() {
      this.uploadData = [];
      this.upload.isUploading = false;
      this.upload.title = "导入";
      this.upload.open = true;
    },
    // 文件上传中处理
    handleFileUploadProgress(event, file, fileList) {
      this.upload.isUploading = true;
      this.uploadTableLoading = true;
    },
    // 文件上传成功处理
    handleFileSuccess(res, file, fileList) {
      // this.upload.open = false;
      this.upload.isUploading = true;
      this.$refs.upload.clearFiles();
      if (res.code == 1) {
        this.alluploadList = res.data;
        this.uploadData = this.getPage(this.uploadPage, this.alluploadList);
        this.uploadTotal = this.alluploadList.length;
        this.uploadTableLoading = false;
        // this.set_AddNew(res.data)
      } else {
        this.$alert(
          "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
            res.Message +
            "</div>",
          "导入结果",
          { dangerouslyUseHTMLString: true }
        );
      }
    },
    // 提交上传文件
    submitFileForm() {
      this.$refs.upload.submit();
    },
    set_AddNew() {
      var num = [];
      for (var i = 0; i < this.uploadData.length; i++) {
        if (this.uploadData[i] != "") {
          num.push(this.uploadData[i]);
        }
      }
      var sSubStr = JSON.stringify(num);
      var sMainSub = sSubStr + "&和" + sessionStorage["HUserName"];
      axios({
        method: "post",
        url: this.baseURL + "/Gy_Source/Gy_Source_btnSave",
        data: {
          sMainSub: sMainSub,
        },
      })
        .then((res) => {
          this.$alert(
            "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
              res.data.Message +
              "</div>",
            "导入结果",
            { dangerouslyUseHTMLString: true }
          );
          this.upload.open = false;
          this.getList();
        })
        .catch((error) => {
          this.$modal.msgError("接口请求失败!");
        });
    },
    uploadDataIndex({ row, rowIndex }) {
      row.index = rowIndex + 1;
    },
    uploadDataDelete(row) {
      this.$modal
        .confirm("确认要删除吗,删除后不能恢复")
        .then(() => {
          const deleteList = [row.index];
          const data = this.uploadData;
          this.uploadData = data.filter((item) => {
            return deleteList.indexOf(item.index) == -1;
          });
        })
        .catch(() => {});
    },
    getPage(page, list) {
      let sindex = (parseInt(page) - 1) * this.uploadPageSize;
      let eindex = parseInt(page) * this.uploadPageSize;
      let newList = list.slice(sindex, eindex);
      console.log(newList);
      return newList;
    },
    currentPage(val) {
      this.uploadPage = val.page;
      setTimeout(() => {
        this.uploadData = this.getPage(this.uploadPage, this.alluploadList);
      }, 100);
    },
  },
};
</script>
<style>
.xsckdBox .el-date-editor.el-input {
  width: 100%;
}
.form-item-inline > .el-form-item__content {
  display: flex;
  flex-direction: row;
  width: 60%;
}
</style>
src/views/gyMaterial/GyMaterial.vue
@@ -201,9 +201,9 @@
          </el-collapse-item>
        </el-collapse>
      </el-form>
      <div style="text-align:center;font-size:15px;font-weight:bold;color:#fc9393;margin: 20px 0;">
      <!-- <div style="text-align:center;font-size:15px;font-weight:bold;color:#fc9393;margin: 20px 0;">
        {{ currentFilterScheme }}
      </div>
      </div> -->
    </el-card>
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
@@ -717,7 +717,7 @@
          this.getTreeData();
          this.getProjectOptions();
          this.getList();
          this.getDefaultFilterScheme();
          //this.getDefaultFilterScheme();
        })
        .catch((error) => {
          this.$modal.msgError("接口请求失败!");