Browse Source

fix: BUG修复

main
wxc 1 year ago
parent
commit
cc2b7e7dd6
  1. 11
      src/components/home/work/index.vue
  2. 69
      src/components/home/work/my-alarm.vue
  3. 4
      src/components/model-tree.vue
  4. 6
      src/components/negative/add.vue
  5. 28
      src/components/negative/countersign-description.vue
  6. 1
      src/components/negative/dialog.vue
  7. 2
      src/components/negative/verify.vue
  8. 3
      src/enums/dictEnums.ts
  9. 4
      src/style/public.scss
  10. 217
      src/views/sensitivePerception/Model.vue
  11. 4
      src/views/sensitivePerception/ModelClueManual.vue
  12. 4
      src/views/sensitivePerception/RiskPersonnel.vue
  13. 782
      src/views/work/Alarm.vue
  14. 14
      src/views/work/Fav.vue
  15. 6
      src/views/work/Query.vue

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

@ -7,10 +7,11 @@
</el-badge>
<span class="tab-nav-title" v-else>我的待办</span>
</template>
<div v-loading="loading" class="mt-20">
<div v-loading="loading" class="pt-20">
<home-work-my-todo :data="todos" @refresh="getList" />
</div>
</el-tab-pane>
<el-tab-pane name="second">
<template #label>
<el-badge :value="todoToExpires.length" v-if="todoToExpires.length">
@ -22,6 +23,14 @@
<home-work-my-todo :data="todoToExpires" @refresh="getList" />
</div>
</el-tab-pane>
<el-tab-pane name="alarm">
<template #label>
<span class="tab-nav-title">通知提醒</span>
</template>
<div v-loading="loading" class="pt-20">
<home-work-my-alarm />
</div>
</el-tab-pane>
<el-tab-pane name="third">
<template #label>
<span class="tab-nav-title">我的收藏</span>

69
src/components/home/work/my-alarm.vue

@ -0,0 +1,69 @@
<template>
<div class="table-container" v-loading="loading">
<el-table :data="list">
<el-table-column label="提醒时间" prop="alarmTime" width="170" />
<el-table-column label="提醒类型" prop="alarmType" width="90" />
<el-table-column
label="被通知单位"
prop="notificationDepartName"
width="110"
show-overflow-tooltip
/>
<el-table-column label="被通知民警" prop="policeName" width="110" />
<el-table-column label="提醒内容" prop="alarmContent" show-overflow-tooltip />
<el-table-column label="回复情况" width="110" align="center">
<template #default="{ row }">
<el-text v-if="row.replyState == 1" class="mx-1"
>已回复</el-text
>
<el-text v-else type="warning" class="mx-1">未回复</el-text>
</template>
</el-table-column>
<el-table-column label="操作" width="120">
<template #default="{ row }">
<el-button
type="primary"
link
@click="handleEdit(row)"
v-perms="['negative:edit']"
>立即回复
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script setup>
import {
alarmNotificationPages
} from "@/api/work/alarm";
const list = ref([]);
const loading = ref(true);
function getList() {
loading.value = true;
alarmNotificationPages({
current: 1,
size: 100,
}).then((data) => {
list.value = data.records;
loading.value = false;
});
}
onMounted(() => {
getList();
});
const show = ref(false);
const activeNegativeId = ref("");
function handleAction(row) {
show.value = true;
activeNegativeId.value = row.negativeId;
}
</script>
<style lang="scss" scoped>
</style>

4
src/components/model-tree.vue

