派生自 wuyushui/SewerAndRainNetwork

yangdelong
2021-05-28 3054bbce49457c82df9ad32523f3a0186e268d6f
src/components/base-page/enterprise-emergency/events-reported/EventsReported.vue
New file
@@ -0,0 +1,471 @@
<template>
    <div class="event-report">
        <el-form :model="ruleForm" ref="ruleForm" label-width="90px" class="search-form">
            <!--            事件名称-->
            <el-form-item class="input-event-name" label="事件名称" prop="nameOfEvent">
                <el-input
                        v-model="ruleForm.nameOfEvent"
                        placeholder="将事件命名"
                ></el-input>
            </el-form-item>
            <!--            事件类型-->
            <el-form-item label="事件类型" prop="eventOfType">
                <el-radio-group v-model="ruleForm.eventOfType">
                    <el-col :span="8" v-for="(item,index) in ruleForm.eventOfTypeList" :key="index"
                            :style="{margin:'5px 0'}">
                        <el-radio :label="item.value">
                            <span>{{ item.name }}</span>
                        </el-radio>
                    </el-col>
                </el-radio-group>
            </el-form-item>
            <!--            事件等级-->
            <el-form-item label="事件分级" prop="eventOfLevel">
                <el-radio-group v-model="ruleForm.eventOfLevel">
                    <el-col :span="8" v-for="(item,index) in ruleForm.eventOfLevelList" :key="index"
                            :style="{margin:'5px 0'}">
                        <el-radio :label="item.value">
                            <span>{{ item.name }}</span>
                        </el-radio>
                    </el-col>
                </el-radio-group>
            </el-form-item>
            <el-row>
                <!--                事发单位-->
                <el-col :span="12">
                    <el-form-item label="事发单位" prop="unit">
                        <el-select v-model="ruleForm.unit" placeholder="单位,装置选择">
                            <el-option
                                    v-for="item in ruleForm.unitList"
                                    :key="item.value"
                                    :label="item.label"
                                    :value="item.value">
                            </el-option>
                        </el-select>
                    </el-form-item>
                </el-col>
                <!--                事发时间-->
                <el-col :span="12">
                    <el-form-item class="search-panel-item" label="事发时间" prop="atTime">
                        <el-date-picker
                                v-model="ruleForm.atTime"
                                type="datetime"
                                placeholder="年/月/日">
                        </el-date-picker>
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <!--                事发位置-->
                <el-col :span="12">
                    <el-form-item label="事发位置" prop="positionOf">
                        <el-input v-model="ruleForm.positionOf" clearable>
                            <!--                            <el-button slot="suffix" type="text" class="el-icon-location-information"-->
                            <!--                                       @click="locationInfo"></el-button>-->
                            <el-button style="padding-right:10px;" slot="suffix" type="text"
                                       @click="locationInfo">
                                <img src="../../../../../public/assets/images/map/loc.png" alt="">
                            </el-button>
                        </el-input>
                    </el-form-item>
                </el-col>
                <!--                位置描述-->
                <el-col :span="12">
                    <el-form-item label="位置描述" prop="positionDescription">
                        <el-input v-model="ruleForm.positionDescription"></el-input>
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <!--                管线名称-->
                <el-col :span="12">
                    <el-form-item label="管线名称" prop="lineName" class="search-panel-item">
                        <el-input disabled v-model="ruleForm.lineName" placeholder="自动带出不可修改"
                                  class="report-input"></el-input>
                    </el-form-item>
                </el-col>
                <!--                管线类型-->
                <el-col :span="12">
                    <el-form-item label="管线类型" prop="lineType">
                        <label>{{ ruleForm.lineTypeText }}</label>
                    </el-form-item>
                </el-col>
            </el-row>
            <!--             点击上传-->
            <el-form-item label="附件上传" prop="upload">
                <el-upload
                        class="upload-demo"
                        action="uploadAction"
                        multiple
                        :limit="3"
                        :file-list="fileList">
                    <el-button size="small" type="primary">点击上传</el-button>
                </el-upload>
            </el-form-item>
            <!--            消息推送-->
            <el-form-item label="消息推送" prop="beingPush">
                <el-checkbox-group v-model="ruleForm.beingPushed" @change="infoChange">
                    <el-checkbox v-for="item in ruleForm.beingPushList"
                                 :key="item.name"
                                 :label="item.name"
                    >
                    </el-checkbox>
                </el-checkbox-group>
            </el-form-item>
            <!--            // 描述 接收 展示、隐藏-->
            <div v-show="wayTo" class="way-to">
                <el-form-item label="事件描述" prop="desc">
                    <el-input type="textarea" resize="none" v-model="ruleForm.desc"
                              placeholder="带出事件类型,事件位置,事件单位,事件时间等字段自动生产一部分描述">
                    </el-input>
                    <el-button type="primary">一键<br/>生成</el-button>
                </el-form-item>
                <el-form-item label="接收人员" prop="receiveOne">
                    <el-input type="textarea" resize="none" v-model="ruleForm.receiveOne"
                              placeholder="张三;李四,"></el-input>
                    <el-button type="primary">+</el-button>
                </el-form-item>
            </div>
            <el-form-item class="confirmCancel">
                <el-button type="primary" @click="submitForm('ruleForm')">确认</el-button>
                <el-button @click="resetForm('ruleForm')">取消</el-button>
            </el-form-item>
        </el-form>
        <el-dialog
                custom-class="event-report-dialog"
                title="事发位置定位"
                :visible.sync="dialogLocation"
                :append-to-body="true"
                :modal="false"
                v-dialogDrag
        >
            <ReportLocation @locationClick="getlocaltionClick"></ReportLocation>
        </el-dialog>
    </div>
