feat: 1.对接全域布控下菜单的增删查改功能,以及用户操作流程优化。2.对接人力情报采集系统采集流转列表,搜索,新增接口

This commit is contained in:
jy
2025-06-04 17:27:57 +08:00
parent 2b3da38702
commit d8bee57f6b
44 changed files with 8479 additions and 594 deletions

View File

@ -55,19 +55,26 @@ const init = async (type, row) => {
approvalInfoRef.value?.resetForm?.();
}
};
const cleanObj = (obj) => {
if (!obj) return {};
return Object.fromEntries(
Object.entries(obj).filter(([_, v]) => v !== null && v !== undefined)
);
};
const submit = async () => {
try {
// 1. 分别获取各子组件数据
const controlInfoData = controlInfoRef.value?.getFormData?.();
const controlAreaData = controlAreaRef.value?.getFormData?.();
const approvalInfoData = approvalInfoRef.value?.getFormData?.();
// 2. 合并数据
const formData = {
...controlInfoData.formData,
...controlAreaData.formData,
...approvalInfoData.formData
...cleanObj(controlInfoData?.formData),
...cleanObj(controlAreaData?.formData),
...cleanObj(approvalInfoData?.formData)
};
console.log("合并数据:", formData);
// 根据是否有 id 判断是新增还是编辑
const url = formData.id
? "/mosty-gsxt/tbGsxtBk/update" // 编辑接口

View File

@ -41,7 +41,11 @@
>
<!-- 自定义插槽人员标签 -->
<template #czJsdwdm>
<el-select v-model="listQuery.czJsdwdm" placeholder="请选择处置接收单位" style="width: 240px">
<el-select
v-model="listQuery.czJsdwdm"
placeholder="请选择处置接收单位"
style="width: 240px"
>
<el-option
v-for="item in deptList"
:key="item.value"
@ -73,6 +77,9 @@
{{ item.fqr }}
</div>
<div class="description-item">{{ item.fqbm }}</div>
<div class="step-description" v-if="item.description">
{{ item.description }}
</div>
</div>
</div>
</div>
@ -119,12 +126,12 @@ const formData = ref([
type: "select",
options: D_GS_BK_CZJSDWLX
},
{
label: "提交方式",
prop: "bkTjfs",
type: "radio",
options: D_GS_BK_TJFS
},
// {
// label: "提交方式",
// prop: "bkTjfs",
// type: "radio",
// options: D_GS_BK_TJFS
// },
{
label: "签收时间",
prop: "bkSjQs",
@ -133,13 +140,27 @@ const formData = ref([
]);
const rules = reactive({
bkBt: [{ required: true, message: "请选择处置接收单位", trigger: "blur" }],
bkObj: [{ required: true, message: "请选择提交方式", trigger: "blur" }],
// bkObj: [{ required: true, message: "请选择提交方式", trigger: "blur" }],
bkSjQs: [{ required: true, message: "请选择签收时间", trigger: "change" }]
});
const step = ref([
{ fqr: "发起人", fqbm: "发起部门", title: "发起申请", default: true },
{ fqr: "发起人", fqbm: "发起部门", title: "审核确认", default: false },
{ fqr: "发起人", fqbm: "发起部门", title: "审批确认", default: false }
{
fqr: "发起人",
fqbm: "发起部门",
title: "审核确认",
default: false,
status: "", // 动态设置状态
description: "" // 动态设置描述(如不通过原因)
},
{
fqr: "发起人",
fqbm: "发起部门",
title: "审批确认",
default: false,
status: "", // 动态设置状态
description: "" // 动态设置描述(如不通过原因)
}
]);
onMounted(() => {
@ -214,14 +235,46 @@ const setFormData = (data) => {
{
fqr: data.bkshrXm || "系统管理", // 审核人姓名
fqbm: data.bkshrSsbmmc || "西藏", // 审核部门
title: "审核确认"
title: "审核确认",
status: "", // 动态设置状态
description: "" // 动态设置描述(如不通过原因)
},
{
fqr: data.bksprXm || "测试", // 审批人姓名
fqbm: data.bksprSsbmmc || "西藏", // 审批部门
title: "审批确认"
title: "审批确认",
status: "", // 动态设置状态
description: "" // 动态设置描述(如不通过原因)
}
];
// 根据 bkZt 的值设置不同的状态
switch (data.bkZt) {
case "02": // 审核中
step.value[1].status = "process";
step.value[1].description = "审核中";
break;
case "03": // 审核不通过
step.value[1].status = "error";
step.value[1].description = `审核不通过(原因:${data.bkshBtgyy}`;
break;
case "04": // 审批中
step.value[1].status = "finish"; // 审核已完成
step.value[2].status = "process"; // 审批中
step.value[2].description = "审批中";
break;
case "05": // 审批通过
step.value[1].status = "finish"; // 审核已完成
step.value[2].status = "finish"; // 审批已完成
step.value[2].description = "审批通过";
break;
case "06": // 审批不通过
step.value[1].status = "finish"; // 审核已完成
step.value[2].status = "error"; // 审批不通过
step.value[2].description = `审批不通过(原因:${data.bkshBtgyy}`;
break;
default:
break;
}
};
// 3. 暴露方法给父组件
@ -240,7 +293,7 @@ defineExpose({
.desc {
margin: 5px;
color: #929090;
width: 350px;
// width: 350px;
}
.icon {
// position: absolute;

View File

@ -25,6 +25,14 @@
</MyTable>
</div>
</template>
<!-- 布控范围-->
<template #bkSjSx>
{{
listQuery?.bkSjKs && listQuery?.bkSjJs
? calculateDays(listQuery.bkSjKs, listQuery.bkSjJs)
: "--"
}}
</template>
</FormMessage>
<!-- 列表弹窗 -->
@ -152,7 +160,7 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { qcckPost, qcckPut } from "@/api/qcckApi.js";
import DialogList from "@/views/backOfficeSystem/IntelligentControl/myControl/components/ui/dialogList.vue";
import moment from "moment";
const { D_GS_BK_CZYQ, D_GS_BK_CZJSDWLX, D_GS_BK_DJ, D_GS_BK_YZ, D_GS_BK_SJLX } =
proxy.$dict(
"D_GS_BK_CZYQ",
@ -211,7 +219,7 @@ const formData = ref([
{
label: "布控失效时间",
prop: "bkSjSx",
type: "datetime"
type: "slot"
},
{
@ -258,13 +266,24 @@ const openDialog = (type) => {
chooseShow.value = true;
chooseType.value = type;
chooseTitle.value = type == "01" ? "请选择布控范围" : "请选择人员标签";
console.log(tableDate.bkfwList, "tableDate.bkfwList");
roleIds.value =
type == "01"
? tableDate.bkfwList.map((item) => item.id)
: tableDate.rybqList.map((item) => item.id);
};
const calculateDays = (start, end) => {
if (!start || !end) return null; // 如果参数为空,返回 null
const startDate = new Date(start);
const endDate = new Date(end);
// 检查日期是否有效
if (isNaN(startDate) || isNaN(endDate)) return null;
const diffInDays = (endDate - startDate) / (24 * 60 * 60 * 1000); // 计算天数差
return diffInDays.toFixed(1); // 保留1位小数返回字符串如 "6.3"
};
// 选择数据
const chooseDate = (data) => {
if (chooseType.value == "01") {
@ -281,6 +300,10 @@ const handleFileChange = (file, fileList) => {
// 2. 暴露获取数据的方法
const getFormData = () => {
if (listQuery.value.bkSjLx == "01") {
listQuery.value.bkSjSx = calculateDays(listQuery.value.bkSjKs, listQuery.value.bkSjJs);
}
console.log(listQuery.value, "listQuery.value",'数据');
// 可以在这里添加验证逻辑
return {
formData: listQuery.value
@ -288,8 +311,8 @@ const getFormData = () => {
};
// 接收父组件传入的数据并回显
const setFormData = (data) => {
tableDate.bkfwList = data.bkfwList;
tableDate.rybqList = data.rybqList;
tableDate.bkfwList = data.bkfwList ?? [];
tableDate.rybqList = data.rybqList ?? [];
listQuery.value = {
...data // 假设 data 包含所有需要的字段
};

View File

@ -227,7 +227,7 @@ const formDataModel = ref([
{ label: "手机号", prop: "rySjhm", type: "input", width: "45%" },
{ label: "同步上传", prop: "qtTbsc", type: "switch" },
{ label: "车牌号", prop: "clCph", type: "input", width: "45%" },
{ label: "车号", prop: "clCjh", type: "input", width: "45%" },
{ label: "车号", prop: "clCjh", type: "input", width: "45%" },
{ label: "特许证号", prop: "qtTxzh", type: "input", width: "45%" },
{
label: "布控类型",
@ -309,7 +309,7 @@ const pageData = reactive({
{ label: "手机号", prop: "rySjhm" },
{ label: "同步上传", prop: "qtTbsc", showSolt: true },
{ label: "车牌号", prop: "clCph" },
{ label: "车号", prop: "clCjh" },
{ label: "车号", prop: "clCjh" },
{ label: "特许证号", prop: "qtTxzh" },
{ label: "布控类型", prop: "bkLx", showSolt: true },
{ label: "人员标签", prop: "" }
@ -323,7 +323,7 @@ const formData = ref([
},
{
label: "所属警",
label: "所属警",
prop: "bkSsjz",
type: "select",
options: D_GS_BK_SSJZ
@ -353,6 +353,7 @@ const getFormData = () => {
};
// 打开弹窗
const openDialog = (type) => {
console.log(tableDate.yjbqList, tableDate.rybqList);
chooseShow.value = true;
chooseType.value = type;
chooseTitle.value = type == "01" ? "请选择预警标签模型" : "请选择人员标签";
@ -401,7 +402,6 @@ const submitForm = () => {
clCjh: validData.clCjh,
qtTxzh: validData.qtTxzh,
bkLx: validData.bkLx,
bkLx: validData.bkLx,
fjZp: validData.fjZp
};
} else {
@ -442,7 +442,7 @@ const submitForm = () => {
// 接收父组件传入的数据并回显
const setFormData = (data) => {
tableDate.yjbqList = data.yjbqList;
tableDate.yjbqList = data.yjbqList ?? [];
listQuery.value = {
...data // 假设 data 包含所有需要的字段
};