4 changed files with 22 additions and 483 deletions
@ -1,454 +0,0 @@ |
|||||||
<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> |
|
||||||
Loading…
Reference in new issue