This commit is contained in:
2025-07-14 16:12:14 +08:00
parent bfc6504e2d
commit f6d433fd65
4 changed files with 250 additions and 92 deletions

View File

@ -42,20 +42,13 @@
<el-tag type="success" v-for="(it,idx) in row.bqList" :key="idx">{{ it.bqMc }}</el-tag > <el-tag type="success" v-for="(it,idx) in row.bqList" :key="idx">{{ it.bqMc }}</el-tag >
</div> </div>
</template> </template>
<!-- 操作 -->
<template #controls="{ row,index }">
<el-link size="small" type="success" @click="addEdit('detail', row,index)">详情</el-link>
</template>
</MyTable> </MyTable>
</div> </div>
<!-- 人员 -->
<AddPeo ref="showAdd" :dic="props.dic" ></AddPeo>
</div> </div>
</template> </template>
<script setup> <script setup>
import * as MOSTY from "@/components/MyComponents/index"; import * as MOSTY from "@/components/MyComponents/index";
import AddPeo from './addPeo.vue'
import MyTable from "@/components/aboutTable/MyTable.vue"; import MyTable from "@/components/aboutTable/MyTable.vue";
import FormMessage from "@/components/aboutTable/FormMessage.vue"; import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js"; import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js";
@ -99,7 +92,8 @@ const pageForm = reactive({
tableConfiger: { tableConfiger: {
rowHieght: 61, rowHieght: 61,
showSelectType: "checkBox", showSelectType: "checkBox",
loading: false loading: false,
haveControls: false,
}, },
controlsWidth: 220, controlsWidth: 220,
tableColumn: [ tableColumn: [
@ -111,7 +105,6 @@ const pageForm = reactive({
{ label: "标签", prop: "bqList",showSolt:true } { label: "标签", prop: "bqList",showSolt:true }
] ]
}); });
const showAdd = ref()
onMounted(()=>{ onMounted(()=>{
tabHeightFn() tabHeightFn()
}) })
@ -134,11 +127,6 @@ const getDataById = (id) => {
}); });
}; };
// 打开弹窗
const addEdit = (type,row,index) =>{
showAdd.value.init(type,row,index)
}
// 关闭 // 关闭
const close = () => { const close = () => {
fjdz.value = [] fjdz.value = []

View File

@ -1,78 +0,0 @@
<template>
<el-dialog v-model="showDialog" :destroy-on-close="true" title="人员详情" @close="close" :close-on-click-modal="false">
<FormMessage v-model="listQuery" :formList="formData" labelWidth="120px" ref="elform" :rules="rules">
<template #bqList>
<div class="marks pointer" >
<span style="color: rgb(175 178 184);padding-left: 10px;" v-if="!listQuery.bqList || listQuery.bqList.length == 0 ">请选择标签</span>
<span v-else >
<el-tag type="success" v-for="(it,idx) in listQuery.bqList" :key="idx">{{ it.bqMc }}</el-tag >
</span>
</div>
</template>
</FormMessage>
<template #footer>
<div class="flex just-center">
<el-button @click="close">取消</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup>
import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { reactive, ref } from 'vue';
const props = defineProps({
dic:{
type:Object,
default:{}
},
})
const roleIds = ref([])
const elform = ref()
const showDialog = ref(false)
const emit = defineEmits(['change'])
const listQuery = ref({})
const formData = ref([
{ label: "姓名", prop: "xm", type: "input" ,width:'48%'},
{ label: "性别", prop: "xb", type: "select",options:props.dic.D_BZ_XB ,width:'48%'},
{ label: "身份证号", prop: "sfzh", type: "input" ,width:'48%'},
{ label: "户籍地", prop: "hjdz", type: "input",width:'48%' },
{ label: "户籍地派出所", prop: "hjdpcsdm", type: "department" ,width:'48%'},
{ label: "标签", prop: "bqList", type: "slot",width:'100%' },
{ label: "是否挑头人", prop: "sfttr", type: "select",options:props.dic.D_BZ_SF ,width:'48%'},
{ label: "是否响应人", prop: "sfxyr", type: "select" ,options:props.dic.D_BZ_SF,width:'48%' },
{ label: "所属群体", prop: "ssqt", type: "input" ,width:'48%'},
{ label: "微信号", prop: "wx", type: "input" ,width:'48%'},
{ label: "QQ", prop: "qq", type: "input" ,width:'48%'},
])
const rules = reactive({
xm: [{ required: true, message: "请输入姓名", trigger: "blur" }],
xb: [{ required: true, message: "请选择性别", trigger: "change" }],
sfzh: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
hjd: [{ required: true, message: "请输入户籍地", trigger: "blur" }],
})
const title = ref('')
const init = (type,row,index) =>{
title.value = type == 'add' ? '新增' :'编辑';
showDialog.value = true;
if(row) listQuery.value = {...row};
}
const close = () =>{
elform.value.reset();
showDialog.value = false;
}
defineExpose({init})
</script>
<style lang="scss" scoped>
.marks{
width: 100%;
width: 100%;
min-height: 32px;
border: 1px solid #e9e9e9;
border-radius: 4px;
}
</style>

View File

@ -0,0 +1,240 @@
<template>
<div class="dialog" v-if="dialogForm">
<div class="head_box">
<span class="title">线索合并</span>
<el-button @click="close">关闭</el-button>
</div>
<div class="form_cnt">
<!-- 上部 -->
<div class="top hh48">
<div class="flex nowrap align-center">
<span>所属部门</span><MOSTY.Department width="300px" clearable v-model="listQuery.ssbmdm" />
<div class="ml20 mr10">数据周期<el-button @click="chooseTime(it)" v-for="it in btns" :key="it" :type="active == it ? 'primary':''" size="small">{{ it }}</el-button></div>
<el-date-picker v-model="listQuery.times" type="daterange" range-separator="To" value-format="YYYY-MM-DD" start-placeholder="选择开始时间" end-placeholder="选择结束时间"/>
<el-button class="ml10 mr20" type="primary" size="small">查询</el-button>
<el-button type="primary" size="small">重置</el-button>
</div>
<h3>串并线索</h3>
<MyTable
:tableData="pageForm.tableData_hbh"
:tableColumn="pageForm.tableColumn"
:tableHeight="pageForm.tableHeight1"
:key="pageForm.keyCount"
:tableConfiger="pageForm.tableConfiger"
:controlsWidth="pageForm.controlsWidth"
>
<template #xlLx="{row}">
<DictTag :tag="false" :value="row.xlLx" :options="props.dic.D_GS_XS_LX" />
</template>
<template #qbLy="{row}">
<DictTag :tag="false" :value="row.qbLy" :options="props.dic.D_GS_XS_LY" />
</template>
<template #czzt="{row}">
<DictTag :tag="false" :value="row.czzt" :options="props.dic.D_GS_XS_CZZT" />
</template>
<template #shzt="{row}">
<DictTag :tag="false" :value="row.shzt" :options="props.dic.D_BZ_XSSHZT" />
</template>
<template #qtlx="{row}">
<DictTag :tag="false" :value="row.qtlx" :options="props.dic.D_GS_XS_QTLX" />
</template>
<template #controls="{ row }">
<el-link size="small" type="primary" @click="addEdit('detail', row)">详情</el-link>
</template>
</MyTable>
<div class="flex just-end">
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageForm.tableHeight1" :pageConfiger="{ ...config }" />
</div>
</div>
<!-- 下部 -->
<div class="bottom hh48">
<h3>来源线索</h3>
<div class="flex align-center mb10">
<span>线索标题</span>
<el-input style="width:300px" placeholder="请输入标题" v-model="keyWords"></el-input>
<el-button class="ml10 mr20" type="primary" size="small">查询</el-button>
<el-button class="mr10" type="primary" size="small" @click="handleZdhb">自动合并</el-button>
<el-button type="primary" size="small">手动合并</el-button>
</div>
<MyTable
:tableData="pageForm.tableData_hbq"
:tableColumn="pageForm.tableColumn"
:tableHeight="pageForm.tableHeight"
:key="pageForm.keyCount"
:tableConfiger="pageForm.tableConfiger"
:controlsWidth="pageForm.controlsWidth"
>
<template #xlLx="{row}">
<DictTag :tag="false" :value="row.xlLx" :options="props.dic.D_GS_XS_LX" />
</template>
<template #qbLy="{row}">
<DictTag :tag="false" :value="row.qbLy" :options="props.dic.D_GS_XS_LY" />
</template>
<template #czzt="{row}">
<DictTag :tag="false" :value="row.czzt" :options="props.dic.D_GS_XS_CZZT" />
</template>
<template #shzt="{row}">
<DictTag :tag="false" :value="row.shzt" :options="props.dic.D_BZ_XSSHZT" />
</template>
<template #qtlx="{row}">
<DictTag :tag="false" :value="row.qtlx" :options="props.dic.D_GS_XS_QTLX" />
</template>
<template #controls="{ row }">
<el-link size="small" type="primary" @click="addEdit('detail', row)">详情</el-link>
</template>
</MyTable>
</div>
</div>
</div>
</template>
<script setup>
import { timeValidate, timeSlotChange } from "@/utils/tools.js";
import * as MOSTY from "@/components/MyComponents/index";
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
import { ref, defineExpose, reactive, onMounted, defineEmits, getCurrentInstance, nextTick } from "vue";
const emit = defineEmits(["change"]);
const props = defineProps({
dic:Object
})
const active = ref('本周')
const btns = ref(['本周','本月','本季度','本年'])
const { proxy } = getCurrentInstance();
const dialogForm = ref(true); //弹窗
const listQuery = ref({
times:timeSlotChange('本周')
}); //表单
const keyWords = ref('')
const loading = ref(false);
const pageForm = reactive({
tableData_hbh: [],
tableData_hbq: [],
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "checkBox",
loading: false,
},
controlsWidth: 100,
tableColumn: [
{ label: "线索编号", prop: "xsBh" },
{ label: "线索名称", prop: "xsMc" },
{ label: "线索来源", prop: "qbLy",showSolt:true },
{ label: "开始时间", prop: "zxkssj" },
{ label: "截至时间", prop: "zxjssj" },
{ label: "指向地点", prop: "zxdz" },
{ label: "线索内容", prop: "xsNr" },
{ label: "群体类型", prop: "qtlx",showSolt:true },
{ label: "群体名称", prop: "qtmc" },
{ label: "上报单位", prop: "ssbm" },
{ label: "上报时间", prop: "sxsbsj" },
{ label: "涉及人数", prop: "sjrs" },
{ label: "附件", prop: "fjdz",showSolt: true},
{ label: "处置状态", prop: "czzt",showSolt: true},
{ label: "状态", prop: "shzt",showSolt: true },
]
});
const config = reactive({
pageCurrent:1,
pageSize:10,
total:0
})
onMounted(()=>{
tabHeightFn();
gethb_before()
gethb_after()
})
// 初始化数据
const init = (type, row) => {
dialogForm.value = true;
tabHeightFn()
};
// 获取合并前的数据
const gethb_before = () =>{
qcckGet({xsMc:keyWords.value},'/mosty-gsxt/qbcj/getXshbFxcx').then(res=>{
pageForm.tableData_hbq = res || [];
})
}
// 自动合并
const handleZdhb = () =>{
proxy.$confirm("是否确定要合并?", "警告", {type: "warning"}).then(() => {
qcckPost({xsMc:keyWords.value},'/mosty-gsxt/qbcj/getXshbZdhb').then(res=>{
proxy.$message({ type: "success", message: "合并成功" });
gethb_before();
gethb_after();
})
})
}
// 获取合并前的数据
const gethb_after = () =>{
let params = { sfhb:1,...config }
qcckGet(params,'/mosty-gsxt/qbcj/selectPage').then(res=>{
console.log(res);
})
}
// 分页
const changeNo = (val) => {
config.pageCurrent = val;
gethb_after();
};
// 分页
const changeSize = (val) => {
config.pageSize = val;
gethb_after();
};
// 选择时间
const chooseTime = (val) =>{
active.value = val;
switch(val){
case '本周':
listQuery.value.times = timeSlotChange('本周')
break;
case '本月':
listQuery.value.times = timeSlotChange('本月')
break;
case '本季度':
listQuery.value.times = timeSlotChange('本季度')
break;
case '本年':
listQuery.value.times = timeSlotChange('本年')
break;
}
}
// 关闭
const close = () => {
dialogForm.value = false;
loading.value = false;
};
// 表格高度计算
const tabHeightFn = () => {
pageForm.tableHeight = window.innerHeight - 660;
pageForm.tableHeight1 = window.innerHeight - 695;
window.onresize = function () {
tabHeightFn();
};
};
defineExpose({ init });
</script>
<style lang="scss" scoped>
v-deep .el-date-editor .el-range-separator{
color: #333;
}
::v-deep .el-date-editor .el-range-separator {
color: #333;
}
</style>

View File

@ -2,6 +2,7 @@
<div> <div>
<div class="titleBox"> <div class="titleBox">
<PageTitle title="人力情报信息采集流转"> <PageTitle title="人力情报信息采集流转">
<el-button type="primary" @click="handleHB">线索串联</el-button>
<el-button type="primary" @click="addEdit"> <el-button type="primary" @click="addEdit">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon> <el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">导出</span> <span style="vertical-align: middle">导出</span>
@ -55,6 +56,7 @@
<!-- 新增 --> <!-- 新增 -->
<AddForm ref="detailDiloag" v-if="isShow" :dic="{D_BZ_SF,D_BZ_XB,D_GS_XS_LY,D_BZ_SSZT,D_GS_XS_LX ,D_GS_XS_QTLX}" /> <AddForm ref="detailDiloag" v-if="isShow" :dic="{D_BZ_SF,D_BZ_XB,D_GS_XS_LY,D_BZ_SSZT,D_GS_XS_LX ,D_GS_XS_QTLX}" />
<ZlForm ref="zlDialog" v-if="isShow" :dic="{D_GS_XS_ZLLX,D_GS_ZDQT_FXDJ}"></ZlForm> <ZlForm ref="zlDialog" v-if="isShow" :dic="{D_GS_XS_ZLLX,D_GS_ZDQT_FXDJ}"></ZlForm>
<HbForm ref="isShowhB" :dic="{D_GS_XS_LX,D_GS_XS_LY,D_GS_XS_CZZT,D_BZ_XSSHZT,D_GS_XS_QTLX}"></HbForm>
</div> </div>
</template> </template>
@ -65,6 +67,7 @@ import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue"; import Search from "@/components/aboutTable/Search.vue";
import AddForm from "./components/addForm.vue"; import AddForm from "./components/addForm.vue";
import ZlForm from "./components/zlForm.vue"; import ZlForm from "./components/zlForm.vue";
import HbForm from "./components/hbForm.vue";
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js"; import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue"; import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
@ -73,6 +76,7 @@ const detailDiloag = ref();
const searchBox = ref(); //搜索框 const searchBox = ref(); //搜索框
const isShow = ref(false) const isShow = ref(false)
const zlDialog = ref(false) const zlDialog = ref(false)
const isShowhB = ref()
const searchConfiger = ref([ const searchConfiger = ref([
{ label: "线索名称", prop: 'xsMc', placeholder: "请输入线索名称", showType: "input" }, { label: "线索名称", prop: 'xsMc', placeholder: "请输入线索名称", showType: "input" },
{ label: "内容关键字", prop: 'xsNr', placeholder: "请输入语义关键字", showType: "input" }, { label: "内容关键字", prop: 'xsNr', placeholder: "请输入语义关键字", showType: "input" },
@ -165,6 +169,10 @@ const addEdit = (type, row) => {
},500) },500)
}; };
const handleHB = () =>{
isShowhB.value.init()
}
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;