Merge branch 'master' of http://192.168.0.105:10010/r/jfptweb-publicSecurity
| | |
| | | <script type="text/javascript" src='https://webapi.amap.com/maps?v=1.4.11&key=7ab53b28352e55dc5754699add0ad862&plugin=AMap.PlaceSearch'></script> |
| | | <script src="https://webapi.amap.com/ui/1.0/main.js?v=1.0.11"></script> |
| | | <link rel="icon" href="img/1.jpg"> |
| | | <title>警群联控后台管理系统</title> |
| | | <title>群防群控后台管理系统</title> |
| | | <style> |
| | | html, |
| | | body, |
| | |
| | | import request from '@/router/axios'; |
| | | import qs from 'qs' // axios自带的工具不需要安装npm依赖 |
| | | |
| | | export const getList = (current, size, params) => { |
| | | return request({ |
| | |
| | | }) |
| | | } |
| | | |
| | | export const getDetails = (id) => { |
| | | return request({ |
| | | url: '/api/feedback/feedback/details', |
| | | method: 'get', |
| | | params: { |
| | | id |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export const remove = (ids) => { |
| | | return request({ |
| | | url: '/api/feedback/feedback/remove', |
| | |
| | | }) |
| | | } |
| | | |
| | | |
| | | export const adds = (row) => { |
| | | return request({ |
| | | url: '/api/feedback/feedback/saves', |
| | | method: 'post', |
| | | headers: { |
| | | 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8' |
| | | }, |
| | | data: qs.stringify(row) |
| | | }) |
| | | } |
| | | |
| | | export const update = (row) => { |
| | | return request({ |
| | | url: '/api/feedback/feedback/submit', |
| | |
| | | }) |
| | | } |
| | | |
| | | export const updates = (row) => { |
| | | return request({ |
| | | url: '/api/feedback/feedback/updates', |
| | | method: 'post', |
| | | headers: { |
| | | 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8' |
| | | }, |
| | | data: qs.stringify(row) |
| | | }) |
| | | } |
| | | |
| | |
| | | * 全局配置文件 |
| | | */ |
| | | export default { |
| | | title: "警群联控后台管理系统", |
| | | title: "群防群控后台管理系统", |
| | | logo: "S", |
| | | key: '警群联控后台管理系统',//配置主键,目前用于存储 |
| | | indexTitle: '警群联控后台管理系统', |
| | | key: '群防群控后台管理系统',//配置主键,目前用于存储 |
| | | indexTitle: '群防群控后台管理系统', |
| | | clientId: 'saber', // 客户端id |
| | | clientSecret: 'saber_secret', // 客户端密钥 |
| | | tenantMode: true, // 是否开启租户模式 |
| | |
| | | export default { |
| | | tip: '提示', |
| | | title: '警群联控后台管理系统', |
| | | title: '群防群控后台管理系统', |
| | | logoutTip: '退出系统, 是否继续?', |
| | | submitText: '确定', |
| | | cancelText: '取消', |
| | |
| | | test: '测试页面' |
| | | }, |
| | | login: { |
| | | title: '警群联控后台管理系统 ', |
| | | info: '警群联控后台管理系统', |
| | | title: '群防群控后台管理系统 ', |
| | | info: '群防群控后台管理系统', |
| | | tenantId: '请输入租户ID', |
| | | username: '请输入账号', |
| | | password: '请输入密码', |
| | |
| | | }, |
| | | }).then(function (response) { |
| | | var userId = JSON.parse( |
| | | window.localStorage.getItem("警群联控后台管理系统-userInfo") |
| | | window.localStorage.getItem("群防群控后台管理系统-userInfo") |
| | | ).content.user_id; |
| | | |
| | | if (response.data.data.records.length > 0) { |
| | |
| | | } |
| | | if (window.socket.readyState == WebSocket.OPEN) { |
| | | var userId = JSON.parse( |
| | | window.localStorage.getItem("警群联控后台管理系统-userInfo") |
| | | window.localStorage.getItem("群防群控后台管理系统-userInfo") |
| | | ).content.user_id; |
| | | |
| | | window.socket.send(userId); |
| | |
| | | Recorder.getPermission().then(() => {}); |
| | | this.videoConversationReal = true; |
| | | var userId = JSON.parse( |
| | | window.localStorage.getItem("警群联控后台管理系统-userInfo") |
| | | window.localStorage.getItem("群防群控后台管理系统-userInfo") |
| | | ).content.user_id; |
| | | newAxios |
| | | .post( |
| | |
| | | i18n: 'dashboard' |
| | | }, |
| | | component: () => |
| | | import ( /* webpackChunkName: "views" */ '@/views/alarmManagement/alarmAnalysis') |
| | | import ( /* webpackChunkName: "views" */ '@/views/realTimePolice/real') |
| | | }] |
| | | }, |
| | | |
| | |
| | | }, { |
| | | path: '/article', |
| | | component: Layout, |
| | | redirect: '/article/article', |
| | | redirect: '/article/index', |
| | | children: [{ |
| | | path: 'article', |
| | | path: 'index', |
| | | name: '资讯管理', |
| | | meta: { |
| | | i18n: 'article' |
| | |
| | | }, { |
| | | path: '/feedbackReport', |
| | | component: Layout, |
| | | redirect: '/feedbackReport/feedbackReport', |
| | | redirect: '/feedbackReport/index', |
| | | children: [{ |
| | | path: 'feedbackReport', |
| | | path: 'index', |
| | | name: '取证上报', |
| | | meta: { |
| | | i18n: 'feedbackReport' |
| | |
| | | }, |
| | | { |
| | | path: '/patrolManagement', |
| | | redirect: '/policeInformationDistribution/patrolManagement', |
| | | redirect: '/policeInformationDistribution/index', |
| | | component: Layout, |
| | | children: [{ |
| | | path: 'patrolManagement', |
| | | path: 'index', |
| | | name: '巡逻管理', |
| | | meta: { |
| | | i18n: 'policeInformationDistribution' |
| | |
| | | import ( /* webpackChunkName: "views" */ '@/views/policeInformationDistribution/patrolManagement') |
| | | }] |
| | | }, { |
| | | path: '/policeInformationDistribution', |
| | | redirect: '/policeInformationDistribution/policeManagementTeam', |
| | | path: '/security', |
| | | redirect: '/security/index', |
| | | component: Layout, |
| | | children: [{ |
| | | path: 'policeManagementTeam', |
| | | name: '处警队伍管理', |
| | | path: 'index', |
| | | name: '保安管理', |
| | | meta: { |
| | | i18n: 'policeInformationDistribution' |
| | | }, |
| | | component: () => |
| | | import ( /* webpackChunkName: "views" */ '@/views/policeInformationDistribution/policeManagementTeam') |
| | | import ( /* webpackChunkName: "views" */ '@/views/security/security') |
| | | }] |
| | | }, { |
| | | path: '/report', |
| | |
| | | /* |
| | | * @Descripttion: |
| | | * @version: |
| | | * @Descripttion: |
| | | * @version: |
| | | * @Author: song |
| | | * @Date: 2021-01-26 08:56:33 |
| | | * @LastEditors: song |
| | |
| | | |
| | | state: { |
| | | language: getStore({name: 'language'}) || 'zh', |
| | | isCollapse: true, |
| | | isCollapse: false, |
| | | isFullScren: false, |
| | | isMenu: true, |
| | | isShade: false, |
| | |
| | | }, |
| | | { |
| | | label: "发布时间", |
| | | prop: "datetime", |
| | | prop: "dateTime", |
| | | type: "datetime", |
| | | format: "yyyy-MM-dd hh:mm:ss", |
| | | valueFormat: "yyyy-MM-dd hh:mm:ss", |
| | | format: "yyyy-MM-dd HH:mm:ss", |
| | | valueFormat: "yyyy-MM-dd HH:mm:ss", |
| | | searchRange:true, |
| | | hide: true, |
| | | addDisplay: false, |
| | |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | type: "date", |
| | | format: "yyyy-MM-dd hh:mm:ss", |
| | | valueFormat: "yyyy-MM-dd hh:mm:ss" |
| | | format: "yyyy-MM-dd HH:mm:ss", |
| | | valueFormat: "yyyy-MM-dd HH:mm:ss" |
| | | }, |
| | | { |
| | | label: "资讯内容", |
| | |
| | | this.onLoad(this.page, this.query); |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | const {datetime} = this.query; |
| | | const {dateTime} = this.query; |
| | | let values = { |
| | | ...params, |
| | | }; |
| | | if (datetime) { |
| | | if (dateTime) { |
| | | values = { |
| | | ...params, |
| | | startTime: datetime[0], |
| | | endTime: datetime[1], |
| | | startTime: dateTime[0], |
| | | endTime: dateTime[1], |
| | | ...this.query |
| | | }; |
| | | values.datetime = null; |
| | |
| | | <template> |
| | | <div id="homeL"> |
| | | <div class="homeL-up"> |
| | | <span class="h1">警群联控后台管理系统</span> |
| | | <span class="h1">群防群控后台管理系统</span> |
| | | <!-- <span class="h2">IoT security cloud service platform</span>--> |
| | | </div> |
| | | <div class="homeL-bar"> |
| | |
| | | </template> |
| | | </avue-crud> |
| | | </basic-container> |
| | | |
| | | </template> |
| | | |
| | | <script> |
| | | import {getListReport, getDetail, add, update, remove} from "@/api/feedback/feedback"; |
| | | import {getListReport, getDetails, adds, updates, remove} from "@/api/feedback/feedback"; |
| | | import {getBaTree} from "@/api/client/client"; |
| | | import {mapGetters} from "vuex"; |
| | | |
| | | export default { |
| | |
| | | tip: false, |
| | | searchShow: true, |
| | | searchMenuSpan: 6, |
| | | labelWidth: '125', |
| | | dialogWidth: 1150, |
| | | border: false, |
| | | stripe:true, |
| | | index: true, |
| | | viewBtn: true, |
| | | selection: true, |
| | | dialogClickModal: false, |
| | | images:[], |
| | | videos:[], |
| | | column: [ |
| | | { |
| | | label: "上报人姓名", |
| | | prop: "sname", |
| | | search:true, |
| | | searchLabelWidth:100, |
| | | searchSpan: 5, |
| | | searchSpan:5, |
| | | addDisplay:false, |
| | | editDisplay:false |
| | | }, |
| | | { |
| | | label: "上报人姓名", |
| | | prop: "snumber", |
| | | type: "tree", |
| | | dicUrl: "/api/catalogs/catalogs/getBigTree", |
| | | props: { |
| | | label: "title" |
| | | }, |
| | | width: 72, |
| | | hide: true, |
| | | addDisplay: true, |
| | | editDisplay: true, |
| | | viewDisplay: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入上报人姓名", |
| | | message: "请选择上报人", |
| | | trigger: "blur" |
| | | }] |
| | | }], |
| | | }, |
| | | { |
| | | label: "上报地址", |
| | |
| | | type: "datetime", |
| | | format: "yyyy-MM-dd HH:mm:ss", |
| | | valueFormat: "yyyy-MM-dd HH:mm:ss", |
| | | }, |
| | | { |
| | | label: "上报时间", |
| | | prop: "dateTime", |
| | | type: "datetime", |
| | | format: "yyyy-MM-dd HH:mm:ss", |
| | | valueFormat: "yyyy-MM-dd HH:mm:ss", |
| | | searchRange: true, |
| | | search:true, |
| | | searchLabelWidth:100, |
| | | searchSpan: 6, |
| | | addDisplay:false, |
| | | viewDisplay:false, |
| | | editDisplay:false, |
| | | hide:true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入上报时间", |
| | | message: "请选择上报时间", |
| | | trigger: "blur" |
| | | }] |
| | | }, |
| | | { |
| | | label: "视频", |
| | | prop: "feedbackVideo", |
| | | label: '图片', |
| | | prop: 'images', |
| | | dataType: 'array', |
| | | type: 'upload', |
| | | span: 24, |
| | | hide:true, |
| | | viewDisplay:true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入视频位置", |
| | | trigger: "blur" |
| | | }] |
| | | listType: 'picture-card', |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | propsHttp: { |
| | | res: "data", |
| | | url: "link", |
| | | } |
| | | }, |
| | | { |
| | | label: "照片", |
| | | prop: "feedbackPhoto", |
| | | { |
| | | label: '视频', |
| | | prop: 'videos', |
| | | dataType: 'array', |
| | | type: 'upload', |
| | | accept:"video/mp4", |
| | | hide:true, |
| | | viewDisplay:true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入照片位置", |
| | | trigger: "blur" |
| | | }] |
| | | editDisabled:true, |
| | | listType: 'picture', |
| | | span: 24, |
| | | action: "http://web.byisf.com:82/blade-jfpts/depl/put-depl", |
| | | propsHttp: { |
| | | res: "data", |
| | | url: "link", |
| | | } |
| | | }, |
| | | ] |
| | | }, |
| | | data: [] |
| | | }; |
| | | }, |
| | | watch:{ |
| | | handler(val) { |
| | | var that = this; |
| | | if (val != null && val !=""){ |
| | | getBaTree(val).then(res => { |
| | | if (res) { |
| | | that.form.sname = res.data.data.records[0].name; |
| | | } |
| | | }); |
| | | } |
| | | }, |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["permission"]), |
| | |
| | | return { |
| | | addBtn: this.vaildData(this.permission.feedback_add, false), |
| | | viewBtn: this.vaildData(this.permission.feedback_view, true), |
| | | delBtn: this.vaildData(this.permission.feedback_delete, false), |
| | | editBtn: this.vaildData(this.permission.feedback_edit, false) |
| | | delBtn: this.vaildData(this.permission.feedback_delete, true), |
| | | editBtn: this.vaildData(this.permission.feedback_edit, true) |
| | | }; |
| | | }, |
| | | ids() { |
| | |
| | | }, |
| | | methods: { |
| | | rowSave(row, done, loading) { |
| | | add(row).then(() => { |
| | | var data = { |
| | | status:1, |
| | | tpaddress:"", |
| | | spaddress:"", |
| | | sname: row.$snumber, |
| | | snumber: row.snumber, |
| | | stime:row.stime, |
| | | result:row.result, |
| | | place:row.place |
| | | } |
| | | if (row.images.length > 0) { |
| | | var imageArr = row.images; |
| | | imageArr.forEach( image =>{ |
| | | data.tpaddress += image + ","; |
| | | }) |
| | | data.tpaddress = data.tpaddress.substring(0,data.tpaddress.length-1); |
| | | } |
| | | if (row.videos.length > 0) { |
| | | //var videoArr = row.videos; |
| | | //videoArr.forEach( video =>{ |
| | | //data.spaddress += video + ","; |
| | | //}) |
| | | //data.spaddress = data.spaddress.substring(0,data.spaddress.length-1); |
| | | data.spaddress = row.videos; |
| | | } |
| | | adds(data).then(() => { |
| | | this.onLoad(this.page); |
| | | this.$message({ |
| | | type: "success", |
| | |
| | | }); |
| | | }, |
| | | rowUpdate(row, index, done, loading) { |
| | | update(row).then(() => { |
| | | var data = { |
| | | id:row.id, |
| | | status:1, |
| | | tpaddress:"", |
| | | spaddress:"", |
| | | sname: row.$snumber, |
| | | snumber: row.snumber, |
| | | stime:row.stime, |
| | | result:row.result, |
| | | place:row.place |
| | | } |
| | | if (row.images.length > 0) { |
| | | var imageArr = row.images; |
| | | imageArr.forEach( image =>{ |
| | | data.tpaddress += image + ","; |
| | | }) |
| | | data.tpaddress = data.tpaddress.substring(0,data.tpaddress.length-1); |
| | | } |
| | | if (row.videos.length > 0) { |
| | | //var videoArr = row.videos; |
| | | //videoArr.forEach( video =>{ |
| | | //data.spaddress += video + ","; |
| | | //}) |
| | | //data.spaddress = data.spaddress.substring(0,data.spaddress.length-1); |
| | | data.spaddress = row.videos; |
| | | } |
| | | updates(data).then(() => { |
| | | this.onLoad(this.page); |
| | | this.$message({ |
| | | type: "success", |
| | |
| | | }, |
| | | beforeOpen(done, type) { |
| | | if (["edit", "view"].includes(type)) { |
| | | getDetail(this.form.id).then(res => { |
| | | getDetails(this.form.id).then(res => { |
| | | this.form = res.data.data; |
| | | this.images = res.data.data.images; |
| | | this.videos = res.data.data.videos; |
| | | }); |
| | | } |
| | | done(); |
| | |
| | | const { dateTime } = this.query; |
| | | let values = { |
| | | ...params, |
| | | status:1 |
| | | }; |
| | | |
| | | if (dateTime) { |
| | | values = { |
| | | ...params, |
| | |
| | | var that = this; |
| | | |
| | | var userId = JSON.parse( |
| | | window.localStorage.getItem("警群联控后台管理系统-userInfo") |
| | | window.localStorage.getItem("群防群控后台管理系统-userInfo") |
| | | ).content.real_name; |
| | | |
| | | if (that.form.securityArr != null && that.form.securityArr != ""){ |
| | |
| | | row.securityArr = security.substring(0, security.length - 1); |
| | | } |
| | | var userId = JSON.parse( |
| | | window.localStorage.getItem("警群联控后台管理系统-userInfo") |
| | | window.localStorage.getItem("群防群控后台管理系统-userInfo") |
| | | ).content.real_name; |
| | | |
| | | if (row.securityArr == "" || row.securityArr == null) { |
| | |
| | | rowUpdate(row, index, done, loading) { |
| | | |
| | | var userId = JSON.parse( |
| | | window.localStorage.getItem("警群联控后台管理系统-userInfo") |
| | | window.localStorage.getItem("群防群控后台管理系统-userInfo") |
| | | ).content.real_name; |
| | | |
| | | if (typeof row.securityArr != "string") { |