更新代码

This commit is contained in:
2025-04-14 19:48:42 +08:00
parent 49cfd7e64f
commit 8b786df36a
73 changed files with 1988 additions and 4488 deletions

View File

@ -1,7 +1,7 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="开锁业场所管理"/>
<PageTitle title="布控审批"/>
</div>
<!-- 搜索 -->
<div ref="searchBox">

View File

@ -1,7 +1,7 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="开锁业务信息管理"/>
<PageTitle title="我的布控"/>
</div>
<!-- 搜索 -->
<div ref="searchBox">

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -0,0 +1,13 @@
<template>
<div>行为标签管理</div>
</template>
<script>
export default {
}
</script>
<style>
</style>

View File

@ -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,);
};