This commit is contained in:
2025-07-20 19:20:12 +08:00
parent 83d732d805
commit b8f943ca79
7 changed files with 104 additions and 158 deletions

View File

@ -74,7 +74,7 @@
<!-- checkbox -->
<template v-else-if="item.showType === 'department'">
<MOSTY.Department clearable v-model="item.ssbmdm" />
<MOSTY.Department clearable v-model="searchObj[item.prop]" />
</template>
<!-- checkbox -->
<template v-else-if="item.showType === 'checkbox'">
@ -125,7 +125,6 @@
<!-- 级联选择 -->
<el-cascader
v-else-if="item.showType === 'cascader'"
@change="changeca"
v-model="searchObj[item.prop]"
:props="item.props"
:show-all-levels="item.showAllLevels"
@ -151,11 +150,8 @@
import {
ref,
reactive,
watch,
watchEffect,
nextTick,
getCurrentInstance,
toRefs
} from "vue";
import * as MOSTY from "@/components/MyComponents/index";
const { proxy } = getCurrentInstance();
@ -183,6 +179,12 @@ const props = defineProps({
defaultVal: "",
label: "输入"
},
{
showType: "department",
prop: "deptKey",
defaultVal: "",
label: "输入"
},
{
showType: "daterange",
prop: "daterangeKey",
@ -215,9 +217,6 @@ const props = defineProps({
{
showType: "radio",
defaultVal: ""
// prop: "cascaderKey",
// label: "级联选择",
// checkStrictly: false //点击任意选中
},
{
showType: "defaultTime",
@ -237,16 +236,9 @@ const props = defineProps({
}
});
let loadingPage = ref(false);
const isShowDate = ref(false);
const emit = defineEmits(["submit", "reset"]);
let searchObj = reactive({});
const timeConfig = reactive({
//时间字典筛选和自定义日期组件相关数据
typeValue: "01", //时间字典类型默认
timeArry: [] //时间筛选自定义默认值
});
//全所或自定义选择按钮
const slectType = ref("qs");
// select 的一些默认配置
const selectDefault = {
clearable: true, // 是否可以清空
@ -362,53 +354,6 @@ const dateShortcuts = [
}
}
];
//自定义时间选择 item 配置项 value 选中的值
const screenSelect = (item, value) => {
if (value == "08") {
searchObj[item.prop] = value;
isShowDate.value = true;
} else {
timeConfig.typeValue = value;
searchObj[item.prop] = value;
submit();
}
};
//自定义时间确定时间
const chooseDateOk = (item) => {
timeConfig.typeValue = "08";
if (timeConfig.timeArry && timeConfig.timeArry.length) {
//选择了时间
searchObj[item.propStart] = timeConfig.timeArry[0];
searchObj[item.propEnd] = timeConfig.timeArry[1];
} else {
//清空了时间
searchObj[item.prop] = "01";
timeConfig.typeValue = "01";
}
isShowDate.value = false;
submit();
};
//全所-部门选择回调
const organizatioHland = (val) => {
let item = getArr.find((item) => item.showType == "qsOrZdy");
searchObj[item.propBm] = val?.data?.orgCode || "";
if (!val || val == "") {
//清空了部门选择后清空责任区ID
slectType.value = "qs";
delete searchObj[item.propZrq];
}
submit();
};
//全所-责任区回调
const zrqHland = (val) => {
let item = getArr.find((item) => item.showType == "qsOrZdy");
searchObj[item.propZrq] = val || ""; //责任区选择
submit();
};
//自定义时间取消事件
const popoverCancel = (item) => {
isShowDate.value = false;
};
// 设置不可选的日期
const disabledDate = (time) => {
return time.getTime() > Date.now();
@ -513,10 +458,6 @@ const cascaderLazyProps = reactive({
resolve(options);
}
});
// 级联框选择
function changeca(v) {
console.log("vvvv", v);
}
// 获取到传过来的参数
let getArr = reactive([]);
const submit = () => {
@ -529,25 +470,22 @@ const reset = () => {
emit("submit", searchObj);
emit("reset", false);
};
let dataOptions = reactive([]); //时间字典筛选
watchEffect(() => {
loadingPage.value = true;
getArr = JSON.parse(JSON.stringify(props.searchArr));
getArr = getArr.map((item) => {
let arr = JSON.parse(JSON.stringify(props.searchArr));
getArr = arr.map((item) => {
switch (item.showType) {
case "select":
item = { ...selectDefault, ...item };
item.options = reactive(item.options);
getOptions[item.prop] = item.options;
break;
case "input":
item = { ...inputDefault, ...item };
case "input":
item = { ...inputDefault, ...item };
break;
case "daterange":
item = { ...daterangeDefault, ...item };
if (item.defaultShortcuts) {
item.shortcuts = shortcuts;
}
if (item.defaultShortcuts) item.shortcuts = shortcuts;
break;
case "date":
item = { ...defaultDate, ...item };

View File

@ -3,23 +3,12 @@
<div class="head_box">
<span class="title">社会信息人员建设管理{{ title }} </span>
<div>
<el-button
type="primary"
size="small"
:loading="loading"
@click="submit"
>保存</el-button
>
<el-button type="primary" size="small" :loading="loading" @click="submit">保存</el-button>
<el-button size="small" @click="close">关闭</el-button>
</div>
</div>
<div class="form_cnt">
<FormMessage
v-model="listQuery"
:formList="formData"
ref="elform"
:rules="rules"
></FormMessage>
<FormMessage v-model="listQuery" :formList="formData" ref="elform" :rules="rules"></FormMessage>
</div>
</div>
</template>
@ -91,12 +80,12 @@ const validateIdentity = () => {
callback(new Error("身份证地区非法"));
// 出生日期验证
var sBirthday = (
value.substr(6, 4) +
"-" +
Number(value.substr(10, 2)) +
"-" +
Number(value.substr(12, 2))
).replace(/-/g, "-"),
value.substr(6, 4) +
"-" +
Number(value.substr(10, 2)) +
"-" +
Number(value.substr(12, 2))
).replace(/-/g, "-"),
d = new Date(sBirthday);
let yyyy = d.getFullYear();
let mm = d.getMonth() + 1;
@ -166,7 +155,7 @@ const rules = reactive({
],
...rule.phoneRule({ require: true, validator: true }, "ryLxdh") // 是否必填 是否进行校验 可以传第二个参数
});
onMounted(() => {});
onMounted(() => { });
// 初始化数据
const init = (type, row) => {
@ -195,7 +184,7 @@ const submit = () => {
emit("updateDate");
close();
})
.catch(() => {});
.catch(() => { });
});
};

View File

@ -3,68 +3,39 @@
<div class="titleBox">
<PageTitle title="社会信息人员建设管理">
<el-button type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
<el-button type="primary" @click="importData">
<el-icon style="vertical-align: middle"><Upload /></el-icon>
<span style="vertical-align: middle">导入</span>
</el-button>
<el-button type="primary" @click="exportData">
<el-icon style="vertical-align: middle"><Download /></el-icon>
<span style="vertical-align: middle">导出</span>
</el-button>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search
:searchArr="searchConfiger"
@submit="onSearch"
:key="pageData.keyCount"
/>
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseData"
>
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
@chooseData="chooseData">
<template #ryMz="{ row }">
<DictTag :tag="false" :value="row.ryMz" :options="D_BZ_MZ" />
</template>
<!-- 操作 -->
<template #controls="{ row }">
<el-link size="small" type="success" @click="addEdit('edit', row)"
>编辑</el-link
>
<el-link size="small" type="danger" @click="deleteRow(row.id)"
>删除</el-link
>
<el-link size="small" type="success" @click="addEdit('edit', row)">编辑</el-link>
<el-link size="small" type="danger" @click="deleteRow(row.id)">删除</el-link>
</template>
</MyTable>
<Pages
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"
></Pages>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"></Pages>
</div>
<!-- 详情 -->
<DetailForm
v-if="show"
@updateDate="getList"
ref="detailDiloag"
:dic="{ D_BZ_WHCD, D_BZ_MZ, D_BZ_XB, D_BZ_ZZMM }"
/>
<DetailForm v-if="show" @updateDate="getList" ref="detailDiloag"
:dic="{ D_BZ_WHCD, D_BZ_MZ, D_BZ_XB, D_BZ_ZZMM }" />
</div>
</template>
@ -76,7 +47,6 @@ import Search from "@/components/aboutTable/Search.vue";
import DetailForm from "./components/addForm.vue";
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
import { CirclePlus, Upload, Download } from "@element-plus/icons-vue";
import { ElMessage } from "element-plus";
const { proxy } = getCurrentInstance();
const { D_BZ_WHCD, D_BZ_MZ, D_BZ_XB, D_BZ_ZZMM } = proxy.$dict(
@ -111,7 +81,7 @@ const pageData = reactive({
pageSize: 20,
pageCurrent: 1
},
controlsWidth: 200,
controlsWidth: 120,
tableColumn: [
{ label: "姓名", prop: "ryXm" },
{ label: "联系电话", prop: "ryLxdh" },
@ -169,7 +139,7 @@ const deleteRow = (id) => {
getList();
});
})
.catch(() => {});
.catch(() => { });
};
// 详情

View File

@ -75,6 +75,7 @@ const dialogForm = ref(false); //弹窗
const rules = reactive({
bsDwDm: [{ required: true, message: "请选择报送单位", trigger: "change" }],
ssbmdm: [{ required: true, message: "请选择所属部门", trigger: "change" }],
rwBt: [{ required: true, message: "请输入任务标题", trigger: "blur" }],
rwBh: [{ required: true, message: "请输入任务编号", trigger: "blur" }],
rwLy: [{ required: true, message: "请选择任务来源", trigger: "change" }],
@ -84,7 +85,7 @@ const rules = reactive({
rwNr: [{ required: true, message: "请输入任务内容", trigger: "blur" }],
});
const formData = ref([
{ label: "所属单位", prop: "ssbmdm",depMc:'ssbmmc', type: "department" },
{ label: "所属部门", prop: "ssbmdm",depMc:'ssbmmc', type: "department" },
{ label: "报送单位", prop: "bsDwDm",depMc:'bsDwMc', type: "department" },
{ label: "任务标题", prop: "rwBt", type: "input" },
{ label: "任务编号", prop: "rwBh", type: "input" },
@ -109,6 +110,7 @@ const init = (type, row) => {
if (row) {
qcckGet({}, "/mosty-gsxt/tbGsxtRlqbRwdd/selectVoById/" + row.id).then((res) => {
res.xsList = res.xsList || [];
roleIdsxs.value = res.xsList.map(v=>v.id);
listQuery.value = res;
});
}
@ -141,8 +143,8 @@ const choosed = (data) => {
// 关闭
const close = () => {
listQuery.value = {};
dialogForm.value = false;
loading.value = false;
dialogForm.value = false;
};
// 删除
const delDictItem = (id) => {

View File

@ -12,14 +12,7 @@
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
<!-- 所属单位 -->
<template #ssbmdm>
<el-select v-model="listQuery.ssbmdm" placeholder="请选择所属单位" style="width: 240px">
<el-option v-for="item in deptList" :key="item.value" :label="item.label" :value="item.value.toString()" />
</el-select>
</template>
</Search>
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"> </Search>
</div>
<!-- 表格 -->
<div class="tabBox">

View File

@ -2,11 +2,8 @@
<div>
<div class="titleBox">
<PageTitle title="人力情报信息采集流转">
<el-button type="primary">情报研判分析</el-button>
<el-button type="primary" @click="handleHB">线索串联</el-button>
<el-button type="primary" @click="addEdit">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">导出</span>
</el-button>
</PageTitle>
</div>
<!-- 搜索 -->
@ -60,10 +57,14 @@
<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>
<HbForm ref="isShowhB" :dic="{D_GS_XS_LX,D_GS_XS_LY,D_GS_XS_CZZT,D_BZ_XSSHZT,D_GS_XS_QTLX}"></HbForm>
<teleport to="#app">
<!-- <Qbypfx></Qbypfx> -->
</teleport>
</div>
</template>
<script setup>
import Qbypfx from './qbypfx/index.vue'
import PageTitle from "@/components/aboutTable/PageTitle.vue";
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
@ -106,7 +107,7 @@ const pageData = reactive({
pageSize: 20,
pageCurrent: 1
},
controlsWidth: 220,
controlsWidth: 150,
tableColumn: [
{ label: "线索编号", prop: "xsBh" },
{ label: "线索名称", prop: "xsMc" },

View File

@ -0,0 +1,53 @@
<template>
<div class="container">
<div class="header flex just-between">
<span>情报研判分析</span>
<span class="pointer"><el-icon><Close /></el-icon></span>
</div>
<div class="contant">
<div class="contant-left aside">
<div></div>
</div>
<div class="contant-right aside"></div>
</div>
</div>
</template>
<script setup>
</script>
<style lang="scss" scoped>
.container{
width: 100%;
height: 100%;
background: #fff;
color: #333;
padding: 10px;
box-sizing: border-box;
.header{
height: 60px;
font-size: 30px;
font-weight: 600;
}
.contant{
position: relative;
height: calc(100% - 65px);
overflow: hidden;
overflow-y: auto;
.aside{
position: absolute;
width: 400px;
height: 100%;
top: 0;
background: red;
}
.contant-left{
left: 0;
}
.contant-right{
right: 0;
}
}
}
</style>