lcw
This commit is contained in:
@ -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>
|
||||
@ -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%' },
|
||||
]
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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%' },
|
||||
]
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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>
|
||||
@ -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>
|
||||
@ -153,12 +153,8 @@ const getDepValue = (e) => {
|
||||
const close = () => {
|
||||
listQuery.value = {}
|
||||
listQuery.value.attachmentPath = ''
|
||||
emit('update:modelValue', false)
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
getsendFqzl,
|
||||
close
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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()
|
||||
})
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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) => {
|
||||
|
||||
@ -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;
|
||||
|
||||
Reference in New Issue
Block a user