明树Git Lab

Commit 6489b8a5 authored by zhanghan's avatar zhanghan

1

parent bf028b85
...@@ -6,7 +6,16 @@ ...@@ -6,7 +6,16 @@
<span class="backText">返回</span> <span class="backText">返回</span>
</div> </div>
<span class="backName">{{ route.meta.title }}</span> <span class="backName">{{ route.meta.title }}</span>
<div class="back-actions" v-if="showSave || showExport"> <div class="back-actions" v-if="showSave || showExport || showProcess">
<el-button
v-if="showProcess"
type="primary"
plain
@click="processDialogVisible = true"
>
办理过程
</el-button>
<el-button <el-button
v-if="showExport" v-if="showExport"
type="primary" type="primary"
...@@ -28,9 +37,43 @@ ...@@ -28,9 +37,43 @@
</el-button> </el-button>
</div> </div>
</div> </div>
<!-- 办理过程弹窗 -->
<el-dialog
v-if="showProcess"
v-model="processDialogVisible"
:title="processInfo.projectName || '全部办理记录'"
width="80%"
top="5vh"
:close-on-click-modal="false"
:close-on-press-escape="true"
>
<div class="process-dialog-content">
<el-table
:data="processData"
border
style="width: 100%"
class="process-table"
:header-cell-style="{ background: '#f5f7fa', color: '#333', textAlign: 'center', fontWeight: 600 }"
:cell-style="{ textAlign: 'center' }"
>
<el-table-column type="index" label="序号" width="80" />
<el-table-column prop="handleStep" label="办理环节" min-width="120" />
<el-table-column prop="handleDept" label="办理处室" min-width="150" />
<el-table-column prop="handlePerson" label="办理人" min-width="120" />
<el-table-column prop="nextPerson" label="下一步办理人" min-width="120" />
<el-table-column prop="handleOpinion" label="办理意见" min-width="120" />
<el-table-column prop="handleTime" label="办理时间" min-width="180" />
</el-table>
</div>
<template #footer>
<el-button @click="processDialogVisible = false">关闭</el-button>
</template>
</el-dialog>
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref } from "vue";
import { useRouter, useRoute } from "vue-router"; import { useRouter, useRoute } from "vue-router";
const props = defineProps({ const props = defineProps({
...@@ -58,6 +101,18 @@ const props = defineProps({ ...@@ -58,6 +101,18 @@ const props = defineProps({
type: Boolean, type: Boolean,
default: false, default: false,
}, },
showProcess: {
type: Boolean,
default: false,
},
processInfo: {
type: Object,
default: () => ({}),
},
processData: {
type: Array,
default: () => [],
},
}); });
const emit = defineEmits(["save", "back", "export"]); const emit = defineEmits(["save", "back", "export"]);
...@@ -65,6 +120,8 @@ const emit = defineEmits(["save", "back", "export"]); ...@@ -65,6 +120,8 @@ const emit = defineEmits(["save", "back", "export"]);
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
const processDialogVisible = ref(false);
const handleBack = () => { const handleBack = () => {
emit("back"); emit("back");
router.back(); router.back();
......
...@@ -395,3 +395,9 @@ ...@@ -395,3 +395,9 @@
border-color: #ebeef5; border-color: #ebeef5;
padding: 8px 0; padding: 8px 0;
} }
.process-dialog-content {
padding: 0;
}
.process-dialog-content .process-table {
font-size: 13px;
}
...@@ -9,8 +9,12 @@ ...@@ -9,8 +9,12 @@
['1', '5', '7'].includes(formData.projectLzType.toString())) ['1', '5', '7'].includes(formData.projectLzType.toString()))
" "
:loading="loading" :loading="loading"
:show-process="true"
:process-info="processInfo"
:process-data="processTableData"
@save="() => saveClick('save')" @save="() => saveClick('save')"
></routerBack> ></routerBack>
<div class="tabs-content"> <div class="tabs-content">
<el-tabs v-model="pageActiveName" type="border-card"> <el-tabs v-model="pageActiveName" type="border-card">
<el-tab-pane label="立项填报" name="立项填报"> <el-tab-pane label="立项填报" name="立项填报">
...@@ -126,11 +130,12 @@ ...@@ -126,11 +130,12 @@
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script setup> <script setup>
import { reactive, ref, onMounted, getCurrentInstance, provide } from "vue"; import { reactive, ref, computed, onMounted, getCurrentInstance, provide } from "vue";
import { useRouter, useRoute } from "vue-router"; import { useRouter, useRoute } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus"; import { ElMessage, ElMessageBox } from "element-plus";
import { useUserStore } from "@/stores/user.js"; import { useUserStore } from "@/stores/user.js";
...@@ -281,22 +286,32 @@ const getObjSums = (obj, objkey) => { ...@@ -281,22 +286,32 @@ const getObjSums = (obj, objkey) => {
// Provide for child components - 立项 // Provide for child components - 立项
provide("lxShared", { provide("lxShared", {
formData, isPreview, activeCollapse, formData,
isPreview,
activeCollapse,
...lixiang, ...lixiang,
downloadFile, ElMessageBox, downloadFile,
ElMessageBox,
...resource, ...resource,
windowConfig: proxy.windowConfig, token, windowConfig: proxy.windowConfig,
token,
}); });
// Provide for child components - 决策 // Provide for child components - 决策
provide("jcShared", { provide("jcShared", {
jcFormData, formData, isPreview, activeCollapse, jcFormData,
formData,
isPreview,
activeCollapse,
...juece, ...juece,
...finance, ...finance,
getObjSums, getObjSums,
downloadFile, downloadTemplate, ElMessageBox, downloadFile,
downloadTemplate,
ElMessageBox,
...resource, ...resource,
windowConfig: proxy.windowConfig, token, windowConfig: proxy.windowConfig,
token,
}); });
// 获取项目信息 // 获取项目信息
...@@ -328,19 +343,26 @@ const getProjectInfo = () => { ...@@ -328,19 +343,26 @@ const getProjectInfo = () => {
// 关联筛选 // 关联筛选
resource.szjList.value = resource.szjList.value =
resource.jnwList.filter((item) => item.key == data.jnw)[0]?.children || []; resource.jnwList.filter((item) => item.key == data.jnw)[0]?.children ||
[];
resource.dsgjList.value = resource.dsgjList.value =
resource.szjList.value.filter((item) => item.key == data.sjnzjjw)[0]?.children || []; resource.szjList.value.filter((item) => item.key == data.sjnzjjw)[0]
?.children || [];
resource.qxgjList.value = resource.qxgjList.value =
resource.dsgjList.value.filter((item) => item.key == data.dsjngjjw)[0]?.children || []; resource.dsgjList.value.filter((item) => item.key == data.dsjngjjw)[0]
?.children || [];
resource.tzsxejflList.value = resource.tzsxejflList.value =
resource.tzsxyjflList.filter((item) => item.key == data.tzsxyjfl)[0]?.children || []; resource.tzsxyjflList.filter((item) => item.key == data.tzsxyjfl)[0]
?.children || [];
resource.tzsxxfbkList.value = resource.tzsxxfbkList.value =
resource.tzsxtzbkList.filter((item) => item.key == data.tzbk)[0]?.children || []; resource.tzsxtzbkList.filter((item) => item.key == data.tzbk)[0]
?.children || [];
resource.tzmdejflList.value = resource.tzmdejflList.value =
resource.tzmdyjflList.filter((item) => item.key == data.tzmdyjfl)[0]?.children || []; resource.tzmdyjflList.filter((item) => item.key == data.tzmdyjfl)[0]
?.children || [];
resource.tzznejflList.value = resource.tzznejflList.value =
resource.tzznyjflList.filter((item) => item.key == data.tzznyjfl)[0]?.children || []; resource.tzznyjflList.filter((item) => item.key == data.tzznyjfl)[0]
?.children || [];
if (Number(formData.projectLzType) >= 5) { if (Number(formData.projectLzType) >= 5) {
pageActiveName.value = "决策信息填报"; pageActiveName.value = "决策信息填报";
...@@ -380,19 +402,27 @@ const getProjectInfo = () => { ...@@ -380,19 +402,27 @@ const getProjectInfo = () => {
// 决策关联筛选 // 决策关联筛选
resource.jcSzjList.value = resource.jcSzjList.value =
resource.jnwList.filter((item) => item.key == jcData.jnw)[0]?.children || []; resource.jnwList.filter((item) => item.key == jcData.jnw)[0]
?.children || [];
resource.jcDsgjList.value = resource.jcDsgjList.value =
resource.jcSzjList.value.filter((item) => item.key == jcData.sjnzjjw)[0]?.children || []; resource.jcSzjList.value.filter((item) => item.key == jcData.sjnzjjw)[0]
?.children || [];
resource.jcQxgjList.value = resource.jcQxgjList.value =
resource.jcDsgjList.value.filter((item) => item.key == jcData.dsjngjjw)[0]?.children || []; resource.jcDsgjList.value.filter(
(item) => item.key == jcData.dsjngjjw,
)[0]?.children || [];
resource.jcTzsxejflList.value = resource.jcTzsxejflList.value =
resource.tzsxyjflList.filter((item) => item.key == jcData.tzsxyjfl)[0]?.children || []; resource.tzsxyjflList.filter((item) => item.key == jcData.tzsxyjfl)[0]
?.children || [];
resource.jcTzsxxfbkList.value = resource.jcTzsxxfbkList.value =
resource.tzsxtzbkList.filter((item) => item.key == jcData.tzbk)[0]?.children || []; resource.tzsxtzbkList.filter((item) => item.key == jcData.tzbk)[0]
?.children || [];
resource.jcTzmdejflList.value = resource.jcTzmdejflList.value =
resource.tzmdyjflList.filter((item) => item.key == jcData.tzmdyjfl)[0]?.children || []; resource.tzmdyjflList.filter((item) => item.key == jcData.tzmdyjfl)[0]
?.children || [];
resource.jcTzznejflList.value = resource.jcTzznejflList.value =
resource.tzznyjflList.filter((item) => item.key == jcData.tzznyjfl)[0]?.children || []; resource.tzznyjflList.filter((item) => item.key == jcData.tzznyjfl)[0]
?.children || [];
}, },
}); });
}; };
...@@ -492,6 +522,29 @@ const saveClick = (type) => { ...@@ -492,6 +522,29 @@ const saveClick = (type) => {
} }
}; };
// 办理过程数据
const processInfo = computed(() => ({
projectName: formData.projectName,
}));
const processTableData = reactive([
{
handleStep: "用户发起",
handleDept: "—",
handlePerson: "张三",
nextPerson: "李四",
handleOpinion: "用户提交",
handleTime: "2026-05-13 10:17:28",
},
{
handleStep: "项目编码",
handleDept: "规划发展部",
handlePerson: "李四",
nextPerson: "—",
handleOpinion: "同意编码",
handleTime: "2026-05-13 10:19:32",
},
]);
// 审核 // 审核
let auditFormData = ref({}); let auditFormData = ref({});
let auditForm = ref(); let auditForm = ref();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment