loulijun2021
2024-01-02 02afe7d767ddc37bcad1f8df121e7815fe2fe177
src/views/systemSetting/dataImport.vue
@@ -12,9 +12,9 @@
      >
        <el-option
          v-for="item in excelArr"
          :key="item.fileCode"
          :label="item.fileName"
          :value="item.fileCode"
          :key="item.FileCode"
          :label="item.FileName"
          :value="item.FileCode"
        />
      </el-select>
@@ -70,7 +70,7 @@
      style="margin: 10px"
    >
      <el-tabs v-model="activeName" type="border-card" @tab-click="handleTabClick">
      <el-tabs v-model="activeName" type="border-card">
        <el-tab-pane
          v-for="(i,j) in sheetName"
          :key="i+j"
@@ -124,7 +124,27 @@
                    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="请输入" />
@@ -139,6 +159,84 @@
                  >
                    <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"
@@ -248,7 +346,7 @@
      v-el-drag-dialog
      title="失败原因"
      :visible.sync="dialogVisible"
      width="1000px"
      width="1300px"
      :close-on-click-modal="false"
      top="15vh"
      @closed="handleClose"
@@ -274,13 +372,13 @@
            label="序号"
          />
          <el-table-column
            prop="errorField"
            prop="ErrorField"
            label="错误字段"
            width="200"
            show-overflow-tooltip
          />
          <el-table-column
            prop="errorCont"
            prop="ErrorCont"
            show-overflow-tooltip
            label="错误原因"
          />
@@ -322,6 +420,14 @@
      excelArr: [],
      statusArr: [],
      isYesOrNo: [
        { code: '1', name: '是' },
        { code: '0', name: '否' }
      ],
      stepTypeArr: [
        { code: 'Z', name: '自制' },
        { code: 'W', name: '外协' }
      ],
      orgArr: [], // 组织
      orgOptions: [],
      defaultProps: {
@@ -342,6 +448,19 @@
      dialogVisible: false,
      dialogTableData: [],
      meterMethodArr: [
        { code: 'S', name: '单计量' },
        { code: 'M', name: '多计量' }
      ],
      cycleArr: [
        { code: '年', name: '年' },
        { code: '季', name: '季' },
        { code: '月', name: '月' },
        { code: '周', name: '周' },
        { code: '日', name: '日' }
      ],
      activeName: '0'// tab选中值
@@ -406,8 +525,8 @@
      if (this.sheetName.indexOf('往来单位') !== -1) {
        this.statusArr = [
          { code: 'Y', name: '正常' },
          { code: 'N', name: '停用' }
          { code: '0', name: '正常' },
          { code: '1', name: '停用' }
        ]
        this.tableData[0].forEach(j => {
          j.uuid = nanoid()
@@ -418,9 +537,156 @@
        })
      }
      // console.log(this.sheetName)
      // console.log(this.tableData)
      // console.log(this.tableHeader)
      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.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() {
@@ -462,6 +728,110 @@
            }
          }
          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
@@ -500,6 +870,15 @@
            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 => {
@@ -520,7 +899,7 @@
      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)) : []
@@ -532,7 +911,7 @@
        })
      }
      // 非第一次提交
      // 非第一次渲染
      if (!isFirstUpload) {
        this.tableData[0].forEach(j => {
          j.所属岗位编码 = typeof j.所属岗位编码 === 'string' ? j.所属岗位编码.split(',').filter(e => postArr.includes(e)) : []
@@ -718,7 +1097,7 @@
        }
        if (!j['*往来单位名称']) {
          flag = false
          msg = '*往来单位名称'
          msg = '*往来单位名称不能为空!'
        }
        if (!j['*状态']) {
          flag = false
@@ -743,24 +1122,679 @@
      return { code: '200', message: '成功!' }
    },
    // 获取模板
    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]
    // 处理仓库设置提交数据
    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: '成功!' }
    },
    // 模板下载
    async getExcel() {
      const res = await DownLoadExcel({ FileCode: this.excelCode })
      window.location.href = res.data
    // 处理库位设置提交数据
    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 = '*状态不能为空!'
        }
      })
      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: '成功!' }
    },
    handleClose() {
      this.dialogTableData = []
    },
    // parents:用于返回的数组,childNode:要查询的节点,treeData:json树形数据
    findParent(parents, childNode, treeData) {
      // console.log(parents, childNode, treeData, 2)
@@ -829,6 +1863,7 @@
          '描述': ''
        })
      }
      // 往来单位
      if (this.sheetName.indexOf('往来单位类型') !== -1 && this.activeName === '0') {
        this.tableData[0].unshift({
          uuid: nanoid(),
@@ -842,13 +1877,251 @@
          uuid: nanoid(),
          '*往来单位编号(唯一)': '',
          '*往来单位名称': '',
          '*状态': 'Y',
          '*状态': '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
@@ -882,6 +2155,23 @@
      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 })
      window.location.href = res.data
    },
    async getSelectArr() {
      await this.getPrentOrganization()
@@ -954,6 +2244,29 @@
          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()
          }
        })
      }
    }
  }
@@ -962,7 +2275,7 @@
<style lang="scss">
::v-deep .el-dialog__body {
  padding: 20px 20px !important;
  padding: 10px 10px !important;
}
</style>