This commit is contained in:
2025-12-10 21:48:45 +08:00
54 changed files with 1123 additions and 224 deletions

View File

@ -88,3 +88,85 @@ export const xxcjSelectPage = (params) => {
params
})
}
// 情报采集打标签
export const xxcjDbqList = (data) => {
return request({
url: api + `/xxcj/xxdbq`,
method: "post",
data
})
}
// 情报采集肯定
export const xxcjXxqd = (params) => {
return request({
url: api + `/xxcj/xxkd`,
method: "get",
params
})
}
// 情报采集追加
export const xxcjAddBc = (data) => {
return request({
url: api + `/xxcj/bc/addEntity`,
method: "post",
data
})
}
// 情报采集修改
export const xxcjUpdateBc = (data) => {
return request({
url: api + `/xxcj/bc/updateEntity`,
method: "post",
data
})
}
// 情报采集补充信息查询
export const xxcjSelectListBc = (data) => {
return request({
url: api + `/xxcj/bc/selectList`,
method: "post",
data
})
}
// 情报采集删除补充信息
export const xxcjDeletesBc = (data) => {
return request({
url: api + `/xxcj/bc/deletes`,
method: "post",
data
})
}
// 情报采集分组
export const xxcjPzgzbm = (data) => {
return request({
url: api + `/xxcj/pzgzbm`,
method: "post",
data
})
}
// 情报采集分页查询
export const xxcjZxsSelectPage = (params) => {
return request({
url: api + `/xxcj/zxs/selectPage`,
method: "get",
params
})
}
// 情报采集增加
export const xxcjZhcSelectPage = (params) => {
return request({
url: api + `/xxcj/zhc/selectPage`,
method: "get",
params
})
}
// 情报采集分页查询
export const xxcjMjjfSelectPage = (params) => {
return request({
url: api + `/xxcj/mjjf/selectPage`,
method: "get",
params
})
}

View File

@ -532,7 +532,7 @@ export const publicRoutes = [
path: "/openSourceList",
name: "openSourceList",
component: () => import("@/views/backOfficeSystem/HumanIntelligence/listView/index"),
meta: { title: "开源列表", icon: "article", qbjbList: '01' },
meta: { title: "共享列表", icon: "article", qbjbList: '01' },
}, {
path: "/socialInformationCrculated",
name: "changeTheClue",
@ -545,7 +545,15 @@ export const publicRoutes = [
component: () => import("@/views/backOfficeSystem/HumanIntelligence/ConversionSynthesis/index"),
meta: { title: "转合成", icon: "article" },
},
{
path: "/CollectPoints",
name: "CollectPoints",
component: () => import("@/views/backOfficeSystem/HumanIntelligence/CollectPoints/index"),
meta: {
title: "采集积分",
icon: "article"
}
}
// {
// path: "/MakeAcomment",
// name: "MakeAcomment",

View File

@ -0,0 +1,160 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="采集积分">
<!-- <el-button type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span>
</el-button> -->
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<template #jflylx="{ row }">
<DictTag :tag="false" :value="row.jflylx" :options="D_BZ_LCZT" />
</template>
<template #jflx="{ row }">
<span v-if="row.jflx === '01'"> 优秀信息员</span>
<span v-else-if="row.jflx === '02'">优秀研判员</span>
</template>
<!-- 操作 -->
<!-- <template #controls="{ row }">
<el-link type="primary" @click="addEdit('edit', row)">详情</el-link>
</template> -->
</MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"></Pages>
</div>
<!-- 编辑详情 -->
</div>
</template>
<script setup>
import PageTitle from "@/components/aboutTable/PageTitle.vue";
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue";
import { xxcjMjjfSelectPage } from '@/api/xxcj.js'
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
const { proxy } = getCurrentInstance();
const {D_BZ_LCZT} =proxy.$dict("D_BZ_LCZT")
const detailDiloag = ref();
const show = ref(false)
const searchConfiger = ref([
{
label: "积分来源类型",
prop: "jflylx",
placeholder: "请选择积分来源类型",
showType: "select",
options: D_BZ_LCZT
},
{
label: "积分类型",
prop: "jflx",
placeholder: "请选择积分类型",
showType: "select",
options: [
{ label: "优秀信息员", value: "01" },
{ label: "优秀研判员", value: "02" },
]
},
]);
const searchBox = ref(); //搜索框
const pageData = reactive({
tableData: [], //表格数据
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "null",
loading: false,
haveControls: false
},
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
}, //分页
controlsWidth: 160, //操作栏宽度
tableColumn: [
{ label: "姓名", prop: "xm" },
{ label: "身份证号", prop: "sfzh" },
{ label: "积分类型", prop: "jflx",showSolt:true },
{ label: "积分获得时间", prop: "hdsj" },
{ label: "积分来源类型", prop: "jflylx",showSolt:true },
{ label: "积分", prop: "jf"},
]
});
onMounted(() => {
tabHeightFn();
getList()
});
const listQuery=ref({})
// 搜索
const onSearch = (val) => {
listQuery.value = { ...val };
pageData.pageConfiger.pageCurrent = 1;
getList()
}
const changeNo = (val) => {
pageData.pageConfiger.pageCurrent = val;
getList()
}
const changeSize = (val) => {
pageData.pageConfiger.pageSize = val;
getList()
}
const getList = () => {
pageData.tableConfiger.loading = true;
const params = {
pageCurrent: pageData.pageConfiger.pageCurrent,
pageSize: pageData.pageConfiger.pageSize,
...listQuery.value
}
xxcjMjjfSelectPage(params).then(res => {
console.log(res);
pageData.tableData = res.records || [];
pageData.total = res.total;
}).finally(() => {
pageData.tableConfiger.loading = false;
})
}
// 新增
const addEdit = (type, row) => {
show.value = true;
nextTick(() => {
detailDiloag.value.init(type, row,);
})
};
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
window.onresize = function () {
tabHeightFn();
};
};
</script>
<style>
.el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important;
}
</style>

View File

@ -41,8 +41,8 @@ watch(() => dialogForm.value, (val) => {
{ label: "情报标题", prop: "qbmc", type: "input", width: '45%' },
{ label: "转线索时间", prop: "zxssj", type: "datetime", width: '45%' },
{ label: "线索编号", prop: "xsBh", type: "input", width: '45%' },
{ label: "采集类型", prop: "cjLx", type: "select", options: props.dict.D_GS_XS_LX, width: '45%' },
{ label: "情报类型", prop: "qblx", type: "select", options: props.dict.D_GS_XS_LX, width: '45%' },
// { label: "采集类型", prop: "cjLx", type: "select", options: props.dict.D_GS_XS_LX, width: '45%' },
// { label: "情报类型", prop: "qblx", type: "select", options: props.dict.D_GS_XS_LX, width: '45%' },
{ label: "情报内容", prop: "qbnr", type: "textarea", width: '100%' },
]
}

