haodingding пре 1 година
родитељ
комит
ad2e0b7321

+ 44 - 0
src/api/system/fallsolve.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询跌倒告警列表
+export function listFallsolve(query) {
+  return request({
+    url: '/system/fallsolve/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询跌倒告警详细
+export function getFallsolve(id) {
+  return request({
+    url: '/system/fallsolve/' + id,
+    method: 'get'
+  })
+}
+
+// 新增跌倒告警
+export function addFallsolve(data) {
+  return request({
+    url: '/system/fallsolve',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改跌倒告警
+export function updateFallsolve(data) {
+  return request({
+    url: '/system/fallsolve',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除跌倒告警
+export function delFallsolve(id) {
+  return request({
+    url: '/system/fallsolve/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/system/healthsolve.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询健康告警处理列表
+export function listHealthsolve(query) {
+  return request({
+    url: '/system/healthsolve/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询健康告警处理详细
+export function getHealthsolve(id) {
+  return request({
+    url: '/system/healthsolve/' + id,
+    method: 'get'
+  })
+}
+
+// 新增健康告警处理
+export function addHealthsolve(data) {
+  return request({
+    url: '/system/healthsolve',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改健康告警处理
+export function updateHealthsolve(data) {
+  return request({
+    url: '/system/healthsolve',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除健康告警处理
+export function delHealthsolve(id) {
+  return request({
+    url: '/system/healthsolve/' + id,
+    method: 'delete'
+  })
+}

+ 0 - 44
src/api/system/info.js

@@ -1,44 +0,0 @@
-import request from '@/utils/request'
-
-// 查询手环信息 实时数据列表
-export function listInfo(query) {
-  return request({
-    url: '/system/info/list',
-    method: 'get',
-    params: query
-  })
-}
-
-// 查询手环信息 实时数据详细
-export function getInfo(id) {
-  return request({
-    url: '/system/info/' + id,
-    method: 'get'
-  })
-}
-
-// 新增手环信息 实时数据
-export function addInfo(data) {
-  return request({
-    url: '/system/info',
-    method: 'post',
-    data: data
-  })
-}
-
-// 修改手环信息 实时数据
-export function updateInfo(data) {
-  return request({
-    url: '/system/info',
-    method: 'put',
-    data: data
-  })
-}
-
-// 删除手环信息 实时数据
-export function delInfo(id) {
-  return request({
-    url: '/system/info/' + id,
-    method: 'delete'
-  })
-}

+ 0 - 44
src/api/system/list.js

@@ -1,44 +0,0 @@
-import request from '@/utils/request'
-
-// 查询手环报警列信息列表
-export function listList(query) {
-  return request({
-    url: '/system/list/list',
-    method: 'get',
-    params: query
-  })
-}
-
-// 查询手环报警列信息详细
-export function getList(id) {
-  return request({
-    url: '/system/list/' + id,
-    method: 'get'
-  })
-}
-
-// 新增手环报警列信息
-export function addList(data) {
-  return request({
-    url: '/system/list',
-    method: 'post',
-    data: data
-  })
-}
-
-// 修改手环报警列信息
-export function updateList(data) {
-  return request({
-    url: '/system/list',
-    method: 'put',
-    data: data
-  })
-}
-
-// 删除手环报警列信息
-export function delList(id) {
-  return request({
-    url: '/system/list/' + id,
-    method: 'delete'
-  })
-}

+ 44 - 0
src/api/system/othersolve.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询其他告警处理列表
+export function listOthersolve(query) {
+  return request({
+    url: '/system/othersolve/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询其他告警处理详细
+export function getOthersolve(id) {
+  return request({
+    url: '/system/othersolve/' + id,
+    method: 'get'
+  })
+}
+
+// 新增其他告警处理
+export function addOthersolve(data) {
+  return request({
+    url: '/system/othersolve',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改其他告警处理
+export function updateOthersolve(data) {
+  return request({
+    url: '/system/othersolve',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除其他告警处理
+export function delOthersolve(id) {
+  return request({
+    url: '/system/othersolve/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/system/railsolve.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询围栏告警处理列表
+export function listRailsolve(query) {
+  return request({
+    url: '/system/railsolve/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询围栏告警处理详细
+export function getRailsolve(id) {
+  return request({
+    url: '/system/railsolve/' + id,
+    method: 'get'
+  })
+}
+
+// 新增围栏告警处理
+export function addRailsolve(data) {
+  return request({
+    url: '/system/railsolve',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改围栏告警处理
+export function updateRailsolve(data) {
+  return request({
+    url: '/system/railsolve',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除围栏告警处理
+export function delRailsolve(id) {
+  return request({
+    url: '/system/railsolve/' + id,
+    method: 'delete'
+  })
+}

+ 0 - 2
src/views/system/device/index.vue

@@ -879,7 +879,6 @@ export default {
           },
           data: obj,
         }).then(res => {
-          console.log(111);
           if (res.data && res.data.code == 200) {
             if (flag == 2) {
               return
@@ -891,7 +890,6 @@ export default {
             flag = 2
           }
         })
-        console.log(222);
       }
       if (Object.keys(this.intervalForm).length) {
         let obj = {}

+ 452 - 0
src/views/system/fallsolve/index.vue

@@ -0,0 +1,452 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="用户姓名" prop="userid">
+        <el-input v-model="queryParams.name" placeholder="请输入用户姓名" clearable @keyup.enter.native="handleQuery" />
+      </el-form-item>
+      <el-form-item label="处理状态" prop="solveStatus">
+        <el-select v-model="queryParams.solveStatus">
+          <el-option label="已处理" :value="1"></el-option>
+          <el-option label="未处理" :value="0"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <!-- <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:solve:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:solve:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:solve:remove']"
+        >删除</el-button>
+      </el-col> -->
+      <el-col :span="1.5">
+        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
+          v-hasPermi="['system:solve:export']">导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="fallsolveList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <!-- <el-table-column label="id" align="center" prop="id" /> -->
+      <el-table-column label="用户名" align="center" prop="name" />
+      <el-table-column label="联系电话" align="center" prop="tel_one" />
+      <el-table-column label="事件类型" align="center">
+        <template slot-scope="scope">
+          跌倒告警
+        </template>
+      </el-table-column>
+      <el-table-column label="告警时间" align="center" prop="createtime" />
+      <el-table-column label="告警内容" align="center" prop="alarmMsg" />
+      <el-table-column label="处理状态" align="center" prop="solveStatus" />
+      <!-- <el-table-column label="服务人员用户ID" align="center" prop="serviceUserid" />
+      <el-table-column label="时间记录" align="center" prop="msg" />
+      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column> -->
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button size="mini" type="text" icon="el-icon-view" @click="handleSee(scope.row)">查看</el-button>
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:solve:edit']">处理</el-button>
+          <!-- <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:solve:remove']"
+          >删除</el-button> -->
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
+      @pagination="getList" />
+
+    <!-- 添加或修改SOS预警处理对话框 -->
+    <el-dialog :visible.sync="open" width="1200px" append-to-body destroy-on-close>
+      <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">姓名:</div>
+          <div>{{ form.name }}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">联系电话:</div>
+          <div>{{ form.tel_one }}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">所属机构:</div>
+          <div>{{ form.store_name }}</div>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备类型:</div>
+          <div>智能设备</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备型号:</div>
+          <div>{{form.deviceModel}}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备名称:</div>
+          <div>智能手环</div>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备ID:</div>
+          <div>{{ form.deviceIdCode }}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">事件类型:</div>
+          <div>{{ form.alarm_type == 21 ? '跌倒告警' : '' }}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">告警时间:</div>
+          <div>{{ form.createtime }}</div>
+        </el-col>
+      </el-row>
+      <!-- <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">告警开始时间:</div>
+          <div>2023-09-07 16:41</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">告警结束时间:</div>
+          <div>2023-09-07 16:41</div>
+        </el-col>
+      </el-row> -->
+      <el-row>
+        <el-col class="user-table">
+          <div class="label">告警地址:</div>
+          <div>{{ form.address_desc }}</div>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col class="user-table">
+          <div class="label">告警内容:</div>
+          <div>{{ form.alarmMsg }}</div>
+        </el-col>
+      </el-row>
+      <el-row v-if="!deal_flag">
+        <el-col class="user-table">
+          <div class="label">处理状态:</div>
+          <div>{{form.solveStatus}}</div>
+        </el-col>
+      </el-row>
+      <el-row v-if="!deal_flag">
+        <el-col class="user-table">
+          <div class="label">事件记录:</div>
+          <div>{{ form.msg }}</div>
+        </el-col>
+      </el-row>
+      <el-row v-if="deal_flag">
+        <el-col class="user-table">
+          <div class="label">处理状态:</div>
+          <el-radio-group v-model="form.solve_status">
+            <el-radio label="0">未处理</el-radio>
+            <el-radio label="2">在处理</el-radio>
+            <el-radio label="1">已处理</el-radio>
+          </el-radio-group>
+        </el-col>
+      </el-row>
+      <el-row v-if="deal_flag" style="margin-bottom: 20px;">
+        <el-col class="user-table" style="align-items: flex-start;">
+          <div class="label">事件记录:</div>
+          <el-input type="textarea" :rows="2" style="width: 950px;" v-model="form.msg"></el-input>
+        </el-col>
+      </el-row>
+      <el-row>
+        <div id="map"></div>
+      </el-row>
+      <div slot="footer" class="dialog-footer" style="text-align: center;">
+        <el-button type="primary" @click="submit" v-if="deal_flag">提 交</el-button>
+        <el-button @click="cancel" v-if="!deal_flag">关 闭</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listFallsolve, getFallsolve, delFallsolve, addFallsolve, updateFallsolve } from "@/api/system/fallsolve";
+import AMapLoader from '@amap/amap-jsapi-loader';
+
+export default {
+  name: "Fallsolve",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 跌倒告警表格数据
+      fallsolveList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        userid: null,
+        deviceIdCode: null,
+        alarmMsg: null,
+        solveStatus: null,
+        serviceUserid: null,
+        msg: null,
+        createTime: null,
+        alarmid: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      },
+      map: null,
+      deal_flag: false,
+      deviceModel: []
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    createMap() {
+      window._AMapSecurityConfig = {
+        securityJsCode: '6aaa52f268bd774edcc494a7055cf167'
+      }
+      AMapLoader.load({
+        key: '533a73da5000e2db8d89b8fda02f33bf',
+        version: '2.0'
+      }).then(AMap => {
+        this.map = new AMap.Map('map', {
+          zoom: 15,
+          center: [this.form.gps_long, this.form.gps_lat]
+        })
+        this.map.plugin(['AMap.ToolBar', 'AMap.Scale'], () => {
+          this.map.addControl(new AMap.ToolBar({
+            position: 'RT'
+          }))
+          this.map.addControl(new AMap.Scale())
+        })
+        var info = [];
+        info.push(`<p>姓名 : ${this.form.name}</p>`)
+        info.push(`<p>电话 : ${this.form.tel_one}</p>`);
+        info.push(`<p>地址 : ${this.form.address_desc}</p>`);
+        info.push(`<p>预警时间 : ${this.form.createtime}</p>`);
+        let infoWindow = new AMap.InfoWindow({
+          offset: new AMap.Pixel(0, -35),
+          content: info.join(""),  //使用默认信息窗体框样式,显示信息内容
+        });
+        infoWindow.open(this.map, this.map.getCenter());
+        let marker = new AMap.Marker({
+          position: [this.form.gps_long, this.form.gps_lat]
+        })
+        this.map.add(marker)
+        marker.on('click', () => {
+          infoWindow.open(this.map, this.map.getCenter());
+        })
+      })
+    },
+    /** 查询跌倒告警列表 */
+    async getList() {
+      this.loading = true;
+      let { data: deviceModel } = await this.getDicts('sys_device_type')
+      this.deviceModel = deviceModel
+      await listFallsolve(this.queryParams).then(response => {
+        this.fallsolveList = response.rows;
+        this.fallsolveList.map(item => {
+          if (item.device_model || item.device_model == 0) {
+            item.deviceModel = this.deviceModel[item.device_model].dictLabel
+          }
+          item.solveStatus = item.solve_status == 1 ? '已处理' : item.solve_status == 0 ? '未处理' : '处理中'
+        })
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        userid: null,
+        deviceIdCode: null,
+        alarmMsg: null,
+        solveStatus: null,
+        serviceUserid: null,
+        msg: null,
+        createTime: null,
+        alarmid: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加跌倒告警";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.aid || this.ids
+      this.deal_flag = true
+      // getSolve(id).then(response => {
+      //   this.form = response.data;
+      //   this.open = true;
+      //   this.title = "修改SOS预警处理";
+      //   this.createMap()
+      // });
+      this.fallsolveList.map(item => {
+        if (item.aid == id) {
+          this.form = item
+          this.open = true;
+        }
+      })
+      this.createMap()
+    },
+    handleSee(row) {
+      this.reset();
+      const id = row.aid
+      this.fallsolveList.map(item => {
+        if (item.aid == id) {
+          this.form = item
+          this.open = true;
+          this.deal_flag = false
+        }
+      })
+      this.createMap()
+    },
+    submit() {
+      let data = {}
+      data.uid = this.form.uid
+      data.deviceIdCode = this.form.deviceIdCode
+      data.alarmMsg = this.form.alarmMsg
+      data.solve_status = this.form.solve_status
+      data.msg = this.form.msg
+      data.aid = this.form.aid
+      addFallsolve(data).then(response => {
+        this.$modal.msgSuccess("提交成功");
+        this.open = false;
+        this.getList();
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateFallsolve(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addFallsolve(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除跌倒告警编号为"' + ids + '"的数据项?').then(function() {
+        return delFallsolve(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/fallsolve/export', {
+        ...this.queryParams
+      }, `fallsolve_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
+<style scoped>
+.user-table {
+  display: flex;
+  align-items: center;
+  line-height: 42px;
+}
+
+.label {
+  width: 120px;
+  text-align: end;
+}
+
+#map {
+  width: 100%;
+  height: 500px;
+}
+</style>

+ 452 - 0
src/views/system/healthsolve/index.vue

@@ -0,0 +1,452 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="用户姓名" prop="userid">
+        <el-input v-model="queryParams.name" placeholder="请输入用户姓名" clearable @keyup.enter.native="handleQuery" />
+      </el-form-item>
+      <el-form-item label="处理状态" prop="solveStatus">
+        <el-select v-model="queryParams.solveStatus">
+          <el-option label="已处理" :value="1"></el-option>
+          <el-option label="未处理" :value="0"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <!-- <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:solve:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:solve:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:solve:remove']"
+        >删除</el-button>
+      </el-col> -->
+      <el-col :span="1.5">
+        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
+          v-hasPermi="['system:solve:export']">导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="healthsolveList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <!-- <el-table-column label="id" align="center" prop="id" /> -->
+      <el-table-column label="用户名" align="center" prop="name" />
+      <el-table-column label="联系电话" align="center" prop="tel_one" />
+      <el-table-column label="事件类型" align="center">
+        <template slot-scope="scope">
+          健康告警
+        </template>
+      </el-table-column>
+      <el-table-column label="告警时间" align="center" prop="createtime" />
+      <el-table-column label="告警内容" align="center" prop="alarmMsg" />
+      <el-table-column label="处理状态" align="center" prop="solveStatus" />
+      <!-- <el-table-column label="服务人员用户ID" align="center" prop="serviceUserid" />
+      <el-table-column label="时间记录" align="center" prop="msg" />
+      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column> -->
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button size="mini" type="text" icon="el-icon-view" @click="handleSee(scope.row)">查看</el-button>
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:solve:edit']">处理</el-button>
+          <!-- <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:solve:remove']"
+          >删除</el-button> -->
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
+      @pagination="getList" />
+
+    <!-- 添加或修改SOS预警处理对话框 -->
+    <el-dialog :visible.sync="open" width="1200px" append-to-body destroy-on-close>
+      <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">姓名:</div>
+          <div>{{ form.name }}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">联系电话:</div>
+          <div>{{ form.tel_one }}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">所属机构:</div>
+          <div>{{ form.store_name }}</div>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备类型:</div>
+          <div>智能设备</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备型号:</div>
+          <div>{{form.deviceModel}}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备名称:</div>
+          <div>智能手环</div>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备ID:</div>
+          <div>{{ form.deviceIdCode }}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">事件类型:</div>
+          <div>{{ form.alarm_type == 24 ? '健康告警' : '' }}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">告警时间:</div>
+          <div>{{ form.createtime }}</div>
+        </el-col>
+      </el-row>
+      <!-- <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">告警开始时间:</div>
+          <div>2023-09-07 16:41</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">告警结束时间:</div>
+          <div>2023-09-07 16:41</div>
+        </el-col>
+      </el-row> -->
+      <el-row>
+        <el-col class="user-table">
+          <div class="label">告警地址:</div>
+          <div>{{ form.address_desc }}</div>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col class="user-table">
+          <div class="label">告警内容:</div>
+          <div>{{ form.alarmMsg }}</div>
+        </el-col>
+      </el-row>
+      <el-row v-if="!deal_flag">
+        <el-col class="user-table">
+          <div class="label">处理状态:</div>
+          <div>{{form.solveStatus}}</div>
+        </el-col>
+      </el-row>
+      <el-row v-if="!deal_flag">
+        <el-col class="user-table">
+          <div class="label">事件记录:</div>
+          <div>{{ form.msg }}</div>
+        </el-col>
+      </el-row>
+      <el-row v-if="deal_flag">
+        <el-col class="user-table">
+          <div class="label">处理状态:</div>
+          <el-radio-group v-model="form.solve_status">
+            <el-radio label="0">未处理</el-radio>
+            <el-radio label="2">在处理</el-radio>
+            <el-radio label="1">已处理</el-radio>
+          </el-radio-group>
+        </el-col>
+      </el-row>
+      <el-row v-if="deal_flag" style="margin-bottom: 20px;">
+        <el-col class="user-table" style="align-items: flex-start;">
+          <div class="label">事件记录:</div>
+          <el-input type="textarea" :rows="2" style="width: 950px;" v-model="form.msg"></el-input>
+        </el-col>
+      </el-row>
+      <el-row>
+        <div id="map"></div>
+      </el-row>
+      <div slot="footer" class="dialog-footer" style="text-align: center;">
+        <el-button type="primary" @click="submit" v-if="deal_flag">提 交</el-button>
+        <el-button @click="cancel" v-if="!deal_flag">关 闭</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listHealthsolve, getHealthsolve, delHealthsolve, addHealthsolve, updateHealthsolve } from "@/api/system/healthsolve";
+import AMapLoader from '@amap/amap-jsapi-loader';
+
+export default {
+  name: "Healthsolve",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 健康告警处理表格数据
+      healthsolveList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        userid: null,
+        deviceIdCode: null,
+        alarmMsg: null,
+        solveStatus: null,
+        serviceUserid: null,
+        msg: null,
+        createTime: null,
+        alarmid: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      },
+      map: null,
+      deal_flag: false,
+      deviceModel: []
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    createMap() {
+      window._AMapSecurityConfig = {
+        securityJsCode: '6aaa52f268bd774edcc494a7055cf167'
+      }
+      AMapLoader.load({
+        key: '533a73da5000e2db8d89b8fda02f33bf',
+        version: '2.0'
+      }).then(AMap => {
+        this.map = new AMap.Map('map', {
+          zoom: 15,
+          center: [this.form.gps_long, this.form.gps_lat]
+        })
+        this.map.plugin(['AMap.ToolBar', 'AMap.Scale'], () => {
+          this.map.addControl(new AMap.ToolBar({
+            position: 'RT'
+          }))
+          this.map.addControl(new AMap.Scale())
+        })
+        var info = [];
+        info.push(`<p>姓名 : ${this.form.name}</p>`)
+        info.push(`<p>电话 : ${this.form.tel_one}</p>`);
+        info.push(`<p>地址 : ${this.form.address_desc}</p>`);
+        info.push(`<p>预警时间 : ${this.form.createtime}</p>`);
+        let infoWindow = new AMap.InfoWindow({
+          offset: new AMap.Pixel(0, -35),
+          content: info.join(""),  //使用默认信息窗体框样式,显示信息内容
+        });
+        infoWindow.open(this.map, this.map.getCenter());
+        let marker = new AMap.Marker({
+          position: [this.form.gps_long, this.form.gps_lat]
+        })
+        this.map.add(marker)
+        marker.on('click', () => {
+          infoWindow.open(this.map, this.map.getCenter());
+        })
+      })
+    },
+    /** 查询健康告警处理列表 */
+    async getList() {
+      this.loading = true;
+      let { data: deviceModel } = await this.getDicts('sys_device_type')
+      this.deviceModel = deviceModel
+      await listHealthsolve(this.queryParams).then(response => {
+        this.healthsolveList = response.rows;
+        this.healthsolveList.map(item => {
+          if (item.device_model || item.device_model == 0) {
+            item.deviceModel = this.deviceModel[item.device_model].dictLabel
+          }
+          item.solveStatus = item.solve_status == 1 ? '已处理' : item.solve_status == 0 ? '未处理' : '处理中'
+        })
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        userid: null,
+        deviceIdCode: null,
+        alarmMsg: null,
+        solveStatus: null,
+        serviceUserid: null,
+        msg: null,
+        createTime: null,
+        alarmid: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加健康告警处理";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.aid || this.ids
+      this.deal_flag = true
+      // getSolve(id).then(response => {
+      //   this.form = response.data;
+      //   this.open = true;
+      //   this.title = "修改SOS预警处理";
+      //   this.createMap()
+      // });
+      this.healthsolveList.map(item => {
+        if (item.aid == id) {
+          this.form = item
+          this.open = true;
+        }
+      })
+      this.createMap()
+    },
+    handleSee(row) {
+      this.reset();
+      const id = row.aid
+      this.healthsolveList.map(item => {
+        if (item.aid == id) {
+          this.form = item
+          this.open = true;
+          this.deal_flag = false
+        }
+      })
+      this.createMap()
+    },
+    submit() {
+      let data = {}
+      data.uid = this.form.uid
+      data.deviceIdCode = this.form.deviceIdCode
+      data.alarmMsg = this.form.alarmMsg
+      data.solve_status = this.form.solve_status
+      data.msg = this.form.msg
+      data.aid = this.form.aid
+      addHealthsolve(data).then(response => {
+        this.$modal.msgSuccess("提交成功");
+        this.open = false;
+        this.getList();
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateHealthsolve(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addHealthsolve(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除健康告警处理编号为"' + ids + '"的数据项?').then(function() {
+        return delHealthsolve(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/healthsolve/export', {
+        ...this.queryParams
+      }, `healthsolve_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
+<style scoped>
+.user-table {
+  display: flex;
+  align-items: center;
+  line-height: 42px;
+}
+
+.label {
+  width: 120px;
+  text-align: end;
+}
+
+#map {
+  width: 100%;
+  height: 500px;
+}
+</style>

+ 0 - 828
src/views/system/info/index.vue

@@ -1,828 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="设备id" prop="facilityId">
-        <el-input
-          v-model="queryParams.facilityId"
-          placeholder="请输入设备id"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="设置id编码" prop="deviceIdCode">
-        <el-input
-          v-model="queryParams.deviceIdCode"
-          placeholder="请输入设置id编码"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="版本" prop="version">
-        <el-input
-          v-model="queryParams.version"
-          placeholder="请输入版本"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="经度" prop="gpsLong">
-        <el-input
-          v-model="queryParams.gpsLong"
-          placeholder="请输入经度"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="纬度" prop="gpsLat">
-        <el-input
-          v-model="queryParams.gpsLat"
-          placeholder="请输入纬度"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="使用经度" prop="useGpsLong">
-        <el-input
-          v-model="queryParams.useGpsLong"
-          placeholder="请输入使用经度"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="使用纬度" prop="useGpsLat">
-        <el-input
-          v-model="queryParams.useGpsLat"
-          placeholder="请输入使用纬度"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="使用mac" prop="useMac">
-        <el-input
-          v-model="queryParams.useMac"
-          placeholder="请输入使用mac"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="速度 公里/小时" prop="speed">
-        <el-input
-          v-model="queryParams.speed"
-          placeholder="请输入速度 公里/小时"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="方向 度" prop="direction">
-        <el-input
-          v-model="queryParams.direction"
-          placeholder="请输入方向 度"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="海拔" prop="poster">
-        <el-input
-          v-model="queryParams.poster"
-          placeholder="请输入海拔"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="电量" prop="electricQuantity">
-        <el-input
-          v-model="queryParams.electricQuantity"
-          placeholder="请输入电量"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="计步数" prop="stepNumber">
-        <el-input
-          v-model="queryParams.stepNumber"
-          placeholder="请输入计步数"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="翻滚数" prop="rollNumber">
-        <el-input
-          v-model="queryParams.rollNumber"
-          placeholder="请输入翻滚数"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="在线状态 1在线 0离线" prop="onlineStatis">
-        <el-input
-          v-model="queryParams.onlineStatis"
-          placeholder="请输入在线状态 1在线 0离线"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="体温" prop="temp">
-        <el-input
-          v-model="queryParams.temp"
-          placeholder="请输入体温"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="血压 高压 0无效" prop="bloodHeightPressure">
-        <el-input
-          v-model="queryParams.bloodHeightPressure"
-          placeholder="请输入血压 高压 0无效"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="血压 低压 0无效" prop="bloodLowPressure">
-        <el-input
-          v-model="queryParams.bloodLowPressure"
-          placeholder="请输入血压 低压 0无效"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="心率 0无效" prop="heartRate">
-        <el-input
-          v-model="queryParams.heartRate"
-          placeholder="请输入心率 0无效"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="血养饱和度" prop="oxygen">
-        <el-input
-          v-model="queryParams.oxygen"
-          placeholder="请输入血养饱和度"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="离线时间" prop="offlinetime">
-        <el-date-picker clearable
-          v-model="queryParams.offlinetime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择离线时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="上线时间" prop="onlinetime">
-        <el-date-picker clearable
-          v-model="queryParams.onlinetime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择上线时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="gps更新时间" prop="gpsUpdateTime">
-        <el-date-picker clearable
-          v-model="queryParams.gpsUpdateTime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择gps更新时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="血压更新时间" prop="bloodUpdateTime">
-        <el-date-picker clearable
-          v-model="queryParams.bloodUpdateTime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择血压更新时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="心率更新时间" prop="heartUpdateTime">
-        <el-date-picker clearable
-          v-model="queryParams.heartUpdateTime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择心率更新时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="体温更新时间" prop="tempUpdateTime">
-        <el-date-picker clearable
-          v-model="queryParams.tempUpdateTime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择体温更新时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="血氧更新时间" prop="oxygenUpdateTime">
-        <el-date-picker clearable
-          v-model="queryParams.oxygenUpdateTime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择血氧更新时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="电量更新时间" prop="electricQuantityUpdateTime">
-        <el-date-picker clearable
-          v-model="queryParams.electricQuantityUpdateTime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择电量更新时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="步数更新时间" prop="stepNumberUpdateTime">
-        <el-date-picker clearable
-          v-model="queryParams.stepNumberUpdateTime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择步数更新时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="翻滚数更新时间" prop="rollNumberUpdateTime">
-        <el-date-picker clearable
-          v-model="queryParams.rollNumberUpdateTime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择翻滚数更新时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="终端状态更新时间" prop="terminalStatusUpdateTime">
-        <el-date-picker clearable
-          v-model="queryParams.terminalStatusUpdateTime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择终端状态更新时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="创建时间" prop="createtime">
-        <el-date-picker clearable
-          v-model="queryParams.createtime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择创建时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="修改时间" prop="updatetime">
-        <el-date-picker clearable
-          v-model="queryParams.updatetime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择修改时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="详细地址" prop="addressDesc">
-        <el-input
-          v-model="queryParams.addressDesc"
-          placeholder="请输入详细地址"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="手环是否定位 1 是 0 否" prop="isGps">
-        <el-input
-          v-model="queryParams.isGps"
-          placeholder="请输入手环是否定位 1 是 0 否"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['system:info:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['system:info:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['system:info:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['system:info:export']"
-        >导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <el-table v-loading="loading" :data="infoList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="${comment}" align="center" prop="id" />
-      <el-table-column label="设备id" align="center" prop="facilityId" />
-      <el-table-column label="设置id编码" align="center" prop="deviceIdCode" />
-      <el-table-column label="版本" align="center" prop="version" />
-      <el-table-column label="经度" align="center" prop="gpsLong" />
-      <el-table-column label="纬度" align="center" prop="gpsLat" />
-      <el-table-column label="使用经度" align="center" prop="useGpsLong" />
-      <el-table-column label="使用纬度" align="center" prop="useGpsLat" />
-      <el-table-column label="使用mac" align="center" prop="useMac" />
-      <el-table-column label="速度 公里/小时" align="center" prop="speed" />
-      <el-table-column label="方向 度" align="center" prop="direction" />
-      <el-table-column label="海拔" align="center" prop="poster" />
-      <el-table-column label="电量" align="center" prop="electricQuantity" />
-      <el-table-column label="计步数" align="center" prop="stepNumber" />
-      <el-table-column label="翻滚数" align="center" prop="rollNumber" />
-      <el-table-column label="终端状态" align="center" prop="terminalStatus" />
-      <el-table-column label="在线状态 1在线 0离线" align="center" prop="onlineStatis" />
-      <el-table-column label="体温" align="center" prop="temp" />
-      <el-table-column label="血压 高压 0无效" align="center" prop="bloodHeightPressure" />
-      <el-table-column label="血压 低压 0无效" align="center" prop="bloodLowPressure" />
-      <el-table-column label="心率 0无效" align="center" prop="heartRate" />
-      <el-table-column label="血养饱和度" align="center" prop="oxygen" />
-      <el-table-column label="离线时间" align="center" prop="offlinetime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.offlinetime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="上线时间" align="center" prop="onlinetime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.onlinetime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="gps更新时间" align="center" prop="gpsUpdateTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.gpsUpdateTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="血压更新时间" align="center" prop="bloodUpdateTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.bloodUpdateTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="心率更新时间" align="center" prop="heartUpdateTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.heartUpdateTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="体温更新时间" align="center" prop="tempUpdateTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.tempUpdateTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="血氧更新时间" align="center" prop="oxygenUpdateTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.oxygenUpdateTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="电量更新时间" align="center" prop="electricQuantityUpdateTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.electricQuantityUpdateTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="步数更新时间" align="center" prop="stepNumberUpdateTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.stepNumberUpdateTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="翻滚数更新时间" align="center" prop="rollNumberUpdateTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.rollNumberUpdateTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="终端状态更新时间" align="center" prop="terminalStatusUpdateTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.terminalStatusUpdateTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="创建时间" align="center" prop="createtime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.createtime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="修改时间" align="center" prop="updatetime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.updatetime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="0非接口获取坐标 1移动接入 2wifi接入 -2 查询失败" align="center" prop="accesstype" />
-      <el-table-column label="详细地址" align="center" prop="addressDesc" />
-      <el-table-column label="手环是否定位 1 是 0 否" align="center" prop="isGps" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:info:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['system:info:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
-
-    <!-- 添加或修改手环信息 实时数据对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="设备id" prop="facilityId">
-          <el-input v-model="form.facilityId" placeholder="请输入设备id" />
-        </el-form-item>
-        <el-form-item label="设置id编码" prop="deviceIdCode">
-          <el-input v-model="form.deviceIdCode" placeholder="请输入设置id编码" />
-        </el-form-item>
-        <el-form-item label="版本" prop="version">
-          <el-input v-model="form.version" placeholder="请输入版本" />
-        </el-form-item>
-        <el-form-item label="经度" prop="gpsLong">
-          <el-input v-model="form.gpsLong" placeholder="请输入经度" />
-        </el-form-item>
-        <el-form-item label="纬度" prop="gpsLat">
-          <el-input v-model="form.gpsLat" placeholder="请输入纬度" />
-        </el-form-item>
-        <el-form-item label="使用经度" prop="useGpsLong">
-          <el-input v-model="form.useGpsLong" placeholder="请输入使用经度" />
-        </el-form-item>
-        <el-form-item label="使用纬度" prop="useGpsLat">
-          <el-input v-model="form.useGpsLat" placeholder="请输入使用纬度" />
-        </el-form-item>
-        <el-form-item label="使用mac" prop="useMac">
-          <el-input v-model="form.useMac" placeholder="请输入使用mac" />
-        </el-form-item>
-        <el-form-item label="速度 公里/小时" prop="speed">
-          <el-input v-model="form.speed" placeholder="请输入速度 公里/小时" />
-        </el-form-item>
-        <el-form-item label="方向 度" prop="direction">
-          <el-input v-model="form.direction" placeholder="请输入方向 度" />
-        </el-form-item>
-        <el-form-item label="海拔" prop="poster">
-          <el-input v-model="form.poster" placeholder="请输入海拔" />
-        </el-form-item>
-        <el-form-item label="电量" prop="electricQuantity">
-          <el-input v-model="form.electricQuantity" placeholder="请输入电量" />
-        </el-form-item>
-        <el-form-item label="计步数" prop="stepNumber">
-          <el-input v-model="form.stepNumber" placeholder="请输入计步数" />
-        </el-form-item>
-        <el-form-item label="翻滚数" prop="rollNumber">
-          <el-input v-model="form.rollNumber" placeholder="请输入翻滚数" />
-        </el-form-item>
-        <el-form-item label="在线状态 1在线 0离线" prop="onlineStatis">
-          <el-input v-model="form.onlineStatis" placeholder="请输入在线状态 1在线 0离线" />
-        </el-form-item>
-        <el-form-item label="体温" prop="temp">
-          <el-input v-model="form.temp" placeholder="请输入体温" />
-        </el-form-item>
-        <el-form-item label="血压 高压 0无效" prop="bloodHeightPressure">
-          <el-input v-model="form.bloodHeightPressure" placeholder="请输入血压 高压 0无效" />
-        </el-form-item>
-        <el-form-item label="血压 低压 0无效" prop="bloodLowPressure">
-          <el-input v-model="form.bloodLowPressure" placeholder="请输入血压 低压 0无效" />
-        </el-form-item>
-        <el-form-item label="心率 0无效" prop="heartRate">
-          <el-input v-model="form.heartRate" placeholder="请输入心率 0无效" />
-        </el-form-item>
-        <el-form-item label="血养饱和度" prop="oxygen">
-          <el-input v-model="form.oxygen" placeholder="请输入血养饱和度" />
-        </el-form-item>
-        <el-form-item label="离线时间" prop="offlinetime">
-          <el-date-picker clearable
-            v-model="form.offlinetime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择离线时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="上线时间" prop="onlinetime">
-          <el-date-picker clearable
-            v-model="form.onlinetime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择上线时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="gps更新时间" prop="gpsUpdateTime">
-          <el-date-picker clearable
-            v-model="form.gpsUpdateTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择gps更新时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="血压更新时间" prop="bloodUpdateTime">
-          <el-date-picker clearable
-            v-model="form.bloodUpdateTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择血压更新时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="心率更新时间" prop="heartUpdateTime">
-          <el-date-picker clearable
-            v-model="form.heartUpdateTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择心率更新时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="体温更新时间" prop="tempUpdateTime">
-          <el-date-picker clearable
-            v-model="form.tempUpdateTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择体温更新时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="血氧更新时间" prop="oxygenUpdateTime">
-          <el-date-picker clearable
-            v-model="form.oxygenUpdateTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择血氧更新时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="电量更新时间" prop="electricQuantityUpdateTime">
-          <el-date-picker clearable
-            v-model="form.electricQuantityUpdateTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择电量更新时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="步数更新时间" prop="stepNumberUpdateTime">
-          <el-date-picker clearable
-            v-model="form.stepNumberUpdateTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择步数更新时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="翻滚数更新时间" prop="rollNumberUpdateTime">
-          <el-date-picker clearable
-            v-model="form.rollNumberUpdateTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择翻滚数更新时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="终端状态更新时间" prop="terminalStatusUpdateTime">
-          <el-date-picker clearable
-            v-model="form.terminalStatusUpdateTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择终端状态更新时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="详细地址" prop="addressDesc">
-          <el-input v-model="form.addressDesc" placeholder="请输入详细地址" />
-        </el-form-item>
-        <el-form-item label="手环是否定位 1 是 0 否" prop="isGps">
-          <el-input v-model="form.isGps" placeholder="请输入手环是否定位 1 是 0 否" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { listInfo, getInfo, delInfo, addInfo, updateInfo } from "@/api/system/info";
-
-export default {
-  name: "Info",
-  data() {
-    return {
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 手环信息 实时数据表格数据
-      infoList: [],
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        facilityId: null,
-        deviceIdCode: null,
-        version: null,
-        gpsLong: null,
-        gpsLat: null,
-        useGpsLong: null,
-        useGpsLat: null,
-        useMac: null,
-        speed: null,
-        direction: null,
-        poster: null,
-        electricQuantity: null,
-        stepNumber: null,
-        rollNumber: null,
-        terminalStatus: null,
-        onlineStatis: null,
-        temp: null,
-        bloodHeightPressure: null,
-        bloodLowPressure: null,
-        heartRate: null,
-        oxygen: null,
-        offlinetime: null,
-        onlinetime: null,
-        gpsUpdateTime: null,
-        bloodUpdateTime: null,
-        heartUpdateTime: null,
-        tempUpdateTime: null,
-        oxygenUpdateTime: null,
-        electricQuantityUpdateTime: null,
-        stepNumberUpdateTime: null,
-        rollNumberUpdateTime: null,
-        terminalStatusUpdateTime: null,
-        createtime: null,
-        updatetime: null,
-        accesstype: null,
-        addressDesc: null,
-        isGps: null
-      },
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-      }
-    };
-  },
-  created() {
-    this.getList();
-  },
-  methods: {
-    /** 查询手环信息 实时数据列表 */
-    getList() {
-      this.loading = true;
-      listInfo(this.queryParams).then(response => {
-        this.infoList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-        id: null,
-        facilityId: null,
-        deviceIdCode: null,
-        version: null,
-        gpsLong: null,
-        gpsLat: null,
-        useGpsLong: null,
-        useGpsLat: null,
-        useMac: null,
-        speed: null,
-        direction: null,
-        poster: null,
-        electricQuantity: null,
-        stepNumber: null,
-        rollNumber: null,
-        terminalStatus: null,
-        onlineStatis: null,
-        temp: null,
-        bloodHeightPressure: null,
-        bloodLowPressure: null,
-        heartRate: null,
-        oxygen: null,
-        offlinetime: null,
-        onlinetime: null,
-        gpsUpdateTime: null,
-        bloodUpdateTime: null,
-        heartUpdateTime: null,
-        tempUpdateTime: null,
-        oxygenUpdateTime: null,
-        electricQuantityUpdateTime: null,
-        stepNumberUpdateTime: null,
-        rollNumberUpdateTime: null,
-        terminalStatusUpdateTime: null,
-        createtime: null,
-        updatetime: null,
-        accesstype: null,
-        addressDesc: null,
-        isGps: null
-      };
-      this.resetForm("form");
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加手环信息 实时数据";
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.reset();
-      const id = row.id || this.ids
-      getInfo(id).then(response => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改手环信息 实时数据";
-      });
-    },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          if (this.form.id != null) {
-            updateInfo(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addInfo(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            });
-          }
-        }
-      });
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除手环信息 实时数据编号为"' + ids + '"的数据项?').then(function() {
-        return delInfo(ids);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('system/info/export', {
-        ...this.queryParams
-      }, `info_${new Date().getTime()}.xlsx`)
-    }
-  }
-};
-</script>

+ 0 - 463
src/views/system/list/index.vue

@@ -1,463 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="设备id" prop="facilityId">
-        <el-input
-          v-model="queryParams.facilityId"
-          placeholder="请输入设备id"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="手环信息id" prop="shinfoId">
-        <el-input
-          v-model="queryParams.shinfoId"
-          placeholder="请输入手环信息id"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="设置id编码" prop="deviceIdCode">
-        <el-input
-          v-model="queryParams.deviceIdCode"
-          placeholder="请输入设置id编码"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="经度" prop="gpsLong">
-        <el-input
-          v-model="queryParams.gpsLong"
-          placeholder="请输入经度"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="纬度" prop="gpsLat">
-        <el-input
-          v-model="queryParams.gpsLat"
-          placeholder="请输入纬度"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="速度 公里/小时" prop="speed">
-        <el-input
-          v-model="queryParams.speed"
-          placeholder="请输入速度 公里/小时"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="方向 度" prop="direction">
-        <el-input
-          v-model="queryParams.direction"
-          placeholder="请输入方向 度"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="海拔" prop="poster">
-        <el-input
-          v-model="queryParams.poster"
-          placeholder="请输入海拔"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="电量" prop="electricQuantity">
-        <el-input
-          v-model="queryParams.electricQuantity"
-          placeholder="请输入电量"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="计步数" prop="stepNumber">
-        <el-input
-          v-model="queryParams.stepNumber"
-          placeholder="请输入计步数"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="翻滚数" prop="rollNumber">
-        <el-input
-          v-model="queryParams.rollNumber"
-          placeholder="请输入翻滚数"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="创建时间" prop="createTime">
-        <el-date-picker clearable
-          v-model="queryParams.createTime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择创建时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="报警信息 平台记录使用" prop="msg">
-        <el-input
-          v-model="queryParams.msg"
-          placeholder="请输入报警信息 平台记录使用"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="是否发送 1是 0否" prop="isSend">
-        <el-input
-          v-model="queryParams.isSend"
-          placeholder="请输入是否发送 1是 0否"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="发送时间" prop="sendTime">
-        <el-date-picker clearable
-          v-model="queryParams.sendTime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择发送时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['system:list:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['system:list:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['system:list:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['system:list:export']"
-        >导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <el-table v-loading="loading" :data="listList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="${comment}" align="center" prop="id" />
-      <el-table-column label="设备id" align="center" prop="facilityId" />
-      <el-table-column label="手环信息id" align="center" prop="shinfoId" />
-      <el-table-column label="设置id编码" align="center" prop="deviceIdCode" />
-      <el-table-column label="经度" align="center" prop="gpsLong" />
-      <el-table-column label="纬度" align="center" prop="gpsLat" />
-      <el-table-column label="速度 公里/小时" align="center" prop="speed" />
-      <el-table-column label="方向 度" align="center" prop="direction" />
-      <el-table-column label="海拔" align="center" prop="poster" />
-      <el-table-column label="电量" align="center" prop="electricQuantity" />
-      <el-table-column label="计步数" align="center" prop="stepNumber" />
-      <el-table-column label="翻滚数" align="center" prop="rollNumber" />
-      <el-table-column label="状态类型 0 无效 1:低电状态;2:出围栏状态;3:进围栏状态;4:手环戴上取下状态;5:手表运行静止状态" align="center" prop="statusType" />
-      <el-table-column label="报警类型 0 无效 16:SOS报警;17:低电报警;20:手环拆除报警;21:跌倒报警;22:心率异常报警" align="center" prop="alarmType" />
-      <el-table-column label="终端状态" align="center" prop="terminalStatus" />
-      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="来源类型 1终端主动发 0平台记录" align="center" prop="alarmFromType" />
-      <el-table-column label="报警信息 平台记录使用" align="center" prop="msg" />
-      <el-table-column label="是否发送 1是 0否" align="center" prop="isSend" />
-      <el-table-column label="发送时间" align="center" prop="sendTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.sendTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:list:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['system:list:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
-
-    <!-- 添加或修改手环报警列信息对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="设备id" prop="facilityId">
-          <el-input v-model="form.facilityId" placeholder="请输入设备id" />
-        </el-form-item>
-        <el-form-item label="手环信息id" prop="shinfoId">
-          <el-input v-model="form.shinfoId" placeholder="请输入手环信息id" />
-        </el-form-item>
-        <el-form-item label="设置id编码" prop="deviceIdCode">
-          <el-input v-model="form.deviceIdCode" placeholder="请输入设置id编码" />
-        </el-form-item>
-        <el-form-item label="经度" prop="gpsLong">
-          <el-input v-model="form.gpsLong" placeholder="请输入经度" />
-        </el-form-item>
-        <el-form-item label="纬度" prop="gpsLat">
-          <el-input v-model="form.gpsLat" placeholder="请输入纬度" />
-        </el-form-item>
-        <el-form-item label="速度 公里/小时" prop="speed">
-          <el-input v-model="form.speed" placeholder="请输入速度 公里/小时" />
-        </el-form-item>
-        <el-form-item label="方向 度" prop="direction">
-          <el-input v-model="form.direction" placeholder="请输入方向 度" />
-        </el-form-item>
-        <el-form-item label="海拔" prop="poster">
-          <el-input v-model="form.poster" placeholder="请输入海拔" />
-        </el-form-item>
-        <el-form-item label="电量" prop="electricQuantity">
-          <el-input v-model="form.electricQuantity" placeholder="请输入电量" />
-        </el-form-item>
-        <el-form-item label="计步数" prop="stepNumber">
-          <el-input v-model="form.stepNumber" placeholder="请输入计步数" />
-        </el-form-item>
-        <el-form-item label="翻滚数" prop="rollNumber">
-          <el-input v-model="form.rollNumber" placeholder="请输入翻滚数" />
-        </el-form-item>
-        <el-form-item label="报警信息 平台记录使用" prop="msg">
-          <el-input v-model="form.msg" placeholder="请输入报警信息 平台记录使用" />
-        </el-form-item>
-        <el-form-item label="是否发送 1是 0否" prop="isSend">
-          <el-input v-model="form.isSend" placeholder="请输入是否发送 1是 0否" />
-        </el-form-item>
-        <el-form-item label="发送时间" prop="sendTime">
-          <el-date-picker clearable
-            v-model="form.sendTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择发送时间">
-          </el-date-picker>
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { listList, getList, delList, addList, updateList } from "@/api/system/list";
-
-export default {
-  name: "List",
-  data() {
-    return {
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 手环报警列信息表格数据
-      listList: [],
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        facilityId: null,
-        shinfoId: null,
-        deviceIdCode: null,
-        gpsLong: null,
-        gpsLat: null,
-        speed: null,
-        direction: null,
-        poster: null,
-        electricQuantity: null,
-        stepNumber: null,
-        rollNumber: null,
-        statusType: null,
-        alarmType: null,
-        terminalStatus: null,
-        createTime: null,
-        alarmFromType: null,
-        msg: null,
-        isSend: null,
-        sendTime: null
-      },
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-      }
-    };
-  },
-  created() {
-    this.getList();
-  },
-  methods: {
-    /** 查询手环报警列信息列表 */
-    getList() {
-      this.loading = true;
-      listList(this.queryParams).then(response => {
-        this.listList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-        id: null,
-        facilityId: null,
-        shinfoId: null,
-        deviceIdCode: null,
-        gpsLong: null,
-        gpsLat: null,
-        speed: null,
-        direction: null,
-        poster: null,
-        electricQuantity: null,
-        stepNumber: null,
-        rollNumber: null,
-        statusType: null,
-        alarmType: null,
-        terminalStatus: null,
-        createTime: null,
-        alarmFromType: null,
-        msg: null,
-        isSend: null,
-        sendTime: null
-      };
-      this.resetForm("form");
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加手环报警列信息";
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.reset();
-      const id = row.id || this.ids
-      getList(id).then(response => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改手环报警列信息";
-      });
-    },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          if (this.form.id != null) {
-            updateList(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addList(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            });
-          }
-        }
-      });
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除手环报警列信息编号为"' + ids + '"的数据项?').then(function() {
-        return delList(ids);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('system/list/export', {
-        ...this.queryParams
-      }, `list_${new Date().getTime()}.xlsx`)
-    }
-  }
-};
-</script>

+ 452 - 0
src/views/system/othersolve/index.vue

@@ -0,0 +1,452 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="用户姓名" prop="userid">
+        <el-input v-model="queryParams.name" placeholder="请输入用户姓名" clearable @keyup.enter.native="handleQuery" />
+      </el-form-item>
+      <el-form-item label="处理状态" prop="solveStatus">
+        <el-select v-model="queryParams.solveStatus">
+          <el-option label="已处理" :value="1"></el-option>
+          <el-option label="未处理" :value="0"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <!-- <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:solve:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:solve:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:solve:remove']"
+        >删除</el-button>
+      </el-col> -->
+      <el-col :span="1.5">
+        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
+          v-hasPermi="['system:solve:export']">导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="othersolveList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <!-- <el-table-column label="id" align="center" prop="id" /> -->
+      <el-table-column label="用户名" align="center" prop="name" />
+      <el-table-column label="联系电话" align="center" prop="tel_one" />
+      <el-table-column label="事件类型" align="center">
+        <template slot-scope="scope">
+          其他告警
+        </template>
+      </el-table-column>
+      <el-table-column label="告警时间" align="center" prop="createtime" />
+      <el-table-column label="告警内容" align="center" prop="alarmMsg" />
+      <el-table-column label="处理状态" align="center" prop="solveStatus" />
+      <!-- <el-table-column label="服务人员用户ID" align="center" prop="serviceUserid" />
+      <el-table-column label="时间记录" align="center" prop="msg" />
+      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column> -->
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button size="mini" type="text" icon="el-icon-view" @click="handleSee(scope.row)">查看</el-button>
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:solve:edit']">处理</el-button>
+          <!-- <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:solve:remove']"
+          >删除</el-button> -->
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
+      @pagination="getList" />
+
+    <!-- 添加或修改SOS预警处理对话框 -->
+    <el-dialog :visible.sync="open" width="1200px" append-to-body destroy-on-close>
+      <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">姓名:</div>
+          <div>{{ form.name }}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">联系电话:</div>
+          <div>{{ form.tel_one }}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">所属机构:</div>
+          <div>{{ form.store_name }}</div>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备类型:</div>
+          <div>智能设备</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备型号:</div>
+          <div>{{form.deviceModel}}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备名称:</div>
+          <div>智能手环</div>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备ID:</div>
+          <div>{{ form.deviceIdCode }}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">事件类型:</div>
+          <div>其他告警</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">告警时间:</div>
+          <div>{{ form.createtime }}</div>
+        </el-col>
+      </el-row>
+      <!-- <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">告警开始时间:</div>
+          <div>2023-09-07 16:41</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">告警结束时间:</div>
+          <div>2023-09-07 16:41</div>
+        </el-col>
+      </el-row> -->
+      <el-row>
+        <el-col class="user-table">
+          <div class="label">告警地址:</div>
+          <div>{{ form.address_desc }}</div>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col class="user-table">
+          <div class="label">告警内容:</div>
+          <div>{{ form.alarmMsg }}</div>
+        </el-col>
+      </el-row>
+      <el-row v-if="!deal_flag">
+        <el-col class="user-table">
+          <div class="label">处理状态:</div>
+          <div>{{form.solveStatus}}</div>
+        </el-col>
+      </el-row>
+      <el-row v-if="!deal_flag">
+        <el-col class="user-table">
+          <div class="label">事件记录:</div>
+          <div>{{ form.msg }}</div>
+        </el-col>
+      </el-row>
+      <el-row v-if="deal_flag">
+        <el-col class="user-table">
+          <div class="label">处理状态:</div>
+          <el-radio-group v-model="form.solve_status">
+            <el-radio label="0">未处理</el-radio>
+            <el-radio label="2">在处理</el-radio>
+            <el-radio label="1">已处理</el-radio>
+          </el-radio-group>
+        </el-col>
+      </el-row>
+      <el-row v-if="deal_flag" style="margin-bottom: 20px;">
+        <el-col class="user-table" style="align-items: flex-start;">
+          <div class="label">事件记录:</div>
+          <el-input type="textarea" :rows="2" style="width: 950px;" v-model="form.msg"></el-input>
+        </el-col>
+      </el-row>
+      <el-row>
+        <div id="map"></div>
+      </el-row>
+      <div slot="footer" class="dialog-footer" style="text-align: center;">
+        <el-button type="primary" @click="submit" v-if="deal_flag">提 交</el-button>
+        <el-button @click="cancel" v-if="!deal_flag">关 闭</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listOthersolve, getOthersolve, delOthersolve, addOthersolve, updateOthersolve } from "@/api/system/othersolve";
+import AMapLoader from '@amap/amap-jsapi-loader';
+
+export default {
+  name: "Othersolve",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 其他告警处理表格数据
+      othersolveList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        userid: null,
+        deviceIdCode: null,
+        alarmMsg: null,
+        solveStatus: null,
+        serviceUserid: null,
+        msg: null,
+        createTime: null,
+        alarmid: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      },
+      map: null,
+      deal_flag: false,
+      deviceModel: []
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    createMap() {
+      window._AMapSecurityConfig = {
+        securityJsCode: '6aaa52f268bd774edcc494a7055cf167'
+      }
+      AMapLoader.load({
+        key: '533a73da5000e2db8d89b8fda02f33bf',
+        version: '2.0'
+      }).then(AMap => {
+        this.map = new AMap.Map('map', {
+          zoom: 15,
+          center: [this.form.gps_long, this.form.gps_lat]
+        })
+        this.map.plugin(['AMap.ToolBar', 'AMap.Scale'], () => {
+          this.map.addControl(new AMap.ToolBar({
+            position: 'RT'
+          }))
+          this.map.addControl(new AMap.Scale())
+        })
+        var info = [];
+        info.push(`<p>姓名 : ${this.form.name}</p>`)
+        info.push(`<p>电话 : ${this.form.tel_one}</p>`);
+        info.push(`<p>地址 : ${this.form.address_desc}</p>`);
+        info.push(`<p>预警时间 : ${this.form.createtime}</p>`);
+        let infoWindow = new AMap.InfoWindow({
+          offset: new AMap.Pixel(0, -35),
+          content: info.join(""),  //使用默认信息窗体框样式,显示信息内容
+        });
+        infoWindow.open(this.map, this.map.getCenter());
+        let marker = new AMap.Marker({
+          position: [this.form.gps_long, this.form.gps_lat]
+        })
+        this.map.add(marker)
+        marker.on('click', () => {
+          infoWindow.open(this.map, this.map.getCenter());
+        })
+      })
+    },
+    /** 查询其他告警处理列表 */
+    async getList() {
+      this.loading = true;
+      let { data: deviceModel } = await this.getDicts('sys_device_type')
+      this.deviceModel = deviceModel
+      await listOthersolve(this.queryParams).then(response => {
+        this.othersolveList = response.rows;
+        this.othersolveList.map(item => {
+          if (item.device_model || item.device_model == 0) {
+            item.deviceModel = this.deviceModel[item.device_model].dictLabel
+          }
+          item.solveStatus = item.solve_status == 1 ? '已处理' : item.solve_status == 0 ? '未处理' : '处理中'
+        })
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        userid: null,
+        deviceIdCode: null,
+        alarmMsg: null,
+        solveStatus: null,
+        serviceUserid: null,
+        msg: null,
+        createTime: null,
+        alarmid: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加其他告警处理";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.aid || this.ids
+      this.deal_flag = true
+      // getSolve(id).then(response => {
+      //   this.form = response.data;
+      //   this.open = true;
+      //   this.title = "修改SOS预警处理";
+      //   this.createMap()
+      // });
+      this.othersolveList.map(item => {
+        if (item.aid == id) {
+          this.form = item
+          this.open = true;
+        }
+      })
+      this.createMap()
+    },
+    handleSee(row) {
+      this.reset();
+      const id = row.aid
+      this.othersolveList.map(item => {
+        if (item.aid == id) {
+          this.form = item
+          this.open = true;
+          this.deal_flag = false
+        }
+      })
+      this.createMap()
+    },
+    submit() {
+      let data = {}
+      data.uid = this.form.uid
+      data.deviceIdCode = this.form.deviceIdCode
+      data.alarmMsg = this.form.alarmMsg
+      data.solve_status = this.form.solve_status
+      data.msg = this.form.msg
+      data.aid = this.form.aid
+      addOthersolve(data).then(response => {
+        this.$modal.msgSuccess("提交成功");
+        this.open = false;
+        this.getList();
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateOthersolve(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addOthersolve(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除其他告警处理编号为"' + ids + '"的数据项?').then(function() {
+        return delOthersolve(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/othersolve/export', {
+        ...this.queryParams
+      }, `othersolve_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
+<style scoped>
+.user-table {
+  display: flex;
+  align-items: center;
+  line-height: 42px;
+}
+
+.label {
+  width: 120px;
+  text-align: end;
+}
+
+#map {
+  width: 100%;
+  height: 500px;
+}
+</style>

+ 452 - 0
src/views/system/railsolve/index.vue

@@ -0,0 +1,452 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="用户姓名" prop="userid">
+        <el-input v-model="queryParams.name" placeholder="请输入用户姓名" clearable @keyup.enter.native="handleQuery" />
+      </el-form-item>
+      <el-form-item label="处理状态" prop="solveStatus">
+        <el-select v-model="queryParams.solveStatus">
+          <el-option label="已处理" :value="1"></el-option>
+          <el-option label="未处理" :value="0"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <!-- <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:solve:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:solve:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:solve:remove']"
+        >删除</el-button>
+      </el-col> -->
+      <el-col :span="1.5">
+        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
+          v-hasPermi="['system:solve:export']">导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="railsolveList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <!-- <el-table-column label="id" align="center" prop="id" /> -->
+      <el-table-column label="用户名" align="center" prop="name" />
+      <el-table-column label="联系电话" align="center" prop="tel_one" />
+      <el-table-column label="事件类型" align="center">
+        <template slot-scope="scope">
+          围栏告警
+        </template>
+      </el-table-column>
+      <el-table-column label="告警时间" align="center" prop="createtime" />
+      <el-table-column label="告警内容" align="center" prop="alarmMsg" />
+      <el-table-column label="处理状态" align="center" prop="solveStatus" />
+      <!-- <el-table-column label="服务人员用户ID" align="center" prop="serviceUserid" />
+      <el-table-column label="时间记录" align="center" prop="msg" />
+      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column> -->
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button size="mini" type="text" icon="el-icon-view" @click="handleSee(scope.row)">查看</el-button>
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:solve:edit']">处理</el-button>
+          <!-- <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:solve:remove']"
+          >删除</el-button> -->
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
+      @pagination="getList" />
+
+    <!-- 添加或修改SOS预警处理对话框 -->
+    <el-dialog :visible.sync="open" width="1200px" append-to-body destroy-on-close>
+      <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">姓名:</div>
+          <div>{{ form.name }}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">联系电话:</div>
+          <div>{{ form.tel_one }}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">所属机构:</div>
+          <div>{{ form.store_name }}</div>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备类型:</div>
+          <div>智能设备</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备型号:</div>
+          <div>{{form.deviceModel}}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备名称:</div>
+          <div>智能手环</div>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备ID:</div>
+          <div>{{ form.deviceIdCode }}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">事件类型:</div>
+          <div>围栏告警</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">告警时间:</div>
+          <div>{{ form.createtime }}</div>
+        </el-col>
+      </el-row>
+      <!-- <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">告警开始时间:</div>
+          <div>2023-09-07 16:41</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">告警结束时间:</div>
+          <div>2023-09-07 16:41</div>
+        </el-col>
+      </el-row> -->
+      <el-row>
+        <el-col class="user-table">
+          <div class="label">告警地址:</div>
+          <div>{{ form.address_desc }}</div>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col class="user-table">
+          <div class="label">告警内容:</div>
+          <div>{{ form.alarmMsg }}</div>
+        </el-col>
+      </el-row>
+      <el-row v-if="!deal_flag">
+        <el-col class="user-table">
+          <div class="label">处理状态:</div>
+          <div>{{form.solveStatus}}</div>
+        </el-col>
+      </el-row>
+      <el-row v-if="!deal_flag">
+        <el-col class="user-table">
+          <div class="label">事件记录:</div>
+          <div>{{ form.msg }}</div>
+        </el-col>
+      </el-row>
+      <el-row v-if="deal_flag">
+        <el-col class="user-table">
+          <div class="label">处理状态:</div>
+          <el-radio-group v-model="form.solve_status">
+            <el-radio label="0">未处理</el-radio>
+            <el-radio label="2">在处理</el-radio>
+            <el-radio label="1">已处理</el-radio>
+          </el-radio-group>
+        </el-col>
+      </el-row>
+      <el-row v-if="deal_flag" style="margin-bottom: 20px;">
+        <el-col class="user-table" style="align-items: flex-start;">
+          <div class="label">事件记录:</div>
+          <el-input type="textarea" :rows="2" style="width: 950px;" v-model="form.msg"></el-input>
+        </el-col>
+      </el-row>
+      <el-row>
+        <div id="map"></div>
+      </el-row>
+      <div slot="footer" class="dialog-footer" style="text-align: center;">
+        <el-button type="primary" @click="submit" v-if="deal_flag">提 交</el-button>
+        <el-button @click="cancel" v-if="!deal_flag">关 闭</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listRailsolve, getRailsolve, delRailsolve, addRailsolve, updateRailsolve } from "@/api/system/railsolve";
+import AMapLoader from '@amap/amap-jsapi-loader';
+
+export default {
+  name: "Railsolve",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 围栏告警处理表格数据
+      railsolveList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        userid: null,
+        deviceIdCode: null,
+        alarmMsg: null,
+        solveStatus: null,
+        serviceUserid: null,
+        msg: null,
+        createTime: null,
+        alarmid: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      },
+      map: null,
+      deal_flag: false,
+      deviceModel: []
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    createMap() {
+      window._AMapSecurityConfig = {
+        securityJsCode: '6aaa52f268bd774edcc494a7055cf167'
+      }
+      AMapLoader.load({
+        key: '533a73da5000e2db8d89b8fda02f33bf',
+        version: '2.0'
+      }).then(AMap => {
+        this.map = new AMap.Map('map', {
+          zoom: 15,
+          center: [this.form.gps_long, this.form.gps_lat]
+        })
+        this.map.plugin(['AMap.ToolBar', 'AMap.Scale'], () => {
+          this.map.addControl(new AMap.ToolBar({
+            position: 'RT'
+          }))
+          this.map.addControl(new AMap.Scale())
+        })
+        var info = [];
+        info.push(`<p>姓名 : ${this.form.name}</p>`)
+        info.push(`<p>电话 : ${this.form.tel_one}</p>`);
+        info.push(`<p>地址 : ${this.form.address_desc}</p>`);
+        info.push(`<p>预警时间 : ${this.form.createtime}</p>`);
+        let infoWindow = new AMap.InfoWindow({
+          offset: new AMap.Pixel(0, -35),
+          content: info.join(""),  //使用默认信息窗体框样式,显示信息内容
+        });
+        infoWindow.open(this.map, this.map.getCenter());
+        let marker = new AMap.Marker({
+          position: [this.form.gps_long, this.form.gps_lat]
+        })
+        this.map.add(marker)
+        marker.on('click', () => {
+          infoWindow.open(this.map, this.map.getCenter());
+        })
+      })
+    },
+    /** 查询围栏告警处理列表 */
+    async getList() {
+      this.loading = true;
+      let { data: deviceModel } = await this.getDicts('sys_device_type')
+      this.deviceModel = deviceModel
+      await listRailsolve(this.queryParams).then(response => {
+        this.railsolveList = response.rows;
+        this.railsolveList.map(item => {
+          if (item.device_model || item.device_model == 0) {
+            item.deviceModel = this.deviceModel[item.device_model].dictLabel
+          }
+          item.solveStatus = item.solve_status == 1 ? '已处理' : item.solve_status == 0 ? '未处理' : '处理中'
+        })
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        userid: null,
+        deviceIdCode: null,
+        alarmMsg: null,
+        solveStatus: null,
+        serviceUserid: null,
+        msg: null,
+        createTime: null,
+        alarmid: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加围栏告警处理";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.aid || this.ids
+      this.deal_flag = true
+      // getSolve(id).then(response => {
+      //   this.form = response.data;
+      //   this.open = true;
+      //   this.title = "修改SOS预警处理";
+      //   this.createMap()
+      // });
+      this.railsolveList.map(item => {
+        if (item.aid == id) {
+          this.form = item
+          this.open = true;
+        }
+      })
+      this.createMap()
+    },
+    handleSee(row) {
+      this.reset();
+      const id = row.aid
+      this.railsolveList.map(item => {
+        if (item.aid == id) {
+          this.form = item
+          this.open = true;
+          this.deal_flag = false
+        }
+      })
+      this.createMap()
+    },
+    submit() {
+      let data = {}
+      data.uid = this.form.uid
+      data.deviceIdCode = this.form.deviceIdCode
+      data.alarmMsg = this.form.alarmMsg
+      data.solve_status = this.form.solve_status
+      data.msg = this.form.msg
+      data.aid = this.form.aid
+      addRailsolve(data).then(response => {
+        this.$modal.msgSuccess("提交成功");
+        this.open = false;
+        this.getList();
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateRailsolve(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addRailsolve(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除围栏告警处理编号为"' + ids + '"的数据项?').then(function() {
+        return delRailsolve(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/railsolve/export', {
+        ...this.queryParams
+      }, `railsolve_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
+<style scoped>
+.user-table {
+  display: flex;
+  align-items: center;
+  line-height: 42px;
+}
+
+.label {
+  width: 120px;
+  text-align: end;
+}
+
+#map {
+  width: 100%;
+  height: 500px;
+}
+</style>

+ 247 - 114
src/views/system/solve/index.vue

@@ -1,53 +1,14 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="用户ID" prop="userid">
-        <el-input
-          v-model="queryParams.userid"
-          placeholder="请输入用户ID"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+      <el-form-item label="用户姓名" prop="userid">
+        <el-input v-model="queryParams.name" placeholder="请输入用户姓名" clearable @keyup.enter.native="handleQuery" />
       </el-form-item>
-      <el-form-item label="设备标识ID" prop="deviceIdCode">
-        <el-input
-          v-model="queryParams.deviceIdCode"
-          placeholder="请输入设备标识ID"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="告警内容" prop="alarmMsg">
-        <el-input
-          v-model="queryParams.alarmMsg"
-          placeholder="请输入告警内容"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="服务人员用户ID" prop="serviceUserid">
-        <el-input
-          v-model="queryParams.serviceUserid"
-          placeholder="请输入服务人员用户ID"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="时间记录" prop="msg">
-        <el-input
-          v-model="queryParams.msg"
-          placeholder="请输入时间记录"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="创建时间" prop="createTime">
-        <el-date-picker clearable
-          v-model="queryParams.createTime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择创建时间">
-        </el-date-picker>
+      <el-form-item label="处理状态" prop="solveStatus">
+        <el-select v-model="queryParams.solveStatus">
+          <el-option label="已处理" :value="1"></el-option>
+          <el-option label="未处理" :value="0"></el-option>
+        </el-select>
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -56,7 +17,7 @@
     </el-form>
 
     <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
+      <!-- <el-col :span="1.5">
         <el-button
           type="primary"
           plain
@@ -87,84 +48,153 @@
           @click="handleDelete"
           v-hasPermi="['system:solve:remove']"
         >删除</el-button>
-      </el-col>
+      </el-col> -->
       <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['system:solve:export']"
-        >导出</el-button>
+        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
+          v-hasPermi="['system:solve:export']">导出</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="solveList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="id" align="center" prop="id" />
-      <el-table-column label="用户ID" align="center" prop="userid" />
-      <el-table-column label="设备标识ID" align="center" prop="deviceIdCode" />
+      <!-- <el-table-column label="id" align="center" prop="id" /> -->
+      <el-table-column label="用户名" align="center" prop="name" />
+      <el-table-column label="联系电话" align="center" prop="tel_one" />
+      <el-table-column label="事件类型" align="center">
+        <template slot-scope="scope">
+          SOS告警
+        </template>
+      </el-table-column>
+      <el-table-column label="告警时间" align="center" prop="createtime" />
       <el-table-column label="告警内容" align="center" prop="alarmMsg" />
-      <el-table-column label="0未处理,1已处理" align="center" prop="solveStatus" />
-      <el-table-column label="服务人员用户ID" align="center" prop="serviceUserid" />
+      <el-table-column label="处理状态" align="center" prop="solveStatus" />
+      <!-- <el-table-column label="服务人员用户ID" align="center" prop="serviceUserid" />
       <el-table-column label="时间记录" align="center" prop="msg" />
       <el-table-column label="创建时间" align="center" prop="createTime" width="180">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
         </template>
-      </el-table-column>
+      </el-table-column> -->
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:solve:edit']"
-          >修改</el-button>
-          <el-button
+          <el-button size="mini" type="text" icon="el-icon-view" @click="handleSee(scope.row)">查看</el-button>
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:solve:edit']">处理</el-button>
+          <!-- <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['system:solve:remove']"
-          >删除</el-button>
+          >删除</el-button> -->
         </template>
       </el-table-column>
     </el-table>
-    
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
+
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
+      @pagination="getList" />
 
     <!-- 添加或修改SOS预警处理对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="用户ID" prop="userid">
-          <el-input v-model="form.userid" placeholder="请输入用户ID" />
-        </el-form-item>
-        <el-form-item label="设备标识ID" prop="deviceIdCode">
-          <el-input v-model="form.deviceIdCode" placeholder="请输入设备标识ID" />
-        </el-form-item>
-        <el-form-item label="告警内容" prop="alarmMsg">
-          <el-input v-model="form.alarmMsg" placeholder="请输入告警内容" />
-        </el-form-item>
-        <el-form-item label="服务人员用户ID" prop="serviceUserid">
-          <el-input v-model="form.serviceUserid" placeholder="请输入服务人员用户ID" />
-        </el-form-item>
-        <el-form-item label="时间记录" prop="msg">
-          <el-input v-model="form.msg" placeholder="请输入时间记录" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
+    <el-dialog :visible.sync="open" width="1200px" append-to-body destroy-on-close>
+      <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">姓名:</div>
+          <div>{{ form.name }}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">联系电话:</div>
+          <div>{{ form.tel_one }}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">所属机构:</div>
+          <div>{{ form.store_name }}</div>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备类型:</div>
+          <div>智能设备</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备型号:</div>
+          <div>{{form.deviceModel}}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备名称:</div>
+          <div>智能手环</div>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">设备ID:</div>
+          <div>{{ form.deviceIdCode }}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">事件类型:</div>
+          <div>{{ form.alarm_type == 16 ? 'SOS告警' : '' }}</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">告警时间:</div>
+          <div>{{ form.createtime }}</div>
+        </el-col>
+      </el-row>
+      <!-- <el-row>
+        <el-col :span="8" class="user-table">
+          <div class="label">告警开始时间:</div>
+          <div>2023-09-07 16:41</div>
+        </el-col>
+        <el-col :span="8" class="user-table">
+          <div class="label">告警结束时间:</div>
+          <div>2023-09-07 16:41</div>
+        </el-col>
+      </el-row> -->
+      <el-row>
+        <el-col class="user-table">
+          <div class="label">告警地址:</div>
+          <div>{{ form.address_desc }}</div>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col class="user-table">
+          <div class="label">告警内容:</div>
+          <div>{{ form.alarmMsg }}</div>
+        </el-col>
+      </el-row>
+      <el-row v-if="!deal_flag">
+        <el-col class="user-table">
+          <div class="label">处理状态:</div>
+          <div>{{form.solveStatus}}</div>
+        </el-col>
+      </el-row>
+      <el-row v-if="!deal_flag">
+        <el-col class="user-table">
+          <div class="label">事件记录:</div>
+          <div>{{ form.msg }}</div>
+        </el-col>
+      </el-row>
+      <el-row v-if="deal_flag">
+        <el-col class="user-table">
+          <div class="label">处理状态:</div>
+          <el-radio-group v-model="form.solve_status">
+            <el-radio label="0">未处理</el-radio>
+            <el-radio label="2">在处理</el-radio>
+            <el-radio label="1">已处理</el-radio>
+          </el-radio-group>
+        </el-col>
+      </el-row>
+      <el-row v-if="deal_flag" style="margin-bottom: 20px;">
+        <el-col class="user-table" style="align-items: flex-start;">
+          <div class="label">事件记录:</div>
+          <el-input type="textarea" :rows="2" style="width: 950px;" v-model="form.msg"></el-input>
+        </el-col>
+      </el-row>
+      <el-row>
+        <div id="map"></div>
+      </el-row>
+      <div slot="footer" class="dialog-footer" style="text-align: center;">
+        <el-button type="primary" @click="submit" v-if="deal_flag">提 交</el-button>
+        <el-button @click="cancel" v-if="!deal_flag">关 闭</el-button>
       </div>
     </el-dialog>
   </div>
@@ -172,6 +202,7 @@
 
 <script>
 import { listSolve, getSolve, delSolve, addSolve, updateSolve } from "@/api/system/solve";
+import AMapLoader from '@amap/amap-jsapi-loader';
 
 export default {
   name: "Solve",
@@ -205,24 +236,73 @@ export default {
         solveStatus: null,
         serviceUserid: null,
         msg: null,
-        createTime: null
+        createTime: null,
+        alarmid: null
       },
       // 表单参数
       form: {},
       // 表单校验
       rules: {
-      }
+      },
+      map: null,
+      deal_flag: false,
+      deviceModel: []
     };
   },
   created() {
     this.getList();
   },
   methods: {
+    createMap() {
+      window._AMapSecurityConfig = {
+        securityJsCode: '6aaa52f268bd774edcc494a7055cf167'
+      }
+      AMapLoader.load({
+        key: '533a73da5000e2db8d89b8fda02f33bf',
+        version: '2.0'
+      }).then(AMap => {
+        this.map = new AMap.Map('map', {
+          zoom: 15,
+          center: [this.form.gps_long, this.form.gps_lat]
+        })
+        this.map.plugin(['AMap.ToolBar', 'AMap.Scale'], () => {
+          this.map.addControl(new AMap.ToolBar({
+            position: 'RT'
+          }))
+          this.map.addControl(new AMap.Scale())
+        })
+        var info = [];
+        info.push(`<p>姓名 : ${this.form.name}</p>`)
+        info.push(`<p>电话 : ${this.form.tel_one}</p>`);
+        info.push(`<p>地址 : ${this.form.address_desc}</p>`);
+        info.push(`<p>预警时间 : ${this.form.createtime}</p>`);
+        let infoWindow = new AMap.InfoWindow({
+          offset: new AMap.Pixel(0, -35),
+          content: info.join(""),  //使用默认信息窗体框样式,显示信息内容
+        });
+        infoWindow.open(this.map, this.map.getCenter());
+        let marker = new AMap.Marker({
+          position: [this.form.gps_long, this.form.gps_lat]
+        })
+        this.map.add(marker)
+        marker.on('click', () => {
+          infoWindow.open(this.map, this.map.getCenter());
+        })
+      })
+    },
     /** 查询SOS预警处理列表 */
-    getList() {
+    async getList() {
       this.loading = true;
-      listSolve(this.queryParams).then(response => {
+      let { data: deviceModel } = await this.getDicts('sys_device_type')
+      this.deviceModel = deviceModel
+      await listSolve(this.queryParams).then(response => {
         this.solveList = response.rows;
+        this.solveList.map(item => {
+          if (item.device_model || item.device_model == 0) {
+            item.deviceModel = this.deviceModel[item.device_model].dictLabel
+          }
+          item.solveStatus = item.solve_status == 1 ? '已处理' : item.solve_status == 0 ? '未处理' : '处理中'
+        })
         this.total = response.total;
         this.loading = false;
       });
@@ -242,7 +322,8 @@ export default {
         solveStatus: null,
         serviceUserid: null,
         msg: null,
-        createTime: null
+        createTime: null,
+        alarmid: null
       };
       this.resetForm("form");
     },
@@ -259,23 +340,58 @@ export default {
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
+      this.single = selection.length !== 1
       this.multiple = !selection.length
     },
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加SOS预警处理";
+      this.title = "添加SOS告警";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-      const id = row.id || this.ids
-      getSolve(id).then(response => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改SOS预警处理";
+      const id = row.aid || this.ids
+      this.deal_flag = true
+      // getSolve(id).then(response => {
+      //   this.form = response.data;
+      //   this.open = true;
+      //   this.title = "修改SOS预警处理";
+      //   this.createMap()
+      // });
+      this.solveList.map(item => {
+        if (item.aid == id) {
+          this.form = item
+          this.open = true;
+        }
+      })
+      this.createMap()
+    },
+    handleSee(row) {
+      this.reset();
+      const id = row.aid
+      this.solveList.map(item => {
+        if (item.aid == id) {
+          this.form = item
+          this.open = true;
+          this.deal_flag = false
+        }
+      })
+      this.createMap()
+    },
+    submit() {
+      let data = {}
+      data.uid = this.form.uid
+      data.deviceIdCode = this.form.deviceIdCode
+      data.alarmMsg = this.form.alarmMsg
+      data.solve_status = this.form.solve_status
+      data.msg = this.form.msg
+      data.aid = this.form.aid
+      addSolve(data).then(response => {
+        this.$modal.msgSuccess("提交成功");
+        this.open = false;
+        this.getList();
       });
     },
     /** 提交按钮 */
@@ -301,12 +417,12 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除SOS预警处理编号为"' + ids + '"的数据项?').then(function() {
+      this.$modal.confirm('是否确认删除SOS预警处理编号为"' + ids + '"的数据项?').then(function () {
         return delSolve(ids);
       }).then(() => {
         this.getList();
         this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
+      }).catch(() => { });
     },
     /** 导出按钮操作 */
     handleExport() {
@@ -317,3 +433,20 @@ export default {
   }
 };
 </script>
+<style scoped>
+.user-table {
+  display: flex;
+  align-items: center;
+  line-height: 42px;
+}
+
+.label {
+  width: 120px;
+  text-align: end;
+}
+
+#map {
+  width: 100%;
+  height: 500px;
+}
+</style>