lcw
This commit is contained in:
BIN
gsxt/gsxt.zip
BIN
gsxt/gsxt.zip
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
gsxt/static/css/chunk-291f8f27.1149905a.css
Normal file
1
gsxt/static/css/chunk-291f8f27.1149905a.css
Normal file
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
|||||||
.el-loading-mask{background:rgba(0,0,0,.5)!important}
|
|
||||||
File diff suppressed because one or more lines are too long
1
gsxt/static/css/chunk-37fa211e.d03c1221.css
Normal file
1
gsxt/static/css/chunk-37fa211e.d03c1221.css
Normal file
@ -0,0 +1 @@
|
|||||||
|
.archive-container[data-v-1ddf704a]{padding:15px;height:50vh;overflow:auto}.basic-info-card[data-v-1ddf704a]{background-color:#f0f9ff;border:1px solid #91d5ff;border-radius:8px;padding:25px;box-shadow:0 2px 12px rgba(0,0,0,.05)}.info-header[data-v-1ddf704a]{display:flex;align-items:flex-start;gap:40px;margin-bottom:0;padding-bottom:20px;border-bottom:1px solid #d6eaff;margin-bottom:20px}.avatar-section[data-v-1ddf704a]{display:flex;flex-direction:column;align-items:center;gap:10px}.main-avatar[data-v-1ddf704a]{width:120px;height:140px;border:3px solid #409eff;border-radius:4px;background-color:#fff}.sub-avatars[data-v-1ddf704a]{display:flex;gap:8px}.sub-avatar[data-v-1ddf704a]{width:50px;height:50px;border:2px solid #409eff;border-radius:4px;background-color:#fff}.basic-info[data-v-1ddf704a]{flex:1;min-width:0;display:flex;flex-direction:column;gap:12px}.info-row[data-v-1ddf704a]{flex-wrap:wrap}.info-item[data-v-1ddf704a],.info-row[data-v-1ddf704a]{display:flex;margin-bottom:0;align-items:center;min-height:32px}.info-item[data-v-1ddf704a]{margin-right:0;flex:0 0 calc(50% - 10px);max-width:calc(50% - 10px);padding-right:20px}.info-item.full-width[data-v-1ddf704a]{flex:0 0 100%;max-width:100%;padding-right:0}.info-label[data-v-1ddf704a]{color:#0060c8;font-weight:700;font-size:14px;margin-right:8px;white-space:nowrap;min-width:80px}.info-value[data-v-1ddf704a]{color:#000;font-size:14px;word-break:break-all;flex:1}.detail-info[data-v-1ddf704a]{background-color:#fff;border-radius:6px;padding:20px;border-left:4px solid #409eff;margin-top:0;display:flex;flex-direction:column;gap:12px}@media (max-width:768px){.info-header[data-v-1ddf704a]{flex-direction:column;align-items:center;text-align:left;gap:20px}.info-row[data-v-1ddf704a]{flex-direction:column;align-items:stretch;min-height:auto;margin-bottom:0}.info-item[data-v-1ddf704a]{margin-right:0;margin-bottom:0;flex:0 0 100%;max-width:100%;min-height:36px;display:flex;align-items:center;padding-right:0}.info-label[data-v-1ddf704a]{display:inline-block;min-width:80px}.info-value[data-v-1ddf704a]{flex:1}.info-item.full-width[data-v-1ddf704a]{flex:0 0 100%;max-width:100%}}.el-loading-mask{background:rgba(0,0,0,.5)!important}.searchBox{background-color:#fff;margin-bottom:10px}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
gsxt/static/css/chunk-740f8846.7be23560.css
Normal file
1
gsxt/static/css/chunk-740f8846.7be23560.css
Normal file
@ -0,0 +1 @@
|
|||||||
|
.archive-container[data-v-1ddf704a]{padding:15px;height:50vh;overflow:auto}.basic-info-card[data-v-1ddf704a]{background-color:#f0f9ff;border:1px solid #91d5ff;border-radius:8px;padding:25px;box-shadow:0 2px 12px rgba(0,0,0,.05)}.info-header[data-v-1ddf704a]{display:flex;align-items:flex-start;gap:40px;margin-bottom:0;padding-bottom:20px;border-bottom:1px solid #d6eaff;margin-bottom:20px}.avatar-section[data-v-1ddf704a]{display:flex;flex-direction:column;align-items:center;gap:10px}.main-avatar[data-v-1ddf704a]{width:120px;height:140px;border:3px solid #409eff;border-radius:4px;background-color:#fff}.sub-avatars[data-v-1ddf704a]{display:flex;gap:8px}.sub-avatar[data-v-1ddf704a]{width:50px;height:50px;border:2px solid #409eff;border-radius:4px;background-color:#fff}.basic-info[data-v-1ddf704a]{flex:1;min-width:0;display:flex;flex-direction:column;gap:12px}.info-row[data-v-1ddf704a]{flex-wrap:wrap}.info-item[data-v-1ddf704a],.info-row[data-v-1ddf704a]{display:flex;margin-bottom:0;align-items:center;min-height:32px}.info-item[data-v-1ddf704a]{margin-right:0;flex:0 0 calc(50% - 10px);max-width:calc(50% - 10px);padding-right:20px}.info-item.full-width[data-v-1ddf704a]{flex:0 0 100%;max-width:100%;padding-right:0}.info-label[data-v-1ddf704a]{color:#0060c8;font-weight:700;font-size:14px;margin-right:8px;white-space:nowrap;min-width:80px}.info-value[data-v-1ddf704a]{color:#000;font-size:14px;word-break:break-all;flex:1}.detail-info[data-v-1ddf704a]{background-color:#fff;border-radius:6px;padding:20px;border-left:4px solid #409eff;margin-top:0;display:flex;flex-direction:column;gap:12px}@media (max-width:768px){.info-header[data-v-1ddf704a]{flex-direction:column;align-items:center;text-align:left;gap:20px}.info-row[data-v-1ddf704a]{flex-direction:column;align-items:stretch;min-height:auto;margin-bottom:0}.info-item[data-v-1ddf704a]{margin-right:0;margin-bottom:0;flex:0 0 100%;max-width:100%;min-height:36px;display:flex;align-items:center;padding-right:0}.info-label[data-v-1ddf704a]{display:inline-block;min-width:80px}.info-value[data-v-1ddf704a]{flex:1}.info-item.full-width[data-v-1ddf704a]{flex:0 0 100%;max-width:100%}}.el-loading-mask{background:rgba(0,0,0,.5)!important}
|
||||||
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
|||||||
.el-loading-mask{background:rgba(0,0,0,.5)!important}.searchBox{background-color:#fff;margin-bottom:10px}
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 17 KiB |
1
gsxt/static/js/app.2857863c.js
Normal file
1
gsxt/static/js/app.2857863c.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-1867dc23.0bd57287.js
Normal file
1
gsxt/static/js/chunk-1867dc23.0bd57287.js
Normal file
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-23bcf605.32dca37f.js
Normal file
1
gsxt/static/js/chunk-23bcf605.32dca37f.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-24c24034.e4f54e07.js
Normal file
1
gsxt/static/js/chunk-24c24034.e4f54e07.js
Normal file
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-291f8f27.5bf372da.js
Normal file
1
gsxt/static/js/chunk-291f8f27.5bf372da.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-37fa211e.a80ab758.js
Normal file
1
gsxt/static/js/chunk-37fa211e.a80ab758.js
Normal file
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
|||||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-399c761f"],{2709:function(e,t,l){"use strict";l("681e")},"2e9d":function(e,t,l){"use strict";var o=l("7a23");const a={class:"title"},c={key:0,class:"flex"},n=["onClick"],r={key:1,class:"font"},i={class:"ml30"},b={class:"cnetr"},s={class:"right"};var p={__name:"PageTitle",props:{title:{type:String,default:""},marginBottom:{type:Number,default:0},active:{type:Number,default:0},backgroundColor:{type:String,default:"rgb(255, 255, 255, 0)"}},emits:["update:active","change"],setup(e,{emit:t}){const l=(e,l)=>{t("update:active",l),t("change",l)};return(t,p)=>(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:"pageTitle",style:Object(o["normalizeStyle"])(`margin-bottom: ${e.marginBottom}px;background-color: ${e.backgroundColor}`)},[Object(o["createElementVNode"])("div",a,[Array.isArray(e.title)?(Object(o["openBlock"])(),Object(o["createElementBlock"])("ul",c,[(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.title,(t,a)=>(Object(o["openBlock"])(),Object(o["createElementBlock"])("li",{class:Object(o["normalizeClass"])([a==e.active?"hedBtn":"","pointer ml10 mr10"]),onClick:e=>l(t,a),key:t},Object(o["toDisplayString"])(t),11,n))),128))])):(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",r,Object(o["toDisplayString"])(e.title),1)),Object(o["createElementVNode"])("div",i,[Object(o["renderSlot"])(t.$slots,"left")])]),Object(o["createElementVNode"])("div",b,[Object(o["renderSlot"])(t.$slots,"center")]),Object(o["createElementVNode"])("div",s,[Object(o["renderSlot"])(t.$slots,"default")])],4))}},d=(l("fd65"),l("d959")),u=l.n(d);const g=u()(p,[["__scopeId","data-v-1446cb3b"]]);t["a"]=g},"681e":function(e,t,l){},"71c4":function(e,t,l){"use strict";l.r(t);var o=l("7a23"),a=l("2e9d"),c=l("2d16"),n=l("ad28"),r=l("1090");l("c5cb");const i={class:"titleBox"},b={class:"tabBox"};var s={__name:"index",setup(e){const{proxy:t}=Object(o["getCurrentInstance"])(),l=Object(o["ref"])(),s=Object(o["ref"])([{label:"姓名",prop:"xm",placeholder:"请输入姓名",showType:"input"},{label:"身份证号码",prop:"sfzh",placeholder:"请输入身份证号码",showType:"input"},{label:"预警等级",prop:"yjdj",placeholder:"请选择预警等级",showType:"select",options:[{label:"一级预警",value:"1"},{label:"二级预警",value:"2"},{label:"三级预警",value:"3"},{label:"四级预警",value:"4"}]}]),p=Object(o["ref"])({}),d=Object(o["reactive"])({tableData:[],keyCount:0,tableConfiger:{rowHieght:61,showSelectType:"checkBox",loading:!1,haveControls:!1},total:0,pageConfiger:{pageSize:20,pageCurrent:1},controlsWidth:160,tableColumn:[{label:"姓名",prop:"xm"},{label:"身份证号",prop:"sfzh"},{label:"电话",prop:"dh"},{label:"组合类型",prop:"zhlx"},{label:"预警等级",prop:"yjdj"},{label:"预警原因",prop:"yjyy",showOverflowTooltip:!0},{label:"预警时间",prop:"yjsj"},{label:"处理状态",prop:"clzt"}]});Object(o["onMounted"])(()=>{O(),f()});const u=e=>{p.value={...e},d.pageConfiger.pageCurrent=1,f()},g=e=>{d.pageConfiger.pageCurrent=e,f()},j=e=>{d.pageConfiger.pageSize=e,f()},f=()=>{},O=()=>{d.tableHeight=window.innerHeight-l.value.offsetHeight-250,window.onresize=function(){O()}};return(e,t)=>(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",null,[Object(o["createElementVNode"])("div",i,[Object(o["createVNode"])(a["a"],{title:"组合预警"})]),Object(o["createElementVNode"])("div",{ref_key:"searchBox",ref:l},[(Object(o["openBlock"])(),Object(o["createBlock"])(c["a"],{searchArr:s.value,onSubmit:u,key:d.keyCount},null,8,["searchArr"]))],512),Object(o["createElementVNode"])("div",b,[(Object(o["openBlock"])(),Object(o["createBlock"])(n["a"],{tableData:d.tableData,tableColumn:d.tableColumn,tableHeight:d.tableHeight,key:d.keyCount,tableConfiger:d.tableConfiger,controlsWidth:d.controlsWidth},null,8,["tableData","tableColumn","tableHeight","tableConfiger","controlsWidth"])),Object(o["createVNode"])(r["a"],{onChangeNo:g,onChangeSize:j,tableHeight:d.tableHeight,pageConfiger:{...d.pageConfiger,total:d.total}},null,8,["tableHeight","pageConfiger"])])]))}};l("2709");const p=s;t["default"]=p},b1cd:function(e,t,l){},fd65:function(e,t,l){"use strict";l("b1cd")}}]);
|
|
||||||
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-5c49de85.2774d162.js
Normal file
1
gsxt/static/js/chunk-5c49de85.2774d162.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-6a98d5e5.e586ae4c.js
Normal file
1
gsxt/static/js/chunk-6a98d5e5.e586ae4c.js
Normal file
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-740f8846.62e2d3d9.js
Normal file
1
gsxt/static/js/chunk-740f8846.62e2d3d9.js
Normal file
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-96fe1ea0.9a21616e.js
Normal file
1
gsxt/static/js/chunk-96fe1ea0.9a21616e.js
Normal file
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
|||||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-9af6d4f2"],{"2e9d":function(e,t,l){"use strict";var o=l("7a23");const a={class:"title"},c={key:0,class:"flex"},n=["onClick"],r={key:1,class:"font"},i={class:"ml30"},b={class:"cnetr"},s={class:"right"};var p={__name:"PageTitle",props:{title:{type:String,default:""},marginBottom:{type:Number,default:0},active:{type:Number,default:0},backgroundColor:{type:String,default:"rgb(255, 255, 255, 0)"}},emits:["update:active","change"],setup(e,{emit:t}){const l=(e,l)=>{t("update:active",l),t("change",l)};return(t,p)=>(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:"pageTitle",style:Object(o["normalizeStyle"])(`margin-bottom: ${e.marginBottom}px;background-color: ${e.backgroundColor}`)},[Object(o["createElementVNode"])("div",a,[Array.isArray(e.title)?(Object(o["openBlock"])(),Object(o["createElementBlock"])("ul",c,[(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.title,(t,a)=>(Object(o["openBlock"])(),Object(o["createElementBlock"])("li",{class:Object(o["normalizeClass"])([a==e.active?"hedBtn":"","pointer ml10 mr10"]),onClick:e=>l(t,a),key:t},Object(o["toDisplayString"])(t),11,n))),128))])):(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",r,Object(o["toDisplayString"])(e.title),1)),Object(o["createElementVNode"])("div",i,[Object(o["renderSlot"])(t.$slots,"left")])]),Object(o["createElementVNode"])("div",b,[Object(o["renderSlot"])(t.$slots,"center")]),Object(o["createElementVNode"])("div",s,[Object(o["renderSlot"])(t.$slots,"default")])],4))}},d=(l("fd65"),l("d959")),u=l.n(d);const g=u()(p,[["__scopeId","data-v-1446cb3b"]]);t["a"]=g},"3f83":function(e,t,l){"use strict";l.r(t);var o=l("7a23"),a=l("2e9d"),c=l("2d16"),n=l("ad28"),r=l("1090");l("c5cb");const i={class:"titleBox"},b={class:"tabBox"},s=Object(o["createTextVNode"])("下发指令"),p=Object(o["createTextVNode"])("查看反馈");var d={__name:"index",setup(e){const{proxy:t}=Object(o["getCurrentInstance"])(),l=Object(o["ref"])(),d=Object(o["ref"])([{label:"姓名",prop:"xm",placeholder:"请输入姓名",showType:"input"},{label:"身份证号码",prop:"sfzh",placeholder:"请输入身份证号码",showType:"input"},{label:"身份类型",prop:"sflx",placeholder:"请选择身份类型",showType:"select",options:[{label:"重点人员",value:"1"},{label:"在逃人员",value:"2"},{label:"涉毒人员",value:"3"},{label:"涉恐人员",value:"4"}]}]),u=Object(o["ref"])({}),g=Object(o["reactive"])({tableData:[],keyCount:0,tableConfiger:{rowHieght:61,showSelectType:"checkBox",loading:!1},total:0,pageConfiger:{pageSize:20,pageCurrent:1},controlsWidth:160,tableColumn:[{label:"姓名",prop:"xm"},{label:"身份证号",prop:"sfzh"},{label:"电话",prop:"dh"},{label:"身份类型",prop:"sflx"},{label:"身份等级",prop:"sfdj"},{label:"预警原因",prop:"yjyy",showOverflowTooltip:!0},{label:"预警时间",prop:"yjsj"},{label:"处理状态",prop:"clzt"}]});Object(o["onMounted"])(()=>{m(),h()});const j=e=>{u.value={...e},g.pageConfiger.pageCurrent=1,h()},f=e=>{g.pageConfiger.pageCurrent=e,h()},O=e=>{g.pageConfiger.pageSize=e,h()},h=()=>{},m=()=>{g.tableHeight=window.innerHeight-l.value.offsetHeight-250,window.onresize=function(){m()}};return(e,t)=>{const u=Object(o["resolveComponent"])("el-link");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",null,[Object(o["createElementVNode"])("div",i,[Object(o["createVNode"])(a["a"],{title:"身份预警"})]),Object(o["createElementVNode"])("div",{ref_key:"searchBox",ref:l},[(Object(o["openBlock"])(),Object(o["createBlock"])(c["a"],{searchArr:d.value,onSubmit:j,key:g.keyCount},null,8,["searchArr"]))],512),Object(o["createElementVNode"])("div",b,[(Object(o["openBlock"])(),Object(o["createBlock"])(n["a"],{tableData:g.tableData,tableColumn:g.tableColumn,tableHeight:g.tableHeight,key:g.keyCount,tableConfiger:g.tableConfiger,controlsWidth:g.controlsWidth},{controls:Object(o["withCtx"])(({row:e})=>[Object(o["createVNode"])(u,{type:"primary"},{default:Object(o["withCtx"])(()=>[s]),_:1}),Object(o["createVNode"])(u,{type:"success"},{default:Object(o["withCtx"])(()=>[p]),_:1})]),_:1},8,["tableData","tableColumn","tableHeight","tableConfiger","controlsWidth"])),Object(o["createVNode"])(r["a"],{onChangeNo:f,onChangeSize:O,tableHeight:g.tableHeight,pageConfiger:{...g.pageConfiger,total:g.total}},null,8,["tableHeight","pageConfiger"])])])}}};l("54ef");const u=d;t["default"]=u},"54ef":function(e,t,l){"use strict";l("7963")},7963:function(e,t,l){},b1cd:function(e,t,l){},fd65:function(e,t,l){"use strict";l("b1cd")}}]);
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-fc6dbb50.40497e3f.js
Normal file
1
gsxt/static/js/chunk-fc6dbb50.40497e3f.js
Normal file
File diff suppressed because one or more lines are too long
BIN
gsxt/static/media/yjsy.12395e7c.mp3
Normal file
BIN
gsxt/static/media/yjsy.12395e7c.mp3
Normal file
Binary file not shown.
@ -19,7 +19,7 @@
|
|||||||
<title>
|
<title>
|
||||||
<%= htmlWebpackPlugin.options.title %>
|
<%= htmlWebpackPlugin.options.title %>
|
||||||
</title>
|
</title>
|
||||||
<script src="./littleLemon.js"></script>
|
<script src="./fusion/littleLemon.js"></script>
|
||||||
<!-- 地图 -->
|
<!-- 地图 -->
|
||||||
<script type="text/javascript" src="./pgis/eliMapboxgl.min.js"></script>
|
<script type="text/javascript" src="./pgis/eliMapboxgl.min.js"></script>
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import request from "@/utils/request";
|
import request from "@/utils/request";
|
||||||
const api = "/api";
|
const api = "/qxda/api";
|
||||||
export const ryxxJbxxSave = (params) => {
|
export const ryxxJbxxSave = (params) => {
|
||||||
return request({
|
return request({
|
||||||
headers: {
|
headers: {
|
||||||
|
|||||||
@ -62,3 +62,27 @@ export const tbYjxxGetBmtj = (params) => {
|
|||||||
params
|
params
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 组合预警
|
||||||
|
export const tbYjxxGetZbtj = (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + `/yjzxZhyj/getPageList`,
|
||||||
|
method: "get",
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 组合标签
|
||||||
|
export const tbGsxtBqzhSelectList = (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + `/tbGsxtBqzh/selectList`,
|
||||||
|
method: "get",
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 身份标签
|
||||||
|
export const yjzxSfyjSelectList = (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + `/yjzxSfyj/getPageList`,
|
||||||
|
method: "get",
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
BIN
src/assets/images/yjsy.mp3
Normal file
BIN
src/assets/images/yjsy.mp3
Normal file
Binary file not shown.
@ -33,7 +33,7 @@ const initChart = () => {
|
|||||||
legend: {
|
legend: {
|
||||||
orient: 'vertical',
|
orient: 'vertical',
|
||||||
right: '0%',
|
right: '0%',
|
||||||
top: 'center',
|
top: '1%',
|
||||||
textStyle: {
|
textStyle: {
|
||||||
color: '#fff'
|
color: '#fff'
|
||||||
},
|
},
|
||||||
|
|||||||
@ -134,6 +134,9 @@
|
|||||||
/>
|
/>
|
||||||
<div v-else-if="item.showType === 'defaultSlot'">
|
<div v-else-if="item.showType === 'defaultSlot'">
|
||||||
<slot name="defaultSlot"></slot>
|
<slot name="defaultSlot"></slot>
|
||||||
|
</div>
|
||||||
|
<div v-else-if="item.showType === 'nameSlot'">
|
||||||
|
<slot name="nameSlot"></slot>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog class="dialog-container"
|
<el-dialog class="dialog-container"
|
||||||
|
:draggable="true"
|
||||||
:model-value="modelValue"
|
:model-value="modelValue"
|
||||||
:title="title"
|
:title="title"
|
||||||
:before-close="close" :destroy-on-close="true"
|
:before-close="close" :destroy-on-close="true"
|
||||||
|
|||||||
180
src/utils/audioPlayer.js
Normal file
180
src/utils/audioPlayer.js
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
// 音频播放器工具类
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 音频播放器类
|
||||||
|
*/
|
||||||
|
class AudioPlayerClass {
|
||||||
|
constructor() {
|
||||||
|
this.audioPlayer = null;
|
||||||
|
this.isLoaded = false;
|
||||||
|
this.isPlaying = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化音频播放器
|
||||||
|
* @param {string} audioPath - 音频文件路径
|
||||||
|
* @param {boolean} loop - 是否循环播放
|
||||||
|
* @returns {Promise} - 初始化结果
|
||||||
|
*/
|
||||||
|
init(audioPath, loop = true) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
try {
|
||||||
|
// 创建Audio对象并加载音频文件
|
||||||
|
this.audioPlayer = new Audio(audioPath);
|
||||||
|
this.audioPlayer.loop = loop; // 设置循环播放
|
||||||
|
|
||||||
|
// 监听音频加载完成事件
|
||||||
|
this.audioPlayer.addEventListener('canplaythrough', () => {
|
||||||
|
console.log('音频加载完成,可以播放');
|
||||||
|
this.isLoaded = true;
|
||||||
|
resolve(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 监听错误事件
|
||||||
|
this.audioPlayer.addEventListener('error', (error) => {
|
||||||
|
console.error('音频加载错误:', error);
|
||||||
|
console.error('错误代码:', error.code);
|
||||||
|
console.error('音频网络状态:', this.audioPlayer.networkState);
|
||||||
|
console.error('音频就绪状态:', this.audioPlayer.readyState);
|
||||||
|
reject(error);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 预加载音频
|
||||||
|
console.log('开始预加载音频...');
|
||||||
|
this.audioPlayer.load();
|
||||||
|
console.log('音频预加载请求已发送');
|
||||||
|
} catch (error) {
|
||||||
|
console.error('初始化音频播放器失败:', error);
|
||||||
|
console.error('错误详情:', error.stack);
|
||||||
|
reject(error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 播放音频
|
||||||
|
* @param {boolean} autoUnmute - 是否自动取消静音
|
||||||
|
* @returns {Promise} - 播放结果
|
||||||
|
*/
|
||||||
|
play(autoUnmute = true) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (!this.audioPlayer) {
|
||||||
|
reject(new Error('音频播放器未初始化'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.isLoaded) {
|
||||||
|
reject(new Error('音频未加载完成'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 严格模式下的播放策略:先设置静音,再取消静音,最后播放
|
||||||
|
if (autoUnmute) {
|
||||||
|
this.audioPlayer.muted = true;
|
||||||
|
|
||||||
|
// 使用setTimeout确保时序正确
|
||||||
|
setTimeout(() => {
|
||||||
|
this.audioPlayer.muted = false;
|
||||||
|
this.audioPlayer.play()
|
||||||
|
.then(() => {
|
||||||
|
this.isPlaying = true;
|
||||||
|
console.log('音频播放成功');
|
||||||
|
resolve(true);
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
if (error.name === 'NotAllowedError') {
|
||||||
|
console.error('播放被浏览器自动播放策略阻止,需要用户交互后才能播放');
|
||||||
|
}
|
||||||
|
reject(error);
|
||||||
|
});
|
||||||
|
}, 0);
|
||||||
|
} else {
|
||||||
|
this.audioPlayer.play()
|
||||||
|
.then(() => {
|
||||||
|
this.isPlaying = true;
|
||||||
|
console.log('音频播放成功');
|
||||||
|
resolve(true);
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
if (error.name === 'NotAllowedError') {
|
||||||
|
console.error('播放被浏览器自动播放策略阻止,需要用户交互后才能播放');
|
||||||
|
}
|
||||||
|
reject(error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('音频播放失败:', error);
|
||||||
|
reject(error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 暂停音频
|
||||||
|
*/
|
||||||
|
pause() {
|
||||||
|
if (this.audioPlayer) {
|
||||||
|
this.audioPlayer.pause();
|
||||||
|
this.isPlaying = false;
|
||||||
|
console.log('音频已暂停');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置音量
|
||||||
|
* @param {number} volume - 音量值(0-1)
|
||||||
|
*/
|
||||||
|
setVolume(volume) {
|
||||||
|
if (this.audioPlayer) {
|
||||||
|
this.audioPlayer.volume = Math.max(0, Math.min(1, volume));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置是否静音
|
||||||
|
* @param {boolean} muted - 是否静音
|
||||||
|
*/
|
||||||
|
setMuted(muted) {
|
||||||
|
if (this.audioPlayer) {
|
||||||
|
this.audioPlayer.muted = muted;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取音频播放状态
|
||||||
|
* @returns {boolean} - 是否正在播放
|
||||||
|
*/
|
||||||
|
getIsPlaying() {
|
||||||
|
return this.isPlaying;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取音频加载状态
|
||||||
|
* @returns {boolean} - 是否已加载完成
|
||||||
|
*/
|
||||||
|
getIsLoaded() {
|
||||||
|
return this.isLoaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 销毁音频播放器
|
||||||
|
*/
|
||||||
|
destroy() {
|
||||||
|
if (this.audioPlayer) {
|
||||||
|
this.audioPlayer.pause();
|
||||||
|
this.audioPlayer.remove();
|
||||||
|
this.audioPlayer = null;
|
||||||
|
this.isLoaded = false;
|
||||||
|
this.isPlaying = false;
|
||||||
|
console.log('音频播放器已销毁');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出单例实例
|
||||||
|
const audioPlayerInstance = new AudioPlayerClass();
|
||||||
|
export default audioPlayerInstance;
|
||||||
|
|
||||||
|
// 导出类(可选,用于创建多个实例)
|
||||||
|
export { AudioPlayerClass };
|
||||||
@ -1,41 +1,131 @@
|
|||||||
const url = "ws://80.155.0.82:8006/mosty-api/mosty-websocket/socket/"; //线上
|
const url = "ws://89.40.9.89:2109/mosty-api/mosty-websocket/socket/"; //线上
|
||||||
import {
|
import {
|
||||||
getItem
|
getItem
|
||||||
} from "@/utils/storage";
|
} from "@/utils/storage";
|
||||||
import {
|
import emitter from "@/utils/eventBus.js"; // 导入事件总线
|
||||||
getUserInfoToId
|
|
||||||
} from "@/api/user-manage";
|
|
||||||
class WebSoketClass {
|
class WebSoketClass {
|
||||||
constructor(props) {}
|
constructor(props) {
|
||||||
ws = null;
|
this.ws = null;
|
||||||
static getInstance() {
|
this.state = null;
|
||||||
if (!this.ws) this.ws = new WebSoketClass();
|
this.reconnectCount = 0;
|
||||||
return this.ws;
|
this.maxReconnectCount = 10;
|
||||||
|
this.reconnectInterval = 6000;
|
||||||
|
this.uuid = null; // 保存UUID,用于重连时复用
|
||||||
|
this.sfzh = null; // 保存身份证号,用于重连时复用
|
||||||
|
this.fullUrl = null; // 保存完整连接URL,用于重连时复用
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static getInstance() {
|
||||||
|
if (!this.instance) this.instance = new WebSoketClass();
|
||||||
|
return this.instance;
|
||||||
|
}
|
||||||
|
|
||||||
//关闭连接
|
//关闭连接
|
||||||
static close() {
|
static close() {
|
||||||
this.ws.ws.close();
|
if (this.instance) {
|
||||||
|
this.instance.closeConnection();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 关闭连接的实例方法
|
||||||
|
closeConnection() {
|
||||||
|
if (this.ws) {
|
||||||
|
this.ws.close();
|
||||||
|
this.ws = null;
|
||||||
|
}
|
||||||
|
if (this.state) {
|
||||||
|
clearInterval(this.state);
|
||||||
|
this.state = null;
|
||||||
|
}
|
||||||
|
this.reconnectCount = 0;
|
||||||
|
// 重置UUID,下次连接时生成新的
|
||||||
|
this.uuid = null;
|
||||||
|
this.fullUrl = null;
|
||||||
|
}
|
||||||
|
|
||||||
// 创建连接
|
// 创建连接
|
||||||
connect(fun) {
|
connect(fun) {
|
||||||
let uuid = this.getUUid()
|
// 首次连接时获取并保存连接参数
|
||||||
let id = getItem("USERID");
|
if (!this.sfzh) {
|
||||||
getUserInfoToId(id).then((res) => {
|
this.sfzh = getItem("idEntityCard");
|
||||||
let sfzh = res.idEntityCard
|
}
|
||||||
this.ws = new WebSocket(url + sfzh + '/' + uuid);
|
// 首次连接时生成并保存UUID
|
||||||
this.ws.onopen = (e) => { fun(true);};
|
if (!this.uuid) {
|
||||||
});
|
this.uuid = this.getUUid();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.sfzh) {
|
||||||
|
try {
|
||||||
|
// 如果还没有完整URL或需要更新,重新构建
|
||||||
|
if (!this.fullUrl || this.maxReconnectCount == 10) {
|
||||||
|
this.fullUrl = url + this.sfzh + '/' + this.uuid;
|
||||||
|
this.reconnectCount = 0;
|
||||||
|
}
|
||||||
|
console.log('尝试连接WebSocket:', this.fullUrl);
|
||||||
|
this.ws = new WebSocket(this.fullUrl);
|
||||||
|
console.log(this.ws);
|
||||||
|
|
||||||
|
this.ws.onopen = (e) => {
|
||||||
|
console.log('WebSocket连接已打开');
|
||||||
|
// 只有在非重连状态下才重置重连计数
|
||||||
|
// 避免短暂连接成功后又关闭导致计数重置
|
||||||
|
if (this.reconnectCount === 0) {
|
||||||
|
console.log('首次连接成功');
|
||||||
|
} else {
|
||||||
|
console.log('重连成功');
|
||||||
|
// 重连成功后重置计数
|
||||||
|
// this.reconnectCount = 0;
|
||||||
|
}
|
||||||
|
this.heartCheck();
|
||||||
|
this.getMessage();
|
||||||
|
if (fun) fun(true);
|
||||||
|
};
|
||||||
|
this.ws.onclose = (e) => {
|
||||||
|
console.log(e);
|
||||||
|
|
||||||
|
console.log('WebSocket连接已关闭,关闭码:', e.code, '原因:', e.reason);
|
||||||
|
// 如果是正常关闭(1000)或手动关闭(1001),不进行重连
|
||||||
|
if (e.code !== 1000 && e.code !== 1001) {
|
||||||
|
this.handleReconnect(fun);
|
||||||
|
} else {
|
||||||
|
console.log('WebSocket正常关闭,不进行重连');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
this.ws.onerror = (e) => {
|
||||||
|
console.error('WebSocket连接错误:', e);
|
||||||
|
this.handleReconnect(fun);
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
console.error('创建WebSocket连接失败:', error);
|
||||||
|
this.handleReconnect(fun);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
console.error('获取用户身份证号失败,无法建立WebSocket连接');
|
||||||
|
if (fun) fun(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 心跳机制
|
// 心跳机制
|
||||||
heartCheck() {
|
heartCheck() {
|
||||||
const _that = this;
|
if (this.state) {
|
||||||
|
clearInterval(this.state);
|
||||||
|
}
|
||||||
|
|
||||||
this.state = setInterval(() => {
|
this.state = setInterval(() => {
|
||||||
if (this.ws.readyState === 1) {
|
try {
|
||||||
this.ws.send("/heart");
|
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
|
||||||
} else {
|
this.ws.send("/heart");
|
||||||
this.closeHandle(); //重新连接
|
} else {
|
||||||
|
console.log('WebSocket未连接,停止心跳');
|
||||||
|
clearInterval(this.state);
|
||||||
|
this.state = null;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('心跳发送失败:', error);
|
||||||
|
clearInterval(this.state);
|
||||||
|
this.state = null;
|
||||||
}
|
}
|
||||||
}, 6e3);
|
}, 6000);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取uuid
|
// 获取uuid
|
||||||
@ -52,21 +142,54 @@ class WebSoketClass {
|
|||||||
return uuid
|
return uuid
|
||||||
}
|
}
|
||||||
|
|
||||||
closeHandle() {
|
// 处理重连
|
||||||
if (this.state) {
|
handleReconnect(fun) {
|
||||||
clearInterval(this.state);
|
if (this.reconnectCount >= this.maxReconnectCount) {
|
||||||
this.connect();
|
console.log('达到最大重连次数,停止重连');
|
||||||
} else {
|
if (fun) fun(false);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
this.reconnectCount++;
|
||||||
|
console.log(`尝试第${this.reconnectCount}次重连...`);
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
this.connect(fun);
|
||||||
|
}, this.reconnectInterval);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 接收发送消息
|
// 接收发送消息
|
||||||
getMessage() {
|
getMessage() {
|
||||||
this.ws.onmessage = (e) => {
|
this.ws.onmessage = (e) => {
|
||||||
if (e.data) {
|
console.log(e);
|
||||||
let newsDate = JSON.parse(e.data);
|
|
||||||
this.newVal = newsDate;
|
try {
|
||||||
//接收的数据
|
if (e.data) {
|
||||||
|
let newsDate = JSON.parse(e.data);
|
||||||
|
// 根据消息类型发射相应的事件
|
||||||
|
if (newsDate.type === '01') {
|
||||||
|
// 触发音频播放
|
||||||
|
console.log('触发音频播放');
|
||||||
|
emitter.emit('openYp', newsDate.data); // 传递消息数据
|
||||||
|
}
|
||||||
|
// else if (newsDate.type === 'ALARM_STOP' || newsDate.type === 'warning_stop') {
|
||||||
|
// // 触发音频停止
|
||||||
|
// emitter.emit('closeYp');
|
||||||
|
// } else if (newsDate.type === 'POSITION_UPDATE') {
|
||||||
|
// // 位置更新事件
|
||||||
|
// emitter.emit('positionUpdate', newsDate.data);
|
||||||
|
// } else if (newsDate.type === 'STATUS_UPDATE') {
|
||||||
|
// // 状态更新事件
|
||||||
|
// emitter.emit('statusUpdate', newsDate.data);
|
||||||
|
// }
|
||||||
|
// // 通用消息事件
|
||||||
|
// emitter.emit('webSocketMessage', newsDate);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('处理WebSocket消息失败:', error);
|
||||||
|
// 如果是心跳响应,不报错
|
||||||
|
if (e.data !== '/heart') {
|
||||||
|
console.error('消息内容:', e.data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -111,6 +111,7 @@ import ExportFile from './components/exportFile.vue'
|
|||||||
import CheckProcess from '../components/checkProcess.vue'
|
import CheckProcess from '../components/checkProcess.vue'
|
||||||
import { ElMessageBox } from 'element-plus'
|
import { ElMessageBox } from 'element-plus'
|
||||||
import { getItem } from '@//utils/storage.js'
|
import { getItem } from '@//utils/storage.js'
|
||||||
|
import {tbYjxxGetZbtj} from '@/api/yj.js'
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const { D_GS_XS_LY, D_BZ_SSZT, D_BZ_SF, D_GS_XS_LX, D_BZ_BQJB,
|
const { D_GS_XS_LY, D_BZ_SSZT, D_BZ_SF, D_GS_XS_LX, D_BZ_BQJB,
|
||||||
D_GS_XS_QTLX, D_GS_ZDQT_LB,
|
D_GS_XS_QTLX, D_GS_ZDQT_LB,
|
||||||
|
|||||||
@ -46,7 +46,7 @@ import Footer from './footer.vue'
|
|||||||
// import useCallModule from '../sdk/call.js'
|
// import useCallModule from '../sdk/call.js'
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
// const Call = useCallModule()
|
// const Call = useCallModule()
|
||||||
lemon.login.login({
|
window.lemon.login.login({
|
||||||
username: "linzhigongan1",
|
username: "linzhigongan1",
|
||||||
password: "linzhigongan1",
|
password: "linzhigongan1",
|
||||||
realm: "puc.com",
|
realm: "puc.com",
|
||||||
|
|||||||
@ -14,20 +14,24 @@
|
|||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="tabBox">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger">
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
<template #xwcs="{ row }">
|
<template #xwcs="{ row }">
|
||||||
<span style="color: #0072ff;" @click="handleClick(row)">{{ row.xwcs }}</span>
|
<span style="color: #0072ff;" @click="handleClick(row)">{{ row.xwcs }}</span>
|
||||||
</template>
|
</template>
|
||||||
<template #bqYs="{ row }">
|
<template #bqYs="{ row }">
|
||||||
<!-- <div :style="{
|
<DictTag :value="row.bqys" :tag="false" :color="bqYs(row.bqys)" :options="D_GS_SSYJ" />
|
||||||
backgroundColor: bqYs(row.bqys)
|
</template>
|
||||||
}"></div> -->
|
<template #czzt="{ row }">
|
||||||
|
<DictTag :value="row.czzt" :options="D_GSXT_YJXX_CZZT" />
|
||||||
<DictTag :value="row.bqys" :tag="false" :color="bqYs(row.bqys)" :options="D_GS_SSYJ" />
|
|
||||||
</template>
|
</template>
|
||||||
<template #controls="{ row }">
|
<template #controls="{ row }">
|
||||||
<el-link type="primary">下发指令</el-link>
|
<el-link type="warning" @click="pushAssess(row)">全息档案</el-link>
|
||||||
<el-link type="success">查看反馈</el-link>
|
<el-link type="primary" @click="showDetail(row)">转合成</el-link>
|
||||||
|
<el-link type="danger" @click="delDictItem(row.id)">转会商</el-link>
|
||||||
|
<el-link type="success" @click="handleQsFk(row, '签收')" v-if="row.czzt == '01'">签收</el-link>
|
||||||
|
<el-link type="success" @click="handleQsFk(row, '反馈')" v-else-if="row.czzt == '02'">反馈</el-link>
|
||||||
|
<el-link type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</el-link>
|
||||||
|
<el-link type="primary" @click="delDictItem(row.id)">详情</el-link>
|
||||||
</template>
|
</template>
|
||||||
</MyTable>
|
</MyTable>
|
||||||
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
||||||
@ -38,6 +42,12 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 详情 -->
|
<!-- 详情 -->
|
||||||
<Detail ref="detailRef"></Detail>
|
<Detail ref="detailRef"></Detail>
|
||||||
|
<HolographicArchive v-model="assessShow" :dataList="dataList" />
|
||||||
|
<FkDialog @change="getList" lx="02" />
|
||||||
|
<Information v-model="showDialog" title="发送指令" @submit='submit' @close='closeFszl'>
|
||||||
|
<SemdFqzl ref="semdFqzlRef" :itemData="itemData" @handleClose="handleClose" identification="yj"
|
||||||
|
:tacitly="tacitly" />
|
||||||
|
</Information>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
@ -47,11 +57,16 @@ import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
|||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import { qcckGet } from "@/api/qcckApi.js";
|
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||||
|
import HolographicArchive from '@/views/home/components/holographicArchive.vue'
|
||||||
import { tbGsxtBqglSelectList } from '@/api/zdr'
|
import { tbGsxtBqglSelectList } from '@/api/zdr'
|
||||||
|
import Information from "@/views/home/model/information.vue";
|
||||||
|
import SemdFqzl from '@/components/instructionHasBeen/sendFqzl.vue'
|
||||||
|
import emitter from "@/utils/eventBus.js";
|
||||||
|
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
|
||||||
import { reactive, ref, onMounted, getCurrentInstance, computed, watch } from "vue";
|
import { reactive, ref, onMounted, getCurrentInstance, computed, watch } from "vue";
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const { D_GS_SSYJ } = proxy.$dict("D_GS_SSYJ"); //获取字典数据
|
const { D_GS_SSYJ ,D_GSXT_YJXX_CZZT} = proxy.$dict("D_GS_SSYJ","D_GSXT_YJXX_CZZT"); //获取字典数据
|
||||||
const searchBox = ref(); //搜索框
|
const searchBox = ref(); //搜索框
|
||||||
const bqLbData = ref({
|
const bqLbData = ref({
|
||||||
bqXl: []
|
bqXl: []
|
||||||
@ -77,23 +92,26 @@ const pageData = reactive({
|
|||||||
rowHieght: 61,
|
rowHieght: 61,
|
||||||
showSelectType: "null",
|
showSelectType: "null",
|
||||||
loading: false,
|
loading: false,
|
||||||
haveControls: false,
|
haveControls: true
|
||||||
},
|
},
|
||||||
total: 0,
|
total: 0,
|
||||||
pageConfiger: {
|
pageConfiger: {
|
||||||
pageSize: 20,
|
pageSize: 20,
|
||||||
pageCurrent: 1
|
pageCurrent: 1
|
||||||
}, //分页
|
}, //分页
|
||||||
|
controlsWidth: 300, //操作栏宽度
|
||||||
tableColumn: [
|
tableColumn: [
|
||||||
{ label: "姓名", prop: "xm" },
|
{ label: "姓名", prop: "xm" },
|
||||||
{ label: "身份证号", prop: "sfzh" },
|
{ label: "身份证号", prop: "sfzh", width: 200 },
|
||||||
{ label: "电话", prop: "dh" },
|
{ label: "电话", prop: "dh", width: 150 },
|
||||||
{ label: "行为大类", prop: "xldlmc" },
|
{ label: "行为大类", prop: "xldlmc" },
|
||||||
{ label: "行为子类", prop: "xwzlmc", showOverflowTooltip: true },
|
{ label: "行为子类", prop: "xwzlmc", showOverflowTooltip: true },
|
||||||
{ label: "行为描述", prop: "xwms", showOverflowTooltip: true },
|
{ label: "行为描述", prop: "xwms", showOverflowTooltip: true },
|
||||||
{ label: "行为次数", prop: "xwcs", showSolt: true },
|
{ label: "行为次数", prop: "xwcs", showSolt: true },
|
||||||
{ label: "行为颜色", prop: "bqYs", showSolt: true },
|
{ label: "行为颜色", prop: "bqYs", showSolt: true },
|
||||||
{ label: "行为分值", prop: "xwfz", },
|
{ label: "行为分值", prop: "xwfz", },
|
||||||
|
{ label: "处置状态", prop: "czzt", showSolt: true },
|
||||||
|
{ label: "所属县局", prop: "ssbm" },
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -146,7 +164,7 @@ const getList = () => {
|
|||||||
pageData.total = res.total || 0;
|
pageData.total = res.total || 0;
|
||||||
pageData.tableConfiger.loading = false;
|
pageData.tableConfiger.loading = false;
|
||||||
pageData.tableData = res.records.map(item => {
|
pageData.tableData = res.records.map(item => {
|
||||||
return {...item,bqys: '01'}
|
return { ...item, bqys: '01' }
|
||||||
}) || [];
|
}) || [];
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
pageData.tableConfiger.loading = false;
|
pageData.tableConfiger.loading = false;
|
||||||
@ -179,6 +197,60 @@ const bqYs = (val) => {
|
|||||||
return '#0000ff'
|
return '#0000ff'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 全息档案
|
||||||
|
const assessShow = ref(false)
|
||||||
|
const dataList = ref()
|
||||||
|
const pushAssess = (val) => {
|
||||||
|
assessShow.value = true;
|
||||||
|
dataList.value = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 发送指令
|
||||||
|
const showDialog = ref(false)
|
||||||
|
const itemData = ref()
|
||||||
|
const showDetail = (item) => {
|
||||||
|
showDialog.value = true;
|
||||||
|
itemData.value = item
|
||||||
|
}
|
||||||
|
const handleClose = () => {
|
||||||
|
showDialog.value = false;
|
||||||
|
}
|
||||||
|
const semdFqzlRef = ref()
|
||||||
|
const tacitly = {
|
||||||
|
title: 'yjbt',
|
||||||
|
instructionContent: 'yjnr'
|
||||||
|
}
|
||||||
|
const submit = () => {
|
||||||
|
semdFqzlRef.value.getsendFqzl()
|
||||||
|
}
|
||||||
|
|
||||||
|
const closeFszl = () => {
|
||||||
|
semdFqzlRef.value.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理签收
|
||||||
|
const handleQsFk = (val, type) => {
|
||||||
|
switch (type) {
|
||||||
|
case '签收':
|
||||||
|
proxy.$confirm("是否确定要签收?", "警告", { type: "warning" }).then(() => {
|
||||||
|
qcckPost({ id: val.id }, "/mosty-gsxt/yjzxXwyj/yjqs").then(() => {
|
||||||
|
val.czzt = '02'
|
||||||
|
getList()
|
||||||
|
proxy.$message({ type: "success", message: "签收成功" });
|
||||||
|
});
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
case '反馈':
|
||||||
|
case '查看反馈':
|
||||||
|
emitter.emit("openFkDialog", { id: val.id, type });
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
||||||
|
|||||||
@ -1,21 +1,26 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog v-model="showDialog" :append-to-body="true" :destroy-on-close="true" :title="title" :close-on-click-modal="false">
|
<el-dialog :draggable="true" v-model="showDialog" :append-to-body="true" :destroy-on-close="true" :title="title"
|
||||||
<FormMessage v-model="listQuery" :disabled="title == '反馈' ? false : true" :formList="formData" labelWidth="160px" ref="elform" :rules="rules">
|
:close-on-click-modal="false">
|
||||||
<template #mbzrmjxm>
|
<FormMessage v-model="listQuery" :disabled="title == '反馈' ? false : true" :formList="formData" labelWidth="160px"
|
||||||
<MOSTY.Other width="100%" @click="handleChoose('mbzrmjxm')" clearable v-model="listQuery.mbzrmjxm" placeholder="请选择民警" :readonly="true" />
|
ref="elform" :rules="rules">
|
||||||
</template>
|
<template #mbzrmjxm>
|
||||||
<template #czzrmj>
|
<MOSTY.Other width="100%" @click="handleChoose('mbzrmjxm')" clearable v-model="listQuery.mbzrmjxm"
|
||||||
<MOSTY.Other width="100%" @click="handleChoose('czzrmj')" clearable v-model="listQuery.czzrmj" placeholder="请选择民警" :readonly="true" />
|
placeholder="请选择民警" :readonly="true" />
|
||||||
</template>
|
</template>
|
||||||
</FormMessage>
|
<template #czzrmj>
|
||||||
<template #footer>
|
<MOSTY.Other width="100%" @click="handleChoose('czzrmj')" clearable v-model="listQuery.czzrmj"
|
||||||
<div class="flex just-center">
|
placeholder="请选择民警" :readonly="true" />
|
||||||
<el-button @click="close">取消</el-button>
|
</template>
|
||||||
<el-button type="primary" @click="submitForm" :loading="loading" v-if="title == '反馈'">确认</el-button>
|
</FormMessage>
|
||||||
</div>
|
<template #footer>
|
||||||
</template>
|
<div class="flex just-center">
|
||||||
|
<el-button @click="close">取消</el-button>
|
||||||
|
<el-button type="primary" @click="submitForm" :loading="loading" v-if="title == '反馈'">确认</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<ChooseUser v-model="chooseUserVisible" v-if="chooseUserVisible" @choosedUsers="handleUserSelected" :roleIds="roleIds" :Single="true" />
|
<ChooseUser v-model="chooseUserVisible" v-if="chooseUserVisible" @choosedUsers="handleUserSelected" :roleIds="roleIds"
|
||||||
|
:Single="true" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
@ -24,10 +29,16 @@ import * as MOSTY from "@/components/MyComponents/index";
|
|||||||
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||||
import emitter from "@/utils/eventBus.js";
|
import emitter from "@/utils/eventBus.js";
|
||||||
import FormMessage from "@/components/aboutTable/FormMessage.vue";
|
import FormMessage from "@/components/aboutTable/FormMessage.vue";
|
||||||
import { onMounted, reactive, ref ,getCurrentInstance} from 'vue';
|
import { onMounted, reactive, ref, getCurrentInstance,onUnmounted } from 'vue';
|
||||||
|
const props = defineProps({
|
||||||
|
lx: {
|
||||||
|
type: String,
|
||||||
|
default: '01'
|
||||||
|
}
|
||||||
|
})
|
||||||
const emit = defineEmits(['change'])
|
const emit = defineEmits(['change'])
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const { D_BZ_SF ,D_YJXX_CZCSLX,D_YJXX_CZSSXZ,D_YJXX_CKCZJG,D_YJXX_CKZYLX } = proxy.$dict('D_YJXX_CKZYLX','D_BZ_SF','D_YJXX_CZCSLX','D_YJXX_CZSSXZ','D_YJXX_CKCZJG')
|
const { D_BZ_SF, D_YJXX_CZCSLX, D_YJXX_CZSSXZ, D_YJXX_CKCZJG, D_YJXX_CKZYLX } = proxy.$dict('D_YJXX_CKZYLX', 'D_BZ_SF', 'D_YJXX_CZCSLX', 'D_YJXX_CZSSXZ', 'D_YJXX_CKCZJG')
|
||||||
const chooseUserVisible = ref(false)
|
const chooseUserVisible = ref(false)
|
||||||
const roleIds = ref([])
|
const roleIds = ref([])
|
||||||
const elform = ref()
|
const elform = ref()
|
||||||
@ -36,43 +47,43 @@ const loading = ref(false)
|
|||||||
const choosetype = ref('')
|
const choosetype = ref('')
|
||||||
const listQuery = ref({})
|
const listQuery = ref({})
|
||||||
const formData = ref([
|
const formData = ref([
|
||||||
{ label: "发现目标状态", prop: "mbzt", type: "select",options: D_BZ_SF },
|
{ label: "发现目标状态", prop: "mbzt", type: "select", options: D_BZ_SF },
|
||||||
{ label: "发现目标责任单位", prop: "mbzrdwdm", type: "department" ,depMc:'mbzrdw'},
|
{ label: "发现目标责任单位", prop: "mbzrdwdm", type: "department", depMc: 'mbzrdw' },
|
||||||
{ label: "发现目标责任民警", prop: "mbzrmjxm", type: "slot"},
|
{ label: "发现目标责任民警", prop: "mbzrmjxm", type: "slot" },
|
||||||
{ label: "是否本人", prop: "sfbr", type: "select",options: D_BZ_SF },
|
{ label: "是否本人", prop: "sfbr", type: "select", options: D_BZ_SF },
|
||||||
{ label: "处置时间", prop: "czsj", type: "datetime" },
|
{ label: "处置时间", prop: "czsj", type: "datetime" },
|
||||||
{ label: "处置地址", prop: "czdz", type: "textarea",width:'100%'},
|
{ label: "处置地址", prop: "czdz", type: "textarea", width: '100%' },
|
||||||
{ label: "详细地址", prop: "xxdz", type: "textarea",width:'100%' },
|
{ label: "详细地址", prop: "xxdz", type: "textarea", width: '100%' },
|
||||||
{ label: "处置责任单位", prop: "czzrdwdm", type: "department",depMc:'czzrdw' },
|
{ label: "处置责任单位", prop: "czzrdwdm", type: "department", depMc: 'czzrdw' },
|
||||||
{ label: "处置责任民警", prop: "czzrmj", type: "slot" },
|
{ label: "处置责任民警", prop: "czzrmj", type: "slot" },
|
||||||
{ label: "常控处置措施类型", prop: "ckczcslx", type: "select" ,options: D_YJXX_CZCSLX},
|
{ label: "常控处置措施类型", prop: "ckczcslx", type: "select", options: D_YJXX_CZCSLX },
|
||||||
{ label: "常控处置措施细类", prop: "ckczcsxl", type: "select",options: D_YJXX_CZSSXZ},
|
{ label: "常控处置措施细类", prop: "ckczcsxl", type: "select", options: D_YJXX_CZSSXZ },
|
||||||
{ label: "常控处置结果", prop: "ckczjg", type: "select",options: D_YJXX_CKCZJG },
|
{ label: "常控处置结果", prop: "ckczjg", type: "select", options: D_YJXX_CKCZJG },
|
||||||
{ label: "常控立线侦察评估", prop: "cklxzcpg", type: "input" },
|
{ label: "常控立线侦察评估", prop: "cklxzcpg", type: "input" },
|
||||||
{ label: "常控立线侦察依据", prop: "cklxzcpgyj", type: "input" },
|
{ label: "常控立线侦察依据", prop: "cklxzcpgyj", type: "input" },
|
||||||
{ label: "常控从事职业类型", prop: "ckzylx", type: "select",options: D_YJXX_CKZYLX },
|
{ label: "常控从事职业类型", prop: "ckzylx", type: "select", options: D_YJXX_CKZYLX },
|
||||||
{ label: "是否尿检", prop: "sfnj", type: "radio",options: D_BZ_SF },
|
{ label: "是否尿检", prop: "sfnj", type: "radio", options: D_BZ_SF },
|
||||||
{ label: "常控不尿检理由", prop: "ckbnjly", type: "textarea",width:'100%' },
|
{ label: "常控不尿检理由", prop: "ckbnjly", type: "textarea", width: '100%' },
|
||||||
{ label: "常控处置反馈补充信息", prop: "ckczbcxx", type: "textarea",width:'100%' },
|
{ label: "常控处置反馈补充信息", prop: "ckczbcxx", type: "textarea", width: '100%' },
|
||||||
])
|
])
|
||||||
|
|
||||||
const rules = reactive({
|
const rules = reactive({
|
||||||
mbzt: [{ required: true, message: "请选择发现目标状态", trigger: "change" }],
|
mbzt: [{ required: true, message: "请选择发现目标状态", trigger: "change" }],
|
||||||
fxmbzedw: [{ required: true, message: "请选择发现目标责任单位", trigger: "change" }],
|
fxmbzedw: [{ required: true, message: "请选择发现目标责任单位", trigger: "change" }],
|
||||||
mbzrmjxm: [{ required: true, message: "请选择发现目标责任民警", trigger: "change" }],
|
mbzrmjxm: [{ required: true, message: "请选择发现目标责任民警", trigger: "change" }],
|
||||||
sfbr:[{ required: true, message: "请选择是否本人", trigger: "change" }],
|
sfbr: [{ required: true, message: "请选择是否本人", trigger: "change" }],
|
||||||
czsj:[{ required: true, message: "请选择处置时间", trigger: "change" }],
|
czsj: [{ required: true, message: "请选择处置时间", trigger: "change" }],
|
||||||
czdz:[{ required: true, message: "请选择处置地址", trigger: "blur" }],
|
czdz: [{ required: true, message: "请选择处置地址", trigger: "blur" }],
|
||||||
xxdz:[{ required: true, message: "请选择详细地址", trigger: "blur" }],
|
xxdz: [{ required: true, message: "请选择详细地址", trigger: "blur" }],
|
||||||
czzrdwdm:[{ required: true, message: "请选择处置责任单位", trigger: "change" }],
|
czzrdwdm: [{ required: true, message: "请选择处置责任单位", trigger: "change" }],
|
||||||
czzrmj:[{ required: true, message: "请选择处置责任民警", trigger: "change" }],
|
czzrmj: [{ required: true, message: "请选择处置责任民警", trigger: "change" }],
|
||||||
ckczcslx:[{ required: true, message: "请选择常控处置措施类型", trigger: "change" }],
|
ckczcslx: [{ required: true, message: "请选择常控处置措施类型", trigger: "change" }],
|
||||||
ckczcsxl:[{ required: true, message: "请选择常控处置措施细类", trigger: "change" }],
|
ckczcsxl: [{ required: true, message: "请选择常控处置措施细类", trigger: "change" }],
|
||||||
ckczjg:[{ required: true, message: "请输入常控处置结果", trigger: "blur" }],
|
ckczjg: [{ required: true, message: "请输入常控处置结果", trigger: "blur" }],
|
||||||
cklxzcpg:[{ required: true, message: "请输入常控立线侦察评估", trigger: "blur" }],
|
cklxzcpg: [{ required: true, message: "请输入常控立线侦察评估", trigger: "blur" }],
|
||||||
cklxzcpgyj:[{ required: true, message: "请输入常控立线侦察依据", trigger: "blur" }],
|
cklxzcpgyj: [{ required: true, message: "请输入常控立线侦察依据", trigger: "blur" }],
|
||||||
ckzylx:[{ required: true, message: "请选择常控从事职业类型", trigger: "change" }],
|
ckzylx: [{ required: true, message: "请选择常控从事职业类型", trigger: "change" }],
|
||||||
sfnj:[{ required: true, message: "请选择是否尿检", trigger: "change" }],
|
sfnj: [{ required: true, message: "请选择是否尿检", trigger: "change" }],
|
||||||
})
|
})
|
||||||
|
|
||||||
const title = ref('')
|
const title = ref('')
|
||||||
@ -80,31 +91,46 @@ onMounted(() => {
|
|||||||
emitter.on("openFkDialog", (val) => {
|
emitter.on("openFkDialog", (val) => {
|
||||||
showDialog.value = true;
|
showDialog.value = true;
|
||||||
listQuery.value = { yjid: val.id }
|
listQuery.value = { yjid: val.id }
|
||||||
|
let url = ''
|
||||||
|
console.log(url);
|
||||||
|
switch (props.lx) {
|
||||||
|
case '01':
|
||||||
|
url = '/mosty-gsxt/tbYjxx/getInfo/'
|
||||||
|
break;
|
||||||
|
case '02':
|
||||||
|
url = '/mosty-gsxt/yjzxXwyj/'
|
||||||
|
break;
|
||||||
|
case '03':
|
||||||
|
url = '/mosty-gsxt/yjzxSfyj/'
|
||||||
|
break;
|
||||||
|
case '04':
|
||||||
|
url = '/mosty-gsxt/yjzxZhyj/'
|
||||||
|
break;
|
||||||
|
}
|
||||||
title.value = val.type;
|
title.value = val.type;
|
||||||
if(val.type == '查看反馈'){
|
if (val.type == '查看反馈') {
|
||||||
qcckGet({}, "/mosty-gsxt/tbYjxx/getInfo/"+val.id).then((res) => {
|
qcckGet({}, url + val.id).then((res) => {
|
||||||
let list = res.fkList || []
|
let list = res.fkList || []
|
||||||
listQuery.value = list.length > 0 ? list[0] : {};
|
listQuery.value = list.length > 0 ? list[0] : {};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
const handleChoose = (type)=>{
|
const handleChoose = (type) => {
|
||||||
chooseUserVisible.value = true,
|
chooseUserVisible.value = true,
|
||||||
choosetype.value = type;
|
choosetype.value = type;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 选取角色
|
// 选取角色
|
||||||
const handleUserSelected = (val) => {
|
const handleUserSelected = (val) => {
|
||||||
switch(choosetype.value){
|
switch (choosetype.value) {
|
||||||
case 'mbzrmjxm':
|
case 'mbzrmjxm':
|
||||||
listQuery.value.mbzrmjxm = val[0].userName
|
listQuery.value.mbzrmjxm = val[0].userName
|
||||||
listQuery.value.mbzrmjsfzh = val[0].inDustRialId
|
listQuery.value.mbzrmjsfzh = val[0].inDustRialId
|
||||||
break;
|
break;
|
||||||
case 'czzrmj':
|
case 'czzrmj':
|
||||||
listQuery.value.czzrmj = val[0].userName
|
listQuery.value.czzrmj = val[0].userName
|
||||||
listQuery.value.czzrmjsfzh = val[0].inDustRialId
|
listQuery.value.czzrmjsfzh = val[0].inDustRialId
|
||||||
break;
|
break;
|
||||||
@ -112,13 +138,28 @@ const handleUserSelected = (val) => {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const submitForm = () =>{
|
const submitForm = () => {
|
||||||
elform.value.submit((val)=>{
|
elform.value.submit((val) => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
const prome = {
|
const prome = {
|
||||||
...listQuery.value,
|
...listQuery.value,
|
||||||
}
|
}
|
||||||
qcckPost(prome, "/mosty-gsxt/tbYjxx/yjfk").then(() => {
|
let url = ''
|
||||||
|
switch (props.lx) {
|
||||||
|
case '01':
|
||||||
|
url = '/mosty-gsxt/tbYjxx/yjfk'
|
||||||
|
break;
|
||||||
|
case '02':
|
||||||
|
url = '/mosty-gsxt/yjzxXwyj/yjfk'
|
||||||
|
break;
|
||||||
|
case '03':
|
||||||
|
url = '/mosty-gsxt/yjzxSfyj/yjfk'
|
||||||
|
break;
|
||||||
|
case '04':
|
||||||
|
url = '/mosty-gsxt/yjzxZhyj/yjfk'
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
qcckPost(prome, url).then(() => {
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
proxy.$message({ type: "success", message: "反馈成功" });
|
proxy.$message({ type: "success", message: "反馈成功" });
|
||||||
emit('change')
|
emit('change')
|
||||||
@ -134,12 +175,16 @@ const close = () => {
|
|||||||
listQuery.value = {}
|
listQuery.value = {}
|
||||||
showDialog.value = false;
|
showDialog.value = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onUnmounted(() => {
|
||||||
|
emitter.off("openFkDialog")
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.el-form{
|
.el-form {
|
||||||
max-height: 60vh;
|
max-height: 60vh;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -0,0 +1,57 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog :title="`组合预警次数详情(${pageData.tableData.length})`" v-model="dialogVisible" width="60%">
|
||||||
|
<MyTable
|
||||||
|
:tableData="pageData.tableData"
|
||||||
|
:tableColumn="pageData.tableColumn"
|
||||||
|
:tableHeight="pageData.tableHeight"
|
||||||
|
:key="pageData.keyCount"
|
||||||
|
:tableConfiger="pageData.tableConfiger"
|
||||||
|
>
|
||||||
|
</MyTable>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { qcckGet } from "@/api/qcckApi.js";
|
||||||
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
|
import { ref , reactive , defineExpose} from 'vue'
|
||||||
|
const dialogVisible = ref(false)
|
||||||
|
const pageData = reactive({
|
||||||
|
tableData: [{jqbh:'JQBH-43',bjr:'张三',bjrdh:'15665255545',bjrsfzh:'510156565656525565',yjnr:'xxxxxxxxx',jsj:'2023-08-24 15:00:00'}], //表格数据
|
||||||
|
keyCount: 0,
|
||||||
|
tableConfiger: {
|
||||||
|
rowHieght: 61,
|
||||||
|
loading: false,
|
||||||
|
haveControls: false,
|
||||||
|
},
|
||||||
|
tableHeight:600,
|
||||||
|
total: 0,
|
||||||
|
pageConfiger: {
|
||||||
|
pageSize: 20,
|
||||||
|
pageCurrent: 1
|
||||||
|
}, //分页
|
||||||
|
tableColumn: [
|
||||||
|
{ label: "警情编号", prop: "jjdbh"},
|
||||||
|
{ label: "报警人", prop: "bjrmc" },
|
||||||
|
{ label: "报警人电话", prop: "bjdh" },
|
||||||
|
{ label: "报警人身份证", prop: "bjrzjhm"},
|
||||||
|
{ label: "预警内容", prop: "bjnr", showOverflowTooltip: true },
|
||||||
|
{ label: "报警时间", prop: "bjsj", showOverflowTooltip: true },
|
||||||
|
]
|
||||||
|
});
|
||||||
|
const init = (row) => {
|
||||||
|
dialogVisible.value = true;
|
||||||
|
pageData.tableConfiger.loading = true;
|
||||||
|
pageData.tableData = []
|
||||||
|
qcckGet({yjid:row.id},'/mosty-gsxt/yjzxZhyjxq/getPageList').then((res)=>{
|
||||||
|
pageData.tableData = res || [];
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
}).catch(()=>{
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
init
|
||||||
|
})
|
||||||
|
</script>
|
||||||
@ -13,26 +13,40 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="tabBox">
|
||||||
<MyTable
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:tableData="pageData.tableData"
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
:tableColumn="pageData.tableColumn"
|
<template #sfcs="{ row }">
|
||||||
:tableHeight="pageData.tableHeight"
|
<span style="color: #0072ff;" @click="handleClick(row)">{{ row.sfcs }}</span>
|
||||||
:key="pageData.keyCount"
|
</template>
|
||||||
:tableConfiger="pageData.tableConfiger"
|
<template #bqys="{ row }">
|
||||||
:controlsWidth="pageData.controlsWidth"
|
<DictTag :value="row.bqys" :tag="false" :color="bqYs(row.bqys)" :options="D_GS_SSYJ" />
|
||||||
>
|
</template>
|
||||||
|
<template #czzt="{ row }">
|
||||||
|
<DictTag :value="row.czzt" :options="D_GSXT_YJXX_CZZT" />
|
||||||
|
</template>
|
||||||
|
<template #controls="{ row }">
|
||||||
|
<el-link type="warning" @click="pushAssess(row)">全息档案</el-link>
|
||||||
|
<el-link type="primary" @click="showDetail(row)">转合成</el-link>
|
||||||
|
<el-link type="danger" @click="delDictItem(row.id)">转会商</el-link>
|
||||||
|
<el-link type="success" @click="handleQsFk(row, '签收')" v-if="row.czzt == '01'">签收</el-link>
|
||||||
|
<el-link type="success" @click="handleQsFk(row, '反馈')" v-else-if="row.czzt == '02'">反馈</el-link>
|
||||||
|
<el-link type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</el-link>
|
||||||
|
<el-link type="primary" @click="delDictItem(row.id)">详情</el-link>
|
||||||
|
</template>
|
||||||
</MyTable>
|
</MyTable>
|
||||||
<Pages
|
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
||||||
@changeNo="changeNo"
|
...pageData.pageConfiger,
|
||||||
@changeSize="changeSize"
|
total: pageData.total
|
||||||
:tableHeight="pageData.tableHeight"
|
}"></Pages>
|
||||||
:pageConfiger="{
|
|
||||||
...pageData.pageConfiger,
|
|
||||||
total: pageData.total
|
|
||||||
}"
|
|
||||||
></Pages>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<Detail ref="detailRef" />
|
||||||
|
<HolographicArchive v-model="assessShow" :dataList="dataList" />
|
||||||
|
<FkDialog @change="getList" lx="04" />
|
||||||
|
<Information v-model="showDialog" title="发送指令" @submit='submit' @close='closeFszl'>
|
||||||
|
<SemdFqzl ref="semdFqzlRef" :itemData="itemData" @handleClose="handleClose" identification="yj"
|
||||||
|
:tacitly="tacitly" />
|
||||||
|
</Information>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
@ -40,61 +54,65 @@ import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
|||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import { qcckGet } from "@/api/qcckApi.js";
|
import { tbYjxxGetZbtj, tbGsxtBqzhSelectList } from '@/api/yj.js'
|
||||||
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
import HolographicArchive from '@/views/home/components/holographicArchive.vue'
|
||||||
|
import Information from "@/views/home/model/information.vue";
|
||||||
const { proxy } = getCurrentInstance();
|
import SemdFqzl from '@/components/instructionHasBeen/sendFqzl.vue'
|
||||||
|
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
|
||||||
|
import { reactive, ref, onMounted, getCurrentInstance, watch } from "vue";
|
||||||
|
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||||
|
import Detail from './components/detail.vue'
|
||||||
|
import emitter from "@/utils/eventBus.js";
|
||||||
const searchBox = ref();
|
const searchBox = ref();
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const {D_GSXT_YJXX_CZZT} = proxy.$dict("D_GSXT_YJXX_CZZT")
|
||||||
// 搜索配置
|
// 搜索配置
|
||||||
const searchConfiger = ref([
|
const searchConfiger = ref([
|
||||||
{ label: "姓名", prop: 'xm', placeholder: "请输入姓名", showType: "input"},
|
{ label: "姓名", prop: 'xm', placeholder: "请输入姓名", showType: "input" },
|
||||||
{ label: "身份证号码", prop: 'sfzh', placeholder: "请输入身份证号码", showType: "input"},
|
{ label: "身份证号码", prop: 'sfzh', placeholder: "请输入身份证号码", showType: "input" },
|
||||||
{ label: "预警等级", prop: 'yjdj', placeholder: "请选择预警等级", showType: "select", options: [
|
|
||||||
{ label: "一级预警", value: "1" },
|
|
||||||
{ label: "二级预警", value: "2" },
|
|
||||||
{ label: "三级预警", value: "3" },
|
|
||||||
{ label: "四级预警", value: "4" }
|
|
||||||
]},
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const queryFrom = ref({});
|
const queryFrom = ref({});
|
||||||
|
|
||||||
// 页面数据
|
// 页面数据
|
||||||
const pageData = reactive({
|
const pageData = reactive({
|
||||||
tableData: [],
|
tableData: [{ sfcs: 1 }],
|
||||||
keyCount: 0,
|
keyCount: 0,
|
||||||
tableConfiger: {
|
tableConfiger: {
|
||||||
rowHieght: 61,
|
rowHieght: 61,
|
||||||
showSelectType: "checkBox",
|
showSelectType: "checkBox",
|
||||||
loading: false,
|
loading: false,
|
||||||
haveControls: false,
|
haveControls: true,
|
||||||
},
|
},
|
||||||
total: 0,
|
total: 0,
|
||||||
pageConfiger: {
|
pageConfiger: {
|
||||||
pageSize: 20,
|
pageSize: 20,
|
||||||
pageCurrent: 1
|
pageCurrent: 1
|
||||||
},
|
},
|
||||||
controlsWidth: 160,
|
controlsWidth: 300,
|
||||||
tableColumn: [
|
tableColumn: [
|
||||||
{ label: "姓名", prop: "xm" },
|
{ label: "姓名", prop: "xm" },
|
||||||
{ label: "身份证号", prop: "sfzh" },
|
{ label: "身份证号", prop: "sfzh" },
|
||||||
{ label: "电话", prop: "dh" },
|
{ label: "电话", prop: "dh" },
|
||||||
{ label: "组合类型", prop: "zhlx" },
|
{ label: "组合大类", prop: "sfdlmc" },
|
||||||
{ label: "预警等级", prop: "yjdj" },
|
{ label: "组合小类", prop: "sfzlmc" },
|
||||||
{ label: "预警原因", prop: "yjyy", showOverflowTooltip: true },
|
{ label: "组合次数", prop: "sfcs", showSolt: true },
|
||||||
{ label: "预警时间", prop: "yjsj" },
|
{ label: "标签颜色", prop: "bqys", showSolt: true },
|
||||||
{ label: "处理状态", prop: "clzt" },
|
{ label: "预警时间", prop: "yjsj" },
|
||||||
|
{ label: "预警分值", prop: "sffz" },
|
||||||
|
{ label: "处置状态", prop: "czzt", showSolt: true },
|
||||||
|
{ label: "所属县局", prop: "ssbm" },
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
getList();
|
getList();
|
||||||
|
gettbGsxtBqglSelectList()
|
||||||
});
|
});
|
||||||
|
|
||||||
const onSearch = (val) => {
|
const onSearch = (val) => {
|
||||||
queryFrom.value = {...val};
|
queryFrom.value = { ...val };
|
||||||
pageData.pageConfiger.pageCurrent = 1;
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
getList();
|
getList();
|
||||||
};
|
};
|
||||||
@ -110,16 +128,102 @@ const changeSize = (val) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const getList = () => {
|
const getList = () => {
|
||||||
// pageData.tableConfiger.loading = true;
|
pageData.tableConfiger.loading = true;
|
||||||
// TODO: 替换为实际的组合预警API接口
|
// TODO: 替换为实际的组合预警API接口
|
||||||
// qcckGet(queryFrom.value, '/mosty-gsxt/combinedWarning/selectPage').then((res) => {
|
tbYjxxGetZbtj(queryFrom.value).then((res) => {
|
||||||
// pageData.tableData = res.records || [];
|
pageData.tableData = res.records || [];
|
||||||
// pageData.total = res.total || 0;
|
pageData.total = res.total || 0;
|
||||||
// pageData.tableConfiger.loading = false;
|
pageData.tableConfiger.loading = false;
|
||||||
// }).catch(() => {
|
}).catch(() => {
|
||||||
// pageData.tableConfiger.loading = false;
|
pageData.tableConfiger.loading = false;
|
||||||
// });
|
});
|
||||||
};
|
};
|
||||||
|
const bqYs = (val) => {
|
||||||
|
if (val == '01') {
|
||||||
|
return '#ff0202'
|
||||||
|
} else if (val == '02') {
|
||||||
|
return '#ff8c00'
|
||||||
|
} else if (val == '03') {
|
||||||
|
return '#ffff00'
|
||||||
|
} else if (val == '04') {
|
||||||
|
return '#0000ff'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const bqLbData = ref({
|
||||||
|
bqXl: []
|
||||||
|
})
|
||||||
|
const gettbGsxtBqglSelectList = (val) => {
|
||||||
|
tbGsxtBqzhSelectList({}).then((res) => {
|
||||||
|
bqLbData.value.bqXl = res.map(item => {
|
||||||
|
return {
|
||||||
|
label: item.bqMc,
|
||||||
|
value: item.bqDm
|
||||||
|
}
|
||||||
|
}) || []
|
||||||
|
})
|
||||||
|
}
|
||||||
|
watch(() => bqLbData.value.bqXl, (res) => {
|
||||||
|
searchConfiger.value.push({
|
||||||
|
label: "组合标签", prop: 'bqmc', placeholder: "请选择组合标签",
|
||||||
|
showType: "select", options: res
|
||||||
|
},)
|
||||||
|
}, { deep: true, immediate: true })
|
||||||
|
|
||||||
|
// 查看详情
|
||||||
|
const detailRef = ref()
|
||||||
|
const handleClick = (row) => {
|
||||||
|
detailRef.value.init(row)
|
||||||
|
}
|
||||||
|
const assessShow = ref(false)
|
||||||
|
const dataList = ref()
|
||||||
|
const pushAssess = (val) => {
|
||||||
|
assessShow.value = true;
|
||||||
|
dataList.value = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 发送指令
|
||||||
|
const showDialog = ref(false)
|
||||||
|
const itemData = ref()
|
||||||
|
const showDetail = (item) => {
|
||||||
|
showDialog.value = true;
|
||||||
|
itemData.value = item
|
||||||
|
}
|
||||||
|
const handleClose = () => {
|
||||||
|
showDialog.value = false;
|
||||||
|
}
|
||||||
|
const semdFqzlRef = ref()
|
||||||
|
const tacitly = {
|
||||||
|
title: 'yjbt',
|
||||||
|
instructionContent: 'yjnr'
|
||||||
|
}
|
||||||
|
const submit = () => {
|
||||||
|
semdFqzlRef.value.getsendFqzl()
|
||||||
|
}
|
||||||
|
|
||||||
|
const closeFszl = () => {
|
||||||
|
semdFqzlRef.value.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理签收
|
||||||
|
const handleQsFk = (val, type) => {
|
||||||
|
switch (type) {
|
||||||
|
case '签收':
|
||||||
|
proxy.$confirm("是否确定要签收?", "警告", { type: "warning" }).then(() => {
|
||||||
|
qcckPost({ id: val.id }, "/mosty-gsxt/yjzxZhyj/yjqs").then(() => {
|
||||||
|
val.czzt = '02'
|
||||||
|
getList()
|
||||||
|
proxy.$message({ type: "success", message: "签收成功" });
|
||||||
|
});
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
case '反馈':
|
||||||
|
case '查看反馈':
|
||||||
|
emitter.emit("openFkDialog", { id: val.id, type });
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
|
|||||||
@ -0,0 +1,57 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog :title="`组合预警次数详情(${pageData.tableData.length})`" v-model="dialogVisible" width="60%">
|
||||||
|
<MyTable
|
||||||
|
:tableData="pageData.tableData"
|
||||||
|
:tableColumn="pageData.tableColumn"
|
||||||
|
:tableHeight="pageData.tableHeight"
|
||||||
|
:key="pageData.keyCount"
|
||||||
|
:tableConfiger="pageData.tableConfiger"
|
||||||
|
>
|
||||||
|
</MyTable>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { qcckGet } from "@/api/qcckApi.js";
|
||||||
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
|
import { ref , reactive , defineExpose} from 'vue'
|
||||||
|
const dialogVisible = ref(false)
|
||||||
|
const pageData = reactive({
|
||||||
|
tableData: [{jqbh:'JQBH-43',bjr:'张三',bjrdh:'15665255545',bjrsfzh:'510156565656525565',yjnr:'xxxxxxxxx',jsj:'2023-08-24 15:00:00'}], //表格数据
|
||||||
|
keyCount: 0,
|
||||||
|
tableConfiger: {
|
||||||
|
rowHieght: 61,
|
||||||
|
loading: false,
|
||||||
|
haveControls: false,
|
||||||
|
},
|
||||||
|
tableHeight:600,
|
||||||
|
total: 0,
|
||||||
|
pageConfiger: {
|
||||||
|
pageSize: 20,
|
||||||
|
pageCurrent: 1
|
||||||
|
}, //分页
|
||||||
|
tableColumn: [
|
||||||
|
{ label: "警情编号", prop: "jjdbh"},
|
||||||
|
{ label: "报警人", prop: "bjrmc" },
|
||||||
|
{ label: "报警人电话", prop: "bjdh" },
|
||||||
|
{ label: "报警人身份证", prop: "bjrzjhm"},
|
||||||
|
{ label: "预警内容", prop: "bjnr", showOverflowTooltip: true },
|
||||||
|
{ label: "报警时间", prop: "bjsj", showOverflowTooltip: true },
|
||||||
|
]
|
||||||
|
});
|
||||||
|
const init = (row) => {
|
||||||
|
dialogVisible.value = true;
|
||||||
|
pageData.tableConfiger.loading = true;
|
||||||
|
pageData.tableData = []
|
||||||
|
qcckGet({yjid:row.id},'/mosty-gsxt/yjzxSfyjxq/selectList').then((res)=>{
|
||||||
|
pageData.tableData = res || [];
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
}).catch(()=>{
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
init
|
||||||
|
})
|
||||||
|
</script>
|
||||||
@ -9,34 +9,56 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox">
|
<div ref="searchBox">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
|
||||||
|
<template #defaultSlot>
|
||||||
|
<el-select @change="gettbGsxtBqglSelectList" v-model="queryFrom.sfdl" placeholder="请选择身份类型"
|
||||||
|
style="width: 100%">
|
||||||
|
<el-option :label="item.label" :value="item.value" v-for="(item, index) in bqLbData.bqDl" :key="index" />
|
||||||
|
</el-select>
|
||||||
|
</template>
|
||||||
|
<template #nameSlot>
|
||||||
|
<el-select v-model="queryFrom.sfxl" placeholder="请选择身份类型" style="width: 100%">
|
||||||
|
<el-option :label="item.label" :value="item.value" v-for="(item, index) in bqLbData.bqXl" :key="index" />
|
||||||
|
</el-select>
|
||||||
|
</template>
|
||||||
|
</Search>
|
||||||
</div>
|
</div>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="tabBox">
|
||||||
<MyTable
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:tableData="pageData.tableData"
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
:tableColumn="pageData.tableColumn"
|
<template #sfcs="{ row }">
|
||||||
:tableHeight="pageData.tableHeight"
|
<span style="color: #0072ff;" @click="handleClick(row)">{{ row.sfcs }}</span>
|
||||||
:key="pageData.keyCount"
|
</template>
|
||||||
:tableConfiger="pageData.tableConfiger"
|
<template #bqys="{ row }">
|
||||||
:controlsWidth="pageData.controlsWidth"
|
<DictTag :value="row.bqys" :tag="false" :color="bqYs(row.bqys)" :options="D_GS_SSYJ" />
|
||||||
>
|
</template>
|
||||||
<template #controls="{ row }">
|
<template #czzt="{ row }">
|
||||||
<el-link type="primary">下发指令</el-link>
|
<DictTag :value="row.czzt" :options="D_GSXT_YJXX_CZZT" />
|
||||||
<el-link type="success">查看反馈</el-link>
|
</template>
|
||||||
|
<template #controls="{ row }">
|
||||||
|
<el-link type="warning" @click="pushAssess(row)">全息档案</el-link>
|
||||||
|
<el-link type="primary" @click="showDetail(row)">转合成</el-link>
|
||||||
|
<el-link type="danger" @click="handleQsFk(row)">转会商</el-link>
|
||||||
|
<el-link type="success" @click="handleQsFk(row, '签收')" v-if="row.czzt == '01'">签收</el-link>
|
||||||
|
<el-link type="success" @click="handleQsFk(row, '反馈')" v-else-if="row.czzt == '02'">反馈</el-link>
|
||||||
|
<el-link type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</el-link>
|
||||||
|
<el-link type="primary" @click="delDictItem(row.id)">详情</el-link>
|
||||||
</template>
|
</template>
|
||||||
</MyTable>
|
</MyTable>
|
||||||
<Pages
|
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
||||||
@changeNo="changeNo"
|
...pageData.pageConfiger,
|
||||||
@changeSize="changeSize"
|
total: pageData.total
|
||||||
:tableHeight="pageData.tableHeight"
|
}"></Pages>
|
||||||
:pageConfiger="{
|
|
||||||
...pageData.pageConfiger,
|
|
||||||
total: pageData.total
|
|
||||||
}"
|
|
||||||
></Pages>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<Detail ref="detailRef" />
|
||||||
|
<HolographicArchive v-model="assessShow" :dataList="dataList" />
|
||||||
|
<FkDialog @change="getList" lx="03" />
|
||||||
|
<Information v-model="showDialog" title="发送指令" @submit='submit' @close='closeFszl'>
|
||||||
|
<SemdFqzl ref="semdFqzlRef" :itemData="itemData" @handleClose="handleClose" identification="yj"
|
||||||
|
:tacitly="tacitly" />
|
||||||
|
</Information>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
@ -44,22 +66,26 @@ import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
|||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import { qcckGet } from "@/api/qcckApi.js";
|
import HolographicArchive from '@/views/home/components/holographicArchive.vue'
|
||||||
|
import Information from "@/views/home/model/information.vue";
|
||||||
|
import SemdFqzl from '@/components/instructionHasBeen/sendFqzl.vue'
|
||||||
|
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
|
||||||
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
||||||
|
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||||
|
import { yjzxSfyjSelectList } from "@/api/yj.js";
|
||||||
|
import { tbGsxtBqglSelectList } from '@/api/zdr'
|
||||||
|
import Detail from './components/detail.vue'
|
||||||
|
import { watch } from "vue";
|
||||||
|
import emitter from "@/utils/eventBus.js";
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const searchBox = ref();
|
const searchBox = ref();
|
||||||
|
const {D_GSXT_YJXX_CZZT} = proxy.$dict("D_GSXT_YJXX_CZZT")
|
||||||
// 搜索配置
|
// 搜索配置
|
||||||
const searchConfiger = ref([
|
const searchConfiger = ref([
|
||||||
{ label: "姓名", prop: 'xm', placeholder: "请输入姓名", showType: "input"},
|
{ label: "姓名", prop: 'xm', placeholder: "请输入姓名", showType: "input" },
|
||||||
{ label: "身份证号码", prop: 'sfzh', placeholder: "请输入身份证号码", showType: "input"},
|
{ label: "身份证号码", prop: 'sfzh', placeholder: "请输入身份证号码", showType: "input" },
|
||||||
{ label: "身份类型", prop: 'sflx', placeholder: "请选择身份类型", showType: "select", options: [
|
{ label: "标签大类", prop: 'sflx', placeholder: "请选择标签大类", showType: "defaultSlot" },
|
||||||
{ label: "重点人员", value: "1" },
|
{ label: "标签小类", prop: 'bqxl', placeholder: "请选择标签小类", showType: "nameSlot" },
|
||||||
{ label: "在逃人员", value: "2" },
|
|
||||||
{ label: "涉毒人员", value: "3" },
|
|
||||||
{ label: "涉恐人员", value: "4" }
|
|
||||||
]},
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const queryFrom = ref({});
|
const queryFrom = ref({});
|
||||||
@ -72,33 +98,37 @@ const pageData = reactive({
|
|||||||
rowHieght: 61,
|
rowHieght: 61,
|
||||||
showSelectType: "checkBox",
|
showSelectType: "checkBox",
|
||||||
loading: false,
|
loading: false,
|
||||||
// haveControls: false,
|
haveControls: true,
|
||||||
},
|
},
|
||||||
total: 0,
|
total: 0,
|
||||||
pageConfiger: {
|
pageConfiger: {
|
||||||
pageSize: 20,
|
pageSize: 20,
|
||||||
pageCurrent: 1
|
pageCurrent: 1
|
||||||
},
|
},
|
||||||
controlsWidth: 160,
|
controlsWidth: 300, //操作栏宽度
|
||||||
tableColumn: [
|
tableColumn: [
|
||||||
{ label: "姓名", prop: "xm",},
|
{ label: "姓名", prop: "xm" },
|
||||||
{ label: "身份证号", prop: "sfzh", },
|
{ label: "身份证号", prop: "sfzh" },
|
||||||
{ label: "电话", prop: "dh", },
|
{ label: "电话", prop: "dh" },
|
||||||
{ label: "身份类型", prop: "sflx",},
|
{ label: "组合大类", prop: "sfdlmc" },
|
||||||
{ label: "身份等级", prop: "sfdj",},
|
{ label: "组合小类", prop: "sfzlmc" },
|
||||||
{ label: "预警原因", prop: "yjyy", showOverflowTooltip: true },
|
{ label: "组合次数", prop: "sfcs", showSolt: true },
|
||||||
{ label: "预警时间", prop: "yjsj",},
|
{ label: "标签颜色", prop: "bqys", showSolt: true },
|
||||||
{ label: "处理状态", prop: "clzt",},
|
{ label: "预警时间", prop: "yjsj" },
|
||||||
|
{ label: "预警分值", prop: "sffz" },
|
||||||
|
{ label: "处置状态", prop: "czzt", showSolt: true },
|
||||||
|
{ label: "所属县局", prop: "ssbm" },
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
gettbGsxtBqglSelectList()
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
getList();
|
getList();
|
||||||
});
|
});
|
||||||
|
|
||||||
const onSearch = (val) => {
|
const onSearch = (val) => {
|
||||||
queryFrom.value = {...val};
|
queryFrom.value = { ...val, ...queryFrom.value };
|
||||||
pageData.pageConfiger.pageCurrent = 1;
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
getList();
|
getList();
|
||||||
};
|
};
|
||||||
@ -114,17 +144,118 @@ const changeSize = (val) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const getList = () => {
|
const getList = () => {
|
||||||
// pageData.tableConfiger.loading = true;
|
pageData.tableConfiger.loading = true;
|
||||||
// TODO: 替换为实际的身份预警API接口
|
// TODO: 替换为实际的身份预警API接口
|
||||||
// qcckGet(queryFrom.value, '/mosty-gsxt/identityWarning/selectPage').then((res) => {
|
yjzxSfyjSelectList(queryFrom.value).then((res) => {
|
||||||
// pageData.tableData = res.records || [];
|
pageData.tableData = res.records || [];
|
||||||
// pageData.total = res.total || 0;
|
pageData.total = res.total || 0;
|
||||||
// pageData.tableConfiger.loading = false;
|
pageData.tableConfiger.loading = false;
|
||||||
// }).catch(() => {
|
}).catch(() => {
|
||||||
// pageData.tableConfiger.loading = false;
|
pageData.tableConfiger.loading = false;
|
||||||
// });
|
});
|
||||||
};
|
};
|
||||||
|
// 标签
|
||||||
|
const bqLbData = ref({
|
||||||
|
bqDl: [],
|
||||||
|
bqXl: []
|
||||||
|
})
|
||||||
|
const gettbGsxtBqglSelectList = (val) => {
|
||||||
|
const promes = {
|
||||||
|
bqLx: '01',
|
||||||
|
bqLb: val ? '02' : "01",
|
||||||
|
bqDlId: val ? bqLbData.value.bqDl.find(item => item.value == val)?.id : ""
|
||||||
|
}
|
||||||
|
tbGsxtBqglSelectList(promes).then((res) => {
|
||||||
|
if (val) {
|
||||||
|
queryFrom.value.bqxl = ''
|
||||||
|
bqLbData.value.bqXl = res.data ? res.data.map(item => {
|
||||||
|
return {
|
||||||
|
label: item.bqMc,
|
||||||
|
value: item.bqDm,
|
||||||
|
}
|
||||||
|
}) : []
|
||||||
|
} else {
|
||||||
|
bqLbData.value.bqDl = res ? res.map(item => {
|
||||||
|
return {
|
||||||
|
label: item.bqMc,
|
||||||
|
value: item.bqDm,
|
||||||
|
id: item.id
|
||||||
|
}
|
||||||
|
}) : []
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
watch(() => bqLbData.value.bqXl, (res) => {
|
||||||
|
bqLbData.value.bqXl = res
|
||||||
|
}, { deep: true })
|
||||||
|
|
||||||
|
// 查看详情
|
||||||
|
const detailRef = ref()
|
||||||
|
const handleClick = (row) => {
|
||||||
|
detailRef.value.init(row)
|
||||||
|
}
|
||||||
|
// 处理签收
|
||||||
|
const handleQsFk = (val, type) => {
|
||||||
|
switch (type) {
|
||||||
|
case '签收':
|
||||||
|
proxy.$confirm("是否确定要签收?", "警告", { type: "warning" }).then(() => {
|
||||||
|
qcckPost({ id: val.id }, "/mosty-gsxt//yjzxSfyj/yjqs").then(() => {
|
||||||
|
val.czzt = '02'
|
||||||
|
getList()
|
||||||
|
proxy.$message({ type: "success", message: "签收成功" });
|
||||||
|
});
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
case '反馈':
|
||||||
|
case '查看反馈':
|
||||||
|
emitter.emit("openFkDialog", { id: val.id, type });
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 全息档案
|
||||||
|
const assessShow = ref(false)
|
||||||
|
const dataList = ref()
|
||||||
|
const pushAssess = (val) => {
|
||||||
|
assessShow.value = true;
|
||||||
|
dataList.value = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 发送指令
|
||||||
|
const showDialog = ref(false)
|
||||||
|
const itemData = ref()
|
||||||
|
const showDetail = (item) => {
|
||||||
|
showDialog.value = true;
|
||||||
|
itemData.value = item
|
||||||
|
}
|
||||||
|
const handleClose = () => {
|
||||||
|
showDialog.value = false;
|
||||||
|
}
|
||||||
|
const semdFqzlRef = ref()
|
||||||
|
const tacitly = {
|
||||||
|
title: 'yjbt',
|
||||||
|
instructionContent: 'yjnr'
|
||||||
|
}
|
||||||
|
const submit = () => {
|
||||||
|
semdFqzlRef.value.getsendFqzl()
|
||||||
|
}
|
||||||
|
const closeFszl = () => {
|
||||||
|
semdFqzlRef.value.close()
|
||||||
|
}
|
||||||
|
const bqYs = (val) => {
|
||||||
|
if (val == '01') {
|
||||||
|
return '#ff0202'
|
||||||
|
} else if (val == '02') {
|
||||||
|
return '#ff8c00'
|
||||||
|
} else if (val == '03') {
|
||||||
|
return '#ffff00'
|
||||||
|
} else if (val == '04') {
|
||||||
|
return '#0000ff'
|
||||||
|
}
|
||||||
|
}
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
||||||
|
|||||||
@ -110,15 +110,15 @@ const changeSize = (val) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const getList = () => {
|
const getList = () => {
|
||||||
// pageData.tableConfiger.loading = true;
|
pageData.tableConfiger.loading = true;
|
||||||
// TODO: 替换为实际的身份预警API接口
|
// TODO: 替换为实际的身份预警API接口
|
||||||
// qcckGet(queryFrom.value, '/mosty-gsxt/identityWarning/selectPage').then((res) => {
|
qcckGet(queryFrom.value, '/mosty-gsxt/identityWarning/selectPage').then((res) => {
|
||||||
// pageData.tableData = res.records || [];
|
pageData.tableData = res.records || [];
|
||||||
// pageData.total = res.total || 0;
|
pageData.total = res.total || 0;
|
||||||
// pageData.tableConfiger.loading = false;
|
pageData.tableConfiger.loading = false;
|
||||||
// }).catch(() => {
|
}).catch(() => {
|
||||||
// pageData.tableConfiger.loading = false;
|
pageData.tableConfiger.loading = false;
|
||||||
// });
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
|
|||||||
@ -20,8 +20,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-image>
|
</el-image>
|
||||||
<!-- <el-image :preview-teleported="true" style="width: 80px; height: 110px" :src="row.yjTp"
|
|
||||||
:preview-src-list="[row.yjTp]" /> -->
|
|
||||||
</template>
|
</template>
|
||||||
<template #nl="{ row }">
|
<template #nl="{ row }">
|
||||||
{{ IdCard(row.yjRysfzh, 3) }}
|
{{ IdCard(row.yjRysfzh, 3) }}
|
||||||
@ -30,12 +28,27 @@
|
|||||||
{{ IdCard(row.yjRysfzh, 2) }}
|
{{ IdCard(row.yjRysfzh, 2) }}
|
||||||
</template>
|
</template>
|
||||||
<template #xsd="{ row }">
|
<template #xsd="{ row }">
|
||||||
90%
|
{{ row.xsd }}%
|
||||||
|
</template>
|
||||||
|
<template #czzt="{ row }">
|
||||||
|
<DictTag v-model:value="row.czzt" :options="props.dict.D_GSXT_YJXX_CZZT" />
|
||||||
|
</template>
|
||||||
|
<template #yjJb="{ row }">
|
||||||
|
<DictTag v-model:value="row.yjJb" :options="props.dict.D_BZ_YJJB" />
|
||||||
</template>
|
</template>
|
||||||
<!-- 操作 -->
|
<!-- 操作 -->
|
||||||
<template #controls="{ row }">
|
<template #controls="{ row }">
|
||||||
<el-link type="danger" @click="delDictItem(row.id)">删除</el-link>
|
<el-link type="warning" @click="pushAssess(row)">全息档案</el-link>
|
||||||
|
<el-link type="primary" @click="showDetail(row)">转合成</el-link>
|
||||||
|
<el-link type="danger" @click="delDictItem(row.id)">转会商</el-link>
|
||||||
|
<el-link type="success" @click="handleQsFk(row, '签收')" v-if="row.czzt == '01'">签收</el-link>
|
||||||
|
<el-link type="success" @click="handleQsFk(row, '反馈')" v-else-if="row.czzt == '02'">反馈</el-link>
|
||||||
|
<el-link type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</el-link>
|
||||||
|
<el-link type="primary" @click="delDictItem(row.id)">详情</el-link>
|
||||||
</template>
|
</template>
|
||||||
|
<!-- <el-button type="success" @click="showFeedback(item, '签收')" v-if="item.czzt == '01'">签收</el-button>
|
||||||
|
<el-button type="success" @click="showFeedback(item, '反馈')" v-if="item.czzt == '02'">反馈</el-button>
|
||||||
|
<el-button type="success" @click="showFeedback(item, '查看反馈')" v-if="item.czzt == '03'">查看反馈</el-button> -->
|
||||||
</MyTable>
|
</MyTable>
|
||||||
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
||||||
...pageData.pageConfiger,
|
...pageData.pageConfiger,
|
||||||
@ -44,19 +57,33 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
<HolographicArchive v-model="assessShow" :dataList="dataList" />
|
||||||
|
<FkDialog @change="getList" />
|
||||||
|
<Information v-model="showDialog" title="发送指令" @submit='submit' @close='closeFszl'>
|
||||||
|
<SemdFqzl ref="semdFqzlRef" :itemData="itemData" @handleClose="handleClose" identification="yj"
|
||||||
|
:tacitly="tacitly" />
|
||||||
|
</Information>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
|
|
||||||
import { IdCard } from '@/utils/validate.js'
|
import { IdCard } from '@/utils/validate.js'
|
||||||
import { tbYjxxGetPageList } from '@/api/yj.js'
|
import { tbYjxxGetPageList } from '@/api/yj.js'
|
||||||
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
|
import HolographicArchive from '@/views/home/components/holographicArchive.vue'
|
||||||
|
import Information from "@/views/home/model/information.vue";
|
||||||
|
import SemdFqzl from '@/components/instructionHasBeen/sendFqzl.vue'
|
||||||
|
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
|
||||||
|
import emitter from "@/utils/eventBus.js";
|
||||||
|
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||||
|
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const detailDiloag = ref();
|
const props = defineProps({
|
||||||
|
dict: {
|
||||||
const queryFrom = ref({});
|
type: Object,
|
||||||
|
default: {}
|
||||||
|
}
|
||||||
|
});
|
||||||
const pageData = reactive({
|
const pageData = reactive({
|
||||||
tableData: [], //表格数据
|
tableData: [], //表格数据
|
||||||
keyCount: 0,
|
keyCount: 0,
|
||||||
@ -64,7 +91,7 @@ const pageData = reactive({
|
|||||||
rowHieght: 61,
|
rowHieght: 61,
|
||||||
showSelectType: "null",
|
showSelectType: "null",
|
||||||
loading: false,
|
loading: false,
|
||||||
haveControls: false
|
haveControls: true
|
||||||
},
|
},
|
||||||
|
|
||||||
total: 0,
|
total: 0,
|
||||||
@ -72,20 +99,26 @@ const pageData = reactive({
|
|||||||
pageSize: 20,
|
pageSize: 20,
|
||||||
pageCurrent: 1
|
pageCurrent: 1
|
||||||
}, //分页
|
}, //分页
|
||||||
controlsWidth: 160, //操作栏宽度
|
controlsWidth: 300, //操作栏宽度
|
||||||
tableColumn: [
|
tableColumn: [
|
||||||
{ label: "预警图片", prop: "yjTp", showSolt: true },
|
{ label: "预警图片", prop: "yjTp", showSolt: true },
|
||||||
{ label: "姓名", prop: "yjRyxm" },
|
{ label: "姓名", prop: "yjRyxm", width: 150, showOverflowTooltip: true },
|
||||||
{ label: "年龄", prop: "nl", showSolt: true },
|
{ label: "年龄", prop: "nl", showSolt: true },
|
||||||
{ label: "性别", prop: "xb", showSolt: true },
|
{ label: "性别", prop: "xb", showSolt: true, width: 100 },
|
||||||
{ label: "预警级别", prop: "yjJb" },
|
{ label: "预警级别", prop: "yjJb", showSolt: true },
|
||||||
{ label: "相似度", prop: "xsd", showSolt: true },
|
{ label: "相似度", prop: "xsd", showSolt: true },
|
||||||
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true },
|
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true, width: 200 },
|
||||||
{ label: "预警地点", prop: "yjDz", showOverflowTooltip: true },
|
{ label: "预警地点", prop: "yjDz", showOverflowTooltip: true, width: 200 },
|
||||||
{ label: "预警次数", prop: "yjCs", showOverflowTooltip: true },
|
{ label: "预警次数", prop: "yjCs", showOverflowTooltip: true },
|
||||||
{ label: "布控手机号", prop: "yjRysjh", showOverflowTooltip: true },
|
{ label: "处置状态", prop: "czzt", showSolt: true, width: 100 },
|
||||||
{ label: "布控车牌号", prop: "yjClcph", showOverflowTooltip: true },
|
{ label: "布控手机号", prop: "yjRysjh", showOverflowTooltip: true, width: 100 },
|
||||||
{ label: "身份证", prop: "yjRysfzh", showOverflowTooltip: true },
|
{ label: "布控车牌号", prop: "yjClcph", showOverflowTooltip: true, width: 100 },
|
||||||
|
{ label: "身份证", prop: "yjRysfzh", showOverflowTooltip: true, width: 200 },
|
||||||
|
|
||||||
|
{ label: "预警标签", prop: "yjbqmc", width: 250 },
|
||||||
|
{ label: "所属部门", prop: "ssbm", width: 100 },
|
||||||
|
{ label: "所属县局", prop: "ssxgaj", width: 100 },
|
||||||
|
{ label: "所属市局", prop: "sssgaj", width: 100 },
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -96,12 +129,6 @@ const pageData = reactive({
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
getList()
|
getList()
|
||||||
@ -131,10 +158,55 @@ const getList = (val) => {
|
|||||||
pageData.tableConfiger.loading = false;
|
pageData.tableConfiger.loading = false;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 全息档案
|
||||||
|
const assessShow = ref(false)
|
||||||
|
const dataList = ref()
|
||||||
|
const pushAssess = (val) => {
|
||||||
|
assessShow.value = true;
|
||||||
|
dataList.value = val;
|
||||||
|
}
|
||||||
|
// 处理签收
|
||||||
|
const handleQsFk = (val, type) => {
|
||||||
|
switch (type) {
|
||||||
|
case '签收':
|
||||||
|
proxy.$confirm("是否确定要签收?", "警告", { type: "warning" }).then(() => {
|
||||||
|
qcckPost({ id: val.id }, "/mosty-gsxt/tbYjxx/yjqs").then(() => {
|
||||||
|
val.czzt = '02'
|
||||||
|
getList()
|
||||||
|
proxy.$message({ type: "success", message: "签收成功" });
|
||||||
|
});
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
case '反馈':
|
||||||
|
case '查看反馈':
|
||||||
|
emitter.emit("openFkDialog", { id: val.id, type });
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
// 发送指令
|
||||||
|
const showDialog = ref(false)
|
||||||
|
const itemData = ref()
|
||||||
|
const showDetail = (item) => {
|
||||||
|
showDialog.value = true;
|
||||||
|
itemData.value = item
|
||||||
|
}
|
||||||
|
const handleClose = () => {
|
||||||
|
showDialog.value = false;
|
||||||
|
}
|
||||||
|
const semdFqzlRef = ref()
|
||||||
|
const tacitly = {
|
||||||
|
title: 'yjbt',
|
||||||
|
instructionContent: 'yjnr'
|
||||||
|
}
|
||||||
|
const submit = () => {
|
||||||
|
semdFqzlRef.value.getsendFqzl()
|
||||||
|
}
|
||||||
|
const closeFszl = () => {
|
||||||
|
semdFqzlRef.value.close()
|
||||||
|
}
|
||||||
|
function close() {
|
||||||
|
}
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - 430;
|
pageData.tableHeight = window.innerHeight - 430;
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="searchBox">
|
<div ref="searchBox" class="searchBox">
|
||||||
<el-form :model="listQuery" label-width="auto" :inline="true" ref="searchArr">
|
<el-form :model="listQuery" label-width="auto" :inline="true" ref="searchArr">
|
||||||
<el-form-item label="布控类型" prop="yjlx" >
|
<el-form-item label="布控类型" prop="yjlx">
|
||||||
<el-select v-model="listQuery.yjlx" placeholder="请选择预警类型">
|
<el-select v-model="listQuery.yjlx" placeholder="请选择预警类型">
|
||||||
<el-option v-for="item in D_BZ_YJLX" :key="item.value" :label="item.label" :value="item.value" />
|
<el-option v-for="item in D_BZ_YJLX" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
@ -31,10 +31,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox" :style="{ height: pageData.tableHeight + 'px' }">
|
<div class="tabBox" :style="{ height: pageData.tableHeight + 'px' }">
|
||||||
<el-tabs v-model="activeName" type="card" class="demo-tabs" @tab-click="handleClick" style="position: relative;z-index: 1;">
|
<el-tabs v-model="activeName" type="card" class="demo-tabs" @tab-click="handleClick"
|
||||||
|
style="position: relative;z-index: 1;">
|
||||||
<el-tab-pane label="本地预警" name="local">
|
<el-tab-pane label="本地预警" name="local">
|
||||||
<div style="padding:0 10px;"> <el-button type="primary" @click="exportExcel">导出</el-button></div>
|
<div style="padding:0 10px;"> <el-button type="primary" @click="exportExcel">导出</el-button></div>
|
||||||
<LocalWarning ref="localWarningRef" />
|
<LocalWarning ref="localWarningRef" :dict="{D_GSXT_YJXX_CZZT, D_BZ_YJJB}"/>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="区厅预警" name="district">区厅预警</el-tab-pane>
|
<el-tab-pane label="区厅预警" name="district">区厅预警</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
@ -45,27 +46,33 @@
|
|||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
<template #yjTp="{ row }">
|
<template #yjTp="{ row }">
|
||||||
<template v-if="!row.yjTp || row.yjTp.includes('baidu')">
|
<template v-if="!row.yjTp || row.yjTp.includes('baidu')">
|
||||||
<img src="@/assets/images/car.png" width="65" height="70" v-if="row.yjLx == 2" />
|
<img src="@/assets/images/car.png" width="65" height="70" v-if="row.yjLx == 2" />
|
||||||
<img src="@/assets/images/default_male.png" width="65" height="70" v-else />
|
<img src="@/assets/images/default_male.png" width="65" height="70" v-else />
|
||||||
|
</template>
|
||||||
|
<el-image v-else style="width: 80px; height:120px" :src="row.yjTp" :preview-src-list="[row.yjTp]" show-progress>
|
||||||
|
<template #error>
|
||||||
|
<div class="image-slot error">
|
||||||
|
<img src="@/assets/images/car.png" width="65" height="70" v-if="row.yjLx == 2" />
|
||||||
|
<img src="@/assets/images/default_male.png" width="65" height="70" v-else />
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<el-image v-else style="width: 80px; height:120px" :src="row.yjTp" :preview-src-list="[row.yjTp]"
|
</el-image>
|
||||||
show-progress>
|
|
||||||
<template #error>
|
|
||||||
<div class="image-slot error">
|
|
||||||
<img src="@/assets/images/car.png" width="65" height="70" v-if="row.yjLx == 2" />
|
|
||||||
<img src="@/assets/images/default_male.png" width="65" height="70" v-else />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-image>
|
|
||||||
</template>
|
</template>
|
||||||
<template #nl="{ row }">
|
<template #nl="{ row }">
|
||||||
{{ IdCard(row.yjRysfzh, 3) }}
|
{{ IdCard(row.yjRysfzh, 3) }}
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template #xb="{ row }">
|
<template #xb="{ row }">
|
||||||
{{ IdCard(row.yjRysfzh, 2) }}
|
{{ IdCard(row.yjRysfzh, 2) }}
|
||||||
</template>
|
</template>
|
||||||
|
<template #czzt="{ row }">
|
||||||
|
<DictTag v-model:value="row.czzt" :options="D_GSXT_YJXX_CZZT" />
|
||||||
|
</template>
|
||||||
|
<template #yjJb="{ row }">
|
||||||
|
<DictTag v-model:value="row.yjJb" :options="D_BZ_YJJB" />
|
||||||
|
</template>
|
||||||
<template #xsd="{ row }">
|
<template #xsd="{ row }">
|
||||||
90%
|
{{ row.xsd }}%
|
||||||
</template>
|
</template>
|
||||||
<!-- 操作 -->
|
<!-- 操作 -->
|
||||||
</MyTable>
|
</MyTable>
|
||||||
@ -94,7 +101,7 @@ import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
|
|||||||
import FileSaver from "file-saver";
|
import FileSaver from "file-saver";
|
||||||
import * as XLSX from "xlsx";
|
import * as XLSX from "xlsx";
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const { D_BZ_YJLX } = proxy.$dict("D_BZ_YJLX")
|
const { D_BZ_YJLX, D_GSXT_YJXX_CZZT, D_BZ_YJJB } = proxy.$dict("D_BZ_YJLX", "D_GSXT_YJXX_CZZT","D_BZ_YJJB")
|
||||||
const searchBox = ref(); //搜索框
|
const searchBox = ref(); //搜索框
|
||||||
const form = ref({});
|
const form = ref({});
|
||||||
const shortcuts = [
|
const shortcuts = [
|
||||||
@ -148,7 +155,7 @@ const pageData = reactive({
|
|||||||
{ label: "姓名", prop: "yjRyxm" },
|
{ label: "姓名", prop: "yjRyxm" },
|
||||||
{ label: "年龄", prop: "nl", showSolt: true },
|
{ label: "年龄", prop: "nl", showSolt: true },
|
||||||
{ label: "性别", prop: "xb", showSolt: true },
|
{ label: "性别", prop: "xb", showSolt: true },
|
||||||
{ label: "预警级别", prop: "yjJb" },
|
{ label: "预警级别", prop: "yjJb", showSolt: true },
|
||||||
{ label: "相似度", prop: "xsd", showSolt: true },
|
{ label: "相似度", prop: "xsd", showSolt: true },
|
||||||
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true },
|
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true },
|
||||||
{ label: "预警地点", prop: "yjDz", showOverflowTooltip: true },
|
{ label: "预警地点", prop: "yjDz", showOverflowTooltip: true },
|
||||||
@ -156,6 +163,7 @@ const pageData = reactive({
|
|||||||
{ label: "布控手机号", prop: "yjRysjh", showOverflowTooltip: true },
|
{ label: "布控手机号", prop: "yjRysjh", showOverflowTooltip: true },
|
||||||
{ label: "布控车牌号", prop: "yjClcph", showOverflowTooltip: true },
|
{ label: "布控车牌号", prop: "yjClcph", showOverflowTooltip: true },
|
||||||
{ label: "身份证", prop: "yjRysfzh", showOverflowTooltip: true },
|
{ label: "身份证", prop: "yjRysfzh", showOverflowTooltip: true },
|
||||||
|
{ label: "处置状态", prop: "czzt", showSolt: true },
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
const showDc = ref(false)
|
const showDc = ref(false)
|
||||||
@ -249,16 +257,13 @@ const handleExport = () => {
|
|||||||
// 处理表格数据
|
// 处理表格数据
|
||||||
pageData.tableData.forEach((row, index) => {
|
pageData.tableData.forEach((row, index) => {
|
||||||
const tr = document.createElement('tr');
|
const tr = document.createElement('tr');
|
||||||
|
|
||||||
// 添加序号
|
// 添加序号
|
||||||
const indexTd = document.createElement('td');
|
const indexTd = document.createElement('td');
|
||||||
indexTd.textContent = index + 1;
|
indexTd.textContent = index + 1;
|
||||||
tr.appendChild(indexTd);
|
tr.appendChild(indexTd);
|
||||||
|
|
||||||
// 添加其他单元格数据
|
// 添加其他单元格数据
|
||||||
pageData.tableColumn.forEach(column => {
|
pageData.tableColumn.forEach(column => {
|
||||||
const td = document.createElement('td');
|
const td = document.createElement('td');
|
||||||
|
|
||||||
// 处理自定义插槽的情况
|
// 处理自定义插槽的情况
|
||||||
if (column.showSolt) {
|
if (column.showSolt) {
|
||||||
if (column.prop === 'yjTp') {
|
if (column.prop === 'yjTp') {
|
||||||
|
|||||||
@ -16,7 +16,7 @@
|
|||||||
<DictTag :tag="false" :value="item.qtlb" color="#fff" :options="dict.D_GS_ZDQT_LB" />
|
<DictTag :tag="false" :value="item.qtlb" color="#fff" :options="dict.D_GS_ZDQT_LB" />
|
||||||
</div>
|
</div>
|
||||||
<div class="mt4 two_text_detail flex align-center">风险等级:
|
<div class="mt4 two_text_detail flex align-center">风险等级:
|
||||||
<DictTag :tag="false" :value="item.yjJb" color="#fff" :options="dict.D_BZ_TYJB" />
|
<DictTag :tag="false" :value="item.yjJb" color="#fff" :options="dict.D_BZ_YJJB" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 经验分享 -->
|
<!-- 经验分享 -->
|
||||||
|
|||||||
@ -49,7 +49,7 @@
|
|||||||
<div class="mt4 two_text_detail" v-if="buttonBox">
|
<div class="mt4 two_text_detail" v-if="buttonBox">
|
||||||
<el-button type="primary" @click="pushAssess(item)">全息档案</el-button>
|
<el-button type="primary" @click="pushAssess(item)">全息档案</el-button>
|
||||||
<el-button color="#ef7762" @click="showDetail(item)" style="color: #fff;">转合成</el-button>
|
<el-button color="#ef7762" @click="showDetail(item)" style="color: #fff;">转合成</el-button>
|
||||||
<el-button type="warning">转基管</el-button>
|
<!-- <el-button type="warning">转基管</el-button> -->
|
||||||
<el-button type="danger">转会商</el-button>
|
<el-button type="danger">转会商</el-button>
|
||||||
<el-button type="success" @click="showFeedback(item, '签收')" v-if="item.czzt == '01'">签收</el-button>
|
<el-button type="success" @click="showFeedback(item, '签收')" v-if="item.czzt == '01'">签收</el-button>
|
||||||
<el-button type="success" @click="showFeedback(item, '反馈')" v-if="item.czzt == '02'">反馈</el-button>
|
<el-button type="success" @click="showFeedback(item, '反馈')" v-if="item.czzt == '02'">反馈</el-button>
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<!--全息档案展示组件 -->
|
<!--全息档案展示组件 -->
|
||||||
<template>
|
<template>
|
||||||
<el-dialog v-model="modelValue" :title="title" :width="width" @close="close" append-to-body>
|
<el-dialog :draggable="true" v-model="modelValue" :title="title" :width="width" @close="close" append-to-body>
|
||||||
<div class="archive-container">
|
<div class="archive-container">
|
||||||
<!-- 基本信息卡片 -->
|
<!-- 基本信息卡片 -->
|
||||||
<div class="basic-info-card">
|
<div class="basic-info-card">
|
||||||
@ -235,22 +235,11 @@ watch(() => props.modelValue, (newVal, oldVal) => {
|
|||||||
const personData = ref({ });
|
const personData = ref({ });
|
||||||
|
|
||||||
|
|
||||||
// 预览图片列表
|
|
||||||
const srcList = ref([
|
|
||||||
'https://fuss10.elemecdn.com/a/3f/3302e58f9a181d2509f3dc0fa68b0jpeg.jpeg',
|
|
||||||
'https://fuss10.elemecdn.com/1/34/19aa98b1fcb2781c4fba33d850549jpeg.jpeg',
|
|
||||||
'https://fuss10.elemecdn.com/0/6f/e35ff375812e6b0020b6b4e8f9583jpeg.jpeg',
|
|
||||||
'https://fuss10.elemecdn.com/9/bb/e27858e973f5d7d3904835f46abbdjpeg.jpeg',
|
|
||||||
'https://fuss10.elemecdn.com/d/e6/c4d93a3805b3ce3f323f7974e6f78jpeg.jpeg',
|
|
||||||
'https://fuss10.elemecdn.com/3/28/bbf893f792f03a54408b3b7a7ebf0jpeg.jpeg',
|
|
||||||
'https://fuss10.elemecdn.com/2/11/6535bcfb26e4c79b48ddde44f4b6fjpeg.jpeg',
|
|
||||||
]);
|
|
||||||
|
|
||||||
// 定义事件
|
// 定义事件
|
||||||
const emit = defineEmits(['update:modelValue']);
|
const emit = defineEmits(['update:modelValue']);
|
||||||
const getryxxJbxxSave = () => {
|
const getryxxJbxxSave = () => {
|
||||||
ryxxJbxxSave({ sfzhm:'540402195805123219' // props.dataList.rysfzh
|
const params = { sfzhm: props.dataList.rysfzh || props.dataList.yjRysfzh||props.dataList.sfzh };
|
||||||
}).then((res) => {
|
ryxxJbxxSave(params).then((res) => {
|
||||||
personData.value = res[0]
|
personData.value = res[0]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,9 +25,8 @@ import DialogDragger from "@/views/home/layout/dialogDragger.vue";
|
|||||||
import deployControlItem from "@/views/home/components/deployControlItem.vue";
|
import deployControlItem from "@/views/home/components/deployControlItem.vue";
|
||||||
import Information from "@/views/home/model/information.vue";
|
import Information from "@/views/home/model/information.vue";
|
||||||
import SemdFqzl from '@/components/instructionHasBeen/sendFqzl.vue'
|
import SemdFqzl from '@/components/instructionHasBeen/sendFqzl.vue'
|
||||||
import { tbYjxxGsgj } from '@/api/yj'
|
|
||||||
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
|
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
|
||||||
|
import { tbYjxxGsgj } from '@/api/yj'
|
||||||
import { ref, defineProps, onMounted, watch, getCurrentInstance } from "vue";
|
import { ref, defineProps, onMounted, watch, getCurrentInstance } from "vue";
|
||||||
import emitter from "@/utils/eventBus.js";
|
import emitter from "@/utils/eventBus.js";
|
||||||
const gjyjList = ref(null); //预警列表数据
|
const gjyjList = ref(null); //预警列表数据
|
||||||
@ -49,6 +48,7 @@ const props = defineProps({
|
|||||||
function close() {
|
function close() {
|
||||||
emitter.emit('deletePointArea', 'home_yj_map');
|
emitter.emit('deletePointArea', 'home_yj_map');
|
||||||
emitter.emit("showHomeYJ", false);
|
emitter.emit("showHomeYJ", false);
|
||||||
|
emitter.emit("closeYp")
|
||||||
}
|
}
|
||||||
const showMap = ref(false)
|
const showMap = ref(false)
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
@ -202,8 +202,6 @@ const plotThetrajectory = (val) => {
|
|||||||
}
|
}
|
||||||
// 查看反馈
|
// 查看反馈
|
||||||
const showFeedback = (val) => {
|
const showFeedback = (val) => {
|
||||||
console.log(val,"查查零xxxxxx零");
|
|
||||||
|
|
||||||
emitter.emit("openFkDialog",val )
|
emitter.emit("openFkDialog",val )
|
||||||
}
|
}
|
||||||
// 发送指令
|
// 发送指令
|
||||||
@ -229,7 +227,6 @@ const closeFszl = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
@ -51,17 +51,23 @@
|
|||||||
<Yszs />
|
<Yszs />
|
||||||
</div>
|
</div>
|
||||||
<div class="flex middle-bottom mt10">
|
<div class="flex middle-bottom mt10">
|
||||||
|
<div
|
||||||
|
style="width: 30px;position: absolute;z-index: 100;left: 0;background-color: #07274d;height: 30px;text-align: center;line-height:30px;">
|
||||||
|
<el-icon :size="20" v-if="ispLayBack" @click="closeLayBack">
|
||||||
|
<Bell />
|
||||||
|
</el-icon>
|
||||||
|
<!-- -->
|
||||||
|
<el-icon :size="20" v-else @click="openLayBack">
|
||||||
|
<MuteNotification />
|
||||||
|
</el-icon>
|
||||||
|
|
||||||
|
</div>
|
||||||
<div style="width: 100%;border: 1px sienna;position: relative">
|
<div style="width: 100%;border: 1px sienna;position: relative">
|
||||||
<GdMap></GdMap>
|
<GdMap></GdMap>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex-1" style="width: 340px;position: absolute;z-index: 100;right: 0;">
|
<div class="flex-1" style="width: 340px;position: absolute;z-index: 100;right: 0;">
|
||||||
<DeployControl />
|
<DeployControl />
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="flex-1" style="width: 340px;position: absolute;z-index: 100;left: 0;">
|
|
||||||
<div style="background-color: #07274d; height: 100px;">
|
|
||||||
生份证:"xxxxxxxx"
|
|
||||||
</div>
|
|
||||||
</div> -->
|
|
||||||
<div class="flex-1" style="width: 340px;position: absolute;z-index: 100;left: 0;top: 30%;">
|
<div class="flex-1" style="width: 340px;position: absolute;z-index: 100;left: 0;top: 30%;">
|
||||||
<GeneralWindow />
|
<GeneralWindow />
|
||||||
</div>
|
</div>
|
||||||
@ -79,6 +85,7 @@
|
|||||||
<Bkcz></Bkcz>
|
<Bkcz></Bkcz>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- 左边弹窗 -->
|
<!-- 左边弹窗 -->
|
||||||
<LeftDialog></LeftDialog>
|
<LeftDialog></LeftDialog>
|
||||||
@ -86,7 +93,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, getCurrentInstance, reactive, onMounted, onUnmounted } from 'vue'
|
import { ref, onMounted, onUnmounted } from 'vue'
|
||||||
import LeftDialog from './dialog/leftDialog'
|
import LeftDialog from './dialog/leftDialog'
|
||||||
import GdMap from "@/components/GdMap/index.vue";
|
import GdMap from "@/components/GdMap/index.vue";
|
||||||
import Head from './layout/head.vue'
|
import Head from './layout/head.vue'
|
||||||
@ -98,7 +105,6 @@ import Bkcz from './model/bkcz.vue'
|
|||||||
import WarningLevels from './model/warningLevels.vue'
|
import WarningLevels from './model/warningLevels.vue'
|
||||||
import Yszs from './model/yszs.vue'
|
import Yszs from './model/yszs.vue'
|
||||||
import DeployControl from './model/deployControl.vue';
|
import DeployControl from './model/deployControl.vue';
|
||||||
import SituationAssessment from './model/situationAssessment.vue'
|
|
||||||
import Experience from './model/experience.vue'
|
import Experience from './model/experience.vue'
|
||||||
import Calendar from './model/calendar.vue'
|
import Calendar from './model/calendar.vue'
|
||||||
import KeyPpersonneltypes from './model/keyPpersonneltypes.vue'
|
import KeyPpersonneltypes from './model/keyPpersonneltypes.vue'
|
||||||
@ -109,6 +115,11 @@ import { bm, centralPoint } from '@/views/backOfficeSystem/IntelligentControl/De
|
|||||||
import Judgment from './model/judgment.vue'
|
import Judgment from './model/judgment.vue'
|
||||||
import { tbYjxxGetList } from '@/api/zdr.js'
|
import { tbYjxxGetList } from '@/api/zdr.js'
|
||||||
import GeneralWindow from './model/generalWindow.vue'
|
import GeneralWindow from './model/generalWindow.vue'
|
||||||
|
import WebSoketClass from '@/utils/webSocket.js'
|
||||||
|
import {timeValidate} from '@/utils/tools.js'
|
||||||
|
// 导入音频播放器工具类
|
||||||
|
import audioPlayer from '@/utils/audioPlayer'
|
||||||
|
const webSoket = new WebSoketClass()
|
||||||
const changeXzqh = (val, trg) => {
|
const changeXzqh = (val, trg) => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
// 先移除已有的边界
|
// 先移除已有的边界
|
||||||
@ -204,12 +215,89 @@ const makerCenter = () => {
|
|||||||
})
|
})
|
||||||
emitter.emit("addPointArea", { coords, icon: dw, flag: "hm", size: '14px', showTitle: true, offset: [0, -25] });
|
emitter.emit("addPointArea", { coords, icon: dw, flag: "hm", size: '14px', showTitle: true, offset: [0, -25] });
|
||||||
}
|
}
|
||||||
|
//播放音频
|
||||||
|
const ispLayBack = ref(true)
|
||||||
|
|
||||||
|
// 打开播放
|
||||||
|
const openLayBack = () => {
|
||||||
|
ispLayBack.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭播放
|
||||||
|
const closeLayBack = () => {
|
||||||
|
ispLayBack.value = false
|
||||||
|
audioPlayer.pause()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 初始化音频播放器
|
||||||
|
const initAudioPlayer = () => {
|
||||||
|
// 使用工具类初始化音频播放器
|
||||||
|
audioPlayer.init(require('@/assets/images/yjsy.mp3'))
|
||||||
|
.then(() => {
|
||||||
|
console.log('音频播放器初始化成功');
|
||||||
|
// 只有当ispLayBack为true时才播放
|
||||||
|
if (ispLayBack.value) {
|
||||||
|
audioPlayer.muted = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error('初始化音频播放器失败:', error);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 组件挂载时初始化音频播放器
|
||||||
|
onMounted(() => {
|
||||||
|
|
||||||
|
getDepId()
|
||||||
|
makerCenter()
|
||||||
|
mouseLeave()
|
||||||
|
getTbYjxxGetList()
|
||||||
|
// 初始化音频播放器
|
||||||
|
initAudioPlayer()
|
||||||
|
webSoket.connect()
|
||||||
|
// 监听音频播放事件,获取WebSocket消息数据
|
||||||
|
emitter.on("openYp", (newsDate) => {
|
||||||
|
// 使用工具类播放音频,自动处理静音切换
|
||||||
|
if (ispLayBack.value) {
|
||||||
|
audioPlayer.play()
|
||||||
|
.then(() => {
|
||||||
|
console.log('WebSocket触发音频播放成功');
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error('WebSocket触发音频播放失败:', error);
|
||||||
|
})
|
||||||
|
const coords = {
|
||||||
|
id: newsDate.id,
|
||||||
|
jd: newsDate.jd,
|
||||||
|
wd: newsDate.wd,
|
||||||
|
yjtp: newsDate.yjTp,
|
||||||
|
yjnr: newsDate.yjNr,
|
||||||
|
yjLx: newsDate.yjlx,
|
||||||
|
yjlx: '01',
|
||||||
|
yjsj: newsDate.yjSj,
|
||||||
|
rysfzh: newsDate.yjRysfzh,
|
||||||
|
ryxm: newsDate.yjRyxm,
|
||||||
|
}
|
||||||
|
const icons = require("@/assets/point/jq.png")
|
||||||
|
emitter.emit('addPointArea', { coords: [{ jd: coords.jd, wd: coords.wd }], icon: icons, flag: 'yjs' })
|
||||||
|
emitter.emit('yjDetail', coords)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
emitter.on("closeYp", () => {
|
||||||
|
audioPlayer.pause()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
const timeRef = ref('')
|
|
||||||
let bj=ref(0)
|
|
||||||
// 布控预警上图
|
// 布控预警上图
|
||||||
const getTbYjxxGetList = () => {
|
const getTbYjxxGetList = () => {
|
||||||
tbYjxxGetList().then(res => {
|
// 设置为当天时间范围:00:00:00 到 23:59:59
|
||||||
|
const today = new Date();
|
||||||
|
const startTime = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0).getTime();
|
||||||
|
const endTime = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 23, 59, 59).getTime();
|
||||||
|
const promes = {
|
||||||
|
startTime:timeValidate(startTime),
|
||||||
|
endTime:timeValidate(endTime),
|
||||||
|
}
|
||||||
|
tbYjxxGetList(promes).then(res => {
|
||||||
const coords = res.map(item => {
|
const coords = res.map(item => {
|
||||||
return {
|
return {
|
||||||
id: item.id,
|
id: item.id,
|
||||||
@ -224,33 +312,12 @@ const getTbYjxxGetList = () => {
|
|||||||
ryxm: item.yjRyxm,
|
ryxm: item.yjRyxm,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
if (timeRef.value != coords[0].yjsj&&bj.value==1) {
|
|
||||||
const icons = require("@/assets/point/jq.png")
|
|
||||||
emitter.emit('addPointArea', { coords: [{ jd: coords[0].jd, wd: coords[0].wd }], icon: icons, flag: 'yjs' })
|
|
||||||
emitter.emit('yjDetail', coords[0])
|
|
||||||
timeRef.value = coords[0].yjsj
|
|
||||||
}
|
|
||||||
bj.value=1
|
|
||||||
|
|
||||||
const icon = require("@/assets/point/yj.png")
|
const icon = require("@/assets/point/yj.png")
|
||||||
emitter.emit('addPoint', { coords: coords, icon: icon, flag: 'yj', fontColor: '#FF0000' })
|
emitter.emit('addPoint', { coords: coords, icon: icon, flag: 'yj', fontColor: '#FF0000' })
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
let timing = ref(true)
|
let timing = ref(true)
|
||||||
onMounted(() => {
|
|
||||||
getDepId()
|
|
||||||
makerCenter()
|
|
||||||
mouseLeave()
|
|
||||||
getTbYjxxGetList()
|
|
||||||
})
|
|
||||||
const timer = setInterval(() => {
|
|
||||||
getTbYjxxGetList()
|
|
||||||
}, 60000)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const reversalPushShow = ref(true)
|
const reversalPushShow = ref(true)
|
||||||
const reversalPush = () => {
|
const reversalPush = () => {
|
||||||
@ -272,7 +339,14 @@ const mouseLeave = () => {
|
|||||||
}
|
}
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
clearInterval(timing.value)
|
clearInterval(timing.value)
|
||||||
clearInterval(timer)
|
// 组件卸载时停止音频播放并释放资源
|
||||||
|
if (audioPlayer) {
|
||||||
|
audioPlayer.destroy()
|
||||||
|
}
|
||||||
|
// 组件卸载时关闭WebSocket连接
|
||||||
|
if (webSoket) {
|
||||||
|
webSoket.closeConnection()
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -46,7 +46,7 @@ const checkDatas = reactive({
|
|||||||
hasChoose: ["布控"]
|
hasChoose: ["布控"]
|
||||||
});
|
});
|
||||||
const total = ref(0);
|
const total = ref(0);
|
||||||
const yjJb = ref([10, 20, 30, 40]);
|
const yjJb = ref(['01', '02', '03', '04']);
|
||||||
const yjLx = ref(['01']);
|
const yjLx = ref(['01']);
|
||||||
const pageNum = ref(1);
|
const pageNum = ref(1);
|
||||||
const loading = ref(false); // 加载中
|
const loading = ref(false); // 加载中
|
||||||
@ -73,10 +73,10 @@ function changeData(val) {
|
|||||||
checkData.hasChoose = val;
|
checkData.hasChoose = val;
|
||||||
let ids = [];
|
let ids = [];
|
||||||
val.forEach(it => {
|
val.forEach(it => {
|
||||||
if (it == '一级') ids.push(10);
|
if (it == '一级') ids.push('01');
|
||||||
if (it == '二级') ids.push(20);
|
if (it == '二级') ids.push('02');
|
||||||
if (it == '三级') ids.push(30);
|
if (it == '三级') ids.push('03');
|
||||||
if (it == '四级') ids.push(40);
|
if (it == '四级') ids.push('04');
|
||||||
});
|
});
|
||||||
yjJb.value = ids
|
yjJb.value = ids
|
||||||
if (val.length == 0) personList.value = [];
|
if (val.length == 0) personList.value = [];
|
||||||
@ -90,7 +90,7 @@ function changeDatas(val) {
|
|||||||
let ids = [];
|
let ids = [];
|
||||||
if (val.includes('布控')) {
|
if (val.includes('布控')) {
|
||||||
typeS.value = true
|
typeS.value = true
|
||||||
yjJb.value = [10, 20, 30, 40]
|
yjJb.value = ['01', '02', '03', '04']
|
||||||
} else {
|
} else {
|
||||||
yjJb.value = []
|
yjJb.value = []
|
||||||
typeS.value = false
|
typeS.value = false
|
||||||
@ -108,7 +108,7 @@ function changeDatas(val) {
|
|||||||
if (val.length == 0) personList.value = [];
|
if (val.length == 0) personList.value = [];
|
||||||
else getList();
|
else getList();
|
||||||
}
|
}
|
||||||
const isExpanded = ref(true); // 控制展开/收缩状态
|
const isExpanded = ref(false); // 控制展开/收缩状态
|
||||||
|
|
||||||
const changeTab = () => {
|
const changeTab = () => {
|
||||||
// 切换展开/收缩状态
|
// 切换展开/收缩状态
|
||||||
@ -244,9 +244,35 @@ const chooseItem = (item) => {
|
|||||||
emitter.emit('showHomeYJ', [content.value]);
|
emitter.emit('showHomeYJ', [content.value]);
|
||||||
})
|
})
|
||||||
break;
|
break;
|
||||||
case '':
|
case '03':
|
||||||
|
content.value = {
|
||||||
|
id: item.id,
|
||||||
|
ryxm: res.xm || '',
|
||||||
|
rysfzh: res.sfzh,
|
||||||
|
yjsj: res.yjsj || '',
|
||||||
|
yjdz: "",
|
||||||
|
yjtp: "",
|
||||||
|
yjbq: res.xwms || '',
|
||||||
|
yjlb: item.yjlb || '',
|
||||||
|
czzt: res.czzt || '',
|
||||||
|
yjbt: res.yjBt || '',
|
||||||
|
}
|
||||||
|
emitter.emit('showHomeYJ', [content.value]);
|
||||||
break;
|
break;
|
||||||
case '04':
|
case '04':
|
||||||
|
content.value = {
|
||||||
|
id: item.id,
|
||||||
|
ryxm: res.xm || '',
|
||||||
|
rysfzh: res.sfzh,
|
||||||
|
yjsj: res.yjsj || '',
|
||||||
|
yjdz: "",
|
||||||
|
yjtp: "",
|
||||||
|
yjbq: res.xwms || '',
|
||||||
|
yjlb: item.yjlb || '',
|
||||||
|
czzt: res.czzt || '',
|
||||||
|
yjbt: res.yjBt || '',
|
||||||
|
}
|
||||||
|
emitter.emit('showHomeYJ', [content.value]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
<div class="comom-cnt zdryBox">
|
<div class="comom-cnt zdryBox">
|
||||||
<!-- <ul class="ryBox" v-loading="loading" v-infinite-scroll="loadList" style="overflow: auto">
|
<!-- <ul class="ryBox" v-loading="loading" v-infinite-scroll="loadList" style="overflow: auto">
|
||||||
<li v-for="item in personList" :key="item.id" >
|
<li v-for="item in personList" :key="item.id" >
|
||||||
<Assessment :item="item" :dict="{D_GS_ZDQT_LB,D_BZ_TYJB}" :lx="3"/>
|
<Assessment :item="item" :dict="{D_GS_ZDQT_LB,D_BZ_YJJB}" :lx="3"/>
|
||||||
</li>
|
</li>
|
||||||
<MOSTY.Empty :show="!loading && personList.length <= 0" :imgSize="100"></MOSTY.Empty>
|
<MOSTY.Empty :show="!loading && personList.length <= 0" :imgSize="100"></MOSTY.Empty>
|
||||||
</ul> -->
|
</ul> -->
|
||||||
@ -20,7 +20,7 @@ import * as MOSTY from "@/components/MyComponents/index";
|
|||||||
import CheckBox from "@/components/checkBox/index.vue";
|
import CheckBox from "@/components/checkBox/index.vue";
|
||||||
import { ref ,reactive, onMounted,getCurrentInstance} from 'vue';
|
import { ref ,reactive, onMounted,getCurrentInstance} from 'vue';
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const {D_GS_ZDQT_LB,D_BZ_TYJB} =proxy.$dict('D_GS_ZDQT_LB','D_BZ_TYJB')
|
const {D_GS_ZDQT_LB,D_BZ_YJJB} =proxy.$dict('D_GS_ZDQT_LB','D_BZ_YJJB')
|
||||||
const checkData = reactive({
|
const checkData = reactive({
|
||||||
list: ["人员", "车辆"],
|
list: ["人员", "车辆"],
|
||||||
hasChoose: ["人员", "车辆"],
|
hasChoose: ["人员", "车辆"],
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
<div class="comom-cnt zdryBox">
|
<div class="comom-cnt zdryBox">
|
||||||
<ul class="ryBox" v-loading="loading" v-infinite-scroll="loadList" style="overflow: auto">
|
<ul class="ryBox" v-loading="loading" v-infinite-scroll="loadList" style="overflow: auto">
|
||||||
<li v-for="item in personList" :key="item.id" >
|
<li v-for="item in personList" :key="item.id" >
|
||||||
<Assessment :item="item" :dict="{D_GS_ZDQT_LB,D_BZ_TYJB}" :lx="2"/>
|
<Assessment :item="item" :dict="{D_GS_ZDQT_LB,D_BZ_YJJB}" :lx="2"/>
|
||||||
</li>
|
</li>
|
||||||
<MOSTY.Empty :show="!loading && personList.length <= 0" :imgSize="100"></MOSTY.Empty>
|
<MOSTY.Empty :show="!loading && personList.length <= 0" :imgSize="100"></MOSTY.Empty>
|
||||||
</ul>
|
</ul>
|
||||||
@ -20,7 +20,7 @@ import * as MOSTY from "@/components/MyComponents/index";
|
|||||||
import CheckBox from "@/components/checkBox/index.vue";
|
import CheckBox from "@/components/checkBox/index.vue";
|
||||||
import { ref ,reactive, onMounted,getCurrentInstance} from 'vue';
|
import { ref ,reactive, onMounted,getCurrentInstance} from 'vue';
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const {D_GS_ZDQT_LB,D_BZ_TYJB} =proxy.$dict('D_GS_ZDQT_LB','D_BZ_TYJB')
|
const {D_GS_ZDQT_LB,D_BZ_YJJB} =proxy.$dict('D_GS_ZDQT_LB','D_BZ_YJJB')
|
||||||
const checkData = reactive({
|
const checkData = reactive({
|
||||||
list: ["人员", "车辆"],
|
list: ["人员", "车辆"],
|
||||||
hasChoose: ["人员", "车辆"],
|
hasChoose: ["人员", "车辆"],
|
||||||
|
|||||||
Reference in New Issue
Block a user