陈婷婷
2025-12-03 a2789ede68e0387c51546a3388bddba2c0e9cf3e
Merge branch 'master' of http://101.37.171.70:10101/r/MES-WEB-VUEUI
3个文件已添加
23个文件已修改
3607 ■■■■■ 已修改文件
.env.development 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/permission.js 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/FbStepFoldOutBillList/fbStepFoldOutBillList.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/FbStepFoldinBillList/fbStepFoldinBillList.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/GyCustomer/CustomerEdit/index.vue 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/GyCustomer/index.vue 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ICMO/ScICMOReportBill/ScICMOReportBillEdit.vue 929 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ICMO/ScICMOReportBill/ScICMOReportBillList.vue 1649 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/KCGL/MoveStockBill/Kf_MoveStockBillList.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/KCGL/OtherOutBill/Kf_OtherOutBillEdit.vue 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/KCGL/OtherOutBill/Kf_OtherOutBillList.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ProductInBill/Kf_ProductInBillEdit.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ProductInBill/Kf_ProductInBillList.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basic/gyEmployee/gyEmployeeEdit.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/component/PackStockDetail/index.vue 335 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/gyMaterial/GyMaterial.vue 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/purchase/cgPoInStockBill/cgPoInStockBill.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/purchase/cgPoOrderBill/cgPoOrderBill.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sell/Kf_ICStockBillMainList/Kf_ICStockBillMainList.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sell/XsSeOutStockBill.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/user/Xt_UserGroupEdit.vue 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/user/Xt_UserGroupList.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/warehouse/barcodeMaster/Gy_BarCodeBill.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/warehouse/shipment/Kf_StockOutRequestBill.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/warehouse/shipment/Kf_StockOutRequestBillList.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.development
@@ -5,8 +5,8 @@
ENV = 'development'
# 智云迈思L-MOM管理系统/开发环境
# VUE_APP_BASE_API = 'http://localhost:81/API/'
VUE_APP_BASE_API = 'http://47.96.97.237/API/'
VUE_APP_BASE_API = 'http://localhost:81/API/'
# VUE_APP_BASE_API = 'http://47.96.97.237/API/'
# VUE_APP_BASE_API = 'http://220.189.218.155:9010/API/'
# 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true
src/router/index.js
@@ -485,7 +485,7 @@
  },
  // 生产订单
  {
    path: "/icmo/scIcmoBill/scIcmoBillList",
    path: "/icmo",
    component: Layout,
    hidden: true,
    redirect: "noredirect",
@@ -1178,41 +1178,28 @@
      },
    ],
  },
  //生产入库单列表
  {
    path: "/purchase/ProductInBill/ProductInBillList",
    component: Layout,
    hidden: true,
    redirect: "noredirect",
    meta: {
      breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示
      activeMenu: "/purchase/ProductInBill", // 当路由设置了该属性,则会高亮相对应的侧边栏。
    },
    children: [
      {
        path: "/purchase/ProductInBill/ProductInBillList",
        component: () => import("@/views/ProductInBill/Kf_ProductInBillList.vue"),
        name: "ProductInBillList",
        meta: { title: "生产入库单列表", activeMenu: "/purchase/ProductInBill" },
      },
    ],
  },
  //生产入库单
  {
    path: "/purchase/ProductInBill/ProductInBillEdit",
    path: "/icmo",
    component: Layout,
    hidden: true,
    redirect: "noredirect",
    meta: {
      breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示
      activeMenu: "/purchase/ProductInBill", // 当路由设置了该属性,则会高亮相对应的侧边栏。
      activeMenu: "/icmo/productInBill", // 当路由设置了该属性,则会高亮相对应的侧边栏。
    },
    children: [
      {
        path: "/purchase/ProductInBill/ProductInBillEdit",
        path: "/icmo/productInBill/productInBillList",
        component: () => import("@/views/ProductInBill/Kf_ProductInBillList.vue"),
        name: "ProductInBillList",
        meta: { title: "生产入库单列表", activeMenu: "icmo/productInBill" },
      },
      {
        path: "/icmo/productInBill/productInBillEdit",
        component: () => import("@/views/ProductInBill/Kf_ProductInBillEdit.vue"),
        name: "ProductInBillEdit",
        meta: { title: "生产入库单", activeMenu: "/purchase/ProductInBill" },
        meta: { title: "生产入库单", activeMenu: "icmo/productInBill" },
      },
    ],
  },
