<template> 
 | 
  <GlobalWindow :title="param.id ? '编辑设备' : '新建设备'" :confirmWorking="subLoading" :visible.sync="isShowModal" 
 | 
    width="600px" @close="close" @confirm="handleSub"> 
 | 
    <el-form :model="param" ref="paramRef" :rules="rules"> 
 | 
      <el-form-item label="设备编码" prop="code"> 
 | 
        <el-input v-model="param.code" placeholder="请输入" v-trim /> 
 | 
      </el-form-item> 
 | 
      <el-form-item label="设备名称" prop="name"> 
 | 
        <el-input v-model="param.name" placeholder="请输入" v-trim /> 
 | 
      </el-form-item> 
 | 
      <el-form-item label="设备型号" prop=""> 
 | 
        <el-input v-model="param.modelNo" placeholder="请输入" v-trim /> 
 | 
      </el-form-item> 
 | 
      <el-form-item label="设备分类" prop="cateId"> 
 | 
        <el-cascader v-model="param.cateIds" @change="changeSel" placeholder="请选择设备分类" clearable :options="cateList" 
 | 
          :props="{ 
 | 
            label: 'name', 
 | 
            value: 'id', 
 | 
            children: 'childCategoryList' 
 | 
          }"></el-cascader> 
 | 
      </el-form-item> 
 | 
      <el-form-item label="设备管理员" prop=""> 
 | 
        <el-select v-model="param.userId" clearable filterable> 
 | 
          <el-option v-for="item in staffList" :label="item.realname" :value="item.id"></el-option> 
 | 
        </el-select> 
 | 
      </el-form-item> 
 | 
      <el-form-item label="所在位置" prop=""> 
 | 
        <el-input v-model="param.addr" placeholder="请输入" v-trim /> 
 | 
  
 | 
      </el-form-item> 
 | 
      <el-form-item label="供应商" prop=""> 
 | 
        <el-input v-model="param.supplier" placeholder="请输入" v-trim /> 
 | 
      </el-form-item> 
 | 
      <el-form-item label="运维内容" prop=""> 
 | 
        <el-input type="textarea" :rows="4" v-model="param.content" placeholder="请输入" /> 
 | 
      </el-form-item> 
 | 
      <el-form-item label="设备状态" prop=""> 
 | 
        <el-select v-model="param.status" filterable> 
 | 
          <el-option :value="0" label="正常"></el-option> 
 | 
          <el-option :value="1" label="损坏"></el-option> 
 | 
          <el-option :value="2" label="报废"></el-option> 
 | 
        </el-select> 
 | 
      </el-form-item> 
 | 
      <el-form-item label="照片" prop=""> 
 | 
        <UploadAvatarImage :file="{ 'imgurlfull': param.fileFullUrl, 'imgurl': param.fileUrl }" 
 | 
          :uploadData="{ folder: 'ywDevice/' }" @uploadSuccess="uploadAvatarSuccess" @uploadEnd="isUploading = false" 
 | 
          @uploadBegin="isUploading = true" /> 
 | 
      </el-form-item> 
 | 
    </el-form> 
 | 
  </GlobalWindow> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import GlobalWindow from '@/components/common/GlobalWindow' 
 | 
import UploadAvatarImage from '@/components/common/UploadAvatarImage' 
 | 
import { fetchList } from '@/api/business/category' 
 | 
import { create, updateById, detailById } from '@/api/Inspection/device' 
 | 
import { getUserList } from '@/api/system/user' 
 | 
import { Message } from 'element-ui' 
 | 
export default { 
 | 
  components: { GlobalWindow, UploadAvatarImage }, 
 | 
  data() { 
 | 
    return { 
 | 
      isShowModal: false, 
 | 
      subLoading: false, 
 | 
      param: { 
 | 
        status: 0 
 | 
      }, 
 | 
      cateList: [], 
 | 
      rules: { 
 | 
        name: [{ required: true, message: '请输入' }], 
 | 
        code: [{ required: true, message: '请输入' }], 
 | 
        cateId: [{ required: true, message: '请选择' }], 
 | 
      }, 
 | 
      staffList: [] 
 | 
  
 | 
    } 
 | 
  }, 
 | 
  created() { 
 | 
    this.initData() 
 | 
  }, 
 | 
  methods: { 
 | 
    handleSub() { 
 | 
      const { param, subLoading } = this 
 | 
      this.$refs['paramRef'].validate((valid) => { 
 | 
        if (valid) { 
 | 
          let fn = param.id ? updateById : create 
 | 
          this.subLoading = true 
 | 
          fn(param).then(res => { 
 | 
            this.subLoading = false 
 | 
            this.$emit('success') 
 | 
            Message.success('保存成功') 
 | 
            this.close() 
 | 
          }).catch(() => { 
 | 
            this.subLoading = false 
 | 
          }) 
 | 
        } 
 | 
      }) 
 | 
    }, 
 | 
    getDetail(id) { 
 | 
      detailById(id).then(res => { 
 | 
        this.param = res 
 | 
        const cateId = this.param.cateId || '' 
 | 
        setTimeout(() => { 
 | 
          if (cateId) { 
 | 
            this.cateList.forEach(item => { 
 | 
              if (item.childCategoryList) { 
 | 
                item.childCategoryList.forEach(item2 => { 
 | 
                  if (item2.id == cateId) { 
 | 
                    this.$set(this.param, 'cateIds', [item.id, item2.id]) 
 | 
                    console.log('cateId', this.form) 
 | 
                  } 
 | 
                }) 
 | 
              } 
 | 
            }) 
 | 
          } 
 | 
        },1000) 
 | 
      }) 
 | 
    }, 
 | 
    getStaff() { 
 | 
      getUserList({}).then(res => { 
 | 
        this.staffList = res 
 | 
      }) 
 | 
    }, 
 | 
    initData() { 
 | 
      fetchList({ 
 | 
        model: { type: 5 }, 
 | 
        capacity: 1000, 
 | 
        page: 1, 
 | 
      }).then(res => { 
 | 
        this.cateList = res.records || [] 
 | 
      }) 
 | 
      this.getStaff() 
 | 
    }, 
 | 
    changeSel(e) { 
 | 
      if (e && e.length == 2) { 
 | 
        this.$set(this.param, 'cateId', e[1]) 
 | 
      } else { 
 | 
        this.$set(this.param, 'cateId', '') 
 | 
      } 
 | 
    }, 
 | 
    uploadAvatarSuccess(file) { 
 | 
      this.$set(this.param, 'fileUrl', file.imgurl) 
 | 
      this.$set(this.param, 'fileFullUrl', file.imgurlfull) 
 | 
    }, 
 | 
    close() { 
 | 
      this.isShowModal = false 
 | 
      this.$emit('close') 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</script> 
 |