|
|
@ -1,28 +1,33 @@
|
|
|
|
<script setup lang="ts">
|
|
|
|
<script setup lang="ts">
|
|
|
|
import { ref } from "vue";
|
|
|
|
import { ref } from "vue";
|
|
|
|
import { queryKnowledgeDetail } from "@/api/knowledgeCentre";
|
|
|
|
import {
|
|
|
|
|
|
|
|
processKnowledgeFlow,
|
|
|
|
|
|
|
|
queryKnowledgeDetail
|
|
|
|
|
|
|
|
} from "@/api/knowledgeCentre";
|
|
|
|
import { reactive } from "vue";
|
|
|
|
import { reactive } from "vue";
|
|
|
|
|
|
|
|
import Approved from "../approval/compontents/Approved.vue";
|
|
|
|
|
|
|
|
import RejectApproval from "../approval/compontents/RejectApproval.vue";
|
|
|
|
|
|
|
|
import { message } from "@/utils/message";
|
|
|
|
defineOptions({
|
|
|
|
defineOptions({
|
|
|
|
name: "SubmissionDetails"
|
|
|
|
name: "SubmissionDetails"
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
const dialogVisible = ref(false);
|
|
|
|
const dialogVisible = ref(false);
|
|
|
|
const annexList = ref([
|
|
|
|
const isApproval = ref(false);
|
|
|
|
{
|
|
|
|
const ApprovedRef = ref();
|
|
|
|
name: "PDF附件名称显示全部点击下载附件"
|
|
|
|
const RejectApprovalRef = ref();
|
|
|
|
}
|
|
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
const formData = reactive({
|
|
|
|
const formData = reactive({
|
|
|
|
knowledge: {
|
|
|
|
knowledge: {
|
|
|
|
publishDeptId: "",
|
|
|
|
publishDeptId: "",
|
|
|
|
knowledgeFrom: undefined,
|
|
|
|
knowledgeFrom: undefined,
|
|
|
|
title: ""
|
|
|
|
title: ""
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
baseName: "",
|
|
|
|
|
|
|
|
submittedDeptName: "",
|
|
|
|
knowledgeInfo: {
|
|
|
|
knowledgeInfo: {
|
|
|
|
territory: "",
|
|
|
|
territory: "",
|
|
|
|
publishDate: "",
|
|
|
|
publishDate: "",
|
|
|
|
autoLoseEffect: undefined,
|
|
|
|
timeliness: undefined,
|
|
|
|
execTimeBegin: "",
|
|
|
|
execTimeBegin: "",
|
|
|
|
execTimeEnd: "",
|
|
|
|
execTimeEnd: "",
|
|
|
|
knowledgeTag: "",
|
|
|
|
knowledgeTag: "",
|
|
|
@ -34,10 +39,20 @@ const formData = reactive({
|
|
|
|
},
|
|
|
|
},
|
|
|
|
fileInfoList: []
|
|
|
|
fileInfoList: []
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
const knowledgeId = ref("");
|
|
|
|
|
|
|
|
const todoId = ref("");
|
|
|
|
defineExpose({
|
|
|
|
defineExpose({
|
|
|
|
open(val) {
|
|
|
|
open(val) {
|
|
|
|
dialogVisible.value = true;
|
|
|
|
dialogVisible.value = true;
|
|
|
|
|
|
|
|
isApproval.value = false;
|
|
|
|
getDeatils(val);
|
|
|
|
getDeatils(val);
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
openApproval(row) {
|
|
|
|
|
|
|
|
dialogVisible.value = true;
|
|
|
|
|
|
|
|
isApproval.value = true;
|
|
|
|
|
|
|
|
getDeatils(row.knowledgeId);
|
|
|
|
|
|
|
|
knowledgeId.value = row.knowledgeId;
|
|
|
|
|
|
|
|
todoId.value = row.todoId;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
const getDeatils = async id => {
|
|
|
|
const getDeatils = async id => {
|
|
|
@ -61,6 +76,37 @@ const downloadFile = (url, fileName) => {
|
|
|
|
link.download = fileName;
|
|
|
|
link.download = fileName;
|
|
|
|
link.click();
|
|
|
|
link.click();
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
const approvalOk = async () => {
|
|
|
|
|
|
|
|
const res: any = await processKnowledgeFlow({
|
|
|
|
|
|
|
|
operate: 1,
|
|
|
|
|
|
|
|
knowledgeId: knowledgeId.value,
|
|
|
|
|
|
|
|
todoId: todoId.value
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
if (res.code === 200) {
|
|
|
|
|
|
|
|
message("审批成功!", { type: "success" });
|
|
|
|
|
|
|
|
dialogVisible.value = false;
|
|
|
|
|
|
|
|
emit("getData");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
const RejectApprovalOk = async () => {
|
|
|
|
|
|
|
|
const res: any = await processKnowledgeFlow({
|
|
|
|
|
|
|
|
operate: 2,
|
|
|
|
|
|
|
|
knowledgeId: knowledgeId.value,
|
|
|
|
|
|
|
|
todoId: todoId.value
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
if (res.code === 200) {
|
|
|
|
|
|
|
|
message("驳回成功!", { type: "success" });
|
|
|
|
|
|
|
|
dialogVisible.value = false;
|
|
|
|
|
|
|
|
emit("getData");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
const emit = defineEmits(["getData"]);
|
|
|
|
|
|
|
|
const openApproval = () => {
|
|
|
|
|
|
|
|
ApprovedRef.value.open(knowledgeId.value, todoId.value);
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
const openRejectApproval = () => {
|
|
|
|
|
|
|
|
RejectApprovalRef.value.open(knowledgeId.value, todoId.value);
|
|
|
|
|
|
|
|
};
|
|
|
|
const downLoadFile = item => {
|
|
|
|
const downLoadFile = item => {
|
|
|
|
downloadFile(
|
|
|
|
downloadFile(
|
|
|
|
`/know-sub/file/downloadFile?fileId=${item.fileBlobId}`,
|
|
|
|
`/know-sub/file/downloadFile?fileId=${item.fileBlobId}`,
|
|
|
@ -90,7 +136,7 @@ const downLoadFile = item => {
|
|
|
|
<div class="basicInfo">
|
|
|
|
<div class="basicInfo">
|
|
|
|
<div class="basicInfo_title">基本信息</div>
|
|
|
|
<div class="basicInfo_title">基本信息</div>
|
|
|
|
<div class="basicInfo_item">
|
|
|
|
<div class="basicInfo_item">
|
|
|
|
<span>{{ `发文部门:${formData.knowledge.publishDeptId}` }}</span>
|
|
|
|
<span>{{ `发文部门:${formData.submittedDeptName}` }}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="basicInfo_item">
|
|
|
|
<div class="basicInfo_item">
|
|
|
|
<span v-if="formData.knowledge.knowledgeFrom === 1">{{
|
|
|
|
<span v-if="formData.knowledge.knowledgeFrom === 1">{{
|
|
|
@ -107,18 +153,18 @@ const downLoadFile = item => {
|
|
|
|
}}</span>
|
|
|
|
}}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div
|
|
|
|
<div
|
|
|
|
v-if="formData.knowledgeInfo.autoLoseEffect"
|
|
|
|
v-if="formData.knowledgeInfo.timeliness"
|
|
|
|
class="basicInfo_item"
|
|
|
|
class="basicInfo_item"
|
|
|
|
>
|
|
|
|
>
|
|
|
|
<span v-if="formData.knowledgeInfo.autoLoseEffect === 1">{{
|
|
|
|
<span v-if="formData.knowledgeInfo.timeliness === 1">{{
|
|
|
|
`时效性:长期有效`
|
|
|
|
`时效性:长期有效`
|
|
|
|
}}</span>
|
|
|
|
}}</span>
|
|
|
|
<span v-if="formData.knowledgeInfo.autoLoseEffect === 2">{{
|
|
|
|
<span v-if="formData.knowledgeInfo.timeliness === 2">{{
|
|
|
|
`时效性:临时有效`
|
|
|
|
`时效性:临时有效`
|
|
|
|
}}</span>
|
|
|
|
}}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div
|
|
|
|
<div
|
|
|
|
v-if="formData.knowledgeInfo.autoLoseEffect === 2"
|
|
|
|
v-if="formData.knowledgeInfo.timeliness === 2"
|
|
|
|
class="basicInfo_item"
|
|
|
|
class="basicInfo_item"
|
|
|
|
>
|
|
|
|
>
|
|
|
|
<span>{{
|
|
|
|
<span>{{
|
|
|
@ -130,6 +176,9 @@ const downLoadFile = item => {
|
|
|
|
`知识标签:${formData.knowledgeInfo.knowledgeTag}`
|
|
|
|
`知识标签:${formData.knowledgeInfo.knowledgeTag}`
|
|
|
|
}}</span>
|
|
|
|
}}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="basicInfo_item">
|
|
|
|
|
|
|
|
<span>{{ `应用子库:${formData.baseName}` }}</span>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<div class="basicInfo_item">
|
|
|
|
<div class="basicInfo_item">
|
|
|
|
<span>{{
|
|
|
|
<span>{{
|
|
|
|
`政策类型:${formData.knowledgeInfo.policyType}`
|
|
|
|
`政策类型:${formData.knowledgeInfo.policyType}`
|
|
|
@ -156,8 +205,17 @@ const downLoadFile = item => {
|
|
|
|
<span class="link">{{ item.fileName }}</span>
|
|
|
|
<span class="link">{{ item.fileName }}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div v-if="isApproval" class="btn_list">
|
|
|
|
|
|
|
|
<div class="main_btn" @click="openApproval">审批通过</div>
|
|
|
|
|
|
|
|
<div class="btn" @click="openRejectApproval">审批驳回</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<Approved @approvalOk="approvalOk" ref="ApprovedRef" />
|
|
|
|
|
|
|
|
<RejectApproval
|
|
|
|
|
|
|
|
@RejectApprovalOk="RejectApprovalOk"
|
|
|
|
|
|
|
|
ref="RejectApprovalRef"
|
|
|
|
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-drawer>
|
|
|
|
</el-drawer>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
@ -165,7 +223,7 @@ const downLoadFile = item => {
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
.submission-details {
|
|
|
|
.submission-details {
|
|
|
|
padding-left: 16px;
|
|
|
|
padding-left: 16px;
|
|
|
|
height: 100%;
|
|
|
|
|
|
|
|
.header-title {
|
|
|
|
.header-title {
|
|
|
|
display: flex;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
align-items: center;
|
|
|
@ -194,7 +252,7 @@ const downLoadFile = item => {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.main {
|
|
|
|
.main {
|
|
|
|
display: flex;
|
|
|
|
display: flex;
|
|
|
|
height: 100%;
|
|
|
|
// height: 100%;
|
|
|
|
.basicInfo {
|
|
|
|
.basicInfo {
|
|
|
|
width: 350px;
|
|
|
|
width: 350px;
|
|
|
|
padding: 24px 16px;
|
|
|
|
padding: 24px 16px;
|
|
|
@ -226,6 +284,8 @@ const downLoadFile = item => {
|
|
|
|
font-size: 16px;
|
|
|
|
font-size: 16px;
|
|
|
|
color: #666666;
|
|
|
|
color: #666666;
|
|
|
|
margin-top: 32px;
|
|
|
|
margin-top: 32px;
|
|
|
|
|
|
|
|
height: calc(100vh - 360px);
|
|
|
|
|
|
|
|
overflow: auto;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.annex {
|
|
|
|
.annex {
|
|
|
|
margin-top: 75px;
|
|
|
|
margin-top: 75px;
|
|
|
@ -239,6 +299,39 @@ const downLoadFile = item => {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.btn_list {
|
|
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
flex-direction: row-reverse;
|
|
|
|
|
|
|
|
margin-top: 40px;
|
|
|
|
|
|
|
|
.main_btn {
|
|
|
|
|
|
|
|
width: 188px;
|
|
|
|
|
|
|
|
height: 40px;
|
|
|
|
|
|
|
|
background: #0052d9;
|
|
|
|
|
|
|
|
box-shadow: 0px 2px 0px 0px rgba(0, 0, 0, 0.04);
|
|
|
|
|
|
|
|
border-radius: 6px 6px 6px 6px;
|
|
|
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
|
|
|
font-size: 16px;
|
|
|
|
|
|
|
|
color: #ffffff;
|
|
|
|
|
|
|
|
line-height: 40px;
|
|
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
.btn {
|
|
|
|
|
|
|
|
width: 188px;
|
|
|
|
|
|
|
|
height: 40px;
|
|
|
|
|
|
|
|
background: #ffffff;
|
|
|
|
|
|
|
|
box-shadow: 0px 2px 0px 0px rgba(0, 0, 0, 0.04);
|
|
|
|
|
|
|
|
border-radius: 6px 6px 6px 6px;
|
|
|
|
|
|
|
|
border: 1px solid #0052d9;
|
|
|
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
|
|
|
font-size: 16px;
|
|
|
|
|
|
|
|
color: #0052d9;
|
|
|
|
|
|
|
|
line-height: 40px;
|
|
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
|
|
margin-right: 24px;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|