jiangping
2025-07-01 e02c14b53ecda4912fc93c7f83b1dcb4bb7a3999
admin/src/components/operation/HiddenDangerParam.vue
@@ -4,6 +4,7 @@
    width="600px"
    :visible.sync="isShowModal"
    :confirm-working="isWorking"
    @close="close"
    @confirm="confirm"
  >
    <el-form :model="param" ref="paramRef" :rules="rules">
@@ -13,6 +14,16 @@
      <el-form-item label="联系电话" prop="mobile">
        {{ userInfo.mobile }}
      </el-form-item>
      <el-form-item label="检查类型" prop="checkTypeId">
        <el-select v-model="param.checkTypeId" placeholder="请选择">
          <el-option
              v-for="item in checkTypeList"
              :key="item.id"
              :label="item.name"
              :value="item.id"
          />
        </el-select>
      </el-form-item>
      <el-form-item label="提报时间" prop="submitTime">
        <el-date-picker
          v-model="param.submitTime"
@@ -21,6 +32,11 @@
          type="datetime"
          default-time="08:00:00"
        />
      </el-form-item>
      <el-form-item label="责任部门" prop="companyId">
        <el-select @change="getAddrList" clearable filterable v-model="param.companyId">
          <el-option v-for="op in department" :key="op.id" :label="op.name" :value="op.id"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="隐患区域" prop="areaId">
        <el-select v-model="param.areaId" @change="changeArea" placeholder="请选择">
@@ -33,7 +49,7 @@
        </el-select>
      </el-form-item>
      <el-form-item label="处理人" prop="checkUserId">
        <el-select v-model="param.checkUserId" placeholder="请选择">
        <el-select v-model="param.checkUserId" filterable placeholder="请选择">
          <el-option
            v-for="item in memberList"
            :key="item.id"
@@ -61,6 +77,7 @@
            :action="uploadImgUrl"
            :show-file-list="false"
            :on-success="uploadAvatarSuccess"
            :on-error="uploadError"
            :before-upload="beforeUpload"
          >
            <div class="upload_wrap">
@@ -104,8 +121,9 @@
import dayjs from 'dayjs'
import { allList, memberList } from '@/api/business/hiddenDangerParam'
import { create } from '@/api/business/hiddenDanger'
import { Loading } from 'element-ui'
import { companyGetListPost } from '@/api/business/company'
export default {
  name: 'OperaVisitsHkWindow',
  extends: BaseOpera,
  components: {
    GlobalWindow
@@ -113,10 +131,14 @@
  data () {
    return {
      isShowModal: false,
      param: {},
      loadingInstance: false,
      param: {
        checkTypeId: null
      },
      userInfo: this.$store.state.userInfo,
      uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadBatch',
      typeList: [],
      checkTypeList: [],
      addrList: [],
      memberList: [],
      fileList: [],
@@ -124,11 +146,14 @@
      uploadData: {
        folder: 'HIDDEN_DANGER_FILE'
      },
      department: [],
      rules: {
        // starttime: [{ required: true, message: '请选择日期', trigger: 'change' }],
        areaId: [{ required: true, message: '请选择', trigger: 'change' }],
        cateId: [{ required: true, message: '请选择', trigger: 'change' }],
        checkUserId: [{ required: true, message: '请选择', trigger: 'change' }],
        checkTypeId: [{ required: true, message: '请选择', trigger: 'change' }],
        companyId: [{ required: true, message: '请选择', trigger: 'change' }],
        faceImgUrl: [{ required: true, message: '请上传', trigger: 'change' }],
        content: [{ required: true, message: '请输入', trigger: 'blur' }]
@@ -140,16 +165,40 @@
    this.initData()
  },
  methods: {
    initData () {
      allList({ type: 1 }).then(res => { // 类型
        this.typeList = res || []
      })
      allList({ type: 0 }).then(res => { // 位置
        this.addrList = res || []
      allList({ type: 2}).then(res => { // 检查类型
        this.checkTypeList = res || []
        if(this.checkTypeList.length>0){
          this.param.checkTypeId = res[0].id
        }
      })
      memberList({}).then(res => {
        this.memberList = res || []
      })
      // memberList({}).then(res => {
      //   this.memberList = res || []
      // })
      this.getfindCompanyTreePage()
    },
    getfindCompanyTreePage() {
      companyGetListPost({queryHiddenDanger: 1})
        .then(res => {
          if (res && res.length > 0) {
            this.department = res
          }
        })
    },
    getAddrList() {
      const { companyId } = this.param
      this.$set(this.param, 'areaId', '')
      this.$set(this.param, 'checkUserId', '')
      this.addrList = []
      if(companyId){
        allList({ type: 0,companyId }).then(res => { // 位置
          this.addrList = res || []
        })
      }
    },
    changeArea (e) {
      const item = this.addrList.find(i => i.id === e)
@@ -158,6 +207,8 @@
      const memberNames = item.memberNames.split(',')
      if (memberIds && memberIds.length === 1) {
        this.$set(this.param, 'checkUserId', memberIds[0])
      } else {
        this.$set(this.param, 'checkUserId', '')
      }
      memberIds.forEach((mem, i) => {
        arr.push({
@@ -168,23 +219,41 @@
      this.memberList = arr
    },
    beforeUpload (file) {
      if (['video/mp4', 'video/ogg', 'video/flv', 'video/avi', 'video/wmv', 'video/rmvb', 'image/jpeg', 'image/png', 'image/gif'].indexOf(file.type) == -1) {
      if (['video/mp4', 'video/ogg', 'video/flv', 'video/avi', 'video/wmv', 'video/rmvb', 'image/jpeg','image/jpg', 'image/png', 'image/gif'].indexOf(file.type) == -1) {
        this.$message.error('请上传正确的视频/图片格式')
        return false
      }
      this.loadingInstance = Loading.service({
        lock: true,
        text: 'Loading',
        spinner: 'el-icon-loading',
        background: 'rgba(0, 0, 0, 0.7)'
      })
    },
    uploadError() {
      this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
        if(this.loadingInstance){
          this.loadingInstance.close()
        }
      })
    },
    uploadAvatarSuccess (file) {
      this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
        if(this.loadingInstance){
          this.loadingInstance.close()
        }
      })
      console.log('file', file)
      const item = file.data[0]
      if (['.mp4', '.avi', '.flv', '.wmv'].indexOf(item.imgaddr) === -1) {
      if (['.mp4', '.avi', '.flv', '.wmv'].some(char => item.imgaddr.includes(char))) {
        this.fileList.push({
          type: 0,
          type: 1,
          fileurl: item.imgaddr,
          fileurlFull: item.url
        })
      } else {
        this.fileList.push({
          type: 1,
          type: 0,
          fileurl: item.imgaddr,
          fileurlFull: item.url
        })
@@ -195,6 +264,10 @@
    },
    handleDelImg (i) {
      this.fileList.splice(i, 1)
    },
    close(){
      this.isShowModal = false
      this.$emit('close')
    },
    // 同步信息
    confirm () {
@@ -255,10 +328,15 @@
  display: flex;
  flex-wrap: wrap;
  .item {
    width: 90px;
    max-height: 90px;
    width: 92px;
    max-height: 92px;
    margin-left: 10px;
    position: relative;
    border: 1px dashed #d9d9d9;
    border-radius: 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    .close{
      font-size: 20px;
      position: absolute;
@@ -269,8 +347,8 @@
      cursor: pointer;
    }
    .img {
      width: 90px;
      max-height: 90px;
      width: 92px;
      max-height: 92px;
    }
  }
}