|
@@ -21,52 +21,44 @@
|
|
|
<div class="left_con sprh-left">
|
|
|
<div class="top_txt">
|
|
|
<b>汽开区</b>
|
|
|
-<!-- <span>小雨</span>-->
|
|
|
-<!-- <span>9~16℃</span>-->
|
|
|
+ <!-- <span>小雨</span>-->
|
|
|
+ <!-- <span>9~16℃</span>-->
|
|
|
</div>
|
|
|
<!-- 设备tab开始-->
|
|
|
<div class="facility_tab facility_tab2">
|
|
|
|
|
|
- <div class="qkq_tdzy">
|
|
|
- <div class="qkq_tit ">应急场所</div>
|
|
|
- <div class="scrollbar" style="height: 300px;">
|
|
|
- <ul id="accordion" class="accordion yjcs">
|
|
|
- <!-- li上加on类名是点击选中后效果 -->
|
|
|
- <li class="on">
|
|
|
- <div class="link">为进一步规范和加强应急避难场所规...</div>
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <div class="link">应急避难场所按建筑与场地空间类别...</div>
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <div class="link">应急避难场所的规划、建设、使用与...</div>
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <div class="link">应急避难场所建设、管护和使用所需...</div>
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- </div>
|
|
|
+ <div class="qkq_tdzy">
|
|
|
+ <div class="qkq_tit ">应急场所</div>
|
|
|
+ <div class="scrollbar" style="height: 300px;">
|
|
|
+ <ul id="accordion" class="accordion yjcs">
|
|
|
+ <!-- li上加on类名是点击选中后效果 -->
|
|
|
+ <li v-for="(item, index) in shelter" :class="{ on: item.id == shelterCurrent }" :key="index"
|
|
|
+ @click="onShelterlick(item)">
|
|
|
+ <div class="link">{{ item.name }} - {{ item.address }}</div>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
|
|
|
</div>
|
|
|
- <div class="qkq_tdzy">
|
|
|
- <div class="qkq_tit">城市内涝点</div>
|
|
|
- <div class="scrollbar" style="height: 300px;">
|
|
|
- <ul id="accordion" class="accordion csnld">
|
|
|
- <li class="on">
|
|
|
- <div class="link">易涝隐患区域加快整治。</div>
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <div class="link">行洪排涝能力不断提升。</div>
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <div class="link">设施运维管理持续完善。</div>
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <div class="link">海绵城市建设稳步推进。</div>
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <div class="qkq_tdzy">
|
|
|
+ <div class="qkq_tit">城市内涝点</div>
|
|
|
+ <div class="scrollbar" style="height: 300px;">
|
|
|
+ <ul id="accordion" class="accordion csnld">
|
|
|
+ <li class="on">
|
|
|
+ <div class="link">易涝隐患区域加快整治。</div>
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <div class="link">行洪排涝能力不断提升。</div>
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <div class="link">设施运维管理持续完善。</div>
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <div class="link">海绵城市建设稳步推进。</div>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
|
|
|
</div>
|
|
|
<!-- 设备tab结束-->
|
|
@@ -79,60 +71,46 @@
|
|
|
<!-- <span>星期六</span>-->
|
|
|
<!-- <b>11:16:58</b>-->
|
|
|
</div>
|
|
|
- <div class="facility_tab facility_tab2">
|
|
|
+ <div class="facility_tab facility_tab2">
|
|
|
+
|
|
|
+ <div class="qkq_tdzy">
|
|
|
+ <div class="qkq_tit ">抢险救援队</div>
|
|
|
+ <div class="scrollbar" style="height: 300px;">
|
|
|
+ <ul id="accordion" class="accordion nlsb">
|
|
|
+ <!-- li上加on类名是点击选中后效果 -->
|
|
|
+ <li v-for="(item, index) in team" :class="{ on: item.id == teamCurrent }" :key="index"
|
|
|
+ @click="onTeamlick(item)">
|
|
|
+ <div class="link">{{ item.dept }}</div>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
|
|
|
+ </div>
|
|
|
<div class="qkq_tdzy">
|
|
|
- <div class="qkq_tit ">内涝设备</div>
|
|
|
- <div class="scrollbar" style="height: 300px;">
|
|
|
- <ul id="accordion" class="accordion nlsb">
|
|
|
- <!-- li上加on类名是点击选中后效果 -->
|
|
|
- <li class="on">
|
|
|
- <div class="link">传感器设备是城市内涝积水监测预警...</div>
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <div class="link">数据采集设备负责将传感器设备采集...</div>
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <div class="link">通信设备是城市内涝积水监测预警系...</div>
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <div class="link">显示设备是城市内涝积水监测预警系...</div>
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- </div>
|
|
|
+ <div class="qkq_tit">防汛物资</div>
|
|
|
+ <div class="scrollbar" style="height: 300px;">
|
|
|
+ <ul id="accordion" class="accordion yjcssb">
|
|
|
+ <li v-for="(item, index) in supplies" :class="{ on: item.id == suppliesCurrent }" :key="index"
|
|
|
+ @click="onSuppliesclick(item)">
|
|
|
+ <div class="link">{{ item.dept }}</div>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
|
|
|
</div>
|
|
|
- <div class="qkq_tdzy">
|
|
|
- <div class="qkq_tit">应急场所设备</div>
|
|
|
- <div class="scrollbar" style="height: 300px;">
|
|
|
- <ul id="accordion" class="accordion yjcssb">
|
|
|
- <li class="on">
|
|
|
- <div class="link">急救箱:包括绷带、消毒棉、止血带...</div>
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <div class="link">停火器:能够有效灭火且易于携带的...</div>
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <div class="link">照明设备:包括手电筒、充电式LED...</div>
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <div class="link"> 呼吸器:用于呼吸困难、有毒气体...</div>
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- </div>
|
|
|
|
|
|
</div>
|
|
|
<!--右侧结束-->
|
|
|
- <!-- 多选按钮 开始 -->
|
|
|
- <form class="qkq_dx">
|
|
|
- <label><input type="checkbox"/>应急场所</label>
|
|
|
- <label><input type="checkbox"/>内涝点</label>
|
|
|
- <label><input type="checkbox"/>摄像头</label>
|
|
|
- </form>
|
|
|
- <!-- 多选按钮 结束 -->
|
|
|
+ <!-- 多选按钮 开始 -->
|
|
|
+ <form class="qkq_dx">
|
|
|
+ <label><input checked type="checkbox" name="ckbx" id="sxt" @click="handleClick"/>摄像头</label>
|
|
|
+ <label><input type="checkbox" name="ckbx" id="yjcs" @click="handleClick"/>应急场所</label>
|
|
|
+ <label><input type="checkbox" name="ckbx" id="nld" @click="handleClick"/>城市内涝点</label>
|
|
|
+ <label><input type="checkbox" name="ckbx" id="jyd" @click="handleClick"/>抢险救援队</label>
|
|
|
+ <label><input type="checkbox" name="ckbx" id="fxwz" @click="handleClick"/>防汛物资</label>
|
|
|
+ </form>
|
|
|
+ <!-- 多选按钮 结束 -->
|
|
|
|
|
|
<!-- 点位图例 开始
|
|
|
<div class="dwtl">
|
|
@@ -190,6 +168,11 @@ import "@/assets/images/qkq_body.css";
|
|
|
import "@/assets/images/qkq_index.css";
|
|
|
import "@/assets/images/qkq_sprh.css";
|
|
|
import {getCameraList} from "@/api/system/camera";
|
|
|
+import {
|
|
|
+ selectQkEmergencyRescueTeamAllList,
|
|
|
+ selectQkEmergencyShelterAllList,
|
|
|
+ selectQkRescueSuppliesAllList,
|
|
|
+} from "@/api/system/aqyj";
|
|
|
import supermap from "@/views/supermap/supermap";
|
|
|
|
|
|
|
|
@@ -202,7 +185,13 @@ export default {
|
|
|
return {
|
|
|
dropdownVisible: false,
|
|
|
cameras: [],
|
|
|
+ team: [],
|
|
|
+ shelter: [],
|
|
|
+ supplies: [],
|
|
|
sltProps: null,
|
|
|
+ teamCurrent: null,
|
|
|
+ shelterCurrent: null,
|
|
|
+ suppliesCurrent: null,
|
|
|
currentTime: '',
|
|
|
btnOne: true,
|
|
|
btnTwo: false
|
|
@@ -212,6 +201,9 @@ export default {
|
|
|
created() {
|
|
|
},
|
|
|
mounted() {
|
|
|
+ this.selectQkEmergencyRescueTeamAllList();
|
|
|
+ this.selectQkEmergencyShelterAllList();
|
|
|
+ this.selectQkRescueSuppliesAllList();
|
|
|
this.resourceDistribution();
|
|
|
this.deviceOnline();
|
|
|
this.deviceOffline();
|
|
@@ -224,30 +216,101 @@ export default {
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
+ handleClick() {
|
|
|
+ this.$refs.supermap.clearM()
|
|
|
+ let markType = [];
|
|
|
+ $('input[name="ckbx"]:checked').each(function () {
|
|
|
+ markType.push($(this).attr("id"))
|
|
|
+ });
|
|
|
+ this.$refs.supermap.init(markType)
|
|
|
+ },
|
|
|
+ onTeamlick(val) {
|
|
|
+ let markType = [];
|
|
|
+ this.suppliesCurrent = null;
|
|
|
+ this.shelterCurrent = null;
|
|
|
+ if (val.id == this.teamCurrent) {
|
|
|
+ this.teamCurrent = null;
|
|
|
+ } else {
|
|
|
+ this.teamCurrent = val.id;
|
|
|
+ }
|
|
|
+ this.$refs.supermap.init(markType.push("jyd"))
|
|
|
+ this.$refs.supermap.dropLocation(val.latitude, val.longitude);
|
|
|
+ },
|
|
|
+ onSuppliesclick(val) {
|
|
|
+ let markType = [];
|
|
|
+ this.teamCurrent = null;
|
|
|
+ this.shelterCurrent = null;
|
|
|
+ if (val.id == this.suppliesCurrent) {
|
|
|
+ this.suppliesCurrent = null;
|
|
|
+ } else {
|
|
|
+ this.suppliesCurrent = val.id;
|
|
|
+ }
|
|
|
+ this.$refs.supermap.init(markType.push("fxwz"))
|
|
|
+ this.$refs.supermap.dropLocation(val.latitude, val.longitude);
|
|
|
+ },
|
|
|
+ onShelterlick(val) {
|
|
|
+ let markType = [];
|
|
|
+ this.teamCurrent = null;
|
|
|
+ this.suppliesCurrent = null;
|
|
|
+ if (val.id == this.shelterCurrent) {
|
|
|
+ this.shelterCurrent = null;
|
|
|
+ } else {
|
|
|
+ this.shelterCurrent = val.id;
|
|
|
+ }
|
|
|
+ this.$refs.supermap.init(markType.push("yjcs"))
|
|
|
+ this.$refs.supermap.dropLocation(val.latitude, val.longitude);
|
|
|
+ },
|
|
|
+ //可视化查询抢险救援队列表
|
|
|
+ selectQkEmergencyRescueTeamAllList() {
|
|
|
+ selectQkEmergencyRescueTeamAllList().then(response => {
|
|
|
+ this.team = response.data;
|
|
|
+ })
|
|
|
+ }
|
|
|
+ ,
|
|
|
+ //可视化查询应急避难所列表
|
|
|
+ selectQkEmergencyShelterAllList() {
|
|
|
+ selectQkEmergencyShelterAllList().then(response => {
|
|
|
+ this.shelter = response.data;
|
|
|
+ })
|
|
|
+ }
|
|
|
+ ,
|
|
|
+ //可视化查询防汛抗旱物资储备列表
|
|
|
+ selectQkRescueSuppliesAllList() {
|
|
|
+ selectQkRescueSuppliesAllList().then(response => {
|
|
|
+ this.supplies = response.data;
|
|
|
+ })
|
|
|
+ }
|
|
|
+ ,
|
|
|
sltHandle() {
|
|
|
this.btnOne = true
|
|
|
this.btnTwo = false
|
|
|
this.$refs.supermap.getSupermap(null, null, null, "slt", null, null)
|
|
|
- },
|
|
|
+ }
|
|
|
+ ,
|
|
|
yxtHandle() {
|
|
|
this.btnTwo = true
|
|
|
this.btnOne = false
|
|
|
this.$refs.supermap.getSupermap(null, null, null, "yxt", null, null)
|
|
|
- },
|
|
|
+ }
|
|
|
+ ,
|
|
|
handleNavigation(route) {
|
|
|
this.$router.push({path: route});
|
|
|
- },
|
|
|
+ }
|
|
|
+ ,
|
|
|
homePage(route) {
|
|
|
this.$router.push({path: route});
|
|
|
- },
|
|
|
+ }
|
|
|
+ ,
|
|
|
cameraList() {
|
|
|
getCameraList().then(response => {
|
|
|
this.cameras = response.data;
|
|
|
})
|
|
|
- },
|
|
|
+ }
|
|
|
+ ,
|
|
|
toggleDropdown(event) {
|
|
|
this.dropdownVisible = !this.dropdownVisible;
|
|
|
- },
|
|
|
+ }
|
|
|
+ ,
|
|
|
|
|
|
resourceDistribution() {
|
|
|
//资源分布
|
|
@@ -378,7 +441,8 @@ export default {
|
|
|
if (option) {
|
|
|
myChart.setOption(option);
|
|
|
}
|
|
|
- },
|
|
|
+ }
|
|
|
+ ,
|
|
|
|
|
|
deviceOnline() {
|
|
|
//在线设备
|
|
@@ -412,7 +476,7 @@ export default {
|
|
|
name: "ring5",
|
|
|
type: 'custom',
|
|
|
coordinateSystem: "none",
|
|
|
- renderItem: function(params, api) {
|
|
|
+ renderItem: function (params, api) {
|
|
|
return {
|
|
|
type: 'arc',
|
|
|
shape: {
|
|
@@ -435,7 +499,7 @@ export default {
|
|
|
name: "ring5", //紫点
|
|
|
type: 'custom',
|
|
|
coordinateSystem: "none",
|
|
|
- renderItem: function(params, api) {
|
|
|
+ renderItem: function (params, api) {
|
|
|
let x0 = api.getWidth() / 2;
|
|
|
let y0 = api.getHeight() / 2;
|
|
|
let r = Math.min(api.getWidth(), api.getHeight()) * 0.42;
|
|
@@ -461,7 +525,7 @@ export default {
|
|
|
name: "ring5",
|
|
|
type: 'custom',
|
|
|
coordinateSystem: "none",
|
|
|
- renderItem: function(params, api) {
|
|
|
+ renderItem: function (params, api) {
|
|
|
return {
|
|
|
type: 'arc',
|
|
|
shape: {
|
|
@@ -485,7 +549,7 @@ export default {
|
|
|
name: "ring5", // 蓝色
|
|
|
type: 'custom',
|
|
|
coordinateSystem: "none",
|
|
|
- renderItem: function(params, api) {
|
|
|
+ renderItem: function (params, api) {
|
|
|
let x0 = api.getWidth() / 2;
|
|
|
let y0 = api.getHeight() / 2;
|
|
|
let r = Math.min(api.getWidth(), api.getHeight()) * 0.42;
|
|
@@ -510,7 +574,7 @@ export default {
|
|
|
name: "ring5",
|
|
|
type: 'custom',
|
|
|
coordinateSystem: "none",
|
|
|
- renderItem: function(params, api) {
|
|
|
+ renderItem: function (params, api) {
|
|
|
return {
|
|
|
type: 'arc',
|
|
|
shape: {
|
|
@@ -535,7 +599,7 @@ export default {
|
|
|
name: "ring5",
|
|
|
type: 'custom',
|
|
|
coordinateSystem: "none",
|
|
|
- renderItem: function(params, api) {
|
|
|
+ renderItem: function (params, api) {
|
|
|
return {
|
|
|
type: 'arc',
|
|
|
shape: {
|
|
@@ -558,7 +622,7 @@ export default {
|
|
|
name: "ring5",
|
|
|
type: 'custom',
|
|
|
coordinateSystem: "none",
|
|
|
- renderItem: function(params, api) {
|
|
|
+ renderItem: function (params, api) {
|
|
|
let x0 = api.getWidth() / 2;
|
|
|
let y0 = api.getHeight() / 2;
|
|
|
let r = Math.min(api.getWidth(), api.getHeight()) * 0.47;
|
|
@@ -582,7 +646,7 @@ export default {
|
|
|
name: "ring5", //绿点
|
|
|
type: 'custom',
|
|
|
coordinateSystem: "none",
|
|
|
- renderItem: function(params, api) {
|
|
|
+ renderItem: function (params, api) {
|
|
|
let x0 = api.getWidth() / 2;
|
|
|
let y0 = api.getHeight() / 2;
|
|
|
let r = Math.min(api.getWidth(), api.getHeight()) * 0.47;
|
|
@@ -723,21 +787,24 @@ export default {
|
|
|
y: y1
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
function draw() {
|
|
|
angle = angle + 3
|
|
|
myChart.setOption(option, true)
|
|
|
//window.requestAnimationFrame(draw);
|
|
|
}
|
|
|
+
|
|
|
if (timerId) {
|
|
|
clearInterval(timerId);
|
|
|
}
|
|
|
- timerId = setInterval(function() {
|
|
|
+ timerId = setInterval(function () {
|
|
|
//用setInterval做动画感觉有问题
|
|
|
draw()
|
|
|
}, 100);
|
|
|
|
|
|
myChart.setOption(option);
|
|
|
- },
|
|
|
+ }
|
|
|
+ ,
|
|
|
|
|
|
deviceOffline() {
|
|
|
// 视频融合--离线设备
|
|
@@ -772,7 +839,7 @@ export default {
|
|
|
name: "ring5",
|
|
|
type: 'custom',
|
|
|
coordinateSystem: "none",
|
|
|
- renderItem: function(params, api) {
|
|
|
+ renderItem: function (params, api) {
|
|
|
return {
|
|
|
type: 'arc',
|
|
|
shape: {
|
|
@@ -795,7 +862,7 @@ export default {
|
|
|
name: "ring5", //紫点
|
|
|
type: 'custom',
|
|
|
coordinateSystem: "none",
|
|
|
- renderItem: function(params, api) {
|
|
|
+ renderItem: function (params, api) {
|
|
|
let x0 = api.getWidth() / 2;
|
|
|
let y0 = api.getHeight() / 2;
|
|
|
let r = Math.min(api.getWidth(), api.getHeight()) * 0.42;
|
|
@@ -821,7 +888,7 @@ export default {
|
|
|
name: "ring5",
|
|
|
type: 'custom',
|
|
|
coordinateSystem: "none",
|
|
|
- renderItem: function(params, api) {
|
|
|
+ renderItem: function (params, api) {
|
|
|
return {
|
|
|
type: 'arc',
|
|
|
shape: {
|
|
@@ -845,7 +912,7 @@ export default {
|
|
|
name: "ring5", // 蓝色
|
|
|
type: 'custom',
|
|
|
coordinateSystem: "none",
|
|
|
- renderItem: function(params, api) {
|
|
|
+ renderItem: function (params, api) {
|
|
|
let x0 = api.getWidth() / 2;
|
|
|
let y0 = api.getHeight() / 2;
|
|
|
let r = Math.min(api.getWidth(), api.getHeight()) * 0.42;
|
|
@@ -870,7 +937,7 @@ export default {
|
|
|
name: "ring5",
|
|
|
type: 'custom',
|
|
|
coordinateSystem: "none",
|
|
|
- renderItem: function(params, api) {
|
|
|
+ renderItem: function (params, api) {
|
|
|
return {
|
|
|
type: 'arc',
|
|
|
shape: {
|
|
@@ -895,7 +962,7 @@ export default {
|
|
|
name: "ring5",
|
|
|
type: 'custom',
|
|
|
coordinateSystem: "none",
|
|
|
- renderItem: function(params, api) {
|
|
|
+ renderItem: function (params, api) {
|
|
|
return {
|
|
|
type: 'arc',
|
|
|
shape: {
|
|
@@ -918,7 +985,7 @@ export default {
|
|
|
name: "ring5",
|
|
|
type: 'custom',
|
|
|
coordinateSystem: "none",
|
|
|
- renderItem: function(params, api) {
|
|
|
+ renderItem: function (params, api) {
|
|
|
let x0 = api.getWidth() / 2;
|
|
|
let y0 = api.getHeight() / 2;
|
|
|
let r = Math.min(api.getWidth(), api.getHeight()) * 0.47;
|
|
@@ -942,7 +1009,7 @@ export default {
|
|
|
name: "ring5", //绿点
|
|
|
type: 'custom',
|
|
|
coordinateSystem: "none",
|
|
|
- renderItem: function(params, api) {
|
|
|
+ renderItem: function (params, api) {
|
|
|
let x0 = api.getWidth() / 2;
|
|
|
let y0 = api.getHeight() / 2;
|
|
|
let r = Math.min(api.getWidth(), api.getHeight()) * 0.47;
|
|
@@ -1083,21 +1150,24 @@ export default {
|
|
|
y: y1
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
function draw() {
|
|
|
angle = angle + 3
|
|
|
myChart.setOption(option, true)
|
|
|
//window.requestAnimationFrame(draw);
|
|
|
}
|
|
|
+
|
|
|
if (timerId) {
|
|
|
clearInterval(timerId);
|
|
|
}
|
|
|
- timerId = setInterval(function() {
|
|
|
+ timerId = setInterval(function () {
|
|
|
//用setInterval做动画感觉有问题
|
|
|
draw()
|
|
|
}, 100);
|
|
|
|
|
|
myChart.setOption(option);
|
|
|
- },
|
|
|
+ }
|
|
|
+ ,
|
|
|
|
|
|
getCurrentTime() {
|
|
|
const now = new Date();
|
|
@@ -1117,7 +1187,8 @@ export default {
|
|
|
const formattedSecond = second < 10 ? `0${second}` : second;
|
|
|
|
|
|
this.currentTime = `${year}年${formattedMonth}月${formattedDate}日 ${weekDays[day]} ${formattedHour}:${formattedMinute}:${formattedSecond}`;
|
|
|
- },
|
|
|
+ }
|
|
|
+ ,
|
|
|
|
|
|
regionTop() {
|
|
|
//摄像头统计
|
|
@@ -1141,7 +1212,7 @@ export default {
|
|
|
},
|
|
|
top: '0%',
|
|
|
left: 'bottom',
|
|
|
- bottm:'-10%'
|
|
|
+ bottm: '-10%'
|
|
|
},
|
|
|
tooltip: {
|
|
|
trigger: 'axis',
|
|
@@ -1256,7 +1327,8 @@ export default {
|
|
|
if (option) {
|
|
|
myChart.setOption(option);
|
|
|
}
|
|
|
- },
|
|
|
+ }
|
|
|
+ ,
|
|
|
}
|
|
|
};
|
|
|
|