代码提交
This commit is contained in:
parent
334c84d515
commit
13bde0497e
|
|
@ -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
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
// 查询符合管理列表
|
||||
export function listProjectCompletionReview(query) {
|
||||
return request({
|
||||
url: '/manage/project/completionReview/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
<template>
|
||||
<el-dialog title="审核节点信息" v-model="props.show" @close="handleClose" width="600px">
|
||||
<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>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
</el-col>
|
||||
<el-col :span="12">
|
||||
<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-col>
|
||||
</el-row>
|
||||
|
|
@ -36,21 +36,21 @@
|
|||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系方式">
|
||||
<el-input v-model="formData.contact" disabled />
|
||||
<el-input v-model="formData.phone" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<div class="section-title">审核操作</div>
|
||||
<el-form-item label="审核结果">
|
||||
<el-radio-group v-model="formData.reviewResult">
|
||||
<el-radio label="通过">通过</el-radio>
|
||||
<el-radio label="退回">退回</el-radio>
|
||||
<el-form-item label="审核结果" prop="auditStatus">
|
||||
<el-radio-group v-model="formData.auditStatus">
|
||||
<el-radio :label="1">审核通过</el-radio>
|
||||
<el-radio :label="2">退回</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="审核意见">
|
||||
<el-form-item label="审核意见" prop="auditOpinion">
|
||||
<el-input
|
||||
v-model="formData.reviewComment"
|
||||
v-model="formData.auditOpinion"
|
||||
type="textarea"
|
||||
:rows="4"
|
||||
placeholder="请输入审核意见 (退回时必填)"
|
||||
|
|
@ -68,7 +68,10 @@
|
|||
</template>
|
||||
|
||||
<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({
|
||||
show: {
|
||||
type: Boolean,
|
||||
|
|
@ -77,32 +80,172 @@ const props = defineProps({
|
|||
CloseDialog: {
|
||||
type: Function,
|
||||
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 = () => {
|
||||
// 重置表单数据
|
||||
formData.value = {
|
||||
nodeName: '',
|
||||
parentNode: '',
|
||||
submitter: '',
|
||||
phone: '',
|
||||
createTime: '',
|
||||
nodeType: '1',
|
||||
auditStatus: 1,
|
||||
auditOpinion: ''
|
||||
}
|
||||
// 清除表单验证
|
||||
if (formRef.value) {
|
||||
formRef.value.clearValidate()
|
||||
}
|
||||
props.CloseDialog()
|
||||
}
|
||||
|
||||
// 表单数据
|
||||
const formData = ref({
|
||||
nodeName: '后勤保障部 - 设备科',
|
||||
parentNode: '后勤保障部',
|
||||
submitter: '李建国',
|
||||
contact: '138****8888',
|
||||
createTime: '2023-10-15 14:25',
|
||||
reviewResult: '通过',
|
||||
reviewComment: ''
|
||||
nodeName: '',
|
||||
parentNode: '',
|
||||
submitter: '',
|
||||
phone: '',
|
||||
createTime: '',
|
||||
nodeType: '1',
|
||||
auditStatus: 1,
|
||||
auditOpinion: ''
|
||||
})
|
||||
|
||||
const handleSubmit = () => {
|
||||
// 提交逻辑
|
||||
console.log('提交分配信息', formData.value)
|
||||
props.CloseDialog()
|
||||
// 节点类型映射
|
||||
const nodeTypeMap = {
|
||||
'1': '部门',
|
||||
'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>
|
||||
|
|
|
|||
|
|
@ -4,55 +4,70 @@
|
|||
<div class="MainBox">
|
||||
<el-form :model="queryForm" inline class="card-box mb-4">
|
||||
<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 label="节点类型">
|
||||
<!-- <el-form-item label="节点类型">
|
||||
<el-select v-model="queryForm.nodeType" placeholder="请选择节点类型" clearable>
|
||||
<el-option v-for="item in nodeTypeList" :key="item.value" :label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="提交时间">
|
||||
<el-date-picker v-model="queryForm.dateRange" type="daterange" value-format="yyyy-MM-dd"
|
||||
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
|
||||
</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-button size="default">重置</el-button>
|
||||
<el-button type="primary" size="default">查询</el-button>
|
||||
<el-button size="default" @click="resetQuery">重置</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">打印</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<div class="card-box">
|
||||
<el-table :data="tableData" class="mt-2">
|
||||
<el-table-column prop="userName" label="节点名称"></el-table-column>
|
||||
<el-table-column prop="departmentName" label="节点类型"></el-table-column>
|
||||
<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="审核状态">
|
||||
<el-table :data="tableData" v-loading="loading" class="mt-2">
|
||||
<el-table-column prop="deptName" label="节点名称"></el-table-column>
|
||||
<el-table-column prop="nodeType" label="节点类型">
|
||||
<template #default="scope">
|
||||
<el-tag :type="scope.row.reviewStatus === '待审核' ? 'primary' : 'danger'">
|
||||
{{ scope.row.reviewStatus === '待审核' ? '待审核' : '拒绝' }}
|
||||
{{ getNodeTypeLabel(scope.row.nodeType) }}
|
||||
</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>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="status" label="状态">
|
||||
<template #default="scope">
|
||||
<el-tag :type="scope.row.status === '1' ? 'success' : 'danger'">
|
||||
{{ scope.row.status === '1' ? '启用' : '禁用' }}
|
||||
<el-tag :type="scope.row.status === '0' ? 'success' : 'danger'">
|
||||
{{ scope.row.status === '0' ? '正常' : '停用' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="180">
|
||||
<template #default="scope">
|
||||
<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-else>禁用</el-button>
|
||||
<el-button size="small" type="primary" link v-if="scope.row.status === '0'"
|
||||
@click="handleStatusChange(scope.row, '1')">禁用</el-button>
|
||||
<el-button size="small" type="primary" link v-else
|
||||
@click="handleStatusChange(scope.row, '0')">启用</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
|
@ -62,24 +77,29 @@
|
|||
total }}
|
||||
条</span>
|
||||
<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>
|
||||
<!-- 节点审核弹窗 -->
|
||||
<DialogBox v-if="dialogShow" ref="dialogRef" :show="dialogShow" :CloseDialog="handleCancel" />
|
||||
<DialogBox v-if="dialogShow" ref="dialogRef" :show="dialogShow" :CloseDialog="handleCancel" :rowData="currentRowData" />
|
||||
</div>
|
||||
</template>
|
||||
<script setup name="Index">
|
||||
import { ref } from "vue";
|
||||
import { ref, onMounted } from "vue";
|
||||
import { ElMessage } from "element-plus";
|
||||
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({
|
||||
dateRange: [],
|
||||
nodeName: "",
|
||||
nodeType: ""
|
||||
deptName: "",
|
||||
nodeType: "",
|
||||
auditStatus: ""
|
||||
});
|
||||
|
||||
|
||||
|
|
@ -105,56 +125,158 @@ const nodeTypeList = 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 tableData = ref([]);
|
||||
const dialogShow = ref(false); // 入库审核弹窗-显示状态
|
||||
const currentRowData = ref({}); // 当前选中的行数据
|
||||
const pageNum = ref(1); // 当前页码
|
||||
const pageSize = ref(5); // 每页显示条数
|
||||
const total = ref(20); // 总记录数
|
||||
const pageSize = ref(10); // 每页显示条数
|
||||
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) => {
|
||||
dialogShow.value = true
|
||||
}
|
||||
|
||||
// 编辑签发人
|
||||
// 编辑签发人(审核)
|
||||
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
|
||||
}
|
||||
|
||||
// 审核部门
|
||||
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) => {
|
||||
dialogShow.value = true
|
||||
|
|
@ -164,8 +286,20 @@ const handleDetail = (row) => {
|
|||
const handleCancel = () => {
|
||||
console.log('关闭弹窗')
|
||||
dialogShow.value = false
|
||||
// 清空当前行数据
|
||||
currentRowData.value = {}
|
||||
// 关闭弹窗后刷新列表
|
||||
getList();
|
||||
}
|
||||
|
||||
// 组件挂载时获取列表
|
||||
onMounted(async () => {
|
||||
// 先获取完整的部门列表,用于映射父级名称
|
||||
await getAllDepts();
|
||||
// 然后获取分页列表
|
||||
getList();
|
||||
});
|
||||
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
.MainBox {
|
||||
|
|
|
|||
|
|
@ -50,6 +50,20 @@
|
|||
</div>
|
||||
</template>
|
||||
</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>
|
||||
|
||||
<!-- 添加或修改层级节点对话框 -->
|
||||
|
|
@ -133,6 +147,11 @@ const queryParams = ref({
|
|||
deptName: undefined
|
||||
})
|
||||
|
||||
// 分页参数
|
||||
const pageNum = ref(1) // 当前页码
|
||||
const pageSize = ref(1000) // 每页显示条数
|
||||
const total = ref(0) // 总记录数
|
||||
|
||||
// 树形结构数据
|
||||
const treeData = ref([])
|
||||
|
||||
|
|
@ -172,13 +191,25 @@ const getStatusTagType = (status) => {
|
|||
/** 查询树形层级列表 */
|
||||
function getList() {
|
||||
loading.value = true
|
||||
listDept(queryParams.value).then(response => {
|
||||
// 合并查询参数和分页参数
|
||||
const params = {
|
||||
...queryParams.value,
|
||||
pageNum: pageNum.value,
|
||||
pageSize: pageSize.value
|
||||
}
|
||||
|
||||
listDept(params).then(response => {
|
||||
// 获取原始数据
|
||||
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
|
||||
} else if (Array.isArray(response)) {
|
||||
rawData = response
|
||||
total.value = response.total || rawData.length
|
||||
}
|
||||
|
||||
// 如果数据是扁平结构(有 parentId),使用 handleTree 转换为树形结构
|
||||
|
|
@ -252,8 +283,12 @@ function reset() {
|
|||
/** 新增按钮操作 */
|
||||
function handleAdd(row) {
|
||||
reset()
|
||||
listDept().then(response => {
|
||||
deptOptions.value = proxy.handleTree(response.data, "deptId")
|
||||
let params = {
|
||||
pageNum: pageNum.value,
|
||||
pageSize: 1000
|
||||
}
|
||||
listDept(params).then(response => {
|
||||
deptOptions.value = proxy.handleTree(response.rows, "deptId")
|
||||
})
|
||||
if (row != undefined) {
|
||||
form.value.parentId = row.deptId
|
||||
|
|
@ -316,6 +351,7 @@ function handleDelete(row) {
|
|||
|
||||
/** 搜索按钮操作 */
|
||||
function handleQuery() {
|
||||
pageNum.value = 1
|
||||
getList()
|
||||
}
|
||||
|
||||
|
|
@ -324,9 +360,23 @@ function resetQuery() {
|
|||
queryParams.value = {
|
||||
deptName: undefined
|
||||
}
|
||||
pageNum.value = 1
|
||||
handleQuery()
|
||||
}
|
||||
|
||||
/** 分页大小改变 */
|
||||
function handleSizeChange(val) {
|
||||
pageSize.value = val
|
||||
pageNum.value = 1
|
||||
getList()
|
||||
}
|
||||
|
||||
/** 页码改变 */
|
||||
function handlePageChange(val) {
|
||||
pageNum.value = val
|
||||
getList()
|
||||
}
|
||||
|
||||
// 组件挂载时获取数据
|
||||
onMounted(() => {
|
||||
getList()
|
||||
|
|
@ -398,8 +448,8 @@ onMounted(() => {
|
|||
}
|
||||
|
||||
:deep(.el-card__header) {
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
color: #ffffff;
|
||||
// background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
color: #000;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
padding: 16px 20px;
|
||||
|
|
@ -408,6 +458,9 @@ onMounted(() => {
|
|||
|
||||
:deep(.el-card__body) {
|
||||
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) {
|
||||
border-radius: 12px;
|
||||
|
|
|
|||
|
|
@ -17,13 +17,13 @@
|
|||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button size="default">重置</el-button>
|
||||
<el-button type="primary" size="default">查询</el-button>
|
||||
<el-button size="default" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" size="default" @click="handleQuery">查询</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<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="constructionUnit" label="施工单位"></el-table-column>
|
||||
<el-table-column prop="workLocation" label="作业地点"></el-table-column>
|
||||
|
|
@ -61,15 +61,17 @@
|
|||
total }}
|
||||
条</span>
|
||||
<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>
|
||||
</template>
|
||||
<script setup name="Index">
|
||||
import { ref } from "vue";
|
||||
import { ref, onMounted } from "vue";
|
||||
import { useRouter } from "vue-router";
|
||||
import { listProjectCompletionReview } from "@/api/tenement/tenement";
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
|
||||
|
|
@ -98,45 +100,46 @@ const StatusList = ref([
|
|||
]);
|
||||
|
||||
// 表格数据
|
||||
const tableData = ref([
|
||||
{
|
||||
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 tableData = ref([]);
|
||||
const loading = ref(false);
|
||||
const pageNum = ref(1); // 当前页码
|
||||
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) => {
|
||||
|
|
@ -148,6 +151,11 @@ const handleReview = (row) => {
|
|||
})
|
||||
}
|
||||
|
||||
// 组件挂载时获取数据
|
||||
onMounted(() => {
|
||||
getList();
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -159,7 +159,9 @@ const data = reactive({
|
|||
form: {},
|
||||
queryParams: {
|
||||
deptName: undefined,
|
||||
status: undefined
|
||||
status: undefined,
|
||||
pageNum: 1,
|
||||
pageSize: 1000
|
||||
},
|
||||
rules: {
|
||||
parentId: [{ required: true, message: "上级部门不能为空", trigger: "blur" }],
|
||||
|
|
@ -176,7 +178,7 @@ const { queryParams, form, rules } = toRefs(data)
|
|||
function getList() {
|
||||
loading.value = true
|
||||
listDept(queryParams.value).then(response => {
|
||||
deptList.value = proxy.handleTree(response.data, "deptId")
|
||||
deptList.value = proxy.handleTree(response.rows, "deptId")
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue