Browse Source

20250206

main
wxc 10 months ago
parent
commit
8fe14d9883
  1. 7
      src/api/data/videoInspection.ts
  2. 9
      src/api/work/comfort.ts
  3. 1
      src/assets/icons/return.svg
  4. 1
      src/components/data/gab-import.vue
  5. 1
      src/components/data/gj-import.vue
  6. 2
      src/components/file/list.vue
  7. 10
      src/components/negative/dialog.vue
  8. 6
      src/components/negative/return.vue
  9. 20
      src/components/negative/verify-description.vue
  10. 365
      src/components/negative/verify.vue
  11. 2
      src/components/problem-type-select.vue
  12. 2
      src/utils/util.ts
  13. 6
      src/views/data/Mail12337.vue
  14. 544
      src/views/data/VideoInspection.vue
  15. 32
      src/views/datav/VideoInsp.vue
  16. 1
      src/views/sensitivePerception/Model.vue
  17. 38
      src/views/sensitivePerception/ModelClueManual.vue
  18. 1
      src/views/system/Police.vue
  19. 5
      src/views/system/User.vue
  20. 5
      src/views/work/BatchDistribute.vue
  21. 661
      src/views/work/Comfort.vue
  22. 24
      src/views/work/News.vue

7
src/api/data/videoInspection.ts

@ -12,3 +12,10 @@ export function getVideoInspectionInfo(id) {
url: `/videoInspection/${id}`
});
}
export function distributeData(body) {
return request.post({
url: `/videoInspection/distribute`,
body
});
}

9
src/api/work/comfort.ts

@ -0,0 +1,9 @@
import request from "@/api/request";
export function listComfort(query) {
return request.get({
url: `/comfort`,
query: query
});
}

1
src/assets/icons/return.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1708250857142" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11005" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M594.7 400h-150v53h163.8c45.7 0 83.2 37.4 83.2 83.2v27.7c0 45.7-37.4 83.2-83.2 83.2H444.7v53h150c82.5 0 150-67.5 150-150 0-82.6-67.5-150.1-150-150.1zM512 80C273.4 80 80 273.4 80 512s193.4 432 432 432 432-193.4 432-432S750.6 80 512 80z m0 811c-209.3 0-379-169.7-379-379s169.7-379 379-379 379 169.7 379 379-169.7 379-379 379z" p-id="11006"></path><path d="M331.9 425.1l132.3-99.5v199z" p-id="11007"></path></svg>

After

Width:  |  Height:  |  Size: 719 B

1
src/components/data/gab-import.vue

