<template> 
 | 
  <GlobalWindow 
 | 
    :title="title" 
 | 
    :visible.sync="visible" 
 | 
    :confirm-working="isWorking" 
 | 
    @confirm="confirm" 
 | 
  > 
 | 
  <el-form :model="form" ref="form" :rules="rules"  > 
 | 
    <el-form-item label="选择仓库" prop="warehouseId"> 
 | 
      <el-select v-model="form.warehouseId" placeholder="请选择" @visible-change="visibleChange" :loading="loading" clearable filterable @change="selectWarehouse"> 
 | 
        <el-option 
 | 
          v-for="item in options" 
 | 
          :key="item.value" 
 | 
          :label="item.name" 
 | 
          :value="item.id"> 
 | 
        </el-option> 
 | 
      </el-select> 
 | 
    </el-form-item> 
 | 
    <el-form-item label="货位编码" prop="code"> 
 | 
      <el-input v-model="form.code" :disabled="form.id" placeholder="可填写,忽略将自动生成" v-trim/> 
 | 
    </el-form-item> 
 | 
    <el-form-item label="货位属性" prop="systemDicDataId"> 
 | 
      <el-select v-model="form.systemDicDataId" placeholder="请选择" clearable filterable :disabled="notSelect"> 
 | 
        <el-option 
 | 
          v-for="item in properties()" 
 | 
          :key="item.value" 
 | 
          :label="item.code" 
 | 
          :value="item.id"> 
 | 
        </el-option> 
 | 
      </el-select> 
 | 
    </el-form-item> 
 | 
    <el-form-item label="区域" prop="area"> 
 | 
        <el-input v-model="form.area" placeholder="请输入" v-trim/> 
 | 
    </el-form-item> 
 | 
    <el-form-item label="货架" prop="shelf" > 
 | 
        <el-input v-model="form.shelf" placeholder="请输入" v-trim/> 
 | 
    </el-form-item> 
 | 
    <el-form-item label="货格" prop="cell"> 
 | 
        <el-input v-model="form.cell" placeholder="请输入" v-trim/> 
 | 
    </el-form-item> 
 | 
  </el-form> 
 | 
  </GlobalWindow> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import BaseOpera from '@/components/base/BaseOpera' 
 | 
import GlobalWindow from '@/components/common/GlobalWindow' 
 | 
import { queryListByJurisdiction as getAllData } from '@/api/ext/warehouseLocationExt' 
 | 
import { queryListByCode } from '@/api/system/dictData' 
 | 
import { validateSpecialKey } from '@/assets/js/validate' 
 | 
export default { 
 | 
  name: 'OperaWarehouseLocationExtWindow', 
 | 
  extends: BaseOpera, 
 | 
  components: { GlobalWindow }, 
 | 
  data () { 
 | 
    return { 
 | 
      // 表单数据 
 | 
      form: { 
 | 
        id: null, 
 | 
        area: '', 
 | 
        cell: '', 
 | 
        code: '', 
 | 
        shelf: '', 
 | 
        systemDicDataId: null, 
 | 
        warehouseId: '' 
 | 
      }, 
 | 
      options: [], 
 | 
      loading: false, 
 | 
      notSelect: false, 
 | 
      // 验证规则 
 | 
      rules: { 
 | 
        warehouseId: [ 
 | 
          { required: true, message: '请选择仓库名称', trigger: 'change' } 
 | 
        ], 
 | 
        systemDicDataId: [{ required: true, message: '请选择货位属性', trigger: 'change' }], 
 | 
        // code: [ 
 | 
        //   { required: true, message: '请输入货位编码', trigger: 'blur' }, 
 | 
        //   { max: 20, message: '输入字数不超过20', trigger: 'blur' }, 
 | 
        //   { validator: validateSpecialKey, trigger: 'blur' } 
 | 
        // ], 
 | 
        area: [ 
 | 
          { required: true, message: '请输入区域', trigger: 'blur' }, 
 | 
          { max: 10, message: '输入字数不超过10', trigger: 'blur' } 
 | 
        ], 
 | 
        shelf: [ 
 | 
          { max: 10, message: '输入字数不超过10', trigger: 'blur' } 
 | 
        ], 
 | 
        cell: [ 
 | 
          { max: 10, message: '输入字数不超过10', trigger: 'blur' } 
 | 
        ] 
 | 
      } 
 | 
    } 
 | 
  }, 
 | 
  inject: ['properties'], 
 | 
  created () { 
 | 
    this.config({ 
 | 
      api: '/ext/warehouseLocationExt', 
 | 
      'field.id': 'id' 
 | 
    }) 
 | 
   
 | 
  }, 
 | 
  watch: { 
 | 
    visible(news, old) { 
 | 
      if (news) { 
 | 
        this.visibleChange(true) 
 | 
      } 
 | 
    } 
 | 
  }, 
 | 
  methods: { 
 | 
    // 仓库名称 
 | 
    visibleChange (e) { 
 | 
      if (e) { 
 | 
        getAllData({ useLocation: 1, departId: this.$store.state.userInfo.curComDepartment.id, status: 1 }) 
 | 
          .then((res) => { 
 | 
            this.options = res 
 | 
          }) 
 | 
      } 
 | 
    }, 
 | 
    selectWarehouse (v) { 
 | 
      // console.log(v) 
 | 
      this.notSelect = false 
 | 
      for (const item of this.options()) { 
 | 
        if (item.id === v) { 
 | 
          // console.log(item) 
 | 
          for (const p of this.properties()) { 
 | 
            if (p.id === parseInt(item.systemDicDataId)) { 
 | 
              if (p.label !== 'APPLIANCE_MIX') { 
 | 
                // console.log('单属性', p) 
 | 
                this.form.systemDicDataId = p.id 
 | 
                this.notSelect = true 
 | 
                return 
 | 
              } 
 | 
            } 
 | 
          } 
 | 
          return 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</script> 
 |