loulijun2021
2023-10-12 4247aadaaead42cc62d98be114f2a36b7222c507
src/views/systemSetting/dataImport.vue
@@ -128,8 +128,8 @@
                    item.indexOf('所属仓库编码')!==-1||
                    item.indexOf('上级库位编码')!==-1||
                    item.indexOf('规格型号')!==-1||
                    item.indexOf('存货分类编码')!==-1||
                    item.indexOf('计量方式')!==-1||
                    item.indexOf('存货分类')!==-1||
                    item.indexOf('计量单位/组名称')!==-1
                  "
                >
@@ -145,6 +145,38 @@
                  >
                    <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"
@@ -357,6 +389,10 @@
        { code: '1', name: '是' },
        { code: '0', name: '否' }
      ],
      stepTypeArr: [
        { code: 'Z', name: '自制' },
        { code: 'W', name: '外协' }
      ],
      orgArr: [], // 组织
      orgOptions: [],
      defaultProps: {
@@ -377,6 +413,11 @@
      dialogVisible: false,
      dialogTableData: [],
      meterMethodArr: [
        { code: 'S', name: '单计量' },
        { code: 'M', name: '多计量' }
      ],
      activeName: '0'// tab选中值
@@ -441,8 +482,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()
@@ -465,9 +506,53 @@
        })
      }
      // 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.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()
        })
      }
    },
    // 提交
    submit() {
@@ -522,6 +607,30 @@
              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)
            }
          }
          const data = {
            fileCode: this.excelCode,
@@ -561,6 +670,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 => {
@@ -581,7 +699,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)) : []
@@ -593,7 +711,7 @@
        })
      }
      // 非第一次提交
      // 非第一次渲染
      if (!isFirstUpload) {
        this.tableData[0].forEach(j => {
          j.所属岗位编码 = typeof j.所属岗位编码 === 'string' ? j.所属岗位编码.split(',').filter(e => postArr.includes(e)) : []
@@ -779,7 +897,7 @@
        }
        if (!j['*往来单位名称']) {
          flag = false
          msg = '*往来单位名称'
          msg = '*往来单位名称不能为空!'
        }
        if (!j['*状态']) {
          flag = false
@@ -882,26 +1000,197 @@
    },
    // 处理存货档案提交数据
    handleInventoryListSubmitData() {
    },
    // 获取模板
    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]
      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: '成功!' }
    },
    // 模板下载
    async getExcel() {
      const res = await DownLoadExcel({ FileCode: this.excelCode })
      window.location.href = res.data
    // 处理设备清单提交数据
    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: '成功!' }
    },
    handleClose() {
      this.dialogTableData = []
    // 处理工序设置提交数据
    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: '成功!' }
    },
    // parents:用于返回的数组,childNode:要查询的节点,treeData:json树形数据
    findParent(parents, childNode, treeData) {
      // console.log(parents, childNode, treeData, 2)
@@ -984,7 +1273,7 @@
          uuid: nanoid(),
          '*往来单位编号(唯一)': '',
          '*往来单位名称': '',
          '*状态': 'Y',
          '*状态': '0',
          '*往来单位类型编码': '',
          '联系人': '',
          '联系方式': '',
@@ -1014,26 +1303,70 @@
          '描述': ''
        })
      }
      // 存货档案
      if (this.sheetName.indexOf('存货类型') !== -1 && this.activeName === '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({ // 还未写完
        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(),
          '*缺陷编号(唯一)': '',
          '*缺陷名称': '',
          '缺陷描述': ''
        })
      }
    },
@@ -1070,6 +1403,23 @@
      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()
      await this.getPostPermissions()