更新代码
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="titleBox">
|
||||
<PageTitle title="开锁业场所管理"/>
|
||||
<PageTitle title="布控审批"/>
|
||||
</div>
|
||||
<!-- 搜索 -->
|
||||
<div ref="searchBox">
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="titleBox">
|
||||
<PageTitle title="开锁业务信息管理"/>
|
||||
<PageTitle title="我的布控"/>
|
||||
</div>
|
||||
<!-- 搜索 -->
|
||||
<div ref="searchBox">
|
@ -0,0 +1,19 @@
|
||||
<template>
|
||||
<div class="echartsBox">ggg</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.echartsBox {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(0,29,75,0.6);
|
||||
border-radius: 0 0 4px 4px;
|
||||
}
|
||||
|
||||
</style>
|
@ -0,0 +1,66 @@
|
||||
<template>
|
||||
<div class="count-container">
|
||||
<div class="count-item">
|
||||
<div class="count-title">布控总数</div>
|
||||
<div class="count-number"><Statis :count="dataform.bkzs" :len="7" /></div>
|
||||
</div>
|
||||
<div class="count-item">
|
||||
<div class="count-title">已处置数</div>
|
||||
<div class="count-number"><Statis :count="dataform.czs" :len="7" /></div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import Statis from "@/components/statis.vue";
|
||||
import { reactive } from "vue";
|
||||
const dataform = reactive({
|
||||
bkzs: 287,
|
||||
czs: 123
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.count-container {
|
||||
display: flex;
|
||||
padding: 10px 5px;
|
||||
background: rgba(0, 29, 75, 0.4);
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
.count-item {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border-radius: 4px;
|
||||
padding: 6px;
|
||||
background: url("~@/assets/images/bg12.png") no-repeat center center;
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
|
||||
.count-title {
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
margin-right: 4px;
|
||||
background: url("~@/assets/images/bg13.png") no-repeat center center;
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
|
||||
.count-number {
|
||||
font-family: "Digital-7", monospace;
|
||||
font-size: 32px;
|
||||
background: #1e3799;
|
||||
color: #00ffff;
|
||||
padding: 8px;
|
||||
border-radius: 4px;
|
||||
text-align: center;
|
||||
letter-spacing: 2px;
|
||||
width: 150px;
|
||||
height: 33px;
|
||||
background: url("~@/assets/images/statis.png") no-repeat center center;
|
||||
background-size: 100% 100%;
|
||||
padding: 0 10px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,165 @@
|
||||
<template>
|
||||
<div id="circlecz" class="circlecz" style="width: 100%; height: 100%"></div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import * as echarts from "echarts";
|
||||
import { ref, onMounted, watch, defineProps } from "vue";
|
||||
|
||||
onMounted(() => {
|
||||
lineChartFn();
|
||||
});
|
||||
function lineChartFn() {
|
||||
var chartDom = document.getElementById("circlecz");
|
||||
var myChart = echarts.init(chartDom);
|
||||
var option;
|
||||
option = {
|
||||
legend: {
|
||||
type: "plain",
|
||||
show: true,
|
||||
right: 0,
|
||||
textStyle: { color: "#ddd" },
|
||||
data: [
|
||||
{ name: "总数" },
|
||||
{ name: "已处置" }
|
||||
]
|
||||
},
|
||||
tooltip: {
|
||||
trigger: "axis",
|
||||
axisPointer: {
|
||||
type: "shadow"
|
||||
}
|
||||
},
|
||||
grid: {
|
||||
top: "25%",
|
||||
right: "10%",
|
||||
left: "10%",
|
||||
bottom: "22%"
|
||||
},
|
||||
xAxis: [
|
||||
{
|
||||
type: "category",
|
||||
data: ['巴宜区','工布江达县','波密县','朗县','墨脱县','察隅县','米林县'],
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: "rgba(255,255,255,0.12)"
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
margin: 10,
|
||||
color: "#e2e9ff",
|
||||
textStyle: {
|
||||
fontSize: 14
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
yAxis: [
|
||||
{
|
||||
// name: '单位:万元',
|
||||
axisLabel: {
|
||||
formatter: "{value}",
|
||||
color: "#e2e9ff"
|
||||
},
|
||||
axisLine: {
|
||||
show: false,
|
||||
lineStyle: {
|
||||
color: "rgba(255,255,255,1)"
|
||||
}
|
||||
},
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
color: "rgba(255,255,255,0.12)"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
series: [
|
||||
{
|
||||
name: "总数",
|
||||
type: "bar",
|
||||
data: [10,20,30,40,50,60,70],
|
||||
barWidth: "10px",
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: new echarts.graphic.LinearGradient(0,0,0,1,[
|
||||
{
|
||||
offset: 0,
|
||||
color: "rgba(0,244,255,1)" // 0% 处的颜色
|
||||
},
|
||||
{
|
||||
offset: 1,
|
||||
color: "rgba(0,77,167,1)" // 100% 处的颜色
|
||||
}
|
||||
],
|
||||
false
|
||||
),
|
||||
}
|
||||
},
|
||||
markPoint: {
|
||||
symbol: 'path://M62 62h900v900h-900v-900z', // 使用 SVG path 绘制扁圆形状
|
||||
symbolSize: [10, 4], // 设置扁圆的宽和高
|
||||
itemStyle: {
|
||||
color: '#087df9' // 圆盘颜色
|
||||
},
|
||||
data: [10,20,30,40,50,60,70].map((obj, index) => ({
|
||||
xAxis: index, // 对应柱子的横坐标
|
||||
yAxis: obj + 0 // 柱子的值加上一些偏移量
|
||||
}))
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "已处置",
|
||||
type: "bar",
|
||||
data: [10,20,30,40,50,60,70],
|
||||
barWidth: "10px",
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: new echarts.graphic.LinearGradient(0,0,0,1,
|
||||
[
|
||||
{
|
||||
offset: 0,
|
||||
color: "rgba(24, 232, 229, 1)" // 0% 处的颜色
|
||||
},
|
||||
{
|
||||
offset: 1,
|
||||
color: "rgba(3, 110, 83, 1)" // 100% 处的颜色
|
||||
}
|
||||
],
|
||||
false
|
||||
),
|
||||
}
|
||||
},
|
||||
markPoint: {
|
||||
symbol: 'path://M62 62h900v900h-900v-900z', // 使用 SVG path 绘制扁圆形状
|
||||
symbolSize: [10, 4], // 设置扁圆的宽和高
|
||||
itemStyle: {
|
||||
color: '#00FFFF' // 圆盘颜色
|
||||
},
|
||||
data: [10,20,30,40,50,60,70].map((obj, index) => ({
|
||||
xAxis: index, // 对应柱子的横坐标
|
||||
yAxis: obj + 0 // 柱子的值加上一些偏移量
|
||||
}))
|
||||
},
|
||||
},
|
||||
]
|
||||
};
|
||||
|
||||
option && myChart.setOption(option);
|
||||
window.onresize = function () {
|
||||
myChart.resize();
|
||||
};
|
||||
document.getElementById("circlecz").setAttribute("_echarts_instance_", "");
|
||||
}
|
||||
onMounted(() => {
|
||||
lineChartFn();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.circlecz {
|
||||
height: 100%;
|
||||
background: rgba(0,29,75,0.6);
|
||||
border-radius: 0 0 4px 4px;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,142 @@
|
||||
<template>
|
||||
<div class="carCnt_bottom relative flex align-center">
|
||||
<div class="bottom-item-left">
|
||||
<div class="imgIcon"></div>
|
||||
<div class="leftImg">
|
||||
<div class="sirxle"></div>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="bottom-item-right noScollLine">
|
||||
<li class="itemChild" v-for="item in dataObj.countList" :key="item">
|
||||
<div class="label">
|
||||
<span class="imgicon mr10" :style="{ background: item.color }"></span>
|
||||
{{ item.label }}
|
||||
</div>
|
||||
<div class="num">{{ item.num }}</div>
|
||||
<div class="per" :style="{ color: item.color }">{{ item.persont }}</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { onMounted, ref, reactive,defineProps, onUnmounted } from "vue";
|
||||
const dataObj = reactive({
|
||||
btns:['今日','本周','自定义'],//按钮
|
||||
head:{num:0,hb:0,tb:0},
|
||||
countList:[
|
||||
{color:'#F57100',label:'刑事重点人员',num:0,persont:'0%'},
|
||||
{color:'#FFD15C',label:'禁毒重点人员',num:0,persont:'0%'},
|
||||
{color:'#0072FF',label:'治安重点人员',num:0,persont:'0%'},
|
||||
{color:'#00FFFF',label:'经侦重点人员',num:0,persont:'0%'},
|
||||
{color:'#09FF66',label:'其他',num:0,persont:'0%'},
|
||||
]
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@mixin textColor($color1, $color2) {
|
||||
background-image: linear-gradient(0deg, $color1 0%, $color2 100%);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
}
|
||||
@mixin beforeText($width, $height, $left: 0, $top: 0) {
|
||||
position: absolute;
|
||||
content: "";
|
||||
left: $left;
|
||||
top: $top;
|
||||
height: $height;
|
||||
width: $width;
|
||||
}
|
||||
.carCnt_bottom {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
background: rgba(0,29,75,0.6);
|
||||
border-radius: 0 0 4px 4px;
|
||||
.bottom-item-left {
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
.imgIcon {
|
||||
position: absolute;
|
||||
left: 39px;
|
||||
top: 40px;
|
||||
width: 42px;
|
||||
height: 40px;
|
||||
background: url("~@/assets/images/imgIcon1.png") no-repeat center center;
|
||||
background-size: 100% 100%;
|
||||
border-radius: 50%;
|
||||
animation: spin 10s infinite linear;
|
||||
}
|
||||
.leftImg {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
&::before {
|
||||
position: absolute;
|
||||
content: "";
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
background: url("~@/assets/images/sircleOut.png") no-repeat center
|
||||
center;
|
||||
background-size: 100% 100%;
|
||||
animation: revoleCrile 10s infinite linear;
|
||||
}
|
||||
.sirxle {
|
||||
position: absolute;
|
||||
width: 91px;
|
||||
height: 91px;
|
||||
left: 15px;
|
||||
top: 15px;
|
||||
background: url("~@/assets/images/sircleIn.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
.bottom-item-right {
|
||||
width: calc(100% - 150px);
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
overflow-y: auto;
|
||||
margin-left: 30px;
|
||||
position: absolute;
|
||||
left: 116px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
.itemChild {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 26px;
|
||||
border-bottom: 1px dashed #0072ff;
|
||||
}
|
||||
.label {
|
||||
width: 60%;
|
||||
.imgicon {
|
||||
display: inline-block;
|
||||
width: 13px;
|
||||
height: 6px;
|
||||
border-radius: 2px;
|
||||
transform: rotate(-3deg) skew(5deg, 5deg);
|
||||
}
|
||||
}
|
||||
.num {
|
||||
width: 20%;
|
||||
}
|
||||
.per {
|
||||
width: 20%;
|
||||
}
|
||||
}
|
||||
}
|
||||
@keyframes spin {
|
||||
to {
|
||||
transform: rotate((1turn));
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,166 @@
|
||||
<template>
|
||||
<div class="personCard relative flex mb10 pointer">
|
||||
<div class="cxbq absolute">已完成</div>
|
||||
<div class="avatarBox relative">
|
||||
<div class="marks f12 absolute" :class="changeBg(props.item.yjjb)">
|
||||
处置
|
||||
</div>
|
||||
<div><img width="80" height="120" :src="pro" alt=""></div>
|
||||
<span class="smallbtn">全息档案</span>
|
||||
</div>
|
||||
<div class="infoBox">
|
||||
<div class="basicInfo">
|
||||
<span class="name">{{ props.item.name }}</span>
|
||||
<span class="idCard">{{ props.item.idCard }}</span>
|
||||
<span class="bqbox">{{ props.item.yjbq }}</span>
|
||||
</div>
|
||||
<div class="detailInfo">
|
||||
<div class="infoItem">
|
||||
<span class="label">性别:</span>
|
||||
<span class="value">{{ props.item.gender }}</span>
|
||||
</div>
|
||||
<div class="infoItem">
|
||||
<span class="label">年龄:</span>
|
||||
<span class="value">{{ props.item.age }}岁</span>
|
||||
</div>
|
||||
<div class="infoItem">
|
||||
<span class="label">住址:</span>
|
||||
<span class="value">{{ props.item.address }}</span>
|
||||
</div>
|
||||
<div class="infoItem">
|
||||
<span class="label">所属派出所:</span>
|
||||
<span class="value">{{ props.item.sspcs }}</span>
|
||||
</div>
|
||||
<div class="infoItem">
|
||||
<span class="label">列控原因:</span>
|
||||
<span class="value">{{ props.item.yy }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import pro from "@/assets/images/icon100.png";
|
||||
import { defineProps } from "vue";
|
||||
const props = defineProps({
|
||||
item: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
}
|
||||
});
|
||||
// 切换背景
|
||||
const changeBg = (type) => {
|
||||
switch (type) {
|
||||
case "10":
|
||||
return "marks_red";
|
||||
case "20":
|
||||
return "marks_orange";
|
||||
case "30":
|
||||
return "marks_yellow";
|
||||
case "40":
|
||||
return "marks_blue";
|
||||
default:
|
||||
return "marks_red";
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.personCard {
|
||||
background: rgba(10, 49, 88, 0.6);
|
||||
box-shadow: inset 0px 0px 10px 0px rgba(56, 119, 242, 0.5);
|
||||
border-radius: 0px 0px 0px 0px;
|
||||
border: 1px solid #0072ff;
|
||||
padding: 10px;
|
||||
box-sizing: border-box;
|
||||
transition: all 0.3s;
|
||||
&:hover {
|
||||
background: rgba(17, 66, 96, 0.8);
|
||||
}
|
||||
.cxbq {
|
||||
right: 5px;
|
||||
top: 5px;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
line-height: 50px;
|
||||
font-size: 14px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 50%;
|
||||
background: rgba(0, 255, 255, 0.3);
|
||||
border: 1px solid #00ffff;
|
||||
color: #00ffff;
|
||||
transform: rotate(-48deg);
|
||||
}
|
||||
.avatarBox {
|
||||
margin-right: 15px;
|
||||
overflow: hidden;
|
||||
.marks {
|
||||
width: 70px;
|
||||
height: 32px;
|
||||
line-height: 40px;
|
||||
text-align: center;
|
||||
background: rgba(255, 62, 62, 0.75);
|
||||
top: -4px;
|
||||
left: -24px;
|
||||
transform: rotate(-45deg);
|
||||
}
|
||||
.marks_red {
|
||||
background: rgba(255, 62, 62, 0.75);
|
||||
}
|
||||
.marks_orange {
|
||||
background: rgba(255, 155, 62, 0.75);
|
||||
}
|
||||
.marks_yellow {
|
||||
background: rgba(255, 239, 62, 0.75);
|
||||
}
|
||||
.marks_blue {
|
||||
background: rgba(0, 114, 255, 0.75);
|
||||
}
|
||||
}
|
||||
.bqbox {
|
||||
font-size: 12px;
|
||||
color: #ff0000;
|
||||
padding: 4px 6px;
|
||||
background: rgba(255, 0, 0, 0.3);
|
||||
border-radius: 1px 1px 1px 1px;
|
||||
border: 1px solid #ff0000;
|
||||
border-radius: 4px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.infoBox {
|
||||
flex: 1;
|
||||
.basicInfo {
|
||||
margin-bottom: 10px;
|
||||
.name {
|
||||
font-size: 16px;
|
||||
color: #fff;
|
||||
margin-right: 15px;
|
||||
}
|
||||
.idCard {
|
||||
color: #89afcf;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
.detailInfo {
|
||||
.infoItem {
|
||||
color: #89afcf;
|
||||
font-size: 14px;
|
||||
margin-bottom: 5px;
|
||||
.label {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.smallbtn {
|
||||
display: inline-block;
|
||||
padding: 4px 10px;
|
||||
border-radius: 4px;
|
||||
background: #0072ff;
|
||||
border-radius: 5px 5px 5px 5px;
|
||||
margin-top: 6px;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,177 @@
|
||||
<template>
|
||||
<div class="systemBox">
|
||||
<!-- 左边列表 -->
|
||||
<div class="leftList">
|
||||
<div class="hed flex just-between align center">
|
||||
<span class="f14">布控列表</span>
|
||||
<span style="color: #00b7ff" class="pointer">查看更多》</span>
|
||||
</div>
|
||||
<div class="ml10 mr10 mt10">
|
||||
<el-input v-model="searchForm.keyword" placeholder="姓名、证件号码搜索">
|
||||
<template #append><el-icon><Search /></el-icon ></template>
|
||||
</el-input>
|
||||
</div>
|
||||
<ul class="listContent noScollLine mt10">
|
||||
<li v-for="(item, index) in personList" :key="index">
|
||||
<YjItem :item="item"></YjItem>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- 右边模块 -->
|
||||
<div class="rightList">
|
||||
<!-- 第一部门 -->
|
||||
<div>
|
||||
<div class="hed flex align-center">
|
||||
<span @click="active = it" :class="active == it ? 'active' : ''" class="f14 mr10 pointer" v-for="it in btn.bkBtn" :key="it" >{{ it }}</span>
|
||||
</div>
|
||||
<Count></Count>
|
||||
</div>
|
||||
<!-- 第二部分 -->
|
||||
<div class="mt10">
|
||||
<div class="hed flex align-center">布控级别统计</div>
|
||||
<div style="width:100%;height:170px">
|
||||
<Bkjbtj></Bkjbtj>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 第三部分 -->
|
||||
<div class="mt10">
|
||||
<div class="hed flex align-center">
|
||||
<span @click="active1 = it" :class="active1 == it ? 'active' : ''" class="f14 mr10 pointer" v-for="it in btn.yrBtn" :key="it" >{{ it }}</span>
|
||||
</div>
|
||||
<div style="width:100%;height:170px">
|
||||
<RyCount></RyCount>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 第四部分 -->
|
||||
<div class="mt10">
|
||||
<div class="hed flex align-center">轨迹统计</div>
|
||||
<div style="width:100%;height:170px">
|
||||
<Gjtj></Gjtj>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import YjItem from "./components/yjItem.vue";
|
||||
import Count from "./components/count.vue";
|
||||
import Bkjbtj from "./components/bkjbtj.vue";
|
||||
import RyCount from "./components/ryCount.vue";
|
||||
import Gjtj from "./components/gjtj.vue";
|
||||
import { reactive, ref } from "vue";
|
||||
|
||||
const searchForm = ref({
|
||||
keyword: ""
|
||||
});
|
||||
const personList = ref([
|
||||
{
|
||||
name: "张三",
|
||||
idCard: "330102199001011234",
|
||||
gender: "男",
|
||||
sspcs: "xxx上城区派出所",
|
||||
address: "xxxx上城区",
|
||||
yjjb: "10",
|
||||
yjbq: "吸贩毒",
|
||||
yy: "2023-01-01 12:00:00"
|
||||
},
|
||||
{
|
||||
name: "张三",
|
||||
idCard: "330102199001011234",
|
||||
gender: "男",
|
||||
sspcs: "xxx上城区派出所",
|
||||
address: "xxxx上城区",
|
||||
yjjb: "40",
|
||||
yjbq: "吸贩毒",
|
||||
yy: "2023-01-01 12:00:00"
|
||||
},
|
||||
{
|
||||
name: "张三",
|
||||
idCard: "330102199001011234",
|
||||
gender: "男",
|
||||
sspcs: "xxx上城区派出所",
|
||||
address: "xxxx上城区",
|
||||
yjjb: "20",
|
||||
yjbq: "吸贩毒",
|
||||
yy: "2023-01-01 12:00:00"
|
||||
},
|
||||
{
|
||||
name: "张三",
|
||||
idCard: "330102199001011234",
|
||||
gender: "男",
|
||||
sspcs: "xxx上城区派出所",
|
||||
address: "xxxx上城区",
|
||||
yjjb: "30",
|
||||
yjbq: "吸贩毒",
|
||||
yy: "2023-01-01 12:00:00"
|
||||
}
|
||||
]);
|
||||
const btn = reactive({
|
||||
bkBtn :["布控人员", "布控群体"],
|
||||
yrBtn :["人员身份标签统计", "人员行为标签统计"]
|
||||
});
|
||||
const active = ref("布控人员");
|
||||
const active1 = ref("人员身份标签统计");
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "@/assets/css/layout.scss";
|
||||
@import "@/assets/css/element-plus.scss";
|
||||
|
||||
.systemBox {
|
||||
position: relative;
|
||||
left: -20px;
|
||||
top: 0;
|
||||
width: calc(100% + 40px);
|
||||
height: calc(100% + 20px);
|
||||
background: #e9edf6;
|
||||
.leftList {
|
||||
position: absolute;
|
||||
left: 20px;
|
||||
top: 10px;
|
||||
width: 427px;
|
||||
height: calc(100% - 20px);
|
||||
border-radius: 6px 6px 6px 6px;
|
||||
background: rgba(0, 29, 75, 0.4);
|
||||
.listContent {
|
||||
height: calc(100% - 86px);
|
||||
overflow: hidden;
|
||||
overflow-y: auto;
|
||||
padding: 10px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
::v-deep .el-input__inner {
|
||||
background: rgba(0, 22, 83, 0.4);
|
||||
border: 1px solid #0072ff;
|
||||
}
|
||||
::v-deep .el-input-group__append {
|
||||
background: #0386fb;
|
||||
color: #fff;
|
||||
border: 1px solid #0072ff;
|
||||
}
|
||||
}
|
||||
.rightList {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
top: 10px;
|
||||
width: 427px;
|
||||
height: calc(100% - 20px);
|
||||
.active {
|
||||
font-size: 18px;
|
||||
font-family: "YSBTH";
|
||||
}
|
||||
}
|
||||
.hed {
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
padding-left: 10px;
|
||||
background: linear-gradient(
|
||||
90deg,
|
||||
#124cb3 0%,
|
||||
rgba(18, 76, 179, 0.23) 77%,
|
||||
rgba(18, 76, 179, 0) 100%
|
||||
);
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,13 @@
|
||||
<template>
|
||||
<div>行为标签管理</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
@ -2,21 +2,28 @@
|
||||
<div>
|
||||
<div class="titleBox">
|
||||
<PageTitle title="标签组合管理">
|
||||
<el-button type="primary">
|
||||
<span style="vertical-align: middle">调级</span>
|
||||
</el-button>
|
||||
<el-button type="primary">
|
||||
<span style="vertical-align: middle">导出</span>
|
||||
</el-button>
|
||||
<el-button type="primary">
|
||||
<span style="vertical-align: middle">批量导入</span>
|
||||
</el-button>
|
||||
<el-button type="primary" @click="addEdit('add', '')">
|
||||
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
||||
<span style="vertical-align: middle">新增</span>
|
||||
</el-button>
|
||||
<el-button type="danger" @click="addEdit('add', '')">
|
||||
<el-icon style="vertical-align: middle"><Dete /></el-icon>
|
||||
<span style="vertical-align: middle">批量删除</span>
|
||||
</el-button>
|
||||
</PageTitle>
|
||||
</div>
|
||||
<!-- 搜索 -->
|
||||
<div ref="searchBox">
|
||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
|
||||
<template #defaultSlot>
|
||||
<el-select placeholder="请选择类型" v-model="chooseType" @change="handleType">
|
||||
<el-option v-for="it in list.chooseList" :key="it" :value="it" :label="it"></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</Search>
|
||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
||||
</div>
|
||||
<!-- 表格 -->
|
||||
<div class="tabBox">
|
||||
@ -29,16 +36,11 @@
|
||||
:controlsWidth="pageData.controlsWidth"
|
||||
@chooseData="chooseData"
|
||||
>
|
||||
<template #sfjs="{ row }">
|
||||
<DictTag :value="row.sfjs" :options="list.sf" />
|
||||
</template>
|
||||
<template #xxlx="{ row }">
|
||||
<DictTag :value="row.xxlx" :options="list.xxlx" />
|
||||
</template>
|
||||
<!-- 操作 -->
|
||||
<template #controls="{ row }">
|
||||
<el-button size="small" @click="addEdit('edit', row)">编辑</el-button>
|
||||
<el-button size="small" @click="delDictItem([row.id])" type="danger">删除</el-button>
|
||||
<el-link type="primary" @click="addEdit('edit', row)">编辑</el-link>
|
||||
<el-link type="primary" @click="addEdit('edit', row)">编辑</el-link>
|
||||
<el-link type="danger" @click="delDictItem([row.id])">删除</el-link>
|
||||
</template>
|
||||
</MyTable>
|
||||
<Pages
|
||||
@ -52,7 +54,7 @@
|
||||
></Pages>
|
||||
</div>
|
||||
<!-- 编辑详情 -->
|
||||
<EditAddForm ref="detailDiloag" :dic="{xxlx:list.xxlx,sf:list.sf}" @updateDate="getList" />
|
||||
<EditAddForm ref="detailDiloag" @updateDate="getList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -65,35 +67,74 @@ import EditAddForm from "./components/editAddForm.vue";
|
||||
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
|
||||
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
||||
const { proxy } = getCurrentInstance();
|
||||
const qypzDialog = ref();
|
||||
const detailDiloag = ref();
|
||||
const searchBox = ref(); //搜索框
|
||||
const chooseType = ref('学校') //选择的类型
|
||||
const list = reactive({
|
||||
chooseList :['学校','医院','娱乐场所','民爆库房'],
|
||||
xxlx:[
|
||||
{label:'职业学校',value:'01'},
|
||||
{label:'大专',value:'02'},
|
||||
{label:'本科',value:'03'},
|
||||
{label:'研究生',value:'04'},
|
||||
{label:'博士',value:'05'},
|
||||
],
|
||||
sf:[
|
||||
{label:'是',value:'1'},
|
||||
{label:'否',value:'0'},
|
||||
],
|
||||
})
|
||||
const searchConfiger = ref([
|
||||
{ label: "标签名称",prop:'bqmc',placeholder: "请输入学校名称", showType: "input",},
|
||||
{ label: "标签大类",prop:'sfbqdl' ,placeholder: "请选择标签大类", showType: "select",options:list.xxlx },
|
||||
{ label: "标签细类",prop:'sfbqdl' ,placeholder: "请选择标签细类", showType: "select",options:list.xxlx },
|
||||
{ label: "标签等级",prop:'sfbqdl' ,placeholder: "请选择标签等级", showType: "select",options:list.xxlx },
|
||||
{ label: "标签颜色",prop:'sfbqdl' ,placeholder: "请选择标签颜色", showType: "select",options:list.xxlx },
|
||||
{ label: "积分分值",prop:'bqmc',placeholder: "请输入积分分值", showType: "input",},
|
||||
const searchConfiger = ref(
|
||||
[
|
||||
{ label: "组合标签名称", prop: 'bqmc', placeholder: "请输入组合标签名称", showType: "input" },
|
||||
{ label: "身份标签大类", prop: 'bqdl', placeholder: "请选择身份标签大类", showType: "select" },
|
||||
{ label: "身份标签细类", prop: 'bqxl', placeholder: "请选择身份标签细类", showType: "select" },
|
||||
{ label: "身份标签颜色", prop: 'bqys', placeholder: "请输入组合标签名称", showType: "input" },
|
||||
{ label: "行为标签大类", prop: 'xwbqdl', placeholder: "请选择行为标签大类", showType: "select" },
|
||||
{ label: "行为标签细类", prop: 'xwbqxl', placeholder: "请选择行为标签细类", showType: "select" },
|
||||
{ label: "行为标签等级", prop: 'xwbqdj', placeholder: "请选择行为标签等级", showType: "select" },
|
||||
{ label: "行为标签颜色", prop: 'xwbqys', placeholder: "请选择行为标签颜色", showType: "select" },
|
||||
{ label: "身份标签积分", prop: 'sfbajf', placeholder: "请选择身份标签积分", showType: "select" },
|
||||
{ label: "行为标签积分", prop: 'xwbqjf', placeholder: "请选择行为标签积分", showType: "select" },
|
||||
{ label: "组组合标签积分", prop: 'zzhbqjf', placeholder: "请选择组组合标签积分", showType: "select" },
|
||||
]);
|
||||
const queryFrom = ref({});
|
||||
const pageData = reactive({
|
||||
tableData: [], //表格数据
|
||||
tableData: [
|
||||
{
|
||||
id: 1,
|
||||
zhpqmc: "高风险重点人群A",
|
||||
zhbqdj: "一级",
|
||||
sfdqdl: "涉毒人员",
|
||||
sfbaxl: "吸毒人员",
|
||||
sfbqdj: "一级",
|
||||
sfbqys: "红色",
|
||||
xwbqdl: "涉毒行为",
|
||||
xwbqxl: "复吸行为",
|
||||
xwbqdj: "一级",
|
||||
xwbqys: "红色",
|
||||
sfbajf: 100,
|
||||
xwbqjf: 100,
|
||||
zzhbqjf: 200
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
zhpqmc: "中风险关注人群B",
|
||||
zhbqdj: "二级",
|
||||
sfdqdl: "涉毒人员",
|
||||
sfbaxl: "社区康复人员",
|
||||
sfbqdj: "二级",
|
||||
sfbqys: "橙色",
|
||||
xwbqdl: "涉毒行为",
|
||||
xwbqxl: "戒毒行为",
|
||||
xwbqdj: "二级",
|
||||
xwbqys: "橙色",
|
||||
sfbajf: 80,
|
||||
xwbqjf: 80,
|
||||
zzhbqjf: 160
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
zhpqmc: "低风险观察人群C",
|
||||
zhbqdj: "三级",
|
||||
sfdqdl: "涉毒人员",
|
||||
sfbaxl: "戒毒人员",
|
||||
sfbqdj: "三级",
|
||||
sfbqys: "黄色",
|
||||
xwbqdl: "涉毒行为",
|
||||
xwbqxl: "社区康复",
|
||||
xwbqdj: "三级",
|
||||
xwbqys: "黄色",
|
||||
sfbajf: 60,
|
||||
xwbqjf: 60,
|
||||
zzhbqjf: 120
|
||||
}
|
||||
], //表格数据
|
||||
keyCount: 0,
|
||||
tableConfiger: {
|
||||
rowHieght: 61,
|
||||
@ -107,164 +148,65 @@ const pageData = reactive({
|
||||
}, //分页
|
||||
controlsWidth: 160, //操作栏宽度
|
||||
tableColumn: [
|
||||
{ label: "组合标签名称", prop: "name" },
|
||||
{ label: "组合标签等级", prop: "xxrs" },
|
||||
{ label: "身份标签大类", prop: "sfjs",showSolt:true},
|
||||
{ label: "身份标签细类", prop: "xxlx",showSolt:true},
|
||||
{ label: "身份标签等级", prop: "xzxm"},
|
||||
{ label: "身份标签颜色", prop: "lxfs" },
|
||||
{ label: "行为标签大类", prop: "xxlx",showSolt:true},
|
||||
{ label: "行为标签细类", prop: "xxlx",showSolt:true},
|
||||
{ label: " 行为标签等级", prop: "xxlx",showSolt:true},
|
||||
{ label: " 行为标签颜色", prop: "xxlx",showSolt:true},
|
||||
{ label: " 身份标签积分", prop: "xxlx",showSolt:true},
|
||||
{ label: " 行为标签积分", prop: "xxlx",showSolt:true},
|
||||
{ label: " 组合标签积分", prop: "xxlx",showSolt:true},
|
||||
{ label: "组合标签名称", prop: "zhpqmc" },
|
||||
{ label: "组合标签等级", prop: "zhbqdj" },
|
||||
{ label: "身份标签大类", prop: "sfdqdl"},
|
||||
{ label: "身份标签细类", prop: "sfbaxl"},
|
||||
{ label: "身份标签等级", prop: "sfbqdj"},
|
||||
{ label: "身份标签颜色", prop: "sfbqys" },
|
||||
{ label: "行为标签大类", prop: "xwbqdl" },
|
||||
{ label: "行为标签细类", prop: "xwbqxl" },
|
||||
{ label: "行为标签等级", prop: "xwbqdj" },
|
||||
{ label: "行为标签颜色", prop: "xwbqys" },
|
||||
{ label: "身份标签积分", prop: "sfbajf" },
|
||||
{ label: "行为标签积分", prop: "xwbqjf" },
|
||||
{ label: "组组合标签积分", prop: "zzhbqjf" },
|
||||
]
|
||||
});
|
||||
onMounted(() => {
|
||||
getList(chooseType.value)
|
||||
tabHeightFn();
|
||||
});
|
||||
|
||||
//选择类型
|
||||
const handleType = (val) => {
|
||||
pageData.keyCount++;
|
||||
pageData.pageConfiger.pageCurrent = 1;
|
||||
searchConfiger.value = searchConfiger.value.slice(0,1);
|
||||
let arr = [],tableColumn = [];
|
||||
switch(val){
|
||||
case '学校':
|
||||
arr = [
|
||||
{ label: "学校名称" ,prop:'name', placeholder: "请输入学校名称", showType: "input" },
|
||||
{ label: "学校类型" ,prop:'xxlx', placeholder: "请选择学校类型", showType: "select",options:list.xxlx },
|
||||
]
|
||||
tableColumn = [
|
||||
{ label: "学校名称", prop: "name" },
|
||||
{ label: "学校人数", prop: "xxrs" },
|
||||
{ label: "是否寄宿学校", prop: "sfjs",showSolt:true},
|
||||
{ label: "学校类型", prop: "xxlx",showSolt:true},
|
||||
{ label: "校长", prop: "xzxm"},
|
||||
{ label: "校长联系方式", prop: "lxfs" },
|
||||
{ label: "要求配备保安数", prop: "pbbbs" },
|
||||
{ label: "自聘保安数", prop: "zpbbs" },
|
||||
{ label: "第三方保安数", prop: "sfbbs" },
|
||||
]
|
||||
break;
|
||||
case '医院':
|
||||
arr = [{ label: "医院名称" ,prop:'name',placeholder: "请输入医院名称", showType: "input" }];
|
||||
tableColumn = [
|
||||
{ label: "医院名称", prop: "name" },
|
||||
{ label: "医院法人", prop: "frxm" },
|
||||
{ label: "法人联系方式", prop: "lxfs" },
|
||||
{ label: "床位数", prop: "cws" },
|
||||
{ label: "医院人数", prop: "yyrs" },
|
||||
{ label: "医院人流量", prop: "yyrll" },
|
||||
{ label: "要求配备保安数", prop: "pbbbs" },
|
||||
{ label: "自聘保安数", prop: "zpbbs" },
|
||||
{ label: "第三方保安数", prop: "sfbbs" },
|
||||
]
|
||||
break;
|
||||
case '娱乐场所':
|
||||
arr = [{ label: "娱乐场所" ,prop:'name',placeholder: "请输娱乐场所名称", showType: "input" }]
|
||||
tableColumn = [
|
||||
{ label: "场所名称", prop: "name" },
|
||||
{ label: "法人", prop: "frxm" },
|
||||
{ label: "法人联系方式", prop: "lxfs" },
|
||||
{ label: "面积", prop: "mj" },
|
||||
{ label: "要求配备保安数", prop: "pbbbs" },
|
||||
{ label: "自聘保安数", prop: "zpbbs" },
|
||||
{ label: "第三方保安数", prop: "sfbbs" },
|
||||
]
|
||||
break;
|
||||
case '民爆库房':
|
||||
arr = [{ label: "民爆库房" ,prop:'bmkf',placeholder: "请输民爆库房名称", showType: "input" }]
|
||||
tableColumn = [
|
||||
{ label: "库房名称", prop: "name" },
|
||||
{ label: "库房所有人", prop: "kfsyr" },
|
||||
{ label: "所有人联系方式", prop: "syrLxfs" },
|
||||
{ label: "库房使用人", prop: "kfUser" },
|
||||
{ label: "使用人联系方式", prop: "userLxfs" },
|
||||
{ label: "库容量", prop: "kry" },
|
||||
{ label: "要求配备保安数", prop: "pbbbs" },
|
||||
{ label: "自聘保安数", prop: "zpbbs" },
|
||||
{ label: "第三方保安数", prop: "sfbbs" },
|
||||
]
|
||||
break;
|
||||
}
|
||||
searchConfiger.value = searchConfiger.value.concat(arr);
|
||||
pageData.tableColumn = tableColumn;
|
||||
getList(chooseType.value)
|
||||
}
|
||||
|
||||
// 搜索
|
||||
const onSearch = (val) =>{
|
||||
queryFrom.value = {...val}
|
||||
pageData.pageConfiger.pageCurrent = 1;
|
||||
getList(chooseType.value)
|
||||
getList()
|
||||
}
|
||||
|
||||
const changeNo = (val) =>{
|
||||
pageData.pageConfiger.pageNum = val;
|
||||
getList(chooseType.value)
|
||||
getList()
|
||||
}
|
||||
const changeSize = (val) =>{
|
||||
pageData.pageConfiger.pageSize = val;
|
||||
getList(chooseType.value)
|
||||
getList()
|
||||
}
|
||||
|
||||
// 获取列表
|
||||
const getList = (val) =>{
|
||||
let url = ''
|
||||
switch(val){
|
||||
case '学校':
|
||||
url = '/mosty-lzcj/tbDwXx/queryList';
|
||||
break;
|
||||
case '医院':
|
||||
url = '/mosty-lzcj/tbDwYy/queryList';
|
||||
break;
|
||||
case '娱乐场所':
|
||||
url = '/mosty-lzcj/TbDwYlth/queryList';
|
||||
break;
|
||||
case '民爆库房':
|
||||
url = '/mosty-lzcj/tbDwMbkf/queryList';
|
||||
break;
|
||||
}
|
||||
pageData.tableConfiger.loading = true;
|
||||
let data = { ...pageData.pageConfiger,...queryFrom.value };
|
||||
qcckPost(data,url).then(res=>{
|
||||
pageData.tableData = res.records || [];
|
||||
pageData.total = res.total;
|
||||
pageData.tableConfiger.loading = false;
|
||||
}).catch(()=>{ pageData.tableConfiger.loading = false; })
|
||||
const getList = () =>{
|
||||
// pageData.tableConfiger.loading = true;
|
||||
// qcckGet(queryFrom.value).then((res)=>{
|
||||
// pageData.tableData = res.data.list;
|
||||
// pageData.total = res.data.total;
|
||||
// pageData.keyCount++;
|
||||
// pageData.tableConfiger.loading = false;
|
||||
// })
|
||||
}
|
||||
|
||||
// 删除
|
||||
const delDictItem = (ids) =>{
|
||||
let url = ''
|
||||
switch(chooseType.value){
|
||||
case '学校':
|
||||
url = '/mosty-lzcj/tbDwXx/delete';
|
||||
break;
|
||||
case '医院':
|
||||
url = '/mosty-lzcj/tbDwYy/delete';
|
||||
break;
|
||||
case '娱乐场所':
|
||||
url = '/mosty-lzcj/TbDwYlth/delete';
|
||||
break;
|
||||
case '民爆库房':
|
||||
url = '/mosty-lzcj/tbDwMbkf/delete';
|
||||
break;
|
||||
}
|
||||
// proxy.$confirm("确定要删除", "警告", {type: "warning"}).then(() => {
|
||||
// qcckPost(ids,url).then(()=>{
|
||||
// proxy.$message({ type: "success", message: "删除成功" });
|
||||
// getList(chooseType.value);
|
||||
// getList();
|
||||
// })
|
||||
// }).catch(() => {});
|
||||
}
|
||||
|
||||
// 新增
|
||||
const addEdit = (type, row) => {
|
||||
detailDiloag.value.init(type, row,chooseType.value);
|
||||
detailDiloag.value.init(type, row,);
|
||||
};
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user