wangyi
8 天以前 4c95db27781ddc69c00e13cd7bd8e93aa1269548
增加了 货币和计量单位的基础资料
5个文件已添加
2个文件已修改
4604 ■■■■■ 已修改文件
src/router/index.js 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/permission.js 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basic/gyCurrency/gyCurrency.vue 1686 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basic/gyCurrency/gyCurrencyEdit.vue 336 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basic/gyUnit/gyUnit.vue 1560 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basic/gyUnit/gyUnitEdit.vue 625 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basic/gyUnit/gyUnitGroup.vue 289 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js
@@ -1565,6 +1565,54 @@
  //#endregion
  //#endregion
//#region 财务结算基础资料
//#region 货币列表
 {
    //src\views\basic\gyItemMoney\gyItemMoney.vue
    path: "/basic/gy/gyCurrency",
    component: Layout,
    hidden: true,
    redirect: "noredirect",
    meta: {
      breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示
      activeMenu: "/basic/gy", // 当路由设置了该属性,则会高亮相对应的侧边栏。
    },
    children: [
      {
        path: "/basic/gy/gyCurrency",
        component: () => import("@/views/basic/gyCurrency/gyCurrency.vue"),
        name: "GyCurrency",
        meta: { title: "货币列表", activeMenu: "basic/gy" },
      },
    ],
  },
//#endregion
//#endregion
//#region 单位基础资料
//#region 计量单位列表
 {
    //src\views\basic\gyUnit\gyUnit.vue
    path: "/basic/gy/gyUnit",
    component: Layout,
    hidden: true,
    redirect: "noredirect",
    meta: {
      breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示
      activeMenu: "/basic/gy", // 当路由设置了该属性,则会高亮相对应的侧边栏。
    },
    children: [
      {
        path: "/basic/gy/gyUnit",
        component: () => import("@/views/basic/gyUnit/gyUnit.vue"),
        name: "GyCurrency",
        meta: { title: "计量单位列表", activeMenu: "basic/gy" },
      },
    ],
  },
//#endregion
//#endregion
  //#region 辅助属性基础资料
  {
    //src\views\basic\gyItemMoney\gyItemMoney.vue
@@ -1671,6 +1719,39 @@
        meta: { title: "仓库列表", noCache: true, noLoading: true },
      },
      {
        path: "GyCurrency",
        component: () => import("@/views/basic/gyCurrency/gyCurrency"), // 货币列表
        name: "IframeGyCurrency",
        meta: { title: "货币列表", noCache: true, noLoading: true },
      },
      {
        path: "GyCurrencyEdit",
        component: () => import("@/views/basic/gyCurrency/gyCurrencyEdit"), // 货币编辑
        name: "IframeGyCurrencyEdit",
        meta: { title: "货币列表", noCache: true, noLoading: true },
      },
       {
        path: "GyUnit",
        component: () => import("@/views/basic/gyUnit/gyUnit"),
        name: "IframeGyUnit",
        meta: { title: "计量单位列表", noCache: true, noLoading: true },
      },
      {
        path: "GyUnitEdit",
        component: () => import("@/views/basic/gyUnit/gyUnitEdit"), // 计量单位编辑
        name: "IframeGyUnitEdit",
        meta: { title: "计量单位编辑", noCache: true, noLoading: true },
      },
      {
        path: "GyUnitGroup",
        component: () => import("@/views/basic/gyUnit/gyUnitGroup"), // 计量单位组列表
        name: "IframeGyUnitGroup",
        meta: { title: "计量单位组列表", noCache: true, noLoading: true },
      },
      {
        path: "GySupplier",
        component: () => import("@/views/basic/gy/gySupplier"), // 供应商
        name: "IframeGySupplier",
@@ -1694,6 +1775,7 @@
        name: "IframeGyCarEdit",
        meta: { title: "车辆编辑", noCache: true, noLoading: true },
      },
      {
        path: "GyProperty",
        component: () => import("@/views/basic/gyProperty/gyPropertyList"), // 辅助属性
src/store/modules/permission.js
@@ -636,6 +636,32 @@
                      icon: "build",
                      link: null,
                      noCache: false,
                      title: "货币列表",
                    },
                    component: () => import("@/views/basic/gyCurrency/gyCurrency.vue"),
                    hidden: false,
                    name: "GyCurrency",
                    path: "gyCurrency",
                  },
                  {
                    meta: {
                      icon: "build",
                      link: null,
                      noCache: false,
                      title: "计量单位列表",
                    },
                    component: () => import("@/views/basic/gyUnit/gyUnit.vue"),
                    hidden: false,
                    name: "GyUnit",
                    path: "gyUnit",
                  },
                  {
                    meta: {
                      icon: "build",
                      link: null,
                      noCache: false,
                      title: "供应商列表",
                    },
                    component: () => import("@/views/basic/gy/gySupplier.vue"),
src/views/basic/gyCurrency/gyCurrency.vue
New file
@@ -0,0 +1,1686 @@
<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="HNumber">
          <el-input
            v-model="queryParams.HNumber"
            placeholder="请输入货币代码"
            @keyup.enter.native="handleQuery"
          />
        </el-form-item>
        <el-form-item label="货币名称" prop="HName">
          <el-input
            v-model="queryParams.HName"
            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.toString()"
            >
            </el-option>
          </el-select>
        </el-form-item> -->
      </el-row>
      <el-collapse v-model="activeSeach">
        <el-collapse-item title="更多" name="1">
          <el-card class="box-card">
            <div slot="header" class="clearfix"><span>过滤</span></div>
            <div>
              <el-row>
                <el-form-item label-width="0">
                  <el-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-item label-width="78px">
        <el-button type="primary" size="small" icon="el-icon-search" @click="handleQuery">
          搜 索</el-button
        >
        <el-button icon="el-icon-circle-close" size="small" @click="searchOpen = false"
          >取 消</el-button
        >
      </el-form-item>
    </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))"
          >编辑</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-edit"
          size="mini"
          :disabled="single"
          @click="set_Stop(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_Stop(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="primary" 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.stop="handleEdit(row, (OperationType = 3))"
                  v-else-if="column.property == '货币代码'"
                  >{{ row.货币代码 }}</el-button
                >
                <span v-else>{{ row[column.label] }}</span>
              </div>
            </template>
          </el-table-column>
        </template>
      </el-table>
      <pagination
        v-show="total > 0"
        :total="total"
        :page.sync="page"
        :limit.sync="pageSize"
        :pageSizes="pageSizes"
        @pagination="handleQuery"
      />
      <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="编辑车辆"
        :visible.sync="openEdit"
        width="1480px"
        append-to-body
        class="xsckdBox"
        :before-close="close"
      >
        <!-- <edit
          :OperationType="OperationType"
          :linterid="this.rowForm.hmainid"
          :HSouceBillType="this.rowForm.HSourceBillType"
          :HOrgID="this.queryParams.HOrgID"
          :copyType="copyType"
          @editCloseGy="editGyClose"
          v-if="editShow"
        /> -->
        <div style="height: 80vh" v-if="openEdit">
          <iframe :src="iframeUrl" frameborder="0" width="100%" height="100%"></iframe>
        </div>
      </el-dialog>
      <el-dialog
        :title="upload.title"
        :visible.sync="upload.open"
        width="1500px"
        append-to-body
        v-if="false"
      >
        <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 dayjs from "dayjs";
