loulijun2021
2023-09-19 803e43f2bf21fc9ba86a157e2e25d86c57a4868f
1.库位导入、存货导入
已修改2个文件
202 ■■■■ 文件已修改
src/views/basicSettings/storageList.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/systemSetting/dataImport.vue 181 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basicSettings/storageList.vue
@@ -63,7 +63,13 @@
        >
          <div class="bodyTopButtonGroup" style="justify-content: space-between">
            <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button>
            <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=7')">导入</el-button>
            <el-button
              v-waves
              type="success"
              icon="el-icon-download"
              @click="$router.push('./../systemSetting/dataImport?fileCode=7')"
            >导入
            </el-button>
          </div>
          <div class="bodyTopFormGroup">
@@ -658,7 +664,18 @@
    stckcodeChange(val) {
      this.dialogForm.parentlocacode = ''
      this.parentlocacodeArr = this.treeLeftArr.filter(i => i.idparent === val)
      const res = this.recursiveLookupArray([], val)// 递归查找数组
      this.parentlocacodeArr = res
    },
    recursiveLookupArray(newArr, val) {
      const temp = this.treeLeftArr.filter(i => i.idparent === val)
      if (temp.length > 0 && temp) {
        temp.forEach(i => {
          newArr.push(i)
          this.recursiveLookupArray(newArr, i.code)
        })
      }
      return newArr
    },
    // 递归取子集的所有code
src/views/systemSetting/dataImport.vue
@@ -129,7 +129,7 @@
                    item.indexOf('上级库位编码')!==-1||
                    item.indexOf('规格型号')!==-1||
                    item.indexOf('存货分类编码')!==-1||
                    item.indexOf('计量方式')!==-1||
                    item.indexOf('计量单位/组名称')!==-1
                  "
                >
@@ -145,6 +145,22 @@
                  >
                    <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"
@@ -378,6 +394,11 @@
      dialogVisible: false,
      dialogTableData: [],
      meterMethodArr: [
        { code: 'S', name: '单计量' },
        { code: 'M', name: '多计量' }
      ],
      activeName: '0'// tab选中值
    }
@@ -441,8 +462,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 +486,25 @@
        })
      }
      // 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()
        })
      }
    },
    // 提交
    submit() {
@@ -518,6 +555,12 @@
          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)
            }
@@ -779,7 +822,7 @@
        }
        if (!j['*往来单位名称']) {
          flag = false
          msg = '*往来单位名称'
          msg = '*往来单位名称不能为空!'
        }
        if (!j['*状态']) {
          flag = false
@@ -882,25 +925,71 @@
    },
    // 处理存货档案提交数据
    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('存货分类编号不能重复!')
      }
    },
    // 模板下载
    async getExcel() {
      const res = await DownLoadExcel({ FileCode: this.excelCode })
      window.location.href = res.data
    },
    handleClose() {
      this.dialogTableData = []
      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: '成功!' }
    },
    // parents:用于返回的数组,childNode:要查询的节点,treeData:json树形数据
    findParent(parents, childNode, treeData) {
@@ -984,7 +1073,7 @@
          uuid: nanoid(),
          '*往来单位编号(唯一)': '',
          '*往来单位名称': '',
          '*状态': 'Y',
          '*状态': '0',
          '*往来单位类型编码': '',
          '联系人': '',
          '联系方式': '',
@@ -1014,7 +1103,6 @@
          '描述': ''
        })
      }
      // 存货档案
      if (this.sheetName.indexOf('存货类型') !== -1 && this.activeName === '0') {
        this.tableData[0].unshift({
@@ -1025,15 +1113,21 @@
        })
      }
      if (this.sheetName.indexOf('存货') !== -1 && this.activeName === '1') {
        this.tableData[1].unshift({ // 还未写完
        this.tableData[1].unshift({
          uuid: nanoid(),
          '*往来单位编号(唯一)': '',
          '*往来单位名称': '',
          '*状态': 'Y',
          '*往来单位类型编码': '',
          '联系人': '',
          '联系方式': '',
          '地址': ''
          '*存货编码(唯一)': '',
          '*存货名称': '',
          '规格型号': '',
          '*存货分类编码': '',
          '*状态': '0',
          '*计量方式': '',
          '计量单位/组名称': '',
          '所属仓库编码': '',
          '是否外购': '0',
          '是否销售': '0',
          '是否自制': '0',
          '是否生产消耗': '0',
          '是否委外': '0'
        })
      }
    },
@@ -1070,6 +1164,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()