Browse Source

Merge remote-tracking branch 'origin/master'

main
不爱学习的石同学 11 months ago
parent
commit
b9565ab289
  1. 6
      src/api/data/videoInspection.ts
  2. 7
      src/components/home/work/index.vue
  3. 8
      src/components/negative/description.vue
  4. 1927
      src/components/negative/verify.vue
  5. 4
      src/enums/dictEnums.ts
  6. 8
      src/views/books/Ajhc.vue
  7. 3
      src/views/books/Gabxf.vue
  8. 2
      src/views/books/Gjxf.vue
  9. 165
      src/views/data/VideoInspection.vue
  10. 243
      src/views/system/DepartMaping.vue
  11. 5
      src/views/system/ProblemMaping.vue
  12. 5
      src/views/work/VerifySubmit.vue

6
src/api/data/videoInspection.ts

@ -5,4 +5,10 @@ export function listVideoInspection(query) {
url: `/videoInspection`, url: `/videoInspection`,
query: query query: query
}); });
}
export function getVideoInspectionInfo(id) {
return request.get({
url: `/videoInspection/${id}`
});
} }

7
src/components/home/work/index.vue

@ -39,7 +39,7 @@
</el-badge> </el-badge>
<span class="tab-nav-title" v-else>通知提醒</span> <span class="tab-nav-title" v-else>通知提醒</span>
</template> </template>
<div v-loading="loading" class="pt-20"> <div v-loading="alarmLoading" class="pt-20">
<home-work-my-alarm :data="alarms" @update="getAlarmList" /> <home-work-my-alarm :data="alarms" @update="getAlarmList" />
</div> </div>
</el-tab-pane> </el-tab-pane>
@ -73,15 +73,16 @@ function getList() {
}); });
} }
const alarmLoading = ref(true)
function getAlarmList() { function getAlarmList() {
loading.value = true alarmLoading.value = true
alarmNotificationPageByTodo({ alarmNotificationPageByTodo({
current: 1, current: 1,
size: 100, size: 100,
}).then((data) => { }).then((data) => {
alarms.value = data.records; alarms.value = data.records;
myAlarmTotal.value = data.total myAlarmTotal.value = data.total
loading.value = false alarmLoading.value = false
}); });
} }

8
src/components/negative/description.vue

@ -10,9 +10,9 @@
<label>问题发现时间</label> <label>问题发现时间</label>
<span>{{ negative.discoveryTime }}</span> <span>{{ negative.discoveryTime }}</span>
</div> </div>
<div class="col col-6"> <div class="col col-6" v-if="negative.happenTime">
<label>问题发生时间</label> <label>问题发生时间</label>
<span>{{ negative.happenTime || '/' }}</span> <span>{{ negative.happenTime }}</span>
</div> </div>
<div class="col col-6"> <div class="col col-6">
<label>问题来源</label> <label>问题来源</label>
@ -52,9 +52,9 @@
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col col-12"> <div class="col col-12" v-if="negative.caseNumber">
<label>案件/警情编号</label> <label>案件/警情编号</label>
<span>{{ negative.caseNumber || '/' }}</span> <span>{{ negative.caseNumber }}</span>
</div> </div>
<div class="col col-12"> <div class="col col-12">
<label>涉及单位</label> <label>涉及单位</label>

1927
src/components/negative/verify.vue

File diff suppressed because it is too large Load Diff

4
src/enums/dictEnums.ts

@ -6,7 +6,9 @@ export enum InspectCase {
// 部分属实 // 部分属实
PARTIALLY_TRUE = '2', PARTIALLY_TRUE = '2',
// 不属实 // 不属实
FALSE = '3' FALSE = '3',
// 无法办理
UNABLE = '4'
} }
// 是否整改 // 是否整改

8
src/views/books/Ajhc.vue

