From 69ec1e45b56d3b6083bb5cbb102fc0a745e21574 Mon Sep 17 00:00:00 2001
From: Lou <luzhiping@qqyjz.com>
Date: Tue, 19 Mar 2024 17:45:21 +0800
Subject: [PATCH] Merge branch 'master' of http://s16s652780.51mypc.cn:49896/r/jczz_app
---
manifest.json | 8
pages/home/index.vue | 125 ++++++++++
pages.json | 23 ++
subPackage/police/onLine.vue | 156 ++++++++++++++
subPackage/police/policeSituationDetail.vue | 22 ++
api/user.js | 1
subPackage/police/policeSituation.vue | 263 +++++++++++++++++++++++
api/police/police.js | 10
8 files changed, 597 insertions(+), 11 deletions(-)
diff --git a/api/police/police.js b/api/police/police.js
new file mode 100644
index 0000000..20b94f0
--- /dev/null
+++ b/api/police/police.js
@@ -0,0 +1,10 @@
+import http from '@/http/api.js'
+
+// 查询警情处理记录
+export const getPoliceAlarmRecords = (params) => {
+ return http.request({
+ url: '/blade-policeAlarmRecords/policeAlarmRecords/page',
+ method: 'get',
+ params: params
+ })
+}
\ No newline at end of file
diff --git a/api/user.js b/api/user.js
index 5b1991c..41ff5d4 100644
--- a/api/user.js
+++ b/api/user.js
@@ -97,6 +97,7 @@
// 获取用户信息
export const getUser = (id) => {
+ console.log('************************', id)
return http.request({
url: '/blade-system/user/detail',
method: 'GET',
diff --git a/manifest.json b/manifest.json
index 399d6eb..3cab955 100644
--- a/manifest.json
+++ b/manifest.json
@@ -156,7 +156,13 @@
"uniStatistics" : {
"enable" : false
},
- "requiredPrivateInfos" : [ "getLocation", "chooseLocation" ],
+ "requiredPrivateInfos" : [
+ "getLocation",
+ "chooseLocation",
+ "onLocationChange",
+ "startLocationUpdateBackground"
+ ],
+ "requiredBackgroundModes" : [ "location" ], //必填
"permission" : {
"scope.userLocation" : {
"desc" : "定位"
diff --git a/pages.json b/pages.json
index 72eb300..faecd70 100644
--- a/pages.json
+++ b/pages.json
@@ -75,6 +75,29 @@
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
}
+ }, {
+ "path": "subPackage/police/policeSituation",
+ "style": {
+ "navigationBarTitleText": "警情处置",
+ // "enablePullDownRefresh": false
+ "navigationBarBackgroundColor": "#fff",
+ "navigationBarTextStyle": "black"
+ }
+
+ }, {
+ "path": "subPackage/police/policeSituationDetail",
+ "style": {
+ "navigationBarTitleText": "警情处置详情",
+ "enablePullDownRefresh": false
+ }
+
+ }, {
+ "path": "subPackage/police/onLine",
+ "style": {
+ "navigationBarTitleText": "巡逻打卡",
+ "enablePullDownRefresh": false
+ }
+
}
],
"subPackages": [
diff --git a/pages/home/index.vue b/pages/home/index.vue
index 35a20e2..6561724 100644
--- a/pages/home/index.vue
+++ b/pages/home/index.vue
@@ -275,7 +275,10 @@
getFuncList,
getHouseList
} from "@/api/doorplateAddress/doorplateAddress";
-
+ import {
+ getUser,
+ updateUserInfo
+ } from "@/api/user.js"
import {
getPage
} from "@/api/article/article";
@@ -537,12 +540,20 @@
})
//选择位置刷新楼盘表
uni.$on('refreshPage', (val) => {
- console.log("refreshPage=>", val);
+ // console.log("refreshPage=>", val);
this.curSelectSite = val
this.getHouseDataList(val.id)
this.curHouseCode = this.curSelectSite.houseCode
uni.setStorageSync("curHouseCode", this.curSelectSite.houseCode)
})
+ },
+ onShow() {
+ if (uni.getStorageSync('activeRole').roleAlias === 'mj' &&
+ uni.getStorageSync("userInfo").status &&
+ uni.getStorageSync("userInfo").status == 2) {
+ console.log("*******status*****", uni.getStorageSync("userInfo").status)
+ this.getRealTimeLocaltion()
+ }
},
onShareAppMessage() {
@@ -639,7 +650,7 @@
neiCode: this.curSelectSite.id,
roleType: this.selectRole.roleName == "网格员" ? 1 : 0
}).then(res => {
- console.log(res);
+ // console.log(res);
let data = res.data;
let count = 0;
count += Number(data.bqsj) + Number(data.xfzc) + Number(data.xfyhzg) + Number(data.qbhs);
@@ -838,13 +849,13 @@
},
// 回调参数为包含columnIndex、value、values
confirmSite(e) {
- console.log('confirm', e)
+ // console.log('confirm', e)
this.selectSiteIndex = e.indexs;
this.curSelectSite = e.value[e.value.length - 1]
this.selectBoxShow = false
this.getHouseDataList(e.value[1]?.id)
this.curHouseCode = e.value[0].id
- console.log("curSite=>", this.curSelectSite);
+ // console.log("curSite=>", this.curSelectSite);
},
getMenu(menuName) {
@@ -888,7 +899,7 @@
if (this.sectionList.length) {
let list = this.sectionList.filter(item => item.name == "日常办公");
let taskList = list[0].children.filter(item => item.name == "待办事项");
- console.log("taskList===>", taskList)
+ // console.log("taskList===>", taskList)
if (taskList.length) {
uni.setStorageSync("taskMenu", taskList[0].children);
} else {
@@ -900,7 +911,7 @@
}
if (this.roleType == 3) {
- console.log("taskMenuList==>", taskMenuList);
+ // console.log("taskMenuList==>", taskMenuList);
if (taskMenuList.length) {
uni.setStorageSync("taskMenu", taskMenuList);
} else {
@@ -1061,10 +1072,10 @@
const that = this
uni.scanCode({
success: function(res) {
- console.log("扫码结果", res)
+ // console.log("扫码结果", res)
let eventType = 0;
let obj = that.getUrlParams(res.result)
- console.log(obj)
+ // console.log(obj)
if (!that.isLogin) {
let data = res.data;
that.$u.func.globalNavigator(
@@ -1181,7 +1192,101 @@
uni.navigateTo({
url: `/subPackage/workbench/views/auditSite?code=${houseCode}&from=index`
})
- }
+ },
+ getRealTimeLocaltion() {
+ this.getDeviceGPS() //获取本机GPS状态
+ wx.startLocationUpdateBackground({
+ type: 'wgs84',
+ success: (res) => {
+ console.log('res***************', res)
+ this.getBackgroundLocation();
+ },
+ fail: (err) => {
+ //授权失败后引导用户打开定位信息
+ uni.getSetting({
+ success: (res) => {
+ var statu = res.authSetting;
+ if (!statu["scope.userLocationBackground"]) {
+ uni.showModal({
+ title: "是否授权在使用期间和离开后!",
+ content: "需要获取您当前的位置信息,请在位置信息中选择",
+ success: (tip) => {
+ if (tip.confirm) {
+ uni.openSetting({
+ success: (data) => {
+ if (data
+ .authSetting[
+ "scope.userLocationBackground"
+ ] == true
+ ) {
+ this
+ .getBackgroundLocation();
+ }
+ }
+ });
+ } else {
+ console.log('用户拒绝打开设置界面')
+ }
+ }
+ });
+ }
+ }
+ });
+ }
+ });
+ },
+ // 获取本机设备的GPS信息
+ getDeviceGPS() {
+ let system = uni.getSystemInfoSync();
+ //如果设备的GPS未开启,locationEnabled这里会返回false,以此判断
+ if (system.locationEnabled == false) {
+ //GPS未开启,返回false
+ this.userGPS = false
+ return uni.showModal({
+ content: '请在系统设置中开启GPS定位权限',
+ showCancel: false,
+ confirmText: '确认',
+ success: (res) => {
+ console.log('res:', res)
+ },
+ })
+ } else {
+ //已开启,返回true
+ this.userGPS = true
+ }
+ },
+ getBackgroundLocation() {
+ //判断是否也开通了wx.onLocationChange接口且检测本机GPS功能是否开启,GPS不开启不会间接获取
+ if (wx.onLocationChange && this.userGPS != false) {
+ wx.onLocationChange((data) => {
+ console.log('onLocationChange***************', data)
+
+ //微信开发工具上面只能触发一次,真机上面是循环获取
+ //设置一个公共时间,原因是时间间隔太短,自己设置时间,然后去操作相应的逻辑
+ if (this.time == 11) {
+ // 调取实时位置
+ this.reportLocation(this.location);
+ this.time = 0;
+ }
+ this.time++;
+ this.location = data;
+ });
+ }
+ },
+ //调取位置后的操作逻辑
+ reportLocation(location) {
+ // 更新民警位置
+ let param = {
+ id: uni.getStorageSync("userInfo").user_id,
+ deptId: uni.getStorageSync("userInfo").dept_id,
+ lng: data.longitude,
+ lat: data.latitude,
+ }
+ updateUserInfo(param).then(res => {
+ console.log(res)
+ })
+ console.log('********************location****************************************', location)
+ },
}
}
</script>
diff --git a/subPackage/police/onLine.vue b/subPackage/police/onLine.vue
new file mode 100644
index 0000000..42506a4
--- /dev/null
+++ b/subPackage/police/onLine.vue
@@ -0,0 +1,156 @@
+<template>
+ <view class="container">
+
+ <u-row customStyle="margin-bottom: 10px">
+ <u-col span="6">
+ <view class="demo-layout bg-purple-light">
+ 在线状态:
+ </view>
+ </u-col>
+ <u-col span="6">
+ <u-switch v-model="onLine" asyncChange @change="asyncChange"></u-switch>
+ </u-col>
+ </u-row>
+ <!-- <view> -->
+ <!-- <role-list :roleData="roleData" :current-id="selectRole.id" @select="select"></role-list> -->
+ <!-- <u-switch v-model="value13" asyncChange @change="asyncChange"></u-switch> -->
+ <!-- </view> -->
+
+ <!-- <footer-btn v-if="roleData.length" text="确定" @click="submit" /> -->
+
+ <u-loading-page :loading="loading"></u-loading-page>
+ </view>
+</template>
+
+<script>
+ import {
+ getUser,
+ updateUserInfo
+ } from "@/api/user.js"
+ // import roleList from "@/subPackage/user/components/roleList.vue"
+ // import {
+ // dynamicMenu,
+ // getRoleListByIds,
+ // } from "@/api/system/role.js"
+ export default {
+ components: {
+ // roleList
+ },
+
+ data() {
+ return {
+ onLine: false,
+ userInfo: {},
+ loading: false,
+ }
+ },
+ created() {
+ // this.selectRole = uni.getStorageSync("activeRole")
+
+ },
+ onShow() {
+ this.getUserInfo()
+ },
+
+ methods: {
+
+ asyncChange(e) {
+ uni.showModal({
+ content: e ? '确定是否上线?' : '确定是否下线?',
+ success: (res) => {
+ if (res.confirm) {
+ this.onLine = e
+ if (e) {
+ this.userInfo.status = 2
+ } else {
+ this.userInfo.status = 1
+ }
+ updateUserInfo(this.userInfo).then(res => {
+ console.log(res)
+ })
+ }
+ }
+ })
+ },
+ //获取当前角色的所有权限列表
+ getUserInfo() {
+ this.loading = !this.loading
+ getUser(
+ uni.getStorageSync("userInfo").user_id
+ ).then(res => {
+ this.userInfo = res.data
+ if (res.data.status && res.data.status == 2) {
+ this.onLine = true
+ } else {
+ this.onLine = false
+ }
+ // console.log(data)
+ });
+
+ // data.forEach((item, index) => {
+ // if (item.roleName == "居民") {
+ // item.icon = "/static/icon/user-01.png"
+ // }
+ // })
+
+ // this.roleData = data;
+ this.loading = !this.loading
+ },
+
+ select(item) {
+ this.selectRole = item
+ console.log("当前选中角色", this.selectRole)
+ },
+
+ async submit() {
+ //保存当前激活的角色
+ this.$store.commit("setActiveRole", this.selectRole)
+ // const res = await dynamicMenu(this.selectRole.id)
+ // let data = res.data
+ // const appMenu = data.filter(e => e.name == 'app')[0].children
+ // console.log("菜单:", appMenu)
+ // store.commit("SET_MENU", appMenu)
+ this.$store.dispatch("getMenuList").then(res => {
+ uni.showToast({
+ title: "切换身份成功",
+ icon: "success",
+ duration: 1500,
+ success: () => {
+ uni.$emit("refresh")
+ setTimeout(() => {
+ this.$u.func.globalNavigator(
+ "/pages/home/index",
+ "switchTab")
+ }, 500)
+ }
+ })
+ });
+
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .container {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ // background: #F9F9FA;
+
+
+ }
+
+ .cur-btn {
+ width: 100%;
+ padding: 20rpx;
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ box-sizing: border-box;
+ z-index: 10;
+
+ }
+</style>
\ No newline at end of file
diff --git a/subPackage/police/policeSituation.vue b/subPackage/police/policeSituation.vue
new file mode 100644
index 0000000..89ed774
--- /dev/null
+++ b/subPackage/police/policeSituation.vue
@@ -0,0 +1,263 @@
+<template>
+ <view>
+ <u-sticky>
+ <view class="bgc-ff">
+ <view class="tab">
+ <u-tabs :list="tabList" :current="tabIndex" @click="changeTab" :inactiveStyle="{color:'#999999'}"
+ :activeStyle="{color:'#017BFC'}">
+ </u-tabs>
+ <!-- <view class="search flex j-c-s-b a-i-c">
+ <view class="tab-filter flex j-c-c a-i-c" @click="showDateModal">
+ <text class="f-28">时间筛选</text>
+ <u-icon name="arrow-down"></u-icon>
+ </view>
+ <u-search placeholder="请输入需要查询信息的名称" v-model="keyword" :clearabled="true" :showAction="true"
+ :animation="true" @search="searchConfirm" @clear="clearConfirm"></u-search>
+ </view> -->
+ </view>
+ </view>
+ </u-sticky>
+
+ <view class="list">
+ <view class="list-item bgc-ff mb-20" v-for="(i,k) in list" :key="k" @click="navTo(i.id,i.status)">
+ <view class="item-title flex a-i-c j-c-s-b mb-20">
+ <text class="f-32 fw">{{i.alarmType}}</text>
+ <u-tag v-if="i.status == 1" text="待处置" type="warning" plain plainFill></u-tag>
+ <u-tag v-if="i.status == 2" text="已处置" type="success" plain plainFill></u-tag>
+ </view>
+ <view class="item-row flex a-i-c j-c-s-b">
+ <text class="f-28">时间</text>
+ <text class="f-28 c-66">{{i.createTime}}</text>
+ </view>
+ <view class="item-row flex a-i-c j-c-s-b">
+ <text class="f-28">地址</text>
+ <text class="address f-28 c-66">{{i.address || ""}}</text>
+ </view>
+ </view>
+ </view>
+ <u-toast ref="uToast"></u-toast>
+ <u-loadmore :status="loadingStatus" loadmoreText="开始加载" loadingText="数据加载中" nomoreText="没有更多了" line />
+
+ <date-range-modal ref="dateRane" @comfirm="handleComfirmDate" @rest="handleRestDate" />
+ </view>
+</template>
+
+<script>
+ import {
+ getPoliceAlarmRecords
+ } from "@/api/police/police"
+ import dateRangeModal from '@/components/dateRangeModal/modal.vue';
+ export default {
+ components: {
+ dateRangeModal
+ },
+ data() {
+ return {
+ tabList: [
+
+ {
+ name: "全部",
+ status: "",
+ },
+ {
+ name: "待处置",
+ status: 1,
+ },
+ {
+ name: "已处置",
+ status: 2
+ },
+
+ ],
+ tabIndex: 0,
+ currentStatus: "",
+ list: [],
+ loadingStatus: 'nomore',
+ currentPage: 1,
+ frequency: '',
+ reportType: "",
+ selectDate: [],
+ houseCode: "",
+ keyword: ""
+ }
+ },
+
+ onLoad(option) {
+ console.log(option);
+ // this.getList()
+ },
+
+ onShow() {
+ this.resetParams();
+ this.getList()
+ },
+
+ onReachBottom() {
+ this.currentPage++
+ this.getList()
+ },
+
+ methods: {
+ searchConfirm() {
+ this.resetParams()
+ this.getList()
+ },
+ clearConfirm() {
+ this.keyword = ''
+ this.searchConfirm()
+ },
+ changeTab(e) {
+ this.tabIndex = e.index;
+ this.currentStatus = e.status;
+ this.resetParams();
+ this.getList();
+ },
+ resetParams() {
+ this.list = [];
+ this.currentPage = 1;
+ },
+ getList() {
+ this.$nextTick(() => {
+ this.loadingStatus = 'loadingmore'
+ this.$refs.uToast.show({
+ type: 'loading',
+ message: '正在加载',
+ duration: 9999999
+ })
+ })
+ let params = {
+ current: this.currentPage,
+ size: 20,
+ status: this.currentStatus,
+ frequency: this.frequency
+ }
+ // if (this.selectDate.length) {
+ // params.startTime = this.selectDate[0]
+ // params.endTime = this.selectDate[1]
+ // }
+ // if (this.houseCode) {
+ // params.houseCode = this.houseCode;
+ // }
+
+ // if (this.reportType) {
+ // params.reportType = this.reportType
+ // }
+ // if (this.keyword) {
+ // params.name = this.keyword;
+ // }
+
+ getPoliceAlarmRecords(params).then(res => {
+ if (res.code != 200) {
+ uni.showToast({
+ title: '数据请求失败',
+ icon: 'error'
+ })
+ return
+ }
+ let records = res.data.records;
+ this.list = [...this.list, ...records]
+ this.$nextTick(() => {
+ this.$refs.uToast.isShow = false
+ })
+ this.loadingStatus = 'nomore'
+ })
+ },
+ navTo(id, status) {
+ uni.navigateTo({
+ url: './policeSituationDetail',
+ complete: (res) => {
+ console.log(res)
+ }
+ })
+ // this.navToDetail(reportType, id)
+ },
+
+ navToEdit(reportType, id, type) {
+ if (reportType == 1) {
+ this.$u.func.globalNavigator(`/subPackage/label/bail?id=${id}`)
+ } else if (reportType == 2) {
+ this.$u.func.globalNavigator(`/subPackage/label/check?id=${id}`)
+ } else if (reportType == 5) {
+ this.$u.func.globalNavigator(`/subPackage/label/form?id=${id}`)
+ }
+ },
+
+ navToDetail(reportType, id, type) {
+ if (reportType == 1) {
+ this.$u.func.globalNavigator(`bailReportDetail?id=${id}`)
+ } else if (reportType == 7) {
+ this.$u.func.globalNavigator(`selfCheckDetail?id=${id}`)
+ } else if (reportType == 5) {
+ this.$u.func.globalNavigator(`labelReportDetail?id=${id}`)
+ } else {
+ this.$u.func.globalNavigator(`checkReform?id=${id}`)
+ }
+
+
+ },
+
+ showDateModal() {
+ this.$refs.dateRane.open();
+ },
+
+ handleRestDate() {
+ this.selectDate = [];
+ this.resetParams();
+ this.getList()
+ },
+ handleComfirmDate(val) {
+ this.selectDate = val;
+ this.resetParams();
+ this.getList()
+ }
+
+ }
+ }
+</script>
+
+<style lang="scss">
+ page {
+ background-color: #F5F5F5;
+ }
+
+
+
+ .tab {
+ // width: 100%;
+
+ }
+
+ .search {
+ padding: 20rpx 20rpx;
+ }
+
+ // .tab /deep/.u-tabs__wrapper__nav__item {
+ // flex: 1;
+ // }
+ .tab-filter {
+ padding: 0 20rpx;
+ }
+
+ .list {
+ margin: 20rpx 30rpx 0;
+ }
+
+ .list-item {
+ padding: 0 30rpx 20rpx;
+ border-radius: 8rpx;
+
+ .item-title {
+ padding: 30rpx 0;
+ border-bottom: 1px solid #F5F5F5;
+ }
+
+ .item-row {
+ padding: 10rpx 0;
+
+ .address {
+ width: 65%;
+ text-align: right;
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/subPackage/police/policeSituationDetail.vue b/subPackage/police/policeSituationDetail.vue
new file mode 100644
index 0000000..17480d0
--- /dev/null
+++ b/subPackage/police/policeSituationDetail.vue
@@ -0,0 +1,22 @@
+<template>
+ <view>
+
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+
+ }
+ },
+ methods: {
+
+ }
+ }
+</script>
+
+<style>
+
+</style>
\ No newline at end of file
--
Gitblit v1.9.3