代码提交

This commit is contained in:
lixiaobang 2026-01-14 17:55:23 +08:00
parent 334c84d515
commit 13bde0497e
7 changed files with 533 additions and 134 deletions

View File

@ -0,0 +1,26 @@
import request from '@/utils/request'
// 查询部门列表
export function listDept(query) {
return request({
url: '/system/dept/audit/list',
method: 'get',
params: query
})
}
//审核部门
export function auditDept(data) {
return request({
url: '/system/dept/audit/' + data.id,
method: 'put',
data: data
})
}
//修改部门禁用启用
export function updateDept(data) {
return request({
url: '/system/dept',
method: 'put',
data: data
})
}

View File

@ -0,0 +1,10 @@
import request from '@/utils/request'
// 查询符合管理列表
export function listProjectCompletionReview(query) {
return request({
url: '/manage/project/completionReview/list',
method: 'get',
params: query
})
}

View File

@ -2,7 +2,7 @@
<template> <template>
<el-dialog title="审核节点信息" v-model="props.show" @close="handleClose" width="600px"> <el-dialog title="审核节点信息" v-model="props.show" @close="handleClose" width="600px">
<div class="Cneter-box"> <div class="Cneter-box">
<el-form :model="formData" label-width="120px" class="review-form" label-position="top"> <el-form :model="formData" :rules="formRules" ref="formRef" label-width="120px" class="review-form" label-position="top">
<div class="section-title">基础信息</div> <div class="section-title">基础信息</div>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
@ -12,7 +12,7 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="节点类型"> <el-form-item label="节点类型">
<el-tag type="primary" size="large">部门</el-tag> <el-tag type="primary" size="large">{{ getNodeTypeLabel(formData.nodeType) }}</el-tag>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -36,21 +36,21 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="联系方式"> <el-form-item label="联系方式">
<el-input v-model="formData.contact" disabled /> <el-input v-model="formData.phone" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<div class="section-title">审核操作</div> <div class="section-title">审核操作</div>
<el-form-item label="审核结果"> <el-form-item label="审核结果" prop="auditStatus">
<el-radio-group v-model="formData.reviewResult"> <el-radio-group v-model="formData.auditStatus">
<el-radio label="通过">通过</el-radio> <el-radio :label="1">审核通过</el-radio>
<el-radio label="退回">退回</el-radio> <el-radio :label="2">退回</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="审核意见"> <el-form-item label="审核意见" prop="auditOpinion">
<el-input <el-input
v-model="formData.reviewComment" v-model="formData.auditOpinion"
type="textarea" type="textarea"
:rows="4" :rows="4"
placeholder="请输入审核意见 (退回时必填)" placeholder="请输入审核意见 (退回时必填)"
@ -68,7 +68,10 @@
</template> </template>
<script setup> <script setup>
import { ref } from 'vue' import { ref, watch } from 'vue'
import { ElMessage } from 'element-plus'
import { auditDept } from '@/api/Logistics/filingReview'
const props = defineProps({ const props = defineProps({
show: { show: {
type: Boolean, type: Boolean,
@ -77,32 +80,172 @@ const props = defineProps({
CloseDialog: { CloseDialog: {
type: Function, type: Function,
default: () => { } default: () => { }
},
rowData: {
type: Object,
default: () => ({})
} }
}) })
//
const formRef = ref(null)
//
const formRules = {
auditStatus: [
{ required: true, message: '请选择审核结果', trigger: 'change' }
],
auditOpinion: [
{
validator: (rule, value, callback) => {
if (formData.value.auditStatus === 2 && !value) {
callback(new Error('退回时审核意见为必填项'))
} else {
callback()
}
},
trigger: ['blur', 'change']
}
]
}
// //
const handleClose = () => { const handleClose = () => {
//
formData.value = {
nodeName: '',
parentNode: '',
submitter: '',
phone: '',
createTime: '',
nodeType: '1',
auditStatus: 1,
auditOpinion: ''
}
//
if (formRef.value) {
formRef.value.clearValidate()
}
props.CloseDialog() props.CloseDialog()
} }
// //
const formData = ref({ const formData = ref({
nodeName: '后勤保障部 - 设备科', nodeName: '',
parentNode: '后勤保障部', parentNode: '',
submitter: '李建国', submitter: '',
contact: '138****8888', phone: '',
createTime: '2023-10-15 14:25', createTime: '',
reviewResult: '通过', nodeType: '1',
reviewComment: '' auditStatus: 1,
auditOpinion: ''
}) })
const handleSubmit = () => { //
// const nodeTypeMap = {
console.log('提交分配信息', formData.value) '1': '部门',
props.CloseDialog() '2': '楼层',
'3': '班组'
}
//
const getNodeTypeLabel = (value) => {
return nodeTypeMap[value] || '部门'
}
//
const initFormData = () => {
const rowData = props.rowData
if (rowData && Object.keys(rowData).length > 0) {
//
formData.value = {
nodeName: rowData.nodeName || rowData.projectName || rowData.deptName || '',
parentNode: rowData.parentNode || rowData.constructionUnit || rowData.parentName || '',
submitter: rowData.submitter || rowData.createBy || '',
phone: rowData.phone || '',
createTime: rowData.createTime || '',
nodeType: rowData.nodeType || '1',
auditStatus: 1,
auditOpinion: rowData.auditOpinion || rowData.remark || ''
}
} else {
//
formData.value = {
nodeName: '',
parentNode: '',
submitter: '',
phone: '',
createTime: '',
nodeType: '1',
auditStatus: 1,
auditOpinion: ''
}
}
}
// rowData
watch(() => props.rowData, () => {
initFormData()
}, { immediate: true, deep: true })
//
watch(() => props.show, (newVal) => {
if (newVal) {
initFormData()
//
if (formRef.value) {
formRef.value.clearValidate()
}
}
})
//
watch(() => formData.value.auditStatus, () => {
if (formRef.value) {
formRef.value.validateField('auditOpinion')
}
})
const handleSubmit = async () => {
//
if (!formRef.value) return
try {
await formRef.value.validate()
} catch (error) {
ElMessage.warning('请完善表单信息')
return
}
// 退
if (formData.value.auditStatus === 2 && !formData.value.auditOpinion) {
ElMessage.warning('退回时审核意见为必填项')
return
}
try {
//
const submitData = {
id: props.rowData.id || formData.value.id,
auditStatus: formData.value.auditStatus,
auditOpinion: formData.value.auditOpinion
}
const response = await auditDept(submitData)
if (response.code === 200) {
ElMessage.success('审核成功')
handleClose()
} else {
ElMessage.error(response.msg || '审核失败')
}
} catch (error) {
console.error('审核失败:', error)
ElMessage.error('审核失败,请稍后重试')
}
} }
</script> </script>

View File

@ -4,55 +4,70 @@
<div class="MainBox"> <div class="MainBox">
<el-form :model="queryForm" inline class="card-box mb-4"> <el-form :model="queryForm" inline class="card-box mb-4">
<el-form-item label="节点名称"> <el-form-item label="节点名称">
<el-input v-model="queryForm.nodeName" placeholder="请输入节点名称"></el-input> <el-input v-model="queryForm.deptName" placeholder="请输入节点名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="节点类型"> <!-- <el-form-item label="节点类型">
<el-select v-model="queryForm.nodeType" placeholder="请选择节点类型" clearable> <el-select v-model="queryForm.nodeType" placeholder="请选择节点类型" clearable>
<el-option v-for="item in nodeTypeList" :key="item.value" :label="item.label" <el-option v-for="item in nodeTypeList" :key="item.value" :label="item.label"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item> -->
<el-form-item label="提交时间"> <el-form-item label="提交时间">
<el-date-picker v-model="queryForm.dateRange" type="daterange" value-format="yyyy-MM-dd" <el-date-picker v-model="queryForm.dateRange" type="daterange" value-format="yyyy-MM-dd"
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker> range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="审核状态">
<el-select v-model="queryForm.auditStatus" placeholder="请选择审核状态" clearable>
<el-option label="待审核" value="0"></el-option>
<el-option label="已通过" value="1"></el-option>
<el-option label="已拒绝" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button size="default">重置</el-button> <el-button size="default" @click="resetQuery">重置</el-button>
<el-button type="primary" size="default">查询</el-button> <el-button type="primary" size="default" @click="handleQuery">查询</el-button>
<el-button type="primary" plain size="default">导出Excel</el-button> <el-button type="primary" plain size="default">导出Excel</el-button>
<el-button type="primary" plain size="default">打印</el-button> <el-button type="primary" plain size="default">打印</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="card-box"> <div class="card-box">
<el-table :data="tableData" class="mt-2"> <el-table :data="tableData" v-loading="loading" class="mt-2">
<el-table-column prop="userName" label="节点名称"></el-table-column> <el-table-column prop="deptName" label="节点名称"></el-table-column>
<el-table-column prop="departmentName" label="节点类型"></el-table-column> <el-table-column prop="nodeType" label="节点类型">
<el-table-column prop="roleName" label="所属上级"></el-table-column>
<el-table-column prop="projectScope" label="提交人"></el-table-column>
<el-table-column prop="phone" label="提交时间"></el-table-column>
<el-table-column prop="permissionDesc" label="权限说明"></el-table-column>
<el-table-column prop="reviewStatus" label="审核状态">
<template #default="scope"> <template #default="scope">
<el-tag :type="scope.row.reviewStatus === '待审核' ? 'primary' : 'danger'"> {{ getNodeTypeLabel(scope.row.nodeType) }}
{{ scope.row.reviewStatus === '待审核' ? '待审核' : '拒绝' }} </template>
</el-table-column>
<el-table-column prop="parentName" label="所属上级"></el-table-column>
<el-table-column prop="createBy" label="提交人"></el-table-column>
<el-table-column prop="createTime" label="提交时间"></el-table-column>
<!-- <el-table-column prop="remark" label="权限说明"></el-table-column> -->
<el-table-column prop="auditStatus" label="审核状态">
<template #default="scope">
<el-tag
:type="scope.row.auditStatus === '0' ? 'warning' : scope.row.auditStatus === '1' ? 'success' : 'danger'">
{{ scope.row.auditStatus === '0' ? '待审核' : scope.row.auditStatus === '1' ? '已通过' : '已拒绝' }}
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="status" label="状态"> <el-table-column prop="status" label="状态">
<template #default="scope"> <template #default="scope">
<el-tag :type="scope.row.status === '1' ? 'success' : 'danger'"> <el-tag :type="scope.row.status === '0' ? 'success' : 'danger'">
{{ scope.row.status === '1' ? '启用' : '禁用' }} {{ scope.row.status === '0' ? '正常' : '停用' }}
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="180"> <el-table-column label="操作" width="180">
<template #default="scope"> <template #default="scope">
<el-button size="small" type="primary" link @click="handleEdit(scope.row)">审核</el-button> <el-button size="small" type="primary" link @click="handleEdit(scope.row)">审核</el-button>
<el-button size="small" type="primary" link v-if="scope.row.status === '2'">启用</el-button> <el-button size="small" type="primary" link v-if="scope.row.status === '0'"
<el-button size="small" type="primary" link v-else>禁用</el-button> @click="handleStatusChange(scope.row, '1')">禁用</el-button>
<el-button size="small" type="primary" link v-else
@click="handleStatusChange(scope.row, '0')">启用</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -62,24 +77,29 @@
total }} total }}
</span> </span>
<el-pagination v-model:current-page="pageNum" v-model:page-size="pageSize" :page-sizes="[5, 10, 20]" <el-pagination v-model:current-page="pageNum" v-model:page-size="pageSize" :page-sizes="[5, 10, 20]"
:total="total" layout="prev, pager, next"></el-pagination> :total="total" layout="prev, pager, next" @size-change="getList"
@current-change="getList"></el-pagination>
</div> </div>
</div> </div>
<!-- 节点审核弹窗 --> <!-- 节点审核弹窗 -->
<DialogBox v-if="dialogShow" ref="dialogRef" :show="dialogShow" :CloseDialog="handleCancel" /> <DialogBox v-if="dialogShow" ref="dialogRef" :show="dialogShow" :CloseDialog="handleCancel" :rowData="currentRowData" />
</div> </div>
</template> </template>
<script setup name="Index"> <script setup name="Index">
import { ref } from "vue"; import { ref, onMounted } from "vue";
import { ElMessage } from "element-plus";
import DialogBox from "./DialogBox.vue"; import DialogBox from "./DialogBox.vue";
import { listDept, auditDept, updateDept } from "@/api/Logistics/filingReview.js";
import { listDept as getAllDeptList } from "@/api/system/dept.js";
// //
const queryForm = ref({ const queryForm = ref({
dateRange: [], dateRange: [],
nodeName: "", deptName: "",
nodeType: "" nodeType: "",
auditStatus: ""
}); });
@ -105,56 +125,158 @@ const nodeTypeList = ref([
]); ]);
// //
const tableData = ref([ const tableData = ref([]);
{
id: 1,
needBallheadNum: "1001",
projectName: "项目1",
returnStatus: "待审核",
returnUserName: "用户1",
submitEndTime: "2023-08-01 10:00:00",
userName: "张三",
departmentName: "工程部",
roleName: "工作票签发人",
projectScope: "项目1",
phone: "13800000000",
permissionDesc: "对项目1的工作票进行签发",
status: "1"
},
{
id: 2,
needBallheadNum: "1002",
projectName: "项目2",
returnStatus: "待审核",
returnUserName: "用户2",
submitEndTime: "2023-08-02 10:00:00",
userName: "李四",
departmentName: "安全监督部",
roleName: "危险作业票签发人",
projectScope: "项目2",
phone: "13900000000",
permissionDesc: "对项目2的危险作业票进行签发",
status: "2"
},
]);
const dialogShow = ref(false); // - const dialogShow = ref(false); // -
const currentRowData = ref({}); //
const pageNum = ref(1); // const pageNum = ref(1); //
const pageSize = ref(5); // const pageSize = ref(10); //
const total = ref(20); // const total = ref(0); //
const loading = ref(false); //
const allDeptList = ref([]); //
//
const getNodeTypeLabel = (value) => {
const item = nodeTypeList.value.find(item => item.value === value);
return item ? item.label : '部门';
}
//
const getAllDepts = async () => {
try {
const response = await getAllDeptList();
if (response.code === 200) {
allDeptList.value = response.data || response.rows || [];
}
} catch (error) {
//
console.warn('获取完整部门列表失败:', error);
}
};
//
const getList = () => {
loading.value = true;
const params = {
pageNum: pageNum.value,
pageSize: pageSize.value
};
//
if (queryForm.value.deptName) {
params.deptName = queryForm.value.deptName;
}
//
if (queryForm.value.nodeType) {
params.nodeType = queryForm.value.nodeType;
}
//
if (queryForm.value.dateRange && queryForm.value.dateRange.length === 2) {
params.startDate = queryForm.value.dateRange[0];
params.endDate = queryForm.value.dateRange[1];
}
//
if (queryForm.value.auditStatus !== "" && queryForm.value.auditStatus !== null && queryForm.value.auditStatus !== undefined) {
params.auditStatus = queryForm.value.auditStatus;
}
listDept(params).then(response => {
if (response.code === 200) {
const data = response.rows || response.data || [];
// parentId
tableData.value = data.map(item => {
if (item.parentId) {
//
const parentItem = allDeptList.value.find(d => d.deptId === item.parentId);
if (parentItem) {
item.parentName = parentItem.deptName;
} else {
//
const currentPageParent = data.find(d => d.deptId === item.parentId);
if (currentPageParent) {
item.parentName = currentPageParent.deptName;
}
}
}
return item;
});
total.value = response.total || 0;
}
loading.value = false;
}).catch(() => {
loading.value = false;
});
};
//
const handleQuery = () => {
pageNum.value = 1;
getList();
};
//
const resetQuery = () => {
queryForm.value = {
dateRange: [],
deptName: "",
nodeType: "",
auditStatus: ""
};
pageNum.value = 1;
getList();
};
// //
const handleAdd = (row) => { const handleAdd = (row) => {
dialogShow.value = true dialogShow.value = true
} }
// //
const handleEdit = (row) => { const handleEdit = (row) => {
//
currentRowData.value = {
id: row.deptId || row.id,
deptName: row.deptName || row.deptName,
parentNode: row.parentName || row.parentNode,
submitter: row.createBy || row.submitter,
phone: row.phone || '',
createTime: row.createTime || '',
nodeType: row.nodeType || '1',
auditStatus: row.auditStatus ? parseInt(row.auditStatus) : 1,
auditOpinion: row.auditOpinion || row.remark || ''
}
dialogShow.value = true dialogShow.value = true
} }
//
const handleAudit = (row, auditStatus) => {
auditDept({
id: row.id,
auditStatus: auditStatus
}).then(response => {
if (response.code === 200) {
ElMessage.success('审核成功');
getList();
}
});
};
// /
const handleStatusChange = (row, status) => {
updateDept({
...row,
status: status
}).then(response => {
if (response.code === 200) {
ElMessage.success(status === '1' ? '启用成功' : '禁用成功');
getList();
}
});
};
// //
const handleDetail = (row) => { const handleDetail = (row) => {
dialogShow.value = true dialogShow.value = true
@ -164,8 +286,20 @@ const handleDetail = (row) => {
const handleCancel = () => { const handleCancel = () => {
console.log('关闭弹窗') console.log('关闭弹窗')
dialogShow.value = false dialogShow.value = false
//
currentRowData.value = {}
//
getList();
} }
//
onMounted(async () => {
//
await getAllDepts();
//
getList();
});
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.MainBox { .MainBox {

View File

@ -50,6 +50,20 @@
</div> </div>
</template> </template>
</el-tree> </el-tree>
<!-- 分页组件 -->
<!-- <div class="pagination-container">
<span class="total-count">显示第 {{ (pageNum - 1) * pageSize + 1 }} {{ Math.min(pageNum * pageSize, total) }} 条记录 {{ total }} </span>
<el-pagination
v-model:current-page="pageNum"
v-model:page-size="pageSize"
:page-sizes="[10, 20, 30, 50]"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange"
@current-change="handlePageChange"
/>
</div> -->
</el-card> </el-card>
<!-- 添加或修改层级节点对话框 --> <!-- 添加或修改层级节点对话框 -->
@ -133,6 +147,11 @@ const queryParams = ref({
deptName: undefined deptName: undefined
}) })
//
const pageNum = ref(1) //
const pageSize = ref(1000) //
const total = ref(0) //
// //
const treeData = ref([]) const treeData = ref([])
@ -172,13 +191,25 @@ const getStatusTagType = (status) => {
/** 查询树形层级列表 */ /** 查询树形层级列表 */
function getList() { function getList() {
loading.value = true loading.value = true
listDept(queryParams.value).then(response => { //
const params = {
...queryParams.value,
pageNum: pageNum.value,
pageSize: pageSize.value
}
listDept(params).then(response => {
// //
let rawData = [] let rawData = []
if (response.data && Array.isArray(response.data)) { if (response.data && response.data.rows && Array.isArray(response.data.rows)) {
rawData = response.data.rows
total.value = response.data.total || 0
} else if (response.rows && Array.isArray(response.rows)) {
rawData = response.rows
total.value = response.total || 0
} else if (Array.isArray(response.data)) {
rawData = response.data rawData = response.data
} else if (Array.isArray(response)) { total.value = response.total || rawData.length
rawData = response
} }
// parentId使 handleTree // parentId使 handleTree
@ -252,8 +283,12 @@ function reset() {
/** 新增按钮操作 */ /** 新增按钮操作 */
function handleAdd(row) { function handleAdd(row) {
reset() reset()
listDept().then(response => { let params = {
deptOptions.value = proxy.handleTree(response.data, "deptId") pageNum: pageNum.value,
pageSize: 1000
}
listDept(params).then(response => {
deptOptions.value = proxy.handleTree(response.rows, "deptId")
}) })
if (row != undefined) { if (row != undefined) {
form.value.parentId = row.deptId form.value.parentId = row.deptId
@ -316,6 +351,7 @@ function handleDelete(row) {
/** 搜索按钮操作 */ /** 搜索按钮操作 */
function handleQuery() { function handleQuery() {
pageNum.value = 1
getList() getList()
} }
@ -324,9 +360,23 @@ function resetQuery() {
queryParams.value = { queryParams.value = {
deptName: undefined deptName: undefined
} }
pageNum.value = 1
handleQuery() handleQuery()
} }
/** 分页大小改变 */
function handleSizeChange(val) {
pageSize.value = val
pageNum.value = 1
getList()
}
/** 页码改变 */
function handlePageChange(val) {
pageNum.value = val
getList()
}
// //
onMounted(() => { onMounted(() => {
getList() getList()
@ -398,8 +448,8 @@ onMounted(() => {
} }
:deep(.el-card__header) { :deep(.el-card__header) {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); // background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: #ffffff; color: #000;
font-weight: 600; font-weight: 600;
font-size: 16px; font-size: 16px;
padding: 16px 20px; padding: 16px 20px;
@ -408,6 +458,9 @@ onMounted(() => {
:deep(.el-card__body) { :deep(.el-card__body) {
padding: 20px; padding: 20px;
display: flex;
flex-direction: column;
height: calc(100% - 60px);
} }
// //
@ -553,6 +606,29 @@ onMounted(() => {
} }
} }
//
.pagination-container {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 20px;
padding: 16px 20px;
background: #f8f9fa;
border-radius: 8px;
border-top: 1px solid #e4e7ed;
.total-count {
color: #606266;
font-size: 14px;
}
:deep(.el-pagination) {
.el-pagination__total {
color: #606266;
}
}
}
// //
:deep(.el-dialog) { :deep(.el-dialog) {
border-radius: 12px; border-radius: 12px;

View File

@ -17,13 +17,13 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button size="default">重置</el-button> <el-button size="default" @click="resetQuery">重置</el-button>
<el-button type="primary" size="default">查询</el-button> <el-button type="primary" size="default" @click="handleQuery">查询</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="card-box"> <div class="card-box">
<el-table :data="tableData" class="mt-2"> <el-table :data="tableData" v-loading="loading" class="mt-2">
<el-table-column prop="projectName" label="项目名称"></el-table-column> <el-table-column prop="projectName" label="项目名称"></el-table-column>
<el-table-column prop="constructionUnit" label="施工单位"></el-table-column> <el-table-column prop="constructionUnit" label="施工单位"></el-table-column>
<el-table-column prop="workLocation" label="作业地点"></el-table-column> <el-table-column prop="workLocation" label="作业地点"></el-table-column>
@ -61,15 +61,17 @@
total }} total }}
</span> </span>
<el-pagination v-model:current-page="pageNum" v-model:page-size="pageSize" :page-sizes="[5, 10, 20]" <el-pagination v-model:current-page="pageNum" v-model:page-size="pageSize" :page-sizes="[5, 10, 20]"
:total="total" layout="prev, pager, next"></el-pagination> :total="total" layout="prev, pager, next" @size-change="handleQuery" @current-change="handleQuery"></el-pagination>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script setup name="Index"> <script setup name="Index">
import { ref } from "vue"; import { ref, onMounted } from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { listProjectCompletionReview } from "@/api/tenement/tenement";
const router = useRouter(); const router = useRouter();
@ -98,45 +100,46 @@ const StatusList = ref([
]); ]);
// //
const tableData = ref([ const tableData = ref([]);
{ const loading = ref(false);
id: 1,
projectName: "项目1",
constructionUnit: "施工单位1",
workLocation: "作业地点1",
supervisorReviewStatus: "已完成",
ballheadStatus: "已入库",
reviewStatus: "已完成复核",
submitEndTime: "2023-08-01 10:00:00"
},
{
id: 2,
projectName: "项目2",
constructionUnit: "施工单位2",
workLocation: "作业地点2",
supervisorReviewStatus: "待完成",
ballheadStatus: "待入库",
reviewStatus: "待复核",
submitEndTime: "2023-08-02 10:00:00",
returnStatus: "待回收"
},
{
id: 3,
projectName: "项目3",
constructionUnit: "施工单位3",
workLocation: "作业地点3",
supervisorReviewStatus: "待完成",
ballheadStatus: "待入库",
reviewStatus: "待复核",
submitEndTime: "2023-08-03 10:00:00",
returnStatus: "已回收待入库"
},
]);
const pageNum = ref(1); // const pageNum = ref(1); //
const pageSize = ref(5); // const pageSize = ref(5); //
const total = ref(20); // const total = ref(0); //
/** 查询列表 */
function getList() {
loading.value = true;
const params = {
pageNum: pageNum.value,
pageSize: pageSize.value,
projectName: queryForm.value.projectName,
constructionUnit: queryForm.value.constructionUnit,
reviewStatus: queryForm.value.reviewStatus
};
listProjectCompletionReview(params).then(response => {
tableData.value = response.rows || response.data || [];
total.value = response.total || 0;
loading.value = false;
}).catch(() => {
loading.value = false;
});
}
/** 搜索按钮操作 */
function handleQuery() {
pageNum.value = 1;
getList();
}
/** 重置按钮操作 */
function resetQuery() {
queryForm.value = {
projectName: "",
constructionUnit: "",
reviewStatus: ""
};
handleQuery();
}
// - // -
const handleReview = (row) => { const handleReview = (row) => {
@ -148,6 +151,11 @@ const handleReview = (row) => {
}) })
} }
//
onMounted(() => {
getList();
});

View File

@ -159,7 +159,9 @@ const data = reactive({
form: {}, form: {},
queryParams: { queryParams: {
deptName: undefined, deptName: undefined,
status: undefined status: undefined,
pageNum: 1,
pageSize: 1000
}, },
rules: { rules: {
parentId: [{ required: true, message: "上级部门不能为空", trigger: "blur" }], parentId: [{ required: true, message: "上级部门不能为空", trigger: "blur" }],
@ -176,7 +178,7 @@ const { queryParams, form, rules } = toRefs(data)
function getList() { function getList() {
loading.value = true loading.value = true
listDept(queryParams.value).then(response => { listDept(queryParams.value).then(response => {
deptList.value = proxy.handleTree(response.data, "deptId") deptList.value = proxy.handleTree(response.rows, "deptId")
loading.value = false loading.value = false
}) })
} }