|
@@ -1,6 +1,138 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
- 审批详情
|
|
|
+ <div
|
|
|
+ style="height: 760px"
|
|
|
+ class="bg-white"
|
|
|
+ >
|
|
|
+ <div class="basicInformation">
|
|
|
+ <div style="padding-top: 10px;margin-left: 40px">
|
|
|
+ <el-image :src="sign" />
|
|
|
+ </div>
|
|
|
+ <div style="display: flex;align-items: center">
|
|
|
+ <el-text
|
|
|
+ style="margin-left: 10px"
|
|
|
+ size="large"
|
|
|
+ tag="b"
|
|
|
+ >流程详情</el-text>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-row style="margin-top: 30px">
|
|
|
+ <el-col
|
|
|
+ style="margin-left: 40px"
|
|
|
+ :span="14"
|
|
|
+ >
|
|
|
+ <el-row>
|
|
|
+ <el-col
|
|
|
+ :span="24"
|
|
|
+ >
|
|
|
+ <el-steps
|
|
|
+ class="mb-4"
|
|
|
+ style="max-width: 900px"
|
|
|
+ :space="100"
|
|
|
+ :active="infoSteps"
|
|
|
+ simple
|
|
|
+ >
|
|
|
+ <el-step
|
|
|
+ v-for="item in nodeList"
|
|
|
+ :key="item.ID"
|
|
|
+ :title="item.nodeName"
|
|
|
+ icon="Document"
|
|
|
+ />
|
|
|
+ </el-steps>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row style="margin-top: 20px">
|
|
|
+ <el-col
|
|
|
+ :span="5"
|
|
|
+ >
|
|
|
+ <el-text
|
|
|
+ class="peopleInfo"
|
|
|
+ line-clamp="1"
|
|
|
+ >申请人:{{ applyPeople }}</el-text>
|
|
|
+ </el-col>
|
|
|
+ <el-col
|
|
|
+ :span="5"
|
|
|
+ :offset="1"
|
|
|
+ >
|
|
|
+ <el-text
|
|
|
+ class="peopleInfo"
|
|
|
+ line-clamp="1"
|
|
|
+ >审核人:{{ checkPeople }}</el-text>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row style="margin-top: 20px">
|
|
|
+ <el-col
|
|
|
+ :span="20"
|
|
|
+ >
|
|
|
+ <div class="collapseBox">
|
|
|
+ <el-collapse>
|
|
|
+ <el-collapse-item
|
|
|
+ v-for="item in comprehensive.descriptions"
|
|
|
+ :key="item.ID"
|
|
|
+ :title="item.node.nodeName"
|
|
|
+ :name="item.ID"
|
|
|
+ >
|
|
|
+ <div>
|
|
|
+ {{ item.approvalOpinion }}
|
|
|
+ </div>
|
|
|
+ </el-collapse-item>
|
|
|
+ </el-collapse>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-col>
|
|
|
+ <el-col
|
|
|
+ :span="9"
|
|
|
+ >
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-button
|
|
|
+ icon="Notebook"
|
|
|
+ type="primary"
|
|
|
+ >补充文件</el-button>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-button
|
|
|
+ size="large"
|
|
|
+ icon="Back"
|
|
|
+ @click="openRepulse"
|
|
|
+ >打回申请</el-button>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-button
|
|
|
+ size="large"
|
|
|
+ icon="Right"
|
|
|
+ >审核通过</el-button>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-table style="margin-top: 30px">
|
|
|
+ <el-table-column label="ID" align="center"></el-table-column>
|
|
|
+ <el-table-column label="文件名称" align="center"></el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <el-dialog
|
|
|
+ v-model="repulseShow"
|
|
|
+ title="打回申请"
|
|
|
+ >
|
|
|
+ <el-form style="margin-top: 20px">
|
|
|
+ <el-form-item>
|
|
|
+ <el-input
|
|
|
+ placeholder="请输入打回申请的理由以便申请人补充文件"
|
|
|
+ type="textarea"
|
|
|
+ :rows="5"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <template #footer>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ size="large"
|
|
|
+ @click="repulseApply"
|
|
|
+ >确认</el-button>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -8,22 +140,89 @@
|
|
|
defineOptions({
|
|
|
name: 'ApproveDetail'
|
|
|
})
|
|
|
-import { onMounted } from 'vue'
|
|
|
+import { onMounted, reactive, ref } from 'vue'
|
|
|
import { useRoute } from 'vue-router'
|
|
|
-import { getProcessIdDescribe } from '@/api/process'
|
|
|
+import { getProjectProcessId } from '@/api/process'
|
|
|
+import { queryFileList } from '@/api/file'
|
|
|
+import sign from '@/assets/sign.png'
|
|
|
const route = useRoute()
|
|
|
onMounted(() => {
|
|
|
- queryProcessIdDescribe()
|
|
|
+ queryProjectProcessById()
|
|
|
})
|
|
|
-const queryProcessIdDescribe = () => {
|
|
|
- getProcessIdDescribe(route.query.id).then(res => {
|
|
|
+// 查询项目文件条件
|
|
|
+const fileCondition = reactive({
|
|
|
+ code: '',
|
|
|
+ name: '',
|
|
|
+ genre: 0,
|
|
|
+ pageInfo: {
|
|
|
+ page: 1,
|
|
|
+ pageSize: 1000
|
|
|
+ }
|
|
|
+})
|
|
|
+// 项目流程信息
|
|
|
+const comprehensive = reactive({})
|
|
|
+// 节点数组
|
|
|
+const nodeList = reactive([])
|
|
|
+// 步骤进度
|
|
|
+const infoSteps = ref(0)
|
|
|
+// 申请人
|
|
|
+const applyPeople = ref('')
|
|
|
+// 审核人
|
|
|
+const checkPeople = ref('')
|
|
|
+const queryProjectProcessById = () => {
|
|
|
+ const id = route.query.id
|
|
|
+ getProjectProcessId(id).then(res => {
|
|
|
if (res.code === 0) {
|
|
|
- console.log(res)
|
|
|
+ const data = res.data
|
|
|
+ nodeList.length = 0
|
|
|
+ nodeList.push(...data.process.nodes)
|
|
|
+ nodeList.forEach(item => {
|
|
|
+ if (item.ID === data.node.ID) {
|
|
|
+ infoSteps.value = item.order - 1
|
|
|
+ }
|
|
|
+ })
|
|
|
+ Object.assign(comprehensive, data)
|
|
|
+ // 申请人、审核人
|
|
|
+ applyPeople.value = data.user.nickName
|
|
|
+ checkPeople.value = data.node.approver.nickName
|
|
|
+ fileCondition.code = comprehensive.code
|
|
|
+ queryFileList(fileCondition).then(res => {
|
|
|
+ if (res.code === 0) {
|
|
|
+ console.log(res.data.list)
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
+// 备注描述列表
|
|
|
+// const activeNames = ref(true)
|
|
|
+//
|
|
|
+// const handleChange = () => {}
|
|
|
+
|
|
|
+// 打回申请
|
|
|
+const repulseShow = ref(false)
|
|
|
+const openRepulse = () => {
|
|
|
+ repulseShow.value = true
|
|
|
+}
|
|
|
+const repulseApply = () => {}
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
|
+.basicInformation{
|
|
|
+ height: 40px;
|
|
|
+ background-color: #f8fafd;
|
|
|
+ display: flex;
|
|
|
+ /*align-items: center;*/
|
|
|
+}
|
|
|
+.collapseBox{
|
|
|
+ width: 100%;
|
|
|
+ height: 400px;
|
|
|
+ padding: 10px;
|
|
|
+ overflow: scroll;
|
|
|
+}
|
|
|
|
|
|
+.peopleInfo{
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: 500;
|
|
|
+}
|
|
|
</style>
|