jiangping
2025-06-06 a2299a6d4a6f99e9c11132138f5d3e9ec68f03ea
admin/src/views/operation/components/maintain.vue
@@ -2,21 +2,21 @@
  <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-form-item label="选择设备" prop="deviceId">
        <el-select v-model="param.deviceId" filterable clearable>
          <el-option v-for="item in deviceList" :value="item" :label="item"></el-option>
          <el-option v-for="item in deviceList" :value="item.id" :label="item.name"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="运维人员" prop="code">
        <el-select v-model="param.realName" filterable clearable>
          <el-option v-for="item in 10" :value="item" :label="item"></el-option>
      <el-form-item label="运维人员" prop="userId">
        <el-select v-model="param.userId" filterable clearable>
          <el-option v-for="item in staffList" :value="item.id" :label="item.realname"></el-option>
        </el-select>
      </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-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="">
@@ -37,17 +37,13 @@
          </div>
        </div>
      </el-form-item>
      <el-form-item label="运维备注" prop="">
        <el-input type="textarea" :rows="4" v-model="param.remark" placeholder="请输入" />
      <el-form-item label="运维备注" prop="content">
        <el-input type="textarea" :rows="4" v-model="param.content" placeholder="请输入" />
      </el-form-item>
      <el-form-item label="运维时间" prop="">
      <el-form-item label="运维时间" prop="dealDate">
        <el-date-picker v-model="param.dealDate" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
          type="datetime"></el-date-picker>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
@@ -56,7 +52,10 @@
import GlobalWindow from '@/components/common/GlobalWindow'
import UploadAvatarImage from '@/components/common/UploadAvatarImage'
import { fetchList } from '@/api/Inspection/device'
import { getUserList } from '@/api/system/user'
import { create, updateById } from '@/api/Inspection/deviceRecord'
import { Message, Loading } from 'element-ui'
import dayjs from 'dayjs'
export default {
  components: { GlobalWindow, UploadAvatarImage },
  data() {
@@ -65,37 +64,42 @@
      subLoading: false,
      param: {},
      deviceList: [],
      staffList: [],
      rules: {
        name: [{ required: true, message: '请输入' }],
        code: [{ required: true, message: '请输入' }]
        dealDate: [{ required: true, message: '请选择' }],
        deviceId: [{ required: true, message: '请选择' }],
        content: [{ required: true, message: '请输入' }],
        // code: [{ required: true, message: '请输入' }],
      },
      loadingInstance: null,
      uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadBatch',
      fileList: [],
      uploadData: {
        folder: 'HIDDEN_DANGER_FILE'
        folder: 'YW_DEVICE'
      },
    }
  },
  created() {
    this.initData()
    this.$set(this.param, 'dealDate', dayjs().format('YYYY-MM-DD HH:mm:ss'))
  },
  methods: {
    handleSub() {
      const { param, subLoading } = this
      const { param, subLoading, fileList } = this
      this.$refs['paramRef'].validate((valid) => {
        if (valid) {
          let fn = param.id ? updateById : create
          if(fileList && fileList.length > 0){
            param.multifileList = fileList
          }
          this.subLoading = true
          fn(param).then(res => {
            if (res.code == 200) {
              this.subLoading = false
            this.subLoading = false
              this.$emit('success')
              Message.success('保存成功')
              this.close()
            }
          }).catch(() => {
            this.subLoading = false
          })
@@ -108,9 +112,11 @@
        capacity: 1000,
        page: 1,
      }).then(res => {
        this.deviceList = res || []
        this.deviceList = res.records
      })
      getUserList({}).then(res => {
        this.staffList = res
      })
    },
    changeSel(e) {
      if (e && e.length == 1) {
@@ -155,12 +161,14 @@
      if (['.mp4', '.avi', '.flv', '.wmv'].some(char => item.imgaddr.includes(char))) {
        this.fileList.push({
          type: 1,
          objType: 6,
          fileurl: item.imgaddr,
          fileurlFull: item.url
        })
      } else {
        this.fileList.push({
          type: 0,
          objType: 6,
          fileurl: item.imgaddr,
          fileurlFull: item.url
        })
@@ -184,7 +192,8 @@
.file_list {
  display: flex;
  flex-wrap: wrap;
  .avatar-uploader{
  .avatar-uploader {
    width: 92px;
    height: 92px;
    display: flex;
@@ -192,6 +201,7 @@
    align-items: center;
    border: 1px dashed #d9d9d9;
  }
  .item {
    width: 92px;
    max-height: 92px;