export default {
  name: "gyCarList",
  components: { RowSettings },
  props: {
    openPage: { type: String },
  },
  data() {
    return {
      iframeUrl: "",
      activeSeach: "",
      HModName: "gyCarList",
      editShow: false,
      openEdit: false,
      totalNameList: [],
      dateRange: [],
      tableShow: true,
      openPrintList: false,
      printListShow: false,
      HClassTag: "ForFilteringSchemes", //过滤条件的class类
      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, //数据弹窗
      dialogTitle: "",
      zuzhiId: "",
      organizationList: JSON.parse(sessionStorage["organizationList"]), //组织列表
      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: sessionStorage["OrganizationID"],
        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: {},
      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() {
    window.editGyClose = () => {
      this.editGyClose(); // 组件内的方法绑定到windows
    };
    this.queryParams.HOrgID = sessionStorage["OrganizationID"];
  },
  beforeDestroy() {
    // 组件销毁时清理全局方法,避免内存泄漏
    delete window.editGyClose;
  },
  created() {
    this.riqiChange();
    this.handleQuery();
  },
  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.handleQuery();
    },
    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;
      this.dateRange = [this.sTime, this.eTime];
    },
    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;
      }
      try {
        let res = await axios.get(this.baseURL + "/Gy_Currency/list1", {
          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; // 记录当前选中的行
      if (this.checkIsIframe()) {
        // 将当前选中的数据暴露到window中
        window.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" };
      }
    },
    checkIsIframe() {
      if (window.self == window.top) {
        return false;
      }
      return true;
    },
    //双击行
    handleDblclick(row, column, cell, event) {
      if (this.checkIsIframe()) {
        window.parent.iframeCarCallBack(row);
        return;
      }
      this.OperationType = 3;
      this.handleEdit(row, this.OperationType);
    },
    // 多选框选中数据
    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.HNumber) {
        this.sWhere += " and 货币代码 like '%" + this.queryParams.HNumber + "%'";
      }
      if (this.queryParams.HName) {
        this.sWhere += " and 货币名称 like '%" + this.queryParams.HName + "%'";
      }
      // if (this.queryParams.HBeginDate && this.queryParams.HEndDate) {
      //   this.sWhere += `  and CONVERT(varchar(100),日期, 23) >= '${this.queryParams.HBeginDate}' and CONVERT(varchar(100),日期, 23) <= '${this.queryParams.HEndDate}'`;
      // }
      this.sWhere += this.addSWhereByOpenType();
      // this.sWhere += this.getOrgIDByUser();
      this.searchOpen = false;
      this.getList();
    },
    // 判断是直接打开页面还是其它页面通过选择按钮打开,并显示相应数据
    addSWhereByOpenType() {
      //获取参数
      var sWhere = "";
      //this.openPage判断是否有值,有代表其它页面通过选择按钮打开
      if (this.openPage || window.parent != window.self) {
        sWhere += " and 禁用标志 != '1' 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.handleQuery();
    },
    //打开新增组件弹窗
    handleAddEdit() {
      // this.rowForm.HItemID = 0;
      this.iframeUrl = `/iframe/gyCurrencyEdit?HInterID=0&OperationType=1`;
      this.$nextTick(() => {
        this.openEdit = true;
        this.editShow = true;
      });
    },
    //打开修改组件弹窗
    handleEdit(row, OperationType) {
      this.iframeUrl = `/iframe/gyCurrencyEdit?HInterID=${row.HItemID}&OperationType=${OperationType}`;
      this.$nextTick(() => {
        this.openEdit = true;
        this.editShow = true;
      });
    },
    //关闭编辑页面
    editGyClose(val) {
      this.editShow = false;
      this.openEdit = false;
      (this.multiple = true), this.handleQuery();
    },
    /** 删除按钮操作 */
    handleDelete() {
      this.$modal
        .confirm("确认要删除吗,删除后不能恢复")
        .then(() => {
          if (!this.rowForm.审核人) {
            axios
              .get(this.baseURL + "DeltetGy_Currency", {
                params: {
                  HInterID: 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 + "Gy_Currency/AuditGy_Currency", {
          params: {
            HInterID: InterID,
            IsAudit: num,
            CurUserName: sessionStorage["HUserName"],
          },
        })
        .then((res) => {
          let result = res.data;
          if (result.code == 1) {
            this.$modal.msgSuccess("操作成功");
            this.handleQuery();
          } else {
            this.$modal.msgError("错误:" + result.code + result.Message);
          }
        })
        .catch((error) => {
          this.$modal.msgError("接口请求失败!");
        });
    },
     // 禁用/反禁用数据
    async set_Stop(num, form) {
      let HInterID = form.HItemID || form.HInterID || form.hmainid;
      try {
        let res = await axios
        .get(
          this.baseURL + "/Gy_Currency/StopGy_Currency",
          {
            params: {
              HInterID: HInterID,
              IsStop: 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}`);
      }
    },
    // // 关闭/反关闭数据
    // async set_CloseBill(num, form) {
    //   let HInterID = form.HItemID || form.HInterID || form.hmainid;
    //   try {
    //     let res = await axios.get(
    //       `${this.baseURL}/Cg_POInStockBill/CloseCg_POInStockBill`,
    //       {
    //         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}`);
    //   }
    // },
    // // 作废/反作废数据
    // async set_DropBill(num, form) {
    //   let HInterID = form.HItemID || form.HInterID || form.hmainid;
    //   try {
    //     let res = await axios.get(
    //       `${this.baseURL}/Cg_POInStockBill/DropCg_POInStockBill`,
    //       {
    //         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}`);
    //   }
    // },
    // 反禁用/禁用数据
    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.handleQuery();
          } 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.handleQuery();
        })
        .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/basic/gyCurrency/gyCurrencyEdit.vue
New file
@@ -0,0 +1,336 @@
<template>
  <div v-loading="formLoading" v-if="formShow">
    <div style="margin-bottom: 10px; border-bottom: 1px solid #f6f6f6">
      <el-button type="primary" @click="submitForm" :disabled="subDisabled"
        >保 存</el-button
      >
      <el-button type="primary" @click="close">退 出</el-button>
    </div>
    <el-form ref="form" :model="form" :rules="rules" label-width="110px">
      <el-tabs v-model="activeName" type="card">
        <el-tab-pane label="基本信息" name="first">
          <el-row>
            <el-col :span="8">
              <el-form-item label="代码:" prop="HNumber">
                <el-input
                  v-model="form.HNumber"
                  placeholder="请输入货币代码"
                  :disabled="isEditMode"
                />
                <el-input v-model="form.HItemID" type="hidden" />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="名称:" prop="HName">
                <el-input
                  v-model="form.HName"
                  placeholder="请输入货币名称"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="助记码:">
                <el-input
                  v-model="form.HHelpCode"
                  placeholder="请输入助记码"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="8">
              <el-form-item label="小数位:">
                <el-input
                  v-model="form.HScale"
                  type="number"
                  placeholder="请输入小数位"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="汇率:">
                <el-input
                  v-model="form.HExchangeRate"
                  type="number"
                  placeholder="请输入汇率"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="禁用标志:">
                <el-checkbox v-model="form.HStopflag" disabled>禁用</el-checkbox>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="24">
              <el-form-item label="备注:">
                <el-input
                  v-model="form.HRemark"
                  type="textarea"
                  placeholder="请输入备注"
                  :rows="3"
                />
              </el-form-item>
            </el-col>
          </el-row>
        </el-tab-pane>
      </el-tabs>
    </el-form>
  </div>
</template>
<script>
import axios from "axios";
import dayjs from "dayjs";
export default {
  name: "GyCurrencyEdit",
  components: {},
  props: {
    OperationType: { type: Number }, // 1:新增, 3:编辑, 2:复制
    linterid: { type: Number }, // 编辑时的ID
    HOrgID: { type: Number }, // 组织ID
  },
  data() {
    return {
      formShow: false,
      formLoading: true,
      subDisabled: false,
      isEditMode: false,
      activeName: "first",
      isIframe: false,
      // 表单参数
      form: {
        HItemID: 0,
        HNumber: "",
        HName: "",
        HHelpCode: "",
        HScale: "2",
        HExchangeRate: "1",
        HStopflag: false,
        HRemark: "",
        HUserName: "",
      },
      // 表单校验
      rules: {
        HNumber: [{ required: true, message: "货币代码不能为空", trigger: "blur" }],
        HName: [{ required: true, message: "货币名称不能为空", trigger: "blur" }],
      },
      baseURL: process.env.VUE_APP_BASE_API || "http://47.96.97.237/API/",
      user: "admin",
    };
  },
  created() {
    this.reset();
    this.fetchData();
    this.checkIframe();
  },
  mounted() {
    this.user = sessionStorage["HUserName"] || "admin";
  },
  methods: {
    // 检查是否在iframe中
    checkIframe() {
      this.isIframe = window.self !== window.top;
    },
    fetchData() {
      // 从URL获取参数
      const urlParams = this.getUrlParams();
      const hID = urlParams.HInterID ? parseInt(urlParams.HInterID) : 0;
      const opType = urlParams.OperationType ? parseInt(urlParams.OperationType) : 1;
      // 如果props没有传递,使用URL参数
      const operationType = this.OperationType || opType;
      const linterid = this.linterid || hID;
      if (operationType !== 1 && linterid) {
        // 编辑或复制模式
        this.getDetailData(linterid, operationType);
      } else {
        // 新增模式
        this.formShow = true;
        this.formLoading = false;
        this.form.HItemID = 0;
        this.isEditMode = false;
      }
    },
    // 从URL获取参数
    getUrlParams() {
      const params = {};
      const queryString = window.location.search.substring(1);
      const pairs = queryString.split('&');
      for (let i = 0; i < pairs.length; i++) {
        const pair = pairs[i].split('=');
        if (pair.length === 2) {
          params[pair[0]] = decodeURIComponent(pair[1]);
        }
      }
      return params;
    },
    getDetailData(hID, operationType) {
      this.formLoading = true;
      axios
        .get(this.baseURL + "/GetGy_CurrencyDetail", {
          params: {
            HID: hID,
          },
        })
        .then((response) => {
          let result = response.data;
          if (result.code == 1) {
            var data = result.data.h_v_Edit_Gy_CurrencyList[0];
            console.log("返回的数据:", data);
            this.form = {
              HItemID: operationType == 2 ? 0 : data.HItemID, // 复制时ID设为0
              HNumber: data.货币代码,
              HName: data.货币名称,
              HHelpCode: data.助记代码,
              HScale: data.小数位 || "2",
              HExchangeRate: data.汇率 || "1",
              HStopflag: data.禁用标记 === "true",
              HRemark: data.备注 || "",
              HUserName: this.user,
            };
            this.isEditMode = operationType === 3;
          } else {
            this.$modal.msgError(result.msg || "获取数据失败");
          }
        })
        .catch((error) => {
          this.$modal.msgError("接口请求失败!");
        })
        .finally(() => {
          this.formShow = true;
          this.formLoading = false;
        });
    },
    // 重置表单
    reset() {
      this.form = {
        HItemID: 0,
        HNumber: "",
        HName: "",
        HHelpCode: "",
        HScale: "2",
        HExchangeRate: "1",
        HStopflag: false,
        HRemark: "",
        HUserName: this.user,
      };
      this.subDisabled = false;
    },
    // 退出
    close() {
      if (this.isIframe) {
        // 在iframe中,通知父窗口关闭或返回
        if (window.parent.editGyClose) {
          window.parent.editGyClose();
        } else {
          // 尝试关闭iframe
          try {
            const index = parent.layer && parent.layer.getFrameIndex ? parent.layer.getFrameIndex(window.name) : null;
            if (index !== null && index !== undefined) {
              parent.layer.close(index);
            } else {
              // 如果没有layer,使用其他方式
              window.parent.postMessage({ action: 'closeIframe' }, '*');
            }
          } catch (e) {
            console.log("关闭iframe失败:", e);
            this.$router.back();
          }
        }
      } else {
        // 不在iframe中,使用路由返回或跳转
        if (this.$route) {
          this.$router.back();
        } else if (this.OperationType === 1) {
          // 新增模式,返回首页
          window.location.href = "/index.html";
        } else {
          window.history.back();
        }
      }
    },
    // 提交保存
 // 提交保存
    submitForm() {
        this.$refs["form"].validate((valid) => {
            if (valid) {
            this.subDisabled = true;
            // 准备数据
            const formData = {
                ...this.form,
                HStopflag: this.form.HStopflag ? "true" : "false",
                HUserName: this.user,
            };
            const sMainStr = JSON.stringify(formData);
            // 直接发送JSON数据,不要使用FormData
            const requestData = {
                msg: sMainStr + ';' + this.user,
            };
            axios({
                method: "POST",
                url: this.baseURL + "/SaveGy_CurrencyList",
                data: requestData,  // 直接发送JSON对象
                headers: {
                'Content-Type': 'application/json',  // 使用JSON格式
                },
            })
                .then((response) => {
                if (response.data.count == 1) {
                    this.$modal.msgSuccess(response.data.Message || "保存成功");
                    this.subDisabled = true;
                    // 保存成功后,如果是新增模式,可以继续添加,或者提示用户
                } else {
                    this.$modal.msgError(response.data.Message || "保存失败");
                    this.subDisabled = false;
                }
                })
                .catch((error) => {
                this.$modal.msgError("保存失败: " + (error.message || "未知错误"));
                this.subDisabled = false;
                });
            }
        });
    }
  },
};
</script>
<style scoped>
.el-form-item {
  margin-bottom: 22px;
}
.el-row {
  margin-bottom: 10px;
}
.hidden-input {
  display: none;
}
</style>
src/views/basic/gyUnit/gyUnit.vue
New file
@@ -0,0 +1,1560 @@
<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="HName">
          <el-input
            v-model="queryParams.HName"
            placeholder="计量单位代码"
            @keyup.enter.native="handleQuery"
          />
        </el-form-item>
        <el-form-item label="计量单位名称" prop="HNumber">
          <el-input
            v-model="queryParams.HNumber"
            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.toString()"
            >
            </el-option>
          </el-select>
        </el-form-item>
      </el-row>
      <el-collapse v-model="activeSeach">
        <el-collapse-item title="更多" name="1">
          <el-card class="box-card">
            <div slot="header" class="clearfix"><span>过滤</span></div>
            <div>
              <el-row>
                <el-form-item label-width="0">
                  <el-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-item label-width="78px">
        <el-button type="primary" size="small" icon="el-icon-search" @click="handleQuery">
          搜 索</el-button
        >
        <el-button icon="el-icon-circle-close" size="small" @click="searchOpen = false"
          >取 消</el-button
        >
      </el-form-item>
    </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))"
          >编辑</el-button
        >
      </el-col>
      <el-col :span="1.5">
      </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(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_CheckBill(2, (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_De_Stop(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_De_Stop(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="primary" 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.stop="handleEdit(row, (OperationType = 3))"
                  v-else-if="column.property == '计量单位代码'"
                  >{{ row.计量单位代码}}</el-button
                >
                <span v-else>{{ row[column.label] }}</span>
              </div>
            </template>
          </el-table-column>
        </template>
      </el-table>
      <pagination
        v-show="total > 0"
        :total="total"
        :page.sync="page"
        :limit.sync="pageSize"
        :pageSizes="pageSizes"
        @pagination="handleQuery"
      />
      <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="编辑计量单位"
        :visible.sync="openEdit"
        width="1480px"
        append-to-body
        class="xsckdBox"
        :before-close="close"
      >
        <!-- <edit
          :OperationType="OperationType"
          :linterid="this.rowForm.hmainid"
          :HSouceBillType="this.rowForm.HSourceBillType"
          :HOrgID="this.queryParams.HOrgID"
          :copyType="copyType"
          @editCloseGy="editGyClose"
          v-if="editShow"
        /> -->
        <div style="height: 80vh" v-if="openEdit">
          <iframe :src="iframeUrl" frameborder="0" width="100%" height="100%"></iframe>
        </div>
      </el-dialog>
      <el-dialog
        :title="upload.title"
        :visible.sync="upload.open"
        width="1500px"
        append-to-body
        v-if="false"
      >
        <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 dayjs from "dayjs";
export default {
  name: "gyCarList",
  components: { RowSettings },
  props: {
    openPage: { type: String },
  },
  data() {
    return {
      iframeUrl: "",
      activeSeach: "",
      HModName: "gyUnit",
      editShow: false,
      openEdit: false,
      totalNameList: [],
      dateRange: [],
      tableShow: true,
      openPrintList: false,
      printListShow: false,
      HClassTag: "ForFilteringSchemes", //过滤条件的class类
      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, //数据弹窗
      dialogTitle: "",
      zuzhiId: "",
      organizationList: JSON.parse(sessionStorage["organizationList"]), //组织列表
      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: [],
      activeName: "first",
      searchOpen: false,
      // 弹出层标题
      title: "",
      // 是否显示弹出层
      open: false,
      // 日期范围
      dateRange: [],
      // 查询参数
      queryParams: {
        HOrgID: sessionStorage["OrganizationID"],
        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: {},
      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() {
    window.editGyClose = () => {
      this.editGyClose(); // 组件内的方法绑定到windows
    };
    this.queryParams.HOrgID = sessionStorage["OrganizationID"];
  },
  beforeDestroy() {
    // 组件销毁时清理全局方法,避免内存泄漏
    delete window.editGyClose;
  },
  created() {
    this.riqiChange();
    this.handleQuery();
  },
  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.handleQuery();
    },
    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;
      this.dateRange = [this.sTime, this.eTime];
    },
    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;
      }
      // 计量单位列表
      try {
        let res = await axios.get(this.baseURL + "/Gy_Unit/list1", {
          params: {
            sWhere: this.sWhere,
            user: sessionStorage["HUserName"],
            Organization:this.getOrgNameById(this.queryParams.HOrgID)
          },
        });
        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; // 记录当前选中的行
      if (this.checkIsIframe()) {
        // 将当前选中的数据暴露到window中
        window.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" };
      }
    },
    checkIsIframe() {
      if (window.self == window.top) {
        return false;
      }
      return true;
    },
    //双击行
    handleDblclick(row, column, cell, event) {
      if (this.checkIsIframe()) {
        window.parent.iframeCarCallBack(row);
        return;
      }
      this.OperationType = 3;
      this.handleEdit(row, this.OperationType);
    },
    // 多选框选中数据
    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.HNumber) {
        this.sWhere += " and 计量单位代码 like '%" + this.queryParams.HNumber + "%'";
      }
      if (this.queryParams.HName) {
        this.sWhere += " and 计量单位名称 like '%" + this.queryParams.HName + "%'";
      }
      // if (this.queryParams.HBeginDate && this.queryParams.HEndDate) {
      //   this.sWhere += `  and CONVERT(varchar(100),日期, 23) >= '${this.queryParams.HBeginDate}' and CONVERT(varchar(100),日期, 23) <= '${this.queryParams.HEndDate}'`;
      // }
      this.sWhere += this.addSWhereByOpenType();
      // this.sWhere += this.getOrgIDByUser();
      this.searchOpen = false;
      this.getList();
    },
    // 判断是直接打开页面还是其它页面通过选择按钮打开,并显示相应数据
    addSWhereByOpenType() {
      //获取参数
      var sWhere = "";
      //this.openPage判断是否有值,有代表其它页面通过选择按钮打开
      if (this.openPage || window.parent != window.self) {
        sWhere += " and 禁用标志 != '1' 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.handleQuery();
    },
    //打开新增组件弹窗
    handleAddEdit() {
      // this.rowForm.HItemID = 0;
      this.iframeUrl = `/iframe/GyUnitEdit?HInterID=0&OperationType=1`;
      this.$nextTick(() => {
        this.openEdit = true;
        this.editShow = true;
      });
    },
    //打开修改组件弹窗
    handleEdit(row, OperationType) {
      this.iframeUrl = `/iframe/GyUnitEdit?HInterID=${row.HItemID}&OperationType=${OperationType}`;
      this.$nextTick(() => {
        this.openEdit = true;
        this.editShow = true;
      });
    },
    //关闭编辑页面
    editGyClose(val) {
      this.editShow = false;
      this.openEdit = false;
      (this.multiple = true), this.handleQuery();
    },
    /** 删除按钮操作 */
    handleDelete() {
      this.$modal
        .confirm("确认要删除吗,删除后不能恢复")
        .then(() => {
          if (!this.rowForm.审核人) {
            const InterID = this.rowForm.hmainid || this.rowForm.HItemID || this.rowForm.HInterID;
            axios
              .get(this.baseURL + "DeltetGy_Unit", {
                params: {
                  HItemID: InterID,
                  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 + "/Gy_Unit/AuditGy_Unit", {
          params: {
            HInterID: InterID,
            Type: num,
            user: sessionStorage["HUserName"],
          },
        })
        .then((res) => {
          let result = res.data;
          if (result.code == 1) {
            this.handleQuery();
            this.$modal.msgError("错误:" + result.code + result.Message);
          } else {
            this.$modal.msgSuccess("操作成功");
            this.handleQuery();
          }
        })
        .catch((error) => {
          this.$modal.msgError("接口请求失败!");
        });
    },
    // 反禁用/禁用数据
    set_De_Stop(num, form) {
      var InterID = form.HItemID || form.HInterID;
      //逻辑审核方法
      axios
        .get(this.baseURL + "/Gy_Unit/StopGy_Unit", {
          params: {
            HInterID: InterID,
            IsStop: num,
            CurUserName: sessionStorage["HUserName"],
          },
        })
        .then((res) => {
          let result = res.data;
          if (result.code == 1) {
            this.$modal.msgSuccess("操作成功");
            this.handleQuery();
          } 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 }
        );
      }
    },
    // 假设您有一个组织ID
// 方法1.1:使用 find 方法
    getOrgNameById(id) {
      const org = this.organizationList.find(item =>
        item.ID.toString() === id.toString()
      );
       return org ? org.Name : '';  // 只返回组织名称
    },
      // 提交上传文件
    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.handleQuery();
        })
        .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/basic/gyUnit/gyUnitEdit.vue
New file
@@ -0,0 +1,625 @@
<template>
  <div v-loading="formLoading" v-if="formShow">
    <div style="margin-bottom: 10px; border-bottom: 1px solid #f6f6f6">
      <el-button type="primary" @click="submitForm" :disabled="subDisabled"
        >保 存</el-button
      >
      <el-button
        type="primary"
        @click="setCheckBill"
        :disabled="!isAuditable || subDisabled"
      >审 核</el-button>
      <el-button type="primary" @click="close">退 出</el-button>
    </div>
    <el-form ref="form" :model="form" :rules="rules" label-width="110px">
      <el-tabs v-model="activeName" type="card">
        <el-tab-pane label="基本信息" name="first">
          <el-row>
            <el-col :span="8">
              <el-form-item label="代码:" prop="HNumber">
                <el-input
                  v-model="form.HNumber"
                  placeholder="请输入计量单位代码"
                  :disabled="isEditMode && form.HItemID > 0"
                />
                <el-input v-model="form.HItemID" type="hidden" />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="名称:" prop="HName">
                <el-input
                  v-model="form.HName"
                  placeholder="请输入计量单位名称"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="助记码:">
                <el-input
                  v-model="form.HHelpCode"
                  placeholder="请输入助记码"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="8">
              <el-form-item label="换算比例:" prop="HRate">
                <el-input
                  v-model="form.HRate"
                  type="number"
                  placeholder="请输入换算比例"
                  min="0"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="默认单位:">
                <el-checkbox v-model="form.HStandard">设为默认单位</el-checkbox>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="禁用标志:">
                <el-checkbox v-model="form.HStopflag" disabled>禁用</el-checkbox>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="8">
                <el-form-item label="计量单位组:">
                <div style="white-space: nowrap;">
                    <el-input
                    v-model="form.HUnitGroupName"
                    placeholder="请选择计量单位组"
                    readonly
                    style="width: 200px; display: inline-block;"
                    />
                    <el-input v-model="form.HUnitGroupID" type="hidden" />
                    <el-button
                    type="primary"
                    icon="el-icon-search"
                    @click="selectUnitGroup"
                    style="width: 40px; margin-left: -30px; display: inline-block;"
                    ></el-button>
                </div>
                </el-form-item>
            </el-col>
            </el-row>
          <el-row>
            <el-col :span="24">
              <el-form-item label="备注:">
                <el-input
                  v-model="form.HRemark"
                  type="textarea"
                  placeholder="请输入备注"
                  :rows="3"
                />
              </el-form-item>
            </el-col>
          </el-row>
        </el-tab-pane>
        <el-tab-pane label="制单信息" name="second">
          <el-row>
            <el-col :span="8">
              <el-form-item label="制单人:">
                <el-input
                  v-model="form.HMakeEmp"
                  readonly
                  :class="{ 'readonly-input': true }"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="制单日期:">
                <el-input
                  v-model="form.HMakeDate"
                  readonly
                  :class="{ 'readonly-input': true }"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="8">
              <el-form-item label="审核人:">
                <el-input
                  v-model="form.HCheckEmp"
                  readonly
                  :class="{ 'readonly-input': true }"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="审核日期:">
                <el-input
                  v-model="form.HCheckDate"
                  readonly
                  :class="{ 'readonly-input': true }"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="8">
              <el-form-item label="禁用人:">
                <el-input
                  v-model="form.HStopEmp"
                  readonly
                  :class="{ 'readonly-input': true }"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="禁用日期:">
                <el-input
                  v-model="form.HStopDate"
                  readonly
                  :class="{ 'readonly-input': true }"
                />
              </el-form-item>
            </el-col>
          </el-row>
        </el-tab-pane>
      </el-tabs>
    </el-form>
    <!-- 计量单位组选择弹窗 -->
    <el-dialog
      title="计量单位组列表"
      :visible.sync="unitGroupDialogVisible"
      width="90%"
      top="5vh"
      :close-on-click-modal="false"
      append-to-body
    >
      <div style="height: 70vh;">
        <iframe
          :src="unitGroupIframeUrl"
          frameborder="0"
          width="100%"
          height="100%"
        ></iframe>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="unitGroupDialogVisible = false">取 消</el-button>
        <el-button type="primary" @click="confirmUnitGroup">确 定</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import axios from "axios";
import dayjs from "dayjs";
export default {
  name: "GyUnitEdit",
  components: {},
  props: {
    OperationType: { type: Number }, // 1:新增, 3:编辑, 2:复制
    linterid: { type: Number }, // 编辑时的ID
    HOrgID: { type: Number }, // 组织ID
  },
  data() {
    return {
      formShow: false,
      formLoading: true,
      subDisabled: false,
      isEditMode: false,
      isAuditable: false,
      activeName: "first",
      isIframe: false,
      // 表单参数
      form: {
        HItemID: 0,
        HNumber: "",
        HName: "",
        HHelpCode: "",
        HRate: "1",
        HStandard: false,
        HStopflag: false,
        HRemark: "",
        HUnitGroupID: "0",
        HUnitGroupName: "",
        HMakeEmp: "",
        HMakeDate: "",
        HCheckEmp: "",
        HCheckDate: "",
        HStopEmp: "",
        HStopDate: "",
        HUserName: "",
        OrganizationID: ""
      },
      // 计量单位组选择
      unitGroupDialogVisible: false,
      unitGroupIframeUrl: "",
      selectedUnitGroup: null,
      // 表单校验
      rules: {
        HNumber: [
          { required: true, message: "计量单位代码不能为空", trigger: "blur" },
          { max: 50, message: "长度不能超过50个字符", trigger: "blur" }
        ],
        HName: [
          { required: true, message: "计量单位名称不能为空", trigger: "blur" },
          { max: 100, message: "长度不能超过100个字符", trigger: "blur" }
        ],
        HRate: [
          { required: true, message: "换算比例不能为空", trigger: "blur" },
          {
            validator: (rule, value, callback) => {
              if (value === '' || value === null) {
                callback(new Error('换算比例不能为空'));
              } else if (isNaN(value) || parseFloat(value) <= 0) {
                callback(new Error('请输入大于0的数字'));
              } else {
                callback();
              }
            },
            trigger: 'blur'
          }
        ]
      },
      baseURL: process.env.VUE_APP_BASE_API || "http://47.96.97.237/API/",
      user: "admin",
      organizationID: ""
    };
  },
  created() {
    this.reset();
    this.fetchData();
    this.checkIframe();
  },
  mounted() {
    this.user = sessionStorage["HUserName"] || "admin";
    this.organizationID = sessionStorage["OrganizationID"] || "";
  },
  methods: {
    // 检查是否在iframe中
    checkIframe() {
      this.isIframe = window.self !== window.top;
    },
    fetchData() {
      // 从URL获取参数
      const urlParams = this.getUrlParams();
      const hID = urlParams.HInterID ? parseInt(urlParams.HInterID) : 0;
      const opType = urlParams.OperationType ? parseInt(urlParams.OperationType) : 1;
      // 如果props没有传递,使用URL参数
      const operationType = this.OperationType || opType;
      const linterid = this.linterid || hID;
      if (operationType !== 1 && linterid) {
        // 编辑或复制模式
        this.getDetailData(linterid, operationType);
      } else {
        // 新增模式
        this.formShow = true;
        this.formLoading = false;
        this.form.HItemID = 0;
        this.isEditMode = false;
        this.isAuditable = false;
        this.setDefaultValues();
      }
    },
    // 从URL获取参数
    getUrlParams() {
      const params = {};
      const queryString = window.location.search.substring(1);
      const pairs = queryString.split('&');
      for (let i = 0; i < pairs.length; i++) {
        const pair = pairs[i].split('=');
        if (pair.length === 2) {
          params[pair[0]] = decodeURIComponent(pair[1]);
        }
      }
      return params;
    },
    getDetailData(hID, operationType) {
      this.formLoading = true;
      axios
        .get(this.baseURL + "GetGy_UnitDetail", {
          params: {
            HID: hID,
          },
        })
        .then((response) => {
          let result = response.data;
          if (result.code == 1) {
            var data = result.data.h_v_Edit_Gy_UnitList[0];
            console.log("返回的数据:", data);
            // 处理布尔值
            const isStopped = data.禁用标记 === "true";
            const isStandard = data.默认标记 === "true";
            this.form = {
              HItemID: operationType == 2 ? 0 : data.HItemID, // 复制时ID设为0
              HNumber: data.计量单位代码,
              HName: data.计量单位名称,
              HHelpCode: data.助记代码,
              HRate: data.换算比例 || "1",
              HStandard: isStandard,
              HStopflag: isStopped,
              HRemark: data.备注 || "",
              HUnitGroupID: data.HUnitGroupID || "0",
              HUnitGroupName: data.计量单位组名称 || "",
              HMakeEmp: data["创建人"] || "",
              HMakeDate: data["创建日期"] ? dayjs(data["创建日期"]).format("YYYY-MM-DD") : "",
              HCheckEmp: data["审核人"] || "",
              HCheckDate: data["审核日期"] ? dayjs(data["审核日期"]).format("YYYY-MM-DD") : "",
              HStopEmp: data["禁用人"] || "",
              HStopDate: data["禁用日期"] ? dayjs(data["禁用日期"]).format("YYYY-MM-DD") : "",
              HUserName: this.user,
              OrganizationID: this.organizationID
            };
            this.isEditMode = operationType === 3;
            this.isAuditable = !data["审核人"] && operationType === 3;
            // 如果是已审核单据,禁用保存按钮
            if (data["审核人"]) {
              this.subDisabled = true;
            }
          } else {
            this.$modal.msgError(result.msg || "获取数据失败");
          }
        })
        .catch((error) => {
          this.$modal.msgError("接口请求失败!");
        })
        .finally(() => {
          this.formShow = true;
          this.formLoading = false;
        });
    },
    // 设置默认值
    setDefaultValues() {
      this.form.HMakeEmp = this.user;
      this.form.HMakeDate = dayjs().format("YYYY-MM-DD");
      this.form.OrganizationID = this.organizationID;
    },
    // 重置表单
    reset() {
      this.form = {
        HItemID: 0,
        HNumber: "",
        HName: "",
        HHelpCode: "",
        HRate: "1",
        HStandard: false,
        HStopflag: false,
        HRemark: "",
        HUnitGroupID: "0",
        HUnitGroupName: "",
        HMakeEmp: "",
        HMakeDate: "",
        HCheckEmp: "",
        HCheckDate: "",
        HStopEmp: "",
        HStopDate: "",
        HUserName: this.user,
        OrganizationID: this.organizationID
      };
      this.subDisabled = false;
    },
    // 选择计量单位组
    selectUnitGroup() {
      this.unitGroupIframeUrl = `/iframe/GyUnitGroup?type=select`;
      this.unitGroupDialogVisible = true;
      // 监听来自iframe的消息
      window.addEventListener('message', this.handleUnitGroupMessage);
    },
    // 处理计量单位组选择消息
    handleUnitGroupMessage(event) {
      if (event.data && event.data.action === 'selectUnitGroup') {
        this.selectedUnitGroup = event.data.data;
      }
    },
    // 确认选择计量单位组
    confirmUnitGroup() {
      if (this.selectedUnitGroup) {
        this.form.HUnitGroupID = this.selectedUnitGroup.HItemID;
        this.form.HUnitGroupName = this.selectedUnitGroup.计量单位组;
      }
      this.unitGroupDialogVisible = false;
      window.removeEventListener('message', this.handleUnitGroupMessage);
    },
    // 退出
    close() {
      if (this.isIframe) {
        // 在iframe中,通知父窗口关闭或返回
        if (window.parent.editGyClose) {
          window.parent.editGyClose();
        } else {
          // 尝试关闭iframe
          try {
            const index = parent.layer && parent.layer.getFrameIndex ? parent.layer.getFrameIndex(window.name) : null;
            if (index !== null && index !== undefined) {
              parent.layer.close(index);
            } else {
              // 如果没有layer,使用其他方式
              window.parent.postMessage({ action: 'closeIframe' }, '*');
            }
          } catch (e) {
            console.log("关闭iframe失败:", e);
            this.$router.back();
          }
        }
      } else {
        // 不在iframe中,使用路由返回或跳转
        if (this.$route) {
          this.$router.back();
        } else if (this.OperationType === 1) {
          // 新增模式,返回首页
          window.location.href = "/index.html";
        } else {
          window.history.back();
        }
      }
    },
    // 提交保存
    submitForm() {
      this.$refs["form"].validate((valid) => {
        if (valid) {
          this.subDisabled = true;
          // 准备数据
          const formData = {
            ...this.form,
            HStandard: this.form.HStandard ? "true" : "false",
            HStopflag: this.form.HStopflag ? "true" : "false",
            HRate: this.form.HRate.toString(), // 确保是字符串
            HUserName: this.user,
            OrganizationID: this.organizationID
          };
          // 构建与原页面相同的格式
          const sMainStr = JSON.stringify(formData);
          const additionalParams = `${this.user};${this.organizationID};${this.form.HRate}`;
          const fullData = sMainStr + ';' + additionalParams;
          const requestData = {
            msg: fullData,
          };
          axios({
            method: "POST",
            url: this.baseURL + "SaveGy_UnitList",
            data: requestData,
            headers: {
              'Content-Type': 'application/json',
            },
          })
            .then((response) => {
              if (response.data.count == 1) {
                this.$modal.msgSuccess(response.data.Message || "保存成功");
                this.subDisabled = true;
                this.form.HItemID = response.data.data; // 获取返回的ID
                // 如果是自动审核,执行审核
                if (response.data.Verify === "Y") {
                  this.setCheckBillNoLayer();
                }
                // 通知父组件刷新
                if (window.parent && window.parent.handleQuery) {
                  window.parent.handleQuery();
                }
              } else {
                this.$modal.msgError(response.data.Message || "保存失败");
                this.subDisabled = false;
              }
            })
            .catch((error) => {
              this.$modal.msgError("保存失败: " + (error.message || "未知错误"));
              this.subDisabled = false;
            });
        } else {
          this.$modal.msgError("请检查表单数据");
        }
      });
    },
    // 审核(带确认框)
    setCheckBill() {
      this.$confirm('确认要审核吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        this.setCheckBillNoLayer();
      }).catch(() => {
        // 用户取消
      });
    },
    // 审核(不带确认框)
    setCheckBillNoLayer() {
      if (!this.form.HItemID || this.form.HItemID == 0) {
        this.$modal.msgError("请先保存单据");
        return;
      }
      axios({
        method: "GET",
        url: this.baseURL + "Gy_Unit/AuditGy_Unit",
        params: {
          HInterID: this.form.HItemID,
          Type: 1,
          user: this.user
        }
      })
        .then((response) => {
          if (response.data.count == 1) {
            this.$modal.msgSuccess("审核成功");
            this.isAuditable = false;
            this.subDisabled = true;
            // 更新审核信息
            this.form.HCheckEmp = this.user;
            this.form.HCheckDate = dayjs().format("YYYY-MM-DD");
            // 通知父组件刷新
            if (window.parent && window.parent.handleQuery) {
              window.parent.handleQuery();
            }
          } else {
            this.$modal.msgError(response.data.Message || "审核失败");
          }
        })
        .catch((error) => {
          this.$modal.msgError("审核失败: " + (error.message || "未知错误"));
        });
    }
  },
  beforeDestroy() {
    // 移除事件监听器
    window.removeEventListener('message', this.handleUnitGroupMessage);
  }
};
</script>
<style scoped>
.el-form-item {
  margin-bottom: 22px;
}
.el-row {
  margin-bottom: 10px;
}
.hidden-input {
  display: none;
}
.readonly-input >>> .el-input__inner {
  background-color: #f5f7fa;
  color: #909399;
  cursor: not-allowed;
}
</style>
src/views/basic/gyUnit/gyUnitGroup.vue
New file
@@ -0,0 +1,289 @@
<template>
  <div style="padding: 15px; height: 100vh;">
    <el-card style="margin-bottom: 15px;">
      <el-form :inline="true" :model="queryForm" class="demo-form-inline">
        <el-form-item label="过滤列">
          <el-input
            v-model="queryForm.Value"
            placeholder="请输入过滤列"
            @keyup.enter.native="handleQuery"
          ></el-input>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="handleQuery">快速查询</el-button>
        </el-form-item>
      </el-form>
    </el-card>
    <div style="height: calc(100% - 100px);">
      <el-table
        ref="mainTable"
        :data="tableData"
        stripe
        border
        highlight-current-row
        height="100%"
        @row-dblclick="handleRowDblclick"
        @row-click="handleRowClick"
        :row-class-name="tableRowClassName"
      >
        <el-table-column type="radio" width="55">
          <template slot-scope="scope">
            <el-radio
              v-model="selectedRowId"
              :label="scope.row.HItemID"
              @change="handleRadioChange(scope.row)"
            ></el-radio>
          </template>
        </el-table-column>
        <el-table-column prop="HItemID" label="单位组ID" width="150" v-if="false"></el-table-column>
        <el-table-column prop="计量单位组代码" label="计量单位组代码" width="150"></el-table-column>
        <el-table-column prop="计量单位组" label="计量单位组" width="150" sortable></el-table-column>
      </el-table>
      <el-pagination
        background
        layout="total, sizes, prev, pager, next"
        :total="total"
        :page-sizes="[50, 500, 5000, 50000]"
        :page-size="pageSize"
        :current-page="currentPage"
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        style="margin-top: 10px; text-align: right;"
      >
      </el-pagination>
    </div>
  </div>
</template>
<script>
import axios from "axios";
export default {
  name: "GyUnitGroupSelect",
  data() {
    return {
      queryForm: {
        Value: "",
      },
      tableData: [],
      selectedRow: null,
      selectedRowId: null, // 用于radio绑定
      total: 0,
      currentPage: 1,
      pageSize: 50,
      type: "select", // 从URL参数中获取
      baseURL: process.env.VUE_APP_BASE_API || "http://47.96.97.237/API/",
    };
  },
  created() {
    this.getUrlParams();
    this.getUnitGroupList();
  },
  methods: {
    // 从URL获取参数
    getUrlParams() {
      const queryString = window.location.search.substring(1);
      const pairs = queryString.split('&');
      for (let i = 0; i < pairs.length; i++) {
        const pair = pairs[i].split('=');
        if (pair.length === 2) {
          const key = decodeURIComponent(pair[0]);
          const value = decodeURIComponent(pair[1]);
          if (key === 'type') {
            this.type = value;
          }
        }
      }
    },
    // 查询数据
    handleQuery() {
      this.currentPage = 1;
      this.getUnitGroupList();
    },
    // 获取计量单位组列表
    getUnitGroupList() {
      axios
        .get(this.baseURL + "Web/GetUnitGroupList_Json", {
          params: {
            Unit: this.queryForm.Value || "",
          },
        })
        .then((response) => {
          if (response.data && response.data.data) {
            this.tableData = response.data.data;
            this.total = response.data.data.length;
            // 重置选中状态
            this.selectedRow = null;
            this.selectedRowId = null;
          } else {
            this.tableData = [];
            this.total = 0;
          }
        })
        .catch((error) => {
          console.error("获取计量单位组列表失败:", error);
          this.$message.error("获取数据失败");
        });
    },
    // 返回选择结果 - 修改这里确保能返回信息
    handleReturn() {
      if (!this.selectedRow) {
        this.$message.warning("请选择一条数据");
        return;
      }
      // 首先尝试通过postMessage传递数据
      if (window.parent) {
        window.parent.postMessage({
          action: 'selectUnitGroup',
          data: this.selectedRow
        }, '*');
      }
      // 同时尝试调用父窗口的方法
      if (window.parent.GetHUnitGroupNameValue) {
        window.parent.GetHUnitGroupNameValue([this.selectedRow]);
      }
      // 关闭当前窗口
      this.closeWindow();
    },
    // 双击行事件 - 修改这里确保能关闭窗口
    handleRowDblclick(row) {
      this.selectedRow = row;
      this.selectedRowId = row.HItemID;
      this.$refs.mainTable.setCurrentRow(row);
      // 传递数据给父窗口
      if (window.parent) {
        window.parent.postMessage({
          action: 'selectUnitGroup',
          data: this.selectedRow
        }, '*');
      }
      if (window.parent.GetHUnitGroupNameValue) {
        window.parent.GetHUnitGroupNameValue([this.selectedRow]);
      }
      // 关闭窗口
      this.closeWindow();
    },
    // 单击行事件
    handleRowClick(row) {
      this.selectedRow = row;
      this.selectedRowId = row.HItemID;
      this.$refs.mainTable.setCurrentRow(row);
        // 传递数据给父窗口
      if (window.parent) {
        window.parent.postMessage({
          action: 'selectUnitGroup',
          data: this.selectedRow
        }, '*');
      }
      if (window.parent.GetHUnitGroupNameValue) {
        window.parent.GetHUnitGroupNameValue([this.selectedRow]);
      }
    },
    // Radio选择变化
    handleRadioChange(row) {
      this.selectedRow = row;
      this.$refs.mainTable.setCurrentRow(row);
    },
    // 关闭窗口的通用方法
    closeWindow() {
      try {
        // 尝试使用layer关闭
        if (parent.layer) {
          const index = parent.layer.getFrameIndex(window.name);
          if (index !== null && index !== undefined) {
            parent.layer.close(index);
            return;
          }
        }
        // 尝试使用window.close
        if (window.opener || window.parent !== window) {
          window.close();
          return;
        }
        // 尝试发送关闭消息
        if (window.parent) {
          window.parent.postMessage({ action: 'closeSelectDialog' }, '*');
        }
        console.log("无法自动关闭窗口,请手动关闭");
      } catch (e) {
        console.log("关闭窗口失败:", e);
      }
    },
    // 设置表格行样式
    tableRowClassName({ row, rowIndex }) {
      if (this.selectedRow && row.HItemID === this.selectedRow.HItemID) {
        return 'selected-row';
      }
      return '';
    },
    // 分页大小改变
    handleSizeChange(val) {
      this.pageSize = val;
      this.currentPage = 1;
      // 这里可以根据需要重新加载数据
    },
    // 当前页改变
    handleCurrentChange(val) {
      this.currentPage = val;
      // 这里可以根据需要重新加载数据
    },
  },
};
</script>
<style scoped>
/* 确保表格撑满容器 */
.demo-form-inline {
  margin-bottom: 0;
}
/* 表格容器样式 */
.table-container {
  height: calc(100% - 60px);
  overflow: auto;
}
/* 选中行样式 */
.el-table .selected-row {
  background-color: #f0f9ff !important;
}
.el-table .selected-row:hover > td {
  background-color: #e6f7ff !important;
}
</style>
<style>
/* 全局样式,确保在表格内部生效 */
.el-table .cell .el-radio {
  margin-right: 0;
}
.el-table .cell .el-radio__label {
  display: none;
}
</style>