<style scoped>
|
.reportPreparation {
|
width: 100%;
|
height: 100%;
|
}
|
|
.title {
|
height: 60px;
|
line-height: 60px;
|
}
|
|
.search {
|
background-color: #fff;
|
height: 80px;
|
display: flex;
|
align-items: center;
|
}
|
|
.search_thing {
|
display: flex;
|
align-items: center;
|
height: 50px;
|
width: 210px;
|
}
|
|
.search_label {
|
width: 90px;
|
font-size: 14px;
|
text-align: right;
|
}
|
|
.search_input {
|
width: calc(100% - 90px);
|
}
|
|
.table {
|
margin-top: 10px;
|
background-color: #fff;
|
width: calc(100% - 40px);
|
height: calc(100% - 60px - 80px - 10px - 40px);
|
padding: 20px;
|
}
|
|
.el-form-item {
|
margin-bottom: 16px;
|
}
|
|
.full-screen {
|
position: absolute;
|
right: 52px;
|
top: 22px;
|
}
|
|
.btns {
|
position: absolute;
|
right: 40px;
|
top: 50%;
|
transform: translate(0, -50%);
|
display: flex;
|
align-items: center;
|
}
|
|
.fullscreen {
|
height: 82vh;
|
}
|
.custom-upload >>> .el-upload-list--text {
|
max-height: 20vh;
|
overflow-y: scroll;
|
}
|
</style>
|
|
<template>
|
<div>
|
<div class="reportPreparation bg-1">
|
<div>
|
<el-row class="title">
|
<el-col :span="12" style="padding-left: 20px; text-align: left"
|
>报告编制</el-col
|
>
|
</el-row>
|
</div>
|
<div class="search" :style="`height: ${more ? 130 : 80}px;`">
|
<el-row :gutter="10" style="width: 100%">
|
<el-col :span="16" style="display: flex; flex-wrap: wrap">
|
<div class="search_thing" v-if="maxNum >= 1">
|
<div class="search_label">报告编号:</div>
|
<div class="search_input">
|
<el-input
|
size="small"
|
placeholder="请输入"
|
clearable
|
v-model="entity.code"
|
@keyup.enter.native="refreshTable()"
|
></el-input>
|
</div>
|
</div>
|
<div class="search_thing" v-if="maxNum >= 2">
|
<div class="search_label">上传状态:</div>
|
<div class="search_input">
|
<el-select
|
size="small"
|
clearable
|
@clear="refreshTable()"
|
@change="refreshTable()"
|
v-model="entity.isUpload"
|
>
|
<el-option
|
v-for="(item, index) in tagField.isUpload.select"
|
:value="item.value"
|
:label="item.label"
|
:key="index"
|
></el-option>
|
</el-select>
|
</div>
|
</div>
|
<div class="search_thing" v-if="maxNum >= 3">
|
<div class="search_label">提交状态:</div>
|
<div class="search_input">
|
<el-select
|
size="small"
|
clearable
|
@clear="refreshTable()"
|
@change="refreshTable()"
|
v-model="entity.state"
|
>
|
<el-option
|
v-for="(item, index) in tagField.state.select"
|
:value="item.value"
|
:label="item.label"
|
:key="index"
|
></el-option>
|
</el-select>
|
</div>
|
</div>
|
<div
|
class="search_thing"
|
v-if="maxNum >= 4 || (maxNum < 4 && more)"
|
>
|
<div class="search_label">审核状态:</div>
|
<div class="search_input">
|
<el-select
|
size="small"
|
clearable
|
@clear="refreshTable()"
|
@change="refreshTable()"
|
v-model="entity.isExamine"
|
>
|
<el-option
|
v-for="(item, index) in tagField.isExamine.select"
|
:value="item.value"
|
:label="item.label"
|
:key="index"
|
></el-option>
|
</el-select>
|
</div>
|
</div>
|
<div class="search_thing" v-if="maxNum >= 5 || more">
|
<div class="search_label">批准状态:</div>
|
<div class="search_input">
|
<el-select
|
size="small"
|
clearable
|
@clear="refreshTable()"
|
@change="refreshTable()"
|
v-model="entity.isRatify"
|
>
|
<el-option
|
v-for="(item, index) in tagField.isRatify.select"
|
:value="item.value"
|
:label="item.label"
|
:key="index"
|
></el-option>
|
</el-select>
|
</div>
|
</div>
|
<div class="search_thing" v-if="maxNum >= 6 || more">
|
<div class="search_label">创建时间:</div>
|
<div class="search_input">
|
<el-date-picker
|
size="small"
|
clearable
|
@clear="refreshTable()"
|
@change="refreshTable()"
|
v-model="entity.createTimeRange"
|
type="daterange"
|
value-format="yyyy-MM-dd[T]HH:mm:ss"
|
range-separator="至"
|
start-placeholder="开始日期"
|
end-placeholder="结束日期"
|
:default-time="['00:00:00', '23:59:59']"
|
>
|
</el-date-picker>
|
</div>
|
</div>
|
</el-col>
|
<el-col :span="8">
|
<div class="search_thing">
|
<el-button
|
v-if="maxNum < 5"
|
type="text"
|
:icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'"
|
style="color: #3a7bfa"
|
@click="more = !more"
|
v-hasPermi="['bbusiness:reportPreparation:more']"
|
>{{ !more ? "更多" : "收起" }}</el-button
|
>
|
<div class="search_thing" style="padding-left: 20px">
|
<el-button
|
size="small"
|
@click="refresh()"
|
style="margin-right: 6px"
|
>重 置</el-button
|
>
|
<el-button
|
size="small"
|
type="primary"
|
@click="refreshTable()"
|
style="margin-right: 6px"
|
>查 询</el-button
|
>
|
<template>
|
<el-dropdown
|
@command="handleCommand"
|
style="margin-left: 10px"
|
>
|
<el-button type="primary" size="small">
|
更多操作<i class="el-icon-arrow-down el-icon--right"></i>
|
</el-button>
|
<el-dropdown-menu slot="dropdown">
|
<el-dropdown-item
|
icon="el-icon-download"
|
command="batchDownload"
|
v-hasPermi="['business:reportPreparation:batchDownload']"
|
>批量下载</el-dropdown-item
|
>
|
<el-dropdown-item
|
icon="el-icon-upload"
|
command="batchUpload"
|
v-hasPermi="['business:reportPreparation:batchUpload']"
|
>批量上传</el-dropdown-item
|
>
|
<el-dropdown-item
|
icon="el-icon-s-check"
|
command="oneClickApproval"
|
v-hasPermi="['business:reportPreparation:oneClickApproval']"
|
>一键审批</el-dropdown-item
|
>
|
<el-dropdown-item
|
icon="el-icon-setting"
|
command="approvalConfig"
|
v-hasPermi="['business:reportPreparation:signatureConfiguration']"
|
>审批签名配置</el-dropdown-item
|
>
|
</el-dropdown-menu>
|
</el-dropdown>
|
</template>
|
</div>
|
</div>
|
</el-col>
|
</el-row>
|
</div>
|
<div class="table">
|
<div
|
style="
|
width: 100%;
|
display: flex;
|
flex-wrap: nowrap;
|
font-size: 13px;
|
flex-direction: row;
|
justify-content: flex-end;
|
align-items: center;
|
"
|
>
|
<p style="margin-left: 15px">
|
待提交数量: <span
|
style="font-size: 16px; color: rgb(58, 123, 250)"
|
>{{ unSubmitCount }}</span
|
>
|
</p>
|
<p style="margin-left: 15px">
|
待审核数量: <span
|
style="font-size: 16px; color: rgb(58, 123, 250)"
|
>{{ unExamineCount }}</span
|
>
|
</p>
|
<p style="margin-left: 15px">
|
待批准数量: <span
|
style="font-size: 16px; color: rgb(58, 123, 250)"
|
>{{ unRatifyCount }}</span
|
>
|
</p>
|
</div>
|
<lims-table
|
:handleSelectionChange="handleSelectionChange"
|
isSelection
|
:tableData="tableData"
|
:column="column"
|
:tableLoading="tableLoading"
|
:height="tableHeight+''"
|
:page="page"
|
@pagination="pagination"
|
></lims-table>
|
</div>
|
</div>
|
<!--报告查看-->
|
<el-dialog
|
:fullscreen="fullscreen"
|
top="5vh"
|
:modal-append-to-body="false"
|
:visible.sync="viewIssuedVisible"
|
title="报告查看"
|
width="80vw"
|
>
|
<div class="full-screen">
|
<i
|
v-if="!fullscreen"
|
class="el-icon-full-screen"
|
style="cursor: pointer; font-size: 18px"
|
@click="fullscreen = true"
|
></i>
|
</div>
|
<div v-if="viewIssuedVisible" style="height: 80vh">
|
<onlyoffice
|
ref="onlyoffice"
|
:options="option"
|
style="width: 100%; height: 100%"
|
/>
|
</div>
|
</el-dialog>
|
<el-dialog
|
title="在线编制"
|
:visible.sync="claimVisible"
|
width="22cm"
|
:modal-append-to-body="false"
|
:fullscreen="fullscreen"
|
>
|
<div class="full-screen">
|
<i
|
class="el-icon-full-screen"
|
style="cursor: pointer; font-size: 18px"
|
@click="fullscreen = true"
|
v-if="!fullscreen"
|
></i>
|
</div>
|
<Word
|
style="height: 70vh"
|
:class="{ fullscreen: fullscreen }"
|
v-if="claimVisible"
|
ref="Word"
|
:value="value"
|
/>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="claimVisible = false">取 消</el-button>
|
<el-button type="primary" @click="confirmClaim">确 定</el-button>
|
</span>
|
</el-dialog>
|
<el-dialog
|
title="报告审核"
|
top="5vh"
|
:visible.sync="issuedVisible"
|
width="80vw"
|
:modal-append-to-body="false"
|
:fullscreen="fullscreen"
|
>
|
<div class="full-screen">
|
<i
|
class="el-icon-full-screen"
|
style="cursor: pointer; font-size: 18px"
|
@click="fullscreen = true"
|
v-if="!fullscreen"
|
></i>
|
</div>
|
<div style="height: 75vh" v-if="issuedVisible">
|
<onlyoffice
|
ref="onlyoffice"
|
:options="option"
|
style="width: 100%; height: 100%"
|
/>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="issuedReasonVisible = true" :disabled="loadingIssued"
|
>不通过</el-button
|
>
|
<el-button type="primary" @click="subIssued" :loading="loadingIssued"
|
>通 过</el-button
|
>
|
</span>
|
</el-dialog>
|
<el-dialog
|
title="不通过原因"
|
top="5vh"
|
:visible.sync="issuedReasonVisible"
|
width="400px"
|
:modal-append-to-body="false"
|
>
|
<div class="search_thing">
|
<div class="search_label">不通过原因:</div>
|
<div class="search_input">
|
<el-input
|
size="small"
|
placeholder="请输入"
|
clearable
|
v-model="reason"
|
></el-input>
|
</div>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-button
|
@click="issuedReasonVisible = false"
|
:disabled="loadingIssuedReason"
|
>取消</el-button
|
>
|
<el-button
|
type="primary"
|
@click="handleIssuedReason"
|
:loading="loadingIssuedReason"
|
>确定</el-button
|
>
|
</span>
|
</el-dialog>
|
<el-dialog
|
title="报告批准"
|
top="5vh"
|
:visible.sync="approveVisible"
|
width="80vw"
|
:modal-append-to-body="false"
|
:fullscreen="fullscreen"
|
>
|
<div class="full-screen">
|
<i
|
class="el-icon-full-screen"
|
style="cursor: pointer; font-size: 18px"
|
@click="fullscreen = true"
|
v-if="!fullscreen"
|
></i>
|
</div>
|
<div style="height: 75vh" v-if="approveVisible">
|
<onlyoffice
|
ref="onlyoffice"
|
:options="option"
|
style="width: 100%; height: 100%"
|
/>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-button
|
@click="approveReasonVisible = true"
|
:disabled="loadingApprove"
|
>不批准</el-button
|
>
|
<el-button type="primary" @click="subApprove" :loading="loadingApprove"
|
>批 准</el-button
|
>
|
</span>
|
</el-dialog>
|
<el-dialog
|
title="不批准原因"
|
:visible.sync="approveReasonVisible"
|
width="400px"
|
:modal-append-to-body="false"
|
>
|
<div class="search_thing">
|
<div class="search_label">不批准原因:</div>
|
<div class="search_input">
|
<el-input
|
size="small"
|
placeholder="请输入"
|
clearable
|
v-model="reason"
|
></el-input>
|
</div>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-button
|
@click="approveReasonVisible = false"
|
:disabled="loadingApproveReason"
|
>取消</el-button
|
>
|
<el-button
|
type="primary"
|
@click="handleApproveReason"
|
:loading="loadingApproveReason"
|
>确定</el-button
|
>
|
</span>
|
</el-dialog>
|
<el-dialog
|
:visible.sync="batchUploadDia"
|
title="报告批量上传"
|
width="30%"
|
:close-on-click-modal="false"
|
top="5vh"
|
>
|
<div>
|
<el-upload
|
ref="upload"
|
class="upload-demo custom-upload"
|
drag
|
show-file-list
|
accept=".doc,.docx"
|
:action="action"
|
:headers="headers"
|
:on-error="onError"
|
:before-upload="beforeUpload"
|
:file-list="fileList"
|
:auto-upload="false"
|
:limit="100"
|
:on-exceed="uploadExceed"
|
:on-success="handleSuccess"
|
multiple
|
>
|
<i class="el-icon-upload"></i>
|
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
<div class="el-upload__tip" slot="tip">
|
只能上传.doc/.docx文件,且单个文件不超过10MB
|
</div>
|
</el-upload>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-button size="small" type="primary" @click="submitUpload"
|
>确认上传</el-button
|
>
|
</span>
|
</el-dialog>
|
<!-- 报告批量审批弹框 -->
|
<el-dialog
|
:visible.sync="oneClickApprovalDialog"
|
title="报告批量审批"
|
width="40%"
|
:close-on-click-modal="false"
|
top="5vh"
|
>
|
<div>
|
<el-result
|
icon="error"
|
v-show="progressData.hasException != null"
|
title="错误信息"
|
:subTitle="progressData.hasException"
|
></el-result>
|
<el-result
|
icon="success"
|
v-show="isSuccess && progressData.hasException == null"
|
title="成功信息"
|
subTitle="报告审批完成"
|
></el-result>
|
<el-progress
|
:percentage="progressData.hasNum"
|
:color="customColors"
|
></el-progress>
|
<el-statistic title="剩余报告数量">
|
<template slot="formatter">
|
{{ progressData.surplus }}/{{ progressData.hasCount }}
|
</template>
|
</el-statistic>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<!-- <el-button size="small" type="primary" @click="confirmApproval"
|
>确认</el-button
|
> -->
|
</span>
|
</el-dialog>
|
<!-- 撤回弹框 -->
|
<el-dialog
|
title="请选择需要撤回的试验室"
|
:visible.sync="withdrawDialogVisible"
|
width="30%"
|
:before-close="handleClose"
|
>
|
<el-select
|
v-model="laboratory"
|
multiple
|
clearable
|
style="width: 100%; margin-bottom: 20px"
|
placeholder="请选择试验室"
|
>
|
<el-option
|
v-for="(item, i) in laboratorys"
|
:key="i"
|
:label="item.label"
|
:value="item.value"
|
></el-option>
|
</el-select>
|
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="handleClose">取 消</el-button>
|
<el-button type="primary" @click="withdrawOperation">确 定</el-button>
|
</span>
|
</el-dialog>
|
|
<!-- 审批签名配置弹框 -->
|
<el-dialog
|
:visible.sync="approvalConfigDialog"
|
title="审批签名配置"
|
width="55%"
|
:close-on-click-modal="false"
|
top="5vh"
|
>
|
<div v-if="approvalConfigListTX.editor != null">
|
<el-divider content-position="left">通信产品实验室</el-divider>
|
<el-form
|
size="mini"
|
:model="approvalConfigListTX"
|
inline
|
label-position="right"
|
>
|
<el-row>
|
<el-col :span="8">
|
<el-form-item label="编制人:" prop="editor">
|
<el-select
|
v-model="approvalConfigListTX.editor"
|
placeholder="请选择"
|
style="width: 100%"
|
filterable
|
>
|
<el-option-group
|
v-for="(item, index) in Object.keys(personList)"
|
:key="index"
|
:label="item"
|
>
|
<el-option
|
v-for="op in personList[item]"
|
:key="op.id"
|
:label="op.name"
|
:value="op.id"
|
>
|
</el-option>
|
</el-option-group>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="审核人:" prop="examiner">
|
<el-select
|
v-model="approvalConfigListTX.examiner"
|
placeholder="请选择"
|
style="width: 100%"
|
filterable
|
>
|
<el-option-group
|
v-for="(item, index) in Object.keys(personList)"
|
:key="index"
|
:label="item"
|
>
|
<el-option
|
v-for="op in personList[item]"
|
:key="op.id"
|
:label="op.name"
|
:value="op.id"
|
>
|
</el-option>
|
</el-option-group>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="批准人:" prop="approver">
|
<el-select
|
v-model="approvalConfigListTX.approver"
|
placeholder="请选择"
|
style="width: 100%"
|
filterable
|
>
|
<el-option-group
|
v-for="(item, index) in Object.keys(personList)"
|
:key="index"
|
:label="item"
|
>
|
<el-option
|
v-for="op in personList[item]"
|
:key="op.id"
|
:label="op.name"
|
:value="op.id"
|
>
|
</el-option>
|
</el-option-group>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
</div>
|
<br />
|
<div v-if="approvalConfigListDL.editor != null">
|
<el-divider content-position="left">电力产品实验室</el-divider>
|
<el-form
|
size="mini"
|
:model="approvalConfigListDL"
|
inline
|
label-position="right"
|
>
|
<el-row>
|
<el-col :span="8">
|
<el-form-item label="编制人:" prop="editor">
|
<el-select
|
v-model="approvalConfigListDL.editor"
|
placeholder="请选择"
|
style="width: 100%"
|
filterable
|
>
|
<el-option-group
|
v-for="(item, index) in Object.keys(personList)"
|
:key="index"
|
:label="item"
|
>
|
<el-option
|
v-for="op in personList[item]"
|
:key="op.id"
|
:label="op.name"
|
:value="op.id"
|
>
|
</el-option>
|
</el-option-group>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="审核人:" prop="examiner">
|
<el-select
|
v-model="approvalConfigListDL.examiner"
|
placeholder="请选择"
|
style="width: 100%"
|
filterable
|
>
|
<el-option-group
|
v-for="(item, index) in Object.keys(personList)"
|
:key="index"
|
:label="item"
|
>
|
<el-option
|
v-for="op in personList[item]"
|
:key="op.id"
|
:label="op.name"
|
:value="op.id"
|
>
|
</el-option>
|
</el-option-group>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="批准人:" prop="approver">
|
<el-select
|
v-model="approvalConfigListDL.approver"
|
placeholder="请选择"
|
style="width: 100%"
|
filterable
|
>
|
<el-option-group
|
v-for="(item, index) in Object.keys(personList)"
|
:key="index"
|
:label="item"
|
>
|
<el-option
|
v-for="op in personList[item]"
|
:key="op.id"
|
:label="op.name"
|
:value="op.id"
|
>
|
</el-option>
|
</el-option-group>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-button size="small" type="primary" @click="confirmApprovalConfig"
|
>确认</el-button
|
>
|
</span>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
import limsTable from "@/components/Table/lims-table.vue";
|
import onlyoffice from "../reportPreparation/onlyoffice.vue";
|
import {
|
pageInsReport,
|
inReport,
|
upAll,
|
getLaboratoryByReportId,
|
withdraw,
|
updateApproveConfig,
|
getUserList,
|
getApproveConfigList,
|
downAll,
|
getBatchApprovalProgress,
|
getReportCountInfo,
|
upReportUrl,
|
ratifyReport,
|
writeReport,
|
examineReport,
|
downLoad,
|
getReportInfo,
|
getURL,
|
batchApprovalReport,
|
downReport,
|
} from "../../../api/business/reportPreparation";
|
|
import { getToken } from "@/utils/auth";
|
|
import auth from "@/plugins/auth.js";
|
|
export default {
|
components: {
|
limsTable,
|
onlyoffice,
|
},
|
data() {
|
return {
|
tableHeight: "",
|
tagField: {
|
isUpload: {
|
select: [
|
{
|
value: 0,
|
type: "danger",
|
label: "未上传",
|
},
|
{
|
value: 1,
|
type: "success",
|
label: "已上传",
|
},
|
],
|
},
|
isRatify: {
|
select: [
|
{
|
value: -9,
|
type: "info",
|
label: "未批准",
|
},
|
{
|
value: 0,
|
type: "danger",
|
label: "不批准",
|
},
|
{
|
value: 1,
|
type: "success",
|
label: "批准",
|
},
|
],
|
},
|
isExamine: {
|
select: [
|
{
|
value: -9,
|
type: "info",
|
label: "未审核",
|
},
|
{
|
value: 0,
|
type: "danger",
|
label: "不通过",
|
},
|
{
|
value: 1,
|
type: "success",
|
label: "通过",
|
},
|
],
|
},
|
state: {
|
select: [
|
{
|
value: 0,
|
type: "danger",
|
label: "待提交",
|
},
|
{
|
value: 1,
|
type: "success",
|
label: "已提交",
|
},
|
],
|
},
|
},
|
entity: {
|
isUpload: null,
|
entrustCode: null,
|
state: null,
|
isExamine: null,
|
isRatify: null,
|
code: null,
|
createTimeRange: [],
|
},
|
withdrawDialogVisible: false,
|
laboratory: [],
|
laboratorys: [],
|
isSuccess: false,
|
time: null,
|
//审批进度对象
|
progressData: {
|
hasProgress: false,
|
hasNum: 0,
|
hasCount: 0,
|
hasException: null,
|
surplus: 0,
|
},
|
personList: [],
|
approvalConfigListTX: {
|
editor: null,
|
examiner: null,
|
approver: null,
|
}, //审批签名配置列表
|
approvalConfigListDL: {
|
editor: null,
|
examiner: null,
|
approver: null,
|
}, //审批签名配置列表
|
approvalConfigDialog: false,
|
approvalConfigLoading: false,
|
surplusReportNum: 0,
|
percentage: 0,
|
customColors: [
|
{ color: "#f56c6c", percentage: 20 },
|
{ color: "#e6a23c", percentage: 40 },
|
{ color: "#5cb87a", percentage: 60 },
|
{ color: "#1989fa", percentage: 80 },
|
{ color: "#6f7ad3", percentage: 100 },
|
],
|
oneClickApprovalDialog: false,
|
approvalLoading: false,
|
isShowMore: false,
|
more: false,
|
fileList: [],
|
batchUploadDia: false,
|
viewIssuedVisible: false,
|
tableData: [],
|
column: [
|
{
|
label: "报告编号",
|
prop: "code",
|
},
|
{
|
label: "上传状态",
|
prop: "isUpload",
|
dataType: "tag",
|
formatData: (params) => {
|
return params == 1 ? "已上传" : "未上传";
|
},
|
formatType: (params) => {
|
return params == 1 ? "success" : "danger";
|
},
|
},
|
{
|
label: "创建时间",
|
prop: "createTime",
|
},
|
{
|
label: "提交人",
|
prop: "writeUserName",
|
},
|
{
|
label: "提交状态",
|
prop: "state",
|
dataType: "tag",
|
formatData: (params) => {
|
return params == 1 ? "已提交" : "待提交";
|
},
|
formatType: (params) => {
|
return params == 1 ? "success" : "danger";
|
},
|
},
|
{
|
label: "提交时间",
|
prop: "writeTime",
|
},
|
{
|
label: "审核人",
|
prop: "examineUser",
|
},
|
{
|
label: "审核状态",
|
prop: "isExamine",
|
dataType: "tag",
|
formatData: (params) => {
|
let farmat = "";
|
if (params == 0) {
|
farmat = "不通过";
|
} else if (params == 1) {
|
farmat = "通过";
|
} else {
|
farmat = "未审核";
|
}
|
return farmat;
|
},
|
formatType: (params) => {
|
let farmat = "";
|
if (params == 0) {
|
farmat = "danger";
|
} else if (params == 1) {
|
farmat = "success";
|
} else {
|
farmat = "info";
|
}
|
return farmat;
|
},
|
},
|
{
|
label: "审核备注",
|
prop: "examineTell",
|
},
|
{
|
label: "审核时间",
|
prop: "examineTime",
|
},
|
{
|
label: "批准人",
|
prop: "ratifyUser",
|
},
|
{
|
label: "批准状态",
|
prop: "isRatify",
|
dataType: "tag",
|
formatData: (params) => {
|
let farmat = "";
|
if (params == 0) {
|
farmat = "不批准";
|
} else if (params == 1) {
|
farmat = "批准";
|
} else {
|
farmat = "未批准";
|
}
|
return farmat;
|
},
|
formatType: (params) => {
|
let farmat = "";
|
if (params == 0) {
|
farmat = "danger";
|
} else if (params == 1) {
|
farmat = "sucess";
|
} else {
|
farmat = "info";
|
}
|
return farmat;
|
},
|
},
|
{
|
label: "批准备注",
|
prop: "ratifyTell",
|
},
|
{
|
label: "批准时间",
|
prop: "ratifyTime",
|
},
|
{
|
dataType: "action",
|
fixed: "right",
|
label: "操作",
|
operation: [
|
{
|
name: "编制",
|
type: "text",
|
clickFun: (row) => {
|
this.handleWeave(row);
|
},
|
disabled: (row) => {
|
return row.isExamine != -9;
|
},
|
showHide: () => {
|
return auth.hasPermi("business:reportPreparation:establishment");
|
},
|
},
|
{
|
name: "下载",
|
type: "text",
|
clickFun: (row) => {
|
this.download(row);
|
},
|
showHide: () => {
|
return auth.hasPermi("business:reportPreparation:download");
|
},
|
},
|
{
|
name: "上传",
|
type: "upload",
|
url: "/insReport/inReport",
|
data: (row) => {
|
return {
|
id: row.id,
|
};
|
},
|
uploadIdFun: (row) => {
|
return row.id;
|
},
|
disabled: (row) => {
|
return row.isExamine != -9;
|
},
|
showHide: () => {
|
return auth.hasPermi("business:reportPreparation:upload");
|
},
|
},
|
{
|
name: "还原",
|
type: "text",
|
clickFun: (row) => {
|
this.handleRestore(row);
|
},
|
disabled: (row) => {
|
return row.isExamine != -9;
|
},
|
showHide: () => {
|
return auth.hasPermi("business:reportPreparation:restore");
|
},
|
},
|
{
|
name: "提交",
|
type: "text",
|
clickFun: (row) => {
|
this.handleSubmit(row);
|
},
|
disabled: (row) => {
|
return row.state != 0;
|
},
|
showHide: () => {
|
return auth.hasPermi("business:reportPreparation:submit");
|
},
|
},
|
{
|
name: "审核",
|
type: "text",
|
clickFun: (row) => {
|
this.handleIssued(row);
|
},
|
disabled: (row) => {
|
return (
|
row.state == null || row.state == 0 || row.isExamine == 1
|
);
|
},
|
showHide: () => {
|
return auth.hasPermi("business:reportPreparation:examine");
|
},
|
},
|
{
|
name: "批准",
|
type: "text",
|
clickFun: (row) => {
|
this.handleApprove(row);
|
},
|
disabled: (row) => {
|
return (
|
row.state == null ||
|
row.state == 0 ||
|
row.isExamine == 0 ||
|
row.isExamine == -9 ||
|
row.isRatify == 1
|
);
|
},
|
showHide: () => {
|
return auth.hasPermi("business:reportPreparation:approve");
|
},
|
},
|
{
|
name: "撤回",
|
type: "text",
|
clickFun: (row) => {
|
this.withdraw(row);
|
},
|
disabled: (row) => {
|
return row.state == 1;
|
},
|
showHide: () => {
|
return auth.hasPermi("business:reportPreparation:withdraw");
|
},
|
},
|
],
|
},
|
],
|
page: {
|
total: 0,
|
size: 10,
|
current: 1,
|
},
|
tableLoading: false,
|
entityCopy: {},
|
upIndex: 0,
|
statusList: [],
|
claimVisible: false,
|
issuedVisible: false,
|
issuedReasonVisible: false,
|
approveVisible: false,
|
approveReasonVisible: false,
|
fullscreen: false,
|
loadingApproveReason: false,
|
loadingApprove: false,
|
loadingIssuedReason: false,
|
loadingIssued: false,
|
value: ``,
|
reason: "",
|
currentInfo: null,
|
option: null,
|
mutiList: [],
|
outLoading: false,
|
inLoading: false,
|
maxNum: 1,
|
unSubmitCount: 0,
|
unRatifyCount: 0,
|
unExamineCount: 0,
|
};
|
},
|
computed: {
|
headers() {
|
let token = getToken();
|
return {
|
authorization: token,
|
};
|
},
|
action() {
|
return this.javaApi + "/insReport/upAll";
|
},
|
},
|
created() {
|
this.getAuthorizedPerson();
|
this.handleResize();
|
// 监听窗口大小改变事件
|
window.addEventListener("resize", this.handleResize);
|
},
|
beforeDestroy() {
|
if (this.time != null) {
|
clearInterval(this.time);
|
this.time = null;
|
}
|
this.progressData = {
|
hasProgress: false,
|
hasNum: 0,
|
hasCount: 0,
|
hasException: null,
|
surplus: 0,
|
};
|
window.removeEventListener("resize", this.handleResize);
|
},
|
mounted() {
|
this.entityCopy = this.HaveJson(this.entity);
|
this.getList();
|
this.getReportCountInfo();
|
this.getTableHeight();
|
window.addEventListener('resize', this.calculateTableHeight); // 监听窗口大小变化
|
},
|
beforeDestroy() {
|
window.removeEventListener('resize', this.calculateTableHeight); // 移除监听
|
},
|
watch: {
|
batchUploadDia(newVal) {
|
if (!newVal) {
|
this.$refs.upload.clearFiles();
|
this.fileList = [];
|
}
|
},
|
progressData(newVal) {
|
if (newVal && newVal.hasNum == 100) {
|
clearInterval(this.time);
|
this.$message.success("报告审批完成");
|
this.isSuccess = true;
|
this.mutiList = [];
|
this.refresh();
|
} else if (
|
newVal &&
|
newVal.hasException != null &&
|
newVal.hasException != ""
|
) {
|
clearInterval(this.time);
|
}
|
},
|
oneClickApprovalDialog(newVal) {
|
if (!newVal) {
|
this.isSuccess = false;
|
this.progressData = {
|
hasProgress: false,
|
hasNum: 0,
|
hasCount: 0,
|
hasException: null,
|
surplus: 0,
|
};
|
}
|
},
|
},
|
methods: {
|
// 获取表格高度
|
getTableHeight() {
|
const windowHeight = window.innerHeight; // 浏览器窗口高度
|
this.tableHeight = windowHeight - 60 - 80 - 46 - 50 - 32 - 44 -30 - 30;
|
console.log('this.tableHeight',this.tableHeight);
|
},
|
// 返回分页值
|
pagination({ page, limit }) {
|
this.page.current = page;
|
this.page.size = limit;
|
this.getList();
|
},
|
getList() {
|
this.tableLoading = true;
|
if (!this.entity.createTimeRange) {
|
this.entity.createTimeRange = [];
|
}
|
const data = { ...this.page, ...this.entity };
|
pageInsReport(data)
|
.then((res) => {
|
this.tableData = res.data.records;
|
this.page.total = res.data.total;
|
this.tableLoading = false;
|
})
|
.catch((error) => {
|
console.error(error);
|
this.tableLoading = false;
|
});
|
},
|
// 撤回 弹框
|
withdraw(row) {
|
getLaboratoryByReportId({ id: row.id }).then((res) => {
|
this.laboratorys = res.data;
|
this.reportId = row.id;
|
this.withdrawDialogVisible = true;
|
});
|
},
|
withdrawOperation() {
|
if (this.laboratory.length == 0) {
|
this.$message.error("请选择需要撤回的试验室");
|
return;
|
}
|
let data = {
|
laboratory: JSON.stringify(this.laboratory),
|
id: this.reportId,
|
};
|
withdraw(data).then((res) => {
|
if (res.code == 200) {
|
this.$message.success("撤回成功");
|
this.laboratory = [];
|
this.withdrawDialogVisible = false;
|
this.refresh();
|
}
|
});
|
},
|
|
handleCommand(command) {
|
switch (command) {
|
case "batchDownload":
|
//批量下载
|
this.handleDowns();
|
break;
|
case "batchUpload":
|
//批量上传
|
this.openBatchUploadDia();
|
break;
|
case "oneClickApproval":
|
//一键审批
|
this.oneClickApproval();
|
break;
|
case "approvalConfig":
|
//审批签名配置
|
this.openApprovalConfig();
|
break;
|
}
|
},
|
//确认更新审批签名配置
|
confirmApprovalConfig() {
|
let data = [];
|
if (this.approvalConfigListTX.id) {
|
data.push(this.approvalConfigListTX);
|
}
|
if (this.approvalConfigListDL.id) {
|
data.push(this.approvalConfigListDL);
|
}
|
updateApproveConfig({ configList: data })
|
.then((res) => {
|
if (res.code == 200) {
|
this.$message.success("更新成功");
|
this.approvalConfigDialog = false;
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
},
|
//获取人员信息
|
getAuthorizedPerson() {
|
getUserList()
|
.then((res) => {
|
console.log('res',res);
|
this.personList = res.data;
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
},
|
//打开审批签名配置弹框
|
openApprovalConfig() {
|
getApproveConfigList()
|
.then((res) => {
|
if (res.code !== 201) {
|
res.data.forEach((ele) => {
|
if (ele.laboratory == "通信产品实验室") {
|
this.approvalConfigListTX = { ...ele };
|
}
|
if (ele.laboratory == "电力产品实验室") {
|
this.approvalConfigListDL = { ...ele };
|
}
|
});
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
this.$nextTick(() => {
|
this.approvalConfigDialog = true;
|
});
|
},
|
//确认审批
|
confirmApproval() {},
|
//一键审批按钮
|
oneClickApproval() {
|
if (this.mutiList.length == 0) {
|
this.$message.error("请选择要审批的报告");
|
return;
|
}
|
//执行审批
|
if (!this.progressData.hasProgress) {
|
//未审批的报告
|
let unApprovalList = this.mutiList.filter(
|
(ele) => ele.isExamine == -9 || ele.isRatify == -9
|
);
|
let entity = this.entity;
|
//根据查询条件过滤已选择的数据
|
let ids = unApprovalList
|
.filter((f) =>
|
entity.isExamine != null && entity.isExamine !== ""
|
? f.isExamine === entity.isExamine
|
: true
|
)
|
.filter((f) =>
|
entity.isRatify != null && entity.isRatify !== ""
|
? f.isRatify === entity.isRatify
|
: true
|
)
|
.filter((f) =>
|
entity.isUpload != null && entity.isUpload !== ""
|
? f.isUpload === entity.isUpload
|
: true
|
)
|
.filter((f) =>
|
entity.code != null && entity.code !== ""
|
? f.code.indexOf(entity.code) >= 0
|
: true
|
)
|
.filter((f) =>
|
entity.state != null && entity.state !== ""
|
? f.state === entity.state
|
: true
|
)
|
.map((ele) => ele.id);
|
batchApprovalReport({ ids: ids })
|
.then((res) => {
|
if (res.code != 201) {
|
//查询审批进度
|
this.time = setInterval(() => {
|
this.getProgress();
|
}, 500);
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
clearInterval(this.time);
|
});
|
}
|
// this.getProgress();
|
this.$nextTick(() => {
|
this.oneClickApprovalDialog = true;
|
});
|
},
|
getProgress() {
|
getBatchApprovalProgress().then((res) => {
|
this.progressData = res.data;
|
});
|
},
|
// 定义一个函数来处理视口宽度变化
|
handleResize() {
|
//视口宽度
|
let windowWidth = window.innerWidth;
|
//减去左边菜单栏宽度92,页边距40,右边的操作按钮宽度viewportWidth*33.33333%
|
let viewportWidth = windowWidth - 92 - 40;
|
//搜索表单最大宽度
|
let formMaxWidth = viewportWidth - viewportWidth * 0.3333333;
|
//单个搜索框宽度为230
|
this.maxNum = formMaxWidth / 230;
|
},
|
//批量上传报告
|
openBatchUploadDia() {
|
this.batchUploadDia = true;
|
},
|
// 查看报告
|
viewIssued(row) {
|
this.currentInfo = row;
|
console.log(`output->row`, row);
|
let fileName = row.urlS === null || row.urlS === "" ? row.url : row.urlS;
|
let fileType = "docx";
|
if (row.tempUrlPdf != null || row.tempUrlPdf === "") {
|
fileName = row.tempUrlPdf;
|
fileType = "pdf";
|
}
|
fileName = fileName.replace("/word/", "");
|
const userName = JSON.parse(localStorage.getItem("user")).name;
|
this.option = {
|
url: this.javaApi + "/word/" + fileName,
|
isEdit: false,
|
fileType: fileType,
|
title: fileName,
|
lang: "zh-CN",
|
isPrint: false,
|
user_id: 1,
|
user_name: userName,
|
editUrl:
|
this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName,
|
};
|
console.log(this.javaApi + "/word/" + fileName);
|
this.viewIssuedVisible = true;
|
},
|
handleChange(arr) {
|
this.mutiList = arr;
|
},
|
handleSelectionChange(val) {
|
this.mutiList = val;
|
console.log(`output->val`, val);
|
},
|
handleDowns() {
|
if (this.mutiList.length == 0) {
|
this.$message.error("请选择报告");
|
return;
|
}
|
let entity = this.entity;
|
//根据查询条件过滤已选择的数据
|
let str = this.mutiList
|
.filter((f) =>
|
entity.isExamine != null && entity.isExamine !== ""
|
? f.isExamine === entity.isExamine
|
: true
|
)
|
.filter((f) =>
|
entity.isRatify != null && entity.isRatify !== ""
|
? f.isRatify === entity.isRatify
|
: true
|
)
|
.filter((f) =>
|
entity.isUpload != null && entity.isUpload !== ""
|
? f.isUpload === entity.isUpload
|
: true
|
)
|
.filter((f) =>
|
entity.code != null && entity.code !== ""
|
? f.code.indexOf(entity.code) >= 0
|
: true
|
)
|
.filter((f) =>
|
entity.state != null && entity.state !== ""
|
? f.state === entity.state
|
: true
|
)
|
.map((m) => m.id)
|
.join(",");
|
if (str === "" || str == null) {
|
this.$message.error("没有符合条件的数据!");
|
return;
|
}
|
this.outLoading = true;
|
downAll({ ids: str }).then((res) => {
|
this.outLoading = false;
|
this.$message.success("导出成功");
|
const link = document.createElement("a");
|
link.href = this.javaApi + res.data;
|
link.target = "_blank";
|
document.body.appendChild(link);
|
link.click();
|
//下载完成,重置表格
|
this.$nextTick(() => {
|
this.refresh();
|
});
|
});
|
},
|
uploadExceed(file, fileList) {
|
this.$message.error("同时上传文件数目最大为100,请重试");
|
},
|
submitUpload() {
|
this.$refs.upload.submit();
|
},
|
beforeUpload(file) {
|
const docxType = [
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
"application/msword",
|
];
|
if (!docxType.includes(file.type)) {
|
this.$message.error("只能上传类型为.doc/.docx的文件");
|
return false;
|
}
|
const maxSize = 10 * 1024 * 1024; //单个文件最大上传大小10MB
|
if (file.size > maxSize) {
|
this.$message.error("文件" + file.name + "大小超过10MB");
|
return false;
|
}
|
return true;
|
// const isZip = file.type === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' || file.name.endsWith('.zip');
|
// if (!isZip) {
|
// this.$message.error('上传文件只能是 ZIP 格式!');
|
// }
|
// if(isZip){
|
// this.inLoading = true;
|
// }
|
// return isZip;
|
},
|
handleSuccess(response) {
|
this.inLoading = false;
|
if (response.code == 200) {
|
this.$message.success("导入成功");
|
this.refreshTable();
|
this.$refs.upload.clearFiles();
|
this.fileList = [];
|
} else {
|
this.$message.error(response.message);
|
}
|
},
|
onError(err, file, fileList, type) {
|
this.$message.error("上传失败");
|
this.$refs.upload.clearFiles();
|
this.fileList = [];
|
},
|
refreshTable(e) {
|
if (!this.entity.createTimeRange) {
|
this.entity.createTimeRange = [];
|
}
|
this.getList();
|
this.getReportCountInfo();
|
},
|
getReportCountInfo() {
|
if (!this.entity.createTimeRange) {
|
this.entity.createTimeRange = [];
|
}
|
console.log("entity", this.entity);
|
getReportCountInfo(this.entity)
|
.then((res) => {
|
this.unSubmitCount = res.data.unSubmitCount;
|
this.unRatifyCount = res.data.unRatifyCount;
|
this.unExamineCount = res.data.unExamineCount;
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
},
|
refresh() {
|
this.entity = this.HaveJson(this.entityCopy);
|
this.upIndex++;
|
this.mutiList = [];
|
this.getReportCountInfo();
|
},
|
async handleWeave(row) {
|
let fileName = row.urlS === null || row.urlS === "" ? row.url : row.urlS;
|
fileName = fileName.replace("/word/", "");
|
const userName = this.$store.state.user.name;
|
//参考vabOnlyOffice组件参数配置
|
const { href } = this.$router.resolve({
|
path: `/wordEdit`,
|
query: {
|
url: this.javaApi + "/word/" + fileName,
|
isEdit: true,
|
fileType: "docx",
|
title: fileName,
|
lang: "zh-CN",
|
isPrint: true,
|
user_id: 1,
|
user_name: userName,
|
editUrl:
|
this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName,
|
},
|
});
|
window.open(href, "_blank");
|
},
|
confirmClaim() {
|
// console.log(this.$refs.Word.getValue())
|
},
|
async selectAllByOne(row) {
|
const userName = JSON.parse(localStorage.getItem("user")).name;
|
//参考vabOnlyOffice组件参数配置
|
const { href } = this.$router.resolve({
|
path: `/wordEdit`,
|
query: {
|
url: this.javaApi + "/word/" + row.entrustCode + ".docx",
|
isEdit: "false",
|
fileType: "docx",
|
title: row.entrustCode + ".docx",
|
lang: "zh-CN",
|
isPrint: true,
|
user_id: 1,
|
user_name: userName,
|
},
|
});
|
window.open(href, "_blank");
|
console.log(`output->row`, row);
|
},
|
download(row) {
|
downReport({ id: row.id, type: 0 }).then((res) => {
|
let rowUrl = row.urlS ? row.urlS : row.url;
|
let fileName =
|
rowUrl.indexOf("_") == -1
|
? rowUrl.split("/")[2]
|
: rowUrl.split("_")[1];
|
console.log(fileName);
|
const blod = new Blob([res], { type: "application/octet-stream" });
|
const url = URL.createObjectURL(blod);
|
const link = document.createElement("a");
|
link.href = url;
|
link.target = "_blank";
|
link.download = fileName;
|
document.body.appendChild(link);
|
link.click();
|
});
|
},
|
// 还原操作
|
handleRestore(row) {
|
this.$confirm("是否还原当前报告?", "还原", {
|
confirmButtonText: "还原",
|
cancelButtonText: "取消",
|
type: "warning",
|
})
|
.then(() => {
|
upReportUrl({ id: row.id, type: 1 }).then((res) => {
|
if (res.code === 200) {
|
this.$message.success("操作成功");
|
this.refreshTable("page");
|
}
|
});
|
})
|
.catch({}());
|
},
|
handleIssued(row) {
|
this.currentInfo = row;
|
let fileName = row.urlS === null || row.urlS === "" ? row.url : row.urlS;
|
fileName = fileName.replace("/word/", "");
|
const userName = this.$store.state.user.name;
|
this.option = {
|
url: this.javaApi + "/word/" + fileName,
|
isEdit: false,
|
fileType: "docx",
|
title: fileName,
|
lang: "zh-CN",
|
isPrint: false,
|
user_id: 1,
|
user_name: userName,
|
editUrl:
|
this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName,
|
};
|
this.issuedVisible = true;
|
},
|
// 审核通过
|
subIssued() {
|
this.loadingIssued = true;
|
examineReport({ id: this.currentInfo.id, isExamine: 1 })
|
.then((res) => {
|
this.loadingIssued = false;
|
if (res.code === 201) {
|
return;
|
}
|
this.$message.success("提交成功");
|
this.refreshTable("page");
|
this.currentInfo = null;
|
this.issuedVisible = false;
|
})
|
.catch((e) => {
|
this.$message.error("提交失败");
|
this.loadingIssued = false;
|
});
|
},
|
handleApprove(row) {
|
this.currentInfo = row;
|
let fileName = row.urlS === null || row.urlS === "" ? row.url : row.urlS;
|
fileName = fileName.replace("/word/", "");
|
const userName = this.$store.state.user.name;
|
this.option = {
|
url: this.javaApi + "/word/" + fileName,
|
isEdit: false,
|
fileType: "docx",
|
title: fileName,
|
lang: "zh-CN",
|
isPrint: false,
|
user_id: 1,
|
user_name: userName,
|
editUrl:
|
this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName,
|
};
|
this.approveVisible = true;
|
},
|
// 批准通过
|
subApprove() {
|
this.loadingApprove = true;
|
ratifyReport({ id: this.currentInfo.id, isRatify: 1 }).then((res) => {
|
this.loadingApprove = false;
|
if (res.code == 201) {
|
this.$message.error("批准失败");
|
return;
|
}
|
this.$message.success("已批准");
|
this.refreshTable("page");
|
this.currentInfo = null;
|
this.approveVisible = false;
|
});
|
},
|
// 提交操作
|
handleSubmit(row) {
|
this.$confirm("是否提交当前报告?", "提交", {
|
confirmButtonText: "提交",
|
cancelButtonText: "取消",
|
type: "warning",
|
})
|
.then(() => {
|
writeReport({ id: row.id })
|
.then((res) => {
|
if (res.code === 201) {
|
return;
|
}
|
this.$message.success("提交成功");
|
this.refreshTable("page");
|
})
|
.catch((e) => {
|
this.$message.error("提交失败");
|
});
|
})
|
.catch(() => {});
|
},
|
// 审核不通过原因提交
|
handleIssuedReason() {
|
if (!this.reason) {
|
return this.$message.error("请输入原因");
|
}
|
this.loadingIssuedReason = true;
|
examineReport({
|
id: this.currentInfo.id,
|
isExamine: 0,
|
examineTell: this.reason,
|
})
|
.then((res) => {
|
this.loadingIssuedReason = false;
|
if (res.code === 201) {
|
return;
|
}
|
this.$message.success("操作成功");
|
this.refreshTable("page");
|
this.currentInfo = null;
|
this.reason = "";
|
this.issuedVisible = false;
|
this.issuedReasonVisible = false;
|
})
|
.catch((e) => {
|
this.$message.error("操作失败");
|
this.loadingIssuedReason = false;
|
});
|
},
|
// 不批准原因提交
|
handleApproveReason() {
|
if (!this.reason) {
|
return this.$message.error("请输入原因");
|
}
|
this.loadingApproveReason = true;
|
examineReport({
|
id: this.currentInfo.id,
|
isExamine: 0,
|
examineTell: this.reason,
|
})
|
.then((res) => {
|
this.loadingApproveReason = false;
|
if (res.code === 201) {
|
return;
|
}
|
this.$message.success("操作成功");
|
this.refreshTable("page");
|
this.currentInfo = null;
|
this.reason = "";
|
this.issuedVisible = false;
|
this.issuedReasonVisible = false;
|
})
|
.catch((e) => {
|
this.$message.error("操作失败");
|
this.loadingIssuedReason = false;
|
});
|
},
|
handleClose() {
|
this.withdrawDialogVisible = false;
|
this.laboratory = [];
|
},
|
getStyle() {
|
return "height: calc(100% - " + (this.more ? "94" : "44") + "px)";
|
},
|
},
|
};
|
</script>
|