更新数据

This commit is contained in:
2025-07-24 15:56:36 +08:00
parent 1dc72750f6
commit 1e1cbdf6f1
4 changed files with 201 additions and 167 deletions

View File

@ -3,53 +3,26 @@
<div class="head_box" > <div class="head_box" >
<span class="title">{{ title }}重点人管理</span> <span class="title">{{ title }}重点人管理</span>
<div> <div>
<el-button <el-button type="primary" size="small" :loading="loading" @click="submit" v-if="!disabled">保存</el-button >
type="primary"
size="small"
:loading="loading"
@click="submit"
v-if="title.value !== '详情'"
>保存</el-button
>
<el-button size="small" @click="close">关闭</el-button> <el-button size="small" @click="close">关闭</el-button>
</div> </div>
</div> </div>
<div class="form_cnt"> <div class="form_cnt">
<FormMessage <FormMessage :disabled="disabled" v-model="listQuery" :formList="formData" ref="elform" :rules="rules"></FormMessage>
v-model="listQuery"
:formList="formData"
ref="elform"
:rules="rules"
>
</FormMessage>
</div> </div>
</div> </div>
</template> </template>
<script setup> <script setup>
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 } from "@/api/qcckApi.js";
import * as rule from "@/utils/rules.js"; import { ref, defineExpose, defineEmits, getCurrentInstance } from "vue";
import {
ref,
defineExpose,
reactive,
onMounted,
defineEmits,
getCurrentInstance,
nextTick
} from "vue";
import { selectUserDeptPage } from "@/api/user-manage";
const emit = defineEmits(["updateDate"]); const emit = defineEmits(["updateDate"]);
const props = defineProps({ const props = defineProps({
dic: Object dic: Object
}); });
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { D_GS_RQFJ_LX } = proxy.$dict("D_GS_RQFJ_LX"); //获取字典数据 const { D_GS_RQFJ_LX } = proxy.$dict("D_GS_RQFJ_LX"); //获取字典数据
const tagDialog = ref();
const dialogForm = ref(false); //弹窗 const dialogForm = ref(false); //弹窗
const formData = ref([ const formData = ref([
{ label: "发掘类型", prop: "fjLx", type: "select", options: D_GS_RQFJ_LX }, { label: "发掘类型", prop: "fjLx", type: "select", options: D_GS_RQFJ_LX },
@ -59,28 +32,16 @@ const listQuery = ref({}); //表单
const loading = ref(false); const loading = ref(false);
const elform = ref(); const elform = ref();
const title = ref(""); const title = ref("");
const editpeo = ref(); const disabled = ref(false)
// 初始化数据 // 初始化数据
const init = (type, row) => { const init = (type, row) => {
dialogForm.value = true; dialogForm.value = true;
title.value = type == "add" ? "新增" : type == "info" ? "详情" : "编辑"; title.value = type == "add" ? "新增" : type == "info" ? "详情" : "编辑";
disabled.value = title.value == '详情' ? true : false ;
// 初始化表单数据,并根据详情页设置禁用状态 // 初始化表单数据,并根据详情页设置禁用状态
formData.value = [ formData.value = [
{ { label: "发掘类型", prop: "fjLx", type: "select", options: D_GS_RQFJ_LX },
label: "发掘类型", { label: "发掘文本", prop: "fjWb", type: "textarea", width: "100%" }
prop: "fjLx",
type: "select",
options: D_GS_RQFJ_LX,
disabled: title.value === "详情"
},
{
label: "发掘文本",
prop: "fjWb",
type: "textarea",
width: "100%",
disabled: title.value === "详情"
}
]; ];
if (row) getDataById(row.id); if (row) getDataById(row.id);
}; };
@ -94,19 +55,17 @@ const getDataById = (id) => {
// 提交 // 提交
const submit = () => { const submit = () => {
elform.value.submit((data) => { elform.value.submit((data) => {
let url = let url = title.value == "新增" ? "/mosty-gsxt/tbGsxtRqfjNr/save" : "/mosty-gsxt/tbGsxtRqfjNr/update";
title.value == "新增"
? "/mosty-gsxt/tbGsxtRqfjNr/save"
: "/mosty-gsxt/tbGsxtRqfjNr/update";
let params = { ...data }; let params = { ...data };
loading.value = true;
qcckPost(params, url) qcckPost(params, url).then((res) => {
.then((res) => { loading.value = false;
proxy.$message({ type: "success", message: title.value + "成功" }); proxy.$message({ type: "success", message: title.value + "成功" });
emit("onSearch"); emit("onSearch");
close(); close();
}) }).catch(() => {
.catch(() => {}); loading.value = false;
});
}); });
}; };

View File

@ -0,0 +1,118 @@
<template>
<div>
<el-dialog v-model="props.modelValue" @closed="closeDialog" center :title="title" width="1280px">
<div ref="searchRef">
<Search :searchArr="searchConfiger" @submit="onSearch" ></Search>
</div>
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
@chooseData="chooseData">
</MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{...pageData.pageConfiger}"></Pages>
<template #footer>
<el-button @click="cancelDailg">取消</el-button>
<el-button type="primary" @click="handleSubmit">确定</el-button>
</template>
</el-dialog>
</div>
</template>
<script setup>
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue";
import { ref,reactive, onMounted, nextTick } from 'vue';
const props = defineProps({
modelValue:{
type:Boolean,
default:false
},
dic:{
type:Object,
default:{}
}
})
const ids = ref([])
const title =ref('')
const searchRef = ref()
const emits = defineEmits(['update:modelValue','cancel','submit'])
const searchConfiger = ref([
{ label: "数据来源", prop: "sjly", placeholder: "请选择数据来源", showType: "select" },
{ label: "数据类型", prop: "sjlx", placeholder: "请选择数据类型", showType: "select" },
{ label: "指向地点", prop: "zxdz", placeholder: "请输入指向地点", showType: "input" },
{ label: "数据内容", prop: "sjnr", placeholder: "请输入数据内容", showType: "input" },
{ label: "数据时间", prop: "times", showType: "datetimerange" },
]);
const pageData = reactive({
tableData: [],
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "checkBox",
haveControls: false,
loading: false,
},
tableHeight: 190,
pageConfiger: {
total: 0,
pageSize: 20,
pageCurrent: 1
},
tableColumn: [
{ label: "所属部门", prop: "ssbm"},
{ label: "数据来源", prop: "sjly"},
{ label: "数据类型", prop: "sjlx"},
{ label: "数据时间", prop: "sjsj"},
{ label: "指向地点", prop: "zxdz"},
{ label: "数据内容", prop: "zxnr"},
],
});
const init = (val) =>{
tabHeightFn();
let zdlist = props.dic.D_GS_RQFJ_LX || []
let obj = zdlist.find(v=>v.dm == val);
title.value = obj ? obj.zdmc+'选择' :'选择数据'
}
const changeNo = (val) => {
pageData.pageConfiger.pageCurrent = val;
};
const changeSize = (val) => {
pageData.pageConfiger.pageSize = val;
};
const chooseData = (val) =>{
if(Array.isArray(val)) ids.value = val.map(v=>val.id);
}
const handleSubmit = () =>{
cancelDailg()
}
const cancelDailg = () =>{
emits('update:modelValue',false);
emits('cancel');
}
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchRef.value.offsetHeight - 320;
window.onresize = function () {
tabHeightFn();
};
};
defineExpose({init})
</script>
<style lang="scss" scoped>
::v-deep .el-dialog{
margin-top: 30px;
}
</style>

View File

@ -2,18 +2,23 @@
<div class="statistical-analysis"> <div class="statistical-analysis">
<!-- 左侧树形菜单 --> <!-- 左侧树形菜单 -->
<div class="left-menu"> <div class="left-menu">
<el-radio-group :disabled="isEdit" v-model="checkData.active"> <el-radio-group :disabled="isEdit" v-model="active" @change="changeRadio">
<el-radio :label="it" v-for="it in checkData.list" :key="it">{{ it }}</el-radio> <el-radio :label="it.dm" v-for="it in D_GS_RQFJ_LX" :key="it.dm">{{ it.zdmc }}</el-radio>
</el-radio-group> </el-radio-group>
<div class="cancelBtn" @click="checkData.active = ''">取消</div> <div class="cancelBtn" @click="active = ''">取消</div>
</div> </div>
<!-- 右侧内容区 --> <!-- 右侧内容区 -->
<div class="right-content"> <div class="right-content">
<Search :searchArr="searchConfiger" @submit="onSearch"> </Search> <Search :searchArr="searchConfiger" @submit="onSearch"> </Search>
<div class="tableCnt1 mb10 pl10 pr10"> <div class="tableCnt1 mb10 pl10 pr10">
<PageTitle title="发掘内容" style="color: #333"></PageTitle> <PageTitle title="发掘内容" style="color: #333"></PageTitle>
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger0" :controlsWidth="pageData.controlsWidth" :tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger0"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseDataTop"> @chooseData="chooseDataTop">
<template #fjLx="{ row }"> <template #fjLx="{ row }">
<DictTag :tag="false" :value="row.fjLx" :options="D_GS_RQFJ_LX" /> <DictTag :tag="false" :value="row.fjLx" :options="D_GS_RQFJ_LX" />
@ -32,15 +37,17 @@
<div class="tableCnt mb10 pl10 pr10"> <div class="tableCnt mb10 pl10 pr10">
<PageTitle title="模型智能识别/LP解析结果" style="color: #333"></PageTitle> <PageTitle title="模型智能识别/LP解析结果" style="color: #333"></PageTitle>
<div ref="searchBox" class="mb8"> <div ref="searchBox" class="mb8">
<el-button :type="it == '批量删除' ? 'danger' : 'primary'" size="small" v-for="it in btnsList" :key="it" <el-button :type="it == '批量删除' ? 'danger' : 'primary'" size="small" v-for="it in btnsList" :key="it" @click="chooseType(it)">{{ it }}</el-button>
@click="chooseType(it)">
{{ it }}
</el-button>
</div> </div>
<div> <div>
<MyTable :tableData="pageData.tableData2" :tableColumn="pageData.tableColumn2" <MyTable
:tableHeight="pageData.tableHeight2" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :tableData="pageData.tableData2"
:controlsWidth="pageData.controlsWidth" @chooseData="chooseDataBottom"> :tableColumn="pageData.tableColumn2"
:tableHeight="pageData.tableHeight2"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseDataBottom">
<template #bqList="{ row }"> <template #bqList="{ row }">
<div v-if="row.bqList"> <div v-if="row.bqList">
<el-tag v-for="(it, idx) in row.bqList" :key="idx">{{ it.bqMc }}</el-tag> <el-tag v-for="(it, idx) in row.bqList" :key="idx">{{ it.bqMc }}</el-tag>
@ -67,7 +74,11 @@
<el-link size="small" type="primary" @click="viewDetails(row)">查看</el-link> <el-link size="small" type="primary" @click="viewDetails(row)">查看</el-link>
</template> </template>
</MyTable> </MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight2" :pageConfiger="{ <Pages
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{
...pageData.pageConfiger, ...pageData.pageConfiger,
total: pageData.total total: pageData.total
}"></Pages> }"></Pages>
@ -76,36 +87,29 @@
</div> </div>
<!-- 弹窗智能分析 --> <!-- 弹窗智能分析 -->
<IntelligentParsing :tableData="pageData.tableData" ref="IntelligentParsingRef" @upadate="getModelList" /> <IntelligentParsing :tableData="pageData.tableData" ref="IntelligentParsingRef" @upadate="getModelList" />
<!-- 新增 -->
<addForm ref="addFormDiloag" @onSearch="onSearch" /> <addForm ref="addFormDiloag" @onSearch="onSearch" />
<Model v-model="isShow" :type="chooselx" :ids="ids" @change="getModelList" :dic="{ D_GS_RQFJ_FXDJ }"></Model> <!-- 弹窗 -->
<Export :show="isImport" lx="fjnr" @closeImport="isImport = false" @handleImport="getList" /> <ListDialog ref="modelList" v-model="showDialog" v-if="showDialog" @cancel="active = ''" :dic="{D_GS_RQFJ_LX}"></ListDialog>
</div> </div>
</template> </template>
<script setup> <script setup>
import ListDialog from './components/listDialog.vue'
import { download } from "@/utils/request"; import { download } from "@/utils/request";
import Export from "@/components/export/index.vue";
import CheckBox from "@/components/checkBox/index.vue";
import PageTitle from "@/components/aboutTable/PageTitle.vue"; import PageTitle from "@/components/aboutTable/PageTitle.vue";
import MyTable from "@/components/aboutTable/MyTable.vue"; import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue"; 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 Model from "./components/model.vue";
import IntelligentParsing from "./components/IntelligentParsing.vue"; import IntelligentParsing from "./components/IntelligentParsing.vue";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { qcckGet, qcckDelete } from "@/api/qcckApi.js"; import { qcckGet, qcckDelete } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance } from "vue"; import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { D_GS_RQFJ_LX, D_GS_RQFJ_FXDJ, D_BZ_SF, D_GS_RQFJ_FXLB } = proxy.$dict( const { D_GS_RQFJ_LX, D_GS_RQFJ_FXDJ, D_BZ_SF, D_GS_RQFJ_FXLB } = proxy.$dict( "D_GS_RQFJ_FXDJ", "D_GS_RQFJ_LX", "D_GS_RQFJ_FXDJ", "D_BZ_SF", "D_GS_RQFJ_FXLB"); //获取字典数据
"D_GS_RQFJ_FXDJ", const showDialog = ref(false)
"D_GS_RQFJ_LX", const modelList = ref()
"D_GS_RQFJ_FXDJ",
"D_BZ_SF",
"D_GS_RQFJ_FXLB"
); //获取字典数据
const searchConfiger = ref([ const searchConfiger = ref([
{ {
label: "管辖部门", label: "管辖部门",
@ -121,25 +125,11 @@ const searchConfiger = ref([
options: D_BZ_SF options: D_BZ_SF
} }
]); ]);
const isImport = ref(false); const active = ref('');
const checkData = reactive({ const btnsList = reactive(["级别变更","警种变更","指定分配","添加标签","导出","批量删除"]);
active:'',
list: ["警情", "人力情报", "线索", "民警处置文本", "交通事故"]
});
const btnsList = reactive([
"级别变更",
"警种变更",
"指定分配",
"添加标签",
"导出",
"批量删除"
]);
const chooselx = ref(""); const chooselx = ref("");
const isShow = ref(false);
const idsTop = ref([]); const idsTop = ref([]);
const ids = ref([]); const ids = ref([]);
const addFormDiloag = ref(); const addFormDiloag = ref();
const IntelligentParsingRef = ref(); const IntelligentParsingRef = ref();
const searchBox = ref(); const searchBox = ref();
@ -180,42 +170,12 @@ const pageData = reactive({
{ label: "管辖单位", prop: "gxDwDm", showOverflowTooltip: true }, { label: "管辖单位", prop: "gxDwDm", showOverflowTooltip: true },
{ label: "管控民警", prop: "gxMj", showOverflowTooltip: true }, { label: "管控民警", prop: "gxMj", showOverflowTooltip: true },
{ label: "责任部门", prop: "ssbm", showOverflowTooltip: true }, { label: "责任部门", prop: "ssbm", showOverflowTooltip: true },
{ { label: "标签", prop: "bqList", showSolt: true, showOverflowTooltip: true},
label: "标签", { label: "风险等级", prop: "fxDj", showOverflowTooltip: true, showSolt: true},
prop: "bqList", { label: "风险类别", prop: "fxLb", showOverflowTooltip: true, showSolt: true},
showOverflowTooltip: true, { label: "是否关注", prop: "sfGz", showOverflowTooltip: true, showSolt: true},
showSolt: true { label: "是否转布控人员", prop: "sfZbkry", showOverflowTooltip: true, showSolt: true},
}, { label: "是否转重点人员", prop: "sfZzdry", showOverflowTooltip: true, showSolt: true}
{
label: "风险等级",
prop: "fxDj",
showOverflowTooltip: true,
showSolt: true
},
{
label: "风险类别",
prop: "fxLb",
showOverflowTooltip: true,
showSolt: true
},
{
label: "是否关注",
prop: "sfGz",
showOverflowTooltip: true,
showSolt: true
},
{
label: "是否转布控人员",
prop: "sfZbkry",
showOverflowTooltip: true,
showSolt: true
},
{
label: "是否转重点人员",
prop: "sfZzdry",
showOverflowTooltip: true,
showSolt: true
}
] ]
}); });
@ -239,31 +199,26 @@ const changeSize = (val) => {
const getList = () => { const getList = () => {
pageData.tableConfiger.loading = true; pageData.tableConfiger.loading = true;
let data = { ...queryFrom.value }; let data = { ...queryFrom.value };
let url = "/mosty-gsxt/tbGsxtRqfjNr/selectPage"; qcckGet(data, "/mosty-gsxt/tbGsxtRqfjNr/selectPage").then((res) => {
qcckGet(data, url) pageData.tableData = res.records || [];
.then((res) => { pageData.tableConfiger.loading = false;
pageData.tableData = res.records || []; }).catch(() => {
pageData.tableConfiger.loading = false; pageData.tableConfiger.loading = false;
}) });
.catch(() => {
pageData.tableConfiger.loading = false;
});
}; };
//获取模型识别列表 //获取模型识别列表
const getModelList = () => { const getModelList = () => {
let data = { ...pageData.pageConfiger }; let data = { ...pageData.pageConfiger };
pageData.tableConfiger0.loading = true; pageData.tableConfiger0.loading = true;
qcckGet(data, "/mosty-gsxt/tbGsxtRqfjRy/selectPage") qcckGet(data, "/mosty-gsxt/tbGsxtRqfjRy/selectPage").then((res) => {
.then((res) => { pageData.tableConfiger0.loading = false;
pageData.tableConfiger0.loading = false; pageData.tableData2 = res.records || [];
pageData.tableData2 = res.records || []; pageData.total = res.total;
pageData.total = res.total; ids.value = [];
ids.value = []; }).catch(() => {
}) pageData.tableConfiger0.loading = false;
.catch(() => { });
pageData.tableConfiger0.loading = false;
});
}; };
//新增- 编辑 //新增- 编辑
const handleData = (type, row) => { const handleData = (type, row) => {
@ -318,8 +273,7 @@ const chooseType = (val) => {
// download("/mosty-api/mosty-gsxt/tbGsxtRqfjRy/exportRyfjFxjg", {"bkBt":"1"},`模型智能识别/LP解析结果_${new Date().getTime()}.xlsx`); // download("/mosty-api/mosty-gsxt/tbGsxtRqfjRy/exportRyfjFxjg", {"bkBt":"1"},`模型智能识别/LP解析结果_${new Date().getTime()}.xlsx`);
break; break;
case "批量删除": case "批量删除":
if (ids.value.length == 0) if (ids.value.length == 0) return ElMessage.warning("请选择对应删除的数据");
return ElMessage.warning("请选择对应删除的数据");
ids.value.forEach((id) => { ids.value.forEach((id) => {
deleteRowBottom(id); deleteRowBottom(id);
}); });
@ -327,9 +281,16 @@ const chooseType = (val) => {
} }
}; };
const changeRadio = () =>{
showDialog.value = true;
nextTick(()=>{
modelList.value.init(active.value)
})
}
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight2 = pageData.tableHeight2 = window.innerHeight - searchBox.value.offsetHeight - 650;
window.innerHeight - searchBox.value.offsetHeight - 650;
window.onresize = function () { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };

View File

@ -19,11 +19,7 @@
<script setup> <script setup>
import emitter from "@/utils/eventBus.js"; import emitter from "@/utils/eventBus.js";
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js"; import { defineProps, defineEmits } from "vue";
import Search from "@/components/aboutTable/Search.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import { ref, defineProps, defineEmits, reactive, onMounted } from "vue";
import { TRUE } from "ol/functions";
const emits = defineEmits(["update:modelValue", "close"]); const emits = defineEmits(["update:modelValue", "close"]);
const props = defineProps({ const props = defineProps({
title: { title: {