This commit is contained in:
lcw
2025-07-09 18:02:06 +08:00
parent 9f84ea1564
commit e54185f48b
17 changed files with 556 additions and 818 deletions

View File

@ -295,7 +295,7 @@ export const Ttbgetupdate = (data) => {
// 新增人员、车辆布控
export const BkrwinsertEntity = (data) => {
return request({
url: api + `/jczBkrw/insertEntity`,
url: api + `/jczBkry/insertEntity`,
method: "POST",
data
});
@ -303,7 +303,7 @@ export const BkrwinsertEntity = (data) => {
// 查询人员、车辆布控
export const BkrwselectPage = (params) => {
return request({
url: api + `/jczBkrw/selectPage`,
url: api + `/jczBkry/selectPage`,
method: "get",
params
});
@ -311,19 +311,55 @@ export const BkrwselectPage = (params) => {
// 修改查询人员、车辆布控
export const BkrweditEntity = (data) => {
return request({
url: api + `/jczBkrw/editEntity`,
url: api + `/jczBkry/editEntity`,
method: "post",
data
});
};
// 删除查询人员、车辆布控
export const BkrwdeleteById = (data) => {
export const BkrwdeleteById = (id) => {
return request({
url: api + `/jczBkrw/deleteById`,
url: api + `/jczBkry/deleteById/${id}`,
method: "delete",
});
};
export const jczBkclInsertEntity = (data) => {
return request({
url: api + `/jczBkcl/insertEntity`,
method: "POST",
data
});
};
// 查询人员、车辆布控
export const jczBkclSelectPage = (params) => {
return request({
url: api + `/jczBkcl/selectPage`,
method: "get",
params
});
};
// 修改查询人员、车辆布控
export const jczBkclEntity = (data) => {
return request({
url: api + `/jczBkcl/editEntity`,
method: "post",
data
});
};
// 删除查询人员、车辆布控
export const jczBkclDeleteById = (id) => {
return request({
url: api + `/jczBkcl/deleteById/${id}`,
method: "delete",
});
};
// 检查站
// 查询检查站

View File

@ -1,39 +1,26 @@
<template>
<!-- :class="{show:listImg.length==limit}" -->
<div class="form-item-box" :style="{ width: width }">
<el-upload
v-bind="$attrs"
:headers="headers"
:multiple="false"
:disabled="disableds"
class="avatar-uploader"
:limit="props.limit"
:action="actionUrl"
list-type="picture-card"
:file-list="fileList"
show-file-list
:on-exceed="handleExceed"
:on-success="handlerSuccess"
:before-upload="beforeImgUpload"
>
<el-upload :class="{ 'hide-upload': fileList.length == limit }" v-bind="$attrs" :headers="headers" :multiple="false"
:disabled="disableds" class="avatar-uploader" :limit="props.limit" :action="actionUrl" list-type="picture-card"
:file-list="fileList" show-file-list :on-exceed="handleExceed" :on-success="handlerSuccess"
:before-upload="beforeImgUpload">
<template #default>
<el-icon> <Plus /> </el-icon>
<el-icon>
<Plus />
</el-icon>
</template>
<template #file="{ file }">
<div v-if="props.isImg">
<img class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
<span class="el-upload-list__item-actions">
<span
class="el-upload-list__item-preview"
@click="handlePictureCardPreview(file)"
>
<span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
<el-icon> <zoom-in /> </el-icon>
</span>
<span
v-if="!disabled"
class="el-upload-list__item-delete"
@click="handleRemove(file, fileList)"
>
<el-icon><Delete /></el-icon>
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemove(file, fileList)">
<el-icon>
<Delete />
</el-icon>
</span>
</span>
</div>
@ -43,19 +30,15 @@
<span class="file-name">{{ file.name }}</span>
</div>
<span class="el-upload-list__item-actions">
<span
v-if="!disabled"
class="el-upload-list__item-delete"
@click="handleDownload(file)"
>
<el-icon> <Download /> </el-icon>
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleDownload(file)">
<el-icon>
<Download />
</el-icon>
</span>
<span
v-if="!disabled"
class="el-upload-list__item-delete"
@click="handleRemove(file, fileList)"
>
<el-icon> <Delete /> </el-icon>
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemove(file, fileList)">
<el-icon>
<Delete />
</el-icon>
</span>
</span>
</div>
@ -181,13 +164,19 @@ const headers = ref({
});
const listImg = ref([]);
onMounted(() => {
console.log(props.modelValue);
if (props.modelValue&&props.modelValue.length>0) {
if (Array.isArray(props.modelValue)) {
listImg.value = props.modelValue;
fileList.value = props.modelValue.map((el) => {
return { url: `/mosty-api/mosty-base/minio/image/download/` + el };
});
} else {
listImg.value = props.modelValue.split(",");
fileList.value = props.modelValue.split(",").map((el) => {
return { url: `/mosty-api/mosty-base/minio/image/download/` + el };
});
}
if (props.modelValue) {
listImg.value = props.modelValue;
fileList.value = props.modelValue.map((el) => {
return { url: `/mosty-api/mosty-base/minio/image/download/` + el };
});
} else {
listImg.value = [];
fileList.value = [];
@ -199,10 +188,10 @@ const handlerSuccess = (res, file) => {
file.url = `/mosty-api/mosty-base/minio/image/download/` + res.data;
fileList.value.push(file);
listImg.value.push(res.data);
emits("handleChange", listImg.value);
emits("update:modelValue", listImg.value);
emits("handleChange", listImg.value.toString());
emits("update:modelValue", listImg.value.toString());
};
const handlePreview = (file) => {};
const handlePreview = (file) => { };
const handleExceed = (files, fileList) => {
ElMessage.warning(`限制,只能上传${props.limit}个文件或图片`);
};
@ -242,14 +231,18 @@ const handleRemove = (file) => {
});
fileList.value.splice(index, 1);
listImg.value.splice(index, 1);
emits("handleChange", listImg.value);
emits("update:modelValue", listImg.value);
emits("handleChange", listImg.value.toString());
emits("update:modelValue", listImg.value.toString());
};
onUnmounted(() => {
listImg.value = [];
});
</script>
<style>
.hide-upload .el-upload--picture-card {
display: none;
}
</style>
<style lang="scss" scoped>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;

View File

@ -48,6 +48,19 @@
车牌号{{ item.cph }}
</div>
</div>
<div class="line mt6 mb6"></div>
<div class="warning-card">
<div class="title flex align-center">
<img src="@/assets/images/icon_06.png" alt="" /> 智能设备
</div>
<div
class="cardItem"
v-for="(item, index) in warningList.sbList"
:key="index"
>
名称{{ item.sbmc }}
</div>
</div>
</div>
<Empty :show="warningList == null && show == 2" />
<div class="warning-list" v-if="show == 1 && warningList">
@ -78,7 +91,7 @@ import { ref } from "vue";
import Empty from "@/components/MyComponents/Empty/index.vue";
import { jczqueryById } from "@/api/mosty-jcz";
import emitter from "@/utils/eventBus.js";
const warningList = ref({ qxList: [], ryList: [], clList: [] });
const warningList = ref({ qxList: [], ryList: [], clList: [] ,sbList:[]});
const show = ref(1);
const props = defineProps({
@ -101,6 +114,7 @@ const getjczqueryById = () => {
: [];
warningList.value.ryList = res.ryList ? res.ryList : [];
warningList.value.clList = res.clList ? res.clList : [];
warningList.value.sbList = [...res.tcList,...res.zdList]
} else {
warningList.value = res;
}

View File

@ -3,48 +3,26 @@
<div class="head_box">
<span class="title">{{ pageInfo[pageType].title }}</span>
<div>
<el-button
size="small"
type="primary"
v-if="['add', 'edit'].includes(pageType)"
@click="_onSave"
>保存</el-button
>
<el-button size="small" type="primary" v-if="['add', 'edit'].includes(pageType)" @click="_onSave">保存</el-button>
<el-button size="small" @click="close">关闭</el-button>
</div>
</div>
<div class="cntinfo">
<div class="flex align-center">
报备单位
<MOSTY.Department
v-model="listQuery.ssbmdm"
placeholder="请选择部门"
@getDepValue="changeDep"
/>
<MOSTY.Department v-model="listQuery.ssbmdm" placeholder="请选择部门" @getDepValue="changeDep" v-if="!showDetails" />
</div>
<el-form
ref="formRef"
class="info"
:model="listQuery"
:inline="true"
:rules="rules"
>
<el-form ref="formRef" class="info" :model="listQuery" :inline="true" :rules="rules">
<div class="bblxItem">
<div class="btItem">环林卡口设置</div>
<div class="info">
<el-form-item>
<ChooseTable
:deptment="deptment"
v-if="!isDetail"
:configer="{
width: 800,
lx: 'jcz',
isRadio: true
}"
v-model="listQuery.jczList"
:dic="props.dic"
/>
<ChooseTable :deptment="deptment" v-if="!isDetail" :configer="{
width: 800,
lx: 'jcz',
isRadio: true
}" v-model="listQuery.jczList" :dic="props.dic" />
<div class="peolist" v-if="listQuery.jczList">
<el-tag type="primary" :key="item">{{
@ -63,37 +41,18 @@
<div class="btItem">班次设置</div>
<div class="info">
<el-form-item prop="kssj">
<el-time-picker
v-model="listQuery.bcKssj"
:disabled="isDetail"
placeholder="开始时间"
format="HH:mm:ss"
value-format="HH:mm:ss"
/>
<el-time-picker v-model="listQuery.bcKssj" :disabled="isDetail" placeholder="开始时间" format="HH:mm:ss"
value-format="HH:mm:ss" />
</el-form-item>
<el-form-item prop="bcKts">
<el-select
clearable
v-model="listQuery.bcKtsDict"
placeholder="请选择"
style="width: 100%"
>
<el-option
v-for="(item, index) in dic.D_QW_BC_KTS"
:key="index"
:label="item.label"
:value="item.value"
></el-option>
<el-select clearable v-model="listQuery.bcKtsDict" placeholder="请选择" style="width: 100%" :disabled="isDetail">
<el-option v-for="(item, index) in dic.D_QW_BC_KTS" :key="index" :label="item.label"
:value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="jssj">
<el-time-picker
v-model="listQuery.bcJssj"
:disabled="isDetail"
format="HH:mm:ss"
placeholder="结束时间"
value-format="HH:mm:ss"
/>
<el-time-picker v-model="listQuery.bcJssj" :disabled="isDetail" format="HH:mm:ss" placeholder="结束时间"
value-format="HH:mm:ss" />
</el-form-item>
</div>
</div>
@ -101,42 +60,21 @@
<div class="btItem">负责人</div>
<div class="info">
<el-form-item>
<ChooseTable
:deptment="deptment"
@change="handleFzr"
v-if="!isDetail"
:configer="{
width: 700,
lx: 'mj',
rowKey: 'id',
isRadio: true
}"
:dic="props.dic"
/>
<ChooseTable :deptment="deptment" @change="handleFzr" v-if="!isDetail" :configer="{
width: 700,
lx: 'mj',
rowKey: 'id',
isRadio: true
}" :dic="props.dic" />
</el-form-item>
<el-form-item prop="fzrXm">
<el-input
readonly
v-model="listQuery.fzrXm"
placeholder="负责人"
clearable
/>
<el-input readonly v-model="listQuery.fzrXm" placeholder="负责人" clearable />
</el-form-item>
<el-form-item prop="fzrSfzh">
<el-input
readonly
v-model="listQuery.fzrSfzh"
placeholder="身份证"
clearable
/>
<el-input readonly v-model="listQuery.fzrSfzh" placeholder="身份证" clearable />
</el-form-item>
<el-form-item prop="fzrLxdh">
<el-input
readonly
v-model="listQuery.fzrLxdh"
placeholder="负责人电话"
clearable
/>
<el-input readonly v-model="listQuery.fzrLxdh" placeholder="负责人电话" clearable />
</el-form-item>
</div>
</div>
@ -149,17 +87,11 @@
<div class="num">
{{ mjData ? mjData.length : 0 }}
</div>
<ChooseTable
:deptment="deptment"
v-if="!isDetail"
:dic="props.dic"
:configer="{
lx: 'mj',
rowKey: 'ryid',
placement: 'top-start'
}"
v-model="mjData"
/>
<ChooseTable :deptment="deptment" v-if="!isDetail" :dic="props.dic" :configer="{
lx: 'mj',
rowKey: 'ryid',
placement: 'top-start'
}" v-model="mjData" />
<div class="peolist">
<el-tag type="primary" v-for="item in mjData" :key="item">{{
item.jlxm || item.xm
@ -176,13 +108,8 @@
</div>
<!-- :deptment="props.dep"
:dic="props.dic" -->
<ChooseTable
:deptment="deptment"
:dic="props.dic"
v-if="!isDetail"
:configer="{ lx: 'fj', placement: 'top-start' }"
v-model="fjData"
/>
<ChooseTable :deptment="deptment" :dic="props.dic" v-if="!isDetail"
:configer="{ lx: 'fj', placement: 'top-start' }" v-model="fjData" />
<div class="peolist">
<el-tag type="primary" v-for="item in fjData" :key="item">{{
item.jlxm || item.xm
@ -202,24 +129,13 @@
<div class="num">
{{ listQuery.zdList ? listQuery.zdList.length : 0 }}
</div>
<ChooseTable
:dic="props.dic"
v-if="!isDetail"
:deptment="deptment"
:configer="{
lx: 'znzb',
rowKey: 'id',
placement: 'top-start'
}"
v-model="listQuery.zdList"
/>
<ChooseTable :dic="props.dic" v-if="!isDetail" :deptment="deptment" :configer="{
lx: 'znzb',
rowKey: 'id',
placement: 'top-start'
}" v-model="listQuery.zdList" />
<div class="peolist">
<el-tag
type="primary"
v-for="item in listQuery.zdList"
:key="item"
>{{ item.sbmc }}</el-tag
>
<el-tag type="primary" v-for="item in listQuery.zdList" :key="item">{{ item.sbmc }}</el-tag>
</div>
</div>
</el-form-item>
@ -270,24 +186,13 @@
<div class="num">
{{ listQuery.clList ? listQuery.clList.length : 0 }}
</div>
<ChooseTable
:deptment="deptment"
v-if="!isDetail"
:dic="props.dic"
:configer="{
lx: 'cl',
rowKey: 'id',
placement: 'top-start'
}"
v-model="listQuery.clList"
/>
<ChooseTable :deptment="deptment" v-if="!isDetail" :dic="props.dic" :configer="{
lx: 'cl',
rowKey: 'id',
placement: 'top-start'
}" v-model="listQuery.clList" />
<div class="peolist">
<el-tag
type="primary"
v-for="item in listQuery.clList"
:key="item"
>{{ item.cph }}</el-tag
>
<el-tag type="primary" v-for="item in listQuery.clList" :key="item">{{ item.cph }}</el-tag>
</div>
</div>
</el-form-item>
@ -298,14 +203,10 @@
<div class="btItem">警用器械</div>
<div class="info">
<el-form-item>
<div
v-for="(item, index) in listQuery.qxList"
:key="index"
style="width: 30%; margin-bottom: 10px"
>
<div v-for="(item, index) in listQuery.qxList" :key="index" style="width: 30%; margin-bottom: 10px">
<div class="flex">
<div style="width: 30%">{{ item.qxmc }}</div>
<el-input-number v-model="item.qxsl" :step="1" />
<el-input-number :disabled="isDetail" v-model="item.qxsl" :step="1" />
</div>
</div>
</el-form-item>
@ -326,12 +227,12 @@ import { timeValidate } from "@/utils/tools.js";
const props = defineProps({
dic: {
type: Object,
default: () => {}
default: () => { }
},
isDetail: {
type: Boolean,
default: false
}
// isDetail: {
// type: Boolean,
// default: true
// }
});
const emit = defineEmits(["getjczgetXfllList"]);
const formRef = ref(null);
@ -353,11 +254,13 @@ const pageInfo = {
let pageType = ref("add");
const mjData = ref([]);
const fjData = ref([]);
const isDetail=ref(false)
// 初始化数据
const init = (type, row) => {
pageType.value = type;
dialogForm.value = true;
// 根据type和row初始化表单数据
isDetail.value=type=="detail"
if (row) {
listQuery.value = { ...row };
if (row.ryList.length > 0) {
@ -392,8 +295,6 @@ const rules = ref({
const _onSave = () => {
const data = [...mjData.value, ...fjData.value];
console.log(data, "-------------------------------------");
listQuery.value.ryList = ChegeMj(data);
const time = new Date();
listQuery.value.bbSjBbrq = timeValidate(time);
@ -509,18 +410,21 @@ defineExpose({ init });
align-items: center;
margin-bottom: 20px;
}
.cntinfo {
height: calc(100% - 70px);
overflow: hidden;
overflow-y: auto;
color: #000;
}
.bblxItem {
width: 100%;
line-height: 40px;
min-height: 40px;
display: flex;
color: #000;
.btItem {
width: 180px;
padding: 7px 0;
@ -528,17 +432,20 @@ defineExpose({ init });
margin-top: 1px;
text-align: center;
}
.info {
flex: 1;
background: #0000000a;
margin-top: 1px;
padding: 10px;
box-sizing: border-box;
.gapline {
height: 1px;
border-top: 1px dashed #66cbff;
margin: 4px 0;
}
.dl-car {
min-width: 200px;
display: inline-block;
@ -547,6 +454,7 @@ defineExpose({ init });
padding: 0;
border-radius: 5px;
position: relative;
dt {
display: flex;
justify-content: space-between;
@ -561,12 +469,14 @@ defineExpose({ init });
height: 30px;
border-radius: 5px 5px 0 0;
}
.peo {
border-bottom: solid 1px #01d608;
background: #dbf3cf;
color: #339d00;
}
}
.dl-car::before {
position: absolute;
content: "";
@ -577,6 +487,7 @@ defineExpose({ init });
background: url("~@/assets/images/peo.png");
}
}
.num {
width: 50px;
height: 30px;
@ -587,6 +498,7 @@ defineExpose({ init });
border-radius: 4px;
margin-right: 10px;
}
.subBtn {
padding-left: 100px;
box-sizing: border-box;
@ -596,9 +508,11 @@ defineExpose({ init });
::v-deep .el-form-item--default {
margin-bottom: 0;
}
::v-deep .el-form-item {
margin-bottom: 10px;
}
::v-deep .el-form--inline .el-form-item {
margin-right: 20px;
margin-top: 10px;

View File

@ -1,7 +1,7 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="单位保安信息">
<PageTitle title="勤务报备">
<el-button type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle" @click="addEdit('add', row)"
@ -30,6 +30,7 @@
<template #controls="{ row }">
<el-link type="primary" @click="addEdit('edit', row)">编辑</el-link>
<el-link type="primary" @click="delDictItem(row.id)">删除</el-link>
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
</template>
</MyTable>
<Pages
@ -146,6 +147,7 @@ const getjczgetXfllList = () => {
XfbbselectPage({ pageSize: 10, pageCurrent: 1 }).then((res) => {
pageData.tableData = res.records || [];
pageData.total = res.total;
}).finally(() => {
pageData.tableConfiger.loading = false;
});
};

View File

@ -36,7 +36,7 @@
/>
</el-form-item>
<el-form-item prop="sydwdm" label="使用单位">
<MOSTY.Department :disabled="sydwmc"
<MOSTY.Department :disabled="forbidden"
:placeholder="listQuery.ssbm"
style="width: 100%"
ref="cascader"
@ -45,6 +45,7 @@
filterable
:options="depList"
:props="props"
v-model:modelValue="listQuery.sydwdm"
/>
</el-form-item>

View File

@ -3,188 +3,86 @@
<div class="head_box">
<span class="title">{{ pageInfo[pageType].title }}</span>
<div>
<el-button
size="small"
type="primary"
v-if="['add', 'edit'].includes(pageType)"
@click="_onSave"
>保存</el-button
>
<el-button size="small" type="primary" v-if="['add', 'edit'].includes(pageType)" @click="_onSave">保存</el-button>
<el-button size="small" @click="close">关闭</el-button>
</div>
</div>
<div class="cntinfo">
<el-form
ref="formRef"
:model="listQuery"
:inline="true"
label-position="top"
:rules="rules"
>
<div
style="
width: 25%;
display: flex;
justify-content: center;
margin-bottom: 10px;
"
>
<div style="position: relative; width: 90px; height: 100px">
<el-upload :disabled="forbidden"
action="/mosty-api/mosty-base/minio/image/upload/id"
:on-change="upImgFile"
:on-success="upImg"
:show-file-list="false"
>
<el-image v-if="imgUrl" :src="imgUrl" fit="cover" />
<el-icon v-else>
<Plus></Plus>
</el-icon>
<span
v-if="imgUrl"
style="position: absolute; top: -52px; right: -20px"
>
<el-icon size="20" @click.stop="deletImg">
<Close />
</el-icon>
</span>
</el-upload>
</div>
<el-form ref="formRef" :model="listQuery" :inline="true" label-position="top" :rules="rules">
<div style=" width: 100%; ">
<MOSTY.Upload width="100%" :limit="1" :isImg="true" v-model="listQuery.zp" :disableds="forbidden"/>
</div>
<el-form-item style="width: 20%" prop="ssbmdm" label="所属部门">
<MOSTY.Department :disabled="forbidden"
width="100%"
clearable
v-model="listQuery.ssbmdm"
:placeholder="listQuery.ssbm ? listQuery.ssbm : '请选择所属部门'"
/>
<el-form-item style="width: 40%" prop="xm" label="姓名">
<el-input :disabled="forbidden" v-model="listQuery.xm" placeholder="请输入姓名" style="width: 100%" clearable />
</el-form-item>
<el-form-item style="width: 40%" prop="bkmc" label="布控名称">
<el-input :disabled="forbidden"
v-model="listQuery.bkmc"
placeholder="请输入布控名称"
style="width: 100%"
clearable
/>
<el-form-item style="width: 40%" prop="zjhm" label="身份证号">
<el-input :disabled="forbidden" v-model="listQuery.zjhm" placeholder="请输入布控人身份证号" style="width: 100%"
clearable />
</el-form-item>
<el-form-item style="width: 40%" prop="bksfzh" label="身份证号">
<el-input :disabled="forbidden"
v-model="listQuery.bksfzh"
placeholder="请输入布控人身份证号"
style="width: 100%"
clearable
/>
</el-form-item>
<el-form-item style="width: 40%" prop="bklb" label="布控类别">
<el-select :disabled="forbidden" v-model="listQuery.bklb" placeholder="请选择布控类别">
<el-option
v-for="dict in dict.D_BZ_RYBKLX"
:key="dict.value"
:value="dict.value"
:label="dict.label"
></el-option>
<el-form-item style="width: 40%" prop="yjys" label="布控颜色">
<el-select :disabled="forbidden" v-model="listQuery.yjys" placeholder="请选择布控颜色">
<el-option v-for="dict in dict.D_BZ_BKYS" :key="dict.value" :value="dict.value"
:label="dict.label"></el-option>
</el-select>
</el-form-item>
<el-form-item style="width: 40%" prop="bkyy" label="布控原因">
<el-input :disabled="forbidden" v-model="listQuery.bkyy" type="textarea" placeholder="请输入布控原因" clearable />
</el-form-item>
<el-form-item style="width:100%" prop="bkfs" label="布控方式">
<el-radio-group v-model="listQuery.bkfs">
<el-radio label="01">全省布控</el-radio>
<el-radio label="02">精准布控</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item style="width: 40%" prop="bkkssj" label="开始时间">
<el-date-picker :disabled="forbidden"
v-model="listQuery.bkkssj"
type="datetime"
placeholder="请选中开始时间"
format="YYYY-MM-DD hh:mm:ss"
value-format="YYYY-MM-DD hh:mm:ss"
/>
<el-date-picker :disabled="forbidden" v-model="listQuery.bkkssj" type="datetime" placeholder="请选中开始时间"
format="YYYY-MM-DD hh:mm:ss" value-format="YYYY-MM-DD hh:mm:ss" />
</el-form-item>
<el-form-item style="width: 40%" prop="bkjssj" label="结束时间">
<el-date-picker :disabled="forbidden"
v-model="listQuery.bkjssj"
type="datetime"
placeholder="请选中结束时间"
format="YYYY-MM-DD hh:mm:ss"
value-format="YYYY-MM-DD hh:mm:ss"
/>
<el-date-picker :disabled="forbidden" v-model="listQuery.bkjssj" type="datetime" placeholder="请选中结束时间"
format="YYYY-MM-DD hh:mm:ss" value-format="YYYY-MM-DD hh:mm:ss" />
</el-form-item>
<el-form-item style="width: 40%" prop="bkqy" label="布控区域">
<el-input :disabled="forbidden"
v-model="listQuery.bkqy"
placeholder="请输入布控区域"
style="width: 100%"
clearable
/>
</el-form-item>
<el-form-item style="width: 40%" prop="bkzt" label="布控状态">
<el-select :disabled="forbidden" v-model="listQuery.bkzt" placeholder="请选择布控状态">
<el-option
v-for="dict in dict.D_BZ_RCBKZT"
:key="dict.value"
:value="dict.value"
:label="dict.label"
></el-option>
<el-form-item style="width: 40%" prop="czcs" label="处置措施">
<el-select :disabled="forbidden" v-model="listQuery.czcs" placeholder="请选择布控颜色">
<el-option v-for="dict in dict.D_BZ_CZCS" :key="dict.value" :value="dict.value"
:label="dict.label"></el-option>
</el-select>
</el-form-item>
<el-form-item style="width: 40%" prop="bkfw" label="布控范围">
<el-select :disabled="forbidden" v-model="listQuery.bkfw" placeholder="请选择布控状态">
<el-option
v-for="dict in dict.D_BZ_RCBKFW"
:key="dict.value"
:value="dict.value"
:label="dict.label"
></el-option>
</el-select>
</el-form-item>
<el-form-item style="width: 40%" prop="bkczlx" label="布控操作类型">
<el-input :disabled="forbidden"
v-model="listQuery.bkczlx"
placeholder="请输入布控区域"
style="width: 100%"
clearable
/>
</el-form-item>
<el-form-item style="width: 40%" prop="bkdxtzm" label="布控对象特征码">
<el-input :disabled="forbidden"
v-model="listQuery.bkdxtzm"
placeholder="请输入布控区域"
style="width: 100%"
clearable
/>
</el-form-item>
<el-form-item style="width: 40%" prop="bkkk" label="布控卡口">
<el-form-item style="width: 40%" prop="jczid" label="布控卡口" v-if="listQuery.bkfs=='02'">
<div class="diviput" @click="openJcz">
<span v-if="listQuery.bkkk">{{ listQuery.bkkk }}</span>
<span v-if="listQuery.jczid">{{ listQuery.jczmc }}</span>
<span class="placeholder" v-else> 请选择布控卡口</span>
</div>
</el-form-item>
</el-form>
</div>
</div>
<Jczloder v-model="showJcz" :Single="true" @choosedJcz="JczMsg" :data="[]" />
<Jczloder v-model="showJcz" :Single="false" @choosedJcz="JczMsg" :data="[]" />
</template>
<script setup>
import { ref, reactive, onMounted } from "vue";
import { BkrwinsertEntity, BkrweditEntity } from "@/api/mosty-jcz.js";
import * as MOSTY from "@/components/MyComponents/index";
import emitter from "@/utils/eventBus.js";
import { BkrwinsertEntity, BkrweditEntity } from "@/api/mosty-jcz.js";
import Jczloder from "@/components/loder/Jczloder.vue";
import GdMap from "@/components/GdMap/index.vue";
import { ElMessage } from "element-plus";
const props = defineProps({
dict: {
type: Object,
default: () => {}
default: () => { }
}
});
const rules = reactive({
bkdxtzm: [
xm: [
{
required: true,
message: "请输入布控对象特征码"
message: "请输入布控姓名"
}
],
bkbsm: [
zjhm: [
{
required: true,
message: "请输入布控标识码"
message: "请输入布控人身份证号"
}
],
bkkk: [
@ -193,10 +91,10 @@ const rules = reactive({
message: "请选择布控卡口"
}
],
bkjssj: [
yjys: [
{
required: true,
message: "请选择布控结束时间"
message: "请选择预警颜色"
}
],
bkkssj: [
@ -205,37 +103,28 @@ const rules = reactive({
message: "请选择布控开始时间"
}
],
bkzt: [
{
required: true,
message: "请选择布控状态"
}
],
bksfzh: [
bkjssj: [
{
required: true,
message: "请输入布控身份证号"
}
],
bkqy: [
bkfs: [
{
required: true,
message: "请输入布控区域",
trigger: "change"
message: "请输入布控方式"
}
], bkcs: [
{
required: true,
message: "请输选择布控措施"
}
],
bkmc: [
{
required: true,
message: "请输入布控名称"
}
],
bklb: [
{
required: true,
message: "请选择布控类别"
}
]
bkyy: {
required: true,
message: "请输入布控原因"
}
});
const formRef = ref(null);
const emit = defineEmits(["getjczgetXfllList"]);
@ -258,16 +147,16 @@ const pageInfo = {
let pageType = ref("add");
// 初始化数据
const forbidden=ref(false)
const forbidden = ref(false)
const init = (type, row) => {
pageType.value = type;
dialogForm.value = true;
// 根据type和row初始化表单数据
tabHeightFn();
if (type == "edit" || type == "detail") {
listQuery.value = { ...row };
listQuery.value = { ...row};
if (type == "detail") {
forbidden.value=true
forbidden.value = true
}
} else {
listQuery.value = {};
@ -278,7 +167,8 @@ const _onSave = () => {
if (!formRef) return;
formRef.value.validate((valid, fields) => {
if (valid) {
const promes = { ...listQuery.value, bklx: "01" };
const promes = { ...listQuery.value };
// promes.zp=listQuery.value.zp&&Array.isArray(listQuery.value.zp)? listQuery.value.zp.join(","):""
if (pageType.value == "add") {
BkrwinsertEntity(promes).then((res) => {
ElMessage({ message: "新增成功", type: "success" });
@ -298,29 +188,26 @@ const _onSave = () => {
});
console.log();
};
// 图片上传
const imgUrl = ref();
const urlImg = "/mosty-api/mosty-base/minio/image/download/";
const upImg = (row) => {
listQuery.value.bkzp = row.data;
imgUrl.value = urlImg.value + row.data;
};
//打开弹窗
const showJcz = ref(false);
const openJcz = () => {
if (!forbidden) {
showJcz.value=true
if (!forbidden.value) {
showJcz.value = true
}
};
const JczMsg = (val) => {
listQuery.value.bkkk = val.jczmc;
listQuery.value.kkId = val.id;
listQuery.value.jczmc = val.map(item => {
return item.jczmc
}).toString()
listQuery.value.jczid =val.map(item => {
return item.id
}).toString()
};
//页面关闭
const close = () => {
dialogForm.value = false;
forbidden.value=false
forbidden.value = false
listQuery.value = {};
};
// 表格高度计算
@ -335,21 +222,25 @@ defineExpose({ init });
<style lang="scss" scoped>
.dialog {
padding: 20px;
.head_box {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
}
.cntinfo {
height: calc(100% - 70px);
overflow: hidden;
overflow-y: auto;
}
}
.my_transfer {
height: calc(100% - 50px);
display: flex;
.btn {
width: 50px;
display: flex;
@ -357,58 +248,71 @@ defineExpose({ init });
justify-content: center;
margin: 0 10px;
}
.left {
margin: 12px;
flex: 1;
position: relative;
.tableBox {
position: absolute;
width: 100%;
}
.serch {
position: relative;
width: 100%;
// height: 96px;
> .el-form--inline {
>.el-form--inline {
display: block;
width: 100%;
padding: 0;
> .el-form-item--default {
>.el-form-item--default {
width: 31%;
}
}
}
.tableBox {
width: 100%;
}
}
.right {
width: 380px;
margin: 12px;
}
}
.phone {
width: 95px;
height: 120px;
.el-image {
width: 95px;
max-height: 120px;
}
}
::v-deep .el-upload {
width: 90px;
height: 100px;
border: 1px dashed #000000;
margin-bottom: 14px;
.el-icon {
margin-top: 34px;
font-size: 26px;
}
.el-image {
width: 100%;
height: 100%;
}
}
.mapbox {
width: 1000px;
padding: 0 10px;
@ -416,6 +320,7 @@ defineExpose({ init });
box-sizing: border-box;
background: #000;
}
.diviput {
width: 100%;
background-color: #ffffff;
@ -425,10 +330,12 @@ defineExpose({ init });
line-height: 32px;
padding: 0 10px;
border-radius: 5px;
.placeholder {
color: #b5b5b5;
}
}
::v-deep .el-icon svg {
color: #000000 !important;
}

View File

@ -1,12 +1,12 @@
<template>
<div>
<div class="titleBox" >
<div class="titleBox">
<PageTitle title="人员布控">
<el-button type="primary" @click="addEdit('add', '')" v-if="Auth">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle" @click="addEdit('add', row)"
>新增</span
>
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle" @click="addEdit('add', row)">新增</span>
</el-button>
</PageTitle>
</div>
@ -15,54 +15,43 @@
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<div class="tabBox">
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseData"
>
<template #bklb="{ row }">
<dict-tag :value="row.bklb" :options="D_BZ_RYBKLX" :tag="false" />
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
@chooseData="chooseData">
<template #yjys="{ row }">
<dict-tag :value="row.yjys" :options="D_BZ_BKYS" :tag="false" />
</template>
<template #bkzt="{ row }">
<template #bkfs="{ row }">
{{ row.bkfs=='01'?"全省布控":"精准布控" }}
</template>
<template #bkcs="{ row }">
<dict-tag :value="row.yjys" :options="D_BZ_CZCS" :tag="false" />
</template>
<!-- <template #bkzt="{ row }">
<dict-tag :value="row.bkzt" :options="D_BZ_RCBKZT" :tag="false" />
</template>
<template #bkfw="{ row }">
<dict-tag :value="row.bkfw" :options="D_BZ_RCBKFW" :tag="false" />
</template>
</template> -->
<!-- 操作 -->
<template #controls="{ row }">
<template v-if="Auth">
<template v-if="Auth">
<el-link type="primary" @click="addEdit('edit', row)">修改</el-link>
<el-link type="primary" @click="delDictItem(row.id)">删除</el-link>
</template>
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
</template>
</MyTable>
<Pages
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"
></Pages>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"></Pages>
</div>
<!-- 编辑详情 -->
<EditAddForm
ref="detailDiloag"
:dict="{
D_BZ_RCBKZT,
D_BZ_RCBKFW,
D_BZ_RYBKLX
}"
@getjczgetXfllList="getjczgetXfllList"
/>
<EditAddForm ref="detailDiloag" :dict="{
D_BZ_BKYS,D_BZ_CZCS
}" @getjczgetXfllList="getjczgetXfllList" />
</div>
</template>
@ -71,16 +60,15 @@ import PageTitle from "@/components/aboutTable/PageTitle.vue";
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue";
import { ElMessage } from "element-plus";
import EditAddForm from "./components/editAddForm.vue";
import { BkrwselectPage, BkrwdeleteById } from "@/api/mosty-jcz.js";
import {isAuth} from '@/utils/tools.js'
import { isAuth } from '@/utils/tools.js'
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
const { proxy } = getCurrentInstance();
const urlImg = "/mosty-api/mosty-base/minio/image/download/";
const { D_BZ_RCBKZT, D_BZ_RCBKFW, D_BZ_RYBKLX } = proxy.$dict(
"D_BZ_RCBKZT",
"D_BZ_RCBKFW",
"D_BZ_RYBKLX"
const { D_BZ_BKYS,D_BZ_CZCS } = proxy.$dict(
"D_BZ_BKYS","D_BZ_CZCS"
);
const searchConfiger = ref([
{
@ -95,26 +83,15 @@ const searchConfiger = ref([
placeholder: "请输入证件号码",
showType: "input"
},
{
label: "布控状态",
prop: "bkzt",
placeholder: "布控状态",
label: "布控颜色",
prop: "yjys",
placeholder: "布控颜色",
showType: "select",
options: D_BZ_RCBKZT
options: D_BZ_BKYS
},
{
label: "布控类别",
prop: "bklb",
placeholder: "布控类别",
showType: "select",
options: D_BZ_RYBKLX
},
{
showType: "department",
prop: "ssbmdm",
placeholder: "请选择所属部门",
label: "所属部门"
}
]);
const detailDiloag = ref();
@ -133,52 +110,48 @@ const pageData = reactive({
}, //分页
controlsWidth: 250, //操作栏宽度
tableColumn: [
{ label: "所属部门", prop: "ssbm", showOverflowTooltip: true },
{
label: "布控区域",
prop: "bkqy",
label: "布控姓名",
prop: "xm",
showOverflowTooltip: true
// showSolt: true
},
{
label: "布控名称",
prop: "bkmc",
label: "布控人身份证号",
prop: "zjhm",
showOverflowTooltip: true
},
{
label: "布控类别",
prop: "bklb",
label: "预警颜色",
prop: "yjys",
showSolt: true,
showOverflowTooltip: true
},
{
label: "布控状态",
prop: "bkzt",
showSolt: true,
showOverflowTooltip: true
},
{
label: "布控范围",
prop: "bkfw",
showSolt: true,
showOverflowTooltip: true
},
{ label: "布控开始时间", prop: "bkkssj", showOverflowTooltip: true },
{
label: "布控结束时间",
prop: "bkjssj",
showOverflowTooltip: true
},
{
label: "布控方式",
prop: "bkfs",
showSolt: true,
},
{
label: "布控措施",
prop: "bkcs",
showSolt: true,
}
]
});
const Auth = ref(false)
onMounted(() => {
tabHeightFn();
Auth.value=isAuth()
Auth.value = isAuth()
});
//查询条件
const queryCondition = ref({ bklx: "01" });
const queryCondition = ref();
// 获取数据
const getjczgetXfllList = () => {
pageData.tableConfiger.loading = true;
@ -195,7 +168,7 @@ const getjczgetXfllList = () => {
getjczgetXfllList();
// 搜索
const onSearch = (val) => {
queryCondition.value = { ...queryCondition.value, ...val };
queryCondition.value = { ...val };
getjczgetXfllList();
};
@ -212,7 +185,7 @@ const delDictItem = (ids) => {
proxy
.$confirm("确定删除该数据?", "警告", { type: "warning" })
.then(() => {
BkrwdeleteById({ ids: ids })
BkrwdeleteById( ids)
.then((res) => {
ElMessage({ message: "删除成功", type: "success" });
pageData.pageConfiger.pageCurrent = 1;

View File

@ -3,192 +3,95 @@
<div class="head_box">
<span class="title">{{ pageInfo[pageType].title }}</span>
<div>
<el-button
size="small"
type="primary"
v-if="['add', 'edit'].includes(pageType)"
@click="_onSave"
>保存</el-button
>
<el-button size="small" type="primary" v-if="['add', 'edit'].includes(pageType)" @click="_onSave">保存</el-button>
<el-button size="small" @click="close">关闭</el-button>
</div>
</div>
<div class="cntinfo">
<el-form
ref="formRef"
:model="listQuery"
:inline="true"
label-position="top"
:rules="rules"
>
<div
style="
width: 25%;
display: flex;
justify-content: center;
margin-bottom: 10px;
"
>
<div style="position: relative; width: 90px; height: 100px">
<el-upload :disabled="forbidden"
action="/mosty-api/mosty-base/minio/image/upload/id"
:on-change="upImgFile"
:on-success="upImg"
:show-file-list="false"
>
<el-image v-if="imgUrl" :src="imgUrl" fit="cover" />
<el-icon v-else>
<Plus></Plus>
</el-icon>
<span
v-if="imgUrl"
style="position: absolute; top: -52px; right: -20px"
>
<el-icon size="20" @click.stop="deletImg">
<Close />
</el-icon>
</span>
</el-upload>
</div>
</div>
<el-form-item style="width: 20%" prop="ssbmdm" label="所属部门">
<MOSTY.Department
width="100%" :disabled="forbidden"
clearable
v-model="listQuery.ssbmdm"
:placeholder="listQuery.ssbm ? listQuery.ssbm : '请选择所属部门'"
/>
<el-form ref="formRef" :model="listQuery" :inline="true" label-position="top" :rules="rules">
<el-form-item style="width: 40%" prop="cph" label="车牌号">
<el-input :disabled="forbidden" v-model="listQuery.cph" placeholder="请输入车牌号" style="width: 100%" clearable />
</el-form-item>
<el-form-item style="width: 40%" prop="bklb" label="布控类别">
<el-select v-model="listQuery.bklb" placeholder="请选择布控类别">
<el-option :disabled="forbidden"
v-for="dict in dict.D_BZ_CLBKLX"
:key="dict.value"
:value="dict.value"
:label="dict.label"
></el-option>
<el-form-item style="width: 40%" prop="cpys" label="车牌颜色">
<el-select :disabled="forbidden" v-model="listQuery.cpys" placeholder="请选择车牌颜色" filterable>
<el-option v-for="dict in dict.D_BZ_CPHYS" :key="dict.value" :value="dict.value"
:label="dict.label"></el-option>
</el-select>
</el-form-item>
<el-form-item style="width: 40%" prop="bkcph" label="车牌号">
<el-input :disabled="forbidden"
v-model="listQuery.bkcph"
placeholder="请输入布控车辆车牌号"
style="width: 100%"
clearable
/>
<el-form-item style="width: 40%" prop="yjys" label="布控颜色">
<el-select :disabled="forbidden" v-model="listQuery.yjys" placeholder="请选择布控颜色" filterable>
<el-option v-for="dict in dict.D_BZ_BKYS" :key="dict.value" :value="dict.value"
:label="dict.label"></el-option>
</el-select>
</el-form-item>
<el-form-item style="width: 40%" prop="bkyy" label="布控原因">
<el-input :disabled="forbidden" v-model="listQuery.bkyy" type="textarea" placeholder="请输入布控原因" clearable />
</el-form-item>
<el-form-item style="width:100%" prop="bkfs" label="布控方式">
<el-radio-group v-model="listQuery.bkfs">
<el-radio label="01">全省布控</el-radio>
<el-radio label="02">精准布控</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item style="width: 40%" prop="bkkssj" label="开始时间">
<el-date-picker :disabled="forbidden"
v-model="listQuery.bkkssj"
type="datetime"
placeholder="请选中开始时间"
format="YYYY-MM-DD hh:mm:ss"
value-format="YYYY-MM-DD hh:mm:ss"
/>
<el-date-picker :disabled="forbidden" v-model="listQuery.bkkssj" type="datetime" placeholder="请选中开始时间"
format="YYYY-MM-DD hh:mm:ss" value-format="YYYY-MM-DD hh:mm:ss" />
</el-form-item>
<el-form-item style="width: 40%" prop="bkjssj" label="结束时间">
<el-date-picker :disabled="forbidden"
v-model="listQuery.bkjssj"
type="datetime"
placeholder="请选中结束时间"
format="YYYY-MM-DD hh:mm:ss"
value-format="YYYY-MM-DD hh:mm:ss"
/>
<el-date-picker :disabled="forbidden" v-model="listQuery.bkjssj" type="datetime" placeholder="请选中结束时间"
format="YYYY-MM-DD hh:mm:ss" value-format="YYYY-MM-DD hh:mm:ss" />
</el-form-item>
<el-form-item style="width: 40%" prop="bkqy" label="布控区域">
<el-input :disabled="forbidden"
v-model="listQuery.bkqy"
placeholder="请输入布控区域"
style="width: 100%"
clearable
/>
</el-form-item>
<el-form-item style="width: 40%" prop="bkzt" label="布控状态">
<el-select :disabled="forbidden" v-model="listQuery.bkzt" placeholder="请选择布控状态">
<el-option
v-for="dict in dict.D_BZ_RCBKZT"
:key="dict.value"
:value="dict.value"
:label="dict.label"
></el-option>
<el-form-item style="width: 40%" prop="czcs" label="处置措施">
<el-select :disabled="forbidden" v-model="listQuery.czcs" placeholder="请选择布控颜色">
<el-option v-for="dict in dict.D_BZ_CZCS" :key="dict.value" :value="dict.value"
:label="dict.label"></el-option>
</el-select>
</el-form-item>
<el-form-item style="width: 40%" prop="bkfw" label="布控范围">
<el-select :disabled="forbidden" v-model="listQuery.bkfw" placeholder="请选择布控状态">
<el-option
v-for="dict in dict.D_BZ_RCBKFW"
:key="dict.value"
:value="dict.value"
:label="dict.label"
></el-option>
</el-select>
</el-form-item>
<el-form-item style="width: 40%" prop="bkczlx" label="布控操作类型">
<el-input :disabled="forbidden"
v-model="listQuery.bkczlx"
placeholder="请输入布控区域"
style="width: 100%"
clearable
/>
</el-form-item>
<el-form-item style="width: 40%" prop="bkdxtzm" label="布控对象特征码">
<el-input :disabled="forbidden"
v-model="listQuery.bkdxtzm"
placeholder="请输入布控区域"
style="width: 100%"
clearable
/>
</el-form-item>
<el-form-item style="width: 40%" prop="bkkk" label="布控卡口">
<div class="diviput" @click="forbidden ? '' : showJcz = true">
<span v-if="listQuery.bkkk">{{ listQuery.bkkk }}</span>
<el-form-item style="width: 40%" prop="jczid" label="布控卡口" v-if="listQuery.bkfs=='02'">
<div class="diviput" @click="openJcz">
<span v-if="listQuery.jczid">{{ listQuery.jczmc }}</span>
<span class="placeholder" v-else> 请选择布控卡口</span>
</div>
</el-form-item>
</el-form>
</div>
</div>
<Jczloder v-model="showJcz" :Single="true" @choosedJcz="JczMsg" :data="[]" />
<Jczloder v-model="showJcz" :Single="false" @choosedJcz="JczMsg" :data="[]" />
</template>
<script setup>
import { ref, reactive, onMounted } from "vue";
import { BkrwinsertEntity, BkrweditEntity } from "@/api/mosty-jcz.js";
import * as MOSTY from "@/components/MyComponents/index";
import { jczBkclEntity, jczBkclInsertEntity } from "@/api/mosty-jcz.js";
import Jczloder from "@/components/loder/Jczloder.vue";
import { ElMessage } from "element-plus";
const props = defineProps({
dict: {
type: Object,
default: () => {}
default: () => { }
}
});
const rules = reactive({
bkdxtzm: [
cph: [
{
required: true,
message: "请输入布控对象特征码"
}
],
bkbsm: [
{
required: true,
message: "请输入布控标识码"
message: "请输入布控姓名"
}
],
bkkk: [
{
required: true,
message: "请选择布控卡口"
}
],
bkjssj: [
],cpys:[{
required: true,
message: "请选择车牌颜色"
}],
yjys: [
{
required: true,
message: "请选择布控结束时间"
message: "请选择预警颜色"
}
],
bkkssj: [
@ -197,38 +100,28 @@ const rules = reactive({
message: "请选择布控开始时间"
}
],
bkzt: [
bkjssj: [
{
required: true,
message: "请选择布控状态"
message: "请输入布控身份证号"
}
],
bkcph: [
bkfs: [
{
required: true,
message: "请输入布控车辆车牌号"
message: "请输入布控方式"
}
], czcs: [
{
required: true,
message: "请输选择布控措施"
}
],
bkqy: [
{
required: true,
message: "请输入布控区域",
trigger: "change"
}
],
bklb: [
{
required: true,
message: "请输入布控类别",
trigger: "change"
}
],
bkmc: [
{
required: true,
message: "请输入布控名称"
}
]
bkyy: {
required: true,
message: "请输入布控原因"
}
});
const formRef = ref(null);
const emit = defineEmits(["getjczgetXfllList"]);
@ -249,17 +142,18 @@ const pageInfo = {
};
let pageType = ref("add");
const forbidden=ref(false);
// 初始化数据
const forbidden = ref(false)
const init = (type, row) => {
pageType.value = type;
dialogForm.value = true;
// 根据type和row初始化表单数据
tabHeightFn();
if (type == "edit"||type == "detail") {
listQuery.value = { ...row };
if (type == "edit" || type == "detail") {
listQuery.value = { ...row};
if (type == "detail") {
forbidden.value=true
forbidden.value = true
}
} else {
listQuery.value = {};
@ -270,15 +164,15 @@ const _onSave = () => {
if (!formRef) return;
formRef.value.validate((valid, fields) => {
if (valid) {
const promes = { ...listQuery.value, bklx: "02" };
const promes = { ...listQuery.value };
if (pageType.value == "add") {
BkrwinsertEntity(promes).then((res) => {
jczBkclInsertEntity(promes).then((res) => {
ElMessage({ message: "新增成功", type: "success" });
emit("getjczgetXfllList");
close();
});
} else {
BkrweditEntity(promes).then((res) => {
jczBkclEntity(promes).then((res) => {
ElMessage({ message: "修改成功", type: "success" });
emit("getjczgetXfllList");
close();
@ -290,27 +184,27 @@ const _onSave = () => {
});
console.log();
};
// 图片上传
const imgUrl = ref();
const urlImg = "/mosty-api/mosty-base/minio/image/download/";
const upImg = (row) => {
listQuery.value.bkzp = row.data;
imgUrl.value = urlImg.value + row.data;
};
//打开弹窗
const showJcz = ref(false);
const openJcz = () => {
if (!forbidden.value) {
showJcz.value = true
}
};
const JczMsg = (val) => {
listQuery.value.bkkk = val.jczmc;
listQuery.value.kkId = val.id;
listQuery.value.jczmc = val.map(item => {
return item.jczmc
}).toString()
listQuery.value.jczid =val.map(item => {
return item.id
}).toString()
};
//页面关闭
const close = () => {
dialogForm.value = false;
forbidden.value=false;
forbidden.value = false
listQuery.value = {};
};
// 表格高度计算
const tableHeight1 = ref();
@ -324,21 +218,25 @@ defineExpose({ init });
<style lang="scss" scoped>
.dialog {
padding: 20px;
.head_box {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
}
.cntinfo {
height: calc(100% - 70px);
overflow: hidden;
overflow-y: auto;
}
}
.my_transfer {
height: calc(100% - 50px);
display: flex;
.btn {
width: 50px;
display: flex;
@ -346,58 +244,71 @@ defineExpose({ init });
justify-content: center;
margin: 0 10px;
}
.left {
margin: 12px;
flex: 1;
position: relative;
.tableBox {
position: absolute;
width: 100%;
}
.serch {
position: relative;
width: 100%;
// height: 96px;
> .el-form--inline {
>.el-form--inline {
display: block;
width: 100%;
padding: 0;
> .el-form-item--default {
>.el-form-item--default {
width: 31%;
}
}
}
.tableBox {
width: 100%;
}
}
.right {
width: 380px;
margin: 12px;
}
}
.phone {
width: 95px;
height: 120px;
.el-image {
width: 95px;
max-height: 120px;
}
}
::v-deep .el-upload {
width: 90px;
height: 100px;
border: 1px dashed #000000;
margin-bottom: 14px;
.el-icon {
margin-top: 34px;
font-size: 26px;
}
.el-image {
width: 100%;
height: 100%;
}
}
.mapbox {
width: 1000px;
padding: 0 10px;
@ -405,6 +316,7 @@ defineExpose({ init });
box-sizing: border-box;
background: #000;
}
.diviput {
width: 100%;
background-color: #ffffff;
@ -414,10 +326,12 @@ defineExpose({ init });
line-height: 32px;
padding: 0 10px;
border-radius: 5px;
.placeholder {
color: #b5b5b5;
}
}
::v-deep .el-icon svg {
color: #000000 !important;
}

View File

@ -3,10 +3,10 @@
<div class="titleBox">
<PageTitle title="车辆布控">
<el-button type="primary" @click="addEdit('add', '')" v-if="Auth">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle" @click="addEdit('add', row)"
>新增</span
>
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle" @click="addEdit('add', row)">新增</span>
</el-button>
</PageTitle>
</div>
@ -15,24 +15,27 @@
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<div class="tabBox">
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseData"
>
<template #bklb="{ row }">
<dict-tag :value="row.bklb" :options="D_BZ_CLBKLX" :tag="false" />
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
@chooseData="chooseData">
<template #yjys="{ row }">
<dict-tag :value="row.yjys" :options="D_BZ_BKYS" :tag="false" />
</template>
<template #bkzt="{ row }">
<template #cpys="{ row }">
<dict-tag :value="row.cpys" :options="D_BZ_CPHYS" :tag="false" />
</template>
<template #bkfs="{ row }">
{{ row.bkfs == '01' ? "全省布控" : "精准布控" }}
</template>
<template #bkcs="{ row }">
<dict-tag :value="row.yjys" :options="D_BZ_CZCS" :tag="false" />
</template>
<!-- <template #bkzt="{ row }">
<dict-tag :value="row.bkzt" :options="D_BZ_RCBKZT" :tag="false" />
</template>
<template #bkfw="{ row }">
<dict-tag :value="row.bkfw" :options="D_BZ_RCBKFW" :tag="false" />
</template>
</template> -->
<!-- 操作 -->
<template #controls="{ row }">
@ -40,30 +43,18 @@
<el-link type="primary" @click="addEdit('edit', row)">修改</el-link>
<el-link type="primary" @click="delDictItem(row.id)">删除</el-link>
</template>
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
</template>
</MyTable>
<Pages
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"
></Pages>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"></Pages>
</div>
<!-- 编辑详情 -->
<EditAddForm
ref="detailDiloag"
:dict="{
D_BZ_RCBKZT,
D_BZ_RCBKFW,
D_BZ_CLBKLX
}"
@getjczgetXfllList="getjczgetXfllList"
/>
<EditAddForm ref="detailDiloag" :dict="{
D_BZ_BKYS, D_BZ_CZCS, D_BZ_CPHYS
}" @getjczgetXfllList="getjczgetXfllList" />
</div>
</template>
@ -73,36 +64,37 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue";
import EditAddForm from "./components/editAddForm.vue";
import{isAuth} from '@/utils/tools.js'
import { BkrwselectPage, BkrwdeleteById } from "@/api/mosty-jcz.js";
import { ElMessage } from "element-plus";
import { jczBkclSelectPage, jczBkclDeleteById } from "@/api/mosty-jcz.js";
import { isAuth } from '@/utils/tools.js'
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
const { proxy } = getCurrentInstance();
const urlImg = "/mosty-api/mosty-base/minio/image/download/";
const { D_BZ_RCBKZT, D_BZ_RCBKFW, D_BZ_CLBKLX } = proxy.$dict(
"D_BZ_RCBKZT",
"D_BZ_RCBKFW",
"D_BZ_CLBKLX"
const { D_BZ_BKYS, D_BZ_CZCS, D_BZ_CPHYS } = proxy.$dict(
"D_BZ_BKYS", "D_BZ_CZCS", "D_BZ_CPHYS"
);
const searchConfiger = ref([
{
label: "车牌号",
prop: "bkcph",
placeholder: "请输入车牌号",
label: "布控名称",
prop: "bkmc",
placeholder: "请输入布控名称",
showType: "input"
},
{
label: "布控状态",
prop: "bkzt",
placeholder: "布控状态",
showType: "select",
options: D_BZ_RCBKZT
label: "证件号码",
prop: "bksfzh",
placeholder: "请输入证件号码",
showType: "input"
},
{
showType: "department",
prop: "ssbmdm",
placeholder: "请选择所属部门",
label: "所属部门"
}
label: "布控颜色",
prop: "yjys",
placeholder: "布控颜色",
showType: "select",
options: D_BZ_BKYS
},
]);
const detailDiloag = ref();
@ -121,60 +113,59 @@ const pageData = reactive({
}, //分页
controlsWidth: 250, //操作栏宽度
tableColumn: [
{ label: "所属部门", prop: "ssbm", showOverflowTooltip: true },
{
label: "布控区域",
prop: "bkqy",
showOverflowTooltip: true
// showSolt: true
},
{
label: "布控车牌号",
prop: "bkcph",
label: "车牌号",
prop: "cph",
showOverflowTooltip: true
},
{
label: "布控类别",
prop: "bklb",
label: "车牌颜色",
prop: "cpys",
showSolt: true,
showOverflowTooltip: true
},
{
label: "布控状态",
prop: "bkzt",
label: "预警颜色",
prop: "yjys",
showSolt: true,
showOverflowTooltip: true
},
{
label: "布控范围",
prop: "bkfw",
showSolt: true,
showOverflowTooltip: true
},
{ label: "布控开始时间", prop: "bkkssj", showOverflowTooltip: true },
{
label: "布控结束时间",
prop: "bkjssj",
showOverflowTooltip: true
},
{
label: "布控方式",
prop: "bkfs",
showSolt: true,
},
{
label: "布控措施",
prop: "bkcs",
showSolt: true,
}
]
});
const Auth=ref(true)
const Auth = ref(false)
onMounted(() => {
Auth.value=isAuth()
tabHeightFn();
Auth.value = isAuth()
});
//查询条件
const queryCondition = ref({ bklx: "02" });
const queryCondition = ref();
// 获取数据
const getjczgetXfllList = () => {
pageData.tableConfiger.loading = true;
const promes = { ...queryCondition.value, ...pageData.pageConfiger };
BkrwselectPage(promes)
jczBkclSelectPage(promes)
.then((res) => {
pageData.tableData = res.records;
pageData.total = res.total;
}).catch((err) => {
console.log(err);
})
.finally(() => {
pageData.tableConfiger.loading = false;
@ -183,7 +174,7 @@ const getjczgetXfllList = () => {
getjczgetXfllList();
// 搜索
const onSearch = (val) => {
queryCondition.value = { ...queryCondition.value, ...val };
queryCondition.value = { ...val };
getjczgetXfllList();
};
@ -200,12 +191,11 @@ const delDictItem = (ids) => {
proxy
.$confirm("确定删除该数据?", "警告", { type: "warning" })
.then(() => {
BkrwdeleteById({ ids: ids })
.then((res) => {
ElMessage({ message: "删除成功", type: "success" });
pageData.pageConfiger.pageCurrent = 1;
getjczgetXfllList();
})
jczBkclDeleteById(ids).then((res) => {
ElMessage({ message: "删除成功", type: "success" });
pageData.pageConfiger.pageCurrent = 1;
getjczgetXfllList();
})
.catch((err) => {
console.log(err);
});
@ -229,6 +219,7 @@ const tabHeightFn = () => {
tabHeightFn();
};
};
</script>
<style>

View File

@ -21,7 +21,7 @@
:inline="true"
label-position="top"
>
<div
<!-- <div
style="
width: 25%;
display: flex;
@ -29,28 +29,15 @@
margin-bottom: 10px;
"
>
<div style="position: relative; width: 90px; height: 100px">
<el-upload
action="/mosty-api/mosty-base/minio/image/upload/id"
:on-change="upImgFile"
:on-success="upImg"
:show-file-list="false"
>
<el-image v-if="imgUrl" :src="imgUrl" fit="cover" />
<el-icon v-else>
<Plus></Plus>
</el-icon>
<span
v-if="imgUrl"
style="position: absolute; top: -52px; right: -20px"
>
<el-icon size="20" @click.stop="deletImg">
<Close />
</el-icon>
</span>
</el-upload>
<div >
</div>
</div>
</div> -->
<el-form-item>
{{ listQuery.tp }}
<MOSTY.Upload width="100%" :limit="1" :isImg="true" v-model="listQuery.tp" :disableds="forbidden"/>
</el-form-item>
<el-form-item label="身份证号码" prop="sfzh">
<el-input
v-model="listQuery.sfzh"
@ -253,6 +240,7 @@ import { jcztbQwXfll, jcztbQwXfllUpdete } from "@/api/mosty-jcz.js";
import { Right, Back } from "@element-plus/icons-vue";
import { baseselectPage } from "@/api/mosty-base";
import { ElMessage } from "element-plus";
const props = defineProps({
dict: {
type: Object,
@ -350,16 +338,18 @@ const init = (type, row) => {
//保存
const _onSave = () => {
if (!formRef) return;
const promes = { ...listQuery.value };
// promes.tp=listQuery.value.tp&&Array.isArray(listQuery.value.tp)? listQuery.value.tp.join(","):""
formRef.value.validate((valid, fields) => {
if (valid) {
if (pageType.value == "add") {
jcztbQwXfll(listQuery.value).then((res) => {
jcztbQwXfll(promes).then((res) => {
ElMessage({ message: "新增成功", type: "success" });
emit("getjczgetXfllList");
close();
});
} else {
jcztbQwXfllUpdete(listQuery.value).then((res) => {
jcztbQwXfllUpdete(promes).then((res) => {
ElMessage({ message: "修改成功", type: "success" });
emit("getjczgetXfllList");
close();
@ -371,17 +361,10 @@ const _onSave = () => {
});
console.log();
};
// 图片上传
const imgUrl = ref();
const urlImg = "/mosty-api/mosty-base/minio/image/download/";
const upImg = (row) => {
listQuery.value.tp = row.data;
imgUrl.value = urlImg.value + row.data;
};
//页面关闭
const close = () => {
dialogForm.value = false;
listQuery.value = {};
};
// 表格高度计算
@ -456,15 +439,15 @@ defineExpose({ init });
max-height: 120px;
}
}
::v-deep .el-upload {
width: 90px;
height: 100px;
border: 1px dashed #000000 !important;
margin-bottom: 14px;
// ::v-deep .el-upload {
// width: 90px;
// height: 100px;
// border: 1px dashed #000000 !important;
// margin-bottom: 14px;
.el-image {
width: 100%;
height: 100%;
}
}
// .el-image {
// width: 100%;
// height: 100%;
// }
// }
</style>

View File

@ -63,6 +63,7 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue";
import EditAddForm from "./components/editAddForm.vue";
import { ElMessage } from "element-plus";
import { jczgetXfllList, jczdeleteList } from "@/api/mosty-jcz.js";
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
const { proxy } = getCurrentInstance();

View File

@ -2,7 +2,6 @@
<div>
<div class="titleBox">
<PageTitle title="环林卡口管理">
{{ Auth }}
<el-button type="primary" @click="addEdit('add', '')" v-if="Auth">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle" @click="addEdit('add', row)"

View File

@ -27,6 +27,7 @@
style="width: 100%"
ref="cascader"
clearable
:disabled="forbidden"
filterable
:props="props"
v-model:modelValue="listQuery.ssbmdm"
@ -34,6 +35,7 @@
</el-form-item>
<el-form-item label="设备编号" prop="qxbh">
<el-input
:disabled="forbidden"
v-model="listQuery.qxbh"
placeholder="请输入设备编号"
clearable
@ -42,7 +44,7 @@
</el-form-item>
<el-form-item label="装备类型" prop="qxlx">
<el-select v-model="listQuery.qxlx" placeholder="请选择性别">
<el-select v-model="listQuery.qxlx" placeholder="请选择装备类型" :disabled="forbidden">
<el-option
v-for="item in dict.D_JCGL_JYQX_QXLX"
:key="item"
@ -52,7 +54,7 @@
</el-select>
</el-form-item>
<el-form-item label="设备分类" prop="scode">
<el-select v-model="listQuery.scode" placeholder="请选择设备分类">
<el-select v-model="listQuery.scode" placeholder="请选择设备分类" :disabled="forbidden">
<el-option
v-for="item in dict.D_BZ_JYQXFL"
:key="item"
@ -62,7 +64,7 @@
</el-select>
</el-form-item>
<el-form-item prop="qxMc" label="装备名称">
<el-input
<el-input :disabled="forbidden"
v-model="listQuery.qxMc"
placeholder="请输入装备名称"
clearable
@ -70,7 +72,7 @@
/>
</el-form-item>
<el-form-item label="装备型号">
<el-input
<el-input :disabled="forbidden"
v-model="listQuery.xh"
placeholder="请输入装备型号"
clearable
@ -78,10 +80,10 @@
/>
</el-form-item>
<el-form-item label="数量" prop="sl">
<el-input-number v-model="listQuery.sl" :step="1" :min="0" />
<el-input-number v-model="listQuery.sl" :step="1" :min="0" :disabled="forbidden"/>
</el-form-item>
<el-form-item label="计量单位" prop="jsdw">
<el-input
<el-input :disabled="forbidden"
v-model="listQuery.jsdw"
placeholder="请输入单位"
clearable
@ -89,7 +91,7 @@
/>
</el-form-item>
<el-form-item label="装备状态">
<el-select
<el-select :disabled="forbidden"
clearable
v-model="listQuery.zbzt"
placeholder="请选择"
@ -105,14 +107,14 @@
</el-form-item>
<el-form-item label="装备厂商">
<el-input
v-model="listQuery.sccs"
v-model="listQuery.sccs" :disabled="forbidden"
placeholder="请输入装备厂商"
clearable
style="width: 100%"
/>
</el-form-item>
<el-form-item prop="cgrq" label="购置日期">
<el-date-picker
<el-date-picker :disabled="forbidden"
style="width: 100%"
format="YYYY/MM/DD"
value-format="YYYY-MM-DD"
@ -122,7 +124,7 @@
/>
</el-form-item>
<el-form-item prop="dqsj" label="到期日期">
<el-date-picker
<el-date-picker :disabled="forbidden"
format="YYYY/MM/DD"
value-format="YYYY-MM-DD"
v-model="listQuery.dqsj"
@ -134,8 +136,8 @@
<el-form-item label="备注" style="width: 100%">
<el-input
v-model="listQuery.bz"
placeholder="请输入关键字"
v-model="listQuery.bz" :disabled="forbidden"
placeholder="请输入备注"
show-word-limit
type="textarea"
/>
@ -239,14 +241,18 @@ const propsTree = ref({
emitPath: false,
multiple: false
});
const forbidden=ref(false)
// 初始化数据
const init = (type, row) => {
pageType.value = type;
dialogForm.value = true;
// 根据type和row初始化表单数据
tabHeightFn();
if (type == "edit") {
if (type == "edit"||type == "detail") {
listQuery.value = { ...row };
if (type == "detail") {
forbidden.value=true
}
} else {
listQuery.value = {};
}

View File

@ -15,7 +15,7 @@
</div>
<div class="leftMag">
<div class="ld">值班领导</div>
<div class="name">{{ BbMag.fzrXm }}</div>
<div class="name">{{ BbMag?.fzrXm }}</div>
</div>
</div>
<div class="flex">
@ -24,7 +24,7 @@
</div>
<div class="leftMag">
<div class="ld">联系电话</div>
<div class="name">{{ BbMag.fzrLxdh }}</div>
<div class="name">{{ BbMag?.fzrLxdh }}</div>
</div>
</div>
<div class="dutyList flex just-between align-center">
@ -32,7 +32,7 @@
<img src="@/assets/images/tc/zbfj.png" alt="" srcset="" />
</div>
<div class="occupation">
值班民警<span class="number">{{ BbMag.ryList.length }}</span>
值班民警<span class="number">{{ BbMag?.ryList.length }}</span>
</div>
</div>
<div class="dutyList flex just-between align-center">
@ -40,7 +40,7 @@
<img src="@/assets/images/tc/zbfj.png" alt="" srcset="" />
</div>
<div class="occupation">
值班武警<span class="number">{{ BbMag.ryList.length }}</span>
值班武警<span class="number">{{ BbMag?.ryList.length }}</span>
</div>
</div>
<div class="dutyList flex just-between align-center">
@ -48,7 +48,7 @@
<img src="@/assets/images/tc/zbfj.png" alt="" srcset="" />
</div>
<div class="occupation">
值班民警<span class="number">{{ BbMag.ryList.length }}</span>
值班民警<span class="number">{{ BbMag?.ryList.length }}</span>
</div>
</div>
</div>

View File

@ -21,7 +21,7 @@
:inline="true"
:rules="rules"
>
<div class="bblxItem">
<!-- <div class="bblxItem">
<div class="btItem">环林卡口设置</div>
<div class="info">
<el-form-item>
@ -47,7 +47,7 @@
</div>
</el-form-item>
</div>
</div>
</div> -->
<div class="bblxItem">
<div class="btItem">班次设置</div>
<div class="info">
@ -311,6 +311,7 @@ import { jczsavel, Xfbbupdate } from "@/api/mosty-jcz.js";
import { ElMessage } from "element-plus";
import ChooseTable from "@/components/chooseList/chooseTable.vue";
import { timeValidate } from "@/utils/tools.js";
import { useRoute } from "vue-router";
const { proxy } = getCurrentInstance();
// const { D_BZ_JYQXFL } = proxy.$dict("D_BZ_JYQXFL");
const props = defineProps({
@ -324,7 +325,7 @@ const props = defineProps({
},
row: { type: Object, default: () => {} }
});
const route = useRoute();
const emit = defineEmits(["close"]);
const formRef = ref(null);
const dialogForm = ref(false);
@ -371,6 +372,7 @@ const fz = (val) => {
});
return data;
};
// 初始化数据
const init = (type) => {
pageType.value = type;
@ -405,8 +407,12 @@ watch(
},
{ deep: true, immediate: true }
);
const routerList=ref({})
onMounted(() => {
init();
console.log(route.query );
routerList.value=route.query
});
// 验证规则
const rules = ref({
@ -443,11 +449,9 @@ const _onSave = () => {
case "07":
listQuery.value.bcKts = 8;
}
if (listQuery.value.jczList) {
listQuery.value.jczid = listQuery.value.jczList.id;
listQuery.value.jczmc = listQuery.value.jczList.jczmc;
}
listQuery.value.jczid = routerList.value.id?routerList.value.id:"";
listQuery.value.jczmc = routerList.value.name?routerList.value.name:"";
if (pageType.value == "add") {
jczsavel(listQuery.value).then((res) => {
ElMessage({ message: "新增成功", type: "success" });

View File

@ -5,7 +5,7 @@ function resolve(dir) {
}
// const serverHost = "http://192.192.8.9:8006";
const serverHost = "http://192.168.1.67:8006"
const serverHost = "http://192.168.1.32:8066"
// const serverHost = "http://127.0.0.1:8006"
module.exports = {
publicPath: "./",