@ -14,6 +14,7 @@
:filter-node-method="filterNode"
@node-click="handleClick"
ref="treeRef"
/>
</el-scrollbar>
</div>
@ -139,4 +140,7 @@ function getModelId(arr, node) {
.tree-container {
height: calc(100% - 42px);
}
.el-tree {
width: fit-content;
}
</style>

6
src/components/negative/add.vue

@ -67,8 +67,8 @@
</el-form-item>
</el-col>
</el-row>
<el-row v-if="form.problemSourcesCode === ProblemSources.ZXDC">
<el-col :span="12">
<el-row >
<el-col :span="12" v-if="form.problemSourcesCode === ProblemSources.ZXDC">
<el-form-item
label="专项督察"
prop="specialSupervision"
@ -92,7 +92,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="12" v-if="form.problemSourcesCode === ProblemSources.ZXDC || form.problemSourcesCode === ProblemSources.XCDC">
<el-form-item
label="通报期数"
prop="reportNumber"

28
src/components/negative/countersign-description.vue

@ -18,19 +18,20 @@
<div class="col col-12">
<label>会签单位</label>
<span>
<div
v-for="depart in item.countersigns"
:key="depart"
class="flex gap wrap"
>
<span>{{ depart.departName }}</span>
<span
>({{
depart.state === "uncompleted"
? "未提交"
: "已提交"
}})</span
<div class="flex gap wrap">
<div
v-for="depart in item.countersigns"
:key="depart"
>
<span>{{ depart.departName }}</span>
<span
>({{
depart.state === "uncompleted"
? "未提交"
: "已提交"
}})</span
>
</div>
</div>
</span>
</div>
@ -48,6 +49,7 @@
<div class="text-primary mb-8">
{{ countersign.departName }}的会签意见
</div>
<div class="flex end text-small">{{ countersign.createTime }}</div>
<div class="text-wrap mb-10">{{ countersign.comments }}</div>
<div class="row" v-if="countersign.files">
<div class="col col-24">
@ -69,7 +71,7 @@ const countersignApplys = inject("countersignApplys");
const activeNames = ref([]);
watch(countersignApplys, () => {
for (let i = 0; i < countersignApplys.value.length; i++) {
console.log(i)
console.log(i);
activeNames.value.push(`countersign${i}`);
}
});

1
src/components/negative/dialog.vue

@ -275,6 +275,7 @@ watch(
() => props.id,
() => {
getDetails();
verifyEditFlag.value = false;
}
);

2
src/components/negative/verify.vue

@ -139,6 +139,7 @@
type="textarea"
placeholder="请输入问题核查情况"
v-model="form.checkStatusDesc"
:autosize="{ minRows: 4 }"
/>
</el-form-item>
<el-form-item
@ -158,6 +159,7 @@
type="textarea"
placeholder="请输入问题整改情况"
v-model="form.rectifyDesc"
:autosize="{ minRows: 4 }"
/>
</el-form-item>

3
src/enums/dictEnums.ts

@ -55,8 +55,11 @@ export enum ProblemSources {
JZXX = '23',
// 12337信访
XF12337 = '24',
XCDC = '13',
// 专项督察
ZXDC = '15',
// 现场督察
// 其他
XF_QT = '25'
}

4
src/style/public.scss

@ -190,6 +190,10 @@ svg + span {
position: relative;
}
.pt-20 {
padding-top: 20px;
}
.m-1 {
margin: 1px;
}

217
src/views/sensitivePerception/Model.vue

@ -197,83 +197,100 @@
/>
</el-select>
</el-form-item>
<el-form-item
label="模型类型"
prop="classId"
:rules="{
required: true,
message: '请选择模型类型',
}"
>
<el-select v-model="form.classId" style="width: 340px">
<el-option
v-for="item in classes"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item
label="风险因素"
:rules="{
required: true,
message: '请选择风险因素',
}"
prop="riskScoreRuleId"
v-if="form.classId === GRJDBLFX_CLASS_ID"
>
<el-tree-select
class="flex-1"
v-model="form.riskScoreRuleId"
:data="treeOptions"
clearable
node-key="id"
:props="{
label: 'riskName',
}"
placeholder="请选择风险因素"
filterable
style="width: 340px"
/>
</el-form-item>
<el-form-item
label="数据类型"
prop="modelDataType"
:rules="{
required: true,
message: '请选择数据类型',
}"
v-else
>
<el-radio-group v-model="form.modelDataType" class="block">
<el-radio
v-for="item in dict.modelDataType"
:key="item.dictCode"
:value="item.dictValue"
>{{ item.dictLabel
}}{{ item.remark ? `(${item.remark})` : "" }}</el-radio
<el-row>
<el-col :span="12">
<el-form-item
label="模型类型"
prop="classId"
:rules="{
required: true,
message: '请选择模型类型',
}"
>
</el-radio-group>
</el-form-item>
<el-form-item
label="预警通知处置"
prop="modelDataType"
:rules="{
required: true,
message: '请选择数据类型',
}"
v-if="form.modelDataType === '2'"
>
<el-select
style="width: 280px"
clearable
v-model="form.warningHandling"
>
<el-option label="预警处置" :value="1" />
<el-option label="提醒通知" :value="2" />
</el-select>
</el-form-item>
<el-select v-model="form.classId" style="width: 340px">
<el-option
v-for="item in classes"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="风险因素"
:rules="{
required: true,
message: '请选择风险因素',
}"
prop="riskScoreRuleId"
v-if="form.classId === GRJDBLFX_CLASS_ID"
>
<el-tree-select
class="flex-1"
v-model="form.riskScoreRuleId"
:data="treeOptions"
clearable
node-key="id"
:props="{
label: 'riskName',
}"
placeholder="请选择风险因素"
filterable
style="width: 340px"
/>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="form.classId !== GRJDBLFX_CLASS_ID">
<el-col :span="12">
<el-form-item
label="数据类型"
prop="modelDataType"
:rules="{
required: true,
message: '请选择数据类型',
}"
>
<el-radio-group
v-model="form.modelDataType"
class="block"
>
<el-radio
v-for="item in dict.modelDataType"
:key="item.dictCode"
:value="item.dictValue"
>{{ item.dictLabel
}}{{
item.remark ? `(${item.remark})` : ""
}}</el-radio
>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="通知类型"
prop="modelDataType"
:rules="{
required: true,
message: '请选择通知类型',
}"
v-if="form.modelDataType === '2'"
>
<el-select
style="width: 280px"
clearable
v-model="form.warningHandling"
>
<el-option label="预警处置" :value="1" />
<el-option label="提醒通知" :value="2" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-form-item
label="分发方式"
prop="distributionMethod"
@ -281,7 +298,6 @@
required: true,
message: '请选择分发方式',
}"
v-if="form.modelDataType === ModelDataType.NEGATIVE"
>
<el-radio-group v-model="form.distributionMethod" class="block">
<el-radio
@ -296,11 +312,11 @@
<template
v-if="
form.modelDataType === ModelDataType.NEGATIVE &&
form.distributionMethod ===
DistributionMethod.DIRECTLY_DISTRIBUTE
DistributionMethod.DIRECTLY_DISTRIBUTE
"
>
<el-divider />
<el-form-item
label="分发周期"
prop="distributionCycle"
@ -337,7 +353,7 @@
DistributionCycle.WEEKLY
"
>
<el-select style="width: 120px" clearable>
<el-select style="width: 120px" clearable v-model="form.distributionCycleDayOfWeek">
<el-option
v-for="(item, index) in WEEKS"
:key="index"
@ -365,10 +381,7 @@
</el-form-item>
</div>
</el-form-item>
<el-form-item
label="指定办理单位"
prop="departId"
>
<el-form-item label="指定办理单位" prop="departId">
<div class="flex gap">
<div style="width: 280px">
<depart-tree-select v-model="form.handleDepartId" />
@ -450,10 +463,21 @@
添加问题
</el-button>
</div>
<el-form-item label="问题类型" prop="" v-for="(item, index) in form.problems" :key="index">
<el-form-item
label="问题类型"
prop=""
v-for="(item, index) in form.problems"
:key="index"
>
<div class="flex v-center">
<problem-type-select v-model="item.threeLevelCode" />
<el-button plain type="danger" size="small" class="ml-20" @click="handleRemoveProblem(index)">
<el-button
plain
type="danger"
size="small"
class="ml-20"
@click="handleRemoveProblem(index)"
>
<template #icon>
<icon name="el-icon-Delete" />
</template>
@ -461,7 +485,7 @@
</el-button>
</div>
</el-form-item>
<el-form-item
label="办理时限"
prop="timeLimit"
@ -778,6 +802,9 @@ onMounted(() => {
listModelClass().then((data) => {
classes.value = data;
});
listRiskScoreRuleTree().then((data) => {
treeOptions.value = data
})
});
function handleChangeClass(id) {
@ -789,7 +816,7 @@ const show = ref(false);
const mode = ref("add");
const form = ref({
distributionMethod: "1",
problems: []
problems: [],
});
watch(mode, (val) => {
@ -799,10 +826,10 @@ watch(mode, (val) => {
});
function initForm() {
form.value = {
form.value = {
distributionMethod: "1",
problems: []
};
problems: [],
};
}
const formRef = ref(null);
@ -815,15 +842,15 @@ function handleEdit() {
show.value = true;
mode.value = "edit";
form.value = { ...activeModel.value };
form.value.problems = []
form.value.problems = [];
}
function handleAddProblem() {
form.value.problems.push({})
form.value.problems.push({});
}
function handleRemoveProblem(index) {
form.value.problems.splice(index, 1)
form.value.problems.splice(index, 1);
}
async function handleSubmit() {
@ -903,8 +930,6 @@ function handleSelectInvolveProblem(vals) {
};
});
}
</script>
<style lang="scss" scoped>
.menu {

4
src/views/sensitivePerception/ModelClueManual.vue

@ -1,6 +1,6 @@
<template>
<div class="container">
<el-row :gutter="20">
<div class="container h100">
<el-row :gutter="20" class="h100">
<el-col :span="4">
<model-tree v-model="query.modelIds" />
</el-col>

4
src/views/sensitivePerception/RiskPersonnel.vue

@ -42,12 +42,12 @@
</el-col>
<el-col :span="6">
<el-form-item label="人员标签">
<el-input v-model="query.tags" />
<el-input v-model="query.tags" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="高风险因素">
<el-input v-model="query.smallTags" />
<el-input v-model="query.smallTags" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>

782
src/views/work/Alarm.vue

@ -1,303 +1,302 @@
<template>
<div class="container">
<header>
<el-form :label-width="120">
<el-row>
<el-col :span="6">
<el-form-item label="提醒类型">
<div class="flex gap">
<el-select
v-model="query.alarmTypeId"
style="min-width: 185px"
>
<el-option :value="-1" label="全部"/>
<el-option :value="1" label="预警问题"/>
<el-option :value="2" label="风险问题"/>
<el-option :value="3" label="提醒通知"/>
</el-select>
</div>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="提醒时间">
<date-time-range-picker-ext
v-model="query.discoveryTime"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="回复情况">
<div class="flex gap">
<el-select
v-model="query.replyState"
style="min-width: 185px"
>
<el-option :value="-1" label="全部"/>
<el-option :value="1" label="已回复"/>
<el-option :value="0" label="未回复"/>
</el-select>
</div>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item
label="被通知单位"
prop="involveDepartId"
:rules="{
<div class="container">
<header>
<el-form :label-width="120">
<el-row>
<el-col :span="6">
<el-form-item label="提醒类型">
<div class="flex gap">
<el-select
v-model="query.alarmTypeId"
style="min-width: 185px"
>
<el-option :value="-1" label="全部" />
<el-option :value="1" label="预警问题" />
<el-option :value="2" label="风险问题" />
<el-option :value="3" label="提醒通知" />
</el-select>
</div>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="提醒时间">
<date-time-range-picker-ext
v-model="query.discoveryTime"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="回复情况">
<div class="flex gap">
<el-select
v-model="query.replyState"
style="min-width: 185px"
>
<el-option :value="-1" label="全部" />
<el-option :value="1" label="已回复" />
<el-option :value="0" label="未回复" />
</el-select>
</div>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item
label="被通知单位"
prop="involveDepartId"
:rules="{
message: '请选择问题涉及单位',
trigger: ['blur'],
}"
>
<depart-tree-select
v-model="formData.involveDepartId"
:check-strictly="true"
@node-click="
>
<depart-tree-select
v-model="formData.involveDepartId"
:check-strictly="true"
@node-click="
(row) =>
(formData.involveDepartName =
row.shortName)
"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="提醒内容">
<el-input
placeholder="请输入"
v-model="query.alarmContent"
clearable
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="flex between mt-20 mb-26">
<div></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">
<el-table-column
label="提醒时间"
prop="alarmTime"
width="150"
/>
<el-table-column
label="提醒类型"
prop="alarmType"
width="90"
/>
<el-table-column
label="被通知单位"
prop="notificationDepartName"
width="90"
show-overflow-tooltip
/>
<el-table-column
label="被通知民警"
prop="policeName"
width="90"
/>
<el-table-column
label="提醒内容"
prop="alarmContent"
/>
<el-table-column label="回复情况" width="110">
<template #default="{ row }">
<el-text v-if="row.replyState==1" class="mx-1">已回复</el-text>
<el-text v-else type="warning" class="mx-1">未回复</el-text>
</template>
</el-table-column>
<el-table-column label="操作" width="160">
<template #default="{ row }">
<el-button
type="primary"
link
@click="showFiles(row)"
>查看详情
</el-button>
<el-button
type="primary"
link
@click="handleEdit(row)"
v-perms="['negative:edit']"
>立即回复
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="flex end mt-8">
<el-pagination
@size-change="getList"
@current-change="getList"
:current-page="query.current"
:page-sizes="[10, 20, 50]"
:page-size="query.size"
v-model:current-page="query.current"
layout="total, sizes, prev, pager, next"
:total="total"
>
</el-pagination>
</div>
</main>
<el-dialog v-model="editShow" title="回复问题" width="900px">
<el-form label-width="148" :model="formData" ref="formRef">
<el-row>
<el-col :span="12">
<el-form-item
label="提醒类型"
>
<div >{{formData.alarmType}}</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="提醒时间"
>
<el-text>{{formData.alarmTime}}</el-text>
</el-form-item>
</el-col>
</el-row>
<el-row style="margin-top: 5px;">
<el-col :span="12">
<el-form-item
label="被通知单位"
>
<el-text>{{formData.notificationDepartName}}</el-text>
</el-form-item>
</el-col>
<el-col :span="12" v-if="formData.policeName != undefined">
<el-form-item
label="被通知民警"
>
<el-text>{{formData.policeName}}</el-text>
</el-form-item>
</el-col>
</el-row>
<el-row style="margin-top: 5px;">
<el-form-item
label="提醒内容"
>
<el-text style="width: 588px;">{{formData.alarmContent}}</el-text>
</el-form-item>
</el-row>
<el-form-item
label="回复问题"
:rules="{
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="提醒内容">
<el-input
placeholder="请输入"
v-model="query.alarmContent"
clearable
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="flex between mt-20 mb-26">
<div></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">
<el-table-column
label="提醒时间"
prop="alarmTime"
width="150"
/>
<el-table-column
label="提醒类型"
prop="alarmType"
width="90"
/>
<el-table-column
label="被通知单位"
prop="notificationDepartName"
width="90"
show-overflow-tooltip
/>
<el-table-column
label="被通知民警"
prop="policeName"
width="90"
/>
<el-table-column label="提醒内容" prop="alarmContent" />
<el-table-column label="回复情况" width="110">
<template #default="{ row }">
<el-text v-if="row.replyState == 1" class="mx-1"
>已回复</el-text
>
<el-text v-else type="warning" class="mx-1"
>未回复</el-text
>
</template>
</el-table-column>
<el-table-column label="操作" width="160">
<template #default="{ row }">
<el-button
type="primary"
link
@click="showFiles(row)"
>查看详情
</el-button>
<el-button
type="primary"
link
@click="handleEdit(row)"
v-perms="['negative:edit']"
>立即回复
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="flex end mt-8">
<el-pagination
@size-change="getList"
@current-change="getList"
:current-page="query.current"
:page-sizes="[10, 20, 50]"
:page-size="query.size"
v-model:current-page="query.current"
layout="total, sizes, prev, pager, next"
:total="total"
>
</el-pagination>
</div>
</main>
<el-dialog v-model="editShow" title="回复问题" width="900px">
<el-form label-width="148" :model="formData" ref="formRef">
<el-row>
<el-col :span="12">
<el-form-item label="提醒类型">
<div>{{ formData.alarmType }}</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="提醒时间">
<el-text>{{ formData.alarmTime }}</el-text>
</el-form-item>
</el-col>
</el-row>
<el-row style="margin-top: 5px">
<el-col :span="12">
<el-form-item label="被通知单位">
<el-text>{{
formData.notificationDepartName
}}</el-text>
</el-form-item>
</el-col>
<el-col :span="12" v-if="formData.policeName != undefined">
<el-form-item label="被通知民警">
<el-text>{{ formData.policeName }}</el-text>
</el-form-item>
</el-col>
</el-row>
<el-row style="margin-top: 5px">
<el-form-item label="提醒内容">
<el-text style="width: 588px">{{
formData.alarmContent
}}</el-text>
</el-form-item>
</el-row>
<el-form-item
label="回复问题"
:rules="{
required: true,
message: '请输入回复内容',
trigger: ['blur'],
}"
>
<el-input
type="textarea"
placeholder="请输入回复内容"
v-model="formData.replyResultContent"
:autosize="{ minRows: 6 }"
/>
</el-form-item>
</el-form>
<footer class="flex end">
<el-button @click="editShow = false" size="large">取消</el-button>
<el-button type="primary" @click="handleSumbit" size="large"
>确定
</el-button
>
</footer>
</el-dialog>
<el-dialog
title="查看详情"
v-model="dialogShow"
width="800"
>
<el-form :model="showData" :label-width="120" ref="fomrRef">
<el-row>
<el-col :span="12">
<el-form-item
label="提醒类型"
>
<div >{{showData.alarmType}}</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="提醒时间"
>
<el-text>{{showData.alarmTime}}</el-text>
</el-form-item>
</el-col>
</el-row>
<el-row style="margin-top: 5px;">
<el-col :span="12">
<el-form-item
label="被通知单位"
>
<el-text>{{showData.notificationDepartName}}</el-text>
</el-form-item>
</el-col>
<el-col :span="12" v-if="showData.policeName != undefined">
<el-form-item
label="被通知民警"
>
<el-text>{{showData.policeName}}</el-text>
</el-form-item>
</el-col>
</el-row>
<el-row style="margin-top: 5px;">
<el-form-item
label="提醒内容"
>
<el-text style="width: 588px;">{{showData.alarmContent}}</el-text>
</el-form-item>
</el-row>
<el-row style="margin-top: 5px;" v-if="showData.replyState == 1">
<el-form-item
label="回复内容"
>
<el-text style="width: 588px;">{{showData.replyResultContent}}</el-text>
</el-form-item>
</el-row>
<el-row style="margin-top: 10px;" v-if="showData.files != undefined && showData.files.length > 0">
<el-form-item
label="问题附件"
>
<div v-for="(item, index) in showData.files" :key="index" style="margin-top: 10px;">
<el-image :preview-src-list="previewList" style="width: 100px; height: 100px;margin-right: 8px"
:initial-index="index" :src="item.path" fit="cover" :hide-on-click-modal="true" :lazy="true" />
</div>
</el-form-item>
</el-row>
</el-form>
<footer class="flex end">
<el-button @click="dialogShow = false">关闭</el-button>
</footer>
</el-dialog>
</div>
>
<el-input
type="textarea"
placeholder="请输入回复内容"
v-model="formData.replyResultContent"
:autosize="{ minRows: 6 }"
/>
</el-form-item>
</el-form>
<footer class="flex end">
<el-button @click="editShow = false" size="large"
>取消</el-button
>
<el-button type="primary" @click="handleSumbit" size="large"
>确定
</el-button>
</footer>
</el-dialog>
<el-dialog title="查看详情" v-model="dialogShow" width="800">
<el-form :model="showData" :label-width="120" ref="fomrRef">
<el-row>
<el-col :span="12">
<el-form-item label="提醒类型">
<div>{{ showData.alarmType }}</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="提醒时间">
<el-text>{{ showData.alarmTime }}</el-text>
</el-form-item>
</el-col>
</el-row>
<el-row style="margin-top: 5px">
<el-col :span="12">
<el-form-item label="被通知单位">
<el-text>{{
showData.notificationDepartName
}}</el-text>
</el-form-item>
</el-col>
<el-col :span="12" v-if="showData.policeName != undefined">
<el-form-item label="被通知民警">
<el-text>{{ showData.policeName }}</el-text>
</el-form-item>
</el-col>
</el-row>
<el-row style="margin-top: 5px">
<el-form-item label="提醒内容">
<el-text style="width: 588px">{{
showData.alarmContent
}}</el-text>
</el-form-item>
</el-row>
<el-row style="margin-top: 5px" v-if="showData.replyState == 1">
<el-form-item label="回复内容">
<el-text style="width: 588px">{{
showData.replyResultContent
}}</el-text>
</el-form-item>
</el-row>
<el-row
style="margin-top: 10px"
v-if="
showData.files != undefined && showData.files.length > 0
"
>
<el-form-item label="问题附件">
<div
v-for="(item, index) in showData.files"
:key="index"
style="margin-top: 10px"
>
<el-image
:preview-src-list="previewList"
style="
width: 100px;
height: 100px;
margin-right: 8px;
"
:initial-index="index"
:src="item.path"
fit="cover"
:hide-on-click-modal="true"
:lazy="true"
/>
</div>
</el-form-item>
</el-row>
</el-form>
<footer class="flex end">
<el-button @click="dialogShow = false">关闭</el-button>
</footer>
</el-dialog>
</div>
</template>
<script setup>
import moment from "moment";
import { Clock } from '@element-plus/icons-vue'
import { Clock } from "@element-plus/icons-vue";
import {
alarmNotificationPages,
alarmNotificationReply,
alarmFiles
alarmNotificationPages,
alarmNotificationReply,
alarmFiles,
} from "@/api/work/alarm";
import feedback from "@/utils/feedback";
@ -306,171 +305,172 @@ import useCatchStore from "@/stores/modules/catch";
const catchStore = useCatchStore();
const query = ref({
current: 1,
size: 10,
alarmTypeId: -1,
replyState: -1
current: 1,
size: 10,
alarmTypeId: -1,
replyState: -1,
});
const list = ref([]);
const total = ref(0);
let showData = ref({})
let dialogShow = ref(false)
let previewList = ref([])
let showData = ref({});
let dialogShow = ref(false);
let previewList = ref([]);
const loading = ref(true);
const showFiles = (data) => {
alarmFiles(data.id).then(res => {
showData.value = data;
showData.value['files'] = res;
let arr = []
res.forEach(item => {
arr.push(item.path)
})
previewList.value = arr
console.log(showData.value)
dialogShow.value = true;
})
}
alarmFiles(data.id).then((res) => {
showData.value = data;
showData.value["files"] = res;
let arr = [];
res.forEach((item) => {
arr.push(item.path);
});
previewList.value = arr;
console.log(showData.value);
dialogShow.value = true;
});
};
function getList() {
let param = {
current: query.value.current,
size: query.value.size,
}
if (query.value.alarmTypeId != -1) {
param['alarmTypeId'] = query.value.alarmTypeId
}
if (query.value.replyState != -1) {
param['replyState'] = query.value.replyState
}
if (query.value.discoveryTime != undefined && query.value.discoveryTime != null) {
param['startTime'] = query.value.discoveryTime[0]
param['endTime'] = query.value.discoveryTime[1]
}
if (formData.value.involveDepartId != undefined) {
param['notificationDepartCode'] = formData.value.involveDepartId
}
if (query.value.alarmContent != undefined) {
param['alarmContent'] = query.value.alarmContent;
}
loading.value = true;
alarmNotificationPages(param).then((data) => {
list.value = data.records;
total.value = data.total;
loading.value = false;
});
let param = {
current: query.value.current,
size: query.value.size,
};
if (query.value.alarmTypeId != -1) {
param["alarmTypeId"] = query.value.alarmTypeId;
}
if (query.value.replyState != -1) {
param["replyState"] = query.value.replyState;
}
if (
query.value.discoveryTime != undefined &&
query.value.discoveryTime != null
) {
param["startTime"] = query.value.discoveryTime[0];
param["endTime"] = query.value.discoveryTime[1];
}
if (formData.value.involveDepartId != undefined) {
param["notificationDepartCode"] = formData.value.involveDepartId;
}
if (query.value.alarmContent != undefined) {
param["alarmContent"] = query.value.alarmContent;
}
loading.value = true;
alarmNotificationPages(param).then((data) => {
list.value = data.records;
total.value = data.total;
loading.value = false;
});
}
const tableRef = ref()
const tableRef = ref();
function reset() {
query.value = {
current: 1,
size: 10,
responderKey: "name",
};
tableRef.value.clearSort()
getList();
//
router.push("/query");
query.value = {
current: 1,
size: 10,
responderKey: "name",
};
tableRef.value.clearSort();
getList();
//
router.push("/query");
}
const route = useRoute();
watch(
() => route.query,
() => {
updateQuery();
getList();
updateQuery();
getList();
}
);
function updateQuery() {
if (route.query.processingStatus) {
query.value.processingStatus = [route.query.processingStatus];
} else {
query.value.processingStatus = [];
}
if (route.query.crtTime === "today") {
query.value.crtTime = [
moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),
moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),
];
} else {
query.value.crtTime = [];
}
if (route.query.extensionFlag === "true") {
query.value.extensionFlag = true
} else {
query.value.extensionFlag = '';
}
if (route.query.processingStatus) {
query.value.processingStatus = [route.query.processingStatus];
} else {
query.value.processingStatus = [];
}
if (route.query.crtTime === "today") {
query.value.crtTime = [
moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),
moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),
];
} else {
query.value.crtTime = [];
}
if (route.query.extensionFlag === "true") {
query.value.extensionFlag = true;
} else {
query.value.extensionFlag = "";
}
}
onMounted(() => {
updateQuery();
getList();
updateQuery();
getList();
});
const show = ref(false);
function handleAction(row) {
show.value = true;
show.value = true;
}
const router = useRouter();
const editShow = ref(false);
const formData = ref({});
const formRef = ref(null);
function handleEdit(row) {
editShow.value = true;
formData.value = {...row};
editShow.value = true;
formData.value = { ...row };
}
async function handleSumbit() {
await formRef.value.validate();
let data = {
replyResultContent: formData.value.replyResultContent,
id: formData.value.id
}
await alarmNotificationReply(data);
editShow.value = false;
feedback.msgSuccess("操作成功");
getList();
await formRef.value.validate();
let data = {
replyResultContent: formData.value.replyResultContent,
id: formData.value.id,
};
await alarmNotificationReply(data);
editShow.value = false;
feedback.msgSuccess("操作成功");
getList();
}
</script>
<style lang="scss" scoped>
.form-row {
padding: 8px 0;
box-shadow: inset 0px -1px 0px 0px #ebebeb;
padding: 8px 0;
box-shadow: inset 0px -1px 0px 0px #ebebeb;
label {
width: 120px;
line-height: 24px;
padding-right: 12px;
box-sizing: border-box;
text-align: right;
label {
width: 120px;
line-height: 24px;
padding-right: 12px;
box-sizing: border-box;
text-align: right;
& + * {
width: calc(100% - 126px);
& + * {
width: calc(100% - 126px);
}
}
}
.btn-box {
width: 70px;
}
.btn-box {
width: 70px;
}
.el-form-item {
margin-bottom: 0;
}
.el-form-item {
margin-bottom: 0;
}
}
.query-box {
gap: 10px 20px;
gap: 10px 20px;
}
</style>

14
src/views/work/Fav.vue

@ -108,29 +108,27 @@
</div>
</div>
<div class="row mt-10">
<div class="col col-6">
<div class="col col-6" v-if="row.responderName">
<label>投诉反映人</label>
<span>{{}}</span>
<span>{{ row.responderName }}</span>
</div>
<div class="col col-6">
<div class="col col-6" v-if="row.contactPhone">
<label>联系电话</label>
<span>{{ row.contactPhone }}</span>
</div>
</div>
<div class="row mt-10">
<div class="col col-6">
<label>业务类别</label>
<span>{{ row.businessTypeName }}</span>
</div>
<div class="col col-6">
<label>涉嫌问题</label>
<span>{{}}</span>
<span>{{ getInvolveProblem(row.involveProblem) || '/' }}</span>
</div>
</div>
<div class="row mt-10">
<div class="col col-6">
<label>涉及警种</label>
<span>{{ row.policeTypeName }}</span>
<span>{{ row.policeTypeName || '/' }}</span>
</div>
<div class="col col-6">
<label>涉及单位</label>
@ -139,7 +137,7 @@
</div>
</template>
</el-table-column>
<el-table-column label="问题发生时间" prop="happenTime" />
<el-table-column label="问题发现时间" prop="discoveryTime" />
<el-table-column label="问题来源" prop="problemSources" />
<el-table-column label="业务类别" prop="businessTypeName" />
<el-table-column label="涉嫌问题">

6
src/views/work/Query.vue

@ -521,8 +521,8 @@
</el-form-item>
</el-col>
</el-row>
<el-row v-if="formData.problemSourcesCode === ProblemSources.ZXDC">
<el-col :span="12">
<el-row >
<el-col :span="12" v-if="formData.problemSourcesCode === ProblemSources.ZXDC">
<el-form-item
label="专项督察"
prop="specialSupervision"
@ -545,7 +545,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="12" v-if="form.problemSourcesCode === ProblemSources.ZXDC || form.problemSourcesCode === ProblemSources.XCDC">
<el-form-item
label="通报期数"
prop="reportNumber"

Loading…
Cancel
Save