feat(views): 更新工作票审核页面和单位管理表单
refactor(api): 修改文件上传接口路径 style(api): 修复部门删除函数格式
This commit is contained in:
parent
8ef3a7c6f1
commit
c3698c515a
|
|
@ -50,3 +50,4 @@ export function delDept(deptId) {
|
|||
method: 'delete'
|
||||
})
|
||||
}
|
||||
//
|
||||
|
|
@ -15,7 +15,7 @@ export function uploadFile(file) {
|
|||
formData.append('file', file)
|
||||
|
||||
return request({
|
||||
url: '/file/upload',
|
||||
url: '/api/file/upload',
|
||||
method: 'post',
|
||||
data: formData,
|
||||
headers: {
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
<!-- 业主模块-工作票签发审核-列表页 -->
|
||||
<template>
|
||||
<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="2"></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>
|
||||
|
||||
|
||||
|
|
@ -19,26 +20,15 @@
|
|||
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="签发人">
|
||||
<el-select v-model="queryForm.issuerId" placeholder="请选择签发人">
|
||||
<el-option label="张三" value="1"></el-option>
|
||||
<el-option label="李四" value="2"></el-option>
|
||||
</el-select>
|
||||
<el-input v-model="queryForm.issuerName" placeholder="请输入签发人"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="施工单位">
|
||||
<el-select v-model="queryForm.enterpriseId" placeholder="请选择施工单位">
|
||||
<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-input v-model="queryForm.supervisorDeptName" placeholder="请输入施工单位"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item style="margin-top: 28px;">
|
||||
<el-button size="default">重置</el-button>
|
||||
<el-button type="primary" size="default">查询</el-button>
|
||||
<el-button size="default" @click="handleReset">重置</el-button>
|
||||
<el-button type="primary" size="default" @click="handleQuery">查询</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
|
|
@ -47,7 +37,7 @@
|
|||
<el-table-column prop="ticketNumber" 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="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="updateTime" label="提交时间"></el-table-column>
|
||||
<el-table-column prop="status" label="当前状态">
|
||||
|
|
@ -82,6 +72,7 @@
|
|||
</div>
|
||||
</template>
|
||||
<script setup name="Index">
|
||||
import dayjs from 'dayjs'
|
||||
import { FetchWorkTicketList } from '@/api/workTicket.js'
|
||||
import DialogBox from "./DialogBox.vue";
|
||||
import { ref, onBeforeMount } from "vue";
|
||||
|
|
@ -102,6 +93,10 @@ const activeTab = ref("1"); // 当前选中的tab
|
|||
// 查询表单数据
|
||||
const queryForm = ref({
|
||||
name: "", // 项目名称
|
||||
keyword: "", // 项目名称/编号
|
||||
dateRange: [], // 提交时间
|
||||
issuerName: "", // 签发人
|
||||
supervisorDeptName: "", // 施工单位
|
||||
});
|
||||
const Tid = ref(''); // 当前工作票ID
|
||||
const loading = ref(false); // 加载状态
|
||||
|
|
@ -125,14 +120,48 @@ const handleAuditClick = (row) => {
|
|||
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 () => {
|
||||
let params = {
|
||||
pageNum: pageNum.value,
|
||||
pageSize: pageSize.value,
|
||||
name: queryForm.value.name,
|
||||
keyword: queryForm.value.keyword,
|
||||
issuerName: queryForm.value.issuerName,
|
||||
supervisorDeptName: queryForm.value.supervisorDeptName,
|
||||
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);
|
||||
console.log("数据列表", res);
|
||||
if (res.code === 200) {
|
||||
|
|
|
|||
|
|
@ -7,22 +7,21 @@
|
|||
<div class="LeftBox">
|
||||
<h2>基础信息</h2>
|
||||
<el-form :model="basicsForm" :rules="basicsRules" ref="basicsFormRef" label-position="top">
|
||||
<el-form-item label="单位类型" prop="enterpriseType">
|
||||
<el-select v-model="basicsForm.enterpriseType" placeholder="请选择单位类型">
|
||||
<el-form-item label="单位类型" prop="deptType">
|
||||
<el-select v-model="basicsForm.deptType" placeholder="请选择单位类型">
|
||||
<el-option label="施工单位" value="1" />
|
||||
<el-option label="监理单位" value="2" />
|
||||
<el-option label="业主单位" value="3" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="单位名称" prop="enterpriseName">
|
||||
<el-input v-model="basicsForm.enterpriseName" placeholder="请输入单位名称" />
|
||||
<el-form-item label="单位名称" prop="deptName">
|
||||
<el-input v-model="basicsForm.deptName" placeholder="请输入单位名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="所属区域" prop="deptId">
|
||||
<el-form-item label="所属区域" prop="parentId">
|
||||
<el-tree-select
|
||||
v-model="basicsForm.deptId"
|
||||
v-model="basicsForm.parentId"
|
||||
:data="deptOptions"
|
||||
:props="{ value: 'deptId', label: 'deptName', children: 'children' }"
|
||||
value-key="deptId"
|
||||
value-key="id"
|
||||
placeholder="请选择所属区域"
|
||||
check-strictly
|
||||
@change="handleAreaChange"
|
||||
|
|
@ -87,8 +86,8 @@
|
|||
import { ref, onMounted, getCurrentInstance } from 'vue'
|
||||
import { useRouter } from "vue-router";
|
||||
import { UploadFilled } from '@element-plus/icons-vue'
|
||||
import { addUnitArchive, updateUnitArchive, getUnitArchive } from "@/api/unit";
|
||||
import { listDept } from "@/api/system/dept";
|
||||
import { deptTreeSelect } from "@/api/system/user";
|
||||
import { addDept, updateDept,getDept } from "@/api/system/dept";
|
||||
import { uploadFile } from "@/api/upload";
|
||||
import { ElMessage } from "element-plus";
|
||||
|
||||
|
|
@ -100,9 +99,8 @@ const deptOptions = ref([]);
|
|||
|
||||
// 基础表单
|
||||
const basicsForm = ref({
|
||||
enterpriseType: '',
|
||||
enterpriseName: '',
|
||||
deptId: '', // 部门ID
|
||||
deptType: '', // 单位类型
|
||||
parentId: '', // 部门ID
|
||||
deptName: '', // 部门名称
|
||||
creditCode: '',
|
||||
contactName: '',
|
||||
|
|
@ -132,13 +130,13 @@ const uploadLoading = ref(false);
|
|||
|
||||
// 表单验证规则
|
||||
const basicsRules = ref({
|
||||
enterpriseType: [
|
||||
deptType: [
|
||||
{ required: true, message: '请选择单位类型', trigger: 'change' }
|
||||
],
|
||||
enterpriseName: [
|
||||
deptName: [
|
||||
{ required: true, message: '请输入单位名称', trigger: 'blur' }
|
||||
],
|
||||
deptId: [
|
||||
parentId: [
|
||||
{ required: true, message: '请选择所属区域', trigger: 'change' }
|
||||
],
|
||||
creditCode: [
|
||||
|
|
@ -156,10 +154,10 @@ const basicsRules = ref({
|
|||
// 获取部门列表
|
||||
const getDeptList = async () => {
|
||||
try {
|
||||
const response = await listDept();
|
||||
const response = await deptTreeSelect();
|
||||
if (response.code === 200) {
|
||||
// 将部门数据转换为树形结构
|
||||
deptOptions.value = proxy.handleTree(response.data, "deptId");
|
||||
deptOptions.value = response.data || [];
|
||||
} else {
|
||||
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) => {
|
||||
|
|
@ -200,18 +177,19 @@ const getDetail = async (id) => {
|
|||
await getDeptList();
|
||||
}
|
||||
|
||||
const response = await getUnitArchive(id);
|
||||
const response = await getDept(id);
|
||||
if (response.code === 200) {
|
||||
const data = response.data;
|
||||
// 填充表单数据
|
||||
basicsForm.value = {
|
||||
enterpriseType: data.unitType || '',
|
||||
enterpriseName: data.unitName || '',
|
||||
deptId: data.deptId || data.areaCode || '',
|
||||
deptType: data.deptType || '',
|
||||
deptName: data.deptName || '',
|
||||
parentId: data.parentId || data.areaCode || '',
|
||||
deptName: data.deptName || data.areaName || '',
|
||||
creditCode: data.creditCode || '',
|
||||
contactName: data.contactName || '',
|
||||
contactPhone: data.contactPhone || ''
|
||||
contactPhone: data.contactPhone || '',
|
||||
orderNum: '1'
|
||||
};
|
||||
expandForm.value = {
|
||||
enterpriseAddress: data.address || '',
|
||||
|
|
@ -233,7 +211,7 @@ onMounted(() => {
|
|||
getDeptList();
|
||||
|
||||
const route = router.currentRoute.value;
|
||||
const enterpriseType = route.query.enterpriseType;
|
||||
const deptType = route.query.deptType;
|
||||
const id = route.query.unitId;
|
||||
|
||||
if (id) {
|
||||
|
|
@ -242,9 +220,9 @@ onMounted(() => {
|
|||
unitId.value = id;
|
||||
console.log(isEdit.value);
|
||||
getDetail(id);
|
||||
} else if (enterpriseType) {
|
||||
} else if (deptType) {
|
||||
// 新增模式,设置单位类型
|
||||
basicsForm.value.enterpriseType = enterpriseType;
|
||||
basicsForm.value.deptType = deptType;
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -313,10 +291,10 @@ const handleSave = async () => {
|
|||
try {
|
||||
// 构建请求参数
|
||||
const params = {
|
||||
unitType: basicsForm.value.enterpriseType, // 单位类型:1=施工单位, 2=监理单位, 3=业主单位
|
||||
unitName: basicsForm.value.enterpriseName, // 单位名称
|
||||
deptName: basicsForm.value.deptName, // 所属区域名称(部门名称)
|
||||
deptId: basicsForm.value.deptId, // 所属区域代码(部门ID)
|
||||
orderNum: '1', // 排序号,默认1
|
||||
deptType: basicsForm.value.deptType, // 单位类型:1=施工单位, 2=监理单位, 3=业主单位
|
||||
deptName: basicsForm.value.deptName, // 单位名称
|
||||
parentId: basicsForm.value.parentId, // 所属区域代码(部门ID)
|
||||
creditCode: basicsForm.value.creditCode, // 统一社会信用代码
|
||||
contactName: basicsForm.value.contactName, // 联系人
|
||||
contactPhone: basicsForm.value.contactPhone, // 联系电话
|
||||
|
|
@ -336,8 +314,8 @@ const handleSave = async () => {
|
|||
|
||||
// 根据是新增还是编辑调用不同的接口
|
||||
const response = isEdit.value
|
||||
? await updateUnitArchive(params)
|
||||
: await addUnitArchive(params);
|
||||
? await updateDept(params)
|
||||
: await addDept(params);
|
||||
|
||||
if (response.code === 200) {
|
||||
ElMessage.success(isEdit.value ? '编辑成功' : '单位建档成功,可前往创建账号');
|
||||
|
|
|
|||
Loading…
Reference in New Issue