1039 lines
29 KiB
Vue
1039 lines
29 KiB
Vue
<template>
|
||
<el-form
|
||
ref="editRef"
|
||
class="info"
|
||
:model="dialogForm"
|
||
:inline="true"
|
||
:rules="rules"
|
||
>
|
||
<div class="bblxItem">
|
||
<div class="btItem">巡防部门</div>
|
||
<div class="info">
|
||
<el-form-item label="巡防部门" prop="ssbmdm">
|
||
<MOSTY.Department
|
||
width="180px"
|
||
clearable
|
||
filterable
|
||
v-model="dialogForm.ssbmdm"
|
||
/>
|
||
</el-form-item>
|
||
</div>
|
||
</div>
|
||
<div class="bblxItem">
|
||
<div class="btItem">巡防范围</div>
|
||
<div class="info">
|
||
<el-form-item prop="xffwlx" label="">
|
||
<el-radio-group v-model="dialogForm.xffwlx" @change="changeType">
|
||
<el-radio
|
||
v-for="it in props.dic.D_ZDY_XFFWLX"
|
||
:key="it"
|
||
:label="it.dm"
|
||
>{{ it.zdmc }}</el-radio
|
||
>
|
||
</el-radio-group>
|
||
</el-form-item>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bblxItem">
|
||
<div class="btItem">
|
||
<span v-if="dialogForm.xffwlx == '01'">巡区设置</span>
|
||
<span v-if="dialogForm.xffwlx == '02'">快反点设置</span>
|
||
<span v-if="dialogForm.xffwlx == '03'">检查站设置</span>
|
||
<span v-if="dialogForm.xffwlx == '04'">警务站设置</span>
|
||
<span v-if="dialogForm.xffwlx == '05'">护学岗设置</span>
|
||
<span v-if="dialogForm.xffwlx == '06'">必巡线</span>
|
||
<span v-if="dialogForm.xffwlx == '07'">必巡点</span>
|
||
</div>
|
||
<div class="info">
|
||
<el-form-item v-if="dialogForm.xffwlx == '01'">
|
||
<ChooseTable
|
||
v-if="!isDetail"
|
||
:deptment="props.dep"
|
||
:configer="{ isRadio: true, lx: 'xfq' }"
|
||
@change="changeXq"
|
||
:dic="props.dic"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item v-if="dialogForm.xffwlx == '02'">
|
||
<ChooseTable
|
||
v-if="!isDetail"
|
||
:deptment="props.dep"
|
||
:configer="{ rowKey: 'kfdId', isRadio: true, lx: 'kfd' }"
|
||
@change="changeXq"
|
||
:dic="props.dic"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item v-if="dialogForm.xffwlx == '03'">
|
||
<ChooseTable
|
||
v-if="!isDetail"
|
||
:deptment="props.dep"
|
||
:configer="{ rowKey: 'id', isRadio: true, lx: 'jcz' }"
|
||
@change="changeXq"
|
||
:dic="props.dic"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item v-if="dialogForm.xffwlx == '04'">
|
||
<ChooseTable
|
||
v-if="!isDetail"
|
||
:deptment="props.dep"
|
||
:configer="{ lx: 'jwz', rowKey: 'jwzId', isRadio: true }"
|
||
@change="changejwz"
|
||
:dic="props.dic"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item
|
||
prop="xfqyMc"
|
||
v-if="['01', '02', '03'].includes(dialogForm.xffwlx)"
|
||
>
|
||
<el-input
|
||
:placeholder="
|
||
dialogForm.xffwlx == '01'
|
||
? '巡区名称'
|
||
: dialogForm.xffwlx == '02'
|
||
? '快反点'
|
||
: '检查站'
|
||
"
|
||
readonly
|
||
v-model="dialogForm.xfqyMc"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item prop="xfqyMc" v-if="['04'].includes(dialogForm.xffwlx)">
|
||
<el-input
|
||
placeholder="警务站"
|
||
readonly
|
||
v-model="dialogForm.jwzMc"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item
|
||
label="必巡点"
|
||
label-width="96px"
|
||
v-if="['01', '07'].includes(dialogForm.xffwlx)"
|
||
>
|
||
<ChooseTable
|
||
:deptment="props.dep"
|
||
v-if="!isDetail"
|
||
:configer="{ lx: 'bxd', placement: 'bottom' }"
|
||
v-model="dialogForm.bxdList"
|
||
:dic="props.dic"
|
||
/>
|
||
<el-tag
|
||
type="primary"
|
||
v-for="itchid in dialogForm.bxdList"
|
||
:key="itchid"
|
||
>{{ itchid.xqmc }}</el-tag
|
||
>
|
||
</el-form-item>
|
||
|
||
<el-form-item
|
||
label="必巡线"
|
||
label-width="96px"
|
||
v-if="['01', '06'].includes(dialogForm.xffwlx)"
|
||
>
|
||
<ChooseTable
|
||
:deptment="props.dep"
|
||
v-if="!isDetail"
|
||
:configer="{
|
||
lx: 'bxx',
|
||
rowKey: 'id',
|
||
isRadio: true,
|
||
placement: 'bottom'
|
||
}"
|
||
@change="changeDw"
|
||
v-model="dialogForm.bxxList"
|
||
:dic="props.dic"
|
||
/>
|
||
<el-tag
|
||
type="primary"
|
||
v-for="itchid in dialogForm.bxxList"
|
||
:key="itchid"
|
||
>{{ itchid.xqmc }}</el-tag
|
||
>
|
||
<template v-if="dialogForm.xffwlx == '06'">
|
||
<div v-for="it in dialogForm.bxdList" :key="it">
|
||
<span v-if="dialogForm.bxdList.length > 0">关联点位:</span>
|
||
<span class="dwBox">{{ it.xqmc }}</span>
|
||
</div>
|
||
</template>
|
||
</el-form-item>
|
||
|
||
<el-form-item label-width="96px" v-if="dialogForm.xffwlx == '05'">
|
||
<ChooseTable
|
||
:deptment="props.dep"
|
||
v-if="!isDetail"
|
||
:configer="{ lx: 'hxg' }"
|
||
v-model="dialogForm.hxgList"
|
||
:dic="props.dic"
|
||
/>
|
||
<el-tag
|
||
type="primary"
|
||
v-for="itchid in dialogForm.hxgList"
|
||
:key="itchid"
|
||
>{{ itchid.xxMc }}</el-tag
|
||
>
|
||
</el-form-item>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bblxItem">
|
||
<div class="btItem">警组设置</div>
|
||
<div class="info">
|
||
<el-form-item>
|
||
<ChooseTable
|
||
v-if="!isDetail"
|
||
:deptment="props.dep"
|
||
:configer="{
|
||
isRadio: true,
|
||
rowKey: 'id',
|
||
lx: 'jz',
|
||
jzlx: props.bblx
|
||
}"
|
||
@change="changeJz"
|
||
:dic="props.dic"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item prop="jzMc" label=" ">
|
||
<el-input
|
||
placeholder="警组名称"
|
||
readonly
|
||
v-model="dialogForm.jzMc"
|
||
></el-input>
|
||
</el-form-item>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bblxItem">
|
||
<div class="btItem">班次设置</div>
|
||
<div class="info">
|
||
<el-form-item>
|
||
<ChooseTable
|
||
v-if="!isDetail"
|
||
:deptment="props.dep"
|
||
:configer="{ isRadio: true, lx: 'zbbc', bclx: props.bblx }"
|
||
@change="changeBc"
|
||
:dic="props.dic"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item prop="bcMc" label=" ">
|
||
<el-input placeholder="班次名称" readonly v-model="dialogForm.bcMc" />
|
||
</el-form-item>
|
||
<el-form-item>
|
||
<span class="f16">(</span>
|
||
</el-form-item>
|
||
<el-form-item prop="bcKssj">
|
||
<el-time-picker
|
||
v-model="dialogForm.bcKssj"
|
||
format="HH:mm:ss"
|
||
value-format="HH:mm:ss"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item style="width: 20px">
|
||
<span class="f16">至</span>
|
||
</el-form-item>
|
||
<el-form-item prop="bcKtsDict" style="width: 90px">
|
||
<MOSTY.Select
|
||
:dictEnum="props.dic.D_QW_BC_KTS"
|
||
placeholder="跨天数"
|
||
v-model="dialogForm.bcKtsDict"
|
||
style="width: 100%"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item prop="bcJssj">
|
||
<el-time-picker
|
||
v-model="dialogForm.bcJssj"
|
||
format="HH:mm:ss"
|
||
value-format="HH:mm:ss"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item>
|
||
<span class="f16">)</span>
|
||
</el-form-item>
|
||
<el-form-item
|
||
v-if="
|
||
dialogForm.bcKtsDict != '01' &&
|
||
dialogForm.bcKtsDict != '02' &&
|
||
dialogForm.bcKtsDict != '03'
|
||
"
|
||
>
|
||
<ChooseTable
|
||
:deptment="props.dep"
|
||
v-if="!isDetail"
|
||
:configer="{ isRadio: true, lx: 'mj', placement: 'left' }"
|
||
@change="changeShr"
|
||
:dic="props.dic"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item
|
||
prop="shrXm"
|
||
v-if="
|
||
dialogForm.bcKtsDict != '01' &&
|
||
dialogForm.bcKtsDict != '02' &&
|
||
dialogForm.bcKtsDict != '03'
|
||
"
|
||
>
|
||
<el-input
|
||
placeholder="审核人"
|
||
readonly
|
||
v-model="dialogForm.shrXm"
|
||
></el-input>
|
||
</el-form-item>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bblxItem">
|
||
<div class="btItem">负责人</div>
|
||
<div class="info">
|
||
<el-form-item>
|
||
<ChooseTable
|
||
:deptment="props.dep"
|
||
@change="handleFzr"
|
||
v-if="!isDetail"
|
||
:configer="{ lx: 'mj', rowKey: 'id', isRadio: true }"
|
||
:dic="props.dic"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item prop="fzrXm">
|
||
<el-input
|
||
readonly
|
||
v-model="dialogForm.fzrXm"
|
||
placeholder="负责人"
|
||
clearable
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item prop="fzrSfzh">
|
||
<el-input
|
||
readonly
|
||
v-model="dialogForm.fzrSfzh"
|
||
placeholder="身份证"
|
||
clearable
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item prop="fzrLxdh">
|
||
<el-input
|
||
readonly
|
||
v-model="dialogForm.fzrLxdh"
|
||
placeholder="负责人电话"
|
||
clearable
|
||
/>
|
||
</el-form-item>
|
||
</div>
|
||
</div>
|
||
<div class="bblxItem">
|
||
<div class="btItem">智能装备</div>
|
||
<div class="info">
|
||
<el-form-item label="执法记录仪" label-width="96px" prop="tcList">
|
||
<ChooseTable
|
||
:deptment="props.dep"
|
||
v-if="!isDetail"
|
||
:configer="{ lx: 'zfjly' }"
|
||
v-model="dialogForm.tcList"
|
||
:dic="props.dic"
|
||
/>
|
||
<div style="min-width: 100px;"> <el-tag
|
||
type="primary"
|
||
v-for="itchid in dialogForm.tcList"
|
||
:key="itchid"
|
||
>{{ itchid.sbmc }}</el-tag
|
||
></div>
|
||
|
||
</el-form-item>
|
||
</div>
|
||
</div>
|
||
<div class="bblxItem">
|
||
<div class="btItem">终端报备</div>
|
||
<div class="info">
|
||
<ChooseTable
|
||
:deptment="props.dep"
|
||
v-if="!isDetail"
|
||
:configer="{ lx: 'zdsb' }"
|
||
v-model="dialogForm.zdList"
|
||
:dic="props.dic"
|
||
/>
|
||
<el-tag type="primary" v-for="it in dialogForm.zdList" :key="it.id">{{
|
||
it.sbmc
|
||
}}</el-tag>
|
||
</div>
|
||
</div>
|
||
<div class="bblxItem">
|
||
<div class="btItem">警用器械</div>
|
||
<div class="info">
|
||
<el-form-item
|
||
:label="item.zdmc"
|
||
:label-width="120"
|
||
v-for="(item, index) in dialogForm.qxList"
|
||
:key="index"
|
||
>
|
||
<el-input-number
|
||
v-model="item.qxsl"
|
||
:min="0"
|
||
:max="1000"
|
||
></el-input-number>
|
||
</el-form-item>
|
||
</div>
|
||
</div>
|
||
<div class="bblxItem">
|
||
<div class="btItem">巡逻方式</div>
|
||
<div class="info">
|
||
<CheckBox :data="baseInfo.xlfs" @changeData="changeDataxl" />
|
||
<div
|
||
class="gapline"
|
||
v-if="baseInfo.xlfs.hasChoose.includes('车巡')"
|
||
></div>
|
||
<!-- 车辆 -->
|
||
<div v-if="baseInfo.xlfs.hasChoose.includes('车巡')">
|
||
<ChooseTable
|
||
style="background-color: red"
|
||
class="dinw"
|
||
:deptment="props.dep"
|
||
v-if="!isDetail"
|
||
v-model="dialogForm.clList"
|
||
:configer="{ lx: 'cl', selectName: '选择车辆' }"
|
||
@change="changeCl"
|
||
:dic="props.dic"
|
||
/>
|
||
</div>
|
||
<div
|
||
v-if="baseInfo.xlfs.hasChoose.includes('车巡') && dialogForm.clList"
|
||
>
|
||
<dl class="dl-car" v-for="item in dialogForm.clList" :key="item.cid">
|
||
<dt class="flex just-between align-center">
|
||
<div>{{ item.cph }}</div>
|
||
<div @click="closeCl(item)">
|
||
<el-icon><Close /></el-icon>
|
||
</div>
|
||
</dt>
|
||
<dd class="flex dir-column pr20 pt10">
|
||
<el-form-item
|
||
v-for="it in item.tcryListStr"
|
||
:label="it.label"
|
||
:key="it.vlaue"
|
||
>
|
||
<div class="flex">
|
||
<div class="num">{{ it.list ? it.list.length : 0 }}</div>
|
||
<ChooseTable
|
||
:deptment="props.dep"
|
||
v-if="!isDetail"
|
||
:configer="{
|
||
lx: it.label == '同行辅警' ? 'fj' : 'mj',
|
||
placement: 'top-start'
|
||
}"
|
||
v-model="it.list"
|
||
:key="it"
|
||
:dic="props.dic"
|
||
/>
|
||
<div class="peolist">
|
||
<el-tag
|
||
type="primary"
|
||
v-for="itchid in it.list"
|
||
:key="itchid"
|
||
>{{ itchid.xm }}</el-tag
|
||
>
|
||
</div>
|
||
</div>
|
||
</el-form-item>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<div
|
||
class="gapline"
|
||
v-if="baseInfo.xlfs.hasChoose.includes('步巡')"
|
||
></div>
|
||
<!-- 人员 -->
|
||
<dl class="dl-car" v-if="baseInfo.xlfs.hasChoose.includes('步巡')">
|
||
<dt class="peo">
|
||
<span>步巡人员</span>
|
||
</dt>
|
||
<dd class="info flex dir-column pt10">
|
||
<el-form-item prop="zbmjStr" label="当班民警">
|
||
<div class="flex">
|
||
<div class="num">
|
||
{{ dialogForm.zbmjStr ? dialogForm.zbmjStr.length : 0 }}
|
||
</div>
|
||
<ChooseTable
|
||
:deptment="props.dep"
|
||
v-if="!isDetail"
|
||
:configer="{ lx: 'mj', placement: 'top-start' }"
|
||
v-model="dialogForm.zbmjStr"
|
||
:dic="props.dic"
|
||
/>
|
||
<div class="peolist">
|
||
<el-tag
|
||
type="primary"
|
||
v-for="item in dialogForm.zbmjStr"
|
||
:key="item"
|
||
>{{ item.xm }}</el-tag
|
||
>
|
||
</div>
|
||
</div>
|
||
</el-form-item>
|
||
<el-form-item prop="zbfjStr" label="当班辅警">
|
||
<div class="flex">
|
||
<div class="num">
|
||
{{ dialogForm.zbfjStr ? dialogForm.zbfjStr.length : 0 }}
|
||
</div>
|
||
<ChooseTable
|
||
:deptment="props.dep"
|
||
v-if="!isDetail"
|
||
:configer="{ lx: 'fj', placement: 'top-start' }"
|
||
v-model="dialogForm.zbfjStr"
|
||
:dic="props.dic"
|
||
/>
|
||
<div class="peolist">
|
||
<el-tag
|
||
type="primary"
|
||
v-for="item in dialogForm.zbfjStr"
|
||
:key="item"
|
||
>{{ item.xm }}</el-tag
|
||
>
|
||
</div>
|
||
</div>
|
||
</el-form-item>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bblxItem">
|
||
<div class="btItem">武装着装</div>
|
||
<div class="info">
|
||
<el-form-item label="武装类型">
|
||
<MOSTY.Radio
|
||
:options="props.dic.D_BZ_WZLX"
|
||
placeholder="类型"
|
||
v-model="dialogForm.xfwzlx"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item prop="xfzzlx" label="着装类型">
|
||
<MOSTY.Radio
|
||
:options="props.dic.D_BZ_ZZLX"
|
||
placeholder="类型"
|
||
v-model="dialogForm.xfzzlx"
|
||
/>
|
||
</el-form-item>
|
||
</div>
|
||
</div>
|
||
<div class="bblxItem">
|
||
<div class="btItem">备注</div>
|
||
<div class="info">
|
||
<el-form-item style="width: 100%">
|
||
<el-input
|
||
v-model="dialogForm.bz"
|
||
placeholder="请输入关键字"
|
||
show-word-limit
|
||
type="textarea"
|
||
/>
|
||
</el-form-item>
|
||
</div>
|
||
</div>
|
||
<div class="bblxItem" v-if="!isDetail">
|
||
<div class="btItem"></div>
|
||
<div class="info subBtn">
|
||
<el-button @click="saveForm" v-loading="loading">报备</el-button>
|
||
<el-button
|
||
@click="dialogForm.value.xffwlx = '1'"
|
||
v-if="props.text == '日历'"
|
||
>重置</el-button
|
||
>
|
||
</div>
|
||
</div>
|
||
</el-form>
|
||
</template>
|
||
|
||
<script setup>
|
||
import { servicePost, serviceGet } from "@/api/serviceApi.js";
|
||
import { ElMessage } from "element-plus";
|
||
import * as MOSTY from "@/components/MyComponents/index";
|
||
import ChooseTable from "@/components/chooseList/chooseTable.vue";
|
||
import emitter from "@/utils/eventBus.js";
|
||
import CheckBox from "@/components/checkBox/index";
|
||
import {
|
||
reactive,
|
||
ref,
|
||
getCurrentInstance,
|
||
defineProps,
|
||
watch,
|
||
defineEmits,
|
||
computed
|
||
} from "vue";
|
||
const { proxy } = getCurrentInstance();
|
||
const props = defineProps({
|
||
bblx: {
|
||
type: String,
|
||
default: "01"
|
||
},
|
||
text: String,
|
||
data: Object,
|
||
dic: Object,
|
||
isDetail: {
|
||
type: Boolean,
|
||
default: false
|
||
},
|
||
dep: Object
|
||
});
|
||
const emits = defineEmits(["updateList", "update:modelValue"]);
|
||
const editRef = ref();
|
||
const multipleTable = ref([]);
|
||
const baseInfo = reactive({
|
||
xlfs: {
|
||
list: ["车巡", "步巡"],
|
||
hasChoose: []
|
||
}
|
||
});
|
||
const loading = ref(false);
|
||
const activeName = ref("");
|
||
const dialogForm = ref({
|
||
xffwlx: "01"
|
||
});
|
||
watch(
|
||
() => props.dic.D_JCGL_JYQX_QXLX,
|
||
(val) => {
|
||
dialogForm.value.qxList = val || [];
|
||
dialogForm.value.qxList.forEach((v) => {
|
||
v.qxsl = 0;
|
||
});
|
||
},
|
||
{ immediate: true }
|
||
);
|
||
|
||
const rules = reactive({
|
||
bcKssj: [{ required: true, message: "请选择开始时间", trigger: ["change"] }],
|
||
bcJssj: [{ required: true, message: "请选择结束时间", trigger: ["change"] }],
|
||
lx: [{ required: true, message: "请选择类型", trigger: ["change"] }],
|
||
xlfs: [{ required: true, message: "请填写巡逻方式", trigger: ["change"] }],
|
||
ssbmdm: [{ required: true, message: "请选择部门", trigger: ["change"] }],
|
||
bcMc: [{ required: true, message: "请选班次", trigger: ["change"] }],
|
||
jzMc: [{ required: true, message: "请选择警组", trigger: ["change"] }],
|
||
shrXm: [
|
||
{ required: true, message: "请选择审核人", trigger: ["change", "blur"] }
|
||
],
|
||
tcList: [
|
||
{ required: true, message: "请选择执法记录仪", trigger: ["change", "blur"] }
|
||
],
|
||
xlfs: [{ required: true, message: "请选择警组", trigger: ["change"] }]
|
||
});
|
||
// 选择班次
|
||
const changeBc = (val) => {
|
||
dialogForm.value.bcMc = val ? val[0].bcMc : "";
|
||
dialogForm.value.bcId = val ? val[0].id : "";
|
||
dialogForm.value.bcKssj = val ? val[0].bcKssj : "";
|
||
dialogForm.value.bcJssj = val ? val[0].bcJssj : "";
|
||
dialogForm.value.bcKtsDict = val ? val[0].bcKtsDict : "";
|
||
};
|
||
// 选择巡区 - 检查站 - 快反点
|
||
const changeXq = (val) => {
|
||
console.log(val);
|
||
dialogForm.value.xfqyMc = val
|
||
? val[0].xqmc || val[0].kfdMc || val[0].jczmc
|
||
: "";
|
||
dialogForm.value.xfqyId = val ? val[0].id || val[0].kfdId : "";
|
||
};
|
||
|
||
// 警务站
|
||
const changejwz = (val) => {
|
||
console.log(val);
|
||
dialogForm.value.jwzMc = val[0].jwzMc;
|
||
dialogForm.value.jwzLx = val[0].jwzLx;
|
||
dialogForm.value.jwzId = val[0].jwzId;
|
||
dialogForm.value.jwzDz = val[0].jwzDz;
|
||
dialogForm.value.xfqyId = val[0].jwzId;
|
||
dialogForm.value.xfqyMc = val[0].jwzMc;
|
||
};
|
||
|
||
// 删除车辆
|
||
const closeCl = (item) => {
|
||
dialogForm.value.clList = dialogForm.value.clList.filter((el) => {
|
||
return el.cid != item.cid;
|
||
});
|
||
};
|
||
|
||
// 处理负责人
|
||
const handleFzr = (val) => {
|
||
dialogForm.value.fzrXm = val.length > 0 ? val[0].xm : "";
|
||
dialogForm.value.fzrSfzh = val.length > 0 ? val[0].sfzh : "";
|
||
dialogForm.value.fzrLxdh = val.length > 0 ? val[0].lxdh : "";
|
||
};
|
||
|
||
// 选择警组
|
||
const changeJz = (val) => {
|
||
console.log(val);
|
||
val.forEach((item) => {
|
||
dialogForm.value.jzMc = item.jzMc;
|
||
dialogForm.value.jzId = item.id;
|
||
dialogForm.value.fzrXm = item.ddMjxm;
|
||
dialogForm.value.fzrSfzh = item.ddMjsfzh;
|
||
dialogForm.value.fzrLxdh = item.ddDh;
|
||
dialogForm.value.xfzzlx = item.xfzzlx;
|
||
dialogForm.value.xfwzlx = item.xfwzlx;
|
||
|
||
dialogForm.value.bcMc = item.bcMc;
|
||
dialogForm.value.bcKtsDict = item.bcKtsDict;
|
||
dialogForm.value.bcId = item.glQwbcId;
|
||
dialogForm.value.bcKssj = item.bcKssj;
|
||
dialogForm.value.bcJssj = item.bcJssj;
|
||
|
||
dialogForm.value.clList = item.zbclStr ? JSON.parse(item.zbclStr) : [];
|
||
dialogForm.value.zdList = item.zbzdsbStr ? JSON.parse(item.zbzdsbStr) : [];
|
||
|
||
let sblist = item.tcsbStr ? JSON.parse(item.tcsbStr) : [];
|
||
|
||
dialogForm.value.tcList = sblist.filter((v) => {
|
||
return v.sblx == "06";
|
||
});
|
||
const zbzbStr = item.zbzbStr ? JSON.parse(item.zbzbStr) : [];
|
||
dialogForm.value.qxList = zbzbStr.length>0? zbzbStr: props.dic.D_JCGL_JYQX_QXLX.map((item) =>{return {
|
||
...item,qxsl:0
|
||
}} );
|
||
dialogForm.value.zbmjStr = item.zbmjStr ? JSON.parse(item.zbmjStr) : [];
|
||
dialogForm.value.zbfjStr = item.zbfjStr ? JSON.parse(item.zbfjStr) : [];
|
||
dialogForm.value.clList.forEach((item) => {
|
||
item.tcryListStr = item.tcryList;
|
||
});
|
||
|
||
let xlfs = item.xfxlfs ? item.xfxlfs.split(",") : [];
|
||
baseInfo.xlfs.hasChoose = xlfs.map((it) => {
|
||
return props.dic.D_BZ_XLFS.find((v) => v.value == it).label;
|
||
});
|
||
});
|
||
};
|
||
|
||
// 切换按钮
|
||
const changeDataxl = (val) => {
|
||
baseInfo.xlfs.hasChoose = val;
|
||
};
|
||
|
||
//车辆选择
|
||
const changeCl = (val) => {
|
||
val.forEach((item) => {
|
||
item.tcryListStr = props.dic.D_BZ_RYXFBBZW;
|
||
});
|
||
dialogForm.value.clList = dialogForm.value.clList.concat(val);
|
||
dialogForm.value.clList = Array.from(
|
||
new Set(dialogForm.value.clList.map(JSON.stringify))
|
||
).map(JSON.parse);
|
||
};
|
||
// watch(()=>dialogForm.value.clList,(val,oldel)=>{
|
||
// console.log(val,oldel);
|
||
// let arrList=[]
|
||
// for (let i = 0; i < val.length; i++) {
|
||
// console.log(val[i].tcryListStr)
|
||
// }
|
||
// },{deep:true})
|
||
// 关联点位
|
||
const changeDw = (val) => {
|
||
let newList = JSON.parse(JSON.stringify(val));
|
||
let arr = [];
|
||
newList.forEach((v) => {
|
||
v.glbxd = v.glbxd ? JSON.parse(v.glbxd) : [];
|
||
arr = arr.concat(v.glbxd);
|
||
});
|
||
dialogForm.value.bxdList = arr;
|
||
};
|
||
|
||
// 处理数据
|
||
const handleRylist = (arr, text) => {
|
||
let list = arr?.map((it) => {
|
||
return {
|
||
ryId: it.ryid,
|
||
xfllId: it.id,
|
||
ryJzlx: it.lx,
|
||
ryMfjlb: it.fl,
|
||
rySfzh: it.sfzh,
|
||
ryXm: it.xm,
|
||
ryXfbbzw: handleDic(text)
|
||
};
|
||
});
|
||
return list;
|
||
};
|
||
|
||
// 处理字典
|
||
const handleDic = (val) => {
|
||
let obj = props.dic.D_BZ_RYXFBBZW.find((v) => {
|
||
return v.label == val;
|
||
});
|
||
return obj ? obj.dm : "";
|
||
};
|
||
|
||
// 提交
|
||
const saveForm = () => {
|
||
editRef.value.validate((valid) => {
|
||
if (!valid) return;
|
||
let params = { ...dialogForm.value };
|
||
params.bbSjBbrq = props.data.year;
|
||
let arr = [];
|
||
baseInfo.xlfs.hasChoose.forEach((it) => {
|
||
let obj = props.dic.D_BZ_XLFS.find((v) => v.label == it);
|
||
if (obj) arr.push(obj.value);
|
||
});
|
||
params.xfxlfs = arr.join(",");
|
||
let zbmj = handleRylist(dialogForm.value.zbmjStr, "当班民警");
|
||
let zbfj = handleRylist(dialogForm.value.zbfjStr, "同行辅警");
|
||
params.ryList = [];
|
||
params.ryList = params.ryList.concat(zbmj, zbfj);
|
||
// console.log(dialogForm.value.ryList, dialogForm.value.clList);
|
||
|
||
// if (!dialogForm.value.ryList && dialogForm.value.clList.length == 0) {
|
||
// proxy.$message.warning("请选择巡逻方式和人员");
|
||
// return;
|
||
// }
|
||
params.clList = params.clList.map((item) => {
|
||
item.tcryList = [];
|
||
item.tcryListStr = item.tcryListStr?.map((it) => {
|
||
it.list = it.list?.map((iv) => {
|
||
let obj = {
|
||
ryCzclId: item.cid || item.clId,
|
||
ryId: iv.ryid,
|
||
ryJzlx: iv.lx,
|
||
xfllId: iv.id,
|
||
ryMfjlb: iv.fl,
|
||
rySfzh: iv.sfzh,
|
||
ryXm: iv.xm,
|
||
ryXfbbzw: it.dm
|
||
};
|
||
item.tcryList.push(obj);
|
||
return {
|
||
xm: iv.xm,
|
||
sfzh: iv.sfzh,
|
||
fl: iv.fl,
|
||
id: iv.id,
|
||
ryid: iv.ryid
|
||
};
|
||
});
|
||
return {
|
||
label: it.label,
|
||
vlaue: it.dm,
|
||
list: it.list,
|
||
ryXfbbzw: it.dm,
|
||
dm: it.dm,
|
||
cid: it.cid
|
||
};
|
||
});
|
||
let val = {
|
||
clId: item.cid || item.clId,
|
||
clmc: item.clmc,
|
||
cph: item.cph,
|
||
cplx: item.cplx,
|
||
tcryList: item.tcryList,
|
||
tcryListStr: JSON.stringify(item.tcryListStr)
|
||
};
|
||
if (props.text == "列表") val.id = item.id;
|
||
return val;
|
||
});
|
||
|
||
if (params.bxdList) {
|
||
params.bxdList = params.bxdList.map((v) => {
|
||
return {
|
||
bxdLx: v.xqlx,
|
||
bxdMc: v.xqmc,
|
||
bxdid: v.id,
|
||
dkdz: "",
|
||
jd: v.zxdJd,
|
||
wd: v.zxdWd
|
||
};
|
||
});
|
||
}
|
||
if (params.bxxList) {
|
||
params.bxxList = params.bxxList.map((v) => {
|
||
return { bxxLx: v.xqlx, bxxMc: v.xqmc, bxxid: v.id };
|
||
});
|
||
}
|
||
|
||
loading.value = true;
|
||
let url =
|
||
props.text == "日历"
|
||
? "/mosty-qwzx/tbQwglXfbb/save"
|
||
: "/mosty-qwzx/tbQwglXfbb/update";
|
||
let message = props.text == "日历" ? "新增成功" : "修改成功";
|
||
servicePost(params, url)
|
||
.then((res) => {
|
||
loading.value = false;
|
||
proxy.$message.success(message);
|
||
emits("updateList");
|
||
})
|
||
.catch(() => {
|
||
loading.value = false;
|
||
});
|
||
});
|
||
};
|
||
|
||
// 切换类型清空数据
|
||
const changeType = () => {
|
||
dialogForm.value.xfqyMc = "";
|
||
dialogForm.value.xfqyId = "";
|
||
dialogForm.value.jwzMc = "";
|
||
dialogForm.value.jwzLx = "";
|
||
dialogForm.value.jwzId = "";
|
||
dialogForm.value.jwzDz = "";
|
||
dialogForm.value.bxdList = [];
|
||
dialogForm.value.bxxList = [];
|
||
dialogForm.value.hxgList = [];
|
||
};
|
||
|
||
// 回显数据
|
||
const showData = (val) => {
|
||
dialogForm.value = JSON.parse(JSON.stringify(val));
|
||
// 巡逻方式
|
||
let xlfs = val.xfxlfs ? val.xfxlfs.split(",") : [];
|
||
let arr = xlfs.map((it) => {
|
||
return props.dic.D_BZ_XLFS.find((v) => v.value == it).label;
|
||
});
|
||
baseInfo.xlfs.hasChoose = arr;
|
||
dialogForm.value.zbmjStr = []; //值班民警 01
|
||
dialogForm.value.zbfjStr = []; //值班辅警 02
|
||
if (dialogForm.value.ryList && dialogForm.value.ryList.length > 0) {
|
||
dialogForm.value.ryList.forEach((item) => {
|
||
let obj = {
|
||
id: item.xfllId,
|
||
ryid: item.ryId,
|
||
lx: item.ryJzlx,
|
||
fl: item.ryMfjlb,
|
||
sfzh: item.rySfzh,
|
||
xm: item.ryXm
|
||
};
|
||
if (item.ryMfjlb == "01") dialogForm.value.zbmjStr.push(obj); //值班民警
|
||
if (item.ryMfjlb == "02") dialogForm.value.zbfjStr.push(obj); //值班辅警
|
||
});
|
||
}
|
||
// c车辆
|
||
if (dialogForm.value.clList && dialogForm.value.clList.length > 0) {
|
||
dialogForm.value.clList.forEach((item) => {
|
||
item.tcryListStr = JSON.parse(item.tcryListStr);
|
||
});
|
||
}
|
||
// 必巡线
|
||
if (dialogForm.value.bxxList) {
|
||
dialogForm.value.bxxList = dialogForm.value.bxxList.map((v) => {
|
||
return { xqlx: v.bxxLx, xqmc: v.bxxMc, id: v.bxxid };
|
||
});
|
||
}
|
||
// 必巡点
|
||
if (dialogForm.value.bxdList) {
|
||
dialogForm.value.bxdList = dialogForm.value.bxdList.map((v) => {
|
||
return {
|
||
xqlx: v.bxdLx,
|
||
xqmc: v.bxdMc,
|
||
id: v.bxdid,
|
||
zxdJd: v.jd,
|
||
zxdWd: v.wd
|
||
};
|
||
});
|
||
}
|
||
};
|
||
watch(
|
||
() => props.data,
|
||
(val) => {
|
||
if (val && val.info) showData(val.info);
|
||
},
|
||
{ immediate: true }
|
||
);
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.bblxItem {
|
||
width: 100%;
|
||
line-height: 40px;
|
||
min-height: 40px;
|
||
display: flex;
|
||
.btItem {
|
||
width: 180px;
|
||
padding: 7px 0;
|
||
background: #e9e9e9;
|
||
color: #000;
|
||
margin-top: 1px;
|
||
text-align: center;
|
||
}
|
||
.info {
|
||
flex: 1;
|
||
background: #f2f2f2;
|
||
margin-top: 1px;
|
||
padding: 10px;
|
||
box-sizing: border-box;
|
||
.gapline {
|
||
height: 1px;
|
||
border-top: 1px dashed #e2e2e2;
|
||
margin: 4px 0;
|
||
}
|
||
.dl-car {
|
||
min-width: 200px;
|
||
display: inline-block;
|
||
border: solid 1px #66cbff;
|
||
margin: 20px 30px 0 0;
|
||
padding: 0;
|
||
border-radius: 5px;
|
||
position: relative;
|
||
dt {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
color: #0380c0;
|
||
padding: 0 10px 0 40px;
|
||
box-sizing: border-box;
|
||
font-weight: 600;
|
||
box-sizing: border-box;
|
||
border-bottom: solid 1px #66cbff;
|
||
background: #e3f5ff;
|
||
height: 30px;
|
||
border-radius: 5px 5px 0 0;
|
||
}
|
||
.peo {
|
||
border-bottom: solid 1px #01d608;
|
||
background: #dbf3cf;
|
||
color: #339d00;
|
||
}
|
||
}
|
||
.dl-car::before {
|
||
position: absolute;
|
||
content: "";
|
||
top: -18px;
|
||
left: -18px;
|
||
width: 52px;
|
||
height: 49px;
|
||
background: url("~@/assets/images/peo.png");
|
||
}
|
||
}
|
||
|
||
.num {
|
||
width: 50px;
|
||
height: 30px;
|
||
line-height: 30px;
|
||
text-align: center;
|
||
border: 1px solid #d2d2d2;
|
||
background-color: #e7e7e7;
|
||
border-radius: 4px;
|
||
margin-right: 10px;
|
||
}
|
||
.subBtn {
|
||
padding-left: 100px;
|
||
box-sizing: border-box;
|
||
}
|
||
}
|
||
|
||
::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;
|
||
}
|
||
::v-deep .el-input__inner {
|
||
border: 1px solid #d2d2d2;
|
||
background-color: #f9f9f9;
|
||
}
|
||
.deBtn {
|
||
padding: 0px 10px;
|
||
background: rgb(35, 176, 241);
|
||
border-radius: 18px;
|
||
color: #fff;
|
||
cursor: pointer;
|
||
}
|
||
.dwBox {
|
||
padding: 1px 4px;
|
||
box-sizing: border-box;
|
||
border-radius: 2px;
|
||
border: 1px solid #0072ff;
|
||
margin: 0 4px;
|
||
}
|
||
</style>
|