feat(views): 更新工作票审核页面和单位管理表单

refactor(api): 修改文件上传接口路径
style(api): 修复部门删除函数格式
This commit is contained in:
liangbin 2026-01-30 17:59:25 +08:00
parent 8ef3a7c6f1
commit c3698c515a
4 changed files with 85 additions and 77 deletions

View File

@ -50,3 +50,4 @@ export function delDept(deptId) {
method: 'delete' method: 'delete'
}) })
} }
//

View File

@ -15,7 +15,7 @@ export function uploadFile(file) {
formData.append('file', file) formData.append('file', file)
return request({ return request({
url: '/file/upload', url: '/api/file/upload',
method: 'post', method: 'post',
data: formData, data: formData,
headers: { headers: {

View File

@ -1,11 +1,12 @@
<!-- 业主模块-工作票签发审核-列表页 --> <!-- 业主模块-工作票签发审核-列表页 -->
<template> <template>
<div class="MainBox"> <div class="MainBox">
<el-tabs v-model="activeTab" class="mb-4"> <el-tabs v-model="activeTab" class="mb-4" @tab-change="handleTabChange">
<el-tab-pane label="全部记录" name=""></el-tab-pane>
<el-tab-pane label="待审核" name="1"></el-tab-pane> <el-tab-pane label="待审核" name="1"></el-tab-pane>
<el-tab-pane label="已签发" name="2"></el-tab-pane> <el-tab-pane label="已签发" name="2"></el-tab-pane>
<el-tab-pane label="已驳回" name="3"></el-tab-pane> <el-tab-pane label="已驳回" name="3"></el-tab-pane>
<el-tab-pane label="全部记录" name="4"></el-tab-pane> <el-tab-pane label="已作废" name="4"></el-tab-pane>
</el-tabs> </el-tabs>
@ -19,26 +20,15 @@
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-form-item label="签发人">
<el-select v-model="queryForm.issuerId" placeholder="请选择签发人"> <el-input v-model="queryForm.issuerName" placeholder="请输入签发人"></el-input>
<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 label="施工单位"> <el-form-item label="施工单位">
<el-select v-model="queryForm.enterpriseId" placeholder="请选择施工单位"> <el-input v-model="queryForm.supervisorDeptName" placeholder="请输入施工单位"></el-input>
<el-option label="中建一局" value="1"></el-option>
<el-option label="中铁建工" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="票证类型">
<el-select v-model="queryForm.type" placeholder="请选择票证类型">
<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 style="margin-top: 28px;"> <el-form-item style="margin-top: 28px;">
<el-button size="default">重置</el-button> <el-button size="default" @click="handleReset">重置</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>
@ -47,7 +37,7 @@
<el-table-column prop="ticketNumber" label="票证编号"></el-table-column> <el-table-column prop="ticketNumber" label="票证编号"></el-table-column>
<el-table-column prop="riskType" 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="supervisorDeptName" label="施工单位"></el-table-column>
<el-table-column prop="updateBy" label="提交人"></el-table-column> <el-table-column prop="updateBy" label="提交人"></el-table-column>
<el-table-column prop="updateTime" 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="当前状态">
@ -82,6 +72,7 @@
</div> </div>
</template> </template>
<script setup name="Index"> <script setup name="Index">
import dayjs from 'dayjs'
import { FetchWorkTicketList } from '@/api/workTicket.js' import { FetchWorkTicketList } from '@/api/workTicket.js'
import DialogBox from "./DialogBox.vue"; import DialogBox from "./DialogBox.vue";
import { ref, onBeforeMount } from "vue"; import { ref, onBeforeMount } from "vue";
@ -102,6 +93,10 @@ const activeTab = ref("1"); // 当前选中的tab
// //
const queryForm = ref({ const queryForm = ref({
name: "", // name: "", //
keyword: "", // /
dateRange: [], //
issuerName: "", //
supervisorDeptName: "", //
}); });
const Tid = ref(''); // ID const Tid = ref(''); // ID
const loading = ref(false); // const loading = ref(false); //
@ -125,14 +120,48 @@ const handleAuditClick = (row) => {
dialogShow.value = true; dialogShow.value = true;
} }
// tab
const handleTabChange = (tab) => {
activeTab.value = tab;
handleReset()
}
//
const handleReset = () => {
queryForm.value = {
name: "", //
keyword: "", // /
dateRange: [], //
issuerName: "", //
supervisorDeptName: "", //
}
pageNum.value = 1;
getInit();
}
//
const handleQuery = () => {
//
pageNum.value = 1;
getInit();
}
// //
const getInit = async () => { const getInit = async () => {
let params = { let params = {
pageNum: pageNum.value, pageNum: pageNum.value,
pageSize: pageSize.value, pageSize: pageSize.value,
name: queryForm.value.name, name: queryForm.value.name,
keyword: queryForm.value.keyword,
issuerName: queryForm.value.issuerName,
supervisorDeptName: queryForm.value.supervisorDeptName,
status: activeTab.value, status: activeTab.value,
} }
if (queryForm.value.dateRange.length > 0) {
params.startTime = dayjs(queryForm.value.dateRange[0]).format('YYYY-MM-DD');
params.endTime = dayjs(queryForm.value.dateRange[1]).format('YYYY-MM-DD');
}
let res = await FetchWorkTicketList(params); let res = await FetchWorkTicketList(params);
console.log("数据列表", res); console.log("数据列表", res);
if (res.code === 200) { if (res.code === 200) {

View File

@ -7,22 +7,21 @@
<div class="LeftBox"> <div class="LeftBox">
<h2>基础信息</h2> <h2>基础信息</h2>
<el-form :model="basicsForm" :rules="basicsRules" ref="basicsFormRef" label-position="top"> <el-form :model="basicsForm" :rules="basicsRules" ref="basicsFormRef" label-position="top">
<el-form-item label="单位类型" prop="enterpriseType"> <el-form-item label="单位类型" prop="deptType">
<el-select v-model="basicsForm.enterpriseType" placeholder="请选择单位类型"> <el-select v-model="basicsForm.deptType" placeholder="请选择单位类型">
<el-option label="施工单位" value="1" /> <el-option label="施工单位" value="1" />
<el-option label="监理单位" value="2" /> <el-option label="监理单位" value="2" />
<el-option label="业主单位" value="3" /> <el-option label="业主单位" value="3" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="单位名称" prop="enterpriseName"> <el-form-item label="单位名称" prop="deptName">
<el-input v-model="basicsForm.enterpriseName" placeholder="请输入单位名称" /> <el-input v-model="basicsForm.deptName" placeholder="请输入单位名称" />
</el-form-item> </el-form-item>
<el-form-item label="所属区域" prop="deptId"> <el-form-item label="所属区域" prop="parentId">
<el-tree-select <el-tree-select
v-model="basicsForm.deptId" v-model="basicsForm.parentId"
:data="deptOptions" :data="deptOptions"
:props="{ value: 'deptId', label: 'deptName', children: 'children' }" value-key="id"
value-key="deptId"
placeholder="请选择所属区域" placeholder="请选择所属区域"
check-strictly check-strictly
@change="handleAreaChange" @change="handleAreaChange"
@ -87,8 +86,8 @@
import { ref, onMounted, getCurrentInstance } from 'vue' import { ref, onMounted, getCurrentInstance } from 'vue'
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { UploadFilled } from '@element-plus/icons-vue' import { UploadFilled } from '@element-plus/icons-vue'
import { addUnitArchive, updateUnitArchive, getUnitArchive } from "@/api/unit"; import { deptTreeSelect } from "@/api/system/user";
import { listDept } from "@/api/system/dept"; import { addDept, updateDept,getDept } from "@/api/system/dept";
import { uploadFile } from "@/api/upload"; import { uploadFile } from "@/api/upload";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
@ -100,9 +99,8 @@ const deptOptions = ref([]);
// //
const basicsForm = ref({ const basicsForm = ref({
enterpriseType: '', deptType: '', //
enterpriseName: '', parentId: '', // ID
deptId: '', // ID
deptName: '', // deptName: '', //
creditCode: '', creditCode: '',
contactName: '', contactName: '',
@ -132,13 +130,13 @@ const uploadLoading = ref(false);
// //
const basicsRules = ref({ const basicsRules = ref({
enterpriseType: [ deptType: [
{ required: true, message: '请选择单位类型', trigger: 'change' } { required: true, message: '请选择单位类型', trigger: 'change' }
], ],
enterpriseName: [ deptName: [
{ required: true, message: '请输入单位名称', trigger: 'blur' } { required: true, message: '请输入单位名称', trigger: 'blur' }
], ],
deptId: [ parentId: [
{ required: true, message: '请选择所属区域', trigger: 'change' } { required: true, message: '请选择所属区域', trigger: 'change' }
], ],
creditCode: [ creditCode: [
@ -156,10 +154,10 @@ const basicsRules = ref({
// //
const getDeptList = async () => { const getDeptList = async () => {
try { try {
const response = await listDept(); const response = await deptTreeSelect();
if (response.code === 200) { if (response.code === 200) {
// //
deptOptions.value = proxy.handleTree(response.data, "deptId"); deptOptions.value = response.data || [];
} else { } else {
ElMessage.error(response.msg || "获取部门列表失败"); ElMessage.error(response.msg || "获取部门列表失败");
} }
@ -169,28 +167,7 @@ const getDeptList = async () => {
} }
}; };
//
const handleAreaChange = (value) => {
// ID
const findDept = (depts, deptId) => {
for (const dept of depts) {
if (dept.deptId === deptId) {
return dept;
}
if (dept.children && dept.children.length > 0) {
const found = findDept(dept.children, deptId);
if (found) return found;
}
}
return null;
};
const selectedDept = findDept(deptOptions.value, value);
if (selectedDept) {
basicsForm.value.deptName = selectedDept.deptName;
basicsForm.value.deptId = selectedDept.deptId;
}
};
// //
const getDetail = async (id) => { const getDetail = async (id) => {
@ -200,18 +177,19 @@ const getDetail = async (id) => {
await getDeptList(); await getDeptList();
} }
const response = await getUnitArchive(id); const response = await getDept(id);
if (response.code === 200) { if (response.code === 200) {
const data = response.data; const data = response.data;
// //
basicsForm.value = { basicsForm.value = {
enterpriseType: data.unitType || '', deptType: data.deptType || '',
enterpriseName: data.unitName || '', deptName: data.deptName || '',
deptId: data.deptId || data.areaCode || '', parentId: data.parentId || data.areaCode || '',
deptName: data.deptName || data.areaName || '', deptName: data.deptName || data.areaName || '',
creditCode: data.creditCode || '', creditCode: data.creditCode || '',
contactName: data.contactName || '', contactName: data.contactName || '',
contactPhone: data.contactPhone || '' contactPhone: data.contactPhone || '',
orderNum: '1'
}; };
expandForm.value = { expandForm.value = {
enterpriseAddress: data.address || '', enterpriseAddress: data.address || '',
@ -233,7 +211,7 @@ onMounted(() => {
getDeptList(); getDeptList();
const route = router.currentRoute.value; const route = router.currentRoute.value;
const enterpriseType = route.query.enterpriseType; const deptType = route.query.deptType;
const id = route.query.unitId; const id = route.query.unitId;
if (id) { if (id) {
@ -242,9 +220,9 @@ onMounted(() => {
unitId.value = id; unitId.value = id;
console.log(isEdit.value); console.log(isEdit.value);
getDetail(id); getDetail(id);
} else if (enterpriseType) { } else if (deptType) {
// //
basicsForm.value.enterpriseType = enterpriseType; basicsForm.value.deptType = deptType;
} }
}); });
@ -313,10 +291,10 @@ const handleSave = async () => {
try { try {
// //
const params = { const params = {
unitType: basicsForm.value.enterpriseType, // 1=, 2=, 3= orderNum: '1', // 1
unitName: basicsForm.value.enterpriseName, // deptType: basicsForm.value.deptType, // 1=, 2=, 3=
deptName: basicsForm.value.deptName, // deptName: basicsForm.value.deptName, //
deptId: basicsForm.value.deptId, // ID parentId: basicsForm.value.parentId, // ID
creditCode: basicsForm.value.creditCode, // creditCode: basicsForm.value.creditCode, //
contactName: basicsForm.value.contactName, // contactName: basicsForm.value.contactName, //
contactPhone: basicsForm.value.contactPhone, // contactPhone: basicsForm.value.contactPhone, //
@ -336,8 +314,8 @@ const handleSave = async () => {
// //
const response = isEdit.value const response = isEdit.value
? await updateUnitArchive(params) ? await updateDept(params)
: await addUnitArchive(params); : await addDept(params);
if (response.code === 200) { if (response.code === 200) {
ElMessage.success(isEdit.value ? '编辑成功' : '单位建档成功,可前往创建账号'); ElMessage.success(isEdit.value ? '编辑成功' : '单位建档成功,可前往创建账号');