|
@@ -1,7 +1,7 @@
|
|
|
<template>
|
|
<template>
|
|
|
<div class="cost-audit-management">
|
|
<div class="cost-audit-management">
|
|
|
<!-- 成本审核项目列表页面 -->
|
|
<!-- 成本审核项目列表页面 -->
|
|
|
- <div v-if="activeView === 'list'" class="audit-list-container">
|
|
|
|
|
|
|
+ <div class="audit-list-container">
|
|
|
<div class="search-section">
|
|
<div class="search-section">
|
|
|
<el-input
|
|
<el-input
|
|
|
v-model="searchQuery"
|
|
v-model="searchQuery"
|
|
@@ -87,13 +87,13 @@
|
|
|
<el-table-column label="操作" align="center" width="260">
|
|
<el-table-column label="操作" align="center" width="260">
|
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
|
<span v-if="!scope.row.isSubTask" class="action-buttons">
|
|
<span v-if="!scope.row.isSubTask" class="action-buttons">
|
|
|
- <el-button type="text" @click="handleTaskDetail(scope.row)">
|
|
|
|
|
|
|
+ <el-button type="text" @click="handleOpenDetails(scope.row)">
|
|
|
任务详情
|
|
任务详情
|
|
|
</el-button>
|
|
</el-button>
|
|
|
<el-button
|
|
<el-button
|
|
|
v-if="scope.row.currentNode === 'sdsh'"
|
|
v-if="scope.row.currentNode === 'sdsh'"
|
|
|
type="text"
|
|
type="text"
|
|
|
- @click="handleTaskProcess(scope.row)"
|
|
|
|
|
|
|
+ @click="handleOpenDetails(scope.row)"
|
|
|
>
|
|
>
|
|
|
任务办理
|
|
任务办理
|
|
|
</el-button>
|
|
</el-button>
|
|
@@ -104,18 +104,21 @@
|
|
|
<span v-if="scope.row.isSubTask" class="action-buttons">
|
|
<span v-if="scope.row.isSubTask" class="action-buttons">
|
|
|
<el-button
|
|
<el-button
|
|
|
v-if="
|
|
v-if="
|
|
|
- scope.row.currentNode === 'ccls' &&
|
|
|
|
|
|
|
+ scope.row.currentNode === 'clcs' &&
|
|
|
scope.row.status === '审核中'
|
|
scope.row.status === '审核中'
|
|
|
"
|
|
"
|
|
|
type="text"
|
|
type="text"
|
|
|
- @click="handleAuditReview(scope.row)"
|
|
|
|
|
|
|
+ @click="handleOpenDetails(scope.row)"
|
|
|
>
|
|
>
|
|
|
资料初审
|
|
资料初审
|
|
|
</el-button>
|
|
</el-button>
|
|
|
<el-button
|
|
<el-button
|
|
|
- v-if="scope.row.currentNode === 'sdsh'"
|
|
|
|
|
|
|
+ v-if="
|
|
|
|
|
+ scope.row.currentNode === 'sdshenhe' &&
|
|
|
|
|
+ scope.row.status === '审核中'
|
|
|
|
|
+ "
|
|
|
type="text"
|
|
type="text"
|
|
|
- @click="handleCostAudit(scope.row)"
|
|
|
|
|
|
|
+ @click="handleOpenDetails(scope.row)"
|
|
|
>
|
|
>
|
|
|
成本审核
|
|
成本审核
|
|
|
</el-button>
|
|
</el-button>
|
|
@@ -135,84 +138,27 @@
|
|
|
/>
|
|
/>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
- <!-- 成本监审任务详情页面 -->
|
|
|
|
|
- <div v-else-if="activeView === 'detail'" class="audit-detail-container">
|
|
|
|
|
- <el-breadcrumb
|
|
|
|
|
- separator-class="el-icon-arrow-right"
|
|
|
|
|
- style="margin-bottom: 20px"
|
|
|
|
|
- >
|
|
|
|
|
- <el-breadcrumb-item>
|
|
|
|
|
- <a href="javascript:void(0)" @click="backToList">成本审核管理</a>
|
|
|
|
|
- </el-breadcrumb-item>
|
|
|
|
|
- <el-breadcrumb-item>成本监审任务详情</el-breadcrumb-item>
|
|
|
|
|
- </el-breadcrumb>
|
|
|
|
|
- <taskDetail
|
|
|
|
|
- ref="taskDetail"
|
|
|
|
|
- :workflow-list="workflowList"
|
|
|
|
|
- :form-data="formData"
|
|
|
|
|
- :material-data="materialData"
|
|
|
|
|
- />
|
|
|
|
|
- </div>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 任务办理页面 -->
|
|
|
|
|
- <div v-else-if="activeView === 'process'" class="audit-process-container">
|
|
|
|
|
- <el-breadcrumb
|
|
|
|
|
- separator-class="el-icon-arrow-right"
|
|
|
|
|
- style="margin-bottom: 20px"
|
|
|
|
|
- >
|
|
|
|
|
- <el-breadcrumb-item>
|
|
|
|
|
- <a href="javascript:void(0)" @click="backToList">成本审核管理</a>
|
|
|
|
|
- </el-breadcrumb-item>
|
|
|
|
|
- <el-breadcrumb-item>成本监审任务办理</el-breadcrumb-item>
|
|
|
|
|
- </el-breadcrumb>
|
|
|
|
|
- <taskProcess ref="taskProcess" />
|
|
|
|
|
- </div>
|
|
|
|
|
- <div v-else-if="activeView === 'auditReview'">
|
|
|
|
|
- <el-breadcrumb
|
|
|
|
|
- separator-class="el-icon-arrow-right"
|
|
|
|
|
- style="margin-bottom: 20px"
|
|
|
|
|
- >
|
|
|
|
|
- <el-breadcrumb-item>
|
|
|
|
|
- <a href="javascript:void(0)" @click="backToList">成本审核管理</a>
|
|
|
|
|
- </el-breadcrumb-item>
|
|
|
|
|
- <el-breadcrumb-item>资料初审</el-breadcrumb-item>
|
|
|
|
|
- </el-breadcrumb>
|
|
|
|
|
- <auditReview
|
|
|
|
|
- :id="currentProject.id"
|
|
|
|
|
- :current-node="currentProject.currentNode"
|
|
|
|
|
- @handleBack="backToList"
|
|
|
|
|
- />
|
|
|
|
|
- </div>
|
|
|
|
|
- <div v-else-if="activeView === 'costAudit'">
|
|
|
|
|
- <el-breadcrumb
|
|
|
|
|
- separator-class="el-icon-arrow-right"
|
|
|
|
|
- style="margin-bottom: 20px"
|
|
|
|
|
- >
|
|
|
|
|
- <el-breadcrumb-item>
|
|
|
|
|
- <a href="javascript:void(0)" @click="backToList">成本审核管理</a>
|
|
|
|
|
- </el-breadcrumb-item>
|
|
|
|
|
- <el-breadcrumb-item>成本审核</el-breadcrumb-item>
|
|
|
|
|
- </el-breadcrumb>
|
|
|
|
|
- <costAudit @handleBack="backToList" />
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+ <!-- 详情弹窗组件 -->
|
|
|
|
|
+ <details-dialog
|
|
|
|
|
+ :id="selectedProject && selectedProject.id"
|
|
|
|
|
+ ref="detailsRef"
|
|
|
|
|
+ :visible.sync="detailsVisible"
|
|
|
|
|
+ :current-node="selectedProject && selectedProject.auditNode"
|
|
|
|
|
+ :current-status="selectedProject && selectedProject.auditStatus"
|
|
|
|
|
+ @close="handleDetailsClose"
|
|
|
|
|
+ />
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
- import taskDetail from './taskDetail.vue'
|
|
|
|
|
- import taskProcess from './taskProcess.vue'
|
|
|
|
|
- import auditReview from './auditReview.vue'
|
|
|
|
|
- import costAudit from './costAudit.vue'
|
|
|
|
|
|
|
+ import detailsDialog from './details.vue'
|
|
|
import taskMixins from './taskMixins.js'
|
|
import taskMixins from './taskMixins.js'
|
|
|
// 成本监审任务列表API
|
|
// 成本监审任务列表API
|
|
|
import { getReviewTaskList } from '@/api/audit/auditIndex'
|
|
import { getReviewTaskList } from '@/api/audit/auditIndex'
|
|
|
export default {
|
|
export default {
|
|
|
name: 'CostAuditManagement',
|
|
name: 'CostAuditManagement',
|
|
|
components: {
|
|
components: {
|
|
|
- taskDetail,
|
|
|
|
|
- taskProcess,
|
|
|
|
|
- auditReview,
|
|
|
|
|
- costAudit,
|
|
|
|
|
|
|
+ detailsDialog,
|
|
|
},
|
|
},
|
|
|
mixins: [taskMixins],
|
|
mixins: [taskMixins],
|
|
|
data() {
|
|
data() {
|
|
@@ -221,19 +167,15 @@
|
|
|
currentPage: 1,
|
|
currentPage: 1,
|
|
|
pageSize: 10,
|
|
pageSize: 10,
|
|
|
total: 0,
|
|
total: 0,
|
|
|
- // 视图控制
|
|
|
|
|
- activeView: 'list', // list: 列表, detail: 详情, process: 办理
|
|
|
|
|
// 搜索相关
|
|
// 搜索相关
|
|
|
searchQuery: '',
|
|
searchQuery: '',
|
|
|
// 列表数据
|
|
// 列表数据
|
|
|
auditProjectList: [],
|
|
auditProjectList: [],
|
|
|
- // workflowList: [],
|
|
|
|
|
- notificationsList: [],
|
|
|
|
|
- templatesList: [],
|
|
|
|
|
// 加载状态
|
|
// 加载状态
|
|
|
loading: false,
|
|
loading: false,
|
|
|
- // 当前选中的项目
|
|
|
|
|
- currentProject: null,
|
|
|
|
|
|
|
+ // 详情弹窗相关
|
|
|
|
|
+ detailsVisible: false,
|
|
|
|
|
+ selectedProject: null,
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
|
|
|
|
@@ -349,30 +291,17 @@
|
|
|
this.loadAuditProjectList()
|
|
this.loadAuditProjectList()
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
- // 任务详情
|
|
|
|
|
- handleTaskDetail(project) {
|
|
|
|
|
- this.currentProject = project
|
|
|
|
|
- this.activeView = 'detail'
|
|
|
|
|
- this.loadAuditProjectDetail(project.id)
|
|
|
|
|
- this.loadWorkflowList(project.id)
|
|
|
|
|
- this.loadNotificationsList(project.id)
|
|
|
|
|
|
|
+ // 打开详情弹窗
|
|
|
|
|
+ handleOpenDetails(project) {
|
|
|
|
|
+ this.selectedProject = project
|
|
|
|
|
+ this.detailsVisible = true
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
- // 任务办理
|
|
|
|
|
- handleTaskProcess(project) {
|
|
|
|
|
- this.currentProject = project
|
|
|
|
|
- this.activeView = 'process'
|
|
|
|
|
- this.loadTemplatesList()
|
|
|
|
|
-
|
|
|
|
|
- // 初始化集体审议表单中的项目信息
|
|
|
|
|
- if (project) {
|
|
|
|
|
- this.meetingForm.projectName = project.projectName
|
|
|
|
|
- this.meetingForm.auditUnit = project.auditObject
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- handleAuditReview(project) {
|
|
|
|
|
- this.currentProject = project
|
|
|
|
|
- this.activeView = 'auditReview'
|
|
|
|
|
|
|
+ // 详情弹窗关闭处理
|
|
|
|
|
+ handleDetailsClose() {
|
|
|
|
|
+ this.selectedProject = null
|
|
|
|
|
+ this.detailsVisible = false
|
|
|
|
|
+ // 可以在这里添加刷新列表的逻辑
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
// 查记录
|
|
// 查记录
|
|
@@ -384,178 +313,6 @@
|
|
|
})
|
|
})
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
- // 查看
|
|
|
|
|
- handleView(project) {
|
|
|
|
|
- this.currentProject = project
|
|
|
|
|
- this.activeView = 'detail'
|
|
|
|
|
- this.loadAuditProjectDetail(project.id)
|
|
|
|
|
- this.loadWorkflowList(project.id)
|
|
|
|
|
- this.loadNotificationsList(project.id)
|
|
|
|
|
- },
|
|
|
|
|
-
|
|
|
|
|
- // 成本审核
|
|
|
|
|
- handleCostAudit(project) {
|
|
|
|
|
- this.currentProject = project
|
|
|
|
|
- this.activeView = 'costAudit'
|
|
|
|
|
- this.loadAuditProjectDetail(project.id)
|
|
|
|
|
- this.loadWorkflowList(project.id)
|
|
|
|
|
- this.loadNotificationsList(project.id)
|
|
|
|
|
- },
|
|
|
|
|
-
|
|
|
|
|
- // 返回列表
|
|
|
|
|
- backToList() {
|
|
|
|
|
- this.activeView = 'list'
|
|
|
|
|
- // 刷新列表数据
|
|
|
|
|
- this.loadAuditProjectList()
|
|
|
|
|
- },
|
|
|
|
|
-
|
|
|
|
|
- // 返回详情
|
|
|
|
|
- backToDetail() {
|
|
|
|
|
- this.activeView = 'detail'
|
|
|
|
|
- },
|
|
|
|
|
-
|
|
|
|
|
- // 加载审核项目详情
|
|
|
|
|
- async loadAuditProjectDetail(id) {
|
|
|
|
|
- try {
|
|
|
|
|
- // 这里应该调用API获取数据,现在使用模拟数据
|
|
|
|
|
- this.basicForm = {
|
|
|
|
|
- projectName: '太原市电网输配电成本监审',
|
|
|
|
|
- costAuditTable: '电网企业成本监审表',
|
|
|
|
|
- region: 'shanxi',
|
|
|
|
|
- auditObject: '太原市热电厂、****热电厂、****公司',
|
|
|
|
|
- year: '2023',
|
|
|
|
|
- source: 'plan',
|
|
|
|
|
- form: 'price',
|
|
|
|
|
- startYear: '2023',
|
|
|
|
|
- endYear: '2024',
|
|
|
|
|
- isNew: '否',
|
|
|
|
|
- isDynamic: '否',
|
|
|
|
|
- basis: '太原市发改委关于开展2023年电网输配电成本监审的通知',
|
|
|
|
|
- attachments: [
|
|
|
|
|
- {
|
|
|
|
|
- name: '太原市发改委关于开展2023年电网输配电成本监审的通知.pct',
|
|
|
|
|
- },
|
|
|
|
|
- { name: '其他附件.pdf' },
|
|
|
|
|
- ],
|
|
|
|
|
- }
|
|
|
|
|
- } catch (error) {
|
|
|
|
|
- this.$message.error('加载审核项目详情失败')
|
|
|
|
|
- console.error('加载审核项目详情失败:', error)
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
-
|
|
|
|
|
- // 加载工作流程列表
|
|
|
|
|
- async loadWorkflowList(id) {
|
|
|
|
|
- try {
|
|
|
|
|
- // 这里应该调用API获取数据,现在使用模拟数据
|
|
|
|
|
- this.workflowList = [
|
|
|
|
|
- {
|
|
|
|
|
- id: '1',
|
|
|
|
|
- stepName: '提交材料',
|
|
|
|
|
- nodeType: '外部环节',
|
|
|
|
|
- handler: '张**、李**',
|
|
|
|
|
- opinions: '已提交相关材料',
|
|
|
|
|
- deadline: '2025-5-4',
|
|
|
|
|
- startTime: '2025-4-18 14:20',
|
|
|
|
|
- endTime: '2025-4-18 15:30',
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- id: '2',
|
|
|
|
|
- stepName: '资料初审',
|
|
|
|
|
- nodeType: '内部环节',
|
|
|
|
|
- handler: '王**',
|
|
|
|
|
- opinions: '资料齐全,同意进入下一环节',
|
|
|
|
|
- deadline: '2025-5-4',
|
|
|
|
|
- startTime: '2025-5-4 10:10',
|
|
|
|
|
- endTime: '2025-5-4 16:30',
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- id: '3',
|
|
|
|
|
- stepName: '实地审核',
|
|
|
|
|
- nodeType: '内部环节',
|
|
|
|
|
- handler: '张**',
|
|
|
|
|
- opinions: '正在审核中',
|
|
|
|
|
- deadline: '2025-5-6',
|
|
|
|
|
- startTime: '2025-5-6 09:00',
|
|
|
|
|
- endTime: '2025-5-6 18:30',
|
|
|
|
|
- },
|
|
|
|
|
- // 其他环节...
|
|
|
|
|
- {
|
|
|
|
|
- id: '8',
|
|
|
|
|
- stepName: '办结',
|
|
|
|
|
- nodeType: '内部环节',
|
|
|
|
|
- handler: '李**',
|
|
|
|
|
- opinions: '',
|
|
|
|
|
- deadline: '2025-5-30',
|
|
|
|
|
- startTime: '',
|
|
|
|
|
- endTime: '',
|
|
|
|
|
- },
|
|
|
|
|
- ]
|
|
|
|
|
- } catch (error) {
|
|
|
|
|
- this.$message.error('加载工作流程列表失败')
|
|
|
|
|
- console.error('加载工作流程列表失败:', error)
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
-
|
|
|
|
|
- // 加载消息通知列表
|
|
|
|
|
- async loadNotificationsList(id) {
|
|
|
|
|
- try {
|
|
|
|
|
- // 这里应该调用API获取数据,现在使用模拟数据
|
|
|
|
|
- this.notificationsList = [
|
|
|
|
|
- {
|
|
|
|
|
- id: '1',
|
|
|
|
|
- title: '材料收到通知',
|
|
|
|
|
- source: '山西省发改委-张**',
|
|
|
|
|
- target: 'A单位',
|
|
|
|
|
- content: '2025年收到你单位报送的材料...',
|
|
|
|
|
- sendTime: '2025-5-11 16:40',
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- id: '2',
|
|
|
|
|
- title: '环节办理通知',
|
|
|
|
|
- source: '山西省发改委-张**',
|
|
|
|
|
- target: 'B单位',
|
|
|
|
|
- content: '2025年收到你单位报送的材料...',
|
|
|
|
|
- sendTime: '2025-5-12 16:56',
|
|
|
|
|
- },
|
|
|
|
|
- // 其他通知...
|
|
|
|
|
- {
|
|
|
|
|
- id: '9',
|
|
|
|
|
- title: '',
|
|
|
|
|
- source: '',
|
|
|
|
|
- target: '',
|
|
|
|
|
- content: '',
|
|
|
|
|
- sendTime: '2025-5-30 16:55',
|
|
|
|
|
- },
|
|
|
|
|
- ]
|
|
|
|
|
- } catch (error) {
|
|
|
|
|
- this.$message.error('加载消息通知列表失败')
|
|
|
|
|
- console.error('加载消息通知列表失败:', error)
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
-
|
|
|
|
|
- // 加载模板列表
|
|
|
|
|
- async loadTemplatesList() {
|
|
|
|
|
- try {
|
|
|
|
|
- // 这里应该调用API获取数据,现在使用模拟数据
|
|
|
|
|
- this.templatesList = [
|
|
|
|
|
- { id: '1', name: '成本监审通知书' },
|
|
|
|
|
- { id: '2', name: '成本监审工作方案' },
|
|
|
|
|
- { id: '3', name: '成本监审资料报送要求' },
|
|
|
|
|
- { id: '4', name: '成本监审意见告知书' },
|
|
|
|
|
- { id: '5', name: '成本监审结论告知书' },
|
|
|
|
|
- { id: '6', name: '成本监审报告' },
|
|
|
|
|
- { id: '7', name: '成本监审报告(送审稿)' },
|
|
|
|
|
- { id: '8', name: '成本监审结论告知书(适用返还)' },
|
|
|
|
|
- { id: '9', name: '成本监审结论告知书(适用返还)-送审稿' },
|
|
|
|
|
- ]
|
|
|
|
|
- this.selectedTemplate = '1'
|
|
|
|
|
- } catch (error) {
|
|
|
|
|
- this.$message.error('加载模板列表失败')
|
|
|
|
|
- console.error('加载模板列表失败:', error)
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
-
|
|
|
|
|
// 分页处理
|
|
// 分页处理
|
|
|
handleSizeChange(size) {
|
|
handleSizeChange(size) {
|
|
|
this.pageSize = size
|
|
this.pageSize = size
|