</template>
<!--        :rules="rules"-->
<!--        :show-close="false"-->
<script>
import ReportLocation from './ReportLocation'
import eventBus from '../../../../eventBus'
export default {
  name: 'EventsReported',
  components: {
    ReportLocation
  },
  data () {
    return {
      // 表单绑定数据
      ruleForm: {
        // 事件名称 绑定数据
        nameOfEvent: '',
        // 事件类型 绑定数据值
        eventOfType: '',
        // 事件类型可选择数据radio 绑定数据
        eventOfTypeList: [
          {
            name: '海(水)上溢油污染',
            value: 1
          },
          {
            name: '油气管道泄漏污染',
            value: 2
          },
          {
            name: '辐射污染',
            value: 3
          },
          {
            name: '生态环境破坏',
            value: 4
          },
          {
            name: '其他',
            value: 5
          }
        ],
        // 事件等级
        eventOfLevel: '',
        // 事件等级可选择数据radio 绑定数据
        eventOfLevelList: [
          {
            name: '特别重大环境事件',
            value: 1
          },
          {
            name: '重大环境事件',
            value: 2
          },
          {
            name: '较大环境事件',
            value: 3
          },
          {
            name: '一般A级',
            value: 4
          },
          {
            name: '一般B级',
            value: 5
          },
          {
            name: '一般C级',
            value: 6
          }
        ],
        // 事发单位 绑定数据值
        unit: '',
        unitList: [
          {
            label: '扬子',
            value: '1'
          },
          {
            label: '南京',
            value: '2'
          }
        ],
        // 事发时间 绑定数据
        atTime: '',
        // 事发位置
        positionOf: '',
        // 位置描述
        positionDescription: '',
        // 管线名称
        lineName: '',
        // 管线类型
        lineType: '',
        lineTypeText: '自动带出不可修改',
        // 消息推送
        beingPushed: [],
        beingPushList: [
          {
            name: '短信推送',
            value: false
          },
          {
            name: '手机应用推送',
            value: false
          }
        ],
        // 事件描述
        desc: '',
        // 接收人员
        receiveOne: ''
      },
      // 上传列表
      fileList: [],
      // 上传地址
      uploadAction: '',
      // 表单验证
      // rules: {
      //   // 事件名称校验
      //   nameOfEvent: [
      //     {
      //       required: true,
      //       message: '请输入活动名称',
      //       trigger: 'blur'
      //     }
      //   ],
      //   // 事件类型校验
      //   eventOfType: [
      //     {
      //       required: true,
      //       message: '请选择事件类型',
      //       trigger: 'blur'
      //     }
      //   ],
      //   // 事件等级校验
      //   eventOfLevel: [
      //     {
      //       required: true,
      //       message: '请选择事件等级',
      //       trigger: 'blur'
      //     }
      //   ],
      //   // 事发单位 绑定数据值
      //   unit: [
      //     {
      //       required: true,
      //       message: '请选择活动区域',
      //       trigger: 'change'
      //     }
      //   ],
      //   // 事发时间
      //   atTime: [
      //     {
      //       required: true,
      //       message: '请选择活动资源',
      //       trigger: 'change'
      //     }
      //   ],
      //   // 事件位置校验
      //   positionOf: [
      //     {
      //       required: true,
      //       message: '请输入活动位置',
      //       trigger: 'blur'
      //     }
      //   ],
      //   // 位置描述校验
      //   positionDescription: [
      //     {
      //       required: true,
      //       message: '请输入位置描述',
      //       trigger: 'blur'
      //     }
      //   ],
      //   // 管线名称
      //   lineName: [],
      //   // 管线类型
      //   lineType: []
      // },
      // 描述 接收 => 展示/隐藏
      wayTo: false,
      // 定位位置选择弹框
      dialogLocation: false
    }
  },
  mounted () {
    eventBus.$on('location-setChange', (obj) => {
      if (obj) {
        this.dialogLocation = false
      }
    })
  },
  methods: {
    // 接收子组件传递的数据
    getlocaltionClick (val) {
      // console.log(val)
      this.ruleForm.positionOf = val.latPos + '-' + val.longPos
      this.dialogLocation = !this.dialogLocation
    },
    // 消息推送 选择推送的对象
    infoChange () {
      if (this.ruleForm.beingPushed.indexOf('短信推送') > -1 || this.ruleForm.beingPushed.indexOf('手机应用推送') > -1) {
        this.wayTo = true
      } else {
        this.wayTo = false
      }
    },
    // 点击定位 进行位置选择
    locationInfo () {
      this.dialogLocation = !this.dialogLocation
    },
    // 表单的确认按钮点击事件
    submitForm (formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          // alert('submit!')
          this.$message({
            message: '事件上报提交成功',
            type: 'success'
          })
        } else {
          this.$message('事件上报提交失败')
          return false
        }
      })
      // this.$refs[formName].resetFields()
      eventBus.$emit('event-report-popup', false)
    },
    // form表单的取消按钮点击事件 重置信息
    resetForm (formName) {
      this.$refs[formName].resetFields()
      eventBus.$emit('event-report-popup', false)
    }
  }
}
</script>
<style lang="less" scoped>
    /*/deep/ .el-dialog .el-dialog--center {*/
    /*    margin-top: 1rem !important;*/
    /*    margin-left: 6.4rem !important;*/
    /*}*/
    /deep/ .event-report-dialog {
        left: 5rem;
        top: 1rem;
        margin-top: 2rem;
        margin-left: 2rem;
    }
    /deep/ .el-dialog {
        left: 5rem;
        top: 1rem;
        width: 3.087834rem;
    }
    .event-report {
        margin: 0 5px !important;
    }
    .way-to {
        /deep/ .el-form-item__content {
            display: flex;
        }
    }
    /deep/ .el-form-item {
        margin: 2px 0 !important;
        color: #00fff6 !important;
    }
    /deep/ .el-textarea__inner {
        height: 0.28rem !important;
        max-height: 0.45rem !important;
        width: 2rem;
        color: darkgrey;
        border: solid 1px #00fff6;
        background-color: rgba(0, 255, 246, 0.14);
        outline: none;
        font-size: 0.01rem;
    }
    /deep/ .el-checkbox__label {
        color: #00fff6 !important;
    }
    /deep/ .el-icon-time:before {
        content: " ";
    }
    /deep/ input {
        border-radius: 0;
        background-color: rgba(0, 255, 246, 0.14);
        border: solid 1px #00fff6;
        color: #C0C4CC;
        font-size: 0.01rem;
    }
    /deep/ .el-input.is-disabled .el-input__inner {
        color: #C0C4CC;
        font-size: 0.01rem;
        border-radius: 4px;
        background: @background-color;
        border-color: @color;
    }
    /deep/ .el-input__inner {
        height: 0.2rem !important;
        border-radius: 5px;
        background: rgba(0, 16, 30, 0.5);
    }
    /deep/ .el-form-item__label {
        color: @color;
    }
    /deep/ .el-radio__label {
        color: @color;
    }
    .confirmCancel {
        text-align: right;
        margin: 0.071234rem !important;
    }
</style>