lcw
This commit is contained in:
@ -133,3 +133,35 @@ export const tbGsxtZdryAjxx = (id) => {
|
||||
method: "delete",
|
||||
});
|
||||
}
|
||||
// 新增或修改现实表现
|
||||
export const tbGsxtZdryXsbxSaveOrUpdateXsbx = (data) => {
|
||||
return request({
|
||||
url: api + `/tbGsxtZdryXsbx/saveOrUpdateXsbx`,
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
}
|
||||
// 查询走访记录信息
|
||||
export const tbGsxtZdryXsbxSelectZfjl = (params) => {
|
||||
return request({
|
||||
url: api + `/tbGsxtZdryXsbx/selectXsbx`,
|
||||
method: "get",
|
||||
params,
|
||||
});
|
||||
}
|
||||
// 删除走访记录信息
|
||||
export const tbGsxtZdryXsbx = (id) => {
|
||||
return request({
|
||||
url: api + `/tbGsxtZdryXsbx/${id}`,
|
||||
method: "delete",
|
||||
});
|
||||
}
|
||||
// 查询操作日志
|
||||
export const tbGsxtZdryCzrzSelectCzrz = (params) => {
|
||||
return request({
|
||||
url: api + `/tbGsxtZdryCzrz/selectCzrz`,
|
||||
method: "get",
|
||||
params,
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,70 @@
|
||||
<template>
|
||||
<!-- 添加 -->
|
||||
<el-dialog v-model="modelValue" :title="title" width="40%" :before-close="handleClose">
|
||||
<FormMessage v-model="listQuery" :formList="formData" labelWidth="120px" ref="elform" :rules="rules">
|
||||
</FormMessage>
|
||||
<template #footer>
|
||||
<el-button @click="handleClose">取消</el-button>
|
||||
<el-button type="primary" @click="submitForm">确认</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script setup>
|
||||
import { defineProps, defineEmits, ref, watch, reactive, getCurrentInstance } from 'vue'
|
||||
import FormMessage from "@/components/aboutTable/FormMessage.vue";
|
||||
const { proxy } = getCurrentInstance();
|
||||
const props = defineProps({
|
||||
data: {
|
||||
type: Object,
|
||||
default: () => { }
|
||||
},
|
||||
modelValue: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: '走访信息'
|
||||
},
|
||||
dict: {
|
||||
type: Object,
|
||||
default: () => { }
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['update:modelValue', 'comfirm'])
|
||||
const listQuery = ref({})
|
||||
const formData = ref([
|
||||
{ label: "案件名称", prop: "ajmc", type: "input", width: '100%' },
|
||||
{ label: "案件时间", prop: "sasj", type: "date", width: '100%' },
|
||||
{ label: "案件编码", prop: "ajbm", type: "input", width: '100%' },
|
||||
])
|
||||
const rules = reactive({
|
||||
ajmc: [{ required: true, message: "请输入案件名称", trigger: "blur" }],
|
||||
sasj: [{ required: true, message: "请输入案件时间", trigger: "change" }],
|
||||
ajbm: [{ required: true, message: "请输入案件编码", trigger: "blur" }],
|
||||
})
|
||||
|
||||
const elform=ref(null)
|
||||
const submitForm = () => {
|
||||
elform.value.submit((val) => {
|
||||
if (val) {
|
||||
emit('comfirm', val)
|
||||
handleClose()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
watch(
|
||||
() => props.data,
|
||||
(val) => {
|
||||
listQuery.value = val ? { ...val } : {}
|
||||
},
|
||||
{ deep: true }
|
||||
)
|
||||
// 取消:关闭弹窗
|
||||
const handleClose = () => {
|
||||
listQuery.value = {}
|
||||
emit('update:modelValue', false)
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="scss"></style>
|
@ -0,0 +1,306 @@
|
||||
<template>
|
||||
<el-dialog :title="titleValue" width="800px" :model-value="modelValue" append-to-body @close="closed">
|
||||
<FormMessage v-model="listQuery" :formList="formData" labelWidth="120px" ref="elform" :rules="rules">
|
||||
<template #rrry>
|
||||
<el-input v-model="listQuery.rrry" :placeholder="`请输入民警姓名`" readonly @click="changeShow" />
|
||||
</template>
|
||||
<template #fjxx>
|
||||
<!-- 文件列表区域 -->
|
||||
<div class="file-attachment-section">
|
||||
<div class="section-title">相关附件</div>
|
||||
<div class="file-list-container">
|
||||
<div v-if="listQuery.fileList.length === 0" class="empty-file-list">暂无附件</div>
|
||||
<div v-else class="file-list">
|
||||
<div v-for="(file, index) in listQuery.fileList" :key="index" class="file-item">
|
||||
<div class="file-info">
|
||||
<span class="file-name">{{ file.originalName }}</span>
|
||||
<span class="file-time">{{ file.uploadTime }}</span>
|
||||
</div>
|
||||
<div class="file-actions">
|
||||
<el-button type="text" size="small" @click="downloadFile(file)" title="下载文件" :disabled="disabled">
|
||||
<el-icon>
|
||||
<Download />
|
||||
</el-icon>
|
||||
</el-button>
|
||||
<el-button type="text" size="small" @click="deleteFile(index)" title="删除文件" class="delete-btn"
|
||||
:disabled="disabled">
|
||||
<el-icon>
|
||||
<Delete />
|
||||
</el-icon>
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 上传按钮区域 -->
|
||||
<div class="upload-btn-container">
|
||||
<el-upload v-model:file-list="listQuery.fileList" class="upload-demo" :show-file-list="false" multiple
|
||||
:http-request="handleUploadRequest" :on-remove="handleRemove" :limit="3" :on-exceed="handleExceed">
|
||||
<el-button type="primary" :disabled="disabled">上传文件</el-button>
|
||||
</el-upload>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</FormMessage>
|
||||
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="closed">取消</el-button>
|
||||
<el-button type="primary" @click="onComfirm">确认</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<ChooseUser :Single="true" v-model="chooseMarksVisible" @choosedUsers="addMarks" :roleIds="roleIds" />
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted, reactive, watch, getCurrentInstance } from "vue";
|
||||
import { generateRandom10Digits } from '@/utils/tools'
|
||||
import { uploadMultipleFiles } from '@/views/backOfficeSystem/DeploymentDisposal/mpvGroup/model/fileUp.js'
|
||||
import { ElMessage } from 'element-plus';
|
||||
import FormMessage from "@/components/aboutTable/FormMessage.vue";
|
||||
import ChooseUser from "@/components/ChooseList/ChooseUser/index.vue";
|
||||
const { proxy } = getCurrentInstance()
|
||||
const props = defineProps({
|
||||
modelValue: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
titleValue: {
|
||||
type: String,
|
||||
default: "研判记录"
|
||||
},
|
||||
data: {
|
||||
type: Object,
|
||||
default: () => { }
|
||||
}
|
||||
});
|
||||
const emits = defineEmits(["update:modelValue", "comfirm"]);
|
||||
const formData = ref([
|
||||
{ label: "录入人员", prop: "rrry", type: "slot", width: '100%' },
|
||||
{ label: "录入时间", prop: "lrsj", type: "date", width: '100%' },
|
||||
{ label: "表现内容", prop: "bxnr", type: "textarea", width: '100%' },
|
||||
{ label: "附件信息", prop: "fjxx", type: "slot", width: '100%' },
|
||||
])
|
||||
const rules = reactive({
|
||||
rrry: [{ required: true, message: "请选择民警姓名", trigger: "blur" }],
|
||||
lrsj: [{ required: true, message: "请输入录入时间", trigger: "change" }],
|
||||
bxnr: [{ required: true, message: "请输入表现内容", trigger: "blur" }],
|
||||
})
|
||||
|
||||
|
||||
const listQuery = ref({fileList:[]})
|
||||
const roleIds=ref([])
|
||||
const chooseMarksVisible=ref(false)
|
||||
|
||||
const changeShow = () => {
|
||||
chooseMarksVisible.value = true
|
||||
}
|
||||
|
||||
const addMarks = (val) => {
|
||||
listQuery.value.rrry = val[0].userName
|
||||
roleIds.value = val.map(item => item.id)
|
||||
}
|
||||
const closed = () => {
|
||||
listQuery.value={}
|
||||
listQuery.value.fileList = []
|
||||
emits("update:modelValue", false);
|
||||
};
|
||||
const onComfirm = () => {
|
||||
emits("comfirm", {...listQuery.value,fjxx:listQuery.value.fileList.length>0?JSON.stringify(listQuery.value.fileList):null });
|
||||
emits("update:modelValue", false);
|
||||
}
|
||||
watch(() => props.data, (val) => {
|
||||
if (val) {
|
||||
listQuery.value={...val,fileList:val.fjxx}
|
||||
}
|
||||
},{deep: true})
|
||||
|
||||
// 下载文件
|
||||
const downloadFile = (file) => {
|
||||
// 实际项目中,这里应该调用下载API
|
||||
console.log('下载文件:', file.name)
|
||||
// 示例:window.open(file.url)
|
||||
}
|
||||
// 删除文件
|
||||
const deleteFile = (index) => {
|
||||
// 实际项目中,这里应该先调用删除API,成功后再从列表中移除
|
||||
listQuery.value.fileList.splice(index, 1)
|
||||
ElMessage.success('文件已删除')
|
||||
}
|
||||
|
||||
// 上传相关方法
|
||||
const handleUploadRequest = async (options) => {
|
||||
try {
|
||||
// 调用uploadMultipleFiles进行文件上传
|
||||
const result = await uploadMultipleFiles(options.file, {
|
||||
uploadedFiles: listQuery.value.fileList,
|
||||
fjIds: [], // 如果需要保存文件ID列表,可以在这里传递
|
||||
compressImage: null // 可选的图片压缩函数
|
||||
});
|
||||
// 更新文件列表,添加上传时间信息
|
||||
const index = listQuery.value.fileList.findIndex(f => f.originalName === options.file.name);
|
||||
if (index !== -1) {
|
||||
listQuery.value.fileList[index].uploadTime = new Date().toLocaleString('zh-CN');
|
||||
}
|
||||
// 调用成功回调
|
||||
if (options.onSuccess) {
|
||||
options.onSuccess(result);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('文件上传失败:', error);
|
||||
// 调用失败回调
|
||||
if (options.onError) {
|
||||
options.onError(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const handleRemove = (uploadFile, uploadFiles) => {
|
||||
// 实际项目中,这里应该先调用删除API,成功后再从列表中移除
|
||||
const index = listQuery.value.fileList.findIndex(f => f.name === uploadFile.name);
|
||||
if (index !== -1) {
|
||||
listQuery.value.fileList.splice(index, 1);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "@/assets/css/layout.scss";
|
||||
@import "@/assets/css/element-plus.scss";
|
||||
</style>
|
||||
<style>
|
||||
.tabBoxRadio .el-checkbox__inner {
|
||||
border-radius: 50% !important;
|
||||
}
|
||||
|
||||
.tabBoxRadio .el-table__header-wrapper .el-checkbox {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.file-attachment-section {
|
||||
margin-top: 15px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.section-title {
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: #303133;
|
||||
margin-bottom: 10px;
|
||||
padding-bottom: 5px;
|
||||
border-bottom: 1px solid #ebeef5;
|
||||
}
|
||||
|
||||
.file-list-container {
|
||||
max-height: 100px;
|
||||
overflow-y: auto;
|
||||
border: 1px solid #ebeef5;
|
||||
border-radius: 4px;
|
||||
background-color: #ffffff;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
/* 自定义滚动条样式 */
|
||||
.file-list-container::-webkit-scrollbar {
|
||||
width: 6px;
|
||||
}
|
||||
|
||||
.file-list-container::-webkit-scrollbar-track {
|
||||
background: #f1f1f1;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.file-list-container::-webkit-scrollbar-thumb {
|
||||
background: #c0c4cc;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.file-list-container::-webkit-scrollbar-thumb:hover {
|
||||
background: #909399;
|
||||
}
|
||||
|
||||
.empty-file-list {
|
||||
padding: 20px;
|
||||
text-align: center;
|
||||
color: #909399;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.file-list {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.file-item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 8px 10px;
|
||||
margin-bottom: 2px;
|
||||
background-color: #f8f9fa;
|
||||
border-radius: 4px;
|
||||
transition: all 0.3s ease;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.file-item:hover {
|
||||
background-color: #e6f7ff;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.file-info {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 15px;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.file-name {
|
||||
flex: 1;
|
||||
font-size: 12px;
|
||||
color: #303133;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.file-size {
|
||||
font-size: 11px;
|
||||
color: #909399;
|
||||
min-width: 60px;
|
||||
}
|
||||
|
||||
.file-time {
|
||||
font-size: 11px;
|
||||
color: #909399;
|
||||
}
|
||||
|
||||
.file-actions {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 5px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.file-actions .el-button {
|
||||
padding: 0 5px;
|
||||
margin: 0;
|
||||
color: #606266;
|
||||
transition: color 0.3s ease;
|
||||
}
|
||||
|
||||
.file-actions .el-button:hover {
|
||||
color: #409eff;
|
||||
}
|
||||
|
||||
.delete-btn:hover {
|
||||
color: #f56c6c !important;
|
||||
}
|
||||
|
||||
.upload-btn-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-top: 10px;
|
||||
}
|
||||
</style>
|
@ -15,27 +15,27 @@
|
||||
<li @click="scrollToSection('backinfo-section')"
|
||||
:class="activeSection === 'backinfo-section' ? 'active' : ''">人员标签</li>
|
||||
<li @click="scrollToSection('groupLabels-section')"
|
||||
:class="activeSection === 'groupLabels-section' ? 'active' : ''">关联车辆</li>
|
||||
:class="activeSection === 'groupLabels-section' ? 'active' : ''" v-if="!butShow">关联车辆</li>
|
||||
<li @click="scrollToSection('character-section')"
|
||||
:class="activeSection === 'character-section' ? 'active' : ''">背景信息</li>
|
||||
<li @click="scrollToSection('controlInfo-section')"
|
||||
:class="activeSection === 'controlInfo-section' ? 'active' : ''">管控信息</li>
|
||||
:class="activeSection === 'controlInfo-section' ? 'active' : ''" v-if="!butShow">管控信息</li>
|
||||
<li @click="scrollToSection('featinfo-section')"
|
||||
:class="activeSection === 'featinfo-section' ? 'active' : ''">全要素布控</li>
|
||||
:class="activeSection === 'featinfo-section' ? 'active' : ''" v-if="!butShow">全要素布控</li>
|
||||
<li @click="scrollToSection('demandsInfo-section')"
|
||||
:class="activeSection === 'demandsInfo-section' ? 'active' : ''">密切联系人</li>
|
||||
:class="activeSection === 'demandsInfo-section' ? 'active' : ''" v-if="!butShow">密切联系人</li>
|
||||
<li @click="scrollToSection('requestInfo-section')"
|
||||
:class="activeSection === 'requestInfo-section' ? 'active' : ''">动态轨迹</li>
|
||||
:class="activeSection === 'requestInfo-section' ? 'active' : ''" v-if="!butShow">动态轨迹</li>
|
||||
<li @click="scrollToSection('personnel-section')"
|
||||
:class="activeSection === 'personnel-section' ? 'active' : ''">行为信息</li>
|
||||
:class="activeSection === 'personnel-section' ? 'active' : ''" v-if="!butShow">行为信息</li>
|
||||
<li @click="scrollToSection('judgmentRecord-section')"
|
||||
:class="activeSection === 'judgmentRecord-section' ? 'active' : ''">走访记录</li>
|
||||
:class="activeSection === 'judgmentRecord-section' ? 'active' : ''" v-if="!butShow">走访记录</li>
|
||||
<li @click="scrollToSection('historyAssembly-section')"
|
||||
:class="activeSection === 'historyAssembly-section' ? 'active' : ''">案件信息</li>
|
||||
:class="activeSection === 'historyAssembly-section' ? 'active' : ''" v-if="!butShow">案件信息</li>
|
||||
<li @click="scrollToSection('joblogging-section')"
|
||||
:class="activeSection === 'joblogging-section' ? 'active' : ''">显示表现</li>
|
||||
:class="activeSection === 'joblogging-section' ? 'active' : ''" v-if="!butShow">显示表现</li>
|
||||
<li @click="scrollToSection('joblogging-joblog')"
|
||||
:class="activeSection === 'joblogging-joblog' ? 'active' : ''">操作日志</li>
|
||||
:class="activeSection === 'joblogging-joblog' ? 'active' : ''" v-if="!butShow">操作日志</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="right_box" ref="rightBox">
|
||||
@ -45,64 +45,76 @@
|
||||
<div id="backinfo-section">
|
||||
<PersonnelTags ref="personnelTags" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||
</div>
|
||||
<div id="groupLabels-section">
|
||||
<div id="groupLabels-section" v-if="!butShow">
|
||||
<Vehicle ref="vehicle" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||
</div>
|
||||
<div id="character-section">
|
||||
<BackInfo ref="backInfo" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||
</div>
|
||||
<div id="controlInfo-section">
|
||||
<div id="controlInfo-section" v-if="!butShow">
|
||||
<ControlInfo ref="controlInfo" title="重点人" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||
</div>
|
||||
<div id="deployment-section">
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="featinfo-section" v-if="!butShow">
|
||||
<Deployment ref="deployment" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||
</div>
|
||||
<div id="contact-section">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="demandsInfo-section" v-if="!butShow">
|
||||
<Contact ref="contact" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||
</div>
|
||||
<div id="dynamicTrajectory-section">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="requestInfo-section" v-if="!butShow">
|
||||
<DynamicTrajectory ref="dynamicTrajectory" :disabled="disabled" :showBut="showBut" />
|
||||
</div>
|
||||
<div id="requestInfo-section">
|
||||
<div id="personnel-section" v-if="!butShow">
|
||||
<BehaviorInfo ref="behaviorInfo" :disabled="disabled" :showBut="showBut" />
|
||||
</div>
|
||||
|
||||
<div id="visitRecord-section">
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="judgmentRecord-section" v-if="!butShow">
|
||||
<VisitRecord ref="visitRecord" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||
</div>
|
||||
<div id="caseInfo-section">
|
||||
|
||||
|
||||
|
||||
<div id="historyAssembly-section" v-if="!butShow" >
|
||||
<CaseInfo ref="caseInfo" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||
</div>
|
||||
<div id="actualPerformance-section">
|
||||
|
||||
|
||||
<div id="joblogging-section" v-if="!butShow">
|
||||
<ActualPerformance ref="actualPerformance" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||
</div>
|
||||
<!-- <div class="behaviorInfo" style="">
|
||||
<h3>操作日志</h3>
|
||||
|
||||
|
||||
<div id="joblogging-joblog" v-if="!butShow" >
|
||||
<CzModel ref="czModel" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||
</div>
|
||||
<div class="list-container">
|
||||
<div class="list-header">
|
||||
<span>账号名称</span>
|
||||
<span>操作时间</span>
|
||||
<span>操作记录</span>
|
||||
</div>
|
||||
<div class="list-body">
|
||||
<div class="list-item" v-for="i in 30" :key="i">
|
||||
<span>张三</span>
|
||||
<span>2020-3030-2202</span>
|
||||
<span>新增操作记录</span>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <ChooseMarks v-model="chooseMarksVisible" @choosed="choosed" :roleIds="roleIds" /> -->
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { getItem } from "@/utils/storage";
|
||||
import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js";
|
||||
import { tbGsxtZdrySelectVoById,tbGsxtZdrySave } from "@/api/zdr.js";
|
||||
import { tbGsxtZdrySelectVoById, tbGsxtZdrySave } from "@/api/zdr.js";
|
||||
import ControlInfo from '../../mpvGroup/model/controlInfo.vue'
|
||||
import Info from "../model/info.vue";
|
||||
import PersonnelTags from '../model/personnelTags.vue'
|
||||
@ -115,6 +127,7 @@ import BehaviorInfo from '../model/behaviorInfo.vue'
|
||||
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";
|
||||
const emit = defineEmits(["updateDate"]);
|
||||
const chooseMarksVisible = ref(false);
|
||||
@ -125,6 +138,7 @@ const showBut = ref(false)
|
||||
const listQuery = ref({});
|
||||
const butShow = ref(false)
|
||||
const title = ref('新增')
|
||||
const showData=ref(false)
|
||||
// 初始化数据
|
||||
const init = (type, row) => {
|
||||
dialogForm.value = true;
|
||||
@ -134,9 +148,10 @@ const init = (type, row) => {
|
||||
disabled.value = false
|
||||
showBut.value = false
|
||||
} else {
|
||||
|
||||
butShow.value = false
|
||||
tbGsxtZdrySelectVoById({ id: row.id }).then(res => {
|
||||
listQuery.value={...res}
|
||||
listQuery.value = { ...res }
|
||||
})
|
||||
if (type == 'edit') {
|
||||
showBut.value = true
|
||||
@ -179,7 +194,7 @@ const handleScroll = () => {
|
||||
'info-section', 'backinfo-section', 'groupLabels-section',
|
||||
'character-section', 'controlInfo-section', 'featinfo-section',
|
||||
'demandsInfo-section', 'requestInfo-section', 'personnel-section',
|
||||
'judgmentRecord-section', 'historyAssembly-section', 'joblogging-section'
|
||||
'judgmentRecord-section', 'historyAssembly-section', 'joblogging-section', "czModel-section"
|
||||
];
|
||||
|
||||
for (let i = sections.length - 1; i >= 0; i--) {
|
||||
|
@ -2,23 +2,12 @@
|
||||
<div>
|
||||
<div class="headClass" style="">
|
||||
<h3>现实表现</h3>
|
||||
<!-- <el-button type="primary" :disabled="disabled" @click="AddPore">选择</el-button> -->
|
||||
|
||||
</div>
|
||||
<div class="headSelect">
|
||||
|
||||
<el-button @click="add" type="primary">新增</el-button>
|
||||
<el-button @click="AddPore" type="primary" v-if="showBut">新增</el-button>
|
||||
</div>
|
||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||
<template #clys="{ row }">
|
||||
<DictTag :tag="false" :value="row.clys" :options="D_BZ_CLYS" />
|
||||
</template>
|
||||
<template #cllx="{ row }">
|
||||
<DictTag :tag="false" :value="row.cllx" :options="D_BZ_CLLX" />
|
||||
</template>
|
||||
<template #clpp="{ row }">
|
||||
<DictTag :tag="false" :value="row.clpp" :options="D_BZ_CLPP" />
|
||||
<template #showSolt="{ row }">
|
||||
<span v-for="(item,index) in row.fjxx" :key="index">{{ item.originalName }}<span v-if="index < row.fjxx.length - 1">、</span></span>
|
||||
</template>
|
||||
<!-- 操作 -->
|
||||
<template #controls="{ row }">
|
||||
@ -27,20 +16,23 @@
|
||||
</template>
|
||||
</MyTable>
|
||||
</div>
|
||||
<VehiclDoing v-model="chooseMarksVisible" @comfirm="addMarks" :data="dataModel"
|
||||
:dict="{ D_BZ_CLLX, D_BZ_CLYS, D_BZ_CLPP }" />
|
||||
<!-- <VehiclDoing v-model="JudgmentShow" @comfirm="addMarks" :data="dataModel"
|
||||
:dict="{ D_BZ_CLLX, D_BZ_CLYS, D_BZ_CLPP }" /> -->
|
||||
|
||||
<JudgmentRecord v-model="JudgmentShow" @comfirm="onComfirm" :data="dataModel" />
|
||||
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { identityCardRule } from "@/utils/rules"
|
||||
import { ref, reactive, watch, toRaw, getCurrentInstance, onMounted, onUnmounted } from "vue";
|
||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||
import VehiclDoing from "../component/vehiclDoing.vue";
|
||||
import { tbZdryClxxAdd, tbZdryClxxBatchAdd, tbZdryClxxDelete, tbZdryClxxSelectPage, tbZdryClxxUpdate } from '@/api/zdr.js'
|
||||
import JudgmentRecord from "../component/judgmentRecord.vue";
|
||||
import { tbGsxtZdryXsbxSaveOrUpdateXsbx,tbGsxtZdryXsbxSelectZfjl,tbGsxtZdryXsbx } from '@/api/zdr.js'
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { D_BZ_CLLX, D_BZ_CLYS, D_BZ_CLPP } = proxy.$dict("D_BZ_CLLX", "D_BZ_CLYS", "D_BZ_CLPP"); //获取字典数据
|
||||
const chooseMarksVisible = ref(false)
|
||||
const JudgmentShow = ref(false)
|
||||
const props = defineProps({
|
||||
dataList: {
|
||||
type: Object,
|
||||
@ -66,20 +58,17 @@ watch(() => props.dataList, (val) => {
|
||||
const pageData = reactive({
|
||||
tableData: [],
|
||||
tableColumn: [{
|
||||
prop: 'cph',
|
||||
prop: 'rrry',
|
||||
label: '录入人员',
|
||||
}, {
|
||||
prop: 'cllx',
|
||||
prop: 'lrsj',
|
||||
label: '录入时间',
|
||||
showSolt: true,
|
||||
prop: 'clpp',
|
||||
}, {
|
||||
showSolt: true,
|
||||
prop: 'clys',
|
||||
prop: 'bxnr',
|
||||
label: '表现内容',
|
||||
}, {
|
||||
showSolt: true,
|
||||
prop: 'clpp',
|
||||
prop: 'fjxx',
|
||||
label: '附件信息',
|
||||
}],
|
||||
tableHeight: '200px',
|
||||
@ -97,45 +86,40 @@ const pageData = reactive({
|
||||
},
|
||||
controlsWidth: 200,
|
||||
})
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
username: "",
|
||||
ID: ""
|
||||
})
|
||||
const rulesForm = ref(identityCardRule({ validator: true }, 'rySfzh'))
|
||||
|
||||
// 修改数据接口
|
||||
const dataModel = ref()
|
||||
const addMarks = (val) => {
|
||||
const onComfirm = (val) => {
|
||||
const params = {
|
||||
...val,
|
||||
zdrid: listData.value.id,
|
||||
zdryId: listData.value.id,
|
||||
}
|
||||
if (props.showBut && !props.disabled) {
|
||||
if (addUpd.value) {
|
||||
tbZdryClxxAdd(params).then(res => {
|
||||
console.log(params);
|
||||
|
||||
// if (props.showBut && !props.disabled) {
|
||||
// if (addUpd.value) {
|
||||
tbGsxtZdryXsbxSaveOrUpdateXsbx(params).then(res => {
|
||||
gettbZdryClxxSelectPage()
|
||||
proxy.$message({
|
||||
message: '关联车辆添加成功',
|
||||
type: 'success'
|
||||
})
|
||||
})
|
||||
}
|
||||
else {
|
||||
tbZdryClxxUpdate(params).then(res => {
|
||||
gettbZdryClxxSelectPage()
|
||||
proxy.$message({
|
||||
message: '关联车辆修改成功',
|
||||
type: 'success'
|
||||
})
|
||||
})
|
||||
}
|
||||
} else {
|
||||
pageData.tableData.push(val)
|
||||
}
|
||||
// }
|
||||
// else {
|
||||
// tbZdryClxxUpdate(params).then(res => {
|
||||
// gettbZdryClxxSelectPage()
|
||||
// proxy.$message({
|
||||
// message: '关联车辆修改成功',
|
||||
// type: 'success'
|
||||
// })
|
||||
// })
|
||||
// }
|
||||
// } else {
|
||||
// pageData.tableData.push(val)
|
||||
// }
|
||||
}
|
||||
onMounted(() => {
|
||||
|
||||
|
||||
})
|
||||
// 删除车辆
|
||||
const delDictItem = (val) => {
|
||||
@ -150,10 +134,10 @@ const delDictItem = (val) => {
|
||||
}
|
||||
)
|
||||
.then(() => {
|
||||
tbZdryClxxDelete({ ids: [val] }).then(res => {
|
||||
tbGsxtZdryXsbx(val).then(res => {
|
||||
gettbZdryClxxSelectPage()
|
||||
proxy.$message({
|
||||
message: '关联车辆删除成功',
|
||||
message: '表现信息删除成功',
|
||||
type: 'success'
|
||||
})
|
||||
})
|
||||
@ -171,24 +155,26 @@ const delDictItem = (val) => {
|
||||
}
|
||||
|
||||
const updDictItem = (val) => {
|
||||
chooseMarksVisible.value = true
|
||||
JudgmentShow.value = true
|
||||
addUpd.value = false
|
||||
dataModel.value = val
|
||||
}
|
||||
const AddPore = () => {
|
||||
chooseMarksVisible.value = true
|
||||
dataModel.value = {}
|
||||
JudgmentShow.value = true
|
||||
addUpd.value = true
|
||||
}
|
||||
// 查询车辆
|
||||
const gettbZdryClxxSelectPage = () => {
|
||||
const promes = {
|
||||
pageCurrent: 1,
|
||||
pageSize: 20,
|
||||
zdrid: listData.value.id
|
||||
}
|
||||
tbZdryClxxSelectPage(promes).then(res => {
|
||||
pageData.tableData = res.records
|
||||
tbGsxtZdryXsbxSelectZfjl(promes).then(res => {
|
||||
pageData.tableData = res.map(item => {
|
||||
return {
|
||||
...item,
|
||||
fjxx: item.fjxx ? JSON.parse(item.fjxx) : []
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
// 抛出数据并验证标签列表不为空
|
||||
@ -237,6 +223,9 @@ defineExpose({
|
||||
}
|
||||
|
||||
.headClass {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
color: #303133;
|
||||
|
@ -4,35 +4,7 @@
|
||||
<h3>行为信息</h3>
|
||||
</div>
|
||||
|
||||
<!-- 搜索区域 -->
|
||||
<!-- <div class="search-container">
|
||||
<el-form :inline="true" :model="searchForm" class="demo-form-inline">
|
||||
<el-form-item label="行为类型">
|
||||
<el-select v-model="searchForm.behaviorType" placeholder="请选择">
|
||||
<el-option label="全部" value=""></el-option>
|
||||
<el-option label="购票" value="ticket"></el-option>
|
||||
<el-option label="入住" value="hotel"></el-option>
|
||||
<el-option label="出入境" value="border"></el-option>
|
||||
<el-option label="基站认证" value="baseStation"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="时间范围">
|
||||
<el-date-picker
|
||||
v-model="searchForm.timeRange"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
format="YYYY-MM-DD HH:mm:ss"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleSearch">搜索</el-button>
|
||||
<el-button @click="resetSearch">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div> -->
|
||||
|
||||
|
||||
<!-- 列表区域 -->
|
||||
<div class="list-container">
|
||||
|
@ -2,41 +2,28 @@
|
||||
<div>
|
||||
<div class="headClass" style="">
|
||||
<h3>案件信息</h3>
|
||||
<!-- <el-button type="primary" :disabled="disabled" @click="AddPore">选择</el-button> -->
|
||||
<el-button @click="AddPore" type="primary" v-if="showBut">新增</el-button>
|
||||
|
||||
</div>
|
||||
<div class="headSelect">
|
||||
|
||||
<el-button @click="add" type="primary">新增</el-button>
|
||||
</div>
|
||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||
<template #clys="{ row }">
|
||||
<DictTag :tag="false" :value="row.clys" :options="D_BZ_CLYS" />
|
||||
</template>
|
||||
<template #cllx="{ row }">
|
||||
<DictTag :tag="false" :value="row.cllx" :options="D_BZ_CLLX" />
|
||||
</template>
|
||||
<template #clpp="{ row }">
|
||||
<DictTag :tag="false" :value="row.clpp" :options="D_BZ_CLPP" />
|
||||
</template>
|
||||
<!-- 操作 -->
|
||||
|
||||
<template #controls="{ row }">
|
||||
<el-link type="danger" @click="delDictItem(row.id)">删除</el-link>
|
||||
<el-link type="danger" @click="updDictItem(row)">修改</el-link>
|
||||
</template>
|
||||
</MyTable>
|
||||
</div>
|
||||
<VehiclDoing v-model="chooseMarksVisible" @comfirm="addMarks" :data="dataModel"
|
||||
:dict="{ D_BZ_CLLX, D_BZ_CLYS, D_BZ_CLPP }" />
|
||||
<CaseLodig v-model="chooseMarksVisible" @comfirm="addMarks" :data="dataModel" />
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { identityCardRule } from "@/utils/rules"
|
||||
import { ref, reactive, watch, toRaw, getCurrentInstance, onMounted, onUnmounted } from "vue";
|
||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||
import VehiclDoing from "../component/vehiclDoing.vue";
|
||||
import {tbGsxtZdryAjxxSaveOrUpdateAjxx, tbGsxtZdryAjxx, tbGsxtZdryAjxxselectAjxx } from '@/api/zdr.js'
|
||||
import CaseLodig from "../component/caseLodig.vue";
|
||||
import { tbGsxtZdryAjxxSaveOrUpdateAjxx, tbGsxtZdryAjxx, tbGsxtZdryAjxxselectAjxx } from '@/api/zdr.js'
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { D_BZ_CLLX, D_BZ_CLYS, D_BZ_CLPP } = proxy.$dict("D_BZ_CLLX", "D_BZ_CLYS", "D_BZ_CLPP"); //获取字典数据
|
||||
@ -71,10 +58,7 @@ const pageData = reactive({
|
||||
}, {
|
||||
prop: 'ajmc',
|
||||
label: '案件名称',
|
||||
showSolt: true,
|
||||
prop: 'clpp',
|
||||
}, {
|
||||
showSolt: true,
|
||||
prop: 'sasj',
|
||||
label: '受案时间',
|
||||
},],
|
||||
@ -98,30 +82,16 @@ const dataModel = ref()
|
||||
const addMarks = (val) => {
|
||||
const params = {
|
||||
...val,
|
||||
zdrid: listData.value.id,
|
||||
zdryId: listData.value.id,
|
||||
}
|
||||
if (props.showBut && !props.disabled) {
|
||||
if (addUpd.value) {
|
||||
tbGsxtZdryAjxxSaveOrUpdateAjxx(params).then(res => {
|
||||
gettbZdryClxxSelectPage()
|
||||
proxy.$message({
|
||||
message: '关联车辆添加成功',
|
||||
message: '案件信息操作成功',
|
||||
type: 'success'
|
||||
})
|
||||
})
|
||||
}
|
||||
else {
|
||||
tbZdryClxxUpdate(params).then(res => {
|
||||
gettbZdryClxxSelectPage()
|
||||
proxy.$message({
|
||||
message: '关联车辆修改成功',
|
||||
type: 'success'
|
||||
})
|
||||
})
|
||||
}
|
||||
} else {
|
||||
pageData.tableData.push(val)
|
||||
}
|
||||
|
||||
}
|
||||
onMounted(() => {
|
||||
})
|
||||
@ -174,7 +144,7 @@ const gettbZdryClxxSelectPage = () => {
|
||||
zdrid: listData.value.id
|
||||
}
|
||||
tbGsxtZdryAjxxselectAjxx(promes).then(res => {
|
||||
pageData.tableData = res.records
|
||||
pageData.tableData = res
|
||||
})
|
||||
}
|
||||
// 抛出数据并验证标签列表不为空
|
||||
@ -224,6 +194,9 @@ defineExpose({
|
||||
|
||||
.headClass {
|
||||
font-size: 18px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
font-weight: 600;
|
||||
color: #303133;
|
||||
margin: 20px 0 10px 0;
|
||||
|
@ -2,15 +2,10 @@
|
||||
<div>
|
||||
<div class="headClass" style="">
|
||||
<h3>密切联系人</h3>
|
||||
<el-button type="primary" @click="openDialog('新增密切联系人', {}, true)">新增</el-button>
|
||||
<el-button type="primary" @click="openDialog('新增密切联系人', {}, true)" v-if="showBut">新增</el-button>
|
||||
</div>
|
||||
<div class="headSelect">
|
||||
<el-form :model="formData" :inline="true" ref="formRef" :rules="rulesForm" class="form-inline">
|
||||
<!-- 姓名 -->
|
||||
<!-- <el-form-item label="姓名">
|
||||
<el-input v-model="formData.username" placeholder="请输入姓名" />
|
||||
</el-form-item> -->
|
||||
<!-- 身份证号码 -->
|
||||
<el-form-item label="身份证号码">
|
||||
<el-input v-model="formData.rySfzh" placeholder="请输入身份证号码" />
|
||||
</el-form-item>
|
||||
|
@ -0,0 +1,222 @@
|
||||
<template>
|
||||
<div class="backinfo-container">
|
||||
<div class="headClass">
|
||||
<h3>操作日志</h3>
|
||||
</div>
|
||||
<!-- 列表区域 -->
|
||||
<div class="list-container">
|
||||
<div v-loading="loading" class="behavior-list">
|
||||
<div class="behavior-list-inner">
|
||||
<div
|
||||
v-for="(item, index) in behaviorList"
|
||||
:key="item.id"
|
||||
class="behavior-item"
|
||||
>
|
||||
<div class="behavior-item-header">
|
||||
<span class="behavior-index">{{ index + 1 }}.</span>
|
||||
<el-tag :type="getTagType(item.behaviorType)">{{ item.zhmc }}</el-tag>
|
||||
<span class="behavior-time">{{ item.czsj }}</span>
|
||||
</div>
|
||||
<div class="behavior-item-content">
|
||||
<p class="behavior-description">{{ item.czjl }}</p>
|
||||
<p class="behavior-location"><i class="el-icon-location-outline"></i> {{ item.bz }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="!loading && behaviorList.length === 0" class="empty-state">
|
||||
<el-empty description="暂无操作记录" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, getCurrentInstance, onMounted,watch } from 'vue'
|
||||
import GdMap from "@/components/GdMap/index.vue";
|
||||
import {tbGsxtZdryCzrzSelectCzrz} from '@/api/zdr'
|
||||
const { proxy } = getCurrentInstance();
|
||||
const props = defineProps({
|
||||
dataList: {
|
||||
type: Object,
|
||||
default: () => { },
|
||||
}, disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
showBut: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
})
|
||||
const listData = ref({})
|
||||
watch(() => props.dataList, (val) => {
|
||||
if (val) {
|
||||
listData.value = val
|
||||
fetchData()
|
||||
}
|
||||
}, { deep: true })
|
||||
// 列表数据
|
||||
const behaviorList = ref([])
|
||||
const loading = ref(false)
|
||||
|
||||
// 获取数据
|
||||
const fetchData = () => {
|
||||
loading.value = true
|
||||
tbGsxtZdryCzrzSelectCzrz({ zdrid: listData.value.id }).then(res => {
|
||||
behaviorList.value = res
|
||||
}).finally(() => {
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
|
||||
// 页面加载时获取数据
|
||||
onMounted(() => {
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "~@/assets/css/layout.scss";
|
||||
@import "~@/assets/css/element-plus.scss";
|
||||
|
||||
.backinfo-container {
|
||||
padding-top: 20px;
|
||||
width: 100%;
|
||||
background-color: #f5f7fa;
|
||||
}
|
||||
|
||||
.headClass {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
color: #303133;
|
||||
margin: 0 0 20px 0;
|
||||
padding-bottom: 15px;
|
||||
border-bottom: 2px solid #409eff;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.search-container {
|
||||
background-color: #fff;
|
||||
padding: 16px;
|
||||
border-radius: 6px;
|
||||
margin-bottom: 16px;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
|
||||
|
||||
}
|
||||
|
||||
.demo-form-inline {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.list-container {
|
||||
background-color: #fff;
|
||||
padding: 16px;
|
||||
border-radius: 6px;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.behavior-list {
|
||||
max-height: 600px;
|
||||
overflow: hidden; /* 完全禁止滚动条 */
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.behavior-list-inner {
|
||||
max-height: 600px;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
padding-right: 10px; /* 为滚动条留出空间但不显示 */
|
||||
}
|
||||
|
||||
.behavior-item {
|
||||
padding: 16px;
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
transition: all 0.3s ease;
|
||||
position: relative;
|
||||
left: 0; /* 初始位置 */
|
||||
}
|
||||
|
||||
.behavior-item:hover {
|
||||
background-color: #fafafa;
|
||||
left: 5px; /* 使用left属性代替transform,避免触发滚动条 */
|
||||
}
|
||||
|
||||
.behavior-item:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.behavior-item-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.behavior-index {
|
||||
font-weight: 600;
|
||||
color: #606266;
|
||||
margin-right: 12px;
|
||||
min-width: 20px;
|
||||
}
|
||||
|
||||
.behavior-time {
|
||||
margin-left: auto;
|
||||
color: #909399;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.behavior-item-content {
|
||||
padding-left: 32px;
|
||||
}
|
||||
|
||||
.behavior-description {
|
||||
margin: 0 0 8px 0;
|
||||
color: #303133;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.behavior-location {
|
||||
margin: 0;
|
||||
color: #606266;
|
||||
font-size: 13px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.empty-state {
|
||||
padding: 60px 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
::v-deep .el-tag {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
::v-deep .el-date-editor .el-range-separator {
|
||||
color: #606266;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.backinfo-container {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.demo-form-inline {
|
||||
flex-direction: column;
|
||||
align-items: stretch;
|
||||
}
|
||||
|
||||
.demo-form-inline .el-form-item {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.pagination-container {
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -6,11 +6,18 @@
|
||||
</div>
|
||||
<div class="marginBox">
|
||||
<div>身份证号码:{{ listData.rySfzh }} <span>({{ listData.zdrBkZt ? '已布控' : '未布控' }})</span></div>
|
||||
|
||||
<div>手机号码:{{ listData.ryLxdh?.[0] }} <span>({{ listData.zdrBkZt ? '已布控' : '未布控' }})</span>
|
||||
<div v-if="listData.ryLxdh&&listData.ryLxdh.length>0"> 手机号码:
|
||||
<span style="color: #000;" v-for="(item, index) in listData.ryLxdh" :key="index">{{ item }}
|
||||
<span v-if="index != listData.ryLxdh.length - 1">、</span>
|
||||
</span>
|
||||
<div> {{ listData.ryLxdh?.[1] }}<span>({{ listData.zdrBkZt ? '已布控' : '未布控' }})</span></div>
|
||||
</div>
|
||||
<div>车牌号码:{{ listData.clHm }} <span>({{ listData.zdrBkZt ? '已布控' : '未布控' }})</span></div>
|
||||
<div v-if="listData.clxxList">车牌号码:
|
||||
<span style="color: #000;" v-for="(item, index) in listData.clxxList" :key="index">{{ item.cph }}
|
||||
<span v-if="index != listData.clxxList.length - 1">、</span>
|
||||
</span>
|
||||
<span>({{ listData.zdrBkZt ? '已布控' : '未布控' }})</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -67,30 +74,28 @@ onMounted(() => {
|
||||
}
|
||||
|
||||
&>:nth-child(1) {
|
||||
width: 300px;
|
||||
// width: 300px;
|
||||
height: 30px;
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
&>:nth-child(2) {
|
||||
width: 400px;
|
||||
// width: 400px;
|
||||
height: 30px;
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
// justify-content: space-between;
|
||||
}
|
||||
|
||||
&>:nth-child(3) {
|
||||
width: 210px;
|
||||
// width: 210px;
|
||||
height: 30px;
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -18,7 +18,7 @@
|
||||
<el-button @click="resetForm">重置</el-button>
|
||||
</div>
|
||||
<div class="mapBox">
|
||||
<!-- <GdMap /> -->
|
||||
<GdMap />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
@ -171,6 +171,8 @@ const gettbGsxtZdryUpdate = () => {
|
||||
...listQuery.value,
|
||||
ryzp: listQuery.value.ryzp.length > 0 ? listQuery.value.ryzp.toString() : "",
|
||||
ryLxdh: listQuery.value.ryLxdh,
|
||||
zdrSjjz:JSON.stringify(listQuery.value.zdrSjjz),
|
||||
|
||||
}
|
||||
tbGsxtZdryUpdate(promes).then((res) => {
|
||||
listQuery.value.ryzp = []
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div>
|
||||
<div class="headClass" style="">
|
||||
<h3>关联车辆</h3>
|
||||
<el-button type="primary" :disabled="disabled" @click="AddPore">选择</el-button>
|
||||
<el-button type="primary" :disabled="disabled" @click="AddPore" v-if="showBut">选择</el-button>
|
||||
</div>
|
||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||
@ -30,7 +30,7 @@
|
||||
import { ref, reactive, watch, toRaw, getCurrentInstance, onMounted, onUnmounted } from "vue";
|
||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||
import VehiclDoing from "../component/vehiclDoing.vue";
|
||||
import { tbZdryClxxAdd, tbZdryClxxBatchAdd, tbZdryClxxDelete, tbZdryClxxSelectPage, tbZdryClxxUpdate } from '@/api/zdr.js'
|
||||
import { tbZdryClxxAdd, tbZdryClxxDelete, tbZdryClxxSelectPage, tbZdryClxxUpdate } from '@/api/zdr.js'
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { D_BZ_CLLX, D_BZ_CLYS, D_BZ_CLPP } = proxy.$dict("D_BZ_CLLX", "D_BZ_CLYS", "D_BZ_CLPP"); //获取字典数据
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div>
|
||||
<div class="headClass" style="">
|
||||
<h3>走访记录</h3>
|
||||
<el-button @click="AddPore" type="primary">新增</el-button>
|
||||
<el-button @click="AddPore" type="primary" v-if="showBut">新增</el-button>
|
||||
</div>
|
||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||
|
@ -11,7 +11,6 @@ const loginDialog = ref(false);
|
||||
const deptList = ref([]);
|
||||
const store = useStore();
|
||||
function redirectAuth() {
|
||||
|
||||
let token = location.hash.slice(20) || null;
|
||||
if (token != null) {
|
||||
token = token.replace(/\ +/g, "");
|
||||
|
Reference in New Issue
Block a user