1
MrShi
2025-01-06 d7dca690cedd12e271f0ee0b9050679d73796f5c
admin/src/views/operation/components/deviceEdit.vue
@@ -1,6 +1,6 @@
<template>
  <GlobalWindow :title="param.id ? '编辑设备' : '新建设备'" :confirmWorking="subLoading" :visible.sync="isShowModal" width="600px" @close="close"
    @confirm="handleSub">
  <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 />
@@ -11,18 +11,17 @@
      <el-form-item label="设备型号" prop="">
        <el-input v-model="param.modelNo" placeholder="请输入" v-trim />
      </el-form-item>
      <el-form-item label="设备分类" prop="">
        <el-cascader v-model="param.areaIds" @change="changeSel" placeholder="请选择巡检区域" clearable :options="cateList"
      <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',
            checkStrictly: true
            children: 'childCategoryList'
          }"></el-cascader>
      </el-form-item>
      <el-form-item label="设备管理员" prop="">
        <el-select v-model="param.realName" filterable clearable>
          <el-option value="0" label="xxx"></el-option>
        <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="">
@@ -30,27 +29,23 @@
      </el-form-item>
      <el-form-item label="供应商" prop="">
        <el-input v-model="param.company" placeholder="请输入" v-trim />
        <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 clearable>
          <el-option value="0" label="正常"></el-option>
          <el-option value="1" label="损坏"></el-option>
          <el-option value="2" label="报废"></el-option>
        <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.imgurlfull, 'imgurl': param.imgurl }"
          :uploadData="{ folder: 'projects' }" @uploadSuccess="uploadAvatarSuccess" @uploadEnd="isUploading = false"
        <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>
@@ -59,7 +54,8 @@
import GlobalWindow from '@/components/common/GlobalWindow'
import UploadAvatarImage from '@/components/common/UploadAvatarImage'
import { fetchList } from '@/api/business/category'
import { create, updateById } from '@/api/Inspection/device'
import { create, updateById, detailById } from '@/api/Inspection/device'
import { getUserList } from '@/api/system/user'
import { Message } from 'element-ui'
export default {
  components: { GlobalWindow, UploadAvatarImage },
@@ -67,12 +63,16 @@
    return {
      isShowModal: false,
      subLoading: false,
      param: {},
      param: {
        status: 0
      },
      cateList: [],
      rules: {
        name: [{ required: true, message: '请输入' }],
        code: [{ required: true, message: '请输入' }]
        code: [{ required: true, message: '请输入' }],
        cateId: [{ required: true, message: '请选择' }],
      },
      staffList: []
    }
  },
@@ -87,16 +87,39 @@
          let fn = param.id ? updateById : create
          this.subLoading = true
          fn(param).then(res => {
            if (res.code == 200) {
              this.subLoading = false
              this.$emit('success')
              Message.success('保存成功')
              this.close()
            }
            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() {
@@ -107,24 +130,18 @@
      }).then(res => {
        this.cateList = res.records || []
      })
      this.getStaff()
    },
    changeSel(e) {
      if (e && e.length == 1) {
        this.$set(this.param, 'catePId', e[0])
        this.$set(this.param, 'cateId', '')
      } else if (e && e.length == 2) {
        this.$set(this.param, 'catePId', e[0])
      if (e && e.length == 2) {
        this.$set(this.param, 'cateId', e[1])
      } else {
        this.$set(this.param, 'catePId', '')
        this.$set(this.param, 'cateId', '')
      }
      this.search()
    },
    uploadAvatarSuccess(file) {
      this.$set(this.param, 'imgurl', file.imgurl)
      this.$set(this.param, 'imgurlfull', file.imgurlfull)
      this.$set(this.param, 'fileUrl', file.imgurl)
      this.$set(this.param, 'fileFullUrl', file.imgurlfull)
    },
    close() {
      this.isShowModal = false
@@ -132,6 +149,4 @@
    }
  }
}
</script>
<style lang="scss" scoped></style>
</script>