Compare commits
2 Commits
8af373dadf
...
cae5a32bb3
| Author | SHA1 | Date | |
|---|---|---|---|
| cae5a32bb3 | |||
| 58b4720b94 |
@ -85,6 +85,23 @@ const generateBreadcrumb = () => {
|
|||||||
name: 'ledgerManagement',
|
name: 'ledgerManagement',
|
||||||
meta: { title: '驻地台账' }
|
meta: { title: '驻地台账' }
|
||||||
})
|
})
|
||||||
|
} else if (currentPath.includes('/projectAdd')) {
|
||||||
|
// 特殊处理:项目填报页面(项目管理的子页面)
|
||||||
|
// 添加项目管理(父级)
|
||||||
|
breadcrumbList.value.push({
|
||||||
|
title: '项目管理',
|
||||||
|
path: '/projectManagement',
|
||||||
|
name: 'projectManagement',
|
||||||
|
meta: { title: '项目管理' }
|
||||||
|
})
|
||||||
|
|
||||||
|
// 添加项目填报(当前页)
|
||||||
|
breadcrumbList.value.push({
|
||||||
|
title: '项目填报',
|
||||||
|
path: currentPath,
|
||||||
|
name: 'projectAdd',
|
||||||
|
meta: { title: '项目填报' }
|
||||||
|
})
|
||||||
} else {
|
} else {
|
||||||
// 普通路由处理
|
// 普通路由处理
|
||||||
matched.forEach((record, index) => {
|
matched.forEach((record, index) => {
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
import component from 'element-plus/es/components/tree-select/src/tree-select-option.mjs'
|
|
||||||
import { createRouter, createWebHistory } from 'vue-router'
|
import { createRouter, createWebHistory } from 'vue-router'
|
||||||
|
|
||||||
const routes = [
|
const routes = [
|
||||||
@ -149,6 +148,16 @@ const routes = [
|
|||||||
breadcrumb: true
|
breadcrumb: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/projectAdd/:data?',
|
||||||
|
name: 'projectAdd',
|
||||||
|
component: () => import('../views/ProjectManagement_Rebuild/projectAddPage.vue'),
|
||||||
|
meta: {
|
||||||
|
title: '项目填报',
|
||||||
|
breadcrumb: true,
|
||||||
|
parentRoute: 'projectManagement' // 用于在面包屑中建立父子关系
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: '/disasterManagement',
|
path: '/disasterManagement',
|
||||||
name: 'disasterManagement',
|
name: 'disasterManagement',
|
||||||
|
|||||||
@ -1,71 +1,83 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="detail-container">
|
<div class="detail-container">
|
||||||
<el-form ref="formRef" :model="form" label-position="right" label-width="150px"
|
<el-form ref="formRef" :model="form" label-position="right" label-width="150px"
|
||||||
style="max-height: 60vh; overflow-y: auto; padding-right: 50px" :rules="rules" :disabled="disabled">
|
style="max-height: 60vh; overflow-y: auto; padding-right: 50px" :rules="rules">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="区县名称" prop="区县名称">
|
<el-form-item label="区县名称" prop="区县名称">
|
||||||
<el-input v-model="form.project.districtName"></el-input>
|
<el-input disabled v-model="form.districtName"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="路线编码" prop="路线编码">
|
<el-form-item label="路线编码" prop="路线编码">
|
||||||
<el-input v-model="form.project.routeNo"></el-input>
|
<el-input disabled v-model="form.routeNo"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="实施里程(公里)" prop="实施里程">
|
<el-form-item label="实施里程" prop="实施里程">
|
||||||
<el-input-number v-model="form.project.implementMileage" :controls="false"></el-input-number>
|
<el-input-number disabled v-model="form.implementMileage" :controls="false">
|
||||||
|
<template #suffix>
|
||||||
|
<span>公里</span>
|
||||||
|
</template>
|
||||||
|
</el-input-number>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="塌方及损失" prop="塌方及损失">
|
<el-form-item label="塌方及损失" prop="塌方及损失">
|
||||||
<el-input-number v-model="form.project.earthworkLoss" :controls="false"></el-input-number>
|
<el-input-number disabled v-model="form.earthworkLoss" :controls="false">
|
||||||
|
<template #suffix>
|
||||||
|
<span>方/万元</span>
|
||||||
|
</template>
|
||||||
|
</el-input-number>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="起点桩号" prop="起点桩号">
|
<el-form-item label="起点桩号" prop="起点桩号">
|
||||||
<el-input v-model="form.project.startStakeNo"></el-input>
|
<el-input disabled v-model="form.startStakeNo"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="止点桩号" prop="止点桩号">
|
<el-form-item label="止点桩号" prop="止点桩号">
|
||||||
<el-input v-model="form.project.endStakeNo"></el-input>
|
<el-input disabled v-model="form.endStakeNo"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="路况位置" prop="路况位置">
|
<el-form-item label="路况位置" prop="路况位置">
|
||||||
<el-input v-model="form.project.roadLocation"></el-input>
|
<el-input disabled v-model="form.roadLocation"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="阻断点小地名" prop="阻断点小地名">
|
<el-form-item label="阻断点小地名" prop="阻断点小地名">
|
||||||
<el-input v-model="form.project.blockedPointName"></el-input>
|
<el-input disabled v-model="form.blockedPointName"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="灾害类型" prop="灾害类型">
|
<el-form-item label="灾害类型" prop="灾害类型">
|
||||||
<el-input v-model="form.project.disasterType"></el-input>
|
<el-input disabled v-model="form.disasterType"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="预估费用" prop="预估费用">
|
<el-form-item label="预估费用" prop="预估费用">
|
||||||
<el-input-number v-model="form.project.estimatedCost" :controls="false"></el-input-number>
|
<el-input-number disabled v-model="form.estimatedCost" :controls="false">
|
||||||
|
<template #suffix>
|
||||||
|
<span>万元</span>
|
||||||
|
</template>
|
||||||
|
</el-input-number>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="技术等级" prop="技术等级">
|
<el-form-item label="技术等级" prop="技术等级">
|
||||||
<el-select v-model="form.project.technicalGrade">
|
<el-select v-model="form.technicalGrade">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in [{ value: '三级', label: '三级' }, { value: '二级', label: '二级' }, { value: '一级', label: '一级' }]"
|
v-for="item in [{ value: '三级', label: '三级' }, { value: '二级', label: '二级' }, { value: '一级', label: '一级' }]"
|
||||||
:key="item.value" :label="item.label" :value="item.value" />
|
:key="item.value" :label="item.label" :value="item.value" />
|
||||||
@ -74,31 +86,35 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="资金来源" prop="资金来源">
|
<el-form-item label="资金来源" prop="资金来源">
|
||||||
<el-input v-model="form.project.fundingSource"></el-input>
|
<el-input v-model="form.fundingSource"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="处置灾毁处数" prop="处置灾毁处数">
|
<el-form-item label="处置灾毁处数" prop="处置灾毁处数">
|
||||||
<el-input-number v-model="form.project.disposalCount" :controls="false"></el-input-number>
|
<el-input-number v-model="form.disposalCount" :controls="false"></el-input-number>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="已完工处数" prop="已完工处数">
|
<el-form-item label="已完工处数" prop="已完工处数">
|
||||||
<el-input-number v-model="form.project.completedCount" :controls="false"></el-input-number>
|
<el-input-number v-model="form.completedCount" :controls="false"></el-input-number>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="总投资" prop="总投资">
|
<el-form-item label="总投资" prop="总投资">
|
||||||
<el-input-number v-model="form.project.totalInvestment" :controls="false"></el-input-number>
|
<el-input-number v-model="form.totalInvestment" :controls="false">
|
||||||
|
<template #suffix>
|
||||||
|
<span>万元</span>
|
||||||
|
</template>
|
||||||
|
</el-input-number>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="项目费用类型" prop="项目费用类型">
|
<el-form-item label="项目费用类型" prop="项目费用类型">
|
||||||
<el-radio-group v-model="form.project.projectExpenseType">
|
<el-radio-group v-model="form.projectExpenseType">
|
||||||
<el-radio value="自费重修">自费重修</el-radio>
|
<el-radio value="自费重修">自费重修</el-radio>
|
||||||
<el-radio value="申报重修">申报重修</el-radio>
|
<el-radio value="申报重修">申报重修</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
@ -120,163 +136,83 @@ const props = defineProps({
|
|||||||
type: Object,
|
type: Object,
|
||||||
default: () => ({}),
|
default: () => ({}),
|
||||||
},
|
},
|
||||||
disabled: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
const sfjwd = ref("是");
|
|
||||||
const qx = ref("");
|
|
||||||
const loading = ref(false);
|
|
||||||
const selectOptions = ref([]);
|
|
||||||
const qxList = ref([]);
|
|
||||||
|
|
||||||
// 根据用户信息 查询角色列表
|
|
||||||
const getUserList = async (key) => {
|
|
||||||
try {
|
|
||||||
const keyword = key;
|
|
||||||
let url = "";
|
|
||||||
if (keyword) {
|
|
||||||
url = `/snow-ops-platform/yhzry/getUserByKey?key=${keyword}`;
|
|
||||||
} else {
|
|
||||||
url = `/snow-ops-platform/yhzry/getUserByKey?key=`;
|
|
||||||
}
|
|
||||||
const res = await request({
|
|
||||||
url: url,
|
|
||||||
method: "GET",
|
|
||||||
});
|
|
||||||
if (res.code === "00000") {
|
|
||||||
return res.data;
|
|
||||||
} else {
|
|
||||||
throw new Error(res.message);
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
ElMessage.error(error.message);
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// 选择人员筛选
|
|
||||||
const remoteMethod = async (query) => {
|
|
||||||
if (query === "") {
|
|
||||||
selectOptions.value = [];
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
loading.value = true;
|
|
||||||
const res = await getUserList(query);
|
|
||||||
if (res) {
|
|
||||||
selectOptions.value = res;
|
|
||||||
}
|
|
||||||
loading.value = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 根据区县名称 查询区县列表
|
|
||||||
const getQxList = async (key) => {
|
|
||||||
try {
|
|
||||||
const keyword = key;
|
|
||||||
let url = "";
|
|
||||||
if (keyword) {
|
|
||||||
url = `/snow-ops-platform/district/listDistricts?qxmc=${keyword}`;
|
|
||||||
} else {
|
|
||||||
url = `/snow-ops-platform/district/listDistricts?qxmc=`;
|
|
||||||
}
|
|
||||||
const res = await request({
|
|
||||||
url: url,
|
|
||||||
method: "GET",
|
|
||||||
});
|
|
||||||
if (res.code === "00000") {
|
|
||||||
return res.data;
|
|
||||||
} else {
|
|
||||||
throw new Error(res.message);
|
|
||||||
}
|
|
||||||
} catch (error) { }
|
|
||||||
};
|
|
||||||
|
|
||||||
// 选择区县筛选
|
|
||||||
const remoteMethod_qx = async (query) => {
|
|
||||||
loading.value = true;
|
|
||||||
const res = await getQxList(query);
|
|
||||||
if (res) {
|
|
||||||
qxList.value = res;
|
|
||||||
}
|
|
||||||
loading.value = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 选择区县
|
|
||||||
const handleSelect_qx = (value) => {
|
|
||||||
props.form.qxmc = value;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 选择人员
|
|
||||||
const handleSelect = (value) => {
|
|
||||||
console.log("value", value);
|
|
||||||
props.form.fzrXm = value.realName;
|
|
||||||
props.form.fzrSjhm = value.phone;
|
|
||||||
props.form.fzrUserId = value.userId;
|
|
||||||
};
|
|
||||||
|
|
||||||
const rules = computed(() => {
|
const rules = computed(() => {
|
||||||
return {
|
return {
|
||||||
mc: [
|
技术等级: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
validator: (rule, value, callback) => {
|
validator: (rule, value, callback) => {
|
||||||
if (props.form.mc) {
|
if (props.form.technicalGrade) {
|
||||||
callback();
|
callback();
|
||||||
} else {
|
} else {
|
||||||
callback(new Error("请输入服务站名称"));
|
callback(new Error("请选择技术等级"));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
trigger: "blur",
|
trigger: "blur",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
qxmc: [
|
资金来源: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
validator: (rule, value, callback) => {
|
validator: (rule, value, callback) => {
|
||||||
if (props.form.qxmc) {
|
if (props.form.fundingSource) {
|
||||||
callback();
|
callback();
|
||||||
} else {
|
} else {
|
||||||
callback(new Error("请选择所属区县"));
|
callback(new Error("请填写资金来源"));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
trigger: "blur",
|
trigger: "blur",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
fzr: [
|
处置灾毁处数: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
validator: (rule, value, callback) => {
|
validator: (rule, value, callback) => {
|
||||||
if (props.form.fzrUserId && props.form.fzrXm && props.form.fzrSjhm) {
|
if (props.form.disposalCount) {
|
||||||
callback();
|
callback();
|
||||||
} else {
|
} else {
|
||||||
callback(new Error("请选择负责人"));
|
callback(new Error("请填写处置灾毁处数"));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
trigger: "blur",
|
trigger: "blur",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
jd: [
|
已完工处数: [
|
||||||
{
|
{
|
||||||
required: sfjwd.value === "否",
|
required: true,
|
||||||
validator: (rule, value, callback) => {
|
validator: (rule, value, callback) => {
|
||||||
if (props.form.jd) {
|
if (props.form.completedCount) {
|
||||||
callback();
|
callback();
|
||||||
} else {
|
} else {
|
||||||
callback(new Error("请输入站点经度"));
|
callback(new Error("请填写已完工处数"));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
trigger: "blur",
|
trigger: "blur",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
wd: [
|
总投资: [
|
||||||
{
|
{
|
||||||
required: sfjwd.value === "否",
|
required: true,
|
||||||
validator: (rule, value, callback) => {
|
validator: (rule, value, callback) => {
|
||||||
if (props.form.wd) {
|
if (props.form.totalInvestment) {
|
||||||
callback();
|
callback();
|
||||||
} else {
|
} else {
|
||||||
callback(new Error("请输入站点纬度"));
|
callback(new Error("请填写总投资数"));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
项目费用类型: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
validator: (rule, value, callback) => {
|
||||||
|
if (props.form.projectExpenseType) {
|
||||||
|
callback();
|
||||||
|
} else {
|
||||||
|
callback(new Error("请选择项目费用类型"));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
trigger: "blur",
|
trigger: "blur",
|
||||||
|
|||||||
@ -2,6 +2,8 @@ import { h, ref, onMounted, reactive, watch, toRaw, nextTick } from "vue";
|
|||||||
import { request } from "@/utils/request";
|
import { request } from "@/utils/request";
|
||||||
import { useRoute, useRouter } from 'vue-router'
|
import { useRoute, useRouter } from 'vue-router'
|
||||||
import ExamineDialog from "./examineDialog.vue";
|
import ExamineDialog from "./examineDialog.vue";
|
||||||
|
import RejectDialog from './rejectDialog.vue';
|
||||||
|
import { ElLoading } from 'element-plus'
|
||||||
|
|
||||||
const tableData = ref([]); // 表格数据
|
const tableData = ref([]); // 表格数据
|
||||||
const modelVisible = ref(false); // 弹窗状态
|
const modelVisible = ref(false); // 弹窗状态
|
||||||
@ -23,10 +25,6 @@ const model = reactive({
|
|||||||
});
|
});
|
||||||
const form = reactive({
|
const form = reactive({
|
||||||
});
|
});
|
||||||
const INIT_FORM = {
|
|
||||||
project: {},
|
|
||||||
fileList: []
|
|
||||||
};
|
|
||||||
// 抽屉内容
|
// 抽屉内容
|
||||||
const drawer = reactive({
|
const drawer = reactive({
|
||||||
title: '',
|
title: '',
|
||||||
@ -40,6 +38,114 @@ const drawer = reactive({
|
|||||||
const dialogRef = ref(null); // 弹窗实例
|
const dialogRef = ref(null); // 弹窗实例
|
||||||
const drawerRef = ref(null); // 抽屉实例
|
const drawerRef = ref(null); // 抽屉实例
|
||||||
|
|
||||||
|
// 第二个弹窗
|
||||||
|
const model2 = reactive({
|
||||||
|
title: '',
|
||||||
|
content: null,
|
||||||
|
props: {},
|
||||||
|
onCancel: null,
|
||||||
|
onConfirm: null,
|
||||||
|
width: '',
|
||||||
|
footerPosition: null,
|
||||||
|
onCancelType: null,
|
||||||
|
onConfirmName: null,
|
||||||
|
onCancelName: null,
|
||||||
|
tagContent: null,
|
||||||
|
tagType: null,
|
||||||
|
});
|
||||||
|
const modelVisible2 = ref(false);
|
||||||
|
const dialogRef2 = ref(null);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 过滤条件
|
||||||
|
const filterData = reactive({
|
||||||
|
})
|
||||||
|
// 分页
|
||||||
|
const pagination = reactive({
|
||||||
|
current: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
total: 0,
|
||||||
|
pageSizes: [10, 20, 50],
|
||||||
|
layout: "prev, pager, next, jumper",
|
||||||
|
onChange: (page, pageSize) => {
|
||||||
|
pagination.current = page;
|
||||||
|
pagination.pageSize = pageSize;
|
||||||
|
getTableData(filterData);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// 获取项目列表
|
||||||
|
const getTableData = async (filterData = {}) => {
|
||||||
|
try {
|
||||||
|
// 过滤空字符串属性
|
||||||
|
const filteredParams = {};
|
||||||
|
Object.keys(filterData).forEach(key => {
|
||||||
|
if (filterData[key] !== '' && filterData[key] != null) {
|
||||||
|
filteredParams[key] = filterData[key];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const res = await request({
|
||||||
|
url: '/snow-ops-platform/recovery/list',
|
||||||
|
method: "GET",
|
||||||
|
params: {
|
||||||
|
...filteredParams,
|
||||||
|
submitTimeStart: filteredParams?.submitTimeStart ? filteredParams.submitTimeStart + `-01-01 00:00:00` : null,
|
||||||
|
pageNum: pagination.current,
|
||||||
|
pageSize: pagination.pageSize,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if (res.code === '00000') {
|
||||||
|
tableData.value = res.data.records
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('获取项目列表失败:', error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 驳回项目
|
||||||
|
const rejectProject = async () => {
|
||||||
|
try {
|
||||||
|
const loading = ElLoading.service({
|
||||||
|
lock: true,
|
||||||
|
text: '操作中',
|
||||||
|
background: 'rgba(0, 0, 0, 0.7)',
|
||||||
|
})
|
||||||
|
const res = await request({
|
||||||
|
url: '/snow-ops-platform/recovery/approve',
|
||||||
|
method: 'POST',
|
||||||
|
data: {
|
||||||
|
id: form.id,
|
||||||
|
approveLevel: 1,
|
||||||
|
isPass: false,
|
||||||
|
rejectReason: form.rejectReason,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
loading.close();
|
||||||
|
if (res.code === '00000') {
|
||||||
|
ElMessage.success('操作成功');
|
||||||
|
modelVisible.value = false;
|
||||||
|
modelVisible2.value = false;
|
||||||
|
getTableData(filterData);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
ElMessage.error('操作失败');
|
||||||
|
console.error('驳回项目失败:', error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export default () => {
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
prop: "districtName",
|
prop: "districtName",
|
||||||
@ -113,6 +219,7 @@ const columns = [
|
|||||||
type: "primary",
|
type: "primary",
|
||||||
link: true,
|
link: true,
|
||||||
onClick: async () => {
|
onClick: async () => {
|
||||||
|
openExamineDialog(row);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
() => "审批"
|
() => "审批"
|
||||||
@ -132,59 +239,49 @@ const columns = [
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
// 过滤条件
|
|
||||||
const filterData = reactive({
|
|
||||||
submitTimeStart: "",
|
|
||||||
routeNo: "",
|
|
||||||
})
|
|
||||||
// 分页
|
|
||||||
const pagination = reactive({
|
|
||||||
current: 1,
|
|
||||||
pageSize: 10,
|
|
||||||
total: 0,
|
|
||||||
pageSizes: [10, 20, 50],
|
|
||||||
layout: "prev, pager, next, jumper",
|
|
||||||
onChange: (page, pageSize) => {
|
|
||||||
pagination.current = page;
|
|
||||||
pagination.pageSize = pageSize;
|
|
||||||
getTableData(filterData);
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
// 获取项目列表
|
|
||||||
const getTableData = async (filterData) => {
|
|
||||||
try {
|
|
||||||
const res = await request({
|
|
||||||
url: '/snow-ops-platform/recovery/list',
|
|
||||||
method: "GET",
|
|
||||||
params: {
|
|
||||||
...filterData,
|
|
||||||
submitTimeStart: filterData.submitTimeStart ? filterData.submitTimeStart+`-01-01 00:00:00` : null,
|
|
||||||
pageNum: pagination.current,
|
|
||||||
pageSize: pagination.pageSize,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} catch (error) {
|
|
||||||
console.error('获取项目列表失败:', error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 打开审批弹窗
|
// 打开审批弹窗
|
||||||
const openExamineDialog = async () => {
|
const openExamineDialog = async (row) => {
|
||||||
model.title = '项目审批';
|
model.title = '项目审批';
|
||||||
Object.assign(form, INIT_FORM);
|
Object.assign(form, row);
|
||||||
model.props = {
|
model.props = {
|
||||||
form: form,
|
form: form,
|
||||||
};
|
};
|
||||||
model.content = ExamineDialog;
|
model.content = ExamineDialog;
|
||||||
model.onCancel = () => {
|
model.onCancel = () => {
|
||||||
modelVisible.value = false;
|
model2.title = '驳回原因';
|
||||||
|
model2.props = {
|
||||||
|
form: form,
|
||||||
|
}
|
||||||
|
model2.content = RejectDialog;
|
||||||
|
model2.onCancel = () => {
|
||||||
|
modelVisible2.value = false;
|
||||||
|
}
|
||||||
|
model2.onConfirm = async () => {
|
||||||
|
await dialogRef2?.value?.dynamicComponentRef?.formRef.validate().then(async () => {
|
||||||
|
await rejectProject()
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
ElMessage.error('请处理表单中的错误项');
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
model2.width = '30%'
|
||||||
|
model2.footerPosition = 'center'
|
||||||
|
model2.onConfirmName = '确定'
|
||||||
|
model2.onCancelName = '取消'
|
||||||
|
modelVisible2.value = true;
|
||||||
};
|
};
|
||||||
model.onConfirm = async () => {
|
model.onConfirm = async () => {
|
||||||
dialogType.value = '';
|
|
||||||
await dialogRef?.value?.dynamicComponentRef?.formRef.validate().then(() => {
|
await dialogRef?.value?.dynamicComponentRef?.formRef.validate().then(() => {
|
||||||
console.log('@@@@@填报项目', form);
|
if (form.projectExpenseType === '自费重修') {
|
||||||
|
router.push({
|
||||||
|
name: 'projectAdd',
|
||||||
|
params: {
|
||||||
|
data: encodeURIComponent(JSON.stringify(form))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
modelVisible.value = false;
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
ElMessage.error('请处理表单中的错误项');
|
ElMessage.error('请处理表单中的错误项');
|
||||||
@ -200,14 +297,6 @@ const openExamineDialog = async () => {
|
|||||||
modelVisible.value = true;
|
modelVisible.value = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export default () => {
|
|
||||||
|
|
||||||
const router = useRouter();
|
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getTableData();
|
getTableData();
|
||||||
})
|
})
|
||||||
@ -231,5 +320,9 @@ export default () => {
|
|||||||
dialogRef,
|
dialogRef,
|
||||||
drawerRef,
|
drawerRef,
|
||||||
openExamineDialog,
|
openExamineDialog,
|
||||||
|
|
||||||
|
model2,
|
||||||
|
modelVisible2,
|
||||||
|
dialogRef2,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,8 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="root">
|
<div class="root">
|
||||||
<div class="search-box">
|
<div class="search-box">
|
||||||
<el-date-picker v-model="script.filterData.submitTimeStart" type="year" placeholder="年度" format="YYYY" value-format="YYYY"
|
<el-date-picker v-model="script.filterData.submitTimeStart" type="year" placeholder="年度" format="YYYY"
|
||||||
style="width: 240px; margin-right: 10px" size="large" />
|
value-format="YYYY" style="width: 240px; margin-right: 10px" size="large" />
|
||||||
<el-input v-model="script.filterData.routeNo" style="width: 240px; margin-right: 10px" size="large"
|
<el-input v-model="script.filterData.routeNo" style="width: 240px; margin-right: 10px" size="large"
|
||||||
placeholder="路线编码" :suffix-icon="Search" />
|
placeholder="路线编码" :suffix-icon="Search" />
|
||||||
</div>
|
</div>
|
||||||
@ -19,10 +19,16 @@
|
|||||||
:onConfirm="script.model?.onConfirm" :onCancel="script.model?.onCancel" ref="dialogRef"
|
:onConfirm="script.model?.onConfirm" :onCancel="script.model?.onCancel" ref="dialogRef"
|
||||||
:width="script.model?.width" :footer-position="script.model?.footerPosition"
|
:width="script.model?.width" :footer-position="script.model?.footerPosition"
|
||||||
:onCancelType="script.model?.onCancelType" :onConfirmName="script.model?.onConfirmName"
|
:onCancelType="script.model?.onCancelType" :onConfirmName="script.model?.onConfirmName"
|
||||||
:onCancelName="script.model?.onCancelName"
|
:onCancelName="script.model?.onCancelName" :tagContent="script.model?.tagContent"
|
||||||
:tagContent="script.model?.tagContent"
|
:tagType="script.model?.tagType">
|
||||||
:tagType="script.model?.tagType"
|
</MyDialog>
|
||||||
>
|
<MyDialog v-model="script.modelVisible2.value" :title="script.model2?.title"
|
||||||
|
:dynamicComponent="script.model2?.content" :component-props="script.model2?.props"
|
||||||
|
:onConfirm="script.model2?.onConfirm" :onCancel="script.model2?.onCancel" ref="dialogRef2"
|
||||||
|
:width="script.model2?.width" :footer-position="script.model2?.footerPosition"
|
||||||
|
:onCancelType="script.model2?.onCancelType" :onConfirmName="script.model2?.onConfirmName"
|
||||||
|
:onCancelName="script.model2?.onCancelName" :tagContent="script.model2?.tagContent"
|
||||||
|
:tagType="script.model2?.tagType">
|
||||||
</MyDialog>
|
</MyDialog>
|
||||||
<MyDrawer v-model="script.drawerVisible.value" :title="script.drawer?.title"
|
<MyDrawer v-model="script.drawerVisible.value" :title="script.drawer?.title"
|
||||||
:dynamicComponent="script.drawer?.content" :component-props="script.drawer?.props"
|
:dynamicComponent="script.drawer?.content" :component-props="script.drawer?.props"
|
||||||
@ -40,7 +46,7 @@ import MyDialog from "../../component/MyDialog";
|
|||||||
import MyDrawer from "../../component/MyDrawer";
|
import MyDrawer from "../../component/MyDrawer";
|
||||||
import scriptFn from "./index.js";
|
import scriptFn from "./index.js";
|
||||||
const script = scriptFn();
|
const script = scriptFn();
|
||||||
const { dialogRef, drawerRef } = script;
|
const { dialogRef, drawerRef, dialogRef2 } = script;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@ -1,11 +1,306 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="root">
|
<div class="root">
|
||||||
|
<div class="form-box">
|
||||||
|
<el-form ref="formRef" :model="form" label-position="right" label-width="150px" style="padding-right: 50px"
|
||||||
|
:rules="rules">
|
||||||
|
<el-row>
|
||||||
|
<h4 style="margin:0 0 20px 50px;">基本信息</h4>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="区县名称" prop="区县名称">
|
||||||
|
<el-input disabled v-model="form.districtName"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="路线编码" prop="路线编码">
|
||||||
|
<el-input disabled v-model="form.routeNo"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="实施里程" prop="实施里程">
|
||||||
|
<el-input-number disabled v-model="form.implementMileage" :controls="false">
|
||||||
|
<template #suffix>
|
||||||
|
<span>公里</span>
|
||||||
|
</template>
|
||||||
|
</el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="塌方及损失" prop="塌方及损失">
|
||||||
|
<el-input-number disabled v-model="form.earthworkLoss" :controls="false">
|
||||||
|
<template #suffix>
|
||||||
|
<span>方/万元</span>
|
||||||
|
</template>
|
||||||
|
</el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="起点桩号" prop="起点桩号">
|
||||||
|
<el-input disabled v-model="form.startStakeNo"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="止点桩号" prop="止点桩号">
|
||||||
|
<el-input disabled v-model="form.endStakeNo"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="路况位置" prop="路况位置">
|
||||||
|
<el-input disabled v-model="form.roadLocation"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="阻断点小地名" prop="阻断点小地名">
|
||||||
|
<el-input disabled v-model="form.blockedPointName"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="灾害类型" prop="灾害类型">
|
||||||
|
<el-input disabled v-model="form.disasterType"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="预估费用" prop="预估费用">
|
||||||
|
<el-input-number disabled v-model="form.estimatedCost" :controls="false">
|
||||||
|
<template #suffix>
|
||||||
|
<span>万元</span>
|
||||||
|
</template>
|
||||||
|
</el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="技术等级" prop="技术等级">
|
||||||
|
<el-select disabled v-model="form.technicalGrade">
|
||||||
|
<el-option
|
||||||
|
v-for="item in [{ value: '三级', label: '三级' }, { value: '二级', label: '二级' }, { value: '一级', label: '一级' }]"
|
||||||
|
:key="item.value" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="资金来源" prop="资金来源">
|
||||||
|
<el-input disabled v-model="form.fundingSource"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="处置灾毁处数" prop="处置灾毁处数">
|
||||||
|
<el-input-number disabled v-model="form.disposalCount" :controls="false"></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="已完工处数" prop="已完工处数">
|
||||||
|
<el-input-number disabled v-model="form.completedCount" :controls="false"></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="总投资" prop="总投资">
|
||||||
|
<el-input-number disabled v-model="form.totalInvestment" :controls="false">
|
||||||
|
<template #suffix>
|
||||||
|
<span>万元</span>
|
||||||
|
</template>
|
||||||
|
</el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="项目费用类型" prop="项目费用类型">
|
||||||
|
<el-radio-group disabled v-model="form.projectExpenseType">
|
||||||
|
<el-radio value="自费重修">自费重修</el-radio>
|
||||||
|
<el-radio value="申报重修">申报重修</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<h4 style="margin:0 0 20px 50px;">实施情况</h4>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="主要建设内容" prop="主要建设内容">
|
||||||
|
<el-input type="textarea" v-model="form.mainConstructionContent" clearable>
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="开工或预计开工时间" prop="开工或预计开工时间">
|
||||||
|
<el-date-picker type="date" v-model="form.startTime" clearable format="YYYY-MM-DD"
|
||||||
|
value-format="YYYY-MM-DD">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="完工或预计完工时间" prop="完工或预计完工时间">
|
||||||
|
<el-date-picker type="date" v-model="form.endTime" clearable format="YYYY-MM-DD"
|
||||||
|
value-format="YYYY-MM-DD">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="是否在部交通统计报表管理系统报送投资" prop="是否在部交通统计报表管理系统报送投资" label-width="300px">
|
||||||
|
<el-radio-group v-model="form.isReportedToMinistry">
|
||||||
|
<el-radio value="0">是</el-radio>
|
||||||
|
<el-radio value="1">否</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="已报送投资额" prop="已报送投资额">
|
||||||
|
<el-input-number v-model="form.reportedInvestment" :controls="false">
|
||||||
|
<template #suffix>
|
||||||
|
<span>万元</span>
|
||||||
|
</template>
|
||||||
|
</el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="项目实施进度" prop="项目实施进度">
|
||||||
|
<el-select v-model="form.projectProgress">
|
||||||
|
<el-option v-for="item in [
|
||||||
|
{ value: '立项', label: '立项' },
|
||||||
|
{ value: '财政评审', label: '财政评审' },
|
||||||
|
{ value: '开展施工图设计', label: '开展施工图设计' },
|
||||||
|
{ value: '完成施设于批复', label: '完成施设于批复' }
|
||||||
|
]"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="建设单位名称" prop="建设单位名称">
|
||||||
|
<el-input v-model="form.constructionUnit"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="建设单位联系人" prop="建设单位联系人">
|
||||||
|
<el-input v-model="form.constructionUnitContact"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="建设单位联系人电话" prop="建设单位联系人电话">
|
||||||
|
<el-input v-model="form.constructionUnitPhone"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="施工单位名称" prop="施工单位名称">
|
||||||
|
<el-input v-model="form.executionUnit"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="施工单位联系人" prop="施工单位联系人">
|
||||||
|
<el-input v-model="form.designUnitContact"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="施工单位联系电话" prop="施工单位联系电话">
|
||||||
|
<el-input v-model="form.executionUnitPhone"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="设计单位名称" prop="设计单位名称">
|
||||||
|
<el-input v-model="form.designUnit"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="设计单位联系人" prop="设计单位联系人">
|
||||||
|
<el-input v-model="form.designUnitContact"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="设计单位联系人电话" prop="设计单位联系人电话">
|
||||||
|
<el-input v-model="form.designUnitPhone"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="监理单位名称" prop="监理单位名称">
|
||||||
|
<el-input v-model="form.supervisionUnit"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="监理单位联系人" prop="监理单位联系人">
|
||||||
|
<el-input v-model="form.supervisionUnitContact"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="监理单位联系电话" prop="监理单位联系电话">
|
||||||
|
<el-input v-model="form.supervisionUnitPhone"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="施工图批复时间" prop="施工图批复时间">
|
||||||
|
<el-date-picker type="date" v-model="form.designApprovalTime" clearable format="YYYY-MM-DD"
|
||||||
|
value-format="YYYY-MM-DD">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="监理单位联系电话" prop="监理单位联系电话">
|
||||||
|
<el-input v-model="form.supervisionUnitPhone"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<div class="button-box">
|
||||||
|
<el-button type="primary" size="large">提交</el-button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
|
||||||
|
import { ref, onMounted, watch, reactive, toRaw } from 'vue'
|
||||||
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
|
const router = useRouter()
|
||||||
|
const route = useRoute()
|
||||||
|
const form = ref({})
|
||||||
|
const formRef = ref(null)
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
if (route.params.data) {
|
||||||
|
const data = JSON.parse(decodeURIComponent(route.params.data));
|
||||||
|
form.value = data
|
||||||
|
// console.log('@@@@跳转过来了data', data);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
@ -15,4 +310,19 @@
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.form-box {
|
||||||
|
width: 100%;
|
||||||
|
height: 90%;
|
||||||
|
overflow-y: auto;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-box {
|
||||||
|
flex: 1;
|
||||||
|
padding: 20px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@ -0,0 +1,48 @@
|
|||||||
|
<template>
|
||||||
|
<div class="detail-container">
|
||||||
|
<el-form ref="formRef" :model="form" label-position="right" label-width="auto"
|
||||||
|
style="max-height: 60vh; overflow-y: auto;" :rules="rules">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="" prop="驳回原因">
|
||||||
|
<el-input v-model="form.rejectReason"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref, onMounted, watch, computed } from "vue";
|
||||||
|
import { request } from "@/utils/request";
|
||||||
|
const formRef = ref(null);
|
||||||
|
defineExpose({ formRef });
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
form: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({}),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const rules = computed(() => {
|
||||||
|
return {
|
||||||
|
驳回原因: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
validator: (rule, value, callback) => {
|
||||||
|
if (props.form.rejectReason) {
|
||||||
|
callback();
|
||||||
|
} else {
|
||||||
|
callback(new Error("请输入驳回原因"));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style></style>
|
||||||
Loading…
x
Reference in New Issue
Block a user