浏览代码

[FE]修改监控布局,视频回放,考勤报表一系列bug

luoxu5 4 年之前
父节点
当前提交
571e3bf518

+ 3 - 10
security-protection-platform/src/modules/aialarm/index.vue

@ -240,7 +240,7 @@ export default {
240 240
      loading: false,
241 241
      playerOptions: {
242 242
        playbackRates: [0.7, 1.0, 1.5, 2.0], // 播放速度
243
        autoplay: false, // 如果true,浏览器准备好时开始回放。
243
        autoplay: true, // 如果true,浏览器准备好时开始回放。
244 244
        muted: true, // 默认情况下将会消除任何音频。
245 245
        loop: false, // 导致视频一结束就重新开始。
246 246
        preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
@ -254,7 +254,7 @@ export default {
254 254
        // // 设置视频播放器的显示高度(以像素为单位)
255 255
        // height: '300px',
256 256
        sources: [{
257
          type: 'video/mp4', // 这里的种类支持很多种:基本视频格式、直播、流媒体等,具体可以参看git网址项目
257
          type: 'application/x-mpegURL', // 这里的种类支持很多种:基本视频格式、直播、流媒体等,具体可以参看git网址项目
258 258
          src: '' // url地址
259 259
        }],
260 260

@ -290,14 +290,7 @@ export default {
290 290
        console.log(res.data.data)
291 291
        this.alarmDetailData = res.data.data.alarmInfo
292 292
        this.pictureDetailData = res.data.data.pictureInfo
293
        this.videoDetailData = res.data.data.videoInfo
294

295
        if (this.videoDetailData) {
296
          // console.log(2222222222222)
297
          this.playerOptions.sources[0].src = this.videoDetailData.videoFileUrl
298
        } else {
299
          this.playerOptions.sources[0].src = ''
300
        }
293
        this.playerOptions.sources[0].src = res.data.data.videoInfo || ''
301 294

302 295
        // console.log(this.playerOptions.sources[0].src)
303 296
      } else { this.$Message.danger('处理失败') }

+ 3 - 2
security-protection-platform/src/modules/attendance/components/AttendanceDialog/index.vue

@ -3,7 +3,7 @@
3 3
    <t-loading v-model="loading" />
4 4
    <div class="modal-head">
5 5
      <div class="modal-head-left">
6
        <img class="modal-img" src="@/assets/images/avatar.png">
6
        <img :src="data.pictureUrl||defaultAvatar" class="modal-img">
7 7
        <div class="modal-detail">
8 8
          <span class="head-name-txt">{{ data.name }}</span>
9 9
          <span class="modal-head-txt">{{ data.org }}{{ data.dep }}</span>
@ -36,6 +36,7 @@
36 36
</template>
37 37
38 38
<script>
39
import defaultAvatar from '@/assets/images/avatar.png'
39 40
import AttrndanceCalendar from '../AttendanceCalendar'
40 41
import formatDateTime from '@/utils/formatDateTime.js'
41 42
export default {
@ -58,7 +59,7 @@ export default {
58 59
  },
59 60
  data () {
60 61
    return {
61
62
      defaultAvatar
62 63
    }
63 64
  },
64 65
  computed: {

+ 79 - 79
security-protection-platform/src/modules/system/monitor/HomePageSettings/Card.vue

@ -48,7 +48,7 @@ export default {
48 48
      require: true
49 49
    }
50 50
  },
51
  data() {
51
  data () {
52 52
    return {
53 53
      showConfirm: false,
54 54
      loadingDelete: false
@ -64,31 +64,31 @@ export default {
64 64
      return this.itemWidth * 0.9 - 20 - 6 - 32 + 'px'
65 65
    },
66 66
    name: function () {
67
      return this.data.resourceToolName
67
      return this.data.place || 123
68 68
    }
69 69
  },
70
  mounted() {
70
  mounted () {
71 71
    //  console.log(this.$picurl.defaults.baseURL)
72 72
  },
73 73
  methods: {
74 74
    handleChangeName: function (name) {
75 75
      // 修改名称
76
      if (this.data.resourceToolName !== name) {
77
        this.data.resourceToolName = name
76
      if (this.data.place !== name) {
77
        this.data.place = name
78 78
        this.$emit('nameChange', this.data)
79 79
      }
80 80
    },
81
    handleDelete() {
81
    handleDelete () {
82 82
      this.showConfirm = true
83 83
    },
84
    handleConfirmDelete() {
84
    handleConfirmDelete () {
85 85
      // 把事件抛出去,保持控件的干净
86 86
      this.$emit('deleted', this.data)
87 87
    },
88
    handleEdit() {
88
    handleEdit () {
89 89
      this.$emit('edit', this.data)
90 90
    },
91
    handleCancelDelete() {
91
    handleCancelDelete () {
92 92
      this.showConfirm = false
93 93
    }
94 94
  }
@ -96,96 +96,96 @@ export default {
96 96
</script>
97 97
98 98
<style lang="scss">
99
  @import "@/assets/styles/aid-theme/_variable.scss";
99
@import "@/assets/styles/aid-theme/_variable.scss";
100 100
101
  .div-block {
102
    display: inline-block;
103
    .opt {
101
.div-block {
102
  display: inline-block;
103
  .opt {
104
    position: absolute;
105
    left: 0;
106
    top: 0;
107
    width: 100%;
108
    height: 100%;
109
    opacity: 0;
110
    display: flex;
111
    justify-content: center;
112
    align-items: center;
113
    .move {
114
      color: rgb(255, 255, 255);
115
      position: absolute;
116
      top: 12px;
117
      text-align: center;
118
    }
119
    &::before {
120
      content: "";
121
      display: block;
104 122
      position: absolute;
105 123
      left: 0;
106 124
      top: 0;
107 125
      width: 100%;
108 126
      height: 100%;
109
      opacity: 0;
110
      display: flex;
111
      justify-content: center;
112
      align-items: center;
113
    .move{
114
      color: rgb(255, 255, 255);
115
      position: absolute;
116
      top: 12px;
117
      text-align: center;
127
      background-color: #00000038;
128
      border-radius: 4px;
129
      opacity: 0.8;
118 130
    }
119
      &::before {
120
        content: "";
121
        display: block;
122
        position: absolute;
123
        left: 0;
124
        top: 0;
125
        width: 100%;
126
        height: 100%;
127
        background-color: #00000038;
128
        border-radius: 4px;
129
        opacity: 0.8;
130
      }
131 131
132
      &::after {
133
        content: "";
134
        display: none;
135
        position: absolute;
136
        left: 0;
137
        top: 0;
138
        width: 100%;
139
        height: 100%;
140
        background-color: black;
141
        border-radius: 4px;
142
        opacity: 0;
143
      }
144
145
      &>.btn {
146
        color: rgba(255, 255, 255, 0.65);
147
        border-color: rgba(0, 0, 0, 0);
148
        background-color: rgba(0, 0, 0, 0);
132
    &::after {
133
      content: "";
134
      display: none;
135
      position: absolute;
136
      left: 0;
137
      top: 0;
138
      width: 100%;
139
      height: 100%;
140
      background-color: black;
141
      border-radius: 4px;
142
      opacity: 0;
143
    }
149 144
150
        &:hover {
151
          color: white;
152
          background-color: $brand-primary;
153
        }
154
      }
145
    & > .btn {
146
      color: rgba(255, 255, 255, 0.65);
147
      border-color: rgba(0, 0, 0, 0);
148
      background-color: rgba(0, 0, 0, 0);
155 149
156 150
      &:hover {
157
        opacity: 1;
151
        color: white;
152
        background-color: $brand-primary;
158 153
      }
159 154
    }
160 155
161
    &.active &__opt {
156
    &:hover {
162 157
      opacity: 1;
163 158
    }
159
  }
164 160
165
    &.lock &__opt::after {
166
      display: block;
167
    }
161
  &.active &__opt {
162
    opacity: 1;
163
  }
168 164
169
    .popover {
170
      width: 213px;
171
      background-color: white;
172
      color: rgba(0, 0, 0, 0.65);
173
      position: absolute;
174
      bottom: 12px;
175
      left: 12px;
176
      padding: 16px 20px;
177
      border-radius: 4px;
178
    }
165
  &.lock &__opt::after {
166
    display: block;
167
  }
179 168
180
    .btn-block {
181
      display: flex;
182
      flex-direction: row-reverse;
183
      margin-top: 14px;
184
    }
169
  .popover {
170
    width: 213px;
171
    background-color: white;
172
    color: rgba(0, 0, 0, 0.65);
173
    position: absolute;
174
    bottom: 12px;
175
    left: 12px;
176
    padding: 16px 20px;
177
    border-radius: 4px;
185 178
  }
186 179
187
  .div-footer {
188
    height: 32px;
189
    margin-top: 6px;
180
  .btn-block {
181
    display: flex;
182
    flex-direction: row-reverse;
183
    margin-top: 14px;
190 184
  }
185
}
186
187
.div-footer {
188
  height: 32px;
189
  margin-top: 6px;
190
}
191 191
</style>

+ 17 - 47
security-protection-platform/src/modules/system/monitor/HomePageSettings/ShiftCameraDialog.vue

@ -1,39 +1,15 @@
1 1
<template>
2
  <t-modal
3
    :visibled.sync="visibled"
4
    :title="title"
5
    :mask-closable="false"
6
    :ok="handleSubmit"
7
    width="780px"
8
    height="590px"
9
  >
2
  <t-modal :visibled.sync="visibled" :title="title" :mask-closable="false" :ok="handleSubmit" width="780px" height="590px">
10 3
    <div>
11 4
      <div style="display: flex">
12 5
        <span style="margin-top: 5px">{{ monitorSceneTypeName }}名称:</span>
13
        <t-input
14
          v-model="searchValue"
15
          placeholder="名称..."
16
          style="width: 300px; margin: 0px 10px"
17
          icon="search-outline"
18
          icon-placement="right"
19
        ></t-input>
6
        <t-input v-model="searchValue" placeholder="名称..." style="width: 300px; margin: 0px 10px" icon="search-outline" icon-placement="right"></t-input>
20 7
        <t-button color="primary">搜索</t-button>
21 8
      </div>
22
      <div
23
        v-for="item in cameraList"
24
        :key="item.resourceToolId"
25
        :data="item"
26
        class="masonry__item div-float"
27
        @click="groupClick(item)"
28
      >
9
      <div v-for="item in cameraList" :key="item.resourceToolId" :data="item" class="masonry__item div-float" @click="groupClick(item)">
29 10
        <div class="card-has-shadowed" style="width: 158px">
30 11
          <div>
31
            <img
32
              :class="item.resourceToolId == form.resourceToolId ? 'hover' : ''"
33
              :src="item.imageUrl"
34
              style="height: 120px; width: 158px"
35
              alt=""
36
            />
12
            <img :class="item.resourceToolId == form.resourceToolId ? 'hover' : ''" :src="item.imageUrl" style="height: 120px; width: 158px" alt="" />
37 13
          </div>
38 14
        </div>
39 15
        <div class="div-footer" style="width: 158px">
@ -43,13 +19,7 @@
43 19
        </div>
44 20
      </div>
45 21
      <div class="table-pager">
46
        <t-pager
47
          :current.sync="page"
48
          :total="total"
49
          :page-size="limit"
50
          show-elevator
51
          @on-change="onChange"
52
        >>
22
        <t-pager :current.sync="page" :total="total" :page-size="limit" show-elevator @on-change="onChange">>
53 23
        </t-pager>
54 24
      </div>
55 25
    </div>
@ -64,7 +34,7 @@ export default {
64 34
  props: {
65 35
    data: {
66 36
      type: Object,
67
      default() {
37
      default () {
68 38
        return {}
69 39
      }
70 40
    },
@ -77,7 +47,7 @@ export default {
77 47
      require: true
78 48
    }
79 49
  },
80
  data() {
50
  data () {
81 51
    return {
82 52
      visibled: false,
83 53
      form: {},
@ -105,23 +75,23 @@ export default {
105 75
    }
106 76
  },
107 77
  computed: {
108
    title() {
78
    title () {
109 79
      return this.data.monitorSceneTerminalRelId == null ? '新增' + this.monitorSceneTypeName : '更换' + this.monitorSceneTypeName
110 80
    }
111 81
  },
112 82
  watch: {
113
    data(val) {
83
    data (val) {
114 84
      // 侦听data属性
115 85
      this.form = this.data
116 86
      this.visibled = true
117 87
      this.getCameras(0)
118 88
    }
119 89
  },
120
  mounted() {
90
  mounted () {
121 91
    // this.getCameras(0)
122 92
  },
123 93
  methods: {
124
    getCameras(page) {
94
    getCameras (page) {
125 95
      let params = {
126 96
        pageNumber: page,
127 97
        pageSize: this.limit, // 每页条数
@ -136,24 +106,24 @@ export default {
136 106
        this.total = resp.data.data.total
137 107
      })
138 108
    },
139
    async getListFileUrl(res, data) {
109
    async getListFileUrl (res, data) {
140 110
      const resp = await sysapi.getListFileUrl(data)
141 111
      res.filter((item, index) => {
142 112
        item.imageUrl = resp.data.data[index]
143 113
      })
144 114
      this.cameraList = res
145 115
    },
146
    groupClick(item) {
116
    groupClick (item) {
147 117
      // 选中更换摄像头
148 118
      this.form.resourceToolName = item.resourceToolName
149 119
      this.form.resourceToolId = item.resourceToolId
150 120
      this.form.pictureUrl = item.pictureUrl
151 121
    },
152
    handleSubmit() {
122
    handleSubmit () {
153 123
      this.$emit('submit', this.form)
154 124
      this.visibled = false
155 125
    },
156
    onChange(page) {
126
    onChange (page) {
157 127
      this.page = page
158 128
      this.getCameras(page)
159 129
    }
@ -171,10 +141,10 @@ export default {
171 141
}
172 142
.card-has-shadowed {
173 143
  box-shadow: 0 1px 5px rgba(0, 0, 0, 0.15);
174
  cursor:pointer
144
  cursor: pointer;
175 145
}
176 146
.table-pager {
177
  clear:both;
147
  clear: both;
178 148
  display: flex;
179 149
  align-items: center;
180 150
  justify-content: flex-end;

+ 40 - 83
security-protection-platform/src/modules/system/monitor/VideoMonitor/index.vue

@ -5,98 +5,52 @@
5 5
        <t-col>
6 6
          <div style="float: left">
7 7
            <span>风场: </span>
8
            <t-select
9
              v-model="currentWindPlaceValue"
10
              style="width: 200px; height: 32px"
11
              @change="WindPlaceChenged"
12
            >
13
              <t-option
14
                v-for="item in departmentList"
15
                :key="item.id"
16
                :value="item.id"
17
              >{{ item.name }}</t-option
18
              >
8
            <t-select v-model="currentWindPlaceValue" style="width: 200px; height: 32px" @change="WindPlaceChenged">
9
              <t-option v-for="item in departmentList" :key="item.id" :value="item.id">{{ item.name }}</t-option>
19 10
            </t-select>
20 11
          </div>
21 12
        </t-col>
22 13
        <t-col span="8">
23 14
          <div>
24 15
            <t-button-group style="float: right">
25
              <t-button
26
                v-for="item in monitorSceneList"
27
                :key="item.monitorSceneId"
28
                :class="[
29
                  'base',
30
                  item.monitorSceneId == currenScene.monitorSceneId
31
                    ? 'active'
32
                    : '',
33
                ]"
34
                style="
16
              <t-button v-for="item in monitorSceneList" :key="item.monitorSceneId" :class="[
17
                'base',
18
                item.monitorSceneId == currenScene.monitorSceneId
19
                  ? 'active'
20
                  : '',
21
              ]" style="
35 22
                  display: inline-block;
36 23
                  -moz-appearance: button;
37 24
                  -webkit-appearance: button;
38 25
                  appearance: button;
39
                "
40
                @click="handleSceneOnClick(item)"
41
              >
26
                " @click="handleSceneOnClick(item)">
42 27
                <div>
43 28
                  {{ item.monitorSceneName }}
44 29
                  <div class="div_edit" @click.stop="handleSceneEdit(item)">
45
                    <t-icon
46
                      v-if="item.monitorSceneId == currenScene.monitorSceneId"
47
                      icon="edit"
48
                      shape="circle"
49
                      class="ico"
50
                    ></t-icon>
30
                    <t-icon v-if="item.monitorSceneId == currenScene.monitorSceneId" icon="edit" shape="circle" class="ico"></t-icon>
51 31
                  </div>
52 32
                </div>
53 33
              </t-button>
54
              <t-button
55
                style="48px"
56
                icon="plus-outline"
57
                @click="btnAddClick()"
58
              ></t-button>
34
              <t-button style="48px" icon="plus-outline" @click="btnAddClick()"></t-button>
59 35
            </t-button-group>
60 36
          </div>
61 37
        </t-col>
62 38
      </t-row>
63 39
      <t-row>
64 40
        <t-col style="margin-top: 10px">
65
          <t-button color="info" icon="plus-circle" @click="handleCreate"
66
          >新增监控</t-button
67
          >
41
          <t-button color="info" icon="plus-circle" @click="handleCreate">新增监控</t-button>
68 42
        </t-col>
69 43
      </t-row>
70 44
      <!--header-->
71 45
    </div>
72 46
    <div style="min-height: 280px; height: auto !important">
73
      <draggable-grid
74
        v-model="areaMonitorList"
75
        :show-page="true"
76
        :grid="currenScene.monitorViewLayout!=null?currenScene.monitorViewLayout.split('X'):[4,1]"
77
        key-word="monitorSceneTerminalRelId"
78
        @update="datadragEnd"
79
      >
47
      <draggable-grid v-model="areaMonitorList" :show-page="true" :grid="currenScene.monitorViewLayout!=null?currenScene.monitorViewLayout.split('X'):[4,1]" key-word="monitorSceneTerminalRelId" @update="datadragEnd">
80 48
        <template v-slot="{ scope }">
81
          <view-card
82
            :data="scope.data"
83
            :width="scope.width + 'px'"
84
            :height="scope.height + 'px'"
85
            :monitor-scene-type-name="currenScene.monitorSceneTypeName"
86
            @nameChange="handleCameraSubmit"
87
            @edit="handleEdit"
88
            @deleted="handleDeleted"
89
          />
49
          <view-card :data="scope.data" :width="scope.width + 'px'" :height="scope.height + 'px'" :monitor-scene-type-name="currenScene.monitorSceneTypeName" @nameChange="handleCameraSubmit" @edit="handleEdit" @deleted="handleDeleted" />
90 50
        </template>
91 51
      </draggable-grid>
92
      <shift-scene-dialog
93
        :data="dialogSceneData"
94
        @submit="handlesceneSubmit"
95
        @deleted="handlesceneDelete"
96
      />
97
      <shift-camera-dialog :data="dialogData" :monitor-scene-type-name="currenScene.monitorSceneTypeName"
98
                           :monitor-scene-type-id="currenScene.monitorSceneType"
99
                           @submit="handleCameraSubmit"/>
52
      <shift-scene-dialog :data="dialogSceneData" @submit="handlesceneSubmit" @deleted="handlesceneDelete" />
53
      <shift-camera-dialog :data="dialogData" :monitor-scene-type-name="currenScene.monitorSceneTypeName" :monitor-scene-type-id="currenScene.monitorSceneType" @submit="handleCameraSubmit" />
100 54
    </div>
101 55
  </div>
102 56
</template>
@ -121,13 +75,13 @@ export default {
121 75
    ViewCard,
122 76
    CreateCard
123 77
  },
124
  create() {
78
  create () {
125 79
    document.body.ondrop = function (event) {
126 80
      event.preventDefault()
127 81
      event.stopPropagation()
128 82
    }
129 83
  },
130
  data() {
84
  data () {
131 85
    return {
132 86
      // 选中的组织机构ID
133 87
      currentWindPlaceValue: '2',
@ -189,14 +143,14 @@ export default {
189 143
      return tempDataList
190 144
    }
191 145
  },
192
  mounted() {
146
  mounted () {
193 147
    let dom = this.$refs.box
194 148
    this.itemWidth = dom.clientWidth / this.currentType - 25
195 149
    this.getDepartments()
196 150
  },
197 151
  methods: {
198 152
    //  获取组织
199
    getDepartments() {
153
    getDepartments () {
200 154
      sysapi.getDepartments().then((resp) => {
201 155
        this.departmentList = resp.data.data || []
202 156
        if (this.departmentList.length > 0) {
@ -206,7 +160,7 @@ export default {
206 160
      })
207 161
    },
208 162
    // 获取监控场景
209
    getMonitorScene(orgId) {
163
    getMonitorScene (orgId) {
210 164
      sysapi.getMonitorScene(orgId).then((resp) => {
211 165
        this.monitorSceneList = resp.data.data || []
212 166
        if (this.monitorSceneList.length > 0) {
@ -216,26 +170,26 @@ export default {
216 170
      })
217 171
    },
218 172
    // 场景ID查询该场景下所有监控终端列表
219
    geTerminalRel(monitorScene) {
173
    geTerminalRel (monitorScene) {
220 174
      sysapi.getTerminalRel(monitorScene.monitorSceneId).then((resp) => {
221 175
        this.areaMonitorList = resp.data.data || []
222 176
      })
223 177
    },
224
    WindPlaceChenged(cloneValue) {
178
    WindPlaceChenged (cloneValue) {
225 179
      this.getMonitorScene(cloneValue)
226 180
    },
227
    handleSceneOnClick(item) {
181
    handleSceneOnClick (item) {
228 182
      if (this.currenScene !== item) {
229 183
        this.currenScene = item
230 184
        this.geTerminalRel(this.currenScene)
231 185
      }
232 186
    },
233 187
    // 场景
234
    handleSceneEdit(item) {
188
    handleSceneEdit (item) {
235 189
      this.dialogSceneData = this.currenScene
236 190
      // event.stopPropagation()
237 191
    },
238
    btnAddClick() {
192
    btnAddClick () {
239 193
      this.dialogSceneData = {
240 194
        monitorSceneId: null, // 场景ID(新增时为空,修改时必填)
241 195
        monitorSceneName: null, // 场景名称(必填)
@ -244,7 +198,7 @@ export default {
244 198
        monitorSceneCode: '' // 场景CODE(暂时为空)
245 199
      }
246 200
    },
247
    handlesceneDelete(item) {
201
    handlesceneDelete (item) {
248 202
      sysapi.deleteMonitorScene(item)
249 203
        .then((resp) => {
250 204
          this.$Message.danger('删除成功')
@ -255,12 +209,12 @@ export default {
255 209
          this.getMonitorScene(this.currentWindPlaceValue)
256 210
        })
257 211
    },
258
    handlesceneSubmit(data) {
212
    handlesceneSubmit (data) {
259 213
      if (data.monitorSceneId != null) {
260 214
        const target = this.monitorSceneList.find(
261 215
          (item) =>
262 216
            item.monitorSceneId ===
263
          data.monitorSceneId
217
            data.monitorSceneId
264 218
        )
265 219
        Object.assign(target, data)
266 220
        sysapi
@ -295,11 +249,14 @@ export default {
295 249
      }
296 250
    },
297 251
    // 监控
298
    handleEdit(item) {
252
    handleEdit (item) {
299 253
      this.dialogData = Object.assign({}, item)
300 254
      console.log(item.title)
301 255
    },
302
    handleCreate() {
256
    handleCreate () {
257
      if (this.monitorSceneList.length === 0) {
258
        return this.$Message.danger('请先新增场景!')
259
      }
303 260
      this.dialogData = {
304 261
        customProperties: {},
305 262
        validDate: null,
@ -327,7 +284,7 @@ export default {
327 284
        effectType: 'OUT'
328 285
      }
329 286
    },
330
    handleDeleted(data) {
287
    handleDeleted (data) {
331 288
      sysapi.deleteTerminalRel(data)
332 289
        .then((resp) => {
333 290
        }).catch((error) => {
@ -337,17 +294,17 @@ export default {
337 294
          this.geTerminalRel(this.currenScene)
338 295
        })
339 296
    },
340
    datadragEnd(evt) {
297
    datadragEnd (evt) {
341 298
      if (evt.oldIndex !== evt.newIndex) {
342 299
        let params = {
343
          params:{
300
          params: {
344 301
            monitorSceneTerminalRelId: this.areaMonitorList[evt.oldIndex].monitorSceneTerminalRelId, // 场景与终端关联ID
345 302
            monitorSceneId: this.currenScene.monitorSceneId, // 场景ID
346 303
            resourceToolId: this.areaMonitorList[evt.oldIndex].resourceToolId, // 终端ID
347 304
            resourceToolIndex: this.areaMonitorList[evt.newIndex].resourceToolIndex // 移动位置序号
348 305
          }
349 306
        }
350
        sysapi.moveTerminalRelIndex(params).then((resp) => {})
307
        sysapi.moveTerminalRelIndex(params).then((resp) => { })
351 308
          .catch((error) => {
352 309
            console.log(error)
353 310
            this.$Message.danger('修改位置失败')
@ -356,12 +313,12 @@ export default {
356 313
          })
357 314
      }
358 315
    },
359
    handleCameraSubmit(data) {
316
    handleCameraSubmit (data) {
360 317
      if (data.monitorSceneTerminalRelId != null) {
361 318
        const target = this.areaMonitorList.find(
362 319
          (item) =>
363 320
            item.monitorSceneTerminalRelId ===
364
          data.monitorSceneTerminalRelId
321
            data.monitorSceneTerminalRelId
365 322
        )
366 323
        Object.assign(target, data)
367 324
        sysapi