View File

@ -1,7 +1,7 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="转线索">
<PageTitle title="转合成">
</PageTitle>
</div>
<!-- 搜索 -->
@ -39,10 +39,9 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue";
import { useRoute } from 'vue-router'
import { qbcjZhcSelectPage } from "@/api/qbcj.js";
import { xxcjZhcSelectPage } from "@/api/xxcj.js";
import { reactive, ref, onMounted, getCurrentInstance, watch } from "vue";
import AddForm from "./addForm.vue"
import { getItem } from '@//utils/storage.js'
const { proxy } = getCurrentInstance();
const { D_BZ_CJLX, D_GS_XS_LX } = proxy.$dict("D_BZ_CJLX", "D_GS_XS_LX"); //获取字典数据
const detailDiloag = ref();
@ -84,8 +83,8 @@ const pageData = reactive({
controlsWidth: 240,
tableColumn: [
{ label: "情报标题", prop: "qbmc" },
{ label: "情报类型", prop: "qblx", showSolt: true },
{ label: "情报来源", prop: "cjlx", showSolt: true },
// { label: "情报类型", prop: "qblx", showSolt: true },
// { label: "情报来源", prop: "cjlx", showSolt: true },
{ label: "转线索时间", prop: "zxssj" },
{ label: "情报内容", prop: "qbnr" },
{ label: "所属部门", prop: "ssbm" },
@ -116,7 +115,7 @@ const changeSize = (val) => {
const getList = () => {
pageData.tableConfiger.loading = true;
let data = { ...pageData.pageConfiger, ...queryFrom.value };
qbcjZhcSelectPage(data).then(res => {
xxcjZhcSelectPage(data).then(res => {
pageData.tableData = res.records || [];
pageData.total = res.total;
pageData.tableConfiger.loading = false;

View File

@ -41,8 +41,8 @@ watch(() => dialogForm.value, (val) => {
{ label: "情报标题", prop: "qbmc", type: "input", width: '45%' },
{ label: "转线索时间", prop: "zxssj", type: "datetime", width: '45%' },
{ label: "线索编号", prop: "xsBh", type: "input", width: '45%' },
{ label: "采集类型", prop: "cjLx", type: "select", options: props.dict.D_GS_XS_LX, width: '45%' },
{ label: "情报类型", prop: "qblx", type: "select", options: props.dict.D_GS_XS_LX, width: '45%' },
// { label: "采集类型", prop: "cjLx", type: "select", options: props.dict.D_GS_XS_LX, width: '45%' },
// { label: "情报类型", prop: "qblx", type: "select", options: props.dict.D_GS_XS_LX, width: '45%' },
{ label: "情报内容", prop: "qbnr", type: "textarea", width: '100%' },
]
}

View File

@ -39,7 +39,7 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue";
import { useRoute } from 'vue-router'
import { qbcjZxsSelectPage } from "@/api/qbcj.js";
import { xxcjZxsSelectPage } from "@/api/xxcj.js";
import { reactive, ref, onMounted, getCurrentInstance, watch } from "vue";
import AddForm from "./addForm.vue"
import { getItem } from '@//utils/storage.js'
@ -97,8 +97,8 @@ const pageData = reactive({
controlsWidth: 240,
tableColumn: [
{ label: "情报标题", prop: "qbmc" },
{ label: "情报类型", prop: "qblx", showSolt: true },
{ label: "情报来源", prop: "cjlx", showSolt: true },
// { label: "情报类型", prop: "qblx", showSolt: true },
// { label: "情报来源", prop: "cjlx", showSolt: true },
{ label: "转线索时间", prop: "zxssj" },
{ label: "情报内容", prop: "qbnr" },
{ label: "所属部门", prop: "ssbm" },
@ -135,7 +135,7 @@ const changeSize = (val) => {
const getList = () => {
pageData.tableConfiger.loading = true;
let data = { ...pageData.pageConfiger, ...queryFrom.value };
qbcjZxsSelectPage(data).then(res => {
xxcjZxsSelectPage(data).then(res => {
pageData.tableData = res.records || [];
pageData.total = res.total;
pageData.tableConfiger.loading = false;

View File

@ -0,0 +1,150 @@
<template>
<el-dialog v-model="modelValue" :title="title" :width="width" @close="close" append-to-body>
<div style="height: 50vh; overflow: auto;">
<FormMessage v-model="listQuery" :formList="formData" ref="elform" :rules="rules" />
</div>
<template #footer>
<div class="dialog-footer">
<el-button @click="close">取消</el-button>
<el-button type="primary" @click="submit">
确认
</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup>
import { onMounted, reactive, watch, ref, computed, getCurrentInstance } from 'vue'
import { ElMessage, ElEmpty } from 'element-plus'
import { xxcjPzgzbm, xxcjSelectByid } from "@/api/xxcj.js";
import FormMessage from "@/components/aboutTable/FormMessage.vue";
const { proxy } = getCurrentInstance();
const props = defineProps({
modelValue: {
type: Boolean,
default: false
},
width: {
type: String,
default: '50%'
}, tableColumn: {
type: Array,
default: () => []
}, dict: {
type: Object,
default: () => ({})
},
dataList: {
type: Array,
default: () => ([])
},
title: {
type: String,
default: '配置部门'
}
})
onMounted(() => {
})
const emit = defineEmits(['update:modelValue', 'getList'])
// 过滤后的数据
const listQuery = ref({})
const rules = ref({
fxfzrq: [
{ required: true, message: '请选择关注部门', trigger: 'blur' }
]
})
const formData = ref([
{ label: "关注部门", prop: "ssbmdm", depMc: 'ssbm', type: "department", width: '45%', multiple: true },
])
const elform = ref(null)
watch(() => props.modelValue, (newVal) => {
if (newVal) {
listQuery.value.ssbmdm = props.dataList.gzbmList.map(item => item.ssbmdm)
}
})
// 搜索相关
const close = () => {
emit('update:modelValue', false)
}
const submit = () => {
elform.value.submit(async (val) => {
try {
const list = listQuery.value.ssbmdm.map((item, index) => {
return {
ssbmdm: item,
ssbm: listQuery.value.ssbm[index],
qbid: props.dataList.id
}
})
const promes = { list }
await xxcjPzgzbm(promes)
proxy.$message({ type: "success", message: "配置成功" });
close()
emit('getList')
} catch (error) {
proxy.$message({ type: "error", message: error.message });
}
})
}
</script>
<style scoped>
/* 搜索区域样式 */
.search-container {
margin-bottom: 16px;
}
.search-input {
width: 100%;
max-width: 500px;
}
/* 内容展示区域样式 */
.content-container {
height: 40vh;
overflow: auto;
border: 1px solid #ebeef5;
border-radius: 4px;
padding: 16px;
background-color: #fafafa;
}
.content-area {
width: 100%;
}
/* 数据列表样式 */
.data-list {
display: flex;
flex-direction: column;
gap: 12px;
}
.data-item {
padding: 12px;
background-color: #fff;
border: 1px solid #ebeef5;
border-radius: 4px;
cursor: pointer;
transition: all 0.3s ease;
}
.data-item:hover {
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.08);
border-color: #409EFF;
}
/* 空状态样式 */
.empty-state {
display: flex;
justify-content: center;
align-items: center;
height: 200px;
}
</style>

View File

@ -0,0 +1,196 @@
<template>
<el-dialog v-model="modelValue" :title="title" :width="width" @close="close" append-to-body>
<!-- 搜索区域 -->
<div class="search-container">
<el-input v-model="searchQuery" placeholder="请输入搜索内容" clearable class="search-input" />
</div>
<!-- 内容展示区域 -->
<div class="content-container">
<div class="content-area">
<!-- 预留内容展示空间 -->
<div v-if="filteredData.length > 0" class="data-list">
<el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" @change="handleCheckAllChange">
全选
</el-checkbox>
<el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
<el-checkbox v-for="(item, index) in filteredData" :key="index" :label="item.dm">
{{ item.zdmc }}
</el-checkbox>
</el-checkbox-group>
</div>
<div v-else class="empty-state">
<el-empty description="暂无数据" />
</div>
</div>
</div>
<template #footer>
<div class="dialog-footer">
<el-button @click="close">取消</el-button>
<el-button type="primary" @click="submit">
确认
</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup>
import { onMounted, reactive, watch, ref, computed } from 'vue'
import { ElMessage, ElEmpty } from 'element-plus'
import { xxcjDbqList, xxcjSelectByid } from "@/api/xxcj.js";
const props = defineProps({
modelValue: {
type: Boolean,
default: false
},
width: {
type: String,
default: '50%'
}, tableColumn: {
type: Array,
default: () => []
}, dict: {
type: Object,
default: () => ({})
},
dataList: {
type: Array,
default: () => ([])
},
title: {
type: String,
default: '自定义标签'
}
})
onMounted(() => {
})
const emit = defineEmits(['update:modelValue', 'getList'])
// 过滤后的数据
const filteredData = computed(() => {
if (!props.dict.D_XXCJ_BQLX) return []
if (!searchQuery.value) return props.dict.D_XXCJ_BQLX
const query = searchQuery.value.toLowerCase()
return props.dict.D_XXCJ_BQLX.filter(item => {
return item.zdmc && item.zdmc.toLowerCase().includes(query)
})
})
// 搜索相关
const searchQuery = ref('')
const close = () => {
emit('update:modelValue', false)
}
const submit = () => {
const a = checkedCities.value.map(v => {
return props.dict.D_XXCJ_BQLX.find(item => item.dm == v)
})
const promes = a.map(item => {
return {
qbid: props.dataList.id,
bqdm: item.dm,
bqmc: item.zdmc,
}
})
xxcjDbqList({ list: promes }).then(res => {
ElMessage({
message: '操作成功',
type: 'success',
showClose: true,
})
emit('getList')
close()
})
.catch(() => {
})
}
// 选择标签
const checkAll = ref(false)
const isIndeterminate = ref(false)
const checkedCities = ref([])
const handleCheckAllChange = (val) => {
checkedCities.value = val ? filteredData.value.map(item => item.dm) : []
isIndeterminate.value = false
}
const handleCheckedCitiesChange = (value) => {
const checkedCount = value.length
checkAll.value = checkedCount === filteredData.value.length
isIndeterminate.value = checkedCount > 0 && checkedCount < filteredData.value.length
}
// 当对话框显示时处理表格列配置
watch(() => props.modelValue, (newVal) => {
if (newVal) {
xxcjSelectByid({ id: props.dataList.id }).then(res => {
checkedCities.value = res.glbqList.map(v => v.bqdm)
checkAll.value = res.glbqList.length == props.dict.D_XXCJ_BQLX.length
isIndeterminate.value = res.glbqList.length < props.dict.D_XXCJ_BQLX.length
})
}
}, { deep: true })
</script>
<style scoped>
/* 搜索区域样式 */
.search-container {
margin-bottom: 16px;
}
.search-input {
width: 100%;
max-width: 500px;
}
/* 内容展示区域样式 */
.content-container {
height: 40vh;
overflow: auto;
border: 1px solid #ebeef5;
border-radius: 4px;
padding: 16px;
background-color: #fafafa;
}
.content-area {
width: 100%;
}
/* 数据列表样式 */
.data-list {
display: flex;
flex-direction: column;
gap: 12px;
}
.data-item {
padding: 12px;
background-color: #fff;
border: 1px solid #ebeef5;
border-radius: 4px;
cursor: pointer;
transition: all 0.3s ease;
}
.data-item:hover {
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.08);
border-color: #409EFF;
}
/* 空状态样式 */
.empty-state {
display: flex;
justify-content: center;
align-items: center;
height: 200px;
}
</style>

View File

@ -153,12 +153,8 @@ const getDepValue = (e) => {
const close = () => {
listQuery.value = {}
listQuery.value.attachmentPath = ''
emit('update:modelValue', false)
}
defineExpose({
getsendFqzl,
close
})
</script>
<style scoped>

View File

@ -13,20 +13,6 @@
<div class="info-value">{{ item.sxsbsj }}</div>
</div>
</div>
<div class="info-row">
<div class="info-item">
<div class="info-label">情报类型</div>
<div class="info-value">
<DictTag :tag="false" :value="item.qblx" :options="dict.D_GS_XS_LX" />
</div>
</div>
<div class="info-item">
<div class="info-label">情报来源</div>
<div class="info-value">
<DictTag :tag="false" :value="item.cjLx" :options="dict.D_BZ_CJLX" />
</div>
</div>
</div>
<div class="content-section">
<div class="info-label">情报内容</div>
<div class="info-content">{{ item.qbnr }}</div>

View File

@ -22,6 +22,9 @@ import { onMounted, reactive, watch, ref } from 'vue'
import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { ElMessage } from 'element-plus'
import { qbcjCzzt, qbcjCzztEdit } from "@/api/qbcj.js"
import { xxcjAddBc,xxcjUpdateBc } from "@/api/xxcj.js"
const props = defineProps({
modelValue: {
type: Boolean,
@ -91,18 +94,20 @@ const formData = ref([
])
const submit = () => {
elform.value.submit((val) => {
const promes = {
xsid: props.dataList.id,
let promes = {
qbid: props.dataList.id,
...listQuery.value
}
if (props.updeteBool) {
qbcjCzztEdit(promes).then(res => {
promes.czlx=props.title=='信息追加'?'02':'01'
xxcjUpdateBc(promes).then(res => {
ElMessage.success('修改成功')
close()
emit('getqbcjCzztList')
})
} else {
qbcjCzzt(promes).then(res => {
promes.czlx=props.title=='信息追加'?'02':'01'
xxcjAddBc(promes).then(res => {
ElMessage.success('新增成功')
close()
})

View File

@ -10,41 +10,111 @@
<div class="form-container">
<div class="form-content" v-loading="loading">
<!-- <div class="form_cnt"> -->
<FormMessage :disabled="disabled" v-model="listQuery" :formList="formData" ref="elform" :rules="rules">
</FormMessage>
<FormMessage :disabled="disabled" v-model="listQuery" :formList="formData" ref="elform" :rules="rules">
</FormMessage>
<!-- </div> -->
</div>
<div class="ml50 mr50 timeline-container" v-if="disabled">
<div class="timeline-title">信息流程展示</div>
<el-timeline class="timeline-full-width">
<el-timeline-item :timestamp="item.czsj" placement="top" v-for="(item, index) in lcList" :key="index">
<el-card class="process-card">
<div class="process-info">
<div class="info-label">处置人</div>
<div class="info-value">{{ item.czrxm || '未记录' }}</div>
</div>
<div class="process-info">
<div class="info-label">处置结果</div>
<div class="info-value">
<DictTag :tag="false" :value="item.czzt" :options="dict.D_BZ_QBCZZT" />
</div>
</div>
</el-card>
</el-timeline-item>
</el-timeline>
<MOSTY.Empty :show="lcList.length == 0" :imgSize="100"></MOSTY.Empty>
<div class="tags-section" v-if="disabled">
<h3 class="tags-title">关注部门</h3>
<div class="tags-container">
<div v-for="(tag, index) in listQuery.gzbmList" :key="tag.id || index" class="tag-item">
<div class="tag-content">
{{ tag.ssbm }}
</div>
</div>
<span v-if="!listQuery.gzbmList || listQuery.gzbmList.length === 0" class="no-tags">
暂无标签
</span>
</div>
</div>
<div class="tags-section" v-if="disabled">
<h3 class="tags-title">关联标签</h3>
<div class="tags-container">
<div v-for="(tag, index) in listQuery.glbqList" :key="tag.id || index" class="tag-item">
<div class="tag-content">
{{ tag.bqmc }}
</div>
</div>
<span v-if="!listQuery.glbqList || listQuery.glbqList.length === 0" class="no-tags">
暂无标签
</span>
</div>
</div>
<div class="tags-section" v-if="disabled">
<h3 class="tags-title">续保信息</h3>
<div class="list-container">
<div v-for="(item, index) in dataList.xb" :key="item.id || index" class="list-item">
<div class="list-content">
{{ item.bcnr }}
</div>
<div class="tag-actions">
<el-icon class="action-icon edit-icon" :size="32" @click="openPursue('续保信息', item)">
<EditPen />
</el-icon>
<el-icon class="action-icon delete-icon" :size="32" @click="handleDeleteTag(item)">
<Delete />
</el-icon>
</div>
</div>
<span v-if="!dataList.xb || dataList.xb.length === 0" class="no-tags">
暂无标签
</span>
</div>
</div>
<div class="tags-section" v-if="disabled">
<h3 class="tags-title">补充信息</h3>
<div class="list-container">
<div v-for="(item, index) in dataList.bc" :key="item.id || index" class="list-item">
<div class="list-content">
{{ item.bcnr }}
</div>
<div class="tag-actions">
<el-icon class="action-icon edit-icon" :size="32" @click="openPursue('信息追加', item)">
<EditPen />
</el-icon>
<el-icon class="action-icon delete-icon" :size="32" @click="handleDeleteTag(item)">
<Delete />
</el-icon>
</div>
</div>
<span v-if="!dataList.bc || dataList.bc.length === 0" class="no-tags">
暂无标签
</span>
</div>
</div>
</div>
<div class="ml50 mr50 timeline-container" v-if="disabled">
<div class="timeline-title">信息流程展示</div>
<el-timeline class="timeline-full-width">
<el-timeline-item :timestamp="item.czsj" placement="top" v-for="(item, index) in lcList" :key="index">
<el-card class="process-card">
<div class="process-info">
<div class="info-label">处置人</div>
<div class="info-value">{{ item.czrxm || '未记录' }}</div>
</div>
<div class="process-info">
<div class="info-label">处置结果</div>
<div class="info-value">
<DictTag :tag="false" :value="item.czzt" :options="dict.D_BZ_QBCZZT" />
</div>
</div>
</el-card>
</el-timeline-item>
</el-timeline>
<MOSTY.Empty :show="lcList.length == 0" :imgSize="100"></MOSTY.Empty>
</div>
</div>
</div>
<pursueContent v-model="pursueShow" :dataList="dataVals" :title="processtitle" :updeteBool="true" />
</template>
<script setup>
import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { qbcjAdd, qbcjUpdate, qbcjSelectByid } from "@/api/Intelligence.js";
import {xxcjAddEntity,xxcjUpdateEntity,xxcjSelectByid,xxcjSelectCzlcList} from "@/api/xxcj.js"
import { ref, defineExpose, onMounted, defineEmits, watch, getCurrentInstance } from "vue";
import { xxcjAddEntity, xxcjUpdateEntity, xxcjSelectByid, xxcjSelectCzlcList, xxcjSelectListBc, xxcjDeletesBc } from "@/api/xxcj.js"
import { EditPen, Delete } from '@element-plus/icons-vue'
import { ref, defineExpose, onMounted, defineEmits, watch, getCurrentInstance } from "vue"
import { ElMessage } from 'element-plus';
import { useRoute, useRouter } from 'vue-router'
import { qbcjCzztList, qbcjCzztDelete } from '@/api/qbcj'
import pursueContent from "@/views/backOfficeSystem/HumanIntelligence/components/pursueContent.vue";
import * as MOSTY from "@/components/MyComponents/index";
const { proxy } = getCurrentInstance()
const emit = defineEmits(["getList"]);
@ -81,7 +151,6 @@ const listQuery = ref({}); //表单
const elform = ref();
onMounted(() => {
})
const addForm = ref()
const msgeDat = ref()
const title = ref("")
const showPj = ref(false)
@ -96,6 +165,8 @@ const init = (type, row) => {
showPj.value = true
msgeDat.value = row
getqbcjPldb(row.id)
getxxcjSelectListBc(row.id, '01')
getxxcjSelectListBc(row.id, '02')
// 初始化表单数据,并根据详情页设置禁用状态
if (row) getDataById(row.id);
// getqbcjCzztList()
@ -108,8 +179,8 @@ const getDataById = (id) => {
xxcjSelectByid({ id }).then((res) => {
console.log(res);
lcList.value = res.czlcList || []
listQuery.value = res;
listQuery.value.fjdz=res.fjdz?res.fjdz?.split(","):[]
listQuery.value = res;
listQuery.value.fjdz = res.fjdz ? res.fjdz?.split(",") : []
});
};
@ -121,7 +192,9 @@ const submitForm = () => {
if (valid) {
const promes = {
...listQuery.value,
fjdz: listQuery.value.fjdz&&listQuery.value.fjdz.length > 0 ? listQuery.value.fjdz.join(',') : '',
fjdz: listQuery.value.fjdz && listQuery.value.fjdz.length > 0 ? listQuery.value.fjdz.map(item => {
return item.id
}).join(',') : '',
qbly: 0,
}
if (title.value == '新增') {
@ -152,7 +225,7 @@ const close = () => {
router.replace({ query });
}
fjdz.value = []
lcList.value=[]
lcList.value = []
listQuery.value = {};
dialogForm.value = false;
loading.value = false;
@ -166,6 +239,50 @@ const getqbcjPldb = (id) => {
.catch(() => {
})
}
//
const dataList = ref({
xb: [],
bc: [],
})
const getxxcjSelectListBc = (id, lx) => {
xxcjSelectListBc({ qbid: id, czlx: lx }).then(res => {
if (lx == '01') {
dataList.value.xb = res || []
} else {
dataList.value.bc = res || []
}
})
}
// 处理标签删除
const handleDeleteTag = (tag) => {
proxy.$confirm("确定要删除吗?", "警告", { type: "warning" }).then(() => {
xxcjDeletesBc({ ids: [tag.id] }).then(res => {
ElMessage({
message: '删除成功',
type: 'success',
showClose: true,
})
getxxcjSelectListBc(msgeDat.value.id, '01')
getxxcjSelectListBc(msgeDat.value.id, '02')
})
})
}
//
const pursueShow = ref(false)
const dataVals = ref([])
const processtitle = ref()
const openPursue = (title, data) => {
console.log(title, data);
pursueShow.value = true
processtitle.value = title
dataVals.value = data
}
defineExpose({ init });
</script>
@ -256,7 +373,7 @@ defineExpose({ init });
}
.action-icon {
font-size: 16px;
// font-size: 24px;
cursor: pointer;
transition: all 0.3s ease;
}
@ -362,7 +479,7 @@ defineExpose({ init });
}
.form-content {
display: flex;
// display: flex;
width: 80%;
}
@ -376,4 +493,144 @@ defineExpose({ init });
.timeline-full-width {
width: 100%;
}
/* 标签区域样式 */
.tags-section {
margin-top: 20px;
}
/* 标签标题样式 */
.tags-title {
font-size: 14px;
font-weight: 600;
color: #303133;
margin-bottom: 8px;
padding-left: 5px;
border-left: 3px solid #409EFF;
}
/* 标签容器样式 */
.tags-container {
padding: 12px;
background-color: #f5f7fa;
border-radius: 4px;
display: flex;
flex-wrap: wrap;
gap: 12px;
align-items: center;
}
/* 标签项目样式 */
.tag-item {
display: flex;
align-items: center;
gap: 6px;
padding: 6px 10px;
background-color: #ecf5ff;
border-radius: 4px;
border: 1px solid #d9ecff;
transition: all 0.3s ease;
}
/* 标签项目悬停效果 */
.tag-item:hover {
background-color: #e6f7ff;
border-color: #91d5ff;
box-shadow: 0 2px 8px rgba(0, 123, 255, 0.15);
}
/* 标签内容样式 */
.tag-content {
margin: 0;
font-size: 14px;
color: #303133;
font-weight: 500;
}
/* 标签操作按钮样式 */
.tag-actions {
display: flex;
// align-items: flex-start;
gap: 8px;
}
/* 操作图标样式 */
.action-icon {
font-size: 18px;
cursor: pointer;
transition: all 0.3s ease;
padding: 6px 8px;
border-radius: 4px;
display: inline-flex;
align-items: center;
justify-content: center;
}
/* 编辑图标样式 */
.edit-icon {
color: #409EFF;
background-color: #ecf5ff;
}
.edit-icon:hover {
color: #66B1FF;
background-color: #e6f7ff;
transform: scale(1.05);
box-shadow: 0 2px 4px rgba(64, 158, 255, 0.2);
}
/* 列表容器样式 */
.list-container {
padding: 12px;
background-color: #f5f7fa;
border-radius: 4px;
}
/* 列表项样式 */
.list-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px 12px;
background-color: #ffffff;
border-radius: 4px;
margin-bottom: 8px;
border: 1px solid #e4e7ed;
transition: all 0.3s ease;
}
/* 列表项悬停效果 */
.list-item:hover {
background-color: #f5f7fa;
border-color: #dcdfe6;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}
/* 列表内容样式 */
.list-content {
margin: 0;
font-size: 14px;
color: #303133;
font-weight: 500;
}
/* 删除图标样式 */
.delete-icon {
color: #F56C6C;
background-color: #fef0f0;
}
.delete-icon:hover {
color: #F78989;
background-color: #fde2e2;
transform: scale(1.05);
box-shadow: 0 2px 4px rgba(245, 108, 108, 0.2);
}
/* 无标签提示样式 */
.no-tags {
color: #909399;
font-size: 14px;
font-style: italic;
}
</style>

View File

@ -21,12 +21,12 @@
</el-icon>
<span style="vertical-align: middle">转线索</span>
</el-button>
<el-button type="primary" :disabled="ids.length === 0" @click="batchMark(ids)" v-if="qxkz.deptLevel == '01'">
<!-- <el-button type="primary" :disabled="ids.length === 0" @click="batchMark(ids)" v-if="qxkz.deptLevel == '01'">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">转合成</span>
</el-button>
</el-button> -->
<!-- <el-button type="primary" :disabled="ids.length === 0" @click="batchMark(ids)" v-if="qxkz.deptLevel == '01'">
<el-icon style="vertical-align: middle">
<CirclePlus />
@ -85,18 +85,19 @@
<!-- 只有上报状态才能回退 -->
<el-link size="small" type="primary" @click="rollbackNewspapers(row)">回退</el-link>
<!-- 只有采纳状态才能分组 -->
<el-link size="small" type="primary" @click="opneMsg(row)">分组</el-link>
<el-link size="small" type="primary" @click="opneMsg(row)">分组</el-link>
<!-- 所有状态都能进行转线索 -->
<el-link size="small" type="primary" @click="FollowUpOnLeads(row)" v-if="qxkz.depBool">转线索</el-link>
<el-link size="small" type="primary" @click="FollowUpOnLeads(row)" >转线索</el-link>
<!-- 所有状态都能进行转合成 -->
<el-link size="small" type="primary" @click="openFkDialogszl(row)" v-if="qxkz.depBool">转合成</el-link>
<el-link size="small" type="primary" @click="openFkDialogszl(row)">转合成</el-link>
<!-- 所有状态都能进行转会商 -->
<el-link size="small" type="primary" @click="addEdit('info', row)" v-if="qxkz.depBool">转会商</el-link>
<!-- 只有领导有肯定 -->
<el-link size="small" type="primary" @click="addEdit('info', row)">肯定</el-link>
<el-link size="small" type="primary" @click="affirm(row)" v-if="qxkz.roleCode">肯定</el-link>
<el-link size="small" type="primary" @click="FollowUpOnDept(row)">关注部门</el-link>
<!-- 市局能给所有数据创建标签 -->
<el-link size="small" type="primary" @click="addEdit('info', row)">创建</el-link>
<el-link size="small" type="primary" @click="openCustomTag(row)">创建</el-link>
<el-link size="small" type="danger" @click="delDictItem(row.id)">删除</el-link>
<el-link size="small" type="primary" @click="addEdit('edit', row)">修改</el-link>
<el-link size="small" type="primary" @click="addEdit('info', row)">详情</el-link>
@ -129,6 +130,8 @@
<MakeTag v-model="chooseRow" :dataList="dataList" :dict="{ D_BZ_CJLX, D_BZ_QBCZZT, D_GS_XS_LX, D_BZ_BQJB }"
@getList="getList" />
<Fszl v-model="fszlShow" path="/xxcj/sendFqzl" :itemData="dataList" />
<CustomTag v-model="customTagShow" :dataList="dataList" @getList="getList" :dict="{ D_XXCJ_BQLX }" />
<Configuration v-model="configurationShow" :dataList="dataList" @getList="getList" />
</template>
<script setup>
@ -139,20 +142,23 @@ import Searchs from "@/components/aboutTable/Search.vue";
import AddForm from "./components/addForm.vue";
import { useRouter, useRoute } from 'vue-router'
import { qbcjSelectQbsbPage, qbcjDeletes, qbcjCzzt, qbcjPlsb } from "@/api/Intelligence.js";
import { xxcjSelectXxsbPage, xxcjDeletes, xxcjXxzsx, xxcjUpdateCzlc } from '@/api/xxcj.js'
import { xxcjSelectXxsbPage, xxcjDeletes, xxcjXxzsx, xxcjUpdateCzlc, xxcjXxqd } from '@/api/xxcj.js'
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
import MakeTag from '../components/maketag.vue'
import ExportFile from './components/exportFile.vue'
import { ElMessageBox } from 'element-plus'
import { getItem } from '@//utils/storage.js'
import Fszl from '@/views/backOfficeSystem/HumanIntelligence/components/fszl.vue'
import CustomTag from '../components/customTag.vue'
import Configuration from '../components/configuration.vue'
const { proxy } = getCurrentInstance();
const { D_GS_XS_LY, D_BZ_SSZT, D_BZ_SF, D_GS_XS_LX, D_BZ_BQJB,
D_GS_XS_QTLX, D_GS_ZDQT_LB,
D_BZ_BMJB, D_BZ_CLPP, D_BZ_CLYS, D_BZ_CLLX, D_BZ_XZQHDM, D_BZ_QBCZZT, D_BZ_CJLX, D_BZ_LCZT } =
D_BZ_BMJB, D_BZ_CLPP, D_BZ_CLYS, D_BZ_CLLX, D_BZ_XZQHDM, D_BZ_QBCZZT, D_BZ_CJLX, D_BZ_LCZT,
D_XXCJ_BQLX } =
proxy.$dict("D_BZ_BMJB", "D_GS_XS_LY",
"D_BZ_SSZT", "D_BZ_SF", "D_GS_XS_LX", "D_GS_XS_QTLX",
"D_GS_ZDQT_LB", "D_BZ_CLPP", "D_BZ_CLYS", "D_BZ_CLLX", "D_BZ_XZQHDM", "D_BZ_QBCZZT", "D_BZ_CJLX", "D_BZ_BQJB", "D_BZ_LCZT"); //获取字典数据
"D_GS_ZDQT_LB", "D_BZ_CLPP", "D_BZ_CLYS", "D_BZ_CLLX", "D_BZ_XZQHDM", "D_BZ_QBCZZT", "D_BZ_CJLX", "D_BZ_BQJB", "D_BZ_LCZT", "D_XXCJ_BQLX"); //获取字典数据
const detailDiloag = ref();
const searchBox = ref(); //搜索框
const ids = ref([])
@ -168,11 +174,9 @@ const chooseData = (val) => {
const isShow = ref(false)
const searchConfiger = ref([
{ label: "情报标题", prop: 'qbmc', placeholder: "请输入情报标题", showType: "input" },
{ label: "姓名", prop: 'xssbr', placeholder: "请输入姓名", showType: "input" },
{ label: "录入时间", prop: 'lrkssj', placeholder: "请选择开始时间", showType: "datetimerange" },
{ label: "情报来源", prop: 'qbly', placeholder: "请选择情报来源", showType: "select", options: D_BZ_CJLX },
{ label: "情报处置状态", prop: 'czzt', placeholder: "请选择处置状态", showType: "select", options: D_BZ_QBCZZT },
{ label: "来源单位", prop: 'ssbmdm', placeholder: "请选择来源单位", showType: "department" },
{ label: "标签级别", prop: 'qbjb', placeholder: "请选择标签级别", showType: "select",options:D_BZ_BQJB},
{ label: "情报处置状态", prop: 'lczt', placeholder: "请选择处置状态", showType: "select", options: D_BZ_LCZT },
{ label: "线索编号", prop: 'xsBh', placeholder: "请输入线索编号", showType: "input" },
{ label: "关键字", prop: 'keyword', placeholder: "请输入关键字", showType: "input" },
]);
const pageData = reactive({
@ -195,14 +199,11 @@ const pageData = reactive({
{ label: "情报标题", prop: "qbmc" },
{ label: "情报来源", prop: "qbly", showSolt: true },
{ label: "流程状态", prop: "lczt", showSolt: true },
{ label: "消息状态", prop: "czzt", showSolt: true },
// { label: "消息状态", prop: "czzt", showSolt: true },
]
});
const queryFrom = ref({});
const chooseRow = ref(false)
const dataList = ref()
@ -283,13 +284,38 @@ const appearNewspapers = (item) => {
}
// 分组
const opneMsg = (item) => {
if (item.lczt=='04'&& qxkz.depBool) {
chooseRow.value = true
dataList.value = [item]
if (item.lczt == '04' && qxkz.depBool) {
chooseRow.value = true
dataList.value = [item]
} else {
proxy.$message.warning('请选择已采纳的消息!')
proxy.$message.warning('请选择已采纳的消息!')
}
}
// 打标签
const customTagShow = ref(false)
const openCustomTag = (item) => {
customTagShow.value = true
dataList.value = item
}
// 肯定
const affirm = (item) => {
proxy.$confirm("确定要肯定吗?", "警告", { type: "warning" }).then(() => {
xxcjXxqd({ ids: item.id }).then(res => {
proxy.$message({ type: "success", message: "肯定成功" });
getList();
})
})
}
// 配置关注部门
const configurationShow = ref(false)
const FollowUpOnDept = (item) => {
configurationShow.value = true
dataList.value = item
}
// 批量分组
// const batchMark = () => {
@ -397,11 +423,13 @@ const titleData = ref()
const qxkz = reactive({
deptBizType: '',
deptLevel: '',
roleCode: false,
depBool: false
});
onMounted(() => {
const { deptBizType, deptLevel } = getItem('deptId')[0]
const Jb = deptLevel[0] == '2' ? '01' : deptLevel[0] == '3' ? '02' : '03'
qxkz.roleCode = getItem('roleList').find(item => item.roleCode == 'JS_666666') != undefined
qxkz.deptBizType = deptBizType
qxkz.deptLevel = Jb
if (deptBizType == '23' && Jb == '01') {
@ -451,18 +479,38 @@ const tabHeightFn = () => {
};
// 转线索
const FollowUpOnLeads = (row) => {
proxy.$confirm("确定要转线索吗?", "警告", { type: "warning" }).then(() => {
if (!qxkz.depBool) {
proxy.$message({
message: '权限不足',
type: 'warning',
showClose: true,
})
return
} else {
proxy.$confirm("确定要转线索吗?", "警告", { type: "warning" }).then(() => {
xxcjXxzsx({ ids: Array.isArray(row) ? row.join(',') : row.id }).then(res => {
proxy.$message({ type: "success", message: "转线索成功" });
getList();
})
})
}
}
// 发送指令
const fszlShow = ref(false)
const openFkDialogszl = (row) => {
if (!qxkz.depBool) {
proxy.$message({
message: '权限不足',
type: 'warning',
showClose: true,
})
return
} else {
fszlShow.value = true
dataList.value = row
}
}
</script>

View File

@ -8,19 +8,12 @@
</el-icon>
<span style="vertical-align: middle">导出</span>
</el-button>
<el-button v-if="qxkz.deptLevel == '01'" type="primary" :disabled="ids.length === 0" @click="batchMark(ids)">
<!-- <el-button v-if="qxkz.deptLevel == '01'" type="primary" :disabled="ids.length === 0" @click="batchMark(ids)">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">批量打标</span>
</el-button>
<el-button type="primary" :disabled="ids.length === 0" @click="delDictItem(ids)">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">批量删除</span>
</el-button>
</el-button> -->
</PageTitle>
</div>
<!-- 搜索 -->
@ -33,23 +26,25 @@
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
@chooseData="chooseData">
<template #qblx="{ row }">
<template #qblx="{ row }">
<DictTag :tag="false" :value="row.qblx" :options="D_GS_XS_LX" />
</template>
<template #cjlx="{ row }">
<DictTag :tag="false" :value="row.cjLx" :options="D_BZ_CJLX" />
<template #qbly="{ row }">
<DictTag :tag="false" :value="row.qbly" :options="D_BZ_CJLX" />
</template>
<template #czzt="{ row }">
<DictTag :tag="false" :value="row.czzt" :options="D_BZ_QBCZZT" />
</template>
<template #lczt="{ row }">
<DictTag :tag="false" :value="row.lczt" :options="D_BZ_LCZT" />
</template>
<!-- 操作 -->
<template #controls="{ row }">
<el-link size="small" type="primary" @click="instQbcjZxs(row)">转线索</el-link>
<el-link size="small" type="primary" @click="FollowUpOnLeads(row)">转线索</el-link>
<el-link size="small" type="primary" @click="openFszl(row)">转合成</el-link>
<el-link size="small" type="primary" @click="openCheckProcess(row)">补充信息</el-link>
<el-link size="small" type="primary" @click="checkProcess(row)">查看流程</el-link>
<el-link size="small" type="primary" @click="openCheckProcessXb(row)"> 续报</el-link>
<el-link size="small" type="primary" @click="addEdit('info', row)">详情</el-link>
<el-link size="small" type="danger" @click="delDictItem(row.id)">删除</el-link>
</template>
</MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
@ -76,8 +71,7 @@
:dataModel="pageData.tableData" />
<MakeTag v-model="chooseRow" :dataList="dataList" :dict="{ D_BZ_CJLX, D_BZ_QBCZZT, D_GS_XS_LX, D_BZ_BQJB }"
@getList="getList" />
<CheckProcess v-model="checkProcessModel" :dataList="dataList" :dict="{ D_BZ_QBCZZT }" />
<pursueContent v-model="pursueShow" :dataList="dataList" />
<pursueContent v-model="pursueShow" :dataList="dataList" :title="processtitle" />
<Fszl v-model="fszlShow" :itemData="dataList"/>
<!-- <SemdFqzl ref="semdFqzlRef" :itemData="itemData" @handleClose="handleClose" identification="yj"
:tacitly="tacitly" /> -->
@ -94,19 +88,18 @@ import { qbcjSelectPage, qbcjDeletes } from "@/api/Intelligence.js";
import { reactive, ref, onMounted, getCurrentInstance, watch } from "vue";
import MakeTag from '@/views/backOfficeSystem/HumanIntelligence/components/maketag.vue'
import ExportFile from '@/views/backOfficeSystem/HumanIntelligence/infoCollection/components/exportFile.vue'
import CheckProcess from '@/views/backOfficeSystem/HumanIntelligence/components/checkProcess.vue'
import pursueContent from "../components/pursueContent.vue";
import Fszl from '../components/fszl.vue'
import { getItem } from '@//utils/storage.js'
import { qbcjZxs } from '@/api/qbcj.js'
import {xxcjSelectPage} from '@/api/xxcj.js'
import {xxcjSelectPage,xxcjXxzsx} from '@/api/xxcj.js'
const { proxy } = getCurrentInstance();
const { D_GS_XS_LY, D_BZ_SSZT, D_BZ_SF, D_GS_XS_LX, D_BZ_BQJB,
D_GS_XS_QTLX, D_GS_ZDQT_LB,
D_BZ_BMJB, D_BZ_CLPP, D_BZ_CLYS, D_BZ_CLLX, D_BZ_XZQHDM, D_BZ_QBCZZT, D_BZ_CJLX } =
D_BZ_BMJB, D_BZ_CLPP, D_BZ_CLYS, D_BZ_CLLX, D_BZ_XZQHDM, D_BZ_QBCZZT, D_BZ_CJLX ,D_BZ_LCZT} =
proxy.$dict("D_BZ_BMJB", "D_GS_XS_LY",
"D_BZ_SSZT", "D_BZ_SF", "D_GS_XS_LX", "D_GS_XS_QTLX",
"D_GS_ZDQT_LB", "D_BZ_CLPP", "D_BZ_CLYS", "D_BZ_CLLX", "D_BZ_XZQHDM", "D_BZ_QBCZZT", "D_BZ_CJLX", "D_BZ_BQJB"); //获取字典数据
"D_GS_ZDQT_LB", "D_BZ_CLPP", "D_BZ_CLYS", "D_BZ_CLLX", "D_BZ_XZQHDM", "D_BZ_QBCZZT", "D_BZ_CJLX", "D_BZ_BQJB","D_BZ_LCZT"); //获取字典数据
const detailDiloag = ref();
const searchBox = ref(); //搜索框
const ids = ref([])
@ -151,18 +144,10 @@ watch(() => D_BZ_BQJB, val => {
list.value = []
}
searchConfiger.value = [
{ label: "情报标题", prop: 'qbmc', placeholder: "请输入情报标题", showType: "input" },
{ label: "姓名", prop: 'xssbr', placeholder: "请输入姓名", showType: "input" },
{ label: "身份证号", prop: 'sfzh', placeholder: "请输入身份证号", showType: "input" },
// { label: "群体名称", prop: 'qtmc', placeholder: "请输入群体名称", showType: "input" },
// { label: "指向地点", prop: 'zxdz', placeholder: "请输入指向地点", showType: "input" },
// { label: "指向时间", prop: 'zxkssj', placeholder: "请选择开始时间", showType: "datetimerange" },
// { label: "录入时间", prop: 'lrkssj', placeholder: "请选择开始时间", showType: "datetimerange" },
// { label: "情报类型", prop: 'qblx', placeholder: "请选择情报类型", showType: "select", options: D_GS_XS_LX },
// { label: "情报来源", prop: 'cjLx', placeholder: "请选择情报来源", showType: "select", options: D_BZ_CJLX },
// { label: "情报处置状态", prop: 'czzt', placeholder: "请选择处置状态", showType: "select", options: D_BZ_QBCZZT },
// { label: "来源单位", prop: 'ssbmdm', placeholder: "请选择来源单位", showType: "department" },
// { label: "关键字", prop: 'keyword', placeholder: "请输入关键字", showType: "input" },
{ label: "情报标题", prop: 'qbmc', placeholder: "请输入情报标题", showType: "input" },
{ label: "情报处置状态", prop: 'lczt', placeholder: "请选择处置状态", showType: "select", options: D_BZ_LCZT },
{ label: "线索编号", prop: 'xsBh', placeholder: "请输入线索编号", showType: "input" },
{ label: "关键字", prop: 'keyword', placeholder: "请输入关键字", showType: "input" },
]
}, { deep: true, immediate: true })
const isShow = ref(false)
@ -181,15 +166,12 @@ const pageData = reactive({
},
controlsWidth: 240,
tableColumn: [
{ label: "上报人姓名", prop: "xssbr" },
{ label: "情报上报时间", prop: "sxsbsj" },
{ label: "情报编号", prop: "xsBh" },
{ label: "情报标题", prop: "qbmc" },
{ label: "情报类型", prop: "qblx", showSolt: true },
{ label: "情报来源", prop: "cjlx", showSolt: true },
{ label: "情报上报时间", prop: "sxsbsj" },
{ label: "指向地点", prop: "zxdz" },
{ label: "消息状态", prop: "czzt", showSolt: true },
{ label: "情报内容", prop: "qbnr" },
{ label: "情报来源", prop: "qbly", showSolt: true },
{ label: "流程状态", prop: "lczt", showSolt: true },
// { label: "消息状态", prop: "czzt", showSolt: true },
]
});
const queryFrom = ref({});
@ -244,16 +226,6 @@ const getList = () => {
pageData.tableConfiger.loading = false;
}).catch(() => { pageData.tableConfiger.loading = false; })
}
// 删除
const delDictItem = (id) => {
proxy.$confirm("确定要删除", "警告", { type: "warning" }).then(() => {
qbcjDeletes({ ids: Array.isArray(id) ? id : [id] }).then((res) => {
proxy.$message({ type: "success", message: "删除成功" });
getList();
}).catch(() => {
})
}).catch(() => { });
}
// 导出数据
const tableColumn = reactive([
{ label: "上报人姓名", prop: "xssbr" },
@ -290,15 +262,18 @@ const dologCancel = () => {
exportFileModel.value = true;
}
// 流程
const checkProcessModel = ref()
const checkProcess = (item) => {
checkProcessModel.value = true
dataList.value = item
}
// 追加
const pursueShow = ref(false)
const processtitle = ref('信息追加')
const openCheckProcess = (item) => {
processtitle.value = '信息追加'
pursueShow.value = true
dataList.value = item
}
// 续报
const openCheckProcessXb = (item) => {
processtitle.value = '信息续报'
pursueShow.value = true
dataList.value = item
}
@ -311,6 +286,26 @@ const instQbcjZxs = (item) => {
})
})
}
// 转线索
const FollowUpOnLeads = (row) => {
if (!qxkz.depBool) {
proxy.$message({
message: '权限不足',
type: 'warning',
showClose: true,
})
return
} else {
proxy.$confirm("确定要转线索吗?", "警告", { type: "warning" }).then(() => {
xxcjXxzsx({ ids: Array.isArray(row) ? row.join(',') : row.id }).then(res => {
proxy.$message({ type: "success", message: "转线索成功" });
getList();
})
})
}
}
// 转合成
const fszlShow = ref(false)
const openFszl = (item) => {

View File

@ -162,7 +162,7 @@ const getList = (val) => {
pageData.tableData = res.records.map(item => {
return {
...item,
yjtp: item.yjlx == '01' ? item.yjtp.replace(ORDIMG, IMGYM) : item.yjtp
yjTp: item.yjlx == '01' ? item.yjTpreplace(ORDIMG, IMGYM) : item.yjTp
}
}) || [];
pageData.total = res.total;