rk
2 天以前 5decddf6a5dd2cda32880c07c545b8246ceada2d
admin/src/components/business/OperaWarningRuleWindow.vue
@@ -11,7 +11,7 @@
      2.发生区域非必填,不填则表示该规则下所有区域的相应报警类型均通知;<br>
    </p>
    <el-form :model="form" ref="form" :rules="rules">
      <div style="display: flex;" v-for="(item,index) in form.detailList" :key="'region_'+item.random" >
      <div style="display: flex;" v-for="(item,index) in form.detailList" :key="'warning_'+index" >
        <span style="line-height: 32px;font-size: 14px;"><b style="color: #F56C6C;margin-right: 4px;font-size: 11px;">*</b>{{'规则'+(index +1)}}</span>
        <el-form-item label=""   style="display: inline-block;margin-left: 10px; " >
          <el-select v-model="item.warningId" filterable      placeholder="请选择报警类型"    >
@@ -19,7 +19,7 @@
          </el-select>
        </el-form-item>
        <el-form-item label=""  style="display: inline-block;margin-left: 10px">
<!--          <el-select v-model="item.regionId" filterable multiple clearable  placeholder="请选择发生区域" >
<!--      <el-select v-model="item.regionId" filterable multiple clearable  placeholder="请选择发生区域" >
            <el-option v-for="item in regionList" :key="item.id" :label="item.name" :value="item.id">
            </el-option>
          </el-select>-->
@@ -34,6 +34,11 @@
              noChildrenText="没有子选项"
              noOptionsText="没有可选项"
              noResultsText="没有匹配的结果" />
        </el-form-item>
        <el-form-item label=""   style="display: inline-block;margin-left: 10px; " >
          <el-select v-model="item.deviceId" filterable placeholder="请选择监控点"   @change="changeCamera(item)" >
            <el-option v-for="item1 in item.carmeraList"   :label="item1.name" :value="item1.indexCode" ></el-option>
          </el-select>
        </el-form-item>
        <el-button type="danger" style="margin-left: 10px;height: 32px; " @click="delDo(index)" v-if="index>0 || form.detailList.length>1">删除</el-button>
      </div>
@@ -80,21 +85,19 @@
import { allList } from '@/api/business/member'
import { allList as allDveiceList } from '@/api/business/device'
import { allList as warningList, regionList } from '@/api/business/warning'
import { validIdCardNo } from '@/utils/form'
export default {
  name: 'OperaWarningRuleWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    var validIdDetals = (rule, value, callback) => {
      if (this.form.detailList == null || this.form.detailList.length==0) {
      if (this.form.detailList == null || this.form.detailList.length == 0) {
        callback(new Error('请配置规则'))
        return
      }
      console.log("1111111111111111111111",this.form.detailList)
      for (let i = 0; i < this.form.detailList.length; i++) {
        var item = this.form.detailList[i]
        if (!item.warningId || item.warningId == null) {
        if (!item || item.warningId === undefined || !item.warningId || item.warningId == null) {
          callback(new Error('请正确配置规则'))
          return
        }
@@ -113,7 +116,7 @@
        intervalSec: '',
        sortnum: '',
        status: 0,
        detailList: [{ random: Math.random(), regionId: null, regionName: null, regionCode: null, warningId: null }]
        detailList: [{ random: Math.random(), regionId: null, regionName: null, deviceId: null, deviceName: null, regionCode: null, warningId: null }]
      },
      deviceSelect: [],
      memberSelect: [],
@@ -126,8 +129,8 @@
        detailList: [{ required: true, validator: validIdDetals, message: '请正确配置规则', tigger: 'blur' }],
        memberNotice: [{ required: true, message: '请选择钉钉通知' }],
        deviceNotice: [{ required: true, message: '请选择是否广播通知' }],
        deviceIds: [{ required: true, message: '请选择播报广播', tigger: 'blur' }],
        memberIds: [{ required: true, message: '请选择通知人员', tigger: 'blur' }],
        deviceIds: [{ required: true, message: '请选择播报广播' }],
        memberIds: [{ required: true, message: '请选择通知人员' }],
        status: [{ required: true, message: '请选择状态' }]
      }
    }
@@ -137,6 +140,7 @@
      api: '/business/warningRule',
      'field.id': 'id'
    })
    this.loadRegions()
  },
  methods: {
    normalizeOptions (node) {
@@ -150,18 +154,50 @@
        children: node.childList
      }
    },
    changeCamera (curitem) {
      var list = curitem.carmeraList
      if (list && list.length) {
        list.forEach(item => {
          if (curitem.deviceId === item.indexCode) {
            curitem.deviceName = item.name
          }
        })
      }
    },
    changeSel (opt) {
      var item = this.form.detailList[opt]
      this.form.detailList[opt].regionCode = null
      this.form.detailList[opt].regionName = null
      if (item.regionId) {
        var reg = this.getSelectedObject(item.regionId)
        if (reg) {
          this.form.detailList[opt].regionCode = reg.indexCode
          this.form.detailList[opt].regionName = reg.name
      this.$nextTick(() => {
        console.log('=================changeSel',opt,this.form.detailList)
        var item = this.form.detailList[opt]
        this.form.detailList[opt].regionCode = null
        this.form.detailList[opt].regionName = null
        this.form.detailList[opt].carmeraList = []
        // this.form.detailList[opt].deviceId = null
        // this.form.detailList[opt].deviceName = null
        if (item.regionId) {
          var reg = this.getSelectedObject(item.regionId)
          if (reg) {
            this.form.detailList[opt].regionCode = reg.indexCode
            this.form.detailList[opt].regionName = reg.name
            this.form.detailList[opt].carmeraList = reg.carmeraList
          }
        }
        console.log('=================changeSel1' , this.form.detailList[opt].carmeraList,this.form.detailList[opt].deviceId)
        if(this.notInCarmeraList( this.form.detailList[opt].carmeraList,this.form.detailList[opt].deviceId) ){
          this.form.detailList[opt].deviceId = null
          this.form.detailList[opt].deviceName = null
        }
      })
    },
    notInCarmeraList (list, id) {
      var r = true
      if (list && list.length) {
        for (const item of list) {
          if (item.indexCode === id) {
            r = false
          }
        }
      }
      console.log(' this.form.detailList[opt]', reg, this.form.detailList[opt])
      return r
    },
    getSelectedObject (id) {
      if (!id) {
@@ -181,7 +217,7 @@
      return findSelected(this.regionList) // 开始搜索并返回结果
    },
    addDo () {
      this.form.detailList.push({ random: Math.random(), regionId: null, regionName: null, regionCode: null, warningId: null })
      this.form.detailList.push({ random: Math.random(), deviceId: null, deviceName: null, regionId: null, regionName: null, regionCode: null, warningId: null })
    },
    delDo (index) {
      if (this.form.detailList.length > 1 && this.form.detailList.length > index) {
@@ -223,7 +259,7 @@
        deviceNoticeContent: '',
        memberNotice: 1,
        status: 0,
        detailList: [{ random: Math.random(), regionId: null, regionName: null, regionCode: null, warningId: null }]
        detailList: [{ random: Math.random(), deviceId: null, deviceName: null, regionId: null, regionName: null, regionCode: null, warningId: null }]
      }
      // 新建
      if (target == null) {
@@ -235,11 +271,25 @@
      }
      // 编辑
      this.$nextTick(() => {
        this.form.detailList =target.detailList
        for (const key in this.form) {
          this.form[key] = target[key]
          this.form.memberNotice = this.form.memberNotice || 0
          this.form.deviceNotice = this.form.deviceNotice || 0
          this.form.status = this.form.status || 0
        }
        console.log('===========================', this.form.detailList, target.detailList)
        if (!this.form.detailList || !this.form.detailList.length) {
          this.form.detailList = [{ random: Math.random(), regionId: null, regionName: null, regionCode: null, warningId: null }]
          this.form.detailList = [{ random: Math.random(), deviceId: null, deviceName: null, regionId: null, regionName: null, regionCode: null, warningId: null }]
        } else {
          this.form.detailList.forEach((item, index) => {
            if (item.regionId != null) {
              var region = this.getSelectedObject(item.regionId)
              if (region) {
                item.carmeraList = region.carmeraList || []
              }
            }
          })
        }
        if (this.form.memberIds) {
          this.memberSelect = this.form.memberIds.split(',')