This commit is contained in:
lcw
2025-09-29 18:11:07 +08:00
parent ffdbb04675
commit 93c711dca6
86 changed files with 395 additions and 338 deletions

View File

@ -24,7 +24,7 @@ const props = defineProps({
},
title: {
type: String,
default: '走访信息'
default: '案件信息'
},
dict: {
type: Object,

View File

@ -68,7 +68,7 @@ const props = defineProps({
},
titleValue: {
type: String,
default: "研判记录"
default: "现实表现"
},
data: {
type: Object,

View File

@ -33,7 +33,7 @@
<li @click="scrollToSection('historyAssembly-section')"
:class="activeSection === 'historyAssembly-section' ? 'active' : ''" v-if="!butShow">案件信息</li>
<li @click="scrollToSection('joblogging-section')"
:class="activeSection === 'joblogging-section' ? 'active' : ''" v-if="!butShow">显示表现</li>
:class="activeSection === 'joblogging-section' ? 'active' : ''" v-if="!butShow">现实表现</li>
<li @click="scrollToSection('joblogging-joblog')"
:class="activeSection === 'joblogging-joblog' ? 'active' : ''" v-if="!butShow">操作日志</li>
</ul>
@ -54,58 +54,30 @@
<div id="controlInfo-section" v-if="!butShow">
<ControlInfo ref="controlInfo" title="重点人" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
</div>
<div id="featinfo-section" v-if="!butShow">
<Deployment ref="deployment" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
</div>
<div id="demandsInfo-section" v-if="!butShow">
<Contact ref="contact" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
</div>
<div id="requestInfo-section" v-if="!butShow">
<DynamicTrajectory ref="dynamicTrajectory" :disabled="disabled" :showBut="showBut" />
</div>
<div id="personnel-section" v-if="!butShow">
<BehaviorInfo ref="behaviorInfo" :disabled="disabled" :showBut="showBut" />
</div>
<div id="judgmentRecord-section" v-if="!butShow">
<VisitRecord ref="visitRecord" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
</div>
<div id="historyAssembly-section" v-if="!butShow" >
<CaseInfo ref="caseInfo" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
</div>
<div id="joblogging-section" v-if="!butShow">
<ActualPerformance ref="actualPerformance" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
</div>
<div id="joblogging-joblog" v-if="!butShow" >
<CzModel ref="czModel" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
</div>
</div>
</div>
</div>
@ -128,7 +100,8 @@ import VisitRecord from '../model/visitRecord.vue'
import CaseInfo from '../model/caseInfo.vue'
import ActualPerformance from '../model/actualPerformance.vue'
import CzModel from '../model/czModel.vue'
import { ref, onUnmounted } from "vue";
import { ref, onUnmounted ,getCurrentInstance} from "vue";
const { proxy } = getCurrentInstance();
const emit = defineEmits(["updateDate"]);
const chooseMarksVisible = ref(false);
const dialogForm = ref(false); //弹窗
@ -228,13 +201,15 @@ const personnelTags = ref()
const submit = async () => {
// 使用Promise.all处理所有子组件的验证和数据获取
const [infoData, personnelTagsData] = await Promise.all([
info.value.throwData(),
info.value.throwData()
// personnelTags.value.throwData(),
]);
tbGsxtZdrySave(infoData).then(res => {
console.log(res);
proxy.$message({
message: '新增成功',
type: 'success',
})
close()
})
console.log(infoData);

View File

@ -80,8 +80,8 @@
<!-- 操作 -->
<template #controls="{ row }">
<el-link size="small" type="success" @click="handleremove(row.id)">移除</el-link>
<el-link size="small" type="success" v-if="row.zdrZt == '01'" @click="handleSend(row.id)">送审</el-link>
<el-link size="small" type="primary" v-if="row.zdrZt == '01'" @click="addEdit('edit', row)">编辑</el-link>
<el-link size="small" type="success" v-if="row.zdrZt == '01'||row.zdrZt == '03'" @click="handleSend(row.id)">送审</el-link>
<el-link size="small" type="primary" v-if="row.zdrZt == '01'||row.zdrZt == '03'" @click="addEdit('edit', row)">编辑</el-link>
<el-link size="small" type="primary" @click="addEdit('detail', row)">详情</el-link>
<el-link size="small" type="danger" @click="deleteRow(row.id)">删除</el-link>
</template>

View File

@ -101,7 +101,7 @@ const onComfirm = (val) => {
tbGsxtZdryXsbxSaveOrUpdateXsbx(params).then(res => {
gettbZdryClxxSelectPage()
proxy.$message({
message: '关联车辆添加成功',
message: '现实表现添加成功',
type: 'success'
})
})

View File

@ -17,7 +17,7 @@
<el-input v-model="ruleForm.detentionCenterRecords[i].str" type="textarea"
class="detentionFacilityInput" placeholder="请输入拘留所记录" />
</el-form-item>
<div style="width: 100px;">
<div style="width: 100px;" v-if="showBut">
<el-button type="primary" v-if="ruleForm.detentionCenterRecords.length != 1"
@click="decreaseRecord(i, '拘留所')"></el-button>
<el-button type="primary" @click="addRecord(i, '拘留所')"
@ -35,7 +35,7 @@
<el-input v-model="ruleForm.prison[i].str" type="textarea" class="detentionFacilityInput"
placeholder="请输入拘留所记录" />
</el-form-item>
<div style="width: 100px;">
<div style="width: 100px;" v-if="showBut">
<el-button type="primary" v-if="ruleForm.prison.length != 1"
@click="decreaseRecord(i, '看守所')"></el-button>
<el-button type="primary" @click="addRecord(i, '看守所')"

View File

@ -3,7 +3,6 @@
<div class="headClass" style="">
<h3>案件信息</h3>
<el-button @click="AddPore" type="primary" v-if="showBut">新增</el-button>
</div>
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"

View File

@ -15,25 +15,16 @@
</template>
<template #ryLxdh>
<div class="phone-input-container">
<div class="inputGroup" v-for="(item,index) in listQuery.ryLxdh" :key="index">
<div class="inputGroup" v-for="(item, index) in listQuery.ryLxdh" :key="index">
<el-input v-model="listQuery.ryLxdh[index]" class="group" placeholder="请输入电话号码" />
<div class="flex align-center but">
<el-button type="primary" :icon="Plus" circle @click="addPhone" title="添加电话号码" v-if=" listQuery.ryLxdh.length-1 ==index"/>
<div class="flex align-center but" v-if="showBut">
<el-button type="primary" :icon="Plus" circle @click="addPhone" title="添加电话号码"
v-if="listQuery.ryLxdh.length - 1 == index" />
<el-button type="success" :icon="Minus" circle @click="removePhone(index)" title="删除电话号码" />
</div>
</div>
</div>
</template>
<!-- <template #tags>
<div style="display: flex; align-items: center;">
<el-button type="primary" :disabled="disabled" @click="chooseMarksVisible = true">
选择标签
</el-button>
<div v-if="roleIds.length > 0" style="margin-left: 10px; color: #606266;">
已选择 {{ roleIds.length }} 个标签
</div>
</div>
</template> -->
</FormMessage>
</div>
@ -44,14 +35,14 @@
<script setup>
import * as rule from "@/utils/rules.js";
import * as MOSTY from "@/components/MyComponents/index";
import { Plus ,Minus} from "@element-plus/icons-vue";
import { Plus, Minus } from "@element-plus/icons-vue";
import FormMessage from "@/components/aboutTable/FormMessage.vue";
import ChooseMarks from "@/components/ChooseList/ChooseMarks/index.vue";
import { ref, reactive, onMounted, getCurrentInstance, watch } from "vue";
import { tbGsxtZdryUpdate } from "@/api/zdr.js";
const { proxy } = getCurrentInstance();
const { D_BZ_XB, D_BZ_ZZMM, D_BZ_HYZK, D_BZ_MZ, D_BZ_XZQHDM, D_ZDRY_RYLX,D_BZ_RCBKZT, D_GS_ZDR_RYJB, D_GS_ZDR_YJDJ, D_GS_BK_SSJZ, D_GS_ZDR_CZZT, D_BZ_WHCD, D_ZDRY_ZYLB } =
proxy.$dict('D_BZ_XB', 'D_BZ_ZZMM', 'D_BZ_HYZK', 'D_BZ_MZ', "D_ZDRY_RYLX",'D_BZ_XZQHDM', 'D_BZ_RCBKZT', 'D_GS_ZDR_RYJB', 'D_GS_ZDR_YJDJ', 'D_GS_BK_SSJZ', 'D_GS_ZDR_CZZT', 'D_BZ_WHCD', 'D_ZDRY_ZYLB')
const { D_BZ_XB, D_BZ_ZZMM, D_BZ_HYZK, D_BZ_MZ, D_BZ_XZQHDM, D_ZDRY_RYLX, D_BZ_RCBKZT, D_GS_ZDR_RYJB, D_GS_ZDR_YJDJ, D_GS_BK_SSJZ, D_GS_ZDR_CZZT, D_BZ_WHCD, D_ZDRY_ZYLB } =
proxy.$dict('D_BZ_XB', 'D_BZ_ZZMM', 'D_BZ_HYZK', 'D_BZ_MZ', "D_ZDRY_RYLX", 'D_BZ_XZQHDM', 'D_BZ_RCBKZT', 'D_GS_ZDR_RYJB', 'D_GS_ZDR_YJDJ', 'D_GS_BK_SSJZ', 'D_GS_ZDR_CZZT', 'D_BZ_WHCD', 'D_ZDRY_ZYLB')
const props = defineProps({
dataList: {
type: Object,
@ -80,7 +71,7 @@ const rules = reactive({
zdrYjdj: [{ required: true, message: "请选择预警等级", trigger: "change" }],
rylx: [{ required: true, message: "请选择人员类型", trigger: "change" }]
});
const listQuery = ref({ryLxdh:[""]}); //表单
const listQuery = ref({ ryLxdh: [""] }); //表单
const chooseMarksVisible = ref(false); // 控制标签选择弹窗显示
const roleIds = ref([]); // 已选择的标签ID
const formData = ref([
@ -149,7 +140,7 @@ watch(() => props.dataList, (val) => {
listQuery.value = deepClone(val);
// 处理照片数据
listQuery.value.ryzp = val.ryzp == null || val.ryzp == '' ? [] : [val.ryzp];
listQuery.value.zdrSjjz = val.zdrSjjz == null || val.zdrSjjz == '' ? [] :JSON.parse(val.zdrSjjz);
listQuery.value.zdrSjjz = val.zdrSjjz == null || val.zdrSjjz == '' ? [] : JSON.parse(val.zdrSjjz);
// 处理标签ID数据确保数据回显
if (val.tagIds && Array.isArray(val.tagIds) && val.tagIds.length > 0) {
roleIds.value = [...val.tagIds];
@ -163,18 +154,23 @@ watch(() => props.dataList, (val) => {
// 提交
const submit = () => {
loading.value = true
gettbGsxtZdryUpdate()
gettbGsxtZdryUpdate()
};
//
const gettbGsxtZdryUpdate = () => {
const promes = {
...listQuery.value,
ryzp: listQuery.value.ryzp.length > 0 ? listQuery.value.ryzp.toString() : "",
ryLxdh: listQuery.value.ryLxdh,
zdrSjjz:JSON.stringify(listQuery.value.zdrSjjz),
zdrSjjz: JSON.stringify(listQuery.value.zdrSjjz),
}
tbGsxtZdryUpdate(promes).then((res) => {
elform.value.submit((data) => {
tbGsxtZdryUpdate(promes).then((res) => {
listQuery.value.ryzp = []
proxy.$message({
message: '更新成功',
@ -185,6 +181,10 @@ const gettbGsxtZdryUpdate = () => {
}).finally(() => {
loading.value = false
});
})
}
// 添加电话号码
const addPhone = () => {
@ -198,8 +198,8 @@ const addPhone = () => {
// 删除电话号码
const removePhone = (index) => {
if (listQuery.value.ryLxdh .length > 1) {
listQuery.value.ryLxdh .splice(index, 1);
if (listQuery.value.ryLxdh.length > 1) {
listQuery.value.ryLxdh.splice(index, 1);
} else {
// 清空输入但保留输入框
listQuery.value.ryLxdh[0] = '';
@ -210,37 +210,39 @@ const removePhone = (index) => {
const throwData = () => {
return new Promise((resolve, reject) => {
if (elform.value && elform.value.validate) {
elform.value.validate((valid) => {
if (valid) {
// 过滤掉空的电话号码
const validPhones = listQuery.value.ryLxdh.filter(phone => phone && phone.trim());
if (validPhones.length === 0) {
reject(new Error('请至少输入一个有效的联系电话'));
return;
}
resolve({
...listQuery.value,
ryzp: listQuery.value.ryzp && listQuery.value.ryzp.length > 0 ? listQuery.value.ryzp.toString() : '',
ryLxdh: validPhones,
zdrSjjz:JSON.stringify(listQuery.value.zdrSjjz),
});
} else {
reject(new Error('表单验证失败,请检查输入信息'));
elform.value.submit((data) => {
// 过滤掉空的电话号码
const validPhones = listQuery.value.ryLxdh.filter(phone => phone && phone.trim());
if (validPhones.length === 0) {
proxy.$message.warning('请至少输入一个有效的联系电话');
reject(new Error('请至少输入一个有效的联系电话'));
return;
}
});
resolve({
...listQuery.value,
ryzp: listQuery.value.ryzp && listQuery.value.ryzp.length > 0 ? listQuery.value.ryzp.toString() : '',
ryLxdh: validPhones,
zdrSjjz: JSON.stringify(listQuery.value.zdrSjjz),
});
})
} else {
// 如果没有验证方法,直接返回数据
const validPhones = listQuery.value.ryLxdh.filter(phone => phone && phone.trim());
if (validPhones.length === 0) {
reject(new Error('请至少输入一个有效的联系电话'));
return;
}
resolve({
...listQuery.value,
ryzp: listQuery.value.ryzp && listQuery.value.ryzp.length > 0 ? listQuery.value.ryzp.toString() : '',
ryLxdh: validPhones,
zdrSjjz:JSON.stringify(listQuery.value.zdrSjjz),
});
elform.value.submit((data) => {
// 如果没有验证方法,直接返回数据
const validPhones = listQuery.value.ryLxdh.filter(phone => phone && phone.trim());
if (validPhones.length === 0) {
proxy.$message.warning('请至少输入一个有效的联系电话');
reject(new Error('请至少输入一个有效的联系电话'));
return;
}
resolve({
...listQuery.value,
ryzp: listQuery.value.ryzp && listQuery.value.ryzp.length > 0 ? listQuery.value.ryzp.toString() : '',
ryLxdh: validPhones,
zdrSjjz: JSON.stringify(listQuery.value.zdrSjjz),
});
})
}
});
};
@ -313,23 +315,25 @@ h3 {
padding: 0;
}
.inputGroup{
margin-left: 10px;
width: 100%;
max-width: 400px;
display: flex;
align-items: center;
margin-bottom: 10px;
.group{
width: 250px;
margin-right: 10px;
}
.but{
display: flex;
gap: 5px;
}
.inputGroup {
margin-left: 10px;
width: 100%;
max-width: 400px;
display: flex;
align-items: center;
margin-bottom: 10px;
.group {
width: 250px;
margin-right: 10px;
}
.but {
display: flex;
gap: 5px;
}
}
::v-deep .el-button--primary {
background-color: #409eff !important;
border-color: #409eff !important;
@ -339,5 +343,4 @@ h3 {
background-color: #67c23a !important;
border-color: #67c23a !important;
}
</style>

View File

@ -92,7 +92,8 @@ const pageData = reactive({
const zdqtUpdate = (val) => {
const params = {
id: listData.value.id,
bqList: pageData.tableData
bqList: pageData.tableData,
rySfzh: listData.value.rySfzh,
}
tbGsxtZdryUpdate(params).then(res => {
proxy.$message({

View File

@ -53,7 +53,6 @@ const addUpd = ref(true)
watch(() => props.dataList, (val) => {
if (val) {
listData.value = val
console.log(listData.value, 'listData.value')
gettbZdryClxxSelectPage()
}
}, { deep: true })
@ -98,6 +97,7 @@ const pageData = reactive({
// 修改数据接口
const dataModel = ref()
const addMarks = (val) => {
const params = {
...val,
zdrid: listData.value.id,