@@ -1255,6 +1242,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
@@ -865,7 +865,7 @@
                },
                hidden: false,
                name: "ProductInBill",
                path: "ProductInBill",
                path: "productInBill",
                redirect: "noRedirect",
                component: "Layout",
                children: [
@@ -879,7 +879,7 @@
                    component: () => import("@/views/ProductInBill/Kf_ProductInBillList.vue"),
                    hidden: false,
                    name: "ProductInBillList",
                    path: "ProductInBillList",
                    path: "productInBillList",
                  },
                  {
                    meta: {
@@ -891,10 +891,49 @@
                    component: () => import("@/views/ProductInBill/Kf_ProductInBillEdit.vue"),
                    hidden: false,
                    name: "ProductInBillEdit",
                    path: "ProductInBillEdit",
                    path: "productInBillEdit",
                  },
                ],
              },
              {
                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/FbStepFoldOutBillList/fbStepFoldOutBillList.vue
@@ -72,14 +72,14 @@
                                    <el-col :span="6">
                                        <el-form-item label="过滤">
                                            <el-select v-model="query.ColName" style="width:190px">
                                                <el-option value="0" label=""></el-option>
                                                <!-- <el-option value="0" label=""></el-option> -->
                                                <el-option v-for="col in filterColumns" :key="col.field" :value="col.field" :label="col.title" />
                                            </el-select>
                                        </el-form-item>
                                    </el-col>
                                    <el-col :span="6">
                                        <el-select v-model="query.Comparator" style="width:190px">
                                            <el-option value="0" label=""></el-option>
                                            <!-- <el-option value="0" label=""></el-option> -->
                                            <el-option value="=" label="=" />
                                            <el-option value=">=" label=">=" />
                                            <el-option value=">" label=">" />
@@ -108,7 +108,7 @@
                                    </el-col>
                                    <el-col :span="6">
                                        <el-select v-model="query.Comparator1" style="width:190px">
                                            <el-option value="0" label=""></el-option>
                                            <!-- <el-option value="0" label=""></el-option> -->
                                            <el-option value="=" label="=" />
                                            <el-option value=">=" label=">=" />
                                            <el-option value=">" label=">" />
@@ -137,7 +137,7 @@
                                    </el-col>
                                    <el-col :span="6">
                                        <el-select v-model="query.Comparator2" style="width:190px">
                                            <el-option value="0" label=""></el-option>
                                            <!-- <el-option value="0" label=""></el-option> -->
                                            <el-option value="=" label="=" />
                                            <el-option value=">=" label=">=" />
                                            <el-option value=">" label=">" />
@@ -249,14 +249,14 @@
                HSourceBillNo: '',
                Warehouse: '',
                Hmaker: '',
                ColName: '0',
                Comparator: '0',
                ColName: '',
                Comparator: '',
                ColContent: '',
                ColName1: '0',
                Comparator1: '0',
                ColName1: '',
                Comparator1: '',
                ColContent1: '',
                ColName2: '0',
                Comparator2: '0',
                ColName2: '',
                Comparator2: '',
                ColContent2: ''
            },
            timeCycles: [
src/views/FbStepFoldinBillList/fbStepFoldinBillList.vue
@@ -72,7 +72,7 @@
                                    <el-col :span="6">
                                        <el-form-item label="过滤">
                                            <el-select v-model="query.ColName" style="width:190px">
                                                <el-option value="0" label=""></el-option>
                                                <!-- <el-option value="0" label=""></el-option> -->
                                                <el-option v-for="col in filterColumns" :key="col.field" :value="col.field" :label="col.title" />
                                            </el-select>
                                        </el-form-item>
@@ -101,7 +101,7 @@
                                    <el-col :span="6">
                                        <el-form-item label="过滤1">
                                            <el-select v-model="query.ColName1" style="width:190px">
                                                <el-option value="0" label=""></el-option>
                                                <!-- <el-option value="0" label=""></el-option> -->
                                                <el-option v-for="col in filterColumns" :key="col.field" :value="col.field" :label="col.title" />
                                            </el-select>
                                        </el-form-item>
@@ -130,7 +130,7 @@
                                    <el-col :span="6">
                                        <el-form-item label="过滤2">
                                            <el-select v-model="query.ColName2" style="width:190px">
                                                <el-option value="0" label=""></el-option>
                                                <!-- <el-option value="0" label=""></el-option> -->
                                                <el-option v-for="col in filterColumns" :key="col.field" :value="col.field" :label="col.title" />
                                            </el-select>
                                        </el-form-item>
@@ -246,14 +246,14 @@
                HSourceBillNo: '',
                Warehouse: '',
                Hmaker: '',
                ColName: '0',
                Comparator: '0',
                ColName: '',
                Comparator: '',
                ColContent: '',
                ColName1: '0',
                Comparator1: '0',
                ColName1: '',
                Comparator1: '',
                ColContent1: '',
                ColName2: '0',
                Comparator2: '0',
                ColName2: '',
                Comparator2: '',
                ColContent2: ''
            },
            timeCycles: [
src/views/GyCustomer/CustomerEdit/index.vue
@@ -119,15 +119,15 @@
   
              <el-tab-pane label="其他信息" name="other">
                <el-form ref="formOther" :model="formData" label-width="100px">
                <el-form ref="formOther" :model="formData" :rules="rules" label-width="100px">
                  <el-row :gutter="20">
                    <el-col :span="12">
                      <el-form-item label="联系人">
                      <el-form-item label="联系人" prop="HLinkMan">
                        <el-input v-model="formData.HLinkMan" placeholder="请输入联系人"></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="联系电话">
                      <el-form-item label="联系电话" prop="HLinkPhone">
                        <el-input v-model="formData.HLinkPhone" placeholder="请输入联系电话"></el-input>
                      </el-form-item>
                    </el-col>
@@ -148,7 +148,7 @@
                  <el-row :gutter="20">
                    <el-col :span="12">
                      <el-form-item label="地址">
                      <el-form-item label="地址" prop="HAddress">
                        <el-input v-model="formData.HAddress" placeholder="请输入地址"></el-input>
                      </el-form-item>
                    </el-col>
@@ -220,7 +220,7 @@
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="地区">
                      <el-form-item label="地区" prop="HAreaID">
                        <el-input 
                          v-model="formData.HAreaName" 
                          placeholder="请选择地区"
@@ -280,7 +280,7 @@
                  <el-row :gutter="20">
                    <el-col :span="12">
                      <el-form-item label="客户状态">
                      <el-form-item label="客户状态" prop="HCusStatus">
                        <el-select v-model="formData.HCusStatus" placeholder="请选择客户状态" style="width: 100%">
                          <el-option label="潜在" value="101"></el-option>
                          <el-option label="合格" value="102"></el-option>
@@ -548,6 +548,7 @@
    this.initData()
    this.loadOrganizations()
    this.handleOperationType()
    this.setConditionalRules()
  },
  methods: {
    initData() {
@@ -708,44 +709,95 @@
    },
    
    // 保存
    handleSave() {
      this.$refs.form.validate(valid => {
        if (valid) {
          if (!this.validateForm()) {
            return
          }
          const formData = { ...this.formData }
          formData.HStopflag = formData.HStopflag ? 'true' : 'false'
          let url = `${this.baseURL}/Gy_Customer/AddBill`
          let params = { oMain: JSON.stringify(formData) + ';' + this.user }
          if (this.operationType === 3) {
            // 编辑保存
            url = `${this.baseURL}/Gy_Customer/AddBill1`
            params = {
              oMain: JSON.stringify(formData) + ';' + this.linterid + ';' + this.user + ';Gy_Customer_Edit'
            }
          }
          axios.post(url, params)
            .then(response => {
              if (response.data.count === 1) {
                this.$modal.msgSuccess(response.data.Message)
                this.saveDisabled = true
                this.saveConfig()
                this.openEdit = false
                this.$emit('editClose', true)
              } else {
                this.$modal.msgError(response.data.Message)
              }
            })
            .catch(error => {
              this.$modal.msgError('保存失败!')
            })
        }
    async handleSave() {
      const validMain = await new Promise(resolve => {
        this.$refs.form.validate(valid => resolve(valid))
      })
      let validOther = true
      if (this.$refs.formOther) {
        validOther = await new Promise(resolve => {
          this.$refs.formOther.validate(valid => resolve(valid))
        })
      }
      if (validMain && validOther) {
        if (!this.validateForm()) {
          return
        }
        const formData = { ...this.formData }
        formData.HStopflag = formData.HStopflag ? 'true' : 'false'
        let url = `${this.baseURL}/Gy_Customer/AddBill`
        let params = { oMain: JSON.stringify(formData) + ';' + this.user }
        if (this.operationType === 3) {
          // 编辑保存
          url = `${this.baseURL}/Gy_Customer/AddBill1`
          params = {
            oMain: JSON.stringify(formData) + ';' + this.linterid + ';' + this.user + ';Gy_Customer_Edit'
          }
        }
        axios.post(url, params)
          .then(response => {
            if (response.data.count === 1) {
              this.$modal.msgSuccess(response.data.Message)
              this.saveDisabled = true
              this.saveConfig()
              this.openEdit = false
              this.$emit('editClose', true)
            } else {
              this.$modal.msgError(response.data.Message)
            }
          })
          .catch(error => {
            this.$modal.msgError('保存失败!')
          })
      }
    },
    setConditionalRules() {
      this.rules.HLinkMan = [
        { validator: this.validateRequiredIfAdd, trigger: 'blur', message: '请输入联系人' }
      ]
      this.rules.HLinkPhone = [
        { validator: this.validateRequiredIfAdd, trigger: 'blur', message: '请输入联系电话' }
      ]
      this.rules.HAddress = [
        { validator: this.validateRequiredIfAdd, trigger: 'blur', message: '请输入地址' }
      ]
      this.rules.HAreaID = [
        { validator: this.validateRequiredIfAdd, trigger: 'change', message: '请选择地区' }
      ]
      this.rules.HCusStatus = [
        { validator: this.validateRequiredIfAdd, trigger: 'change', message: '请选择客户状态' }
      ]
    },
    validateRequiredIfAdd(rule, value, callback) {
      if (this.operationType !== 1) {
        return callback()
      }
      if (value === null || value === undefined) {
        return callback(new Error(rule.message || '该项为必填'))
      }
      if (typeof value === 'string' && value.trim() === '') {
        return callback(new Error(rule.message || '该项为必填'))
      }
      if (value === '0') {
        return callback(new Error(rule.message || '该项为必填'))
      }
      return callback()
    },
    
    // 表单验证
src/views/GyCustomer/index.vue
@@ -29,14 +29,14 @@
                  <el-row>
                    <el-col :span="7">
                      <el-select v-model="queryParams.ColName" placeholder="请选择" style="width: 100%">
                        <el-option value="0" label=""></el-option>
                        <!-- <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-select>
                    </el-col>
                    <el-col :span="6" style="padding: 0 10px">
                      <el-select v-model="queryParams.Comparator" placeholder="请选择" style="width: 100%">
                        <el-option value="0" label=""></el-option>
                        <!-- <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-select>
@@ -51,14 +51,14 @@
                  <el-row>
                    <el-col :span="7">
                      <el-select v-model="queryParams.ColName1" placeholder="请选择" style="width: 100%">
                        <el-option value="0" label=""></el-option>
                        <!-- <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-select>
                    </el-col>
                    <el-col :span="6" style="padding: 0 10px">
                      <el-select v-model="queryParams.Comparator1" placeholder="请选择" style="width: 100%">
                        <el-option value="0" label=""></el-option>
                        <!-- <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-select>
@@ -73,14 +73,14 @@
                  <el-row>
                    <el-col :span="7">
                      <el-select v-model="queryParams.ColName2" placeholder="请选择" style="width: 100%">
                        <el-option value="0" label=""></el-option>
                        <!-- <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-select>
                    </el-col>
                    <el-col :span="6" style="padding: 0 10px">
                      <el-select v-model="queryParams.Comparator2" placeholder="请选择" style="width: 100%">
                        <el-option value="0" label=""></el-option>
                        <!-- <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-select>
@@ -301,12 +301,12 @@
        HNumber: null,
        HName: null,
        HNumber2: null,
        ColName: "0",
        ColName1: "0",
        ColName2: "0",
        Comparator: "0",
        Comparator1: "0",
        Comparator2: "0",
        ColName: "",
        ColName1: "",
        ColName2: "",
        Comparator: "",
        Comparator1: "",
        Comparator2: "",
        ColContent: "",
        ColContent1: "",
        ColContent2: "",
@@ -739,6 +739,13 @@
    },
    handleRefresh() {
      if (this.$refs.tableData && this.$refs.tableData.clearSelection) {
        this.$refs.tableData.clearSelection();
      }
      this.selectedRow = null;
      this.ids = [];
      this.single = true;
      this.multiple = true;
      this.getList();
    },
@@ -798,7 +805,7 @@
    rowStyle({ row, rowIndex }) {
      if (this.ids.includes(row.hmainid)) {
        return { background: "#ecf5ff" };
        return {  };
      }
    },
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/KCGL/MoveStockBill/Kf_MoveStockBillList.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/KCGL/MoveStockBill/Kf_MoveStockBillEdit.vue'    //编辑页面组件
export default {
  name: 'Kf_MoveStockBillList',
  components: { RowSettings, Edit, PrintList,BarCodeDetail },
  components: { RowSettings, Edit, PrintList,BarCodeDetail,PackStockDetail },
  data() {
    return {
      baseURL: process.env.VUE_APP_BASE_API,                //后端接口前缀(后端服务器ip地址)
@@ -252,6 +258,7 @@
      openRowHide: false,                                   //列设置组件显示标记
      rowHideShow: false,                                   //列设置组件容器显示标记
      barCodeDetailShow: false,                             //条码明细组件容器显示标记
      packStockDetailShow:false,                            //包装容器出入库明细容器显示标记
      
      
      
@@ -834,6 +841,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/KCGL/OtherOutBill/Kf_OtherOutBillEdit.vue
@@ -14,7 +14,7 @@
          <el-row>
            <el-col :span="6">
              <el-form-item label="单据编号" prop="HBillNo">
                <el-input v-model="form.HBillNo" placeholder="请输入单据编号" disabled="true" />
                <el-input v-model="form.HBillNo" placeholder="请输入单据编号" :disabled="true" />
              </el-form-item>
            </el-col>
            <el-col :span="6">
@@ -287,8 +287,8 @@
        </el-table-column>
        <el-table-column align="center" label="发料仓位" width="120">
          <template slot-scope="scope">
            <el-input v-model="scope.row.收料仓位" placeholder="请输入发料仓位" @keyup.native.f7="openDataDialog(2, scope.row)"
              @dblclick.native="openDataDialog(2, scope.row)" />
            <el-input v-model="scope.row.收料仓位" placeholder="请输入发料仓位" @keyup.native.f7="openDataDialog(4, scope.row)"
              @dblclick.native="openDataDialog(4, scope.row)" />
          </template>
        </el-table-column>
        <el-table-column align="center" label="批次" width="120">
@@ -417,6 +417,7 @@
      activeName: 'first',
      zbIndex: null,
      zbSelForm: {},                                                             //子表选中数据,用于子表复制、上移、下移等操作
      zbRow: null,
    };
  },
  created() {
@@ -432,7 +433,7 @@
    getdata() {
      this.formShow = false
      this.formLoading = true
      console.log(this.OperationType,this.copyType)
      if ((this.OperationType == 1 && this.copyType != 1) || (!this.OperationType && !this.copyType)) {
        this.handleAdd()
      } 
@@ -637,7 +638,10 @@
    //#region 打开数据列表弹窗
    openDataDialog(num, row) {
      if (row) {
        this.zbIndex = row.index - 1
        const idx = this.editData.indexOf(row);
        this.zbIndex = idx >= 0 ? idx : null;
        this.zbRow = row;
      }
      this.showReset()
      if (num == 1) {
@@ -677,13 +681,23 @@
        this.openData = false
      } 
      else if (num == 2) {                                                      //收料仓库
        this.editData[this.zbIndex].HWHID = deptRow.HItemID;
        this.editData[this.zbIndex].收料仓库 = deptRow.仓库名称;
        if (this.zbIndex == null || this.zbIndex < 0 || !this.editData[this.zbIndex]) {
          this.$modal.msgError('请选择要编辑的明细行后再选择仓库');
          this.openData = false;
          return;
        }
        this.$set(this.editData[this.zbIndex], 'HWHID', deptRow.HItemID);
        this.$set(this.editData[this.zbIndex], '收料仓库', deptRow.仓库名称);
        this.openData = false
      }
      else if (num == 4) {                                                      //仓位
        this.editData[this.zbIndex].HSPID = deptRow.HItemID;
        this.editData[this.zbIndex].仓位名称 = deptRow.仓位名称;
      else if (num == 4) {
        this.$set(this.editData[this.zbIndex], 'HSPID', deptRow.HItemID);
        this.$set(this.editData[this.zbIndex], '发料仓位', deptRow.仓位名称);                                              //仓位
        // this.editData[this.zbIndex].HSPID = deptRow.HItemID;
        // this.editData[this.zbIndex].仓位名称 = deptRow.仓位名称;
        this.openData = false
      }
      else if (num == 3) {                                                      //物料
@@ -803,8 +817,9 @@
    //#region 子表操作
    //#region 设置子表序号列
    rowSysZbIndex({ row, rowIndex }) {
    rowSysZbIndex( row, rowIndex ) {
      row.index = rowIndex + 1;
      return '';
    },
    //#endregion
@@ -837,13 +852,20 @@
          HCostPrice: 0,
          HCostMoney: 0,
          HSalePrice: 0,
          HSeOrderInterID: 741,
          HSeOrderEntryID: 18,
          HSeOrderBillNo: 'XSFH00000747',
          HSourceInterID: 741,
          HSourceEntryID: 18,
          HSourceBillNo: 'XSFH00000747',
          HSourceBillType: 1402,
          // HSeOrderInterID: 741,
          // HSeOrderEntryID: 18,
          HSeOrderInterID: '',
          HSeOrderEntryID: '',
          //HSeOrderBillNo: 'XSFH00000747',
          HSeOrderBillNo: '',
          // HSourceInterID: 741,
          // HSourceEntryID: 18,
          // HSourceBillNo: 'XSFH00000747',
          HSourceInterID: '',
          HSourceEntryID: '',
          HSourceBillNo: '',
          //HSourceBillType: '1402',
          HSourceBillType: '',
          HRelationQty: 0,
          HRelationMoney: 0,
          HSPID: 0,
@@ -943,7 +965,8 @@
    handleTableZbEdit(selection) {
      this.checkedSysZb = selection.map(item => item.index)
      this.zbSelForm = selection[0]
      this.zbIndex = this.checkedSysZb[0]
      this.zbIndex = selection.length ? this.editData.indexOf(selection[0]) : null
      if (selection.length > 1) {
        const del_row = selection.shift()
        this.$refs.zbTable.toggleRowSelection(del_row, false) //设置这一行取消选中
src/views/KCGL/OtherOutBill/Kf_OtherOutBillList.vue
@@ -374,7 +374,7 @@
      }).catch(error => {
        this.$modal.msgError("接口请求失败!");
      });
      this.queryParams.HOrgID = sessionStorage["OrganizationID"];
      this.queryParams.HOrgID = sessionStorage["Organization"];
    },
    //#endregion
@@ -475,9 +475,9 @@
      if (this.queryParams.HBillNo) {
        this.sWhere += " and 单据号 like '%" + this.queryParams.HBillNo + "%'";
      }
      if (this.queryParams.HOrgID) {
        this.sWhere += " and HOrgID = '" + this.queryParams.HOrgID + "'";
      //this.queryParams.HOrgID
      if (sessionStorage["OrganizationID"] != "0") {
        this.sWhere += " and HOrgID = '" + sessionStorage["OrganizationID"] + "'";
      }
      this.getList()
    },
src/views/ProductInBill/Kf_ProductInBillEdit.vue
@@ -372,7 +372,7 @@
    this.getdata()
  },
  beforeDestroy() {
    this.$destroy()
    // this.$destroy()
  },
  methods: {
    //#region 表单数据初始化
@@ -524,10 +524,10 @@
            )
          }
          if (data.状态 != '创建' && this.copyType != 1) {
            this.$modal.msgError("此条数据不是创建状态,不能修改");
            this.subDisabled = true
          }
          // if (data.状态 != '创建' && this.copyType != 1) {
          //   this.$modal.msgError("此条数据不是创建状态,不能修改");
          //   this.subDisabled = true
          // }
          this.formShow = true
          this.formLoading = false
@@ -606,7 +606,8 @@
        this.form.HManagerName = deptRow.负责人
        this.openData = false
      } 
      else if (num == 2) {                                                      //收料仓库
      else if (num == 2) {
        console.log(deptRow)                                                     //收料仓库
        this.editData[this.zbIndex].HWHID = deptRow.HItemID;
        this.editData[this.zbIndex].收料仓库 = deptRow.仓库名称;
        this.openData = false
@@ -659,9 +660,9 @@
        if (valid) {
          let fhck = false
          this.editData.map((item, index) => {
            if (!item.发货仓库) {
            if (!item.收料仓库) {
              fhck = true
              this.$modal.msgError("第" + (index + 1) + "行:发货仓库未选择!");
              this.$modal.msgError("第" + (index + 1) + "行:收料仓库未选择!");
            }
          })
          this.$nextTick(() => {
@@ -679,7 +680,7 @@
                if (response.data.count == 1) {
                  this.subDisabled = true//设置保存按钮不可用
                  this.$modal.msgSuccess(response.data.Message);
                  this.get_MAXNum_Task(1);//设置流水号增加
                  // this.get_MAXNum_Task(1);//设置流水号增加
                  if (response.data.Verify == "Y") //自动审核
                  {
                    this.set_CheckBill(0, this.form); //审核
@@ -759,7 +760,7 @@
          HMoney: 0,
          HTaxMoney: 0,
          HWHID: 0,
          发货仓库: '',
          收料仓库: '',
          HRemark: '',
          HQty_Full: 0,
          HQty_Empty: 0,
@@ -941,7 +942,8 @@
    //#region 获取最大单据号
    get_MAXNum_Task(Type) {
      var sql = `exec h_p_Xt_GetMaxBillNo_SubType '1202','${this.form.HDate}',0,0,0,'${Type}','${this.form.HDeptID}'`;
      console.log(dayjs(this.form.HDate).format("YYYY-MM-DD"))
      var sql = `exec h_p_Xt_GetMaxBillNo_SubType '1202','${dayjs(this.form.HDate).format("YYYY-MM-DD")}',0,0,0,'${Type}','${this.form.HDeptID}'`;
      axios({
        method: 'get',
        url: this.baseURL + "/CommonModel/searchMethod",
src/views/ProductInBill/Kf_ProductInBillList.vue
@@ -371,11 +371,12 @@
      }).then(response => {
        if (response.data.count == 1) {
          this.organizationList = response.data.data;//组织列表
          this.queryParams.HOrgID = Number(sessionStorage["OrganizationID"]);
        }
      }).catch(error => {
        this.$modal.msgError("接口请求失败!");
      });
      this.queryParams.HOrgID = sessionStorage["OrganizationID"];
    },
    //#endregion
src/views/basic/gyEmployee/gyEmployeeEdit.vue
@@ -1702,8 +1702,6 @@
      window.open(row.url, "_self");
    },
    async uploadDataUpload(row, index) {
      console.log(row.raw instanceof File);
      console.log(row.raw);
      try {
        let blob = await this.fileToBlob(row.raw);
        console.log(blob);
src/views/component/PackStockDetail/index.vue
New file
@@ -0,0 +1,335 @@
<template>
  <div class="barcode-detail">
    <el-dialog
      :visible.sync="dialogVisible"
      title="包装容器出入库记录表"
      width="90%"
      top="5vh"
      :close-on-click-modal="false"
      @closed="handleClosed"
    >
      <el-card>
        <div class="dialog-content">
          <el-form :model="formData" label-width="100px" class="form-container">
            <el-row :gutter="20">
              <el-col :span="8">
                <el-form-item label="单据内码">
                  <el-input v-model="formData.HInterID" disabled />
                </el-form-item>
              </el-col>
              <el-col :span="8">
                <el-form-item label="单据号">
                  <el-input v-model="formData.HBillNo" disabled />
                </el-form-item>
              </el-col>
              <el-col :span="8">
                <el-form-item label="单据类型">
                  <el-input v-model="formData.HBillType" disabled />
                </el-form-item>
              </el-col>
            </el-row>
          </el-form>
          <div class="table-toolbar">
            <el-button size="mini" @click="handleColumnSetting">
              <i class="el-icon-setting"></i> 列设置
            </el-button>
          </div>
          <el-table
            ref="mainTable"
            :data="tableData"
            border
            stripe
            style="width: 100%"
            :loading="loading"
            @selection-change="handleSelectionChange"
            show-summary
            :summary-method="getSummaries"
          >
            <el-table-column type="selection" width="55" fixed="left" />
            <el-table-column
              v-for="column in tableColumns"
              :key="column.field"
              :prop="column.field"
              :label="column.title"
              :width="column.width"
              :align="column.align"
              :fixed="column.fixed"
              :sortable="column.sortable"
              :show-overflow-tooltip="true"
            >
              <template v-if="column.editable" #default="scope">
                <el-input
                  v-model="scope.row[column.field]"
                  size="mini"
                />
              </template>
            </el-table-column>
          </el-table>
        </div>
      </el-card>
    </el-dialog>
    <el-dialog
      :visible.sync="columnDialogVisible"
      title="隐藏列设置"
      width="50%"
    >
      <div class="column-setting">
        <el-checkbox-group v-model="selectedColumns">
          <el-checkbox
            v-for="column in allColumns"
            :key="column.field"
            :label="column.field"
          >
            {{ column.title }}
          </el-checkbox>
        </el-checkbox-group>
      </div>
      <div slot="footer">
        <el-button @click="columnDialogVisible = false">取消</el-button>
        <el-button type="primary" @click="applyColumnSettings">确定</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import axios from 'axios'
export default {
  name: 'BarCodeDetail',
  data() {
    return {
      formData: {                                   //用于查询的参数
        HInterID: '',
        HBillNo: '',
        HBillType: ''
      },
      loading: false,                               //页面加载动画显示标记
      dialogVisible: false,                         //包装容器出入库明细数据显示标记
      columnDialogVisible: false,                   //列设置按钮显示标记
      tableData: [],                                //表格数据
      tableColumns: [],                             //表格列数据
      allColumns: [],
      selectedColumns: [],
      selectedRows: [],
      baseURL: process.env.VUE_APP_BASE_URL || "http://47.96.97.237/API/"
    }
  },
  methods: {
    //#region 页面初始化
    open(record) {
      if (!record) {
        this.$message.warning('请选择要查看条码明细的单据')
        return
      }
      const hmainid = record.hmainid || record.HInterID
      const billNo = record.单据号 || record.HBillNo
      let billTypeDesc = ''
      switch (record.单据类型 || '') {
        case '1201': billTypeDesc = '外购入库单'; break
        case '1202': billTypeDesc = '产品入库单'; break
        case '1203': billTypeDesc = '其它入库单'; break
        case '1204': billTypeDesc = '生产领料'; break
        case '1205': billTypeDesc = '销售出库'; break
        case '1206': billTypeDesc = '其它出库单'; break
        case '1207': billTypeDesc = '直接调拨单'; break
        case '1210': billTypeDesc = '委外加工入库单'; break
        case '1211': billTypeDesc = '委外加工出库单'; break
        default: billTypeDesc = record.单据类型 || ''
      }
      this.formData = {
        HInterID: hmainid,
        HBillNo: billNo,
        HBillType: billTypeDesc
      }
      this.dialogVisible = true
      this.$nextTick(() => {
        this.loadData(hmainid, record.单据类型 || '', billNo)
      })
    },
    //#endregion
    //#region 查询数据
    async loadData(HInterID, HBillType, HBillNo) {
      this.loading = true
      try {
        const sWhere = " and hmainid = " +  `${HInterID}` ;
        const url = `${this.baseURL}/Kf_ICStockInOutBill/Kf_PackStockDetailQuery`
        const params = { sWhere }
        const response = await axios.get(url, { params })
        const data = response.data
        if (data && data.list) {
          this.generateTableColumns(data.list)
          this.tableData = data.data || []
          this.applyColumnSettingsFromStorage()
        } else {
          this.$message.error('获取包装容器出入库明细数据失败')
        }
      } catch (error) {
        console.error('加载包装容器出入库明细失败:', error)
        this.$message.error('加载包装容器出入库明细失败')
      } finally {
        this.loading = false
      }
    },
    //#endregion
    //#region 根据表格列数据进行进一步处理
    generateTableColumns(columnList) {
      const columns = []
      const allColumns = []
      columns.push({
        type: 'selection',
        width: 55,
        fixed: 'left'
      })
      columnList.forEach((item, index) => {
        const colName = item.ColmCols
        let columnConfig = {
          field: colName,
          title: colName,
          width: 200,
          align: 'center',
          sortable: true
        }
        switch (colName) {
          case 'HItemID':
            columnConfig.hide = true
            break
          case '数量':
            columnConfig.total = true
            break
        }
        columns.push(columnConfig)
        allColumns.push({ ...columnConfig })
      })
      this.tableColumns = columns
      this.allColumns = allColumns
      this.selectedColumns = allColumns.map(col => col.field)
    },
    //#endregion
    //#region 获取选中行数据
    handleSelectionChange(selection) {
      this.selectedRows = selection
    },
    //#endregion
    //#region 列设置
    handleColumnSetting() {
      this.columnDialogVisible = true
    },
    applyColumnSettings() {
      this.tableColumns = [
        this.tableColumns[0],
        ...this.allColumns.filter(col => this.selectedColumns.includes(col.field))
      ]
      this.columnDialogVisible = false
      this.saveColumnSettings()
    },
    applyColumnSettingsFromStorage() {
    },
    saveColumnSettings() {
    },
    //#endregion
    //#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 (!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] = ''
        }
      })
      return sums
    },
    //#endregion
    //#region 页面关闭方法
    handleClosed() {
      this.tableData = []
      this.tableColumns = []
      this.selectedRows = []
    }
    //#endregion
  }
}
</script>
<style scoped>
.barcode-detail {
  font-family: "Microsoft YaHei", sans-serif;
}
.form-container {
  margin-bottom: 16px;
}
.table-toolbar {
  margin-bottom: 12px;
}
.column-setting {
  max-height: 400px;
  overflow-y: auto;
}
.column-setting .el-checkbox {
  display: block;
  margin-bottom: 8px;
}
:deep(.el-dialog__body) {
  padding: 10px 20px;
}
:deep(.el-card__body) {
  padding: 12px;
}
</style>
src/views/gyMaterial/GyMaterial.vue
@@ -50,11 +50,11 @@
            placeholder="请输入物料代码"
            style="width: 160px"
          />
          <el-button type="primary" @click="handleResCnz" style="margin-left: 10px">重新同步</el-button>
          <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" @click="handleQuery">搜索</el-button>
          <el-button @click="resetQuery">重置</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>
      <el-form :model="queryParams" ref="filterForm">
@@ -78,7 +78,7 @@
                        placeholder="请选择"
                        style="width: 100%"
                      >
                        <el-option value="0" label=""></el-option>
                        <!-- <el-option value="" label=""></el-option> -->
                        <el-option
                          v-for="(item, index) in visibleColumns"
                          :key="index"
@@ -93,7 +93,7 @@
                        placeholder="请选择"
                        style="width: 100%"
                      >
                        <el-option value="0" label=""></el-option>
                        <!-- <el-option value="0" label=""></el-option> -->
                        <el-option
                          v-for="(item, index) in comparatorList"
                          :key="index"
@@ -120,7 +120,7 @@
                        placeholder="请选择"
                        style="width: 100%"
                      >
                        <el-option value="0" label=""></el-option>
                        <!-- <el-option value="0" label=""></el-option> -->
                        <el-option
                          v-for="(item, index) in visibleColumns"
                          :key="index"
@@ -135,7 +135,7 @@
                        placeholder="请选择"
                        style="width: 100%"
                      >
                        <el-option value="0" label=""></el-option>
                        <!-- <el-option value="0" label=""></el-option> -->
                        <el-option
                          v-for="(item, index) in comparatorList"
                          :key="index"
@@ -162,7 +162,7 @@
                        placeholder="请选择"
                        style="width: 100%"
                      >
                        <el-option value="0" label=""></el-option>
                        <!-- <el-option value="0" label=""></el-option> -->
                        <el-option
                          v-for="(item, index) in visibleColumns"
                          :key="index"
@@ -177,7 +177,7 @@
                        placeholder="请选择"
                        style="width: 100%"
                      >
                        <el-option value="0" label=""></el-option>
                        <!-- <el-option value="0" label=""></el-option> -->
                        <el-option
                          v-for="(item, index) in comparatorList"
                          :key="index"
@@ -208,9 +208,8 @@
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button
          type="warning"
          type="primary"
          plain
          icon="el-icon-upload2"
          size="mini"
          @click="handleImport"
          >导入</el-button
@@ -218,9 +217,8 @@
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="warning"
          type="primary"
          plain
          icon="el-icon-download"
          size="mini"
          @click="handleExport"
          >导出</el-button
@@ -229,8 +227,6 @@
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          icon="el-icon-document"
          size="mini"
          @click="handleNumAdd"
          >流水号新增</el-button
@@ -239,8 +235,6 @@
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
          >新增</el-button
@@ -248,9 +242,6 @@
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="success"
          plain
          icon="el-icon-document-copy"
          size="mini"
          :disabled="single"
          @click="handleCopy"
@@ -259,9 +250,6 @@
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="success"
          plain
          icon="el-icon-edit"
          size="mini"
          :disabled="single"
          @click="handleEdit"
@@ -271,8 +259,6 @@
      <el-col :span="1.5">
        <el-button
          type="danger"
          plain
          icon="el-icon-delete"
          size="mini"
          :disabled="single"
          @click="handleDelete"
@@ -281,9 +267,6 @@
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="success"
          plain
          icon="el-icon-check"
          size="mini"
          :disabled="single"
          @click="handleAudit(0)"
@@ -292,9 +275,6 @@
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="success"
          plain
          icon="el-icon-close"
          size="mini"
          :disabled="single"
          @click="handleAudit(1)"
@@ -303,9 +283,6 @@
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="warning"
          plain
          icon="el-icon-turn-off"
          size="mini"
          :disabled="single"
          @click="handleStop(0)"
@@ -314,9 +291,6 @@
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="warning"
          plain
          icon="el-icon-open"
          size="mini"
          :disabled="single"
          @click="handleStop(1)"
@@ -325,9 +299,6 @@
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="info"
          plain
          icon="el-icon-setting"
          size="mini"
          @click="handleColumnSetting"
          >列设置</el-button
@@ -335,9 +306,6 @@
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="info"
          plain
          icon="el-icon-s-operation"
          size="mini"
          @click="handleButtonSetting"
          >按钮设置</el-button
@@ -346,8 +314,6 @@
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          icon="el-icon-folder-checked"
          size="mini"
          @click="handleSaveScheme"
          >保存方案</el-button
@@ -356,8 +322,6 @@
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          icon="el-icon-folder-opened"
          size="mini"
          @click="handleReadScheme"
          >读取方案</el-button
@@ -365,9 +329,6 @@
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="info"
          plain
          icon="el-icon-refresh"
          size="mini"
          @click="handleRefresh"
          >刷新</el-button
@@ -375,9 +336,6 @@
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="info"
          plain
          icon="el-icon-close"
          size="mini"
          @click="handleExit"
          >退出</el-button
@@ -386,8 +344,6 @@
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          icon="el-icon-edit"
          size="mini"
          @click="handleCorrect"
          >批改</el-button
@@ -396,8 +352,6 @@
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          icon="el-icon-edit"
          size="mini"
          @click="handleCorrect2"
          >批改(方案2)</el-button
@@ -583,8 +537,8 @@
      append-to-body
    >
      <div style="margin-top: -20px">
        <el-button type="primary" @click="handleImportSubmit">导入数据</el-button>
        <el-button type="primary" @click="upload.open = false">退 出</el-button>
        <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"
@@ -595,7 +549,7 @@
          :on-progress="handleFileUploadProgress"
          :on-success="handleFileSuccess"
        >
          <el-button type="primary">文件上传</el-button>
          <el-button type="primary" size="mini">文件上传</el-button>
        </el-upload>
      </div>
      <el-table
@@ -688,12 +642,12 @@
        HModel: null,
        HOrgID: null,
        HProject: null,
        ColName: "0",
        ColName1: "0",
        ColName2: "0",
        Comparator: "0",
        Comparator1: "0",
        Comparator2: "0",
        ColName: "",
        ColName1: "",
        ColName2: "",
        Comparator: "",
        Comparator1: "",
        Comparator2: "",
        ColContent: "",
        ColContent1: "",
        ColContent2: "",
@@ -759,11 +713,13 @@
        .then((response) => {
          let data = response.data.data[0];
          this.user = data.Czymc;
          this.getOrganizations();
          this.queryParams.HOrgID = data.HUSEORGID;
          this.getTreeData();
          this.getProjectOptions();
          this.getList();
          this.getDefaultFilterScheme();
          //this.getDefaultFilterScheme();
        })
        .catch((error) => {
          this.$modal.msgError("接口请求失败!");
@@ -776,9 +732,9 @@
        .then((response) => {
          if (response.data.count == 1) {
            this.organizationOptions = response.data.data;
            if (this.organizationOptions.length > 0) {
              this.queryParams.HOrgID = this.organizationOptions[0].ID;
            }
            // if (this.organizationOptions.length > 0) {
            //   this.queryParams.HOrgID = this.organizationOptions[0].ID;
            // }
          }
        })
        .catch((error) => {
@@ -1174,6 +1130,14 @@
    },
    
    handleRefresh() {
      // 刷新时清除表格选择并重置相关状态,保证复制/编辑/删除/审核等按钮被禁用
      if (this.$refs.tableData && this.$refs.tableData.clearSelection) {
        this.$refs.tableData.clearSelection();
      }
      this.selectedRow = null;
      this.ids = [];
      this.single = true;
      this.multiple = true;
      this.getList();
    },
    
@@ -1270,7 +1234,8 @@
    // 行样式
    rowStyle({ row, rowIndex }) {
      if (this.ids.includes(row.hmainid)) {
        return { background: "#ecf5ff" };
        return {  };
        // background: "#ecf5ff"
      }
    },
    
src/views/purchase/cgPoInStockBill/cgPoInStockBill.vue
@@ -1388,6 +1388,7 @@
    },
    /** 删除按钮操作 */
    handleDelete() {
      console.log("this.rowForm", this.rowForm)
      this.$modal
        .confirm("确认要删除吗,删除后不能恢复")
        .then(() => {
@@ -1395,20 +1396,21 @@
            axios
              .get(this.baseURL + "Cg_POInStockBill/DeltetPOInStockBill", {
                params: {
                  HInter: this.rowForm.hmainid.toString(),
                  HsupId: this.rowForm.HsupId,
                  HQty: this.rowForm.HQty,
                  HSourceInterID: this.rowForm.HSourceInterID,
                  HSourceEntryID: this.rowForm.HSourceEntryID,
                  HInterID: this.rowForm.hmainid.toString(),
                  HsupId: this.rowForm.HSupID,
                  HQty: this.rowForm['数量'],
                  HSourceInterID: this.rowForm['源单主内码'],
                  HSourceEntryID: this.rowForm['源单子内码'],
                  user: sessionStorage["HUserName"],
                },
              })
              .then((res) => {
                if (res.data.count == 1) {
                  this.handleQuery();
                  this.$modal.msgSuccess("删除成功");
                } else {
                  this.$modal.msgError("错误:" + result.code + result.Message);
                  this.$modal.msgError("错误:" + res.data.code + res.data.Message);
                }
              })
              .catch((error) => {
src/views/purchase/cgPoOrderBill/cgPoOrderBill.vue
@@ -62,8 +62,8 @@
            <el-option
              v-for="(item, index) in organizationList"
              :key="index"
              :label="item.label"
              :value="item.value"
              :label="item.Name"
              :value="item.ID"
            >
            </el-option>
          </el-select>
src/views/sell/Kf_ICStockBillMainList/Kf_ICStockBillMainList.vue
@@ -9,15 +9,27 @@
      class="searchBox"
    >
      <el-row>
        <el-form-item label="日期" style="margin-left: 100px">
        <el-form-item label="开始日期" style="margin-left: 100px">
          <el-date-picker
            v-model="dateRange"
            v-model="queryParams.HBeginDate"
            type="date"
            value-format="yyyy-MM-dd"
            type="daterange"
            range-separator="-"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
          ></el-date-picker>
            format="yyyy-MM-dd"
            placeholder="开始日期"
            style="width:160px"
            :disabled="disableDataPicker"
          />
        </el-form-item>
        <el-form-item label="结束日期">
          <el-date-picker
            v-model="queryParams.HEndDate"
            type="date"
            value-format="yyyy-MM-dd"
            format="yyyy-MM-dd"
            placeholder="结束日期"
            style="width:160px"
            :disabled="disableDataPicker"
          />
        </el-form-item>
        <el-form-item label="日期间隔">
          <el-select
@@ -696,8 +708,8 @@
        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"),
        HBeginDate: dayjs(new Date()).subtract(29, "d").format("YYYY-MM-DD"),
        HEndDate: dayjs(new Date()).format("YYYY-MM-DD"),
      },
      // 显示搜索条件
      showSearch: true,
@@ -854,15 +866,11 @@
      const start = dayjs(new Date())
        .subtract(this.queryParams.HInitTimeCycle, "d")
        .format("YYYY-MM-DD");
      // 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 = start;
      this.eTime = end;
      this.queryParams.HBeginDate = start;
      this.queryParams.HEndDate = end;
      this.dateRange = [this.sTime, this.eTime];
    },
    organizationChange(val) {
@@ -917,11 +925,11 @@
      // this.sWhere += ` and CONVERT(varchar(100),日期, 23) >= '2020-01-01' and CONVERT(varchar(100),日期, 23) <= '2030-01-01'`;
      // 收料通知单列表
      if (this.dateRange.length > 0) {
      if (this.queryParams.HBeginDate && this.queryParams.HEndDate) {
        this.sWhere +=
          " and CONVERT(varchar(100),日期, 23) >= '" + this.dateRange[0] + "'";
          " and CONVERT(varchar(100),日期, 23) >= '" + this.queryParams.HBeginDate + "'";
        this.sWhere +=
          " and CONVERT(varchar(100),日期, 23) <= '" + this.dateRange[1] + "'";
          " and CONVERT(varchar(100),日期, 23) <= '" + this.queryParams.HEndDate + "'";
      }
      try {
@@ -1178,7 +1186,7 @@
    //选中行高亮样式
    rowStyle({ row, rowIndex }) {
      if (this.ids.includes(row.HItemID)) {
        return { background: "#ecf5ff" };
        return { };
      }
    },
    //双击行
src/views/sell/XsSeOutStockBill.vue
@@ -300,6 +300,7 @@
          >复制</el-button
        >
      </el-col>
      -->
      <el-col :span="1.5">
        <el-button
          type="primary"
@@ -310,6 +311,7 @@
          >删除
        </el-button>
      </el-col>
      <!--
      <el-col :span="1.5">
        <el-button
          type="primary"
src/views/system/user/Xt_UserGroupEdit.vue
@@ -6,7 +6,7 @@
      <!-- <el-button @click="cancel">取 消</el-button> -->
    </div>
    <div style="margin: 10px; font-size: 28px; font-weight: bold; text-align: center;">新增/编辑用户信息</div>
    <el-form ref="form" :model="form" :rules="rules" label-width="128px">
    <el-form ref="form" :model="form"  label-width="128px">
      <el-tabs v-model="activeName" type="card">
        <el-tab-pane label="基本信息" name="first">
          <el-row>
@@ -74,7 +74,7 @@
  components: {},
  props: {
    OperationType: { type: Number, },
    linterid: {},
    linterid: {type: Number},
  },
  data() {
    return {
@@ -97,20 +97,25 @@
    };
  },
  created() {
    this.getdata()
  },
  methods: {
    //#region 页面初始化
    getdata() {
      this.formShow = false
      this.formLoading = true
      this.getUserGroup()
      if ((this.OperationType == 1 && this.copyType != 1) || (!this.OperationType && !this.copyType)) {
        this.handleAdd()
      } else if (this.OperationType == 3 || this.copyType == 1) {
        this.$nextTick(() => {
          this.handleUpdate()
        })
      try {
        this.formShow = false
        this.formLoading = true
        this.getUserGroup()
        if ((this.OperationType == 1 && this.copyType != 1) || (!this.OperationType && !this.copyType)) {
          this.handleAdd()
        } else if (this.OperationType == 3 || this.copyType == 1) {
          this.$nextTick(() => {
            this.handleUpdate()
          })
        }
      } catch (err) {
        console.error('Error ', err)
      }
    },
@@ -179,12 +184,20 @@
    handleUpdate() {
      this.reset()
      let rowHmainid = this.linterid
      axios.get(this.baseURL + "/Xt_User/EditUser", {
        params: { 'HID': rowHmainid }
      let sWhere = " and HGroupID=" + rowHmainid ;
      console.log("编辑用户ID",rowHmainid)
      ///Xt_User/EditUser
      axios.get(this.baseURL + "Xt_UserGroup/list", {
        params: { 'sWhere': sWhere }
      }).then(response => {
        if (response.data.code == 1) {
          var result = response.data
          var data = result.data.h_v_IF_UserList_Edit[0]
          // var data = result.data.h_v_IF_UserList_Edit[0]
          var data = result.data[0]
          console.log("编辑用户信息",data)
          this.form.HLev = data.级别
          this.form.HGroupName = data.角色
          this.form.HUSEORGID = sessionStorage["Organization"]
          this.form.Czybm = data.用户编码
          this.form.Czymc = data.用户名称
          this.form.Czmm = data.密码
@@ -216,7 +229,7 @@
          this.form.HCusID = data.HCusID
          this.form.HCusName = data.客户
          this.form.HGroupID = data.HGroupID
          this.form.HGroupName = data.班组
          // this.form.HGroupName = data.班组
          this.form.HSourceID = data.HSourceID
          this.form.HSourceName = data.生产资源
          this.form.HCheckEmpID = data.HCheckEmpID
@@ -238,16 +251,22 @@
    //#endregion
    
    //#region 获取子表数据
    getUserGroup() {
    async getUserGroup() {
      //角色列表
      axios.get(this.baseURL + '/Xt_UserGroup/list', {
      axios.get(this.baseURL + '/Xt_User/list', {
        params: {
          sWhere: '',
          user: sessionStorage["HUserName"],
        },
      }).then(response => {
        let data1 = response.data
        if (data1.code == 1) {
          console.log(data1)
          this.editData = data1.data
          this.form.Czybm = data1.data.用户编码
          console.log("zhiwei",this.editData)
          console.log("用户",this.form.Czybm)
          //this.get_DisplayUserGroupInfoList()
        }
      }).catch(error => {
        this.$modal.msgError("接口请求失败!");
@@ -256,14 +275,15 @@
    //#endregion
    
    get_DisplayUserGroupInfoList() {
      var sWhere = "and UserId='" + this.linterid + "'";
    async get_DisplayUserGroupInfoList() {
      var sWhere = "and GroupId='" + this.linterid + "'";
      axios.get(this.baseURL + '/Xt_UserGroup/UserGroupInfoList', {
        params: {
          sWhere: sWhere,
        },
      }).then(response => {
        let data1 = response.data
        console.log(data1)
        if (data1.count == 1) {
          if (data1.data.length > 0)
            if (this.editData.length > 0) {
src/views/system/user/Xt_UserGroupList.vue
@@ -148,11 +148,11 @@
      </el-dialog>
      <!-- 编辑 -->
      <el-dialog title="编辑" :visible.sync="openEdit" width="1480px" append-to-body class="xsckdBox" @close="close">
        <edit :OperationType=OperationType :linterid="this.rowForm.hmainid" @editClose="editClose" v-if="editShow" />
        <edit :OperationType="OperationType" :linterid="this.rowForm.HGroupID" @editClose="editClose" v-if="editShow" />
      </el-dialog>
      <!-- 权限 -->
      <el-dialog title="角色权限" :visible.sync="openQuery" width="1480px" append-to-body class="xsckdBox">
        <Query HSouceBillType="js" @editQueryClose="editQueryClose" :linterid=this.rowForm.HGroupID v-if="queryShow" />
        <Query HSouceBillType="js" @editQueryClose="editQueryClose" :linterid="this.rowForm.HGroupID" v-if="queryShow" />
      </el-dialog>
    </div>
  </div>
@@ -282,7 +282,7 @@
    //#region 选中行高亮样式
    rowStyle({ row, rowIndex }) {
      if (this.ids.includes(row.hmainid)) {
        return { "background": "#ecf5ff" }
        return {  }
      }
    },
    //#endregion
@@ -290,7 +290,7 @@
    //#region 双击行
    handleDblclick(row, column, cell, event) {
      this.OperationType = 3
      this.handleEdit()
      this.handleEdit(row)
    },
    //#endregion
@@ -519,7 +519,9 @@
    //#region 新增
    handleAddEdit() {
      this.rowForm.hmainid = 0
      this.OperationType = 1
      this.rowForm.HGroupID = 0
      console.log(' OperationType=', this.OperationType, 'rowForm.HGroupID=', this.rowForm.HGroupID)
      this.editShow = true
      this.openEdit = true
    },
@@ -528,6 +530,7 @@
    //#region 编辑
    handleEdit(row) {
      this.rowForm = row
      console.log('OperationType=', this.OperationType, 'rowForm=', this.rowForm)
      this.editShow = true
      this.openEdit = true
    },
src/views/warehouse/barcodeMaster/Gy_BarCodeBill.vue
@@ -9,7 +9,7 @@
            <el-button type="primary" @click="ToolBatch">批次</el-button>
            <el-button type="primary" @click="close">退 出</el-button>
        </div>
        <div style="margin: 10px; font-size: 28px; font-weight: bold; text-align: center;">器具档案编辑</div>
        <div style="margin: 10px; font-size: 28px; font-weight: bold; text-align: center;">条码生成</div>
        <el-form ref="form" :model="form" :rules="rules" label-width="80px">
            <el-row>
                <el-col :span="6">
src/views/warehouse/shipment/Kf_StockOutRequestBill.vue
@@ -693,6 +693,8 @@
                    this.form.HLinkPhone = data.联系电话
                    this.form.HInnerBillNo = data.辅助字段
                    this.form.HRemark = data.表头备注
                    this.form.HWHName = data['仓库']
                    this.form.HWHID = data['HWHID']
                    for (var i = 0; i < result.data.length; i++) {
                        this.editData.push(
                            {
@@ -712,7 +714,10 @@
                                "HlineTotalBB": (result.data[i].金额 + result.data[i].税额) * result.data[i].汇率, "HTaxPrice": result.data[i].含税单价,
                                "HDiscountRate": result.data[i].折扣率,
                                "HRelTaxPrice": data.实际含税单价,
                                "HDate": moment(result.data[i].交货日期).format('YYYY-MM-DD')
                                "仓库":  data.仓库,
                                "HDate": moment(result.data[i].交货日期).format('YYYY-MM-DD'),
                                "HQtyMust": data.实收数量,
                                "HQty": data.应收数量
                            }
                        );
                    }
src/views/warehouse/shipment/Kf_StockOutRequestBillList.vue
@@ -365,6 +365,7 @@
            this.eTime = yyyyE + "-" + mmE + "-" + ddE;
        },
        getList() {
            this.sWhere = ''
            this.pageSize = 50;
            this.tableShow = false;
            this.loading = true;