@ -61,7 +61,9 @@
</el-form> </el-form>
<div class="mb-25 flex between"> <div class="mb-25 flex between">
<div> <div>
<el-button type="primary" @click="handleExport"
>数据导出</el-button
>
</div> </div>
<div> <div>
<el-button type="primary" @click="getList"> <el-button type="primary" @click="getList">
@ -204,6 +206,10 @@ function handleAction(row) {
show.value = true; show.value = true;
activeNegativeId.value = row.id; activeNegativeId.value = row.id;
} }
function handleExport() {
window.open(`${BASE_PATH}/negative/books/export/ajhc?` + new URLSearchParams(query.value).toString())
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
</style> </style>

3
src/views/books/Gabxf.vue

@ -314,7 +314,8 @@ function handleAction(row) {
} }
function handleExport() { function handleExport() {
window.open(`${BASE_PATH}/negative/books/export/xf/${ProblemSources.GABXF}`)
window.open(`${BASE_PATH}/negative/books/export/xf/${ProblemSources.GABXF}?` + new URLSearchParams(query.value).toString())
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

2
src/views/books/Gjxf.vue

@ -314,7 +314,7 @@ function handleAction(row) {
} }
function handleExport() { function handleExport() {
window.open(`${BASE_PATH}/negative/books/export/xf/${ProblemSources.GABXF}`) window.open(`${BASE_PATH}/negative/books/export/xf/${ProblemSources.GABXF}?` + new URLSearchParams(query.value).toString())
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

165
src/views/data/VideoInspection.vue

@ -61,7 +61,9 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" width="160"> <el-table-column label="操作" width="160">
<template #default="{ row }"> <template #default="{ row }">
<el-button type="primary" link>查看详情</el-button> <el-button type="primary" link @click="handleShowInfo(row)"
>查看详情</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -80,54 +82,98 @@
</div> </div>
</div> </div>
<el-dialog title="视频督察详情" v-model="show" width="80vw"> <el-dialog
<div class="row"> title="视频督察详情"
<div class="col col-6"> v-model="show"
<label>预警时间</label> width="80vw"
<span>{{ }}</span> top="2vh"
</div> style="margin-bottom: 0"
<div class="col col-6"> v-loading="infoLoading"
<label>预警级别</label> >
<span>{{ }}</span> <div class="top-container" >
</div> <div class="row">
<div class="col col-6"> <div class="col col-6">
<label>预警开始时间</label> <label>预警时间</label>
<span>{{ }}</span> <span>{{ info.rqsj }}</span>
</div> </div>
<div class="col col-6"> <div class="col col-6">
<label>预警结束时间</label> <label>预警级别</label>
<span>{{ }}</span> <span>{{ info.alarmLevel }}</span>
</div> </div>
<div class="col col-12"> <div class="col col-12">
<label>登记单位</label> <label>登记单位</label>
<span>{{ }}</span> <span>{{ info.registrationDepartName }}</span>
</div> </div>
<div class="col col-12"> <div class="col col-12">
<label>发生单位</label> <label>发生单位</label>
<span>{{ }}</span> <span>{{ info.happenDepartName }}</span>
</div> </div>
<div class="col col-24"> <div class="col col-24">
<label>督察方式</label> <label>督察方式</label>
<span>{{ }}</span> <span>{{ info.systemKeyName }}</span>
</div> </div>
<div class="col col-24"> <div class="col col-24">
<label>督察方式</label> <label>预警项名称</label>
<span>{{ }}</span> <span>{{ info.sTitle }}</span>
</div> </div>
<div class="col col-24"> <div class="col col-24">
<label>预警名称</label> <label>预警标题</label>
<span>{{ }}</span> <span>{{ info.title }}</span>
</div> </div>
<div class="col col-24"> <div class="col col-24">
<label>预警标题</label> <label>简要情况</label>
<span>{{ }}</span> <span
>{{ info.content }}</span
>
</div>
</div> </div>
</div> </div>
<el-row>
<el-col :span="5">
<h5
class="text-center text-bold"
style="margin-bottom: 8px; margin-top: 8px"
>
证据图片时间
</h5>
<el-scrollbar max-height="500px">
<div class="img-item pointer" v-for="item in info.zlList" :key="item" @click="activeZl = item" :active="activeZl.id === item.id">{{ item.dmtbzrqsj }}</div>
</el-scrollbar>
</el-col>
<el-col :span="19">
<el-scrollbar height="560px">
<div class="row">
<div class="col col-24">
<label>预警项名称</label>
<span>{{ info.sTitle }}</span>
</div>
<div class="col col-24">
<label>发生单位</label>
<span>{{ info.happenDepartName }}</span>
</div>
<div class="col col-24">
<label>预警时间</label>
<span>{{ activeZl.dmtbzrqsj }}</span>
</div>
</div>
<div>
<img
style="width: 100%"
:src="activeZl.dzwjwz"
alt=""
/>
</div>
</el-scrollbar>
</el-col>
</el-row>
</el-dialog> </el-dialog>
</template> </template>
<script setup> <script setup>
import { listVideoInspection } from "@/api/data/videoInspection"; import {
listVideoInspection,
getVideoInspectionInfo,
} from "@/api/data/videoInspection";
import feedback from "@/utils/feedback"; import feedback from "@/utils/feedback";
const query = ref({ const query = ref({
current: 1, current: 1,
@ -156,6 +202,35 @@ function reset() {
} }
const show = ref(false); const show = ref(false);
const infoLoading = ref(false);
const info = ref({})
const activeZl = ref({})
async function handleShowInfo(row) {
infoLoading.value = true
show.value = true;
info.value = await getVideoInspectionInfo(row.id);
if (info.value.zlList.length > 0) {
activeZl.value = info.value.zlList[0]
} else {
activeZl.value = {}
}
infoLoading.value = false
}
</script> </script>
<style scoped> <style scoped lang="scss">
.top-container {
border-bottom: 1px solid #e9ebfd;
margin-bottom: 20px;
}
.img-item {
height: 32px;
line-height: 32px;
padding-left: 20px;
font-size: 12px;
&:hover, &[active=true] {
background: #e1e5ff;
}
}
</style> </style>

243
src/views/system/DepartMaping.vue

@ -1,9 +1,13 @@
<template> <template>
<div class="container"> <div class="container">
<el-tabs v-model="activeName" type="card"> <el-tabs v-model="activeName" type="card">
<el-tab-pane label="情指行" name="情指行"> </el-tab-pane> <el-tab-pane
<el-tab-pane label="重点人员" name="重点人员"> </el-tab-pane> v-for="item in sources"
<el-tab-pane label="民意感知" name="民意感知"> </el-tab-pane> :key="item"
:label="item.label"
:name="item.value"
>
</el-tab-pane>
</el-tabs> </el-tabs>
<header> <header>
<el-row> <el-row>
@ -75,141 +79,70 @@
</div> </div>
</header> </header>
<p></p> <p></p>
<el-tabs v-model="activeMaping"> <el-tabs v-model="query.activeMaping" @tab-change="getList">
<el-tab-pane label="全部" name="all"> <el-tab-pane label="全部" name="all"></el-tab-pane>
<div class="table-container">
<el-table :data="list">
<el-table-column
:label="`${activeName}单位编码`"
prop="externalId"
width="150"
/>
<el-table-column
:label="`${activeName}单位名称`"
prop="externalName"
/>
<el-table-column
label="数字督察单位"
prop="internalName"
/>
<el-table-column
label="单位层级"
prop="level"
width="100"
align="center"
>
<template #default="{ row }">
<span v-if="row.level === 2">二级单位</span>
<span v-if="row.level === 3">三级单位</span>
<span v-if="row.level === 4">四级单位</span>
</template>
</el-table-column>
<el-table-column
label="最后修改时间"
prop="updateTime"
width="160"
/>
<el-table-column label="操作" width="160">
<template #default="{ row }">
<el-button
type="primary"
link
@click="handleEdit(row)"
>编辑</el-button
>
<el-button
type="danger"
link
@click="handleDel(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>
</el-tab-pane>
<el-tab-pane label="未映射" name="noMaping"> <el-tab-pane label="未映射" name="noMaping">
<template #label> <template #label>
<el-badge :value="0"> <el-badge :value="noMapingTotal" v-if="noMapingTotal > 0">
<span>未映射</span> <span>未映射</span>
</el-badge> </el-badge>
<span v-else>未映射</span>
</template> </template>
<div class="table-container">
<el-table :data="list">
<el-table-column
:label="`${activeName}单位编码`"
prop="externalId"
width="150"
/>
<el-table-column
:label="`${activeName}单位名称`"
prop="externalName"
/>
<el-table-column
label="数字督察单位"
prop="internalName"
/>
<el-table-column
label="单位层级"
prop="level"
width="100"
align="center"
>
<template #default="{ row }">
<span v-if="row.level === 2">二级单位</span>
<span v-if="row.level === 3">三级单位</span>
<span v-if="row.level === 4">四级单位</span>
</template>
</el-table-column>
<el-table-column
label="最后修改时间"
prop="updateTime"
width="160"
/>
<el-table-column label="操作" width="160">
<template #default="{ row }">
<el-button
type="primary"
link
@click="handleEdit(row)"
>编辑</el-button
>
<el-button
type="danger"
link
@click="handleDel(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>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<div class="table-container" v-loading="loading">
<el-table :data="list">
<el-table-column
:label="`${activeName}单位编码`"
prop="externalId"
width="150"
/>
<el-table-column
:label="`${activeName}单位名称`"
prop="externalName"
/>
<el-table-column label="数字督察单位" prop="internalName" />
<el-table-column
label="单位层级"
prop="level"
width="100"
align="center"
>
<template #default="{ row }">
<span v-if="row.level === 2">二级单位</span>
<span v-if="row.level === 3">三级单位</span>
<span v-if="row.level === 4">四级单位</span>
</template>
</el-table-column>
<el-table-column
label="最后修改时间"
prop="updateTime"
width="160"
/>
<el-table-column label="操作" width="160">
<template #default="{ row }">
<el-button type="primary" link @click="handleEdit(row)"
>编辑</el-button
>
<el-button type="danger" link @click="handleDel(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> </div>
<el-dialog <el-dialog
@ -232,9 +165,12 @@
clearable clearable
style="width: 280px" style="width: 280px"
> >
<el-option label="情指行" value="情指行"></el-option> <el-option
<el-option label="重点人员" value="重点人员"></el-option> v-for="item in sources"
<el-option label="民意感知" value="民意感知"></el-option> :key="item"
:label="item.label"
:value="item.value"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
@ -272,11 +208,6 @@
<el-form-item <el-form-item
label="数字督察单位" label="数字督察单位"
prop="internalId" prop="internalId"
:rules="{
required: true,
message: '请选择',
trigger: ['blur'],
}"
> >
<depart-tree-select <depart-tree-select
v-model="formData.internalId" v-model="formData.internalId"
@ -301,19 +232,48 @@ import {
delDepartMaping, delDepartMaping,
} from "@/api/system/departMaping"; } from "@/api/system/departMaping";
import feedback from "@/utils/feedback"; import feedback from "@/utils/feedback";
const activeName = ref("情指行");
const activeMaping = ref("all"); const sources = [
{
value: "情指行",
label: "情指行",
},
{
value: "重点人员",
label: "重点人员",
},
{
value: "民意感知",
label: "民意感知",
},
{
value: "局长信箱",
label: "局长信箱",
},
];
const activeName = ref(sources[0].value);
const query = ref({ const query = ref({
current: 1, current: 1,
size: 10, size: 10,
activeMaping: 'all'
}); });
const list = ref([]); const list = ref([]);
const total = ref(0); const total = ref(0);
const loading = ref(true)
const noMapingTotal = ref(0)
function getList() { function getList() {
loading.value = true
listDepartMaping(activeName.value, query.value).then((data) => { listDepartMaping(activeName.value, query.value).then((data) => {
list.value = data.records; list.value = data.records;
total.value = data.total; total.value = data.total;
loading.value = false
});
listDepartMaping(activeName.value, {
activeMaping: 'noMaping'
}).then((data) => {
noMapingTotal.value = data.total;
}); });
} }
@ -321,6 +281,7 @@ function reset() {
query.value = { query.value = {
current: 1, current: 1,
size: 10, size: 10,
activeMaping: 'all'
}; };
getList(); getList();
} }

5
src/views/system/ProblemMaping.vue

@ -108,11 +108,6 @@
<el-form-item <el-form-item
label="数字督察问题类型" label="数字督察问题类型"
prop="internalId" prop="internalId"
:rules="{
required: true,
message: '请选择',
trigger: ['blur'],
}"
> >
<problem-type-select <problem-type-select
v-model="formData.internalId" v-model="formData.internalId"

5
src/views/work/VerifySubmit.vue

@ -1518,7 +1518,7 @@ import { setToken } from "@/utils/token";
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
if (!route.query.outerId) { if (!route.query.outerId || !route.query.token) {
router.push("/401"); router.push("/401");
} }
const id = route.query.outerId; const id = route.query.outerId;
@ -1554,6 +1554,7 @@ async function getDetails() {
} }
onMounted(async () => { onMounted(async () => {
document.body.style.fontSize = '14px'
await getDetails(); await getDetails();
getFormData(); getFormData();
}); });
@ -1778,10 +1779,8 @@ p {
.wrapper { .wrapper {
overflow: auto; overflow: auto;
height: 100vh; height: 100vh;
font-size: 14px;
} }
.container { .container {
width: 1100px;
margin: auto; margin: auto;
} }
.message { .message {

Loading…
Cancel
Save