@ -206,6 +206,7 @@
</el-dialog>
</template>
<script setup>
import { BASE_PATH } from "@/api/request";
import {
importPetitionComplaintGab,
addPetitionComplaintGab,

1
src/components/data/gj-import.vue

@ -170,6 +170,7 @@
</el-dialog>
</template>
<script setup>
import { BASE_PATH } from "@/api/request";
import {
importPetitionComplaintGj,
addPetitionComplaintGj,

2
src/components/file/list.vue

@ -428,10 +428,8 @@ function rotateRight() {
position: relative;
.img-container {
height: 100vh;
img {
max-height: 100%;
display: block;
&:hover {
cursor: pointer;
}

10
src/components/negative/dialog.vue

@ -137,9 +137,7 @@
</div>
</div>
<template v-if="approves.length">
<negative-approve-description />
</template>
<template
v-if="
(components.indexOf('negative-verify') > -1 &&
@ -152,6 +150,7 @@
@submit="handleSubmitExecute"
/>
</template>
<template
v-if="
components.indexOf(
@ -161,6 +160,9 @@
>
<negative-verify-description />
</template>
<template v-if="approves.length">
<negative-approve-description />
</template>
<div
class="mb-4 mt-8 flex end"
v-if="spotCheckEditFlag"
@ -209,7 +211,7 @@
ProcessingStatus.COMPLETED
"
>
<h4>认定办结</h4>
<h4 class="text-primary">认定办结</h4>
<div class="row">
<div class="col col-6">
<label>核查办理情况</label>

6
src/components/negative/return.vue

@ -35,6 +35,8 @@
</el-dialog>
</template>
<script setup>
import { watch } from "vue";
const emit = defineEmits(["submit"]);
const show = ref(false);
@ -43,6 +45,10 @@ const formRef = ref(null);
const negative = inject("negative");
watch(() => negative.value.id, () => {
form.value = {}
})
async function submit() {
await formRef.value.validate();
show.value = false;

20
src/components/negative/verify-description.vue

@ -92,7 +92,10 @@
</div>
<div class="col col-6" v-if="blame.handleResultCode">
<label>处置结果</label>
<span>{{ blame.handleResultName }}</span>
<span>
<span>{{ blame.handleResultName }}</span>
<span v-if="blame.handleResultNameOther">({{ blame.handleResultNameOther }})</span>
</span>
</div>
<div class="col col-6" v-if="blame.superviseMeasuresCode">
<label>督察措施</label>
@ -146,7 +149,10 @@
</div>
<div class="col col-6" v-if="blame.leadHandleResultCode">
<label>处置结果</label>
<span>{{ blame.leadHandleResultName }}</span>
<span>
<span>{{ blame.leadHandleResultName }}</span>
<span v-if="blame.leadHandleResultNameOther">({{ blame.leadHandleResultNameOther }})</span>
</span>
</div>
<div class="col col-6" v-if="blame.leadProtectRightsName">
<label>维权容错</label>
@ -205,15 +211,21 @@
</div>
<div class="col col-6" v-if="blame.handleResultCode">
<label>处置结果</label>
<span>{{ blame.handleResultName }}</span>
<span>
<span>{{ blame.handleResultName }}</span>
<span v-if="blame.handleResultNameOther">({{ blame.handleResultNameOther }})</span>
</span>
</div>
</div>
</el-collapse-item>
<el-collapse-item
title="办结佐证材料"
name="completionAttachment"
v-if="negative.files.length"
>
<template #title>
<span>办结佐证材料</span>
<span class="ml-8 text-small" style="color: #666">{{ negative.files.length }}个附件</span>
</template>
<file-list :files="negative.files" />
</el-collapse-item>

365
src/components/negative/verify.vue

@ -452,6 +452,23 @@
</div>
</el-form-item>
</div>
<div
class="flex center"
style="width: 100%"
v-if="item.problems.length === 0"
>
<el-button
@click="handleAddProblem(item)"
plain
type="primary"
size="small"
>
<template #icon>
<icon name="el-icon-Plus" />
</template>
添加问题
</el-button>
</div>
</el-form-item>
<el-row>
<el-col :span="12">
@ -542,42 +559,6 @@
</div>
</el-form-item>
</el-col>
<el-col
:span="12"
v-if="form.checkStatus !== InspectCase.FALSE"
>
<el-form-item
label="处理结果"
:prop="`blames.${index}.handleResultCode`"
:rules="{
required: true,
message: '请选择处理结果',
trigger: ['blur'],
}"
>
<el-select
v-model="item.handleResultCode"
style="width: 240px"
@change="
(val) =>
(item.handleResultName =
dict.handleResult.filter(
(item) =>
item.dictValue ===
val
)[0].dictLabel)
"
>
<el-option
v-for="item in dict.handleResult"
:key="item.dictCode"
:value="item.dictValue"
:label="item.dictLabel"
/>
</el-select>
</el-form-item>
</el-col>
<template
v-if="form.checkStatus !== InspectCase.FALSE"
>
@ -648,6 +629,79 @@
</el-form-item>
</el-col>
</template>
<el-col
:span="12"
v-if="form.checkStatus !== InspectCase.FALSE"
>
<el-form-item
label="处理结果"
:prop="`blames.${index}.handleResultCode`"
:rules="{
required: true,
message: '请选择处理结果',
trigger: ['blur'],
}"
>
<el-select
v-model="item.handleResultCode"
style="width: 240px"
multiple
@change="
(val) =>
handleChangeResultCode(
item,
val
)
"
clearable
>
<el-option
v-for="dictItem in dict.handleResult"
:key="dictItem.dictCode"
:value="dictItem.dictValue"
:label="dictItem.dictLabel"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span="12"
v-if="item.leadHandleResultCode?.includes('11')"
>
<el-form-item
label="其他处理结果"
:prop="`blames.${index}.leadHandleResultNameOther`"
:rules="{
required: true,
message: '请选择处理结果',
trigger: ['blur'],
}"
>
<el-input
v-model="item.leadHandleResultNameOther"
placeholder="其他类型详细描述"
/>
</el-form-item>
</el-col>
<el-col
:span="12"
v-if="item.handleResultCode?.includes('11')"
>
<el-form-item
label="其他处理结果"
:prop="`blames.${index}.handleResultCode`"
:rules="{
required: true,
message: '请选择处理结果',
trigger: ['blur'],
}"
>
<el-input
v-model="item.handleResultNameOther"
placeholder="其他类型详细描述"
/>
</el-form-item>
</el-col>
</el-row>
</div>
<div class="flex center" style="width: 100%">
@ -826,41 +880,6 @@
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="处理结果"
:prop="`blameLeaders.${index}.leadHandleResultCode`"
:rules="{
required: true,
message: '请选择处理结果',
trigger: ['blur'],
}"
v-if="
form.checkStatus !== InspectCase.FALSE
"
>
<el-select
v-model="item.leadHandleResultCode"
style="width: 240px"
@change="
(val) =>
(item.leadHandleResultName =
dict.handleResult.filter(
(item) =>
item.dictValue ===
val
)[0].dictLabel)
"
>
<el-option
v-for="item in dict.handleResult"
:key="item.dictCode"
:value="item.dictValue"
:label="item.dictLabel"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span="12"
@ -929,6 +948,60 @@
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="处理结果"
:prop="`blameLeaders.${index}.leadHandleResultCode`"
:rules="{
required: true,
message: '请选择处理结果',
trigger: ['blur'],
}"
v-if="
form.checkStatus !== InspectCase.FALSE
"
>
<el-select
v-model="item.leadHandleResultCode"
style="width: 240px"
@change="
(val) =>
handleChangeLeadResultCode(
item,
val
)
"
clearable
multiple
>
<el-option
v-for="item in dict.handleResult"
:key="item.dictCode"
:value="item.dictValue"
:label="item.dictLabel"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span="12"
v-if="item.leadHandleResultCode?.includes('11')"
>
<el-form-item
label="其他处理结果"
:prop="`blames.${index}.leadHandleResultNameOther`"
:rules="{
required: true,
message: '请选择处理结果',
trigger: ['blur'],
}"
>
<el-input
v-model="item.leadHandleResultNameOther"
placeholder="其他类型详细描述"
/>
</el-form-item>
</el-col>
</el-row>
</div>
<div
@ -951,7 +1024,6 @@
</el-button>
</div>
</el-form-item>
<el-divider />
</div>
<el-form-item
label-position="top"
@ -1260,16 +1332,16 @@
style="width: 240px"
@change="
(val) =>
(item.handleResultName =
dict.handleResult.filter(
(item) =>
item.dictValue ===
val
)[0].dictLabel)
handleChangeDepartResultCode(
item,
val
)
"
clearable
multiple
>
<el-option
v-for="item in dict.handleResult"
v-for="item in dict.departHandleResult"
:key="item.dictCode"
:value="item.dictValue"
:label="item.dictLabel"
@ -1282,13 +1354,7 @@
</div>
</el-form-item>
</template>
<el-form-item
prop="handlePolices"
label="经办人"
:rules="{
required: true,
validator: validateHandlePolices,
}"
<div
v-if="
negative.problemSourcesCode === ProblemSources.GJXFPT ||
negative.problemSourcesCode === ProblemSources.GABXF ||
@ -1296,47 +1362,58 @@
negative.problemSourcesCode === ProblemSources.XF12337
"
>
<div>
<div
class="mb-8 flex gap v-center"
v-for="(item, index) in form.handlePolices"
:key="index"
>
<police-select
:depart-id="negative.handleSecondDepartId"
v-model="item.empNo"
@change="
(police) => {
item.name = police.name;
item.idCode = police.idCode;
}
"
/>
<el-button
plain
type="primary"
v-if="index === 0"
@click="form.handlePolices.push({})"
>
<template #icon>
<icon name="el-icon-Plus" />
</template>
添加经办人
</el-button>
<el-button
plain
type="danger"
v-else
@click="form.handlePolices.splice(index, 1)"
<el-divider />
<el-form-item
prop="handlePolices"
label="经办人"
:rules="{
required: true,
validator: validateHandlePolices,
}"
>
<div>
<div
class="mb-8 flex gap v-center"
v-for="(item, index) in form.handlePolices"
:key="index"
>
<template #icon>
<icon name="el-icon-Delete" />
</template>
删除经办人
</el-button>
<police-select
:depart-id="negative.handleSecondDepartId"
v-model="item.empNo"
@change="
(police) => {
item.name = police.name;
item.idCode = police.idCode;
}
"
/>
<el-button
plain
type="primary"
v-if="index === 0"
@click="form.handlePolices.push({})"
>
<template #icon>
<icon name="el-icon-Plus" />
</template>
添加经办人
</el-button>
<el-button
plain
type="danger"
v-else
@click="form.handlePolices.splice(index, 1)"
>
<template #icon>
<icon name="el-icon-Delete" />
</template>
删除经办人
</el-button>
</div>
</div>
</div>
</el-form-item>
</el-form-item>
</div>
<el-form-item
prop="files"
label-position="top"
@ -1416,6 +1493,7 @@ const dict = catchSotre.getDicts([
"subjectiveAspect",
"responsibilityType",
"handleResult",
"departHandleResult",
"protectRights",
"assistCase",
"accountabilityTarget",
@ -1448,7 +1526,11 @@ function getFormData() {
blames: negative.value.blames,
blameLeaders: negative.value.blameLeaders,
files: negative.value.files || [],
handlePolices: negative.value.handlePolices || [{}],
handlePolices:
!negative.value.handlePolices ||
negative.value.handlePolices.length === 0
? [{}]
: negative.value.handlePolices,
};
if (negative.value.accountabilityTarget != undefined) {
form.value.accountabilityTarget = negative.value.accountabilityTarget;
@ -1457,6 +1539,7 @@ function getFormData() {
if (negative.value.problemSourcesCode === ProblemSources.JWDC) {
form.value.accountabilityTarget = AccountabilityTarget.PERSONAL;
}
console.log(form.value);
}
function handleAddPersonal() {
@ -1592,6 +1675,28 @@ function handleCheckboxChange(blameLeader, bool, val) {
}
}
function handleChangeResultCode(item) {
if (item.handleResultCode && item.handleResultCode.length > 0) {
item.handleResultName = dict.handleResult
.filter((obj) => item.handleResultCode.includes(obj.dictValue))
.map((obj) => obj.dictLabel)
.join("、");
} else {
item.handleResultName = "";
}
}
function handleChangeDepartResultCode(item) {
if (item.handleResultCode && item.handleResultCode.length > 0) {
item.handleResultName = dict.departHandleResult
.filter((obj) => item.handleResultCode.includes(obj.dictValue))
.map((obj) => obj.dictLabel)
.join("、");
} else {
item.handleResultName = "";
}
}
function validateHandlePolices(rule, value, cb) {
if (value.length === 0) {
cb(new Error("请选择经办人"));
@ -1603,6 +1708,13 @@ function validateHandlePolices(rule, value, cb) {
const formRef = ref(null);
async function validate() {
//
if (form.value.accountabilityTarget === AccountabilityTarget.PERSONAL) {
debugger
form.value.blames = form.value.blames.filter(
(item) => item.type === BlameType.PERSONAL
);
}
const flag = await formRef.value.validate();
if (flag) {
if (
@ -1625,6 +1737,7 @@ async function validate() {
);
}
}
return form.value;
}
}

2
src/components/problem-type-select.vue

@ -33,8 +33,6 @@ watch(() => props.modelValue, (val) => {
value.value = val;
});
watch(value, (val) => {
console.log(props)
debugger
emit("update:modelValue", val);
});

2
src/utils/util.ts

@ -147,11 +147,9 @@ export const formatTimeText = (seconds: number) => {
}
// 小时
if (seconds < 86400) {
const remainder = seconds % 3600;
return `${Math.floor(seconds / 3600)}${parseInt(seconds % 3600 / 60)}`
}
// 天
const remainder = seconds % 86400;
return `${Math.floor(seconds / 86400)}${parseInt(seconds % 86400 / 3600)}`
}

6
src/views/data/Mail12337.vue

@ -33,7 +33,7 @@
<el-col :span="6">
<el-form-item label="登记时间">
<date-time-range-picker-ext
v-model="query.discoveryTime"
v-model="query.discoverTime"
/>
</el-form-item>
</el-col>
@ -94,7 +94,7 @@
<el-table-column
label="登记时间"
prop="discoveryTime"
prop="discoverTime"
width="150"
/>
<el-table-column label="投诉人" prop="name" width="90" />
@ -232,7 +232,7 @@
/>
<el-table-column
label="信息受理登记时间"
prop="discoveryTime"
prop="discoverTime"
width="170"
>
<template #header>

544
src/views/data/VideoInspection.vue

@ -31,7 +31,23 @@
</el-col>
</el-row>
</el-form>
<div class="flex end mt-20 mb-26">
<div class="flex between mt-20 mb-26">
<div class="flex gap">
<el-button type="primary" @click="handleBathJoin">
<template #icon>
<icon name="el-icon-Plus" />
</template>
批量加入</el-button
>
<el-badge :value="distributeList.length">
<el-button
type="primary"
:disabled="distributeList.length === 0"
@click="manualShow = true"
>分发列表</el-button
>
</el-badge>
</div>
<div>
<el-button type="primary" @click="getList">
<template #icon
@ -44,14 +60,26 @@
</div>
</header>
<div class="table-container">
<el-table :data="list">
<el-table :data="list" ref="tableRef">
<el-table-column
type="selection"
width="55"
:selectable="selectable"
/>
<el-table-column
label="预警级别"
prop="alarmLevel"
width="120"
/>
width="100"
align="center"
>
<template #default="{ row }">
<span v-if="row.alarmLevel"
>{{ row.alarmLevel }}</span
>
</template>
</el-table-column>
<el-table-column label="预警类别" prop="systemKeyName" />
<el-table-column label="预警时间" prop="" />
<el-table-column label="预警时间" prop="rqsj" />
<el-table-column label="案事件名称" prop="title" />
<el-table-column label="发生单位名称" prop="fsdwGajgmc" />
<el-table-column label="下发状态" width="120">
@ -61,9 +89,18 @@
</el-table-column>
<el-table-column label="操作" width="160">
<template #default="{ row }">
<el-button type="primary" link @click="handleShowInfo(row)"
<el-button
type="primary"
link
@click="handleShowInfo(row)"
>查看详情</el-button
>
<el-button
link
@click="handleRemoveManuel(row)"
v-if="distributeList.includes(row)"
>移除</el-button
>
</template>
</el-table-column>
</el-table>
@ -90,91 +127,361 @@
style="margin-bottom: 0"
v-loading="infoLoading"
>
<div class="top-container" >
<div class="row">
<div class="col col-6">
<label>预警时间</label>
<span>{{ info.rqsj }}</span>
</div>
<div class="col col-6">
<label>预警级别</label>
<span>{{ info.alarmLevel }}</span>
</div>
<div class="col col-12">
<label>登记单位</label>
<span>{{ info.registrationDepartName }}</span>
</div>
<div class="col col-12">
<label>发生单位</label>
<span>{{ info.happenDepartName }}</span>
</div>
<div class="col col-24">
<label>督察方式</label>
<span>{{ info.systemKeyName }}</span>
</div>
<div class="col col-24">
<label>预警项名称</label>
<span>{{ info.sTitle }}</span>
</div>
<div class="col col-24">
<label>预警标题</label>
<span>{{ info.title }}</span>
</div>
<div class="col col-24">
<label>简要情况</label>
<span
>{{ info.content }}</span
>
<div v-loading="infoLoading">
<div class="top-container">
<div class="row">
<div class="col col-6">
<label>预警时间</label>
<span>{{ info.rqsj }}</span>
</div>
<div class="col col-6">
<label>预警级别</label>
<span v-if="info.alarmLevel"
>{{ info.alarmLevel }}</span
>
</div>
<div class="col col-12">
<label>登记单位</label>
<span>{{ info.registrationDepartName }}</span>
</div>
<div class="col col-12">
<label>发生单位</label>
<span>{{ info.happenDepartName }}</span>
</div>
<div class="col col-24">
<label>督察方式</label>
<span>{{ info.systemKeyName }}</span>
</div>
<div class="col col-24">
<label>预警标题</label>
<span>{{ info.title }}</span>
</div>
<div class="col col-24">
<label>简要情况</label>
<span>{{ info.content }}</span>
</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>
<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>
<div class="col col-24">
<label>发生单位</label>
<span>{{ info.happenDepartName }}</span>
</el-scrollbar>
</el-col>
<el-col :span="19">
<el-scrollbar height="560px">
<div class="row">
<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 class="col col-24">
<label>预警时间</label>
<span>{{ activeZl.dmtbzrqsj }}</span>
<div>
<img
style="width: 100%"
:src="activeZl.dzwjwz"
alt=""
/>
</div>
</el-scrollbar>
</el-col>
</el-row>
</div>
<footer class="flex end mt-20">
<el-button
size="large"
@click="handleJoin"
v-if="!distributeList.includes(activeRow)"
><template #icon> <icon name="el-icon-Plus" /> </template
>加入分发列表</el-button
>
<el-button
size="large"
@click="handleRemoveManuel(activeRow)"
v-else
><template #icon> <icon name="el-icon-Minus" /> </template
>从分发列表移除</el-button
>
<el-button size="large" type="primary" @click="handleNext"
>下一条</el-button
>
</footer>
</el-dialog>
<el-dialog
title="视频督察数据下发"
v-model="manualShow"
width="80vw"
top="5vh"
>
<div style="min-height: 500px">
<div class="table-container">
<el-table :data="distributeList">
<el-table-column
label="预警级别"
prop="alarmLevel"
width="100"
align="center"
>
<template #default="{ row }">
<span v-if="row.alarmLevel"
>{{ row.alarmLevel }}</span
>
</template>
</el-table-column>
<el-table-column label="预警类别" prop="systemKeyName" />
<el-table-column label="预警时间" prop="rqsj" />
<el-table-column label="案事件名称" prop="title" />
<el-table-column label="发生单位名称" prop="fsdwGajgmc" />
<el-table-column label="操作" width="140">
<template #default="{ row }">
<el-button
type="info"
link
@click="handleRemoveManuel(row)"
>移除</el-button
>
</template>
</el-table-column>
</el-table>
</div>
</div>
<footer class="flex end mt-20">
<el-button
type="primary"
size="large"
:disabled="distributeList.length === 0"
@click="handleShowDistributeDialog"
>确认数据</el-button
>
</footer>
</el-dialog>
<el-dialog title="任务分发" v-model="distributeShow" width="50vw" top="5vh">
<el-form
:label-width="120"
ref="formRef"
:model="formData"
v-loading="submitLoading"
>
<el-form-item
label="任务名称"
prop="taskName"
:rules="{
required: true,
message: '请输入任务名称',
}"
>
<el-input
v-model="formData.taskName"
style="width: 280px"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="指定办理单位" prop="handleDepartId">
<div class="flex gap">
<div style="width: 280px">
<depart-tree-select v-model="formData.handleDepartId" />
</div>
<div>
<img
style="width: 100%"
:src="activeZl.dzwjwz"
alt=""
/>
<div class="tips mt-10">
<p>指定具体办理单位 指将问题分派给哪个单位办理</p>
</div>
</el-scrollbar>
</el-col>
</el-row>
</div>
</el-form-item>
<el-form-item
label="业务类别"
prop="businessTypeCode"
:rules="{
required: true,
message: '请选择业务类别',
trigger: ['blur'],
}"
>
<el-select
v-model="formData.businessTypeCode"
style="width: 280px"
>
<el-option
v-for="item in dict.businessType"
:key="item.id"
:label="item.dictLabel"
:value="item.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item
label="涉嫌问题"
prop="involveProblem"
:rules="{
required: true,
message: '请选择涉嫌问题',
trigger: ['blur'],
}"
>
<el-select
v-model="formData.involveProblem"
multiple
clearable
style="width: 280px"
>
<el-option
v-for="item in dict.suspectProblem"
:key="item.id"
:label="item.dictLabel"
:value="item.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="涉及警种" prop="policeType">
<el-select
v-model="formData.policeType"
clearable
style="width: 280px"
>
<el-option
v-for="item in dict.policeType"
:key="item.id"
:label="item.dictLabel"
:value="item.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item
label="问题类型"
prop=""
v-for="(item, index) in formData.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)"
>
<template #icon>
<icon name="el-icon-Delete" />
</template>
删除问题
</el-button>
</div>
</el-form-item>
<el-form-item
label="办理时限"
prop="timeLimit"
:rules="{
required: true,
message: '请选择办理时限',
}"
>
<time-limit-select
v-model="formData.timeLimit"
v-model:maxSignDuration="formData.maxSignDuration"
v-model:maxHandleDuration="formData.maxHandleDuration"
v-model:maxExtensionDuration="formData.maxExtensionDuration"
/>
</el-form-item>
<el-form-item
label="下发流程"
prop="distributionFlow"
:rules="{
required: true,
message: '请选择下发流程',
}"
>
<el-radio-group
v-model="formData.distributionFlow"
class="block"
>
<el-radio
v-for="item in dict.distributionFlow"
:key="item.dictCode"
:value="item.dictValue"
>{{ item.dictLabel }}</el-radio
>
</el-radio-group>
</el-form-item>
<el-form-item
label="审核流程"
prop="approvalFlow"
:rules="{
required: true,
message: '请选择审核流程',
}"
>
<el-radio-group v-model="formData.approvalFlow">
<el-radio
v-for="item in dict.approvalFlow"
:key="item.dictCode"
:value="item.dictValue"
>{{ item.dictLabel
}}{{ item.remark ? `(${item.remark})` : "" }}</el-radio
>
</el-radio-group>
<div class="tips mt-10">
<p>
三级审核 在问题提交办结时需经过所队>二级机构>市局三级审核通过后方可办结
</p>
<p>
二级审核 在问题提交办结时仅需经过所队>二级机构两级审核通过后即可办结
</p>
</div>
</el-form-item>
</el-form>
<footer class="flex end mt-20">
<el-button
type="primary"
size="large"
@click="handleSubmit"
v-loading="submitLoading"
>确认下发</el-button
>
</footer>
</el-dialog>
</template>
<script setup>
import {
listVideoInspection,
getVideoInspectionInfo,
distributeData,
} from "@/api/data/videoInspection";
import feedback from "@/utils/feedback";
import useCatchStore from "@/stores/modules/catch";
const catchStore = useCatchStore();
const dict = catchStore.getDicts([
"distributionState",
"timeLimit",
"approvalFlow",
"distributionFlow",
"businessType",
"suspectProblem",
"policeType",
]);
const query = ref({
current: 1,
size: 10,
@ -203,20 +510,88 @@ function reset() {
const show = ref(false);
const infoLoading = ref(false);
const info = ref({})
const activeZl = ref({})
const info = ref({});
const activeZl = ref({});
const activeRow = ref({});
async function handleShowInfo(row) {
infoLoading.value = true
activeRow.value = row;
show.value = true;
info.value = await getVideoInspectionInfo(row.id);
if (info.value.zlList.length > 0) {
activeZl.value = info.value.zlList[0]
}
const manualShow = ref(false);
const distributeList = ref([]);
const tableRef = ref();
function handleBathJoin() {
const rows = tableRef.value.getSelectionRows();
rows.forEach((row) => {
if (
distributeList.value.filter((item) => item.id === row.id).length ===
0
) {
distributeList.value.push(row);
}
});
}
function handleJoin() {
distributeList.value.push(activeRow.value);
}
function selectable(row) {
return row.distributionState === "0";
}
function handleRemoveManuel(row) {
distributeList.value.splice(distributeList.value.indexOf(row), 1);
}
function handleShowDistributeDialog() {
distributeShow.value = true;
}
const distributeShow = ref(false);
const formData = ref({});
const submitLoading = ref(false);
const formRef = ref();
async function handleSubmit() {
await formRef.value.validate();
formData.value.data = distributeList.value;
submitLoading.value = true;
try {
await distributeData(formData.value);
} catch (e) {
submitLoading.value = false;
throw e;
}
submitLoading.value = false;
getList();
distributeList.value = [];
}
function handleNext() {
let index = list.value.indexOf(activeRow.value);
if (index === list.value.length - 1) {
index = 0;
} else {
activeZl.value = {}
index++;
}
infoLoading.value = false
activeRow.value = list.value[index];
}
watch(activeRow, async () => {
infoLoading.value = true;
info.value = await getVideoInspectionInfo(activeRow.value.id);
if (info.value.zlList.length > 0) {
activeZl.value = info.value.zlList[0];
} else {
activeZl.value = {};
}
infoLoading.value = false;
});
</script>
<style scoped lang="scss">
.top-container {
@ -229,7 +604,8 @@ async function handleShowInfo(row) {
padding-left: 20px;
font-size: 12px;
&:hover, &[active=true] {
&:hover,
&[active="true"] {
background: #e1e5ff;
}
}

32
src/views/datav/VideoInsp.vue

@ -21,24 +21,11 @@
</div>
</div>
<div class="mb-12">
<video
width="100%"
height="250"
controls="controls"
autoplay
>
<source src="/mp4/1.mp4" type="video/ogg"/>
</video>
<iframe :src="activeVideoUrl" style="height: 180px"></iframe>
</div>
<el-row :gutter="12">
<el-col :span="8">
<img src="/imgs/datav/1.png" class="active" alt=""/>
</el-col>
<el-col :span="8">
<img src="/imgs/datav/2.jpg" alt=""/>
</el-col>
<el-col :span="8">
<img src="/imgs/datav/3.jpeg" alt=""/>
<el-col :span="8" v-for="item in videos" :key="item" @click="activeVideoUrl = item">
<iframe :src="item" style="height: 90px"></iframe>
</el-col>
</el-row>
</datav-card>
@ -604,6 +591,13 @@ const videoProblemTypeRateAnimationStop = () => {
}
// endregion
const videos = [
'http://65.47.6.105:18080/#/play/wasm/ws%3A%2F%2F65.47.6.105%3A80%2Frtp%2F43012457021185000003_34020000001320000016.flv',
'http://65.47.6.105:18080/#/play/wasm/ws%3A%2F%2F65.47.6.105%3A80%2Frtp%2F43012457021185000003_34020000001320000003.flv',
'http://65.47.6.105:18080/#/play/wasm/ws%3A%2F%2F65.47.6.105%3A80%2Frtp%2F43012457021185000003_34020000001320000004.flv'
];
const activeVideoUrl = ref(videos[0])
</script>
@ -611,6 +605,11 @@ const videoProblemTypeRateAnimationStop = () => {
<style lang="scss" scoped>
@import "@/style/datav.scss";
iframe {
border: none;
width: 100%;
min-height: 90px;
}
img {
width: 100%;
display: block;
@ -764,7 +763,6 @@ img {
}
.gobal-dropdown-container {
position: absolute;
right: 20px;

1
src/views/sensitivePerception/Model.vue

@ -389,6 +389,7 @@
v-model="form.thingDescGeneration"
clearable
type="textarea"
placeholder="例:发现嫌疑人^name^,身份证号^idCode^的人,酒驾关8天"
/>
</el-form-item>
<el-form-item

38
src/views/sensitivePerception/ModelClueManual.vue

@ -89,8 +89,20 @@
<el-table-column
label="涉及人员"
prop="involvePoliceName"
width="100"
/>
width="120"
>
<template #default="{ row }">
<div v-if="row.involvePoliceName">
<div v-for="item in row.involvePoliceName.split(
' ')"
class="text-nowrap"
>
{{ item }}
</div>
</div>
<div v-else></div>
</template>
</el-table-column>
<el-table-column
label="预警内容"
prop="thingDesc"
@ -240,10 +252,24 @@
</template>
</el-table-column>
<el-table-column
label="涉及人员"
prop="involvePoliceName"
width="120"
/>
label="涉及人员"
prop="involvePoliceName"
width="120"
>
<template #default="{ row }">
<div v-if="row.involvePoliceName">
<div
v-for="item in row.involvePoliceName.split(
' '
)"
class="text-nowrap"
>
{{ item }}
</div>
</div>
<div v-else></div>
</template>
</el-table-column>
<el-table-column
label="预警内容"
prop="thingDesc"

1
src/views/system/Police.vue

@ -303,6 +303,7 @@
filterable
v-model="authForm.sources"
multiple
show-checkbox
/>
</el-form-item>
</el-form>

5
src/views/system/User.vue

@ -130,11 +130,12 @@
width="600"
>
<el-form :label-width="120" ref="formRef" :model="form">
<el-form-item
label="登录名"
:rules="{
required: true,
message: '请入登录名',
message: '请入登录名',
trigger: ['blur'],
}"
prop="userName"
@ -149,7 +150,7 @@
label="姓名"
:rules="{
required: true,
message: '请入姓名',
message: '请入姓名',
trigger: ['blur'],
}"
prop="nickName"

5
src/views/work/BatchDistribute.vue

@ -198,6 +198,11 @@
prop="specialSupervisionName"
width="110"
/>
<el-table-column
label="通报期数"
prop="reportNumber"
width="110"
/>
<el-table-column
label="问题发生时间"
prop="happenTime"

661
src/views/work/Comfort.vue

@ -0,0 +1,661 @@
<template>
<div class="container">
<header class="mb-20">
<el-form :label-width="114">
<el-row>
<el-col :span="6">
<el-form-item label="申请时间">
<date-time-range-picker-ext
v-model="query.applyDate"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="事发时间">
<date-time-range-picker-ext
v-model="query.happenTime"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="姓名">
<el-input
placeholder="请输入姓名"
v-model="query.applicantEmpName"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="申请人单位">
<depart-tree-select v-model="query.departId" />
</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="number"
show-overflow-tooltip
/>
<el-table-column
label="申请时间"
prop="applyDate"
width="160"
/>
<el-table-column
label="事发时间"
prop="happenTime"
width="160"
/>
<el-table-column
label="申请人姓名"
prop="applicantEmpName"
width="100"
/>
<el-table-column label="申请人单位" prop="departName" />
<el-table-column label="开户行">
<template #default="{ row }">
<span>{{ row.bankCard }}</span>
<span>{{ row.bankBranch }}</span>
</template>
</el-table-column>
<el-table-column label="状态" width="100">
<template #default="{ row }">
<el-tag type="success" v-if="row.status === 1"
>正常</el-tag
>
</template>
</el-table-column>
<el-table-column label="操作" width="200">
<template #default="{ row }">
<!-- <el-button
link
>查看</el-button
>
<el-button
link
>下载</el-button
>
<el-button
link
type="danger"
>删除</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="mode === 'add' ? '申请抚慰' : '编辑抚慰信息'"
v-model="show"
width="60vw"
top="5vh"
>
<el-form :label-width="140" ref="formRef" :model="form">
<h5>办理信息</h5>
<el-form-item
label="申请时间"
:rules="{
required: true,
trigger: ['blur'],
}"
prop=""
>
<el-date-picker
v-model="formData.applyDate"
type="date"
placeholder="请选择"
value-format="YYYY-MM-DD"
style="width: 300px"
:disabled-date="disabledDate"
/>
</el-form-item>
<el-row>
<el-col :span="12">
<el-form-item
label="主办民警"
:rules="{
required: true,
trigger: ['blur'],
}"
prop=""
>
<el-input style="width: 300px" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="主办单位"
:rules="{
required: true,
trigger: ['blur'],
}"
prop="handleDepartId"
>
<div style="width: 300px">
<depart-tree-select
v-model="formData.handleDepartId"
:check-strictly="true"
@node-click="
(node) =>
(formData.handleDepartName =
node.shortName)
"
/>
</div>
</el-form-item>
</el-col>
</el-row>
<el-divider />
<el-row>
<el-col :span="12">
<el-form-item
label="是否为本人申请"
:rules="{
required: true,
trigger: ['blur'],
}"
prop=""
>
<el-radio-group v-model="formData.isSelf">
<el-radio :value="1"></el-radio>
<el-radio :value="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12" v-if="formData.isSelf === 0">
<el-form-item
label="关系"
:rules="{
required: true,
trigger: ['blur'],
message: '请选择',
}"
prop="relation"
>
<el-radio-group v-model="formData.relation">
<el-radio :value="1">同事</el-radio>
<el-radio :value="2">亲属</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12" v-if="formData.isSelf === 0">
<el-form-item
label="代理人姓名"
:rules="{
required: true,
trigger: ['blur'],
}"
prop=""
>
<el-input style="width: 300px" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="formData.isSelf === 0">
<el-form-item
label="代理人单位"
:rules="{
required: true,
trigger: ['blur'],
}"
prop=""
>
<div style="width: 300px">
<depart-tree-select
v-model="formData.handleDepartId"
:check-strictly="true"
@node-click="
(node) =>
(formData.handleDepartName =
node.shortName)
"
/>
</div>
</el-form-item>
</el-col>
</el-row>
<h5>申请人信息</h5>
<el-row>
<el-col :span="12">
<el-form-item
label="申请人姓名"
:rules="{
required: true,
message: '请输入',
}"
prop="applicantEmpName"
>
<el-input
v-model="formData.applicantEmpName"
style="width: 300px"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="性别"
:rules="{
required: true,
}"
prop=""
>
<el-radio-group v-model="formData.sex">
<el-radio value="男"></el-radio>
<el-radio value="女"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="出生年月"
:rules="{
required: true,
}"
prop=""
>
<el-date-picker
v-model="formData.birthday"
type="date"
placeholder="请选择"
value-format="YYYY-MM-DD"
style="width: 300px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="文化程度"
:rules="{
required: true,
}"
prop=""
>
<el-select
clearable
style="width: 300px"
v-model="formData.levelEducation"
>
<el-option value="高中">高中</el-option>
<el-option value="大专">大专</el-option>
<el-option value="本科">本科</el-option>
<el-option value="研究生及以上"
>研究生及以上</el-option
>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="政治面貌"
:rules="{
required: true,
}"
prop=""
>
<el-input
v-model="formData.idCode"
style="width: 300px"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="身份证号码"
:rules="{
required: true,
}"
prop=""
>
<el-input
v-model="formData.idCode"
clearable
style="width: 300px"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="联系电话"
:rules="{
required: true,
trigger: ['blur'],
}"
prop=""
>
<el-input
v-model="formData.idCode"
style="width: 300px"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="单位"
:rules="{
required: true,
trigger: ['blur'],
}"
prop=""
>
<div style="width: 300px">
<depart-tree-select
v-model="formData.involveDepartId"
:check-strictly="true"
/>
</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="职务" prop="">
<el-input
v-model="formData.bankCard"
style="width: 300px"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="警种"
:rules="{
required: true,
trigger: ['blur'],
}"
prop=""
>
<el-select
v-model="formData.policeType"
clearable
style="width: 300px"
>
<el-option
v-for="item in dict.policeType"
:key="item.id"
:label="item.dictLabel"
:value="item.dictValue"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="警号"
:rules="{
required: true,
trigger: ['blur'],
}"
prop="applicantEmpNo"
>
<el-input
v-model="formData.applicantEmpNo"
style="width: 300px"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="警衔" prop="">
<el-input
v-model="formData.applicantEmpNo"
style="width: 300px"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="开户行" prop="bankCard">
<el-input
v-model="formData.bankCard"
style="width: 300px"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属支行" prop="bankBranch">
<el-input
v-model="formData.bankBranch"
style="width: 300px"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="银行账号" prop="bankCardAccount">
<el-input
v-model="formData.bankCardAccount"
style="width: 300px"
placeholder="请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-divider />
<h5>案发情况</h5>
<el-row>
<el-col :span="12">
<el-form-item label="事发时间" prop="">
<el-date-picker
v-model="formData.discoveryTime"
type="datetime"
placeholder="请选择"
value-format="YYYY-MM-DD HH:mm"
time-format="HH:mm"
style="width: 300px"
:disabled-date="disabledDate"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="事实及理由" prop="">
<el-input
v-model="formData.bankCardAccount"
type="textarea"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="案发环节" prop="">
<el-input
v-model="formData.bankCardAccount"
style="width: 300px"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="受伤程度" prop="">
<el-input
v-model="formData.bankCardAccount"
style="width: 300px"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="侵权形式" prop="">
<el-input
v-model="formData.bankCardAccount"
style="width: 300px"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="办案单位" prop="">
<el-input
v-model="formData.bankCardAccount"
style="width: 300px"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="侵权人姓名" prop="">
<el-input
v-model="formData.bankCardAccount"
style="width: 300px"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="处理方式" prop="">
<el-input
v-model="formData.bankCardAccount"
style="width: 300px"
placeholder="请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-divider />
<h5>佐证材料</h5>
<el-row>
<el-col :span="12">
<el-form-item label="附件" prop="">
<file-upload />
</el-form-item>
</el-col>
</el-row>
<el-divider />
<h5>呈报审批</h5>
<el-row>
<el-col :span="12">
<el-form-item label="审批人" prop="">
<el-input />
</el-form-item>
</el-col>
</el-row>
</el-form>
<footer class="flex end">
<el-button @click="show = false" size="large">取消</el-button>
<el-button type="primary" @click="submit" size="large"
>确定</el-button
>
</footer>
</el-dialog>
</template>
<script setup>
import { listUser, addUser, updateUser } from "@/api/system/user";
import { listComfort } from "@/api/work/comfort";
import { listRole } from "@/api/system/role";
import feedback from "@/utils/feedback";
import useCatchStore from "@/stores/modules/catch";
const catchStore = useCatchStore();
const dict = catchStore.getDicts(["policeType"]);
const list = ref([]);
const query = ref({
current: 1,
size: 10,
});
const total = ref(0);
function getList() {
listComfort(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 mode = ref("add");
const formData = ref({});
const formRef = ref(null);
function handleEdit(row) {
show.value = true;
mode.value = "edit";
form.value = row;
}
function submit() {
formRef.value.validate((flag) => {
if (flag) {
if (mode.value === "edit") {
updateUser(form.value).then(() => {
show.value = false;
getList();
feedback.msgSuccess("操作成功");
});
} else {
addUser(form.value).then(() => {
show.value = false;
form.value = {};
getList();
feedback.msgSuccess("操作成功");
});
}
}
});
}
watch(mode, (val) => {
if (val === "add") {
form.value = {
password: "123456",
};
}
});
function handleShowAdd() {
mode.value = "add";
show.value = true;
}
</script>
<style lang="scss" scoped>
h5 {
margin: 10px 0;
}
</style>

24
src/views/work/News.vue

@ -12,7 +12,7 @@
</el-col>
<el-col :span="6">
<el-form-item label="动态类型">
<el-select v-model="query.hostLevel" clearable>
<el-select v-model="query.newsWorkSource" clearable>
<el-option
v-for="item in dict.newsWorkSource"
:key="item.id"
@ -24,7 +24,7 @@
</el-col>
<el-col :span="6">
<el-form-item label="动态分类">
<el-select v-model="query.hostLevel" clearable>
<el-select v-model="query.workType" clearable>
<el-option
v-for="item in dict.newsWorkType"
:key="item.id"
@ -65,7 +65,11 @@
</header>
<div class="table-container">
<el-table :data="list">
<el-table-column label="发布时间" prop="releaseTime" width="160" />
<el-table-column
label="发布时间"
prop="releaseTime"
width="160"
/>
<el-table-column label="动态类型" prop="source" width="130" />
<el-table-column label="动态分类" prop="workType" width="120" />
<el-table-column label="动态内容" prop="contentTxt" />
@ -130,6 +134,7 @@
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="发布时间"
@ -171,6 +176,19 @@
>
</el-radio-group>
</el-form-item>
<el-form-item
label="发布单位"
prop="departId"
:rules="{
required: true,
message: '请选择',
trigger: ['blur'],
}"
>
<div style="width: 300px">
<depart-tree-select v-model="formData.departId" @node-click="(node) => formData.departName = node.shortName" />
</div>
</el-form-item>
<el-form-item
label="动态内容"
prop="contentTxt"

Loading…
Cancel
Save