22 changed files with 3380 additions and 395 deletions
@ -0,0 +1,35 @@
|
||||
import request from "@/api/request"; |
||||
|
||||
/** |
||||
* 获取人员抽检表单 |
||||
* */ |
||||
export function selectListData(query){ |
||||
return request.get({ |
||||
url:'/sampling', |
||||
query |
||||
}) |
||||
} |
||||
|
||||
/** |
||||
* 生成抽检人员名单 |
||||
* */ |
||||
export function getSamplingPoliceData(body){ |
||||
return request.post({ |
||||
url:'/sampling/postSamplingPolice', |
||||
body |
||||
}) |
||||
} |
||||
|
||||
//提交抽检规则
|
||||
export function addOrUpData(body){ |
||||
return request.post({ |
||||
url:'/sampling', |
||||
body |
||||
}) |
||||
} |
||||
|
||||
export function delSampling(id){ |
||||
return request.del({ |
||||
url: `/sampling/${id}` |
||||
}) |
||||
} |
||||
@ -0,0 +1,71 @@
|
||||
import request from "@/api/request"; |
||||
|
||||
/** |
||||
* 查询列表数据 |
||||
* */ |
||||
export function getListFun(query){ |
||||
return request.get({ |
||||
url: '/task/management', |
||||
query |
||||
}); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* 录入任务 |
||||
* */ |
||||
export function addTaskManagement(body) { |
||||
return request.post({ |
||||
url: '/task/management/addTaskManagement', |
||||
body |
||||
}); |
||||
} |
||||
|
||||
/** |
||||
* 删除督察任务 |
||||
* */ |
||||
export function delTaskManagement(id){ |
||||
return request.del({ |
||||
url:`/task/management/${id}` |
||||
}) |
||||
} |
||||
|
||||
|
||||
/** |
||||
* 查询详情 |
||||
* */ |
||||
export function getTaskManagementDetail(id){ |
||||
return request.get({ |
||||
url:`/task/management/${id}` |
||||
}) |
||||
} |
||||
|
||||
/** |
||||
* 获取单位信息 |
||||
* */ |
||||
export function getDepartByIds(query){ |
||||
return request.get({ |
||||
url:'/depart/getDepartByIds', |
||||
query |
||||
}) |
||||
} |
||||
|
||||
/** |
||||
* 导入数据(禁酒督察人员) |
||||
* */ |
||||
export function importTemperancePolice(body){ |
||||
return request.post({ |
||||
url: '/task/management/import', |
||||
body |
||||
}); |
||||
} |
||||
|
||||
/** |
||||
* 导入数据(重点督察人员) |
||||
* */ |
||||
export function importSupRiskPersonal(body){ |
||||
return request.post({ |
||||
url:'/task/management/importSupRiskPersonal', |
||||
body |
||||
}) |
||||
} |
||||
@ -0,0 +1,116 @@
|
||||
<script setup> |
||||
import { BASE_PATH } from "@/api/request"; |
||||
import {replenishExcelGab,replenishLedaoExcelGab} from "@/api/data/petitionComplaint"; |
||||
import feedback from "@/utils/feedback"; |
||||
let fileList = ref([]) |
||||
let loading =ref(false) |
||||
const dialogTitle = ref("公安部信访集访导入") |
||||
|
||||
const {replenishType} = defineProps({ |
||||
replenishType:{ |
||||
type: String, |
||||
defalut: '1' |
||||
} |
||||
}) |
||||
const emit=defineEmits(['success','close']) |
||||
//监听导入类型 |
||||
watch(()=>replenishType,()=>{ |
||||
fileList.value=[] |
||||
if (replenishType == 1){ |
||||
dialogTitle.value='公安部信访集访导入' |
||||
}else{ |
||||
dialogTitle.value='公安部信访领导接访导入' |
||||
} |
||||
console.log('replenishType',replenishType) |
||||
},{deep:true,immediate:true}) |
||||
|
||||
/** |
||||
* 上传文件 |
||||
* */ |
||||
const handleNext = async ()=>{ |
||||
//body上传 |
||||
const formData = new FormData(); |
||||
formData.append("file", fileList.value[fileList.value.length - 1].raw); |
||||
loading.value = true; |
||||
try { |
||||
if (replenishType == 1){ |
||||
await replenishExcelGab(formData); |
||||
}else{ |
||||
await replenishLedaoExcelGab(formData); |
||||
} |
||||
feedback.msgSuccess("操作成功"); |
||||
emit("success") |
||||
} catch (e) { |
||||
loading.value = false; |
||||
throw e; |
||||
} |
||||
loading.value = false; |
||||
|
||||
} |
||||
</script> |
||||
|
||||
<template> |
||||
<!--公安部数据补充--> |
||||
<el-dialog :title="dialogTitle" width="80vw" ref="dialogRef" top="8vh"> |
||||
<div v-loading="loading"> |
||||
<el-upload |
||||
drag |
||||
:multiple="false" |
||||
:auto-upload="false" |
||||
:show-file-list="false" |
||||
v-model:file-list="fileList" |
||||
accept="application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" |
||||
class="mt-20" |
||||
> |
||||
<template v-if="fileList.length === 0"> |
||||
<el-icon class="el-icon--upload"> |
||||
<upload-filled/> |
||||
</el-icon> |
||||
<div class="el-upload__text"> |
||||
<p>点击或拖拽文件到此区域上传</p> |
||||
</div> |
||||
</template> |
||||
<template v-else> |
||||
<el-icon class="el-icon--upload" |
||||
><Select |
||||
/></el-icon> |
||||
<div class="el-upload__text"> |
||||
已选择文件:{{ |
||||
fileList[fileList.length - 1].name |
||||
}} |
||||
</div> |
||||
</template> |
||||
</el-upload> |
||||
<div class="mt-20"> |
||||
<span>文件模板</span> |
||||
|
||||
<a |
||||
v-if="replenishType==1" |
||||
class="link" |
||||
:href="`${BASE_PATH}/templates/公安部信访集访导入模板.xlsx`" |
||||
target="__blank" |
||||
>公安部信访集访导入模板.xlsx 下载</a |
||||
> |
||||
<a |
||||
v-else |
||||
class="link" |
||||
:href="`${BASE_PATH}/templates/公安部信访领导接访导入模板.xlsx`" |
||||
target="__blank" |
||||
>公安部信访领导接访模板.xlsx 下载</a |
||||
> |
||||
</div> |
||||
<footer class="flex end mt-20 v-center"> |
||||
<el-button type="primary" |
||||
size="large" |
||||
@click="handleNext" |
||||
:disabled="loading"> |
||||
确认 |
||||
</el-button> |
||||
</footer> |
||||
</div> |
||||
</el-dialog> |
||||
</template> |
||||
|
||||
<style scoped lang="scss"> |
||||
|
||||
</style> |
||||
@ -0,0 +1,115 @@
|
||||
<script setup> |
||||
import { BASE_PATH } from "@/api/request"; |
||||
import {replenishExcelGab,replenishLedaoExcelGab} from "@/api/data/petitionComplaint"; |
||||
import feedback from "@/utils/feedback"; |
||||
let fileList = ref([]) |
||||
let loading =ref(false) |
||||
const dialogTitle = ref("国家信访集访导入") |
||||
|
||||
const {replenishType} = defineProps({ |
||||
replenishType:{ |
||||
type: String, |
||||
defalut: 1 |
||||
} |
||||
}) |
||||
const emit=defineEmits(['success','close']) |
||||
//监听导入类型 |
||||
watch(()=>replenishType,()=>{ |
||||
fileList.value=[] |
||||
if (replenishType == 1){ |
||||
dialogTitle.value='国家信访集访导入' |
||||
}else{ |
||||
dialogTitle.value='国家信访领导接访导入' |
||||
} |
||||
}) |
||||
|
||||
/** |
||||
* 上传文件 |
||||
* */ |
||||
const handleNext = async ()=>{ |
||||
//body上传 |
||||
const formData = new FormData(); |
||||
formData.append("file", fileList.value[fileList.value.length - 1].raw); |
||||
loading.value = true; |
||||
try { |
||||
if (replenishType == 1){ |
||||
await replenishExcelGab(formData); |
||||
}else{ |
||||
await replenishLedaoExcelGab(formData); |
||||
} |
||||
|
||||
feedback.msgSuccess("操作成功"); |
||||
emit("success") |
||||
} catch (e) { |
||||
loading.value = false; |
||||
throw e; |
||||
} |
||||
loading.value = false; |
||||
|
||||
} |
||||
</script> |
||||
|
||||
<template> |
||||
<!--公安部数据补充--> |
||||
<el-dialog :title="dialogTitler" width="80vw" ref="dialogRef" top="8vh"> |
||||
<div v-loading="loading"> |
||||
<el-upload |
||||
drag |
||||
:multiple="false" |
||||
:auto-upload="false" |
||||
:show-file-list="false" |
||||
v-model:file-list="fileList" |
||||
accept="application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" |
||||
class="mt-20" |
||||
> |
||||
<template v-if="fileList.length == 0"> |
||||
<el-icon class="el-icon--upload"> |
||||
<upload-filled/> |
||||
</el-icon> |
||||
<div class="el-upload__text"> |
||||
<p>点击或拖拽文件到此区域上传</p> |
||||
</div> |
||||
</template> |
||||
<template v-else> |
||||
<el-icon class="el-icon--upload" |
||||
><Select |
||||
/></el-icon> |
||||
<div class="el-upload__text"> |
||||
已选择文件:{{ |
||||
fileList[fileList.length - 1].name |
||||
}} |
||||
</div> |
||||
</template> |
||||
</el-upload> |
||||
<div class="mt-20"> |
||||
<span>文件模板</span> |
||||
<a |
||||
v-if="replenishType==1" |
||||
class="link" |
||||
:href="`${BASE_PATH}/templates/国家信访集访导入模板.xlsx`" |
||||
target="__blank" |
||||
>国家信访集访导入模板.xlsx 下载</a |
||||
> |
||||
<a |
||||
v-else |
||||
class="link" |
||||
:href="`${BASE_PATH}/templates/国家信访领导接访导入模板.xlsx`" |
||||
target="__blank" |
||||
>国家信访领导接访导入模板.xlsx 下载</a |
||||
> |
||||
</div> |
||||
<footer class="flex end mt-20 v-center"> |
||||
<el-button type="primary" |
||||
size="large" |
||||
@click="handleNext" |
||||
:disabled="loading"> |
||||
确认 |
||||
</el-button> |
||||
</footer> |
||||
</div> |
||||
</el-dialog> |
||||
</template> |
||||
|
||||
<style scoped lang="scss"> |
||||
|
||||
</style> |
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,454 @@
|
||||
<template> |
||||
<div class="container"> |
||||
<header class="mb-20"> |
||||
<el-form :label-width="114"> |
||||
<el-row> |
||||
<el-col :span="6"> |
||||
<el-form-item label="督察单位"> |
||||
<depart-tree-select v-model="query.departId" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="任务名称"> |
||||
<el-input |
||||
placeholder="请输入任务名称" |
||||
v-model="query.nickName" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="督察类型"> |
||||
<el-select v-model="form.supervisionType" clearable> |
||||
<el-option |
||||
v-for="item in dict.supervisionType" |
||||
:key="item.id" |
||||
:label="item.dictLabel" |
||||
:value="item.dictValue" |
||||
/> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
</el-form> |
||||
<div class="flex between"> |
||||
<el-button type="primary" @click="handleShowAdd"> |
||||
<template #icon> |
||||
<icon name="el-icon-Plus" /> |
||||
</template> |
||||
发布任务</el-button |
||||
> |
||||
<div> |
||||
<el-button type="primary" @click="getList"> |
||||
<template #icon> |
||||
<icon name="el-icon-Search" /> |
||||
</template> |
||||
查询</el-button |
||||
> |
||||
<el-button @click="reset">重置</el-button> |
||||
</div> |
||||
</div> |
||||
</header> |
||||
<div class="table-container"> |
||||
<el-table :data="list"> |
||||
<el-table-column label="任务名称" prop="taskName" /> |
||||
<el-table-column |
||||
label="督察单位" |
||||
prop="supDepartName" |
||||
width="120" |
||||
/> |
||||
<el-table-column |
||||
label="参与人员" |
||||
prop="persons" |
||||
show-overflow-tooltip |
||||
/> |
||||
<el-table-column |
||||
label="任务类型" |
||||
prop="supervisionType" |
||||
width="100" |
||||
align="center" |
||||
/> |
||||
<el-table-column |
||||
label="任务内容" |
||||
prop="taskContent" |
||||
show-overflow-tooltip |
||||
/> |
||||
<el-table-column label="督察时间" prop="updateTime" width="280"> |
||||
<template #default="{ row }"> |
||||
<span>{{ row.beginTime }}</span> |
||||
<span>-</span> |
||||
<span>{{ row.endTime }}</span> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="任务状态"> |
||||
<template #default="{ row }"> |
||||
<span v-if="row.taskStatus === 'todo'">执行中</span> |
||||
<span v-if="row.taskStatus === 'done'">已完成</span> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="被督察单位数" prop="departNumber" align="center" /> |
||||
<el-table-column label="发现问题数" prop="problemNumber" align="center" /> |
||||
<el-table-column label="操作" width="200"> |
||||
<template #default="{ row }"> |
||||
<el-button |
||||
type="primary" |
||||
link |
||||
@click="handleShowDetail(row)" |
||||
>查看详情</el-button |
||||
> |
||||
<el-button |
||||
type="primary" |
||||
link |
||||
@click="handleProblemsShow(row)" |
||||
>督察详情</el-button |
||||
> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
</div> |
||||
<div class="flex end mt-8"> |
||||
<el-pagination |
||||
@size-change="getList" |
||||
@current-change="getList" |
||||
:page-sizes="[10, 20, 50]" |
||||
v-model:page-size="query.size" |
||||
v-model:current-page="query.current" |
||||
layout="total, sizes, prev, pager, next" |
||||
:total="total" |
||||
> |
||||
</el-pagination> |
||||
</div> |
||||
</div> |
||||
|
||||
<el-dialog |
||||
title="发布任务" |
||||
v-model="show" |
||||
width="1076px" |
||||
top="5vh" |
||||
style="margin-bottom: 0" |
||||
> |
||||
<el-scrollbar max-height="76vh"> |
||||
<el-form |
||||
:label-width="150" |
||||
ref="formRef" |
||||
:model="form" |
||||
style="min-height: 66vh" |
||||
> |
||||
<el-form-item |
||||
label="任务名称" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请输入任务名称', |
||||
trigger: ['blur'], |
||||
}" |
||||
prop="taskName" |
||||
> |
||||
<el-input |
||||
v-model="form.taskName" |
||||
placeholder="请输入任务名称" |
||||
/> |
||||
</el-form-item> |
||||
<el-form-item |
||||
label="督察单位" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择', |
||||
}" |
||||
prop="supDepartId" |
||||
> |
||||
<div style="width: 300px"> |
||||
<depart-tree-select v-model="form.supDepartId" /> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item |
||||
label="督察人员" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择', |
||||
}" |
||||
prop="persons" |
||||
> |
||||
<police-picker v-model="form.persons" /> |
||||
</el-form-item> |
||||
<el-form-item |
||||
label="督察类型" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择', |
||||
}" |
||||
prop="supervisionType" |
||||
> |
||||
<el-select |
||||
v-model="form.supervisionType" |
||||
clearable |
||||
style="width: 300px" |
||||
> |
||||
<el-option |
||||
v-for="item in dict.supervisionType" |
||||
:key="item.id" |
||||
:label="item.dictLabel" |
||||
:value="item.dictValue" |
||||
/> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item |
||||
label="督察时间" |
||||
prop="times" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择', |
||||
}" |
||||
> |
||||
<div style="width: 800px"> |
||||
<el-date-picker |
||||
v-model="form.times" |
||||
type="datetimerange" |
||||
range-separator="-" |
||||
start-placeholder="开始时间" |
||||
end-placeholder="结束时间" |
||||
/> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item |
||||
prop="taskContentHtml" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请输入任务内容' |
||||
}" |
||||
label-position="top" |
||||
> |
||||
<div style="width: 100%"> |
||||
<quill-editor |
||||
ref="quillRef" |
||||
v-model="form.taskContentHtml" |
||||
style=" |
||||
min-height: 200px; |
||||
max-height: 360px; |
||||
overflow: auto; |
||||
" |
||||
/> |
||||
</div> |
||||
</el-form-item> |
||||
</el-form> |
||||
</el-scrollbar> |
||||
<footer class="flex end mt-20"> |
||||
<el-button type="primary" @click="submit" size="large" |
||||
>发布</el-button> |
||||
</footer> |
||||
</el-dialog> |
||||
|
||||
<el-dialog title="任务详情" v-model="detailShow" width="40vw"> |
||||
<div class="row mb-40"> |
||||
<div class="col col-24"> |
||||
<label>任务名称</label> |
||||
<span>{{ activeRow.taskName }}</span> |
||||
</div> |
||||
<div class="col col-24"> |
||||
<label>督察单位</label> |
||||
<span>{{ activeRow.supDepartName }}</span> |
||||
</div> |
||||
<div class="col col-24"> |
||||
<label>参与人员</label> |
||||
<span>{{ activeRow.persons }}</span> |
||||
</div> |
||||
<div class="col col-24"> |
||||
<label>任务类型</label> |
||||
<span>{{ activeRow.supervisionType }}</span> |
||||
</div> |
||||
<div class="col col-24"> |
||||
<label>督察时间</label> |
||||
<span |
||||
><span>{{ activeRow.beginTime }}</span> |
||||
<span>-</span> |
||||
<span>{{ activeRow.endTime }}</span></span |
||||
> |
||||
</div> |
||||
<div class="col col-24"> |
||||
<label>任务内容</label> |
||||
<span>{{ activeRow.taskContent }}</span> |
||||
</div> |
||||
</div> |
||||
<footer class="flex end mt-20"> |
||||
<el-button size="large" @click="detailShow = false">关闭</el-button> |
||||
</footer> |
||||
</el-dialog> |
||||
|
||||
<el-dialog |
||||
title="问题清单" |
||||
v-model="problemsShow" |
||||
width="60vw" |
||||
style="margin-bottom: 0" |
||||
> |
||||
<header class="mb-20"> |
||||
<el-form :label-width="94"> |
||||
<el-row> |
||||
<el-col :span="6"> |
||||
<el-form-item label="具体情况"> |
||||
<el-input |
||||
v-model="problemQuery.detail" |
||||
clearable |
||||
placeholder="请输入具体情况" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<div class="flex end"> |
||||
<el-button type="primary" @click="getProblems"> |
||||
<template #icon> |
||||
<icon name="el-icon-Search" /> |
||||
</template> |
||||
查询</el-button |
||||
> |
||||
<el-button @click="problemReset">重置</el-button> |
||||
</div> |
||||
</el-form> |
||||
</header> |
||||
<div style="min-height: 400px"> |
||||
<div class="table-container"> |
||||
<el-table :data="problems" :max-height="640" min-height="300"> |
||||
<el-table-column |
||||
label="是否存在督察问题" |
||||
prop="hasProblem" |
||||
width="120" |
||||
align="center" |
||||
> |
||||
<template #default="{ row }"> |
||||
<span v-if="row.hasProblem">是</span> |
||||
<span v-else>否</span> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column |
||||
label="单位" |
||||
prop="departName" |
||||
width="140" |
||||
show-overflow-tooltip |
||||
/> |
||||
<el-table-column |
||||
label="问题类型" |
||||
prop="problemType" |
||||
width="140" |
||||
show-overflow-tooltip |
||||
/> |
||||
<el-table-column label="具体情况" prop="detail" /> |
||||
<el-table-column |
||||
label="创建时间" |
||||
prop="createTime" |
||||
width="160" |
||||
/> |
||||
<el-table-column label="操作" width="100"> |
||||
<template #default="{ row }"> |
||||
<el-button |
||||
type="primary" |
||||
link |
||||
@click="handleShowPeople(row)" |
||||
>详情</el-button |
||||
> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
</div> |
||||
<div class="flex end mt-8"> |
||||
<el-pagination |
||||
@size-change="getProblems" |
||||
@current-change="getProblems" |
||||
:page-sizes="[10, 20, 50]" |
||||
v-model:page-size="problemQuery.size" |
||||
v-model:current-page="problemQuery.current" |
||||
layout="total, sizes, prev, pager, next" |
||||
:total="problemTotal" |
||||
> |
||||
</el-pagination> |
||||
</div> |
||||
</div> |
||||
</el-dialog> |
||||
</template> |
||||
<script setup> |
||||
import { |
||||
listInspection, |
||||
addInspection, |
||||
listInspectionProblems, |
||||
} from "@/api/mobileSupervision/inspection"; |
||||
import feedback from "@/utils/feedback"; |
||||
import useCatchStore from "@/stores/modules/catch"; |
||||
|
||||
const catchStore = useCatchStore(); |
||||
const dict = catchStore.getDicts(["supervisionType"]); |
||||
|
||||
const list = ref([]); |
||||
const query = ref({ |
||||
current: 1, |
||||
size: 10, |
||||
}); |
||||
const total = ref(0); |
||||
function getList() { |
||||
listInspection(query.value).then((data) => { |
||||
list.value = data.records; |
||||
total.value = data.total; |
||||
}); |
||||
} |
||||
|
||||
function reset() { |
||||
query.value = { |
||||
current: 1, |
||||
size: 10, |
||||
}; |
||||
getList(); |
||||
} |
||||
|
||||
getList(); |
||||
|
||||
const show = ref(false); |
||||
|
||||
const form = ref({}); |
||||
const formRef = ref(null); |
||||
|
||||
const quillRef = ref() |
||||
async function submit() { |
||||
await formRef.value.validate(); |
||||
form.value.taskContent = quillRef.value.getText() |
||||
await addInspection(form.value); |
||||
feedback.msgSuccess("发布成功"); |
||||
show.value = false; |
||||
getList(); |
||||
form.value = {}; |
||||
} |
||||
|
||||
function handleShowAdd() { |
||||
show.value = true; |
||||
} |
||||
|
||||
const detailShow = ref(false); |
||||
const activeRow = ref({}); |
||||
|
||||
function handleShowDetail(row) { |
||||
activeRow.value = row; |
||||
detailShow.value = true; |
||||
} |
||||
|
||||
const problemsShow = ref(false); |
||||
const problems = ref([]); |
||||
const problemQuery = ref({}); |
||||
const problemTotal = ref(0); |
||||
|
||||
function handleProblemsShow(row) { |
||||
activeRow.value = row; |
||||
problemsShow.value = true; |
||||
getProblems(); |
||||
} |
||||
function getProblems() { |
||||
listInspectionProblems(activeRow.value.id).then((data) => { |
||||
problems.value = data.records; |
||||
}); |
||||
} |
||||
|
||||
function problemReset() { |
||||
problemQuery.value = {}; |
||||
} |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
h5 { |
||||
margin-bottom: 10px; |
||||
} |
||||
.pepole-container > * { |
||||
margin-bottom: 8px; |
||||
} |
||||
</style> |
||||
@ -0,0 +1,783 @@
|
||||
<script setup> |
||||
import useCatchStore from "@/stores/modules/catch"; |
||||
import {selectListData,getSamplingPoliceData,addOrUpData} from '@/api/mobileSupervision/Sampling' |
||||
import feedback from "@/utils/feedback"; |
||||
import {timeFormat,getDictLable} from "@/utils/util"; |
||||
|
||||
import {getDepartProfile} from "@/api/sensitivePerception/profileDepart"; |
||||
import {BASE_PATH} from "@/api/request"; |
||||
const loading = ref(false) |
||||
const policeLoading =ref(false) |
||||
const total =ref(10) |
||||
const catchStore = useCatchStore(); |
||||
const dict = catchStore.getDicts(["inspectorType","personType"]); |
||||
let genderDict = ref([ |
||||
{ |
||||
dictValue:'1', |
||||
dictLabel:'男' |
||||
}, |
||||
{ |
||||
dictValue:'2', |
||||
dictLabel:'女' |
||||
} |
||||
]) |
||||
const shortcuts = [ |
||||
{ |
||||
text: '近一周', |
||||
value: () => { |
||||
const end = new Date() |
||||
const start = new Date() |
||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7) |
||||
return [start, end] |
||||
}, |
||||
}, |
||||
{ |
||||
text: '近一个月', |
||||
value: () => { |
||||
const end = new Date() |
||||
const start = new Date() |
||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30) |
||||
return [start, end] |
||||
}, |
||||
}, |
||||
{ |
||||
text: '近三个月', |
||||
value: () => { |
||||
const end = new Date() |
||||
const start = new Date() |
||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90) |
||||
return [start, end] |
||||
}, |
||||
}, |
||||
] |
||||
|
||||
let list =ref([]) |
||||
let query = ref({ |
||||
current: 1, |
||||
size: 10, |
||||
departBranch:false, |
||||
confinementTime: [] |
||||
}) |
||||
//编辑弹窗显示状态码 |
||||
let editShow = ref(false) |
||||
let detailShow =ref(false) |
||||
|
||||
let editData = ref({ |
||||
samplingObjectList:null |
||||
}) |
||||
const reset =()=>{ |
||||
query.value={ |
||||
current: 1, |
||||
size: 10, |
||||
departBranch:false, |
||||
confinementTime: [] |
||||
} |
||||
getList() |
||||
} |
||||
|
||||
//查询数据 |
||||
const getList = ()=>{ |
||||
loading.value = true |
||||
selectListData(query.value).then((res) => { |
||||
list.value = res.records; |
||||
total.value = res.total; |
||||
loading.value = false |
||||
}) |
||||
} |
||||
|
||||
//打开创建人员抽检弹窗 |
||||
const editFun = ()=>{ |
||||
editShow.value =!editShow.value |
||||
} |
||||
//打开详情窗口 |
||||
const getDataDetail =(row)=>{ |
||||
editData.value=row |
||||
editData.value.samplingObjectList.forEach(async (x) => { |
||||
x.departName = await getDepartShortNameFun(x.deptId) |
||||
}) |
||||
detailShow.value=true |
||||
} |
||||
/** |
||||
* 添加抽检对象 |
||||
* */ |
||||
const addSamplingObjectFun = ()=>{ |
||||
if(editData.value.samplingObjectList){ |
||||
editData.value.samplingObjectList.push( |
||||
{ |
||||
deptId:null, |
||||
value:null |
||||
} |
||||
) |
||||
}else{ |
||||
editData.value.samplingObjectList=[ |
||||
{ |
||||
deptId:null, |
||||
value:null |
||||
} |
||||
] |
||||
} |
||||
|
||||
} |
||||
/** |
||||
* 删除抽检对象 |
||||
* @param key 抽检对象下标 |
||||
* */ |
||||
const delSamplingObjectFun =(key) =>{ |
||||
if(editData.value != null){ |
||||
editData.value.samplingObjectList.splice(key,1); |
||||
} |
||||
} |
||||
/** |
||||
* 重新生成抽检对象名单 |
||||
* */ |
||||
const getSamplingPolices =async ()=>{ |
||||
policeLoading.value=true |
||||
if(computedData(editData.value) < 0 || computedData(editData.value) > 0){ |
||||
feedback.msgWarning("【被抽检对象抽检总人数】 和 【抽检人数】不吻合") |
||||
}else{ |
||||
const res = await getSamplingPoliceData(editData.value) |
||||
editData.value.samplingPolices = res; |
||||
} |
||||
|
||||
policeLoading.value=false |
||||
|
||||
} |
||||
|
||||
/** |
||||
* 删除标签 |
||||
* @param index 下标 |
||||
* */ |
||||
const handleTagClose = (index) => { |
||||
editData.value.samplingPolices.splice(index,1) |
||||
} |
||||
|
||||
const computedData = (data)=>{ |
||||
console.log(data.samplingObjectList) |
||||
let one = data.samplingObjectList.reduce((accumulator, currentValue) => { |
||||
return accumulator + ( currentValue.value?currentValue.value:0); |
||||
},0) |
||||
return (data.samplingNum?data.samplingNum:0) - one; |
||||
} |
||||
|
||||
//获取单位为简称 |
||||
const getDepartShortNameFun = async(val)=>{ |
||||
const res = await getDepartProfile(val) |
||||
if(res){ |
||||
console.log('res',res.departInfo?.shortName) |
||||
return res.departInfo?.shortName; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 提交表单 |
||||
* */ |
||||
const handleSumbit =async ()=>{ |
||||
if(computedData(editData.value) < 0 || computedData(editData.value) > 0){ |
||||
feedback.msgWarning("【被抽检对象抽检总人数】 和 【抽检人数】不吻合") |
||||
}else{ |
||||
const res = await addOrUpData(editData.value) |
||||
editShow.value=false |
||||
feedback.msgSuccess("操作成功"); |
||||
getList() |
||||
} |
||||
|
||||
} |
||||
/** |
||||
* 数据导出 |
||||
* */ |
||||
const handleExport = async ()=>{ |
||||
let data = Object.assign({},editData.value) |
||||
delete data.samplingPolices |
||||
delete data.startTime |
||||
delete data.endTime |
||||
if(!data.samplingTime){ |
||||
delete data.samplingTime |
||||
} |
||||
if(data.samplingObjectList){ |
||||
data.orgStr = |
||||
data.samplingObjectList.map(s=>s.deptId).join(",") |
||||
delete data.samplingObjectList |
||||
}else{ |
||||
|
||||
} |
||||
window.open(`${BASE_PATH}/sampling/export/samplingPoling?` + new URLSearchParams(data).toString()) |
||||
} |
||||
|
||||
onMounted(()=>{ |
||||
getList() |
||||
}) |
||||
|
||||
</script> |
||||
|
||||
<template> |
||||
<div class="container"> |
||||
<header> |
||||
<el-form> |
||||
<el-row :gutter="20"> |
||||
<el-col :span="6"> |
||||
<el-form-item label="抽检名称"> |
||||
<el-input v-model="query.samplingName" placeholder="请输入抽检名称"/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="督察类型"> |
||||
<el-select v-model="query.inspectorType" clearable> |
||||
<el-option v-for="(item,key) in dict.inspectorType" |
||||
:value="item.dictValue" |
||||
:label="item.dictLabel" |
||||
:key="key" |
||||
></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="年龄范围"> |
||||
<el-row :gutter="20"> |
||||
<el-col :span="12"> |
||||
<el-input-number placeholder="最小年龄" v-model="query.ageMin" :controls="false"></el-input-number> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-input-number placeholder="最大年龄" v-model="query.ageMax" :controls="false"></el-input-number> |
||||
</el-col> |
||||
</el-row> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="性别"> |
||||
<el-select v-model="query.gender" clearable> |
||||
<el-option v-for="(item,key) in genderDict" |
||||
:value="item.dictValue" |
||||
:label="item.dictLabel" |
||||
:key="key"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<el-row :gutter="20"> |
||||
<el-col :span="6"> |
||||
<el-form-item label="人员属性"> |
||||
<el-select v-model="query.personnelType" clearable > |
||||
<el-option v-for="(item,key) in dict.personType" |
||||
:value="item.dictValue" |
||||
:label="item.dictLabel" |
||||
:key="key" |
||||
></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="是否操作违反六项规定情节"> |
||||
<el-select v-model="query.drinkAlcohol"> |
||||
<el-option value="1" label="是"></el-option> |
||||
<el-option value="2" label="否"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="领导人数"> |
||||
<el-input-number v-model="query.leadersNumber" style="width: 100%" placeholder="请输入领导人数" :controls="false" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="民警比率"> |
||||
<el-input-number v-model="query.policeRatio" style="width: 100%" placeholder="请输入民警比率" :controls="false" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<el-row :gutter="20"> |
||||
<el-col :span="6"> |
||||
<el-form-item label="辅警比率"> |
||||
<el-input-number v-model="query.assistRatio" style="width: 100%" placeholder="请输入辅警比率" :controls="false" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="时间范围"> |
||||
<el-date-picker |
||||
value-format="YYYY-MM-DD" |
||||
type="daterange" |
||||
unlink-panels |
||||
format="YYYY-MM-DD" |
||||
range-separator="~" |
||||
start-placeholder="开始时间" |
||||
end-placeholder="结束时间" |
||||
:shortcuts="shortcuts" |
||||
v-model="query.samplingTime" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="被抽检次数"> |
||||
<el-input-number style="width: 100%;" v-model="query.samplingNumber" :controls="false" placeholder="请输入被抽检次数"></el-input-number> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="是否值班人员"> |
||||
<el-select v-model="query.beDuty"> |
||||
<el-option value="1" label="是"></el-option> |
||||
<el-option value="2" label="否"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
</el-form> |
||||
<div class="flex between mt-20 mb-26"> |
||||
<div> |
||||
<el-button type="primary" @click="editFun">创建人员抽检</el-button> |
||||
</div> |
||||
<div> |
||||
<el-button type="primary" @click="getList"> |
||||
<template #icon |
||||
> |
||||
<icon name="el-icon-Search" |
||||
/> |
||||
</template> |
||||
查询 |
||||
</el-button |
||||
> |
||||
<el-button @click="reset">重置</el-button> |
||||
</div> |
||||
</div> |
||||
</header> |
||||
|
||||
<main> |
||||
<div class="table-container" v-loading="loading" > |
||||
<el-table |
||||
:data="list" |
||||
ref="tableRef" |
||||
style="width: 100%" |
||||
> |
||||
<el-table-column prop="samplingName" label="抽检名称" width="120"></el-table-column> |
||||
<el-table-column prop="inspectorType" label="督察类型" width="120"></el-table-column> |
||||
<el-table-column prop="samplingInspection" show-overflow-tooltip label="抽检规则" width="300"></el-table-column> |
||||
<el-table-column prop="samplingNum" label="抽检人数" width="100"></el-table-column> |
||||
<el-table-column prop="crtName" label="创建人" width="100"></el-table-column> |
||||
<el-table-column prop="crtTime" label="创建时间" width="160"> |
||||
<template #default="{row}"> |
||||
{{ timeFormat(row.crtTime) }} |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column prop="state" label="状态" width="120"></el-table-column> |
||||
<el-table-column label="操作" fixed="right" min-width="180"> |
||||
<template #default="{ row }"> |
||||
<div class="flex v-center"> |
||||
<el-button type="primary" link @click="getDataDetail(row)">查看详情</el-button> |
||||
</div> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
</div> |
||||
<div class="flex end mt-8"> |
||||
<el-pagination |
||||
@size-change="getList" |
||||
@current-change="getList" |
||||
:page-sizes="[10, 20, 50]" |
||||
v-model:page-size="query.size" |
||||
v-model:current-page="query.current" |
||||
layout="total, sizes, prev, pager, next" |
||||
:total="total" |
||||
/> |
||||
</div> |
||||
</main> |
||||
|
||||
<el-dialog v-model="editShow" title="创建人员抽检" width="900px"> |
||||
<el-form ref="editForm"> |
||||
<el-row :gutter="20"> |
||||
<el-col :span="24"> |
||||
<el-form-item label="抽检名称"> |
||||
<el-input v-model="editData.samplingName" style="width: 100%"></el-input> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<el-row> |
||||
<el-col :span="24"> |
||||
<el-form-item label="督察类型"> |
||||
<el-select v-model="editData.inspectorType"> |
||||
<el-option v-for="(item,key) in dict.inspectorType" |
||||
:value="item.dictValue" |
||||
:label="item.dictLabel" |
||||
:key="key" |
||||
></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<hr style="color: #abaaaa;opacity: 0.2"/> |
||||
<div> |
||||
<!-- 基础信息--> |
||||
<div class="flex v-center" style="height:20px;"> |
||||
<h4>抽检规则</h4> |
||||
</div> |
||||
<div class="flex v-center" style="height:30px;"> |
||||
<h5>基础信息</h5> |
||||
</div> |
||||
<el-row :gutter="20"> |
||||
<el-col :span="12"> |
||||
<el-form-item label="年龄范围"> |
||||
<el-row :gutter="20"> |
||||
<el-col :span="11"> |
||||
<el-input-number v-model="editData.ageMin" controls-position="right" placeholder="开始年龄"></el-input-number> |
||||
</el-col> |
||||
<el-col :span="2">至</el-col> |
||||
<el-col :span="11"> |
||||
<el-input-number v-model="editData.ageMax" controls-position="right" placeholder="结束年龄"></el-input-number> |
||||
</el-col> |
||||
</el-row> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="性别"> |
||||
<el-radio-group v-model="editData.gender"> |
||||
<el-radio value="1" label="男"></el-radio> |
||||
<el-radio value="2" label="女"></el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<el-row :gutter="20"> |
||||
<el-col :span="12"> |
||||
<el-form-item label="人员属性"> |
||||
<el-checkbox-group v-model="editData.personnelTypeArray"> |
||||
<el-checkbox v-for="(item,key) in dict.personType" |
||||
:value="item.dictValue" |
||||
:label="item.dictLabel" |
||||
:key="key"></el-checkbox> |
||||
</el-checkbox-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="是否存在违反六项规定情节"> |
||||
<el-radio-group v-model="editData.drinkAlcohol"> |
||||
<el-radio value="1" label="是"></el-radio> |
||||
<el-radio value="2" label="否"></el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<hr style="color: #abaaaa;opacity: 0.2"/> |
||||
<!-- 人员比率--> |
||||
<div class="flex v-center" style="height:30px;"> |
||||
<h5>人员比率</h5> |
||||
</div> |
||||
<el-row :gutter="20"> |
||||
<el-col :span="12"> |
||||
<el-form-item label="抽检人数"> |
||||
<el-input-number v-model="editData.samplingNum" style="width: 70%" placeholder="请输入抽检人数" :controls-position="'right'"></el-input-number>人 |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="领导人数"> |
||||
<el-input-number v-model="editData.leadersNumber" style="width: 70%" placeholder="请输入领导人数" :controls-position="'right'"></el-input-number>人 |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<el-row :gutter="20"> |
||||
<el-col :span="12"> |
||||
<el-form-item label="民警比率"> |
||||
<el-input-number v-model="editData.policeRatio" style="width: 70%" placeholder="请输入民警比率" :controls-position="'right'"></el-input-number>% |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="辅警比率"> |
||||
<el-input-number v-model="editData.assistRatio" style="width: 70%" placeholder="请输入辅警比率" :controls-position="'right'"></el-input-number>% |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<!-- 抽检规则--> |
||||
<div class="flex v-center" style="height:30px;"> |
||||
<h5>抽检规则</h5> |
||||
</div> |
||||
<el-row :gutter="20"> |
||||
<el-col :span="12"> |
||||
<el-form-item label="时间范围"> |
||||
<el-date-picker |
||||
value-format="YYYY-MM-DD" |
||||
type="daterange" |
||||
unlink-panels |
||||
format="YYYY-MM-DD" |
||||
range-separator="~" |
||||
start-placeholder="开始时间" |
||||
end-placeholder="结束时间" |
||||
:shortcuts="shortcuts" |
||||
v-model="editData.samplingTime" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="被抽检次数"> |
||||
<el-input-number v-model="editData.samplingNumber" style="width:70%" :controls-position="'right'"></el-input-number>次 |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<el-row :gutter="20"> |
||||
<el-col :span="12"> |
||||
<el-form-item label="距最后一次检测时间"> |
||||
<el-input-number v-model="editData.distanceDay" style="width: 70%;" :controls-position="'right'"></el-input-number>天 |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="是否值班人员"> |
||||
<el-radio-group v-model="editData.beDuty"> |
||||
<el-radio value="1" label="是"></el-radio> |
||||
<el-radio value="2" label="否"></el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<hr style="color: #abaaaa;opacity: 0.2"/> |
||||
<!-- 被抽检对象--> |
||||
<div class="flex between" style="height:30px; align-items: center"> |
||||
<div> |
||||
<h5>被抽检对象</h5> |
||||
</div> |
||||
<div> |
||||
<el-button @click="addSamplingObjectFun">添加对象</el-button> |
||||
</div> |
||||
</div> |
||||
<el-card shadow="never" style="background-color: #F9FAFF"> |
||||
<el-row :gutter="20" style="margin-bottom: 10px" v-for="(item,key) in editData.samplingObjectList" :key="key"> |
||||
<el-col :span="14"> |
||||
<depart-tree-select |
||||
:size="'large'" |
||||
placeholder="请选择案件管辖单位" |
||||
v-model="item.deptId" |
||||
/> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<div class="flex " style="align-items: center"> |
||||
<div style="padding-right: 10px">人数</div> |
||||
<div> |
||||
<el-input-number v-model="item.value" size="large" :controls="false" placeholder="请输入人数" /> |
||||
</div> |
||||
</div> |
||||
</el-col> |
||||
<el-col :span="4"> |
||||
<el-button |
||||
type="danger" |
||||
plain |
||||
size="large" |
||||
style="width: 80%" |
||||
@click="delSamplingObjectFun(key)" |
||||
>删除 |
||||
</el-button> |
||||
</el-col> |
||||
</el-row> |
||||
</el-card> |
||||
<!-- 抽检对象名单--> |
||||
<hr style="color: #abaaaa;opacity: 0.2"/> |
||||
<div class="flex between" style="height:30px; align-items: center"> |
||||
<div> |
||||
<h5>抽检对象名单<span></span></h5> |
||||
</div> |
||||
<div> |
||||
<el-button @click="getSamplingPolices">重新生成抽检对象</el-button> |
||||
</div> |
||||
</div> |
||||
<el-card shadow="never" style="background-color: #F9FAFF;min-height: 50px" v-loading="policeLoading"> |
||||
<div class="flex flex-wrap" style="width: 100%"> |
||||
<el-tag |
||||
closable |
||||
:disable-transitions="false" |
||||
style="padding: 5px 10px;margin-right: 10px;margin-bottom: 5px" |
||||
v-for="(polices,index) in editData.samplingPolices" |
||||
:key="polices.empNo" |
||||
@close="handleTagClose(index)" |
||||
> |
||||
<span>{{polices.name}}</span> {{polices.empNo}} |
||||
</el-tag> |
||||
</div> |
||||
<div style="display: flex;justify-content: flex-end"> |
||||
<el-button type="primary" @click="handleExport">导出Excel表</el-button> |
||||
</div> |
||||
</el-card> |
||||
</div> |
||||
</el-form> |
||||
<footer class="flex end" style="margin-top: 10px"> |
||||
<el-button @click="editShow = false" size="large">取消</el-button> |
||||
<el-button type="primary" @click="handleSumbit" size="large" |
||||
>确定 |
||||
</el-button |
||||
> |
||||
</footer> |
||||
</el-dialog> |
||||
|
||||
|
||||
<el-dialog v-model="detailShow" title="人员抽检详情" width="900px"> |
||||
<el-form ref="editForm"> |
||||
<el-row :gutter="20"> |
||||
<el-col :span="24"> |
||||
<el-form-item label="抽检名称"> |
||||
{{editData.samplingName}} |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<el-row> |
||||
<el-col :span="24"> |
||||
<el-form-item label="督察类型"> |
||||
{{ getDictLable( |
||||
dict.inspectorType, |
||||
editData.inspectorType |
||||
) }} |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<hr style="color: #abaaaa;opacity: 0.2"/> |
||||
<div> |
||||
<!-- 基础信息--> |
||||
<div class="flex v-center" style="height:20px;"> |
||||
<h4>抽检规则</h4> |
||||
</div> |
||||
<div class="flex v-center" style="height:30px;"> |
||||
<h5>基础信息</h5> |
||||
</div> |
||||
<el-row :gutter="20"> |
||||
<el-col :span="12"> |
||||
<el-form-item label="年龄范围"> |
||||
<span v-if="editData.ageMin"> {{editData.ageMin}} 至 {{editData.ageMax}}</span> |
||||
|
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="性别"> |
||||
{{editData.gender === '1'?'男':'女'}} |
||||
|
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<el-row :gutter="20"> |
||||
<el-col :span="12"> |
||||
<el-form-item label="人员属性"> |
||||
<span v-for="(type,key) in editData.personnelTypeArray" :key="key" style="margin-left: 10px"> |
||||
|
||||
{{ getDictLable( |
||||
|
||||
dict.personType, |
||||
type |
||||
) }} |
||||
</span> |
||||
|
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="是否存在违反六项规定情节"> |
||||
{{editData.drinkAlcohol === '1'?'是':'否'}} |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<hr style="color: #abaaaa;opacity: 0.2"/> |
||||
<!-- 人员比率--> |
||||
<div class="flex v-center" style="height:30px;"> |
||||
<h5>人员比率</h5> |
||||
</div> |
||||
<el-row :gutter="20"> |
||||
<el-col :span="12"> |
||||
<el-form-item label="抽检人数"> |
||||
{{editData.samplingNum}} 人 |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="领导人数"> |
||||
{{editData.leadersNumber}}人 |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<el-row :gutter="20"> |
||||
<el-col :span="12"> |
||||
<el-form-item label="民警比率"> |
||||
{{editData.policeRatio}}% |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="辅警比率"> |
||||
{{editData.assistRatio}}% |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<!-- 抽检规则--> |
||||
<div class="flex v-center" style="height:30px;"> |
||||
<h5>抽检规则</h5> |
||||
</div> |
||||
<el-row :gutter="20"> |
||||
<el-col :span="12"> |
||||
<el-form-item label="时间范围"> |
||||
<span v-if="editData.samplingTime">{{ `${timeFormat(editData.samplingTime[0]) } 至 ${timeFormat(editData.samplingTime[1]) }` }}</span> |
||||
|
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="被抽检次数"> |
||||
{{editData.samplingNumber}}次 |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<el-row :gutter="20"> |
||||
<el-col :span="12"> |
||||
<el-form-item label="距最后一次检测时间"> |
||||
{{editData.distanceDay}}天 |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="是否值班人员"> |
||||
{{editData.beDuty === '1'?'是':'否'}} |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<hr style="color: #abaaaa;opacity: 0.2"/> |
||||
<!-- 被抽检对象--> |
||||
<div class="flex between" style="height:30px; align-items: center"> |
||||
<div> |
||||
<h5>被抽检对象</h5> |
||||
</div> |
||||
</div> |
||||
<el-card shadow="never" style="background-color: #F9FAFF"> |
||||
<el-row :gutter="20" style="margin-bottom: 10px;align-items: center" v-for="(item,key) in editData.samplingObjectList" :key="key"> |
||||
<el-col :span="14"> |
||||
<el-form-item label="抽检单位"> |
||||
{{item.departName}} |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6" > |
||||
<el-form-item label="人数"> |
||||
{{item.value}} |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="4"> |
||||
|
||||
</el-col> |
||||
</el-row> |
||||
</el-card> |
||||
<!-- 抽检对象名单--> |
||||
<hr style="color: #abaaaa;opacity: 0.2"/> |
||||
<div class="flex between" style="height:30px; align-items: center"> |
||||
<div> |
||||
<h5>抽检对象名单<span></span></h5> |
||||
</div> |
||||
<div> |
||||
<!-- <el-button @click="getSamplingPolices">重新生成抽检对象</el-button>--> |
||||
</div> |
||||
</div> |
||||
<el-card shadow="never" style="background-color: #F9FAFF;min-height: 50px" v-loading="policeLoading"> |
||||
<div class="flex flex-wrap" style="width: 100%"> |
||||
<el-tag |
||||
:disable-transitions="false" |
||||
style="padding: 5px 10px;margin-right: 10px;margin-bottom: 5px" |
||||
v-for="(polices,index) in editData.samplingPolices" |
||||
:key="polices.empNo" |
||||
> |
||||
<span>{{polices.name}}</span> {{polices.empNo}} |
||||
</el-tag> |
||||
</div> |
||||
<div style="display: flex;justify-content: flex-end"> |
||||
<el-button type="primary" @click="handleExport">导出Excel表</el-button> |
||||
</div> |
||||
</el-card> |
||||
</div> |
||||
</el-form> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
|
||||
<style scoped lang="scss"> |
||||
.el-popper{ |
||||
max-width: 100% !important; |
||||
} |
||||
</style> |
||||
Loading…
Reference in new issue