This commit is contained in:
lcw
2025-09-03 14:43:40 +08:00
parent 1c6bbffc3b
commit 24c6a24a4f
6 changed files with 450 additions and 29 deletions

View File

@ -17,8 +17,10 @@
<template #jqlbdm="{ row }">
<DictTag :tag="false" :value="row.jqlbdm" :options="dict.JQLB" />
</template>
</MyTable>
<template #controls="{ row }">
<el-link type="primary" @click="addEdit( row)">详情</el-link>
</template>
</MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
@ -26,6 +28,7 @@
</div>
</div>
<Particulars ref="particulars" :dic="dict"/>
</div>
</template>
@ -33,6 +36,7 @@
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue";
import Particulars from "./particulars.vue";
import { qcckPost } from "@/api/qcckApi.js";
import { ref, reactive, nextTick, getCurrentInstance } from 'vue';
import { useRouter, useRoute } from 'vue-router'
@ -58,13 +62,12 @@ const onSearch = (val) => {
const router = useRouter()
const route = useRoute()
const pageData = reactive({
tableData: [], //表格数据
tableData: [{ypmc:"xxx"}], //表格数据
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "null",
loading: false,
haveControls: false
},
total: 0,
pageConfiger: {
@ -136,7 +139,10 @@ const init = (val, lxs) => {
tabHeightFn()
})
}
const particulars=ref()
const addEdit = (row) => {
particulars.value.init(row)
}
defineExpose({ init })
</script>

View File

@ -0,0 +1,253 @@
<template>
<el-dialog
:title="titleValue"
width="1400px"
:model-value="modelValue"
append-to-body
@close="closed"
>
<div>
<el-form :model="listQuery" class="mosty-from-wrap" :inline="true">
<el-form-item label="报告名称">
<el-input
placeholder="请输入报告名称"
v-model="listQuery.bgmc"
clearable
></el-input>
</el-form-item>
<el-form-item>
<el-button type="success" @click="handleFilter">查询</el-button>
<el-button type="info" @click="reset"> 重置 </el-button>
</el-form-item>
</el-form>
<div
class="tabBox"
:class="props.Single ? 'tabBoxRadio' : ''"
:key="keyVal"
style="margin-top: 0px"
>
<el-table
ref="multipleUserRef"
@selection-change="handleSelectionChange"
:data="tableData"
v-loading="loading"
border
:row-key="keyid"
style="width: 100%"
height="450"
>
<!-- <el-table-column
type="selection"
width="55"
:reserve-selection="true"
/> -->
<el-table-column prop="bgmc" align="center" label="报告名称" />
<el-table-column prop="scsj" align="center" label="保存时间" />
<el-table-column align="center" label="操作">
<template #default="{ row }">
<el-button type="primary" size="mini" @click="deletBg(row)">删除</el-button>
<el-button type="primary" size="mini" @click="onComfirm(row.bgnr)">详情</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="fenye" :style="{ top: tableHeight + 'px' }">
<el-pagination
class="pagination"
@pageSize-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="listQuery.pageCurrent"
:page-sizes="[10, 20, 50, 100]"
:page-pageSize="listQuery.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
></el-pagination>
</div>
</div>
<template #footer>
<div class="dialog-footer">
<el-button @click="closed">取消</el-button>
<!-- <el-button type="primary" @click="onComfirm">确认</el-button> -->
</div>
</template>
</el-dialog>
</template>
<script setup>
import { ElMessage } from 'element-plus'
import { qcckGet ,qcckDelete} from "@/api/qcckApi.js";
import { defineProps, ref, getCurrentInstance, watch } from "vue";
const { proxy } = getCurrentInstance();
const props = defineProps({
modelValue: {
type: Boolean,
default: false
},
titleValue: {
type: String,
default: "查看报告"
},
LeaderType: {
type: String,
default: ""
},
//是否单选
Single: {
type: Boolean,
default: true
},
roleIds: {
type: Array,
default: []
}, chageData: {
type: String,
default: ""
}
});
const loading = ref(false);
const total = ref(0);
const listQuery = ref({
pageCurrent: 1,
pageSize: 20
});
const keyVal = ref();
const multipleUserRef = ref(null);
const multipleSelectionUser = ref([]);
const tableData = ref([]);
const emits = defineEmits(["update:modelValue", "choosed"]);
const keyid = (row) => {
return row.id;
};
const closed = () => {
emits("update:modelValue", false);
};
const reset = () => {
listQuery.value = { pageCurrent: 1, pageSize: 20 };
getListData();
};
// 为用户分配角色
const onComfirm = (val) => {
// const userList = multipleSelectionUser.value;
// let list = [];
// let listId = [];
// userList.forEach((val) => {
// if (listId.indexOf(val.id) == -1) {
// list.push(val);
// listId.push(val.id);
// }
// });
emits("choosed", val);
closed();
};
/**
* pageSize 改变触发
*/
const handleSizeChange = (currentSize) => {
listQuery.value.pageSize = currentSize;
getListData();
};
/**
* 页码改变触发
*/
const handleCurrentChange = (currentPage) => {
listQuery.value.pageCurrent = currentPage;
getListData();
};
const chageDatas=ref()
// watch(() => props.chageData, (val) => {
// chageDatas.value = val;
// getListData()
// },{deep:true,immediate:true})
const getListData = () => {
keyVal.value++;
loading.value = true;
const params = { ...listQuery.value,ypid:chageDatas.value};
qcckGet(params, "/mosty-gsxt/gsxtYpbg/getPageList")
.then((res) => {
loading.value = false;
tableData.value = res.records || [];
total.value = res.total;
multipleUser();
})
.catch(() => {
loading.value = false;
});
};
//列表回显
function multipleUser() {
tableData.value.forEach((item) => {
multipleUserRef.value.toggleRowSelection(item, false);
if (props.roleIds.some((id) => id == item.id)) {
multipleUserRef.value.toggleRowSelection(item, true);
}
});
}
const handleFilter = () => {
listQuery.value.pageCurrent = 1;
getListData();
};
const handleSelectionChange = (val) => {
if (props.Single) {
if (val.length > 1) {
let del_row = val.shift();
multipleUserRef.value.toggleRowSelection(del_row, false);
}
multipleSelectionUser.value = val;
} else {
multipleSelectionUser.value = val;
}
};
// 删除
const deletBg = (val) => {
const id = { ids: [val.id] }
proxy.$confirm('确定删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
qcckDelete(id, `/mosty-gsxt/gsxtYpbg/deleteEntity`).then((res) => {
getListData();
ElMessage.success("删除成功");
})
}).catch(() => {
ElMessage({
type: 'info',
message: '已取消删除'
});
});
}
watch(
() => props.modelValue,
(val) => {
if (val) {
chageDatas.value = props.chageData;
console.log(chageDatas.value );
handleFilter();
}
},
{ immediate: true }
);
</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;
}
</style>

View File

@ -0,0 +1,111 @@
<template>
<div class="dialog" v-if="dialogForm">
<div class="head_box">
<div></div>
<div>
<el-button @click="close">关闭</el-button>
</div>
</div>
<div class="form_cnt">
<FormMessage v-model="listQuery" :formList="formData" ref="elform" />
</div>
</div>
</template>
<script setup>
import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { qcckGet } from "@/api/qcckApi.js";
import {
ref,
defineExpose,
reactive,
onMounted,
defineEmits,
} from "vue";
const emit = defineEmits(["change"]);
const props = defineProps({
dic: Object
});
const dialogForm = ref(false); //弹窗
const formData = ref([
{ label: "报警电话", prop: "bjdh", type: "input" },
{ label: "报警地址", prop: "bjdz", type: "input" },
{ label: "报警内容", prop: "bjnr", type: "input" },
{ label: "报警人名称", prop: "bjrmc", type: "input" },
{ label: "报警人证件号码", prop: "bjrzjhm", type: "input" },
{ label: "报警时间", prop: "bjsj", type: "input" },
{ label: "接警完成时间", prop: "jjwcsj", type: "input" },
{ label: "警情子类", prop: "jqzldm", type: "select", options: props.dic.JQZL },
{ label: "警情细类", prop: "jqxldm", type: "select", options: props.dic.JQXL },
{ label: "警情类型", prop: "jqlxdm", type: "select",options: props.dic.JQLX },
{ label: "警情来源", prop: "jqlyfs", type: "select",options: props.dic.D_BZ_JQLY },
{ label: "警情类别", prop: "jqlbdm", type: "select", options: props.dic.JQLB },
// { label: "警情等级", prop: "jqdjdm", type: "select", options: props.dic.JQXL },
{ label: "警情处理状态", prop: "jqclztdm", type: "select",options: props.dic.JQCLJG },
]);
const listQuery = ref({}); //表单
const elform = ref();
const pageForm = reactive({});
onMounted(() => {
tabHeightFn();
});
//
// 初始化数据
const init = (row) => {
dialogForm.value = true;
qcckGet({}, `/mosty-gsxt/jjdbYp/getInfo/${row.id}`).then(res => {
listQuery.value = res;
}).catch(() => {
})
};
// 关闭
const close = () => {
listQuery.value = {};
dialogForm.value = false;
};
// 表格高度计算
const tabHeightFn = () => {
pageForm.tableHeight = window.innerHeight - 720;
window.onresize = function () {
tabHeightFn();
};
};
defineExpose({ init });
</script>
<style lang="scss" scoped>
@import "~@/assets/css/layout.scss";
@import "~@/assets/css/element-plus.scss";
::v-deep .el-tabs--card>.el-tabs__header .el-tabs__item.is-active {
color: #0072ff;
background: rgba(0, 114, 255, 0.3);
}
.boxlist {
width: 99%;
height: 225px;
margin-top: 10px;
overflow: hidden;
}
::v-deep .avatar-uploader {
display: flex;
align-items: center;
}
::v-deep .el-upload-list {
margin-left: 20px;
display: flex;
align-items: center;
}
::v-deep .el-upload-list__item-name .el-icon {
top: 3px;
}
</style>