更新数据

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" >
<span class="title">{{ title }}重点人管理</span>
<div>
<el-button
type="primary"
size="small"
:loading="loading"
@click="submit"
v-if="title.value !== '详情'"
>保存</el-button
>
<el-button type="primary" size="small" :loading="loading" @click="submit" v-if="!disabled">保存</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 :disabled="disabled" v-model="listQuery" :formList="formData" ref="elform" :rules="rules"></FormMessage>
</div>
</div>
</template>
<script setup>
import MyTable from "@/components/aboutTable/MyTable.vue";
import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js";
import * as rule from "@/utils/rules.js";
import {
ref,
defineExpose,
reactive,
onMounted,
defineEmits,
getCurrentInstance,
nextTick
} from "vue";
import { selectUserDeptPage } from "@/api/user-manage";
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
import { ref, defineExpose, defineEmits, getCurrentInstance } from "vue";
const emit = defineEmits(["updateDate"]);
const props = defineProps({
dic: Object
});
const { proxy } = getCurrentInstance();
const { D_GS_RQFJ_LX } = proxy.$dict("D_GS_RQFJ_LX"); //获取字典数据
const tagDialog = ref();
const dialogForm = ref(false); //弹窗
const formData = ref([
{ label: "发掘类型", prop: "fjLx", type: "select", options: D_GS_RQFJ_LX },
@ -59,28 +32,16 @@ const listQuery = ref({}); //表单
const loading = ref(false);
const elform = ref();
const title = ref("");
const editpeo = ref();
const disabled = ref(false)
// 初始化数据
const init = (type, row) => {
dialogForm.value = true;
title.value = type == "add" ? "新增" : type == "info" ? "详情" : "编辑";
disabled.value = title.value == '详情' ? true : false ;
// 初始化表单数据,并根据详情页设置禁用状态
formData.value = [
{
label: "发掘类型",
prop: "fjLx",
type: "select",
options: D_GS_RQFJ_LX,
disabled: title.value === "详情"
},
{
label: "发掘文本",
prop: "fjWb",
type: "textarea",
width: "100%",
disabled: title.value === "详情"
}
{ label: "发掘类型", prop: "fjLx", type: "select", options: D_GS_RQFJ_LX },
{ label: "发掘文本", prop: "fjWb", type: "textarea", width: "100%" }
];
if (row) getDataById(row.id);
};
@ -94,19 +55,17 @@ const getDataById = (id) => {
// 提交
const submit = () => {
elform.value.submit((data) => {
let url =
title.value == "新增"
? "/mosty-gsxt/tbGsxtRqfjNr/save"
: "/mosty-gsxt/tbGsxtRqfjNr/update";
let url = title.value == "新增" ? "/mosty-gsxt/tbGsxtRqfjNr/save" : "/mosty-gsxt/tbGsxtRqfjNr/update";
let params = { ...data };
qcckPost(params, url)
.then((res) => {
proxy.$message({ type: "success", message: title.value + "成功" });
emit("onSearch");
close();
})
.catch(() => {});
loading.value = true;
qcckPost(params, url).then((res) => {
loading.value = false;
proxy.$message({ type: "success", message: title.value + "成功" });
emit("onSearch");
close();
}).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="left-menu">
<el-radio-group :disabled="isEdit" v-model="checkData.active">
<el-radio :label="it" v-for="it in checkData.list" :key="it">{{ it }}</el-radio>
<el-radio-group :disabled="isEdit" v-model="active" @change="changeRadio">
<el-radio :label="it.dm" v-for="it in D_GS_RQFJ_LX" :key="it.dm">{{ it.zdmc }}</el-radio>
</el-radio-group>
<div class="cancelBtn" @click="checkData.active = ''">取消</div>
<div class="cancelBtn" @click="active = ''">取消</div>
</div>
<!-- 右侧内容区 -->
<div class="right-content">
<Search :searchArr="searchConfiger" @submit="onSearch"> </Search>
<div class="tableCnt1 mb10 pl10 pr10">
<PageTitle title="发掘内容" style="color: #333"></PageTitle>
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger0" :controlsWidth="pageData.controlsWidth"
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger0"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseDataTop">
<template #fjLx="{ row }">
<DictTag :tag="false" :value="row.fjLx" :options="D_GS_RQFJ_LX" />
@ -32,15 +37,17 @@
<div class="tableCnt mb10 pl10 pr10">
<PageTitle title="模型智能识别/LP解析结果" style="color: #333"></PageTitle>
<div ref="searchBox" class="mb8">
<el-button :type="it == '批量删除' ? 'danger' : 'primary'" size="small" v-for="it in btnsList" :key="it"
@click="chooseType(it)">
{{ it }}
</el-button>
<el-button :type="it == '批量删除' ? 'danger' : 'primary'" size="small" v-for="it in btnsList" :key="it" @click="chooseType(it)">{{ it }}</el-button>
</div>
<div>
<MyTable :tableData="pageData.tableData2" :tableColumn="pageData.tableColumn2"
:tableHeight="pageData.tableHeight2" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth" @chooseData="chooseDataBottom">
<MyTable
:tableData="pageData.tableData2"
:tableColumn="pageData.tableColumn2"
:tableHeight="pageData.tableHeight2"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseDataBottom">
<template #bqList="{ row }">
<div v-if="row.bqList">
<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>
</template>
</MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight2" :pageConfiger="{
<Pages
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"></Pages>
@ -76,36 +87,29 @@
</div>
<!-- 弹窗智能分析 -->
<IntelligentParsing :tableData="pageData.tableData" ref="IntelligentParsingRef" @upadate="getModelList" />
<!-- 新增 -->
<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>
</template>
<script setup>
import ListDialog from './components/listDialog.vue'
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 MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue";
import addForm from "./components/addForm.vue";
import Model from "./components/model.vue";
import IntelligentParsing from "./components/IntelligentParsing.vue";
import { ElMessage } from "element-plus";
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 { 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"
); //获取字典数据
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"); //获取字典数据
const showDialog = ref(false)
const modelList = ref()
const searchConfiger = ref([
{
label: "管辖部门",
@ -121,25 +125,11 @@ const searchConfiger = ref([
options: D_BZ_SF
}
]);
const isImport = ref(false);
const checkData = reactive({
active:'',
list: ["警情", "人力情报", "线索", "民警处置文本", "交通事故"]
});
const btnsList = reactive([
"级别变更",
"警种变更",
"指定分配",
"添加标签",
"导出",
"批量删除"
]);
const active = ref('');
const btnsList = reactive(["级别变更","警种变更","指定分配","添加标签","导出","批量删除"]);
const chooselx = ref("");
const isShow = ref(false);
const idsTop = ref([]);
const ids = ref([]);
const addFormDiloag = ref();
const IntelligentParsingRef = ref();
const searchBox = ref();
@ -180,42 +170,12 @@ const pageData = reactive({
{ label: "管辖单位", prop: "gxDwDm", showOverflowTooltip: true },
{ label: "管控民警", prop: "gxMj", showOverflowTooltip: true },
{ label: "责任部门", prop: "ssbm", showOverflowTooltip: true },
{
label: "标签",
prop: "bqList",
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
}
{ label: "标签", prop: "bqList", showSolt: true, showOverflowTooltip: 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 = () => {
pageData.tableConfiger.loading = true;
let data = { ...queryFrom.value };
let url = "/mosty-gsxt/tbGsxtRqfjNr/selectPage";
qcckGet(data, url)
.then((res) => {
pageData.tableData = res.records || [];
pageData.tableConfiger.loading = false;
})
.catch(() => {
pageData.tableConfiger.loading = false;
});
qcckGet(data, "/mosty-gsxt/tbGsxtRqfjNr/selectPage").then((res) => {
pageData.tableData = res.records || [];
pageData.tableConfiger.loading = false;
}).catch(() => {
pageData.tableConfiger.loading = false;
});
};
//获取模型识别列表
const getModelList = () => {
let data = { ...pageData.pageConfiger };
pageData.tableConfiger0.loading = true;
qcckGet(data, "/mosty-gsxt/tbGsxtRqfjRy/selectPage")
.then((res) => {
pageData.tableConfiger0.loading = false;
pageData.tableData2 = res.records || [];
pageData.total = res.total;
ids.value = [];
})
.catch(() => {
pageData.tableConfiger0.loading = false;
});
qcckGet(data, "/mosty-gsxt/tbGsxtRqfjRy/selectPage").then((res) => {
pageData.tableConfiger0.loading = false;
pageData.tableData2 = res.records || [];
pageData.total = res.total;
ids.value = [];
}).catch(() => {
pageData.tableConfiger0.loading = false;
});
};
//新增- 编辑
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`);
break;
case "批量删除":
if (ids.value.length == 0)
return ElMessage.warning("请选择对应删除的数据");
if (ids.value.length == 0) return ElMessage.warning("请选择对应删除的数据");
ids.value.forEach((id) => {
deleteRowBottom(id);
});
@ -327,9 +281,16 @@ const chooseType = (val) => {
}
};
const changeRadio = () =>{
showDialog.value = true;
nextTick(()=>{
modelList.value.init(active.value)
})
}
const tabHeightFn = () => {
pageData.tableHeight2 =
window.innerHeight - searchBox.value.offsetHeight - 650;
pageData.tableHeight2 = window.innerHeight - searchBox.value.offsetHeight - 650;
window.onresize = function () {
tabHeightFn();
};

View File

@ -19,11 +19,7 @@
<script setup>
import emitter from "@/utils/eventBus.js";
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
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";
import { defineProps, defineEmits } from "vue";
const emits = defineEmits(["update:modelValue", "close"]);
const props = defineProps({
title: {