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

View File

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

View File

@ -48,6 +48,19 @@
车牌号{{ item.cph }} 车牌号{{ item.cph }}
</div> </div>
</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> </div>
<Empty :show="warningList == null && show == 2" /> <Empty :show="warningList == null && show == 2" />
<div class="warning-list" v-if="show == 1 && warningList"> <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 Empty from "@/components/MyComponents/Empty/index.vue";
import { jczqueryById } from "@/api/mosty-jcz"; import { jczqueryById } from "@/api/mosty-jcz";
import emitter from "@/utils/eventBus.js"; import emitter from "@/utils/eventBus.js";
const warningList = ref({ qxList: [], ryList: [], clList: [] }); const warningList = ref({ qxList: [], ryList: [], clList: [] ,sbList:[]});
const show = ref(1); const show = ref(1);
const props = defineProps({ const props = defineProps({
@ -101,6 +114,7 @@ const getjczqueryById = () => {
: []; : [];
warningList.value.ryList = res.ryList ? res.ryList : []; warningList.value.ryList = res.ryList ? res.ryList : [];
warningList.value.clList = res.clList ? res.clList : []; warningList.value.clList = res.clList ? res.clList : [];
warningList.value.sbList = [...res.tcList,...res.zdList]
} else { } else {
warningList.value = res; warningList.value = res;
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -21,7 +21,7 @@
:inline="true" :inline="true"
label-position="top" label-position="top"
> >
<div <!-- <div
style=" style="
width: 25%; width: 25%;
display: flex; display: flex;
@ -29,28 +29,15 @@
margin-bottom: 10px; margin-bottom: 10px;
" "
> >
<div style="position: relative; width: 90px; height: 100px"> <div >
<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-form-item label="身份证号码" prop="sfzh">
<el-input <el-input
v-model="listQuery.sfzh" 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 { Right, Back } from "@element-plus/icons-vue";
import { baseselectPage } from "@/api/mosty-base"; import { baseselectPage } from "@/api/mosty-base";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
const props = defineProps({ const props = defineProps({
dict: { dict: {
type: Object, type: Object,
@ -350,16 +338,18 @@ const init = (type, row) => {
//保存 //保存
const _onSave = () => { const _onSave = () => {
if (!formRef) return; 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) => { formRef.value.validate((valid, fields) => {
if (valid) { if (valid) {
if (pageType.value == "add") { if (pageType.value == "add") {
jcztbQwXfll(listQuery.value).then((res) => { jcztbQwXfll(promes).then((res) => {
ElMessage({ message: "新增成功", type: "success" }); ElMessage({ message: "新增成功", type: "success" });
emit("getjczgetXfllList"); emit("getjczgetXfllList");
close(); close();
}); });
} else { } else {
jcztbQwXfllUpdete(listQuery.value).then((res) => { jcztbQwXfllUpdete(promes).then((res) => {
ElMessage({ message: "修改成功", type: "success" }); ElMessage({ message: "修改成功", type: "success" });
emit("getjczgetXfllList"); emit("getjczgetXfllList");
close(); close();
@ -371,17 +361,10 @@ const _onSave = () => {
}); });
console.log(); 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 = () => { const close = () => {
dialogForm.value = false; dialogForm.value = false;
listQuery.value = {}; listQuery.value = {};
}; };
// 表格高度计算 // 表格高度计算
@ -456,15 +439,15 @@ defineExpose({ init });
max-height: 120px; max-height: 120px;
} }
} }
::v-deep .el-upload { // ::v-deep .el-upload {
width: 90px; // width: 90px;
height: 100px; // height: 100px;
border: 1px dashed #000000 !important; // border: 1px dashed #000000 !important;
margin-bottom: 14px; // margin-bottom: 14px;
.el-image { // .el-image {
width: 100%; // width: 100%;
height: 100%; // height: 100%;
} // }
} // }
</style> </style>

View File

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

View File

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

View File

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

View File

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

View File

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