小小儁爺
2024-08-26 a868f2742d198d3c5662603040c06e5e65f39c5a
1.导入的代码修改
已添加1个文件
已修改2个文件
2511 ■■■■■ 文件已修改
src/views/systemSetting/dataImport.vue 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/systemSetting/dataImport_back.vue 2308 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/systemSetting/dataImport.vue
@@ -111,207 +111,7 @@
              min-width="220"
            >
              <template slot-scope="{row}">
                <div
                  v-if="item.indexOf('编号(唯一)')!==-1||
                    item.indexOf('用户姓名')!==-1||
                    item.indexOf('密码')!==-1||
                    item.indexOf('手机号')!==-1||
                    item.indexOf('邮箱')!==-1||
                    item.indexOf('名称')!==-1||
                    item.indexOf('描述')!==-1||
                    item.indexOf('上级编码')!==-1||
                    item.indexOf('类型编码')!==-1||
                    item.indexOf('联系人')!==-1||
                    item.indexOf('联系方式')!==-1||
                    item.indexOf('地址')!==-1||
                    item.indexOf('所属仓库编码')!==-1||
                    item.indexOf('上级库位编码')!==-1||
                    item.indexOf('规格型号')!==-1||
                    item.indexOf('存货分类')!==-1||
                    item.indexOf('仓库编码')!==-1||
                    item.indexOf('预计寿命')!==-1||
                    item.indexOf('剩余寿命')!==-1||
                    item.indexOf('模具编码')!==-1||
                    item.indexOf('产品编码')!==-1||
                    item.indexOf('标准编号')!==-1||
                    item.indexOf('项序号')!==-1||
                    item.indexOf('项要求')!==-1||
                    item.indexOf('计量单位/组名称')!==-1||
                    item.indexOf('保养部位要求')!==-1||
                    item.indexOf('保养项目要求')!==-1||
                    item.indexOf('点检部位要求')!==-1||
                    item.indexOf('点检项目要求')!==-1||
                    item.indexOf('仓库编码')!==-1||
                    item.indexOf('库位编码')!==-1
                  "
                >
                  <el-input v-model="row[item]" placeholder="请输入" />
                </div>
                <div v-else-if="item.indexOf('状态')!==-1">
                  <el-select
                    v-model="row[item]"
                    placeholder="请选择"
                    filterable
                    style="width:100%"
                    clearable
                  >
                    <el-option
                      v-for="item in statusArr"
                      :key="item.code"
                      :label="item.name"
                      :value="item.code"
                    />
                  </el-select>
                </div>
                <div v-else-if="item.indexOf('计量方式')!==-1">
                  <el-select
                    v-model="row[item]"
                    placeholder="请选择"
                    filterable
                    style="width:100%"
                    clearable
                  >
                    <el-option
                      v-for="item in meterMethodArr"
                      :key="item.code"
                      :label="item.name"
                      :value="item.code"
                    />
                  </el-select>
                </div>
                <div v-else-if="item.indexOf('工序类型')!==-1">
                  <el-select
                    v-model="row[item]"
                    placeholder="请选择"
                    filterable
                    style="width:100%"
                    clearable
                  >
                    <el-option
                      v-for="item in stepTypeArr"
                      :key="item.code"
                      :label="item.name"
                      :value="item.code"
                    />
                  </el-select>
                </div>
                <div
                  v-else-if="
                    item.indexOf('点检管控')!==-1||
                      item.indexOf('选择扫码')!==-1||
                      item.indexOf('是否扫码')!==-1||
                      item.indexOf('库位管理')!==-1||
                      item.indexOf('是否外购')!==-1||
                      item.indexOf('是否销售')!==-1||
                      item.indexOf('是否自制')!==-1||
                      item.indexOf('是否生产消耗')!==-1||
                      item.indexOf('是否委外')!==-1
                  "
                >
                  <el-select
                    v-model="row[item]"
                    placeholder="请选择"
                    filterable
                    style="width:100%"
                    clearable
                  >
                    <el-option
                      v-for="item in isYesOrNo"
                      :key="item.code"
                      :label="item.name"
                      :value="item.code"
                    />
                  </el-select>
                </div>
                <div
                  v-else-if="item.indexOf('点检周期')!==-1||
                    item.indexOf('保养周期')!==-1"
                >
                  <el-select
                    v-model="row[item]"
                    style="width: 100%;"
                    placeholder="请选择"
                  >
                    <el-option
                      v-for="item in cycleArr"
                      :key="item.code"
                      :label="item.name"
                      :value="item.code"
                    />
                  </el-select>
                </div>
                <div v-else-if="item.indexOf('所属岗位编码')!==-1">
                  <el-select
                    v-model="row[item]"
                    style="width: 100%;"
                    placeholder="请选择"
                    multiple
                    filterable
                    collapse-tags
                    clearable
                  >
                    <el-option
                      v-for="item in postArr"
                      :key="item.postcode"
                      :label="item.postname"
                      :value="item.postcode"
                    />
                  </el-select>
                </div>
                <div v-else-if="item.indexOf('所属角色编码')!==-1">
                  <el-select
                    v-model="row[item]"
                    style="width: 100%;"
                    placeholder="请选择"
                    multiple
                    filterable
                    collapse-tags
                    clearable
                  >
                    <el-option
                      v-for="item in roleArr"
                      :key="item.rolecode"
                      :label="item.rolename"
                      :value="item.rolecode"
                    />
                  </el-select>
                </div>
                <div v-else-if="item.indexOf('所属班组编码')!==-1">
                  <el-select
                    v-model="row[item]"
                    style="width: 100%;"
                    placeholder="请选择"
                    collapse-tags
                    multiple
                    filterable
                    clearable
                  >
                    <el-option
                      v-for="item in groupArr"
                      :key="item.usergroupcode"
                      :label="item.usergroupname"
                      :value="item.usergroupcode"
                    />
                  </el-select>
                </div>
                <div v-else-if="item.indexOf('所属组织编码')!==-1">
                  <el-cascader
                    ref="cascader"
                    v-model="row[item]"
                    :options="orgOptions"
                    filterable
                    :props="defaultProps"
                    :show-all-levels="false"
                  />
                </div>
                <div v-else> {{ row[item] }}</div>
                <div> {{ row[item] }}</div>
              </template>
            </el-table-column>
src/views/systemSetting/dataImport_back.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2308 @@
<template>
  <div class="">
    <div style="display: flex;margin: 20px 10px;align-items: center">
      <el-select
        v-model="excelCode"
        style="width:200px"
        placeholder="请选择模板文件"
        :popper-append-to-body="false"
        clearable
      >
        <el-option
          v-for="item in excelArr"
          :key="item.FileCode"
          :label="item.FileName"
          :value="item.FileCode"
        />
      </el-select>
      <el-button
        type="primary"
        style="margin-left: 20px"
        :disabled="excelCode===''"
        icon="el-icon-download"
        waves
        @click="getExcel"
      >下载模板
      </el-button>
      <upload-excel-component
        :on-success="handleSuccess"
        :before-upload="beforeUpload"
        :disabled="excelCode===''"
      />
      <el-button
        type="info"
        style="margin-left: 20px"
        :disabled="excelCode===''"
        icon="el-icon-refresh"
        waves
        @click="reset"
      >重置
      </el-button>
      <el-button
        type="warning"
        style="margin-left: 20px"
        icon="el-icon-circle-plus-outline"
        :disabled="excelCode===''||tableData.length===0"
        waves
        @click="addRow"
      >新增行
      </el-button>
      <el-button
        type="success"
        style="margin-left: 20px"
        :disabled="excelCode===''||tableData.length===0"
        icon="el-icon-thumb"
        waves
        @click="submit"
      >提交数据
      </el-button>
    </div>
    <div
      v-if="sheetName.length>0"
      style="margin: 10px"
    >
      <el-tabs v-model="activeName" type="border-card">
        <el-tab-pane
          v-for="(i,j) in sheetName"
          :key="i+j"
          :label="i"
        >
          <el-table
            v-if="tableData[j].length>0"
            :ref="'tableDataRef'+i"
            :data="tableData[j]"
            border
            :height="(mainHeight-180)+'px'"
            :header-cell-style="headerCellStyle"
            :cell-style="cellStyle"
            :style="{width: 100+'%',height:(mainHeight-180)+'px',zIndex:10}"
            style="overflow-y: scroll;"
            highlight-current-row
          >
            <el-table-column
              label="序号"
              width="55"
              fixed
              align="center"
              :render-header="indexRender"
            >
              <template slot-scope="scope">
                {{ scope.$index + 1 }}
              </template>
            </el-table-column>
            <el-table-column
              v-for="item of tableHeader[j]"
              :key="item"
              :prop="item"
              :label="item"
              align="center"
              :render-header="addRedStar"
              min-width="220"
            >
              <template slot-scope="{row}">
                <div
                  v-if="item.indexOf('编号(唯一)')!==-1||
                    item.indexOf('用户姓名')!==-1||
                    item.indexOf('密码')!==-1||
                    item.indexOf('手机号')!==-1||
                    item.indexOf('邮箱')!==-1||
                    item.indexOf('名称')!==-1||
                    item.indexOf('描述')!==-1||
                    item.indexOf('上级编码')!==-1||
                    item.indexOf('类型编码')!==-1||
                    item.indexOf('联系人')!==-1||
                    item.indexOf('联系方式')!==-1||
                    item.indexOf('地址')!==-1||
                    item.indexOf('所属仓库编码')!==-1||
                    item.indexOf('上级库位编码')!==-1||
                    item.indexOf('规格型号')!==-1||
                    item.indexOf('存货分类')!==-1||
                    item.indexOf('仓库编码')!==-1||
                    item.indexOf('预计寿命')!==-1||
                    item.indexOf('剩余寿命')!==-1||
                    item.indexOf('模具编码')!==-1||
                    item.indexOf('产品编码')!==-1||
                    item.indexOf('标准编号')!==-1||
                    item.indexOf('项序号')!==-1||
                    item.indexOf('项要求')!==-1||
                    item.indexOf('计量单位/组名称')!==-1||
                    item.indexOf('保养部位要求')!==-1||
                    item.indexOf('保养项目要求')!==-1||
                    item.indexOf('点检部位要求')!==-1||
                    item.indexOf('点检项目要求')!==-1||
                    item.indexOf('仓库编码')!==-1||
                    item.indexOf('库位编码')!==-1
                  "
                >
                  <el-input v-model="row[item]" placeholder="请输入" />
                </div>
                <div v-else-if="item.indexOf('状态')!==-1">
                  <el-select
                    v-model="row[item]"
                    placeholder="请选择"
                    filterable
                    style="width:100%"
                    clearable
                  >
                    <el-option
                      v-for="item in statusArr"
                      :key="item.code"
                      :label="item.name"
                      :value="item.code"
                    />
                  </el-select>
                </div>
                <div v-else-if="item.indexOf('计量方式')!==-1">
                  <el-select
                    v-model="row[item]"
                    placeholder="请选择"
                    filterable
                    style="width:100%"
                    clearable
                  >
                    <el-option
                      v-for="item in meterMethodArr"
                      :key="item.code"
                      :label="item.name"
                      :value="item.code"
                    />
                  </el-select>
                </div>
                <div v-else-if="item.indexOf('工序类型')!==-1">
                  <el-select
                    v-model="row[item]"
                    placeholder="请选择"
                    filterable
                    style="width:100%"
                    clearable
                  >
                    <el-option
                      v-for="item in stepTypeArr"
                      :key="item.code"
                      :label="item.name"
                      :value="item.code"
                    />
                  </el-select>
                </div>
                <div
                  v-else-if="
                    item.indexOf('点检管控')!==-1||
                      item.indexOf('选择扫码')!==-1||
                      item.indexOf('是否扫码')!==-1||
                      item.indexOf('库位管理')!==-1||
                      item.indexOf('是否外购')!==-1||
                      item.indexOf('是否销售')!==-1||
                      item.indexOf('是否自制')!==-1||
                      item.indexOf('是否生产消耗')!==-1||
                      item.indexOf('是否委外')!==-1
                  "
                >
                  <el-select
                    v-model="row[item]"
                    placeholder="请选择"
                    filterable
                    style="width:100%"
                    clearable
                  >
                    <el-option
                      v-for="item in isYesOrNo"
                      :key="item.code"
                      :label="item.name"
                      :value="item.code"
                    />
                  </el-select>
                </div>
                <div
                  v-else-if="item.indexOf('点检周期')!==-1||
                    item.indexOf('保养周期')!==-1"
                >
                  <el-select
                    v-model="row[item]"
                    style="width: 100%;"
                    placeholder="请选择"
                  >
                    <el-option
                      v-for="item in cycleArr"
                      :key="item.code"
                      :label="item.name"
                      :value="item.code"
                    />
                  </el-select>
                </div>
                <div v-else-if="item.indexOf('所属岗位编码')!==-1">
                  <el-select
                    v-model="row[item]"
                    style="width: 100%;"
                    placeholder="请选择"
                    multiple
                    filterable
                    collapse-tags
                    clearable
                  >
                    <el-option
                      v-for="item in postArr"
                      :key="item.postcode"
                      :label="item.postname"
                      :value="item.postcode"
                    />
                  </el-select>
                </div>
                <div v-else-if="item.indexOf('所属角色编码')!==-1">
                  <el-select
                    v-model="row[item]"
                    style="width: 100%;"
                    placeholder="请选择"
                    multiple
                    filterable
                    collapse-tags
                    clearable
                  >
                    <el-option
                      v-for="item in roleArr"
                      :key="item.rolecode"
                      :label="item.rolename"
                      :value="item.rolecode"
                    />
                  </el-select>
                </div>
                <div v-else-if="item.indexOf('所属班组编码')!==-1">
                  <el-select
                    v-model="row[item]"
                    style="width: 100%;"
                    placeholder="请选择"
                    collapse-tags
                    multiple
                    filterable
                    clearable
                  >
                    <el-option
                      v-for="item in groupArr"
                      :key="item.usergroupcode"
                      :label="item.usergroupname"
                      :value="item.usergroupcode"
                    />
                  </el-select>
                </div>
                <div v-else-if="item.indexOf('所属组织编码')!==-1">
                  <el-cascader
                    ref="cascader"
                    v-model="row[item]"
                    :options="orgOptions"
                    filterable
                    :props="defaultProps"
                    :show-all-levels="false"
                  />
                </div>
                <div v-else> {{ row[item] }}</div>
              </template>
            </el-table-column>
            <el-table-column
              label="操作"
              width="55"
              :render-header="operationRender"
              fixed="right"
            >
              <template slot-scope="{row}">
                <div class="operationClass" style="padding-left: 10px">
                  <el-tooltip v-del-tab-index class="item" effect="dark" content="删除" placement="top">
                    <i
                      class="el-icon-delete"
                      :style="{color:$store.state.settings.theme}"
                      @click="delRow(row)"
                    />
                  </el-tooltip>
                </div>
              </template>
            </el-table-column>
          </el-table>
        </el-tab-pane>
      </el-tabs>
    </div>
    <el-empty v-if="tableData.length===0" :image-size="500">
      <el-button type="text">1.请选择模板下载</el-button>
      <el-button type="text" style="margin-left: 0;">2.请填写模板数据</el-button>
      <el-button type="text" style="margin-left: 0;">3.请上传文件提交</el-button>
    </el-empty>
    <el-dialog
      v-el-drag-dialog
      title="失败原因"
      :visible.sync="dialogVisible"
      width="1300px"
      :close-on-click-modal="false"
      top="15vh"
      @closed="handleClose"
      @close="handleClose"
    >
      <div class="">
        <el-table
          ref="tableDataRef"
          class="tableFixed"
          :data="dialogTableData"
          :height="400"
          border
          row-class-name="custom-row"
          :style="{width: 100+'%',height: '400px',}"
          highlight-current-row
          :header-cell-style="this.$headerCellStyle"
          :cell-style="this.$cellStyle"
        >
          <el-table-column
            type="index"
            width="50"
            fixed
            label="序号"
          />
          <el-table-column
            prop="ErrorField"
            label="错误字段"
            width="200"
            show-overflow-tooltip
          />
          <el-table-column
            prop="ErrorCont"
            show-overflow-tooltip
            label="错误原因"
          />
        </el-table>
      </div>
      <span slot="footer" class="dialog-footer">
        <div class="footerButton">
          <el-button v-waves @click="dialogVisible=false">返 å›ž</el-button>
          <!--          <el-button v-waves type="primary" @click="dialogVisibleConfirm">ç¡® å®š</el-button>-->
        </div>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import UploadExcelComponent from '@/components/UploadExcel/index.vue'
import { DownLoadExcel, ExcelModelCheck, ExcelModelData } from '@/api/Excel'
import { GroupsPermissions, PostPermissions, PrentOrganization, RolePermissions } from '@/api/GeneralBasicData'
import { nanoid } from 'nanoid'
import arrayToTree from 'array-to-tree'
import elDragDialog from '@/directive/el-drag-dialog'
import waves from '@/directive/waves'
export default {
  name: 'DataImport',
  components: { UploadExcelComponent },
  directives: { elDragDialog, waves },
  data() {
    return {
      mainHeight: window.innerHeight - 85,
      tableData: [],
      tableHeader: [],
      sheetName: [],
      excelCode: '',
      excelArr: [],
      statusArr: [],
      isYesOrNo: [
        { code: '1', name: '是' },
        { code: '0', name: '否' }
      ],
      stepTypeArr: [
        { code: 'Z', name: '自制' },
        { code: 'W', name: '外协' }
      ],
      orgArr: [], // ç»„织
      orgOptions: [],
      defaultProps: {
        checkStrictly: true,
        expandTrigger: 'hover',
        value: 'torg_code',
        label: 'torg_name'
      },
      orgDefaultProps: {
        multiple: true,
        expandTrigger: 'hover',
        value: 'torg_code',
        label: 'torg_name'
      },
      postArr: [], // å²—位
      roleArr: [], // è§’色
      groupArr: [], // ç­ç»„
      dialogVisible: false,
      dialogTableData: [],
      meterMethodArr: [
        { code: 'S', name: '单计量' },
        { code: 'M', name: '多计量' }
      ],
      cycleArr: [
        { code: 'å¹´', name: 'å¹´' },
        { code: 'å­£', name: 'å­£' },
        { code: '月', name: '月' },
        { code: '周', name: '周' },
        { code: '日', name: '日' }
      ],
      activeName: '0'// tab选中值
    }
  },
  mounted() {
    this.getExcelModelData()
    this.getSelectArr()
    window.addEventListener('resize', this.getHeight)
  },
  methods: { // èŽ·å–é¡µé¢é«˜åº¦
    getHeight() {
      this.$nextTick(() => {
        this.mainHeight = window.innerHeight - 85
        // this.$nextTick(() => {
        //   this.$refs.tableDataRef.doLayout()
        // })
      })
    },
    async beforeUpload(file) {
      const isLt1M = file.size / 1024 / 1024 < 1
      if (isLt1M) {
        return true
      }
      this.$message({
        message: '请不要上传大于1兆的文件。',
        type: 'warning'
      })
      return false
    },
    // excel成功后的回调
    async handleSuccess({ results, header, sheetName }) {
      if (results[0].length === 0) {
        return this.$message.info('表格数据不能为空!')
      }
      this.tableData = results
      this.tableHeader = header
      this.sheetName = sheetName
      this.activeName = '0'
      // äººå‘˜ç®¡ç†å¯¼å…¥åˆ¤æ–­
      if (this.sheetName.indexOf('人员管理') !== -1) {
        this.handlePersonListUploadTemplate(true)
      }
      if (this.sheetName.indexOf('角色管理') !== -1 || this.sheetName.indexOf('班组管理') !== -1 ||
        this.sheetName.indexOf('岗位管理') !== -1
      ) {
        this.statusArr = [
          { code: 'Y', name: '正常' },
          { code: 'N', name: '停用' }
        ]
        this.tableData[0].forEach(j => {
          j['*状态'] = j['*状态'] ? this.statusArr.find(e => e.name === j['*状态']).code : ''
          j.uuid = nanoid()
        })
      }
      if (this.sheetName.indexOf('往来单位') !== -1) {
        this.statusArr = [
          { code: '0', name: '正常' },
          { code: '1', name: '停用' }
        ]
        this.tableData[0].forEach(j => {
          j.uuid = nanoid()
        })
        this.tableData[1].forEach(j => {
          j['*状态'] = j['*状态'] ? this.statusArr.find(e => e.name === j['*状态']).code : ''
          j.uuid = nanoid()
        })
      }
      if (this.sheetName.indexOf('仓库设置') !== -1) {
        this.statusArr = [
          { code: '0', name: '正常' },
          { code: '1', name: '停用' }
        ]
        this.tableData[0].forEach(j => {
          j['*状态'] = j['*状态'] ? this.statusArr.find(e => e.name === j['*状态']).code : ''
          j['*库位管理'] = j['*库位管理'] ? this.isYesOrNo.find(e => e.name === j['*库位管理']).code : ''
          j.uuid = nanoid()
        })
      }
      if (this.sheetName.indexOf('库位设置') !== -1) {
        this.statusArr = [
          { code: '0', name: '正常' },
          { code: '1', name: '停用' }
        ]
        this.tableData[0].forEach(j => {
          j['*状态'] = j['*状态'] ? this.statusArr.find(e => e.name === j['*状态']).code : ''
          j.uuid = nanoid()
        })
      }
      if (this.sheetName.indexOf('存货分类') !== -1) {
        this.statusArr = [
          { code: '0', name: '正常' },
          { code: '1', name: '停用' }
        ]
        this.tableData[0].forEach(j => {
          j.uuid = nanoid()
        })
        this.tableData[1].forEach(j => {
          j['*状态'] = j['*状态'] ? this.statusArr.find(e => e.name === j['*状态']).code : ''
          j['*计量方式'] = j['*计量方式'] ? this.meterMethodArr.find(e => e.name === j['*计量方式']).code : '0'
          j['是否外购'] = j['是否外购'] ? this.isYesOrNo.find(e => e.name === j['是否外购']).code : '0'
          j['是否销售'] = j['是否销售'] ? this.isYesOrNo.find(e => e.name === j['是否销售']).code : '0'
          j['是否自制'] = j['是否自制'] ? this.isYesOrNo.find(e => e.name === j['是否自制']).code : '0'
          j['是否生产消耗'] = j['是否生产消耗'] ? this.isYesOrNo.find(e => e.name === j['是否生产消耗']).code : '0'
          j['是否委外'] = j['是否委外'] ? this.isYesOrNo.find(e => e.name === j['是否委外']).code : '0'
          j.uuid = nanoid()
        })
      }
      if (this.sheetName.indexOf('设备类型') !== -1) {
        this.statusArr = [
          { code: 'Y', name: '正常' },
          { code: 'N', name: '停用' }
        ]
        const orgArr = this.orgArr.map(i => i.torg_code)
        this.tableData[0].forEach(j => {
          j.uuid = nanoid()
        })
        this.tableData[1].forEach(j => {
          j['*状态'] = j['*状态'] ? this.statusArr.find(e => e.name === j['*状态']).code : ''
          j['*所属组织编码'] = j['*所属组织编码'] ? (orgArr.includes(j['*所属组织编码']) ? this.findParent([], j['*所属组织编码'], this.orgOptions).reverse() : '') : ''
          j.uuid = nanoid()
        })
      }
      if (this.sheetName.indexOf('工序设置') !== -1) {
        this.statusArr = [
          { code: 'Y', name: '正常' },
          { code: 'N', name: '停用' }
        ]
        this.tableData[0].forEach(j => {
          j['*状态'] = j['*状态'] ? this.statusArr.find(e => e.name === j['*状态']).code : ''
          j['*工序类型'] = j['*工序类型'] ? this.stepTypeArr.find(e => e.name === j['*工序类型']).code : ''
          j.uuid = nanoid()
        })
      }
      if (this.sheetName.indexOf('模具清单') !== -1) {
        this.statusArr = [
          { code: 'Y', name: '正常' },
          { code: 'N', name: '故障' }
        ]
        this.tableData[0].forEach(j => {
          j.uuid = nanoid()
          j['*状态'] = j['*状态'] ? this.statusArr.find(e => e.name === j['*状态']).code : ''
        })
        this.tableData[1].forEach(j => {
          j.uuid = nanoid()
        })
      }
      if (this.sheetName.indexOf('模具点检标准') !== -1) {
        this.tableData[0].forEach(j => {
          j.uuid = nanoid()
        })
        this.tableData[1].forEach(j => {
          j.uuid = nanoid()
        })
      }
      if (this.sheetName.indexOf('设备点检项目') !== -1) {
        this.isYesOrNo = [
          { code: '是', name: '是' },
          { code: '否', name: '否' }
        ]
        this.tableData[0].forEach(j => {
          j.uuid = nanoid()
          j['*点检周期'] = j['*点检周期'] ? this.cycleArr.find(e => e.name === j['*点检周期']).code : ''
          j['*是否扫码'] = j['*是否扫码'] ? this.isYesOrNo.find(e => e.name === j['*是否扫码']).code : ''
        })
      }
      if (this.sheetName.indexOf('设备点检标准') !== -1) {
        this.isYesOrNo = [
          { code: 'Y', name: 'Y' },
          { code: 'N', name: 'N' }
        ]
        this.cycleArr = [
          { code: '日', name: '日' }
        ]
        this.tableData[0].forEach(j => {
          j.uuid = nanoid()
        })
        this.tableData[1].forEach(j => {
          j.uuid = nanoid()
        })
      }
      if (this.sheetName.indexOf('设备保养项目') !== -1) {
        this.isYesOrNo = [
          { code: 'Y', name: 'Y' },
          { code: 'N', name: 'N' }
        ]
        this.cycleArr = [
          { code: 'å¹´', name: 'å¹´' },
          { code: 'å­£', name: 'å­£' },
          { code: '月', name: '月' },
          { code: '周', name: '周' }
        ]
        this.tableData[0].forEach(j => {
          j.uuid = nanoid()
          j['*是否扫码'] = j['*是否扫码'] ? this.isYesOrNo.find(e => e.name === j['*是否扫码']).code : ''
        })
      }
      if (this.sheetName.indexOf('设备保养标准') !== -1) {
        this.isYesOrNo = [
          { code: 'Y', name: 'Y' },
          { code: 'N', name: 'N' }
        ]
        this.cycleArr = [
          { code: 'å¹´', name: 'å¹´' },
          { code: 'å­£', name: 'å­£' },
          { code: '月', name: '月' },
          { code: '周', name: '周' }
        ]
        this.tableData[0].forEach(j => {
          j.uuid = nanoid()
        })
        this.tableData[1].forEach(j => {
          j.uuid = nanoid()
        })
      }
      //
    },
    // æäº¤
    submit() {
      this.$confirm('是否确认提交?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      })
        .then(() => {
          if (this.sheetName.indexOf('人员管理') !== -1) {
            const res = this.handlePersonListSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          if (this.sheetName.indexOf('角色管理') !== -1) {
            const res = this.handleRoleListSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          if (this.sheetName.indexOf('班组管理') !== -1) {
            const res = this.handleGroupListSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          if (this.sheetName.indexOf('岗位管理') !== -1) {
            const res = this.handlePostListSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          if (this.sheetName.indexOf('往来单位类型') !== -1 && this.sheetName.indexOf('往来单位') !== -1) {
            const res = this.handleContactUnitListSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          if (this.sheetName.indexOf('仓库设置') !== -1) {
            const res = this.handleWarehouseListSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          if (this.sheetName.indexOf('库位设置') !== -1) {
            const res = this.handleStorageListSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          if (this.sheetName.indexOf('存货分类') !== -1) {
            const res = this.handleInventoryListSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          if (this.sheetName.indexOf('设备类型') !== -1) {
            const res = this.handleDeviceListSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          if (this.sheetName.indexOf('工序设置') !== -1) {
            const res = this.handleProcessListSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          if (this.sheetName.indexOf('缺陷定义') !== -1) {
            const res = this.handleDefectDefineSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          if (this.sheetName.indexOf('模具清单') !== -1 && this.sheetName.indexOf('模具关联产品') !== -1) {
            const res = this.handleMouldListSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          if (this.sheetName.indexOf('模具点检项目') !== -1) {
            const res = this.handleMouldCheckPosSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          if (this.sheetName.indexOf('模具点检标准') !== -1) {
            const res = this.handleMouldCheckStandSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          if (this.sheetName.indexOf('模具保养项目') !== -1) {
            const res = this.handleMouldMaintainSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          if (this.sheetName.indexOf('模具保养标准') !== -1) {
            const res = this.handleMouldMaintainStandSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          if (this.sheetName.indexOf('设备点检项目') !== -1) {
            const res = this.handleCheckPositionSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          if (this.sheetName.indexOf('设备点检标准') !== -1) {
            const res = this.handleCheckStandardSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          if (this.sheetName.indexOf('设备保养项目') !== -1) {
            const res = this.handleMaintainPositionSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          if (this.sheetName.indexOf('设备保养标准') !== -1) {
            const res = this.handleMaintainStandardSubmitData()
            if (res.code !== '200') {
              return this.$message.info(res.message)
            }
          }
          // æ•°æ®æäº¤å‰åŽ»é™¤ç©ºæ ¼æ–¹æ³•
          // this.tableDataTrim()
          const data = {
            fileCode: this.excelCode,
            tableData: this.tableData
          }
          ExcelModelCheck(data).then(res => {
            // è¿”回的json1、json2、json3   json1为模板校验、json2为数据校验、json3为导入数据库校验(可能会有系统报错产生)
            if (res.json1.code !== '200' && res.json2 === null && res.json3 === null) {
              this.$message.error(res.json1.message)
            }
            if (res.json1.code === '200' && res.json2 !== '200' && res.json3 === null) {
              this.$message.error(res.json2.message)
            }
            if (res.json1.code === '200' && res.json2 === '200' && res.json3 !== '200') {
              this.$message.error(res.json3.message)
            }
            if (res.json1.code === '300' && res.json2.code === '200' && res.json3.code === '300') { // ç³»ç»ŸæŠ¥é”™
              return this.$message.error(res.json3.message)
            }
            if (res.json1.code === '200' && res.json2.code === '301' && res.json3 === null) {
              this.dialogVisible = true
              this.dialogTableData = res.json2.data
            }
            if (res.json1.code === '200' && res.json2.code === '200' && res.json3.code === '200') {
              this.$notify.success('数据提交成功!')
              this.tableData = []
              this.tableHeader = []
              this.sheetName = []
              this.excelCode = ''
              return
            }
            if (this.sheetName.indexOf('人员管理') !== -1) {
              this.handlePersonListUploadTemplate(false)
            }
            if (this.sheetName.indexOf('设备类型') !== -1) {
              this.tableData[0].forEach(j => {
                j.uuid = nanoid()
              })
              this.tableData[1].forEach(j => {
                j['*所属组织编码'] = this.findParent([], j['*所属组织编码'], this.orgOptions).reverse()
                j.uuid = nanoid()
              })
            }
          })
        })
        .catch(e => {
          console.log(e)
          this.$notify.info('已取消提交!')
        })
    },
    // å¤„理人员管理导入模板
    handlePersonListUploadTemplate(isFirstUpload) {
      this.statusArr = [
        { code: 'Y', name: '在职' },
        { code: 'N', name: '离职' }
      ]
      const postArr = this.postArr.map(i => i.postcode)
      const roleArr = this.roleArr.map(i => i.rolecode)
      const groupArr = this.groupArr.map(i => i.usergroupcode)
      const orgArr = this.orgArr.map(i => i.torg_code)
      // this.sheetName.indexOf('人员管理')
      // ç¬¬ä¸€æ¬¡æ¸²æŸ“
      if (isFirstUpload) {
        this.tableData[0].forEach(j => {
          j['所属岗位编码'] = j['所属岗位编码'] ? j['所属岗位编码'].split(',').filter(e => postArr.includes(e)) : []
          j['所属角色编码'] = j['所属角色编码'] ? j['所属角色编码'].split(',').filter(e => roleArr.includes(e)) : []
          j['所属班组编码'] = j['所属班组编码'] ? j['所属班组编码'].split(',').filter(e => groupArr.includes(e)) : []
          j['*所属组织编码'] = j['*所属组织编码'] ? (orgArr.includes(j['*所属组织编码']) ? this.findParent([], j['*所属组织编码'], this.orgOptions).reverse() : '') : ''
          j['*在职状态'] = j['*在职状态'] ? this.statusArr.find(e => e.name === j['*在职状态']).code : 'Y'
          j.uuid = nanoid()
        })
      }
      // éžç¬¬ä¸€æ¬¡æ¸²æŸ“
      if (!isFirstUpload) {
        this.tableData[0].forEach(j => {
          j.所属岗位编码 = typeof j.所属岗位编码 === 'string' ? j.所属岗位编码.split(',').filter(e => postArr.includes(e)) : []
          j.所属角色编码 = typeof j.所属角色编码 === 'string' ? j.所属角色编码.split(',').filter(e => roleArr.includes(e)) : []
          j.所属班组编码 = typeof j.所属班组编码 === 'string' ? j.所属班组编码.split(',').filter(e => groupArr.includes(e)) : []
          j['*所属组织编码'] = this.findParent([], j['*所属组织编码'], this.orgOptions).reverse()
          j.uuid = nanoid()
        })
      }
    },
    // å¤„理人员管理提交数据
    handlePersonListSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*用户编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('编码不能重复!')
      }
      this.tableData[0].forEach(j => {
        if (!j['*用户编号(唯一)']) {
          flag = false
          msg = '*用户编号(唯一)'
        }
        if (!j['*用户姓名']) {
          flag = false
          msg = '*用户姓名'
        }
        if (!j['*密码']) {
          flag = false
          msg = '*密码'
        }
        if (!j['*在职状态']) {
          flag = false
          msg = '*在职状态'
        }
        if (!j['*所属组织编码']) {
          flag = false
          msg = '*所属组织编码'
        }
      })
      if (!flag) {
        return { code: '301', message: msg + '不能为空!' }
      }
      this.tableData[0].forEach(j => {
        j['所属岗位编码'] = j['所属岗位编码'].join(',')
        j['所属班组编码'] = j['所属班组编码'].join(',')
        j['所属角色编码'] = j['所属角色编码'].join(',')
        j['*所属组织编码'] = j['*所属组织编码'][j['*所属组织编码'].length - 1]
      })
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // å¤„理角色管理提交数据
    handleRoleListSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*角色编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('编码不能重复!')
      }
      this.tableData[0].forEach(j => {
        if (!j['*角色编号(唯一)']) {
          flag = false
          msg = '*角色编号(唯一)'
        }
        if (!j['*角色名称']) {
          flag = false
          msg = '*角色名称'
        }
        if (!j['*状态']) {
          flag = false
          msg = '*状态'
        }
      })
      if (!flag) {
        return { code: '301', message: msg + '不能为空!' }
      }
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // å¤„理班组管理提交数据
    handleGroupListSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*角色编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('编码不能重复!')
      }
      this.tableData[0].forEach(j => {
        if (!j['*班组编号(唯一)']) {
          flag = false
          msg = '*班组编号(唯一)'
        }
        if (!j['*班组名称']) {
          flag = false
          msg = '*班组名称'
        }
        if (!j['*状态']) {
          flag = false
          msg = '*状态'
        }
      })
      if (!flag) {
        return { code: '301', message: msg + '不能为空!' }
      }
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // å¤„理岗位管理提交数据
    handlePostListSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*岗位编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('编码不能重复!')
      }
      this.tableData[0].forEach(j => {
        if (!j['*岗位编号(唯一)']) {
          flag = false
          msg = '*岗位编号(唯一)'
        }
        if (!j['*岗位名称']) {
          flag = false
          msg = '*岗位名称'
        }
        if (!j['*状态']) {
          flag = false
          msg = '*状态'
        }
      })
      if (!flag) {
        return { code: '301', message: msg + '不能为空!' }
      }
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // å¤„理往来单位提交数据
    handleContactUnitListSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*往来单位类型编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('往来单位类型编号不能重复!')
      }
      if ([...new Set(this.tableData[1].map(i => i['*往来单位编号(唯一)']))].length !== this.tableData[1].length) {
        return this.$message.info('往来单位编号不能重复!')
      }
      this.tableData[0].forEach(j => {
        if (!j['*往来单位类型编号(唯一)']) {
          flag = false
          msg = '*往来单位类型编号(唯一)不能为空!'
        }
        if (!j['*往来单位类型名称']) {
          flag = false
          msg = '*往来单位类型名称不能为空!'
        }
        if (j['*往来单位类型编号(唯一)'] === j['上级编码']) {
          flag = false
          msg = '*往来单位类型编号(唯一)与上级编码不能相同!'
        }
      })
      this.tableData[1].forEach(j => {
        if (!j['*往来单位编号(唯一)']) {
          flag = false
          msg = '*往来单位编号(唯一)不能为空!'
        }
        if (!j['*往来单位名称']) {
          flag = false
          msg = '*往来单位名称不能为空!'
        }
        if (!j['*状态']) {
          flag = false
          msg = '*状态不能为空!'
        }
        if (!j['*往来单位类型编码']) {
          flag = false
          msg = '*往来单位类型编码不能为空!'
        }
      })
      if (!flag) {
        return { code: '301', message: msg }
      }
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      this.tableData[1].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // å¤„理仓库设置提交数据
    handleWarehouseListSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*仓库编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('编码不能重复!')
      }
      this.tableData[0].forEach(j => {
        if (!j['*仓库编号(唯一)']) {
          flag = false
          msg = '*仓库编号(唯一)'
        }
        if (!j['*仓库名称']) {
          flag = false
          msg = '*仓库名称'
        }
        if (!j['*状态']) {
          flag = false
          msg = '*状态'
        }
        if (!j['*库位管理']) {
          flag = false
          msg = '*库位管理'
        }
      })
      if (!flag) {
        return { code: '301', message: msg + '不能为空!' }
      }
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // å¤„理库位设置提交数据
    handleStorageListSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*库位编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('编码不能重复!')
      }
      this.tableData[0].forEach(j => {
        if (!j['*库位编号(唯一)']) {
          flag = false
          msg = '*库位编号(唯一)不能为空!'
        }
        if (!j['*库位名称']) {
          flag = false
          msg = '*库位名称不能为空!'
        }
        if (!j['*所属仓库编码']) {
          flag = false
          msg = '*所属仓库编码不能为空!'
        }
        if (!j['*状态']) {
          flag = false
          msg = '*状态不能为空!'
        }
        if (j['上级库位编码'] === j['*库位编号(唯一)']) {
          flag = false
          msg = '*库位编号(唯一)与上级库位编码不能相同!'
        }
      })
      if (!flag) {
        return { code: '301', message: msg }
      }
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // å¤„理存货档案提交数据
    handleInventoryListSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*存货分类编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('存货分类编号不能重复!')
      }
      if ([...new Set(this.tableData[1].map(i => i['*存货编号(唯一)']))].length !== this.tableData[1].length) {
        return this.$message.info('存货编号不能重复!')
      }
      this.tableData[0].forEach(j => {
        if (!j['*存货分类编号(唯一)']) {
          flag = false
          msg = '*存货分类编号(唯一)不能为空!'
        }
        if (!j['*存货分类名称']) {
          flag = false
          msg = '*存货分类不能为空!'
        }
        if (j['*存货分类编号(唯一)'] === j['上级编码']) {
          flag = false
          msg = '*存货分类编号(唯一)与上级编码不能相同!'
        }
      })
      this.tableData[1].forEach(j => {
        if (!j['*存货编号(唯一)']) {
          flag = false
          msg = '*存货编号(唯一)不能为空!'
        }
        if (!j['*存货名称']) {
          flag = false
          msg = '*存货名称不能为空!'
        }
        if (!j['*存货分类编码']) {
          flag = false
          msg = '*存货分类编码不能为空!'
        }
        if (!j['*状态']) {
          flag = false
          msg = '*状态不能为空!'
        }
        if (!j['*计量方式']) {
          flag = false
          msg = '*计量方式不能为空!'
        }
        if (!j['*计量单位/组名称']) {
          flag = false
          msg = '*计量单位/组名称不能为空!'
        }
        if (!(j['是否外购'] === '1' || j['是否销售'] === '1' || j['是否自制'] === '1' || j['是否生产消耗'] === '1' || j['是否委外'] === '1')) {
          flag = false
          msg = '存货属性必须要选择其一!'
        }
      })
      if (!flag) {
        return { code: '301', message: msg }
      }
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      this.tableData[1].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // å¤„理设备清单提交数据
    handleDeviceListSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*设备类型编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('设备类型编号不能重复!')
      }
      if ([...new Set(this.tableData[1].map(i => i['*设备编号(唯一)']))].length !== this.tableData[1].length) {
        return this.$message.info('设备编号不能重复!')
      }
      this.tableData[0].forEach(j => {
        if (!j['*设备类型编号(唯一)']) {
          flag = false
          msg = '*设备类型编号(唯一)不能为空!'
        }
        if (!j['*设备类型名称']) {
          flag = false
          msg = '*设备类型名称不能为空!'
        }
      })
      this.tableData[1].forEach(j => {
        if (!j['*设备编号(唯一)']) {
          flag = false
          msg = '*设备编号(唯一)不能为空!'
        }
        if (!j['*设备名称']) {
          flag = false
          msg = '*设备名称不能为空!'
        }
        if (!j['*所属组织编码']) {
          flag = false
          msg = '*所属组织编码不能为空!'
        }
        if (!j['*设备类型编码']) {
          flag = false
          msg = '*设备类型编码不能为空!'
        }
        if (!j['*状态']) {
          flag = false
          msg = '*状态不能为空!'
        }
      })
      if (!flag) {
        return { code: '301', message: msg }
      }
      this.tableData[1].forEach(j => {
        j['*所属组织编码'] = j['*所属组织编码'][j['*所属组织编码'].length - 1]
      })
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      this.tableData[1].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // å¤„理工序设置提交数据
    handleProcessListSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*工序编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('编码不能重复!')
      }
      this.tableData[0].forEach(j => {
        if (!j['*工序编号(唯一)']) {
          flag = false
          msg = '*工序编号(唯一)'
        }
        if (!j['*工序名称']) {
          flag = false
          msg = '*工序名称'
        }
        if (!j['*工序类型']) {
          flag = false
          msg = '*工序类型'
        }
        if (!j['*状态']) {
          flag = false
          msg = '*状态'
        }
      })
      if (!flag) {
        return { code: '301', message: msg + '不能为空!' }
      }
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // å¤„理缺陷定义提交数据
    handleDefectDefineSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*缺陷编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('编码不能重复!')
      }
      this.tableData[0].forEach(j => {
        if (!j['*缺陷编号(唯一)']) {
          flag = false
          msg = '*缺陷编号(唯一)'
        }
        if (!j['*缺陷名称']) {
          flag = false
          msg = '*缺陷名称'
        }
      })
      if (!flag) {
        return { code: '301', message: msg + '不能为空!' }
      }
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // å¤„理模具清单提交数据
    handleMouldListSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*模具编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('模具清单编号不能重复!')
      }
      // if ([...new Set(this.tableData[1].map(i => i['*往来单位编号(唯一)']))].length !== this.tableData[1].length) {
      //   return this.$message.info('往来单位编号不能重复!')
      // }
      this.tableData[0].forEach(j => {
        if (!j['*模具编号(唯一)']) {
          flag = false
          msg = '*模具编号(唯一)不能为空!'
        }
        if (!j['*模具名称']) {
          flag = false
          msg = '*模具名称不能为空!'
        }
        if (!j['*状态']) {
          flag = false
          msg = '*状态不能为空!'
        }
        if (!j['*仓库编码']) {
          flag = false
          msg = '*仓库编码不能为空!'
        }
        if (!j['*库位编码']) {
          flag = false
          msg = '*库位编码不能为空!'
        }
      })
      this.tableData[1].forEach(j => {
        if (!j['模具编码'] && j['产品编码']) {
          flag = false
          msg = '模具编码不能为空!'
        }
        if (j['模具编码'] && !j['产品编码']) {
          flag = false
          msg = '产品编码不能为空!'
        }
      })
      if (!flag) {
        return { code: '301', message: msg }
      }
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      this.tableData[1].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // å¤„理模具点检项目提交数据
    handleMouldCheckPosSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*点检项目编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('编码不能重复!')
      }
      this.tableData[0].forEach(j => {
        if (!j['*点检项目编号(唯一)']) {
          flag = false
          msg = '*点检项目编号(唯一)'
        }
        if (!j['*点检项目名称']) {
          flag = false
          msg = '*点检项目名称'
        }
      })
      if (!flag) {
        return { code: '301', message: msg + '不能为空!' }
      }
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // å¤„理模具点检标准提交数据
    handleMouldCheckStandSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*模具点检标准编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('点检标准编号不能重复!')
      }
      if ([...new Set(this.tableData[1].map(i => i['*模具点检标准编号']))].length !== this.tableData[1].length) {
        return this.$message.info('模具点检标准编号不能重复!')
      }
      this.tableData[0].forEach(j => {
        if (!j['*模具点检标准编号(唯一)']) {
          flag = false
          msg = '*模具点检标准编号(唯一)不能为空!'
        }
        if (!j['*模具点检标准名称']) {
          flag = false
          msg = '*模具点检标准不能为空!'
        }
      })
      this.tableData[1].forEach(j => {
        if (!j['*模具点检标准编号']) {
          flag = false
          msg = '*模具点检标准编号不能为空!'
        }
        if (!j['*点检项序号']) {
          flag = false
          msg = '*点检项序号不能为空!'
        }
        if (!j['*模具点检项编号(唯一)']) {
          flag = false
          msg = '*模具点检项编号(唯一)不能为空!'
        }
        if (!j['*模具点检项名称']) {
          flag = false
          msg = '*模具点检项名称不能为空!'
        }
      })
      if (!flag) {
        return { code: '301', message: msg }
      }
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      this.tableData[1].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // å¤„理模具保养项目提交数据
    handleMouldMaintainSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*保养项目编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('编码不能重复!')
      }
      this.tableData[0].forEach(j => {
        if (!j['*保养项目编号(唯一)']) {
          flag = false
          msg = '*保养项目编号(唯一)'
        }
        if (!j['*保养项目名称']) {
          flag = false
          msg = '*保养项目名称'
        }
      })
      if (!flag) {
        return { code: '301', message: msg + '不能为空!' }
      }
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // å¤„理模具保养标准提交数据
    handleMouldMaintainStandSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*模具保养标准编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('保养标准编号不能重复!')
      }
      if ([...new Set(this.tableData[1].map(i => i['*模具保养标准编号']))].length !== this.tableData[1].length) {
        return this.$message.info('模具保养标准编号不能重复!')
      }
      this.tableData[0].forEach(j => {
        if (!j['*模具保养标准编号(唯一)']) {
          flag = false
          msg = '*模具保养标准编号(唯一)不能为空!'
        }
        if (!j['*模具保养标准名称']) {
          flag = false
          msg = '*模具保养标准不能为空!'
        }
      })
      this.tableData[1].forEach(j => {
        if (!j['*模具保养标准编号']) {
          flag = false
          msg = '*模具保养标准编号不能为空!'
        }
        if (!j['*保养项序号']) {
          flag = false
          msg = '*保养项序号不能为空!'
        }
        if (!j['*模具保养项编号(唯一)']) {
          flag = false
          msg = '*模具保养项编号(唯一)不能为空!'
        }
        if (!j['*模具保养项名称']) {
          flag = false
          msg = '*模具保养项名称不能为空!'
        }
      })
      if (!flag) {
        return { code: '301', message: msg }
      }
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      this.tableData[1].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // å¤„理设备点检项目提交数据
    handleCheckPositionSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*点检项目编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('编码不能重复!')
      }
      this.tableData[0].forEach(j => {
        if (!j['*点检项目编号(唯一)']) {
          flag = false
          msg = '*点检项目编号(唯一)'
        }
        if (!j['*点检项目名称']) {
          flag = false
          msg = '*点检项目名称'
        }
        if (!j['*点检周期']) {
          flag = false
          msg = '*点检周期'
        }
        if (!j['*是否扫码']) {
          flag = false
          msg = '*是否扫码'
        }
      })
      if (!flag) {
        return { code: '301', message: msg + '不能为空!' }
      }
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // å¤„理设备点检标准提交数据
    handleCheckStandardSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*设备点检标准编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('设备点检标准编号不能重复!')
      }
      // if ([...new Set(this.tableData[1].map(i => i['*模具保养标准编号']))].length !== this.tableData[1].length) {
      //   return this.$message.info('模具保养标准编号不能重复!')
      // }
      this.tableData[0].forEach(j => {
        if (!j['*设备点检标准编号(唯一)']) {
          flag = false
          msg = '*设备点检标准编号(唯一)不能为空!'
        }
        if (!j['*设备点检标准名称']) {
          flag = false
          msg = '*设备点检标准名称不能为空!'
        }
        if (!j['*点检管控']) {
          flag = false
          msg = '*点检管控不能为空!'
        }
      })
      this.tableData[1].forEach(j => {
        if (!j['*点检项序号']) {
          flag = false
          msg = '*点检项序号不能为空!'
        }
        if (!j['*设备点检标准编号(M)']) {
          flag = false
          msg = '*设备点检标准编号(M)不能为空!'
        }
        if (!j['*设备点检部位编号(唯一)']) {
          flag = false
          msg = '*设备点检部位编号(唯一)不能为空!'
        }
        if (!j['*设备点检部位名称']) {
          flag = false
          msg = '*设备点检部位名称不能为空!'
        }
        if (!j['*选择扫码']) {
          flag = false
          msg = '*选择扫码不能为空!'
        }
        if (!j['*点检周期']) {
          flag = false
          msg = '*点检周期不能为空!'
        }
      })
      if (!flag) {
        return { code: '301', message: msg }
      }
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      this.tableData[1].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // å¤„理设备保养项目提交数据
    handleMaintainPositionSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*保养项目编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('编码不能重复!')
      }
      this.tableData[0].forEach(j => {
        if (!j['*保养项目编号(唯一)']) {
          flag = false
          msg = '*保养项目编号(唯一)'
        }
        if (!j['*保养项目名称']) {
          flag = false
          msg = '*保养项目名称'
        }
        if (!j['*是否扫码']) {
          flag = false
          msg = '*是否扫码'
        }
      })
      if (!flag) {
        return { code: '301', message: msg + '不能为空!' }
      }
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // å¤„理设备保养标准提交数据
    handleMaintainStandardSubmitData() {
      let flag = true
      let msg = ''
      if ([...new Set(this.tableData[0].map(i => i['*设备保养标准编号(唯一)']))].length !== this.tableData[0].length) {
        return this.$message.info('设备保养标准编号不能重复!')
      }
      // if ([...new Set(this.tableData[1].map(i => i['*模具保养标准编号']))].length !== this.tableData[1].length) {
      //   return this.$message.info('模具保养标准编号不能重复!')
      // }
      this.tableData[0].forEach(j => {
        if (!j['*设备保养标准编号(唯一)']) {
          flag = false
          msg = '*设备保养标准编号(唯一)不能为空!'
        }
        if (!j['*设备保养标准名称']) {
          flag = false
          msg = '*设备保养标准名称不能为空!'
        }
        if (!j['*保养周期']) {
          flag = false
          msg = '*保养周期不能为空!'
        }
      })
      this.tableData[1].forEach(j => {
        if (!j['*保养项序号']) {
          flag = false
          msg = '*点检项序号不能为空!'
        }
        if (!j['*设备保养标准编号(M)']) {
          flag = false
          msg = '*设备保养标准编号(M)不能为空!'
        }
        if (!j['*设备保养部位编号(唯一)']) {
          flag = false
          msg = '*设备保养部位编号(唯一)不能为空!'
        }
        if (!j['*设备保养部位名称']) {
          flag = false
          msg = '*设备保养部位名称不能为空!'
        }
        if (!j['*选择扫码']) {
          flag = false
          msg = '*选择扫码不能为空!'
        }
      })
      if (!flag) {
        return { code: '301', message: msg }
      }
      this.tableData[0].map(item => {
        delete (item.uuid)
      })
      this.tableData[1].map(item => {
        delete (item.uuid)
      })
      return { code: '200', message: '成功!' }
    },
    // parents:用于返回的数组,childNode:要查询的节点,treeData:json树形数据
    findParent(parents, childNode, treeData) {
      // console.log(parents, childNode, treeData, 2)
      for (let i = 0; i < treeData.length; i++) {
        // çˆ¶èŠ‚ç‚¹æŸ¥è¯¢æ¡ä»¶
        if (treeData[i].torg_code === childNode) {
          // å¦‚果找到结果,保存当前节点
          parents.push(treeData[i].torg_code)
          // ç”¨å½“前节点再去原数据查找当前节点的父节点
          this.findParent(parents, treeData[i].parent_id, this.orgOptions)
          break
        } else {
          if (treeData[i].children instanceof Array) {
            //    æ²¡æ‰¾åˆ°ï¼ŒéåŽ†è¯¥èŠ‚ç‚¹çš„å­èŠ‚ç‚¹
            this.findParent(parents, childNode, treeData[i].children)
          }
        }
      }
      return parents
    },
    addRow() {
      // äººå‘˜ç®¡ç†æ–°å¢žè¡Œ
      if (this.sheetName.indexOf('人员管理') !== -1) {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*用户编号(唯一)': '',
          '*用户姓名': '',
          '*密码': '',
          '*在职状态': 'Y',
          '手机号': '',
          '邮箱': '',
          '*所属组织编码': '',
          '所属岗位编码': [],
          '所属角色编码': [],
          '所属班组编码': []
        })
      }
      //  è§’色管理新增行
      if (this.sheetName.indexOf('角色管理') !== -1) {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*角色编号(唯一)': '',
          '*角色名称': '',
          '*状态': 'Y',
          '描述': ''
        })
      }
      //  ç­ç»„管理新增行
      if (this.sheetName.indexOf('班组管理') !== -1) {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*班组编号(唯一)': '',
          '*班组名称': '',
          '*状态': 'Y',
          '描述': ''
        })
      }
      //  å²—位管理新增行
      if (this.sheetName.indexOf('岗位管理') !== -1) {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*岗位编号(唯一)': '',
          '*岗位名称': '',
          '*状态': 'Y',
          '描述': ''
        })
      }
      // å¾€æ¥å•位
      if (this.sheetName.indexOf('往来单位类型') !== -1 && this.activeName === '0') {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*往来单位类型编号(唯一)': '',
          '*往来单位类型名称': '',
          '上级编码': ''
        })
      }
      if (this.sheetName.indexOf('往来单位') !== -1 && this.activeName === '1') {
        this.tableData[1].unshift({
          uuid: nanoid(),
          '*往来单位编号(唯一)': '',
          '*往来单位名称': '',
          '*状态': '0',
          '*往来单位类型编码': '',
          '联系人': '',
          '联系方式': '',
          '地址': ''
        })
      }
      //  ä»“库设置
      if (this.sheetName.indexOf('仓库设置') !== -1) {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*仓库编号(唯一)': '',
          '*仓库名称': '',
          '*状态': '0',
          '*库位管理': '0',
          '描述': ''
        })
      }
      // åº“位设置
      if (this.sheetName.indexOf('库位设置') !== -1) {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*库位编号(唯一)': '',
          '*库位名称': '',
          '*所属仓库编码': '',
          '上级库位编码': '',
          '*状态': '0',
          '描述': ''
        })
      }
      // å­˜è´§æ¡£æ¡ˆ
      if (this.sheetName.indexOf('存货分类') !== -1 && this.activeName === '0') {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*存货分类编号(唯一)': '',
          '*存货分类名称': '',
          '上级编码': ''
        })
      }
      if (this.sheetName.indexOf('存货') !== -1 && this.activeName === '1') {
        this.tableData[1].unshift({
          uuid: nanoid(),
          '*存货编号(唯一)': '',
          '*存货名称': '',
          '规格型号': '',
          '*存货分类编码': '',
          '*状态': '0',
          '*计量方式': '',
          '计量单位/组名称': '',
          '所属仓库编码': '',
          '是否外购': '0',
          '是否销售': '0',
          '是否自制': '0',
          '是否生产消耗': '0',
          '是否委外': '0'
        })
      }
      // è®¾å¤‡æ¸…单
      if (this.sheetName.indexOf('设备类型') !== -1 && this.activeName === '0') {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*设备类型编号(唯一)': '',
          '*设备类型名称': '',
          '描述': ''
        })
      }
      if (this.sheetName.indexOf('设备清单') !== -1 && this.activeName === '1') {
        this.tableData[1].unshift({
          uuid: nanoid(),
          '*设备编号(唯一)': '',
          '*设备名称': '',
          '*所属组织编码': '',
          '设备类型编码': '',
          '*状态': 'Y'
        })
      }
      //  å·¥åºè®¾ç½®
      if (this.sheetName.indexOf('工序设置') !== -1) {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*工序编号(唯一)': '',
          '*工序名称': '',
          '*工序类型': 'Z',
          '*状态': 'Y',
          '描述': ''
        })
      }
      //  ç¼ºé™·å®šä¹‰
      if (this.sheetName.indexOf('缺陷定义') !== -1) {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*缺陷编号(唯一)': '',
          '*缺陷名称': '',
          '缺陷描述': ''
        })
      }
      //  æ¨¡å…·æ¸…单
      if (this.sheetName.indexOf('模具清单') !== -1 && this.activeName === '0') {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*模具编号(唯一)': '',
          '*模具名称': '',
          '规格型号': '',
          '*状态': 'Y',
          '*仓库编码': '',
          '*库位编码': '',
          '预计寿命(次)': '',
          '剩余寿命(次)': ''
        })
      }
      if (this.sheetName.indexOf('模具关联产品') !== -1 && this.activeName === '1') {
        this.tableData[1].unshift({
          uuid: nanoid(),
          '模具编码': '',
          '产品编码': ''
        })
      }
      //  æ¨¡å…·ç‚¹æ£€é¡¹
      if (this.sheetName.indexOf('模具点检项目') !== -1) {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*点检项目编号(唯一)': '',
          '*点检项目名称': '',
          '要求描述': ''
        })
      }
      //  æ¨¡å…·ç‚¹æ£€æ ‡å‡†
      if (this.sheetName.indexOf('模具点检标准') !== -1 && this.activeName === '0') {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*模具点检标准编号(唯一)': '',
          '*模具点检标准名称': '',
          '标准描述': ''
        })
      }
      if (this.sheetName.indexOf('关联模具点检部位') !== -1 && this.activeName === '1') {
        this.tableData[1].unshift({
          uuid: nanoid(),
          '*模具点检标准编号': '',
          '*点检项序号': '',
          '*模具点检项编号(唯一)': '',
          '*模具点检项名称': '',
          '点检项要求': ''
        })
      }
      //  æ¨¡å…·ä¿å…»é¡¹
      if (this.sheetName.indexOf('模具保养项目') !== -1) {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*保养项目编号(唯一)': '',
          '*保养项目名称': '',
          '要求描述': ''
        })
      }
      //  æ¨¡å…·ä¿å…»æ ‡å‡†
      if (this.sheetName.indexOf('模具保养标准') !== -1 && this.activeName === '0') {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*模具保养标准编号(唯一)': '',
          '*模具保养标准名称': '',
          '标准描述': ''
        })
      }
      if (this.sheetName.indexOf('关联模具保养部位') !== -1 && this.activeName === '1') {
        this.tableData[1].unshift({
          uuid: nanoid(),
          '*模具保养标准编号': '',
          '*保养项序号': '',
          '*模具保养项编号(唯一)': '',
          '*模具保养项名称': '',
          '保养项要求': ''
        })
      }
      //  è®¾å¤‡ç‚¹æ£€é¡¹ç›®
      if (this.sheetName.indexOf('设备点检项目') !== -1) {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*点检项目编号(唯一)': '',
          '*点检项目名称': '',
          '*点检周期': '',
          '*是否扫码': '',
          '点检项目要求': ''
        })
      }
      // è®¾å¤‡ç‚¹æ£€æ ‡å‡†
      if (this.sheetName.indexOf('设备点检标准') !== -1 && this.activeName === '0') {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*设备点检标准编号(唯一)': '',
          '*设备点检标准名称': '',
          '*点检管控': '',
          '标准描述': ''
        })
      }
      if (this.sheetName.indexOf('设备点检部位') !== -1 && this.activeName === '1') {
        this.tableData[1].unshift({
          uuid: nanoid(),
          '*设备点检标准编号(M)': '',
          '*点检项序号': '',
          '*设备点检部位编号(唯一)': '',
          '*设备点检部位名称': '',
          '点检部位要求': '',
          '*选择扫码': '',
          '*点检周期': ''
        })
      }
      //  è®¾å¤‡ç‚¹æ£€é¡¹ç›®
      if (this.sheetName.indexOf('设备保养项目') !== -1) {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*保养项目编号(唯一)': '',
          '*保养项目名称': '',
          '*是否扫码': '',
          '保养项目要求': ''
        })
      }
      // è®¾å¤‡ä¿å…»æ ‡å‡†
      if (this.sheetName.indexOf('设备保养标准') !== -1 && this.activeName === '0') {
        this.tableData[0].unshift({
          uuid: nanoid(),
          '*设备保养标准编号(唯一)': '',
          '*设备保养标准名称': '',
          '*保养周期': '',
          '标准描述': ''
        })
      }
      if (this.sheetName.indexOf('设备保养部位') !== -1 && this.activeName === '1') {
        this.tableData[1].unshift({
          uuid: nanoid(),
          '*保养项序号': '',
          '*设备保养标准编号(M)': '',
          '*设备保养部位编号(唯一)': '',
          '*设备保养部位名称': '',
          '保养部位要求': '',
          '*选择扫码': ''
        })
      }
      //
    },
    delRow(row) {
      // é’ˆå¯¹å•sheet
      if (this.sheetName.length === 1) {
        if (this.tableData[0].length > 1) {
          return this.tableData[0].splice(this.tableData[0].findIndex(i => i.uuid === row.uuid), 1)
        } else {
          return this.$message.info('必须要有一条数据!')
        }
      }
      // é’ˆå¯¹ä¸¤ä¸ª sheet
      if (this.sheetName.length === 2) {
        if (this.activeName === '0') {
          if (this.tableData[0].length > 1) {
            return this.tableData[0].splice(this.tableData[0].findIndex(i => i.uuid === row.uuid), 1)
          } else {
            return this.$message.info('必须要有一条数据!')
          }
        }
        if (this.activeName === '1') {
          if (this.tableData[1].length > 1) {
            return this.tableData[1].splice(this.tableData[1].findIndex(i => i.uuid === row.uuid), 1)
          } else {
            return this.$message.info('必须要有一条数据!')
          }
        }
      }
    },
    reset() {
      this.tableData = []
      this.tableHeader = []
      this.sheetName = []
      this.excelCode = ''
    },
    handleClose() {
      this.dialogTableData = []
    },
    // èŽ·å–æ¨¡æ¿
    async getExcelModelData() {
      const { data: res } = await ExcelModelData()
      this.excelArr = res
      if (window.location.hash.indexOf('?') !== -1) {
        this.excelCode = window.location.hash.split('?')[1].split('=')[1]
      }
    },
    // æ¨¡æ¿ä¸‹è½½
    async getExcel() {
      const res = await DownLoadExcel({ FileCode: this.excelCode })
      if (res.code === '200') {
        window.location.href = res.data
      }
    },
    async getSelectArr() {
      await this.getPrentOrganization()
      await this.getPostPermissions()
      await this.getRolePermissions()
      await this.getGroupsPermissions()
    },
    // ç»„织架构级联选择器
    async getPrentOrganization() {
      const { data: res } = await PrentOrganization()
      this.orgArr = res
      this.orgOptions = arrayToTree(res, {
        parentProperty: 'parent_id',
        customID: 'torg_code',
        childrenProperty: 'children'
      })
    },
    // èŽ·å–å²—ä½ä¸‹æ‹‰æ•°ç»„
    async getPostPermissions() {
      const { data: res } = await PostPermissions()
      this.postArr = res
    },
    // èŽ·å–è§’è‰²ä¸‹æ‹‰æ•°ç»„
    async getRolePermissions() {
      const { data: res } = await RolePermissions()
      this.roleArr = res
    },
    // èŽ·å–ç­ç»„ä¸‹æ‹‰æ•°ç»„
    async getGroupsPermissions() {
      const { data: res } = await GroupsPermissions()
      this.groupArr = res
    },
    headerCellStyle({ row, column, rowIndex, columnIndex }) {
      let string = ''
      if (column.label.indexOf('*') !== -1 && rowIndex === 0) {
        string = 'background:#ffc000;'
      } else if (column.label.indexOf('*') === -1 && rowIndex === 0) {
        string = 'background:#00b0f0;'
      }
      // else if (rowIndex === 0 && columnIndex === 0) {
      //   string = 'background:red;color:#fff'
      // }
      return string + 'padding: 5px 0; fontWeight: 500;'
    },
    cellStyle() {
      const option = {
        padding: '5px 0'
      }
      return option
    },
    indexRender(h, { column }) {
      return [
        h('span', { style: 'color:#FFF' }, column.label)
      ]
    },
    operationRender(h, { column }) {
      return [
        h('span', { style: 'color:#FFF' }, column.label)
      ]
    },
    addRedStar(h, { column }) {
      if (column.label.indexOf('*') !== -1) { // å¿…填字段
        return [
          h('span', { style: 'color:#F56C6C' }, ' * '),
          h('span', { style: 'color:#FFF' }, column.label.substring(1))
        ]
      } else { // éžå¿…填字段
        return [
          // h('span', { style: 'color:#F56C6C' }, ' * '),
          h('span', { style: 'color:#FFF' }, column.label)
        ]
      }
    },
    // æ•°æ®æäº¤å‰åŽ»é™¤ç©ºæ ¼æ–¹æ³•
    tableDataTrim() {
      if (this.tableData.length === 1) { // ä¸€ä¸ªsheet
        this.tableData[0].forEach(i => {
          for (const j in i) {
            i[j] = i[j].trim()
          }
        })
      }
      if (this.tableData.length === 2) { // ä¸¤ä¸ªsheet
        this.tableData[0].forEach(i => {
          for (const j in i) {
            i[j] = i[j].trim()
          }
        })
        this.tableData[1].forEach(i => {
          for (const j in i) {
            i[j] = i[j].trim()
          }
        })
      }
    }
  }
}
</script>
<style lang="scss">
::v-deep .el-dialog__body {
  padding: 10px 10px !important;
}
</style>
vue.config.js
@@ -52,6 +52,7 @@
    },
    proxy: {
      [process.env.VUE_APP_BASE_API]: {
        // target: 'http://121.196.36.24:8032', // æœ¬åœ°
        // target: 'http://192.168.1.237:8000', // è¯·æ±‚的第三⽅接⼝地址    å®¢æˆ·
        target: 'http://192.168.2.254:8000', // è¯·æ±‚的第三⽅接⼝地址       æœ¬åœ°å¼€å‘服务器  æ²£æ²£
        changeOrigin: true, // è¯·æ±‚跨域时,需 é…ç½®æ­¤é¡¹