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