<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="code"> 
 | 
        <el-input v-model="form.code" :disabled="form.id" placeholder="可填写,忽略将自动生成" v-trim/> 
 | 
      </el-form-item> 
 | 
      <el-form-item label="设备名称:" prop="name"> 
 | 
        <el-input v-model="form.name" placeholder="请输入设备名称" v-trim/> 
 | 
      </el-form-item> 
 | 
      <el-form-item label="设备型号:" prop="model"> 
 | 
        <el-input v-model="form.model" placeholder="请输入设备型号" v-trim/> 
 | 
      </el-form-item> 
 | 
      <el-form-item label="所属工序:" prop="procedureId"> 
 | 
        <el-select style="width:48%;" v-model="factory" @visible-change="visibleChange" :loading="loading" placeholder="请选择工厂" filterable clearable @change="selectFactory"> 
 | 
          <el-option 
 | 
            v-for="item in factoreis" 
 | 
            :key="item.id" 
 | 
            :label="item.name" 
 | 
            :value="item.id" 
 | 
          > 
 | 
          </el-option> 
 | 
        </el-select> 
 | 
        <div style="width:4%;display: inline-block;"></div> 
 | 
        <el-select style="width:48%" v-model="form.procedureId" placeholder="请选择工序" filterable clearable @change="selectProcedure"> 
 | 
          <el-option 
 | 
            v-for="item in productes" 
 | 
            :key="item.id" 
 | 
            :label="item.name" 
 | 
            :value="item.id" 
 | 
          > 
 | 
          </el-option> 
 | 
        </el-select> 
 | 
      </el-form-item> 
 | 
          <!-- <el-select v-model="form.procedureId" placeholder="请选择" @change="selectProcedure"> 
 | 
              <el-option 
 | 
                  v-for="item in productes" 
 | 
                  :key="item.id" 
 | 
                  :label="item.name" 
 | 
                  :value="item.id"> 
 | 
              </el-option> 
 | 
          </el-select> 
 | 
      </el-form-item> --> 
 | 
      <!-- <el-form-item label="关联货位" prop="updateTime"> 
 | 
          <el-select v-model="form.updateTime" placeholder="请选择"> 
 | 
              <el-option 
 | 
                  v-for="item in options" 
 | 
                  :key="item.value" 
 | 
                  :label="item.label" 
 | 
                  :value="item.value"> 
 | 
              </el-option> 
 | 
          </el-select> 
 | 
      </el-form-item> --> 
 | 
      <el-form-item label="设备类型" prop="type"> 
 | 
         <el-select v-model="form.type" placeholder="请选择设备类型" filterable clearable @change="selectType"> 
 | 
            <el-option 
 | 
              v-for="item in level" 
 | 
              :key="item.id" 
 | 
              :label="item.name" 
 | 
              :value="item.id"> 
 | 
            </el-option> 
 | 
         </el-select> 
 | 
      </el-form-item> 
 | 
      <el-form-item v-if="form.type==1" label="所属设备组:" prop="groupId"> 
 | 
         <el-select v-model="form.groupId" placeholder="请选择设备组" filterable clearable @change="selectGroup"> 
 | 
            <el-option 
 | 
              v-for="item in diveGroup" 
 | 
              :key="item.id" 
 | 
              :label="item.name" 
 | 
              :value="item.id"> 
 | 
            </el-option> 
 | 
         </el-select> 
 | 
      </el-form-item> 
 | 
      <el-form-item label="关联待生产货位:" prop="produceWarehouseLocationId"> 
 | 
        <el-select style="width:48%;" v-model="produceWarehouse" placeholder="请选择仓库" @visible-change="visibleChange1" :loading="loading" filterable clearable :disabled="canSelect" @change="selectProduceWarehouse"> 
 | 
          <el-option 
 | 
            v-for="item in warehousesone" 
 | 
            :key="item.id" 
 | 
            :label="item.name" 
 | 
            :value="item.id" 
 | 
          > 
 | 
          </el-option> 
 | 
        </el-select> 
 | 
        <div style="width:4%;display: inline-block;"></div> 
 | 
        <el-select style="width:48%" v-model="form.produceWarehouseLocationId" filterable clearable :disabled="canSelect" placeholder="请选择"> 
 | 
          <el-option 
 | 
            v-for="item in produceWarehouseLocation" 
 | 
            :key="item.id" 
 | 
            :label="item.unionName" 
 | 
            :value="item.id" 
 | 
          > 
 | 
          </el-option> 
 | 
        </el-select> 
 | 
      </el-form-item> 
 | 
      <el-form-item label="关联已完工货位:" prop="finishWarehouseLocationId"> 
 | 
        <el-select style="width:48%;" v-model="finishWarehouse" placeholder="请选择仓库" @visible-change="visibleChange2" :loading="loading" filterable clearable :disabled="canSelect" @change="selectFinishWarehouse"> 
 | 
          <el-option 
 | 
            v-for="item in warehouses" 
 | 
            :key="item.id" 
 | 
            :label="item.name" 
 | 
            :value="item.id" 
 | 
          > 
 | 
          </el-option> 
 | 
        </el-select> 
 | 
        <div style="width:4%;display: inline-block;"></div> 
 | 
        <el-select style="width:48%" v-model="form.finishWarehouseLocationId" filterable clearable :disabled="canSelect" placeholder="请选择"> 
 | 
          <el-option 
 | 
            v-for="item in finishWarehouserLocation" 
 | 
            :key="item.id" 
 | 
            :label="item.unionName" 
 | 
            :value="item.id" 
 | 
          > 
 | 
          </el-option> 
 | 
        </el-select> 
 | 
      </el-form-item> 
 | 
      <el-form-item label="所属员工:" prop="userIds"> 
 | 
        <el-select v-model="form.userIds" @visible-change="visibleChange3" :loading="loading" multiple clearable filterable placeholder="请选择" @change="selectUser"> 
 | 
          <el-option 
 | 
            v-for="(item, index) in user" 
 | 
            :key="item.id" 
 | 
            :label="index==0?'全部':(item.name + '-' + item.dmodel.name + '-' + item.phone)" 
 | 
            :value="item.id"> 
 | 
          </el-option> 
 | 
        </el-select> 
 | 
      </el-form-item> 
 | 
      <el-form-item label="工位编号:" prop="stationCode"> 
 | 
        <el-input v-model="form.stationCode" placeholder="请输入工位编号" v-trim/> 
 | 
      </el-form-item> 
 | 
    </el-form> 
 | 
  </GlobalWindow> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import BaseOpera from '@/components/base/BaseOpera' 
 | 
import GlobalWindow from '@/components/common/GlobalWindow' 
 | 
import { productesGroup } from '@/api/ext/proceduresExt' 
 | 
import { equipmentGroup } from '@/api/ext/deviceExt' 
 | 
import { queryWarehouseAllData } from '@/api/ext/warehouseExt' 
 | 
import { getDepartmentListByConditon } from '@/api/ext/departmentExt' 
 | 
import { validateSpecialKey } from '@/assets/js/validate' 
 | 
import { getListByWarehouseId } from '@/api/ext/warehouseLocationExt' 
 | 
import { companyUserExtAllUser as getUserDevice } from '@/api/ext/companyUserExt' 
 | 
export default { 
 | 
  name: 'OperaDeviceExtWindow', 
 | 
  extends: BaseOpera, 
 | 
  components: { GlobalWindow }, 
 | 
  data () { 
 | 
    return { 
 | 
      options: [ 
 | 
        { label: '测试一', value: 'a' }, 
 | 
        { label: '测试二', value: 'w' } 
 | 
      ], 
 | 
      loading: false, 
 | 
      factoreis: [], 
 | 
      factory: null, 
 | 
      productes: [], 
 | 
      diveGroup: [], 
 | 
      user: [], 
 | 
      level: [ 
 | 
        //  0设备 1组 
 | 
        { name: '设备组', id: 0 }, 
 | 
        { name: '设备', id: 1 } 
 | 
      ], 
 | 
      // 表单数据 
 | 
      form: { 
 | 
        id: null, 
 | 
        // updateTime: '', 
 | 
        procedureId: '', 
 | 
        code: '', 
 | 
        type: '', 
 | 
        name: '', 
 | 
        model: '', 
 | 
        stationCode: '', 
 | 
        groupId: null, 
 | 
        userIds: [], 
 | 
        produceWarehouseLocationId: null, 
 | 
        finishWarehouseLocationId: null 
 | 
      }, 
 | 
      warehouses: [], 
 | 
      warehousesone: [], 
 | 
      produceWarehouse: null, 
 | 
      produceWarehouseLocation: [], 
 | 
      finishWarehouse: null, 
 | 
      finishWarehouserLocation: [], 
 | 
      // 验证规则 
 | 
      rules: { 
 | 
        // code: [ 
 | 
        //   { required: true, message: '请输入设备编码', trigger: 'blur' }, 
 | 
        //   { max: 20, message: '输入字数不超过20', trigger: 'blur' }, 
 | 
        //   { validator: validateSpecialKey, trigger: 'blur' } 
 | 
        // ], 
 | 
        name: [ 
 | 
          { required: true, message: '请输入设备名称', trigger: 'blur' }, 
 | 
          { max: 20, message: '输入字数不超过20', trigger: 'blur' } 
 | 
        ], 
 | 
        model: [ 
 | 
          { required: true, message: '请输入设型号', trigger: 'blur' }, 
 | 
          { max: 20, message: '输入字数不超过20', trigger: 'blur' } 
 | 
        ], 
 | 
        procedureId: [{ required: true, message: '请选择工序', trigger: 'change' }], 
 | 
        type: [{ required: true, message: '请选择设备类型', trigger: 'change' }], 
 | 
        produceWarehouseLocationId: [{ required: true, message: '请选择待生产货位', trigger: 'change' }], 
 | 
        finishWarehouseLocationId: [{ required: true, message: '请选择已完工货位', trigger: 'change' }] 
 | 
      } 
 | 
    } 
 | 
  }, 
 | 
  computed: { 
 | 
    canSelect: { 
 | 
      get () { 
 | 
        if (this.form.groupId) { 
 | 
          return true 
 | 
        } 
 | 
        return false 
 | 
      } 
 | 
    } 
 | 
  }, 
 | 
  created () { 
 | 
    this.config({ 
 | 
      api: '/ext/deviceExt', 
 | 
      'field.id': 'id' 
 | 
    }) 
 | 
    // equipmentGroup({}) 
 | 
    //   .then(res => { 
 | 
    //     this.diveGroup = res 
 | 
    //   }) 
 | 
    //   .catch(err => { 
 | 
    //     console.log(err) 
 | 
    //   }) 
 | 
  }, 
 | 
  methods: { 
 | 
    confirm() { 
 | 
      if (this.form.id == null || this.form.id === '') { 
 | 
        this.$refs.form.validate((valid) => { 
 | 
          if (!valid) { 
 | 
            return 
 | 
          } 
 | 
          // 调用新建接口 
 | 
          this.isWorking = true 
 | 
          let data = JSON.parse(JSON.stringify(this.form)) 
 | 
          data.userIds = data.userIds.join(',') 
 | 
          this.api.create(data) 
 | 
            .then(() => { 
 | 
              this.visible = false 
 | 
              this.$tip.apiSuccess('新建成功') 
 | 
              this.$emit('success') 
 | 
            }) 
 | 
            .catch(e => { 
 | 
              this.$tip.apiFailed(e) 
 | 
            }) 
 | 
            .finally(() => { 
 | 
              this.isWorking = false 
 | 
            }) 
 | 
        }) 
 | 
      } else { 
 | 
        this.$refs.form.validate((valid) => { 
 | 
          if (!valid) { 
 | 
            return 
 | 
          } 
 | 
          // 调用更新接口 
 | 
          this.isWorking = true 
 | 
          let data = JSON.parse(JSON.stringify(this.form)) 
 | 
          data.userIds = data.userIds.join(',') 
 | 
          this.api.updateById(data) 
 | 
            .then(() => { 
 | 
              this.visible = false 
 | 
              this.$tip.apiSuccess('修改成功') 
 | 
              this.$emit('success') 
 | 
            }) 
 | 
            .catch(e => { 
 | 
              this.$tip.apiFailed(e) 
 | 
            }) 
 | 
            .finally(() => { 
 | 
              this.isWorking = false 
 | 
            }) 
 | 
        }) 
 | 
      } 
 | 
    }, 
 | 
    selectUser (v) { 
 | 
      if (v.indexOf('all') != -1) { 
 | 
        let all = this.user.map(item => item.id) 
 | 
        this.form.userIds = all.filter(item => item != 'all') 
 | 
      } 
 | 
    }, 
 | 
    visibleChange3(e) { 
 | 
      // if (e) { 
 | 
      //   this.loading = true 
 | 
        getUserDevice({ departmentId: this.$store.state.userInfo.curComDepartment.id }) 
 | 
        .then(res => { 
 | 
          if (res.length > 0) { 
 | 
            this.user = [{ id: 'all' }, ...res] 
 | 
          } 
 | 
          this.loading = false 
 | 
        }) 
 | 
        .catch(err => { 
 | 
          console.log(err) 
 | 
          this.loading = false 
 | 
        }) 
 | 
      // } 
 | 
    }, 
 | 
    visibleChange2(e) { 
 | 
      if (e) { 
 | 
        this.loading = true 
 | 
        queryWarehouseAllData({ 
 | 
          useLocation: 1, 
 | 
          status: 1, 
 | 
          systemDicDataId: 7, 
 | 
          rootDepartId: this.$store.state.userInfo.curComDepartment.id 
 | 
        }) 
 | 
          .then(res => { 
 | 
            this.warehouses = res 
 | 
            this.loading = false 
 | 
          }) 
 | 
          .catch(err => { 
 | 
            console.log(err) 
 | 
            this.loading = false 
 | 
          }) 
 | 
      } 
 | 
    }, 
 | 
    visibleChange1(e) { 
 | 
      if (e) { 
 | 
        this.loading = true 
 | 
        queryWarehouseAllData({ 
 | 
          useLocation: 1, 
 | 
          status: 1, 
 | 
          rootDepartId: this.$store.state.userInfo.curComDepartment.id 
 | 
        }) 
 | 
          .then(res => { 
 | 
            this.warehousesone = res 
 | 
            this.loading = false 
 | 
          }) 
 | 
          .catch(err => { 
 | 
            console.log(err) 
 | 
            this.loading = false 
 | 
          }) 
 | 
      } 
 | 
    }, 
 | 
    visibleChange(e) { 
 | 
      if (e) { 
 | 
        this.loading = true 
 | 
        getDepartmentListByConditon({ 
 | 
          type: 1 
 | 
        }) 
 | 
          .then(res => { 
 | 
            // console.log(res) 
 | 
            this.factoreis = res 
 | 
            this.loading = false 
 | 
          }) 
 | 
          .catch(err => { 
 | 
            console.log(err) 
 | 
            this.loading = false 
 | 
          }) 
 | 
      } 
 | 
    }, 
 | 
    open (title, target) { 
 | 
      this.visibleChange3(true) 
 | 
      this.visibleChange2(true) 
 | 
      this.visibleChange1(true) 
 | 
      this.visibleChange(true) 
 | 
      this.title = title 
 | 
      this.visible = true 
 | 
      this.produceWarehouse = null 
 | 
      this.finishWarehouse = null 
 | 
      this.factory = null 
 | 
      this.productes = [] 
 | 
      this.produceWarehouseLocation = [] 
 | 
      this.finishWarehouserLocation = [] 
 | 
      // 新建 
 | 
      if (target == null) { 
 | 
        this.$nextTick(() => { 
 | 
          this.$refs.form.resetFields() 
 | 
          this.form[this.configData['field.id']] = null 
 | 
        }) 
 | 
        return 
 | 
      } 
 | 
      // 编辑 
 | 
      this.$nextTick(() => { 
 | 
        for (const key in this.form) { 
 | 
          if (key == 'userIds') { 
 | 
            this.form.userIds = target['userDeviceExtListVOS'].map(item => item.companyUserId) 
 | 
            console.log(this.form.userIds) 
 | 
          } else { 
 | 
            this.form[key] = target[key] 
 | 
          } 
 | 
        } 
 | 
        // console.log(this.form) 
 | 
        this.produceWarehouse = target.wpmodel.warehouseId 
 | 
        this.finishWarehouse = target.wfmodel.warehouseId 
 | 
        this.factory = target.pmodel.orgId 
 | 
        this.getProcedure(target.pmodel.orgId) 
 | 
        this.getDevice() 
 | 
        this.wareHouserAndLocaltion(target.wpmodel.warehouseId, 0) 
 | 
        this.wareHouserAndLocaltion(target.wfmodel.warehouseId, 1) 
 | 
      }) 
 | 
    }, 
 | 
    selectFactory (v) { 
 | 
      this.form.procedureId = null 
 | 
      this.getProcedure(v) 
 | 
    }, 
 | 
    getProcedure (v) { 
 | 
      productesGroup({ orgId: v }) 
 | 
        .then(res => { 
 | 
          this.productes = res 
 | 
        }) 
 | 
        .catch(err => { 
 | 
          console.log(err) 
 | 
        }) 
 | 
    }, 
 | 
    selectProduceWarehouse (v) { 
 | 
      this.form.produceWarehouseLocationId = null 
 | 
      this.wareHouserAndLocaltion(v, 0, '') 
 | 
    }, 
 | 
    selectFinishWarehouse (v) { 
 | 
      this.form.finishWarehouseLocationId = null 
 | 
      this.wareHouserAndLocaltion(v, 1, 7) 
 | 
    }, 
 | 
    selectProcedure (v) { 
 | 
      if (this.form.type === 1 && v) { 
 | 
        this.diveGroup = [] 
 | 
        this.getDevice() 
 | 
      } 
 | 
    }, 
 | 
    selectType (v) { 
 | 
      this.produceWarehouse = null 
 | 
      this.finishWarehouse = null 
 | 
      this.form.finishWarehouseLocationId = null 
 | 
      this.form.produceWarehouseLocationId = null 
 | 
      this.produceWarehouseLocation = [] 
 | 
      this.finishWarehouserLocation = [] 
 | 
      if (v === 1 && this.form.procedureId) { 
 | 
        this.getDevice() 
 | 
      } else { 
 | 
        this.form.groupId = null 
 | 
      } 
 | 
    }, 
 | 
    getDevice () { 
 | 
      equipmentGroup({ 
 | 
        type: 0, 
 | 
        procedureId: this.form.procedureId 
 | 
      }) 
 | 
        .then(res => { 
 | 
          this.diveGroup = res 
 | 
        }) 
 | 
        .catch(err => { 
 | 
          console.log(err) 
 | 
        }) 
 | 
    }, 
 | 
    selectGroup (v) { 
 | 
      for (const item of this.diveGroup) { 
 | 
        if (item.id === v) { 
 | 
          this.setLocation(item) 
 | 
          return 
 | 
        } 
 | 
      } 
 | 
    }, 
 | 
    setLocation (group) { 
 | 
      this.produceWarehouse = group.wpmodel.warehouseId 
 | 
      this.finishWarehouse = group.wfmodel.warehouseId 
 | 
      this.form.finishWarehouseLocationId = group.wfmodel.id 
 | 
      this.form.produceWarehouseLocationId = group.wpmodel.id 
 | 
      this.wareHouserAndLocaltion(group.wpmodel.warehouseId, 0) 
 | 
      this.wareHouserAndLocaltion(group.wfmodel.warehouseId, 1) 
 | 
    }, 
 | 
    /** 
 | 
     * @param type 0 待产货位 1产出货位 
 | 
    */ 
 | 
    wareHouserAndLocaltion (v, type, systemDicDataId) { 
 | 
      getListByWarehouseId(v, 1, systemDicDataId) 
 | 
        .then(res => { 
 | 
          // console.log(res) 
 | 
          if (type === 0) { 
 | 
            this.produceWarehouseLocation = res 
 | 
          } else { 
 | 
            this.finishWarehouserLocation = res 
 | 
          } 
 | 
        }) 
 | 
        .catch(err => { 
 | 
          console.log(err) 
 | 
        }) 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</script> 
 |