Compare commits

...

4 Commits

Author SHA1 Message Date
liangbin 8ef3a7c6f1 refactor(用户管理): 统一角色显示字段为roleNames并更新单位管理相关字段
将用户管理和审核中的角色显示字段从remark改为roleNames
在单位管理中将unitName和unitType字段更新为deptName和deptType
同时更新相关API调用和类型判断方法
2026-01-30 13:37:35 +08:00
liangbin 06b10364fa feat(用户审核): 增加用户审核弹窗及驳回状态处理
- 在用户管理页面添加审核弹窗,支持通过/驳回操作
- 新增驳回状态(3)及相关状态显示处理
- 修改查询参数username为userName以保持一致性
- 调整时间范围选择器的日期格式为YYYY-MM-DD
- 将审批按钮点击事件改为打开弹窗方式
2026-01-30 10:59:09 +08:00
liangbin 37747116ed refactor(用户管理): 优化用户管理和审核功能
- 在用户管理模块中移除未使用的导入并优化用户对话框逻辑
- 在用户审核模块中重构查询表单和状态显示,添加重置功能
- 完善用户对话框的编辑功能,包括树形选择器高亮和表单验证
2026-01-30 10:04:32 +08:00
liangbin f56c7923df feat(工作票): 实现工作票签发审核功能
添加工作票API接口文件,包含列表和详情查询
修改路由配置和页面标题为"工作票签发审核"
完善列表页、详情页和弹窗的数据获取和展示逻辑
2026-01-29 18:00:22 +08:00
9 changed files with 321 additions and 85 deletions

18
src/api/workTicket.js Normal file
View File

@ -0,0 +1,18 @@
import request from '@/utils/request'
// 查询工作票列表
export function FetchWorkTicketList(params) {
return request({
url: '/manage/contractor/workTicket/list',
method: 'get',
params
})
}
// 查询工作票详情
export function FetchWorkTicketDetail(id) {
return request({
url: '/manage/contractor/workTicket/' + id,
method: 'get',
})
}

View File

@ -223,7 +223,7 @@ export const constantRoutes = [
component: () => component: () =>
import("@/views/proprietor/TicketIssueAudit/index.vue"), import("@/views/proprietor/TicketIssueAudit/index.vue"),
name: "TicketIssueAudit", name: "TicketIssueAudit",
meta: { title: "签发审核", icon: "table" }, meta: { title: "工作票签发审核", icon: "table" },
}, },
{ {
path: "/proprietor/TicketIssueAudit/Detail", path: "/proprietor/TicketIssueAudit/Detail",
@ -231,7 +231,7 @@ export const constantRoutes = [
import("@/views/proprietor/TicketIssueAudit/Detail.vue"), import("@/views/proprietor/TicketIssueAudit/Detail.vue"),
name: "TicketIssueAuditDetail", name: "TicketIssueAuditDetail",
hidden: true, hidden: true,
meta: { title: "签发审核详情", icon: "table" }, meta: { title: "工作票签发审核详情", icon: "table" },
}, },
], ],
}, },

View File

@ -18,7 +18,8 @@
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="初始密码"> <el-form-item label="初始密码">
<el-input v-model="formData.password" type="password" placeholder="请输入密码" show-password /> <el-input v-model="formData.password" type="password" placeholder="请输入密码" show-password
:disabled="!!props.userId" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -35,10 +36,10 @@
<el-form-item label="所属单位"> <el-form-item label="所属单位">
<div class="TreeBox"> <div class="TreeBox">
<el-tree :data="unitTreeData" :props="treeProps" show-line highlight-current default-expand-all <el-tree ref="treeRef" :current-node-key="formData.deptId" :data="unitTreeData"
:props="treeProps" node-key="id" show-line highlight-current default-expand-all
@current-change="handleUnitChange" :expand-on-click-node="false" class="unit-tree" /> @current-change="handleUnitChange" :expand-on-click-node="false" class="unit-tree" />
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="角色"> <el-form-item label="角色">
@ -63,11 +64,11 @@
</template> </template>
<script setup> <script setup>
import { getUser, deptTreeSelect, addUser } from '@/api/system/user.js' import { getUser, deptTreeSelect, addUser, updateUser } from '@/api/system/user.js'
import { listRole } from '@/api/system/role.js' import { listRole } from '@/api/system/role.js'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { ref, onBeforeMount } from 'vue' import { ref, onBeforeMount, onMounted, watch, nextTick } from 'vue'
const props = defineProps({ const props = defineProps({
userId: { userId: {
type: Number || String, type: Number || String,
@ -103,6 +104,9 @@ const roleList = ref([])
// //
const unitTreeData = ref([]) const unitTreeData = ref([])
//
const treeRef = ref(null)
// //
const treeProps = { const treeProps = {
children: 'children', children: 'children',
@ -113,6 +117,12 @@ onBeforeMount(() => {
getUnitTree() getUnitTree()
}) })
onMounted(() => {
if (props.userId) {
getUserDetail()
}
})
// //
const getRoleList = async () => { const getRoleList = async () => {
let res = await listRole() let res = await listRole()
@ -133,14 +143,33 @@ const getUnitTree = async () => {
// //
const getUserDetail = async () => { const getUserDetail = async () => {
let res = await getUser({ let res = await getUser(props.userId)
account: formData.value.account
})
if (res.code === 200) { if (res.code === 200) {
formData.value = res.data console.log('用户详情:', res.data)
formData.value.userName = res.data.userName //
formData.value.nickName = res.data.nickName //
formData.value.password = res.data.password //
formData.value.phonenumber = res.data.phonenumber //
formData.value.email = res.data.email //
//
formData.value.roleId = res.data.roleId
formData.value.roleName = res.data.roleName
//
formData.value.deptId = res.data.dept.deptId
formData.value.deptName = res.data.dept.deptName
} }
} }
// deptId
watch(() => formData.value.deptId, (newVal) => {
if (newVal && treeRef.value) {
nextTick(() => {
treeRef.value.setCurrentKey(newVal)
})
}
}, { immediate: true })
// //
const handleRoleChange = (roleId) => { const handleRoleChange = (roleId) => {
console.log('Selected roleId:', roleId) console.log('Selected roleId:', roleId)
@ -164,13 +193,17 @@ const handleClose = () => {
} }
// //
const handleSubmit = () => { const handleSubmit = async () => {
console.log('提交数据:', formData.value) console.log('提交数据:', formData.value)
// //
if (!formData.value.roleId) { if (!formData.value.roleId) {
ElMessage.warning('请选择角色') ElMessage.warning('请选择角色')
return return
} }
if (!formData.value.password && !props.userId) {
ElMessage.warning('请输入初始密码')
return
}
if (!formData.value.deptId) { if (!formData.value.deptId) {
ElMessage.warning('请选择所属单位') ElMessage.warning('请选择所属单位')
return return
@ -188,15 +221,32 @@ const handleSubmit = () => {
return return
} }
const isEditMode = !!props.userId
const fetchFunc = isEditMode ? updateUser : addUser
const successMsg = isEditMode ? '更新成功' : '添加成功'
const errorMsg = isEditMode ? '更新失败' : '添加失败'
addUser(formData.value).then(res => { const params = {
...formData.value,
userId: props.userId
}
if (isEditMode) {
delete params.password
}
try {
const res = await fetchFunc(params)
if (res.code === 200) { if (res.code === 200) {
ElMessage.success('添加成功') ElMessage.success(successMsg)
props.CloseDialog() props.CloseDialog()
} else { } else {
ElMessage.error(res.msg || '添加失败') ElMessage.error(res.msg || errorMsg)
} }
}) } catch (error) {
ElMessage.error(errorMsg)
}
// //

View File

@ -89,7 +89,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="phonenumber" label="联系电话" /> <el-table-column prop="phonenumber" label="联系电话" />
<el-table-column prop="remark" label="角色" /> <el-table-column prop="roleNames" label="角色" />
<el-table-column prop="status" label="状态"> <el-table-column prop="status" label="状态">
<template #default="{ row }"> <template #default="{ row }">
<el-tag :type="getStatusTagType(row.status)">{{ statusMap[row.status] }}</el-tag> <el-tag :type="getStatusTagType(row.status)">{{ statusMap[row.status] }}</el-tag>
@ -117,7 +117,7 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref, onMounted, getCurrentInstance, reactive, toRefs, nextTick } from 'vue' import { ref, onMounted, getCurrentInstance, reactive } from 'vue'
import { listDept } from '@/api/treeRatingManagement' import { listDept } from '@/api/treeRatingManagement'
import { listUser, delUser } from '@/api/system/user.js' import { listUser, delUser } from '@/api/system/user.js'
import UserDialog from "./UserDialog.vue"; import UserDialog from "./UserDialog.vue";
@ -129,6 +129,7 @@ const statusMap = {
'0': '已生效', '0': '已生效',
'1': '已停用', '1': '已停用',
'2': '待审核', '2': '待审核',
'3': '已驳回',
} }
const dialogShow = ref(false); // const dialogShow = ref(false); //
@ -293,6 +294,7 @@ const getStatusTagType = (status) => {
if (status === '0') return 'success' if (status === '0') return 'success'
if (status === '1') return 'info' if (status === '1') return 'info'
if (status === '2') return 'primary' if (status === '2') return 'primary'
if (status === '3') return 'danger'
return 'info' return 'info'
} }

View File

@ -2,18 +2,18 @@
<template> <template>
<div class="MainBox"> <div class="MainBox">
<div class="FormBox card-box"> <div class="FormBox card-box">
<el-form :model="formData" inline ref="formRef"> <el-form :model="queryData" inline ref="formRef">
<el-form-item label="用户名" prop="username"> <el-form-item label="用户名" prop="userName">
<el-input v-model="formData.username" placeholder="请输入用户名"></el-input> <el-input v-model="queryData.userName" placeholder="请输入用户名"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="时间范围" prop="timeRange"> <el-form-item label="时间范围" prop="timeRange">
<el-date-picker v-model="formData.timeRange" type="daterange" value-format="yyyy-MM-dd" <el-date-picker v-model="queryData.timeRange" type="daterange" value-format="YYYY-MM-DD"
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" /> range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="ButtonBox"> <div class="ButtonBox">
<el-button type="primary" @click="handleSearch">查询</el-button> <el-button type="primary" @click="handleSearch">查询</el-button>
<el-button type="primary" @click="handleSearch">重置</el-button> <el-button type="primary" @click="handleReset">重置</el-button>
</div> </div>
</div> </div>
<div class="card-box"> <div class="card-box">
@ -27,12 +27,18 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="phonenumber" label="联系电话" /> <el-table-column prop="phonenumber" label="联系电话" />
<el-table-column prop="remark" label="角色" /> <el-table-column prop="roleNames" label="角色" />
<el-table-column prop="status" label="状态" /> <el-table-column prop="status" label="状态">
<template #default="{ row }">
<el-tag type="primary">
{{ statusMap[row.status] || '-' }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="operation" label="操作" width="100"> <el-table-column prop="operation" label="操作" width="100">
<template #default="scope"> <template #default="scope">
<div class="FlexBox"> <div class="FlexBox">
<el-button type="text" size="mini" @click="handleApprove(scope.row)">审批</el-button> <el-button type="text" size="mini" @click="openApproveDialog(scope.row)">审批</el-button>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
@ -45,17 +51,41 @@
</div> </div>
</div> </div>
<el-dialog v-model="approveDialogVisible" title="用户审批" width="500px" :close-on-click-modal="false">
<el-form :model="approveForm" :rules="approveRules" ref="approveFormRef" label-width="100px">
<el-form-item label="审核状态" prop="auditStatus">
<el-radio-group v-model="approveForm.auditStatus">
<el-radio label="1">通过</el-radio>
<el-radio label="2">驳回</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="审核意见" prop="auditOpinion">
<el-input v-model="approveForm.auditOpinion" type="textarea" :rows="4" placeholder="请输入审核意见" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="closeApproveDialog">取消</el-button>
<el-button type="primary" @click="submitApprove">确定</el-button>
</template>
</el-dialog>
</div> </div>
</template> </template>
<script setup> <script setup>
import dayjs from "dayjs"; import dayjs from "dayjs";
import { ref, onBeforeMount } from "vue"; import { ref, onBeforeMount } from "vue";
import { listUser } from "@/api/system/user"; import { ElMessage } from 'element-plus'
import { listUser, FetchUserReview } from "@/api/system/user";
//
const statusMap = {
'0': '已生效',
'1': '已停用',
'2': '待审核',
'3': '已驳回',
}
// //
const formData = ref({ const queryData = ref({
username: "", userName: "",
timeRange: [], timeRange: [],
}); });
@ -72,19 +102,74 @@ const pageInfo = ref({
// //
const tableData = ref([]); const tableData = ref([]);
//
const currentUser = ref();
//
const approveDialogVisible = ref(false);
const approveFormRef = ref();
const approveForm = ref({
auditStatus: '1',
auditOpinion: ''
});
//
const approveRules = ref({
auditStatus: [
{ required: true, message: '请选择审核状态', trigger: 'change' }
],
auditOpinion: [
{
required: true,
message: '驳回时审核意见为必填项',
trigger: 'blur',
validator: (rule, value, callback) => {
if (approveForm.value.auditStatus === '0' && !value) {
callback(new Error('驳回时审核意见为必填项'));
} else {
callback();
}
}
}
]
});
//
const handleCurrentChange = (val) => {
pageInfo.value.pageNum = val;
getinit();
}
onBeforeMount(() => { onBeforeMount(() => {
getinit(); getinit();
}); });
//
const handleSearch = () => {
pageInfo.value.pageNum = 1;
getinit();
}
//
const handleReset = () => {
queryData.value = {
userName: "",
timeRange: [],
};
pageInfo.value.pageNum = 1;
getinit();
}
// //
const getinit = async () => { const getinit = async () => {
console.log(queryData.value.timeRange,'时间范围');
let query = { let query = {
username: formData.value.username, userName: queryData.value.userName,
startTime: formData.value.timeRange[0] ? dayjs(formData.value.timeRange[0]).format('YYYY-MM-DD') : '', startTime: queryData.value.timeRange[0] ? dayjs(queryData.value.timeRange[0]).format('YYYY-MM-DD') : '',
endTime: formData.value.timeRange[1] ? dayjs(formData.value.timeRange[1]).format('YYYY-MM-DD') : '', endTime: queryData.value.timeRange[1] ? dayjs(queryData.value.timeRange[1]).format('YYYY-MM-DD') : '',
pageNum: pageInfo.value.pageNum, pageNum: pageInfo.value.pageNum,
pageSize: pageInfo.value.pageSize, pageSize: pageInfo.value.pageSize,
status: 2
}; };
loading.value = true; loading.value = true;
let res = await listUser(query); let res = await listUser(query);
@ -95,6 +180,46 @@ const getinit = async () => {
} }
}; };
//
const openApproveDialog = (row) => {
currentUser.value = row;
approveForm.value = {
auditStatus: '1',
auditOpinion: ''
};
approveDialogVisible.value = true;
}
//
const closeApproveDialog = () => {
approveDialogVisible.value = false;
currentUser.value = null;
getinit();
}
//
const submitApprove = async () => {
await approveFormRef.value.validate(async (valid) => {
if (valid) {
let params = {
userId: currentUser.value.userId,
auditStatus: approveForm.value.auditStatus,
auditOpinion: approveForm.value.auditOpinion,
status: approveForm.value.auditStatus === '1' ? 0 : 3
};
let res = await FetchUserReview(params);
if (res.code === 200) {
ElMessage.success('操作成功');
closeApproveDialog();
} else {
ElMessage.error(res.msg || '操作失败');
}
}
});
}
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.MainBox { .MainBox {

View File

@ -1,4 +1,4 @@
<!-- 业主模块-票证签发审核-列表--> <!-- 业主模块-工作票签发审核-详情-->
<template> <template>
<div class="MainBox"> <div class="MainBox">
<div class="ticket-detail-container"> <div class="ticket-detail-container">
@ -158,7 +158,8 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref } from 'vue' import { ref, onMounted } from 'vue'
import { FetchWorkTicketDetail } from '@/api/workTicket'
const formData = ref({ const formData = ref({
necessary: null, necessary: null,

View File

@ -63,11 +63,16 @@
</template> </template>
<script setup> <script setup>
import { ref } from 'vue' import { ref,onBeforeMount } from 'vue'
import { UploadFilled } from '@element-plus/icons-vue' import { UploadFilled } from '@element-plus/icons-vue'
import { FetchWorkTicketDetail } from '@/api/workTicket'
const auditResult = ref('') const auditResult = ref('')
const props = defineProps({ const props = defineProps({
Tid: {
type: Number || String,
default: ''
},
show: { show: {
type: Boolean, type: Boolean,
default: false default: false
@ -78,6 +83,21 @@ const props = defineProps({
} }
}) })
onBeforeMount(() => {
if (props.Tid) {
getDetail();
}
})
//
const getDetail = async () => {
let res = await FetchWorkTicketDetail(props.Tid);
if (res.code == 200) {
formData.value = res.data;
}
}
// //

View File

@ -1,4 +1,4 @@
<!-- 业主模块-签发审核-列表页 --> <!-- 业主模块-工作票签发审核-列表页 -->
<template> <template>
<div class="MainBox"> <div class="MainBox">
<el-tabs v-model="activeTab" class="mb-4"> <el-tabs v-model="activeTab" class="mb-4">
@ -12,7 +12,7 @@
<el-form :model="queryForm" inline class="card-box mb-4" label-position="top"> <el-form :model="queryForm" inline class="card-box mb-4" label-position="top">
<el-form-item label="项目名称/编号"> <el-form-item label="项目名称/编号">
<el-input v-model="queryForm.name" placeholder="请输入项目名称/编号"></el-input> <el-input v-model="queryForm.keyword" placeholder="请输入项目名称/编号"></el-input>
</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"
@ -43,17 +43,17 @@
</el-form> </el-form>
<div class="card-box"> <div class="card-box">
<el-table :data="tableData"> <el-table :data="tableData" :loading="loading">
<el-table-column prop="ticketNumber" label="票证编号"></el-table-column> <el-table-column prop="ticketNumber" label="票证编号"></el-table-column>
<el-table-column prop="ticketType" label="票证类型"></el-table-column> <el-table-column prop="riskType" label="票证类型"></el-table-column>
<el-table-column prop="projectName" label="项目名称"></el-table-column> <el-table-column prop="projectName" label="项目名称"></el-table-column>
<el-table-column prop="enterpriseName" label="施工单位"></el-table-column> <el-table-column prop="enterpriseName" label="施工单位"></el-table-column>
<el-table-column prop="submitterName" label="提交人"></el-table-column> <el-table-column prop="updateBy" label="提交人"></el-table-column>
<el-table-column prop="submitTime" label="提交时间"></el-table-column> <el-table-column prop="updateTime" label="提交时间"></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 === '待审核' ? 'primary' : 'danger'"> <el-tag :type="scope.row.status === '1' ? 'primary' : 'danger'">
{{ scope.row.status }} {{ statusCodeMap[scope.row.status] }}
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
@ -72,70 +72,88 @@
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" @current-change="handlePageChange"></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" :Tid="Tid" />
</div> </div>
</template> </template>
<script setup name="Index"> <script setup name="Index">
import { FetchWorkTicketList } from '@/api/workTicket.js'
import DialogBox from "./DialogBox.vue"; import DialogBox from "./DialogBox.vue";
import { ref } from "vue"; import { ref, onBeforeMount } from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
const router = useRouter(); const router = useRouter();
//
const statusCodeMap = {
"0": "草稿",
"1": "待审核",
"2": "已签发",
"3": "已驳回",
"4": "已作废"
}
const activeTab = ref("1"); // tab const activeTab = ref("1"); // tab
// //
const queryForm = ref({ const queryForm = ref({
name: "", name: "", //
status: ""
}); });
const Tid = ref(''); // ID
const dialogShow = ref(false); const loading = ref(false); //
const dialogShow = ref(false); //
// //
const tableData = ref([ const tableData = ref([]);
{
id: 1,
ticketNumber: "123456",
ticketType: "工作票",
projectName: "项目A",
enterpriseName: "中建一局",
submitterName: "张三",
submitTime: "2023-05-12 14:30",
status: "待审核"
},
{
id: 2,
ticketNumber: "123457",
ticketType: "微信作业票",
projectName: "项目B",
enterpriseName: "中铁建工",
submitterName: "李四",
submitTime: "2023-05-13 09:45",
status: "已驳回"
}
]);
const pageNum = ref(1); // const pageNum = ref(1); //
const pageSize = ref(5); // const pageSize = ref(10); //
const total = ref(20); // const total = ref(20); //
onBeforeMount(() => {
getInit();
})
// //
const handleAuditClick = (row) => { const handleAuditClick = (row) => {
console.log("审核签发", row); console.log("审核签发", row);
Tid.value = row.id;
dialogShow.value = true; dialogShow.value = true;
} }
//
const getInit = async () => {
let params = {
pageNum: pageNum.value,
pageSize: pageSize.value,
name: queryForm.value.name,
status: activeTab.value,
}
let res = await FetchWorkTicketList(params);
console.log("数据列表", res);
if (res.code === 200) {
tableData.value = res.rows;
total.value = res.total;
}
}
//
const handlePageChange = (page) => {
pageNum.value = page;
getInit();
};
// //
const handleDetailClick = (row) => { const handleDetailClick = (row) => {
console.log("查看详情", row); console.log("查看详情", row);
router.push({ router.push({
path: "/proprietor/TicketIssueAudit/Detail", path: "/proprietor/TicketIssueAudit/Detail",
query: { query: {
id: row.id Tid: row.id
} }
}); });
} }
@ -143,7 +161,8 @@ const handleDetailClick = (row) => {
// //
const handleCancel = () => { const handleCancel = () => {
console.log('关闭弹窗') console.log('关闭弹窗')
dialogShow.value = false dialogShow.value = false;
Tid.value = '';
} }

View File

@ -40,10 +40,10 @@
<div class="card-box"> <div class="card-box">
<el-table v-loading="loading" :data="tableData" > <el-table v-loading="loading" :data="tableData" >
<el-table-column prop="unitName" label="单位名称"></el-table-column> <el-table-column prop="deptName" label="单位名称"></el-table-column>
<el-table-column prop="unitType" label="单位类型"> <el-table-column prop="deptType" label="单位类型">
<template #default="scope"> <template #default="scope">
{{ getUnitTypeName(scope.row.unitType) }} {{ getUnitTypeName(scope.row.deptType) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="areaName" label="所属区域"></el-table-column> <el-table-column prop="areaName" label="所属区域"></el-table-column>
@ -78,6 +78,7 @@
<script setup name="Index"> <script setup name="Index">
import { ref, onMounted } from "vue"; import { ref, onMounted } from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { listDept } from "@/api/system/dept";
import { listUnitArchive, delUnitArchive, changeUnitArchiveStatus } from "@/api/unit"; import { listUnitArchive, delUnitArchive, changeUnitArchiveStatus } from "@/api/unit";
import { ElMessage, ElMessageBox } from "element-plus"; import { ElMessage, ElMessageBox } from "element-plus";
@ -103,7 +104,7 @@ const getList = async () => {
loading.value = true; loading.value = true;
try { try {
const params = { const params = {
unitType: parseInt(activeTab.value), deptType: parseInt(activeTab.value),
pageNum: pageNum.value, pageNum: pageNum.value,
pageSize: pageSize.value pageSize: pageSize.value
}; };
@ -119,7 +120,7 @@ const getList = async () => {
params.status = queryForm.value.status; params.status = queryForm.value.status;
} }
const response = await listUnitArchive(params); const response = await listDept(params);
if (response.code === 200) { if (response.code === 200) {
tableData.value = response.rows || response.data || []; tableData.value = response.rows || response.data || [];
total.value = response.total || 0; total.value = response.total || 0;
@ -253,13 +254,13 @@ const handleDelete = (row) => {
}; };
// unitType // unitType
const getUnitTypeName = (unitType) => { const getUnitTypeName = (deptType) => {
const typeMap = { const typeMap = {
1: '施工单位', 1: '施工单位',
2: '监理单位', 2: '监理单位',
3: '业主单位' 3: '业主单位'
}; };
return typeMap[unitType] || '未知类型'; return typeMap[deptType] || '未知类型';
}; };
// //