| | |
| | | <template> |
| | | <div class="inspection_order"> |
| | | <div v-show="activeFace === 0 && state===0" style="width: 100%;height: 100%;"> |
| | | <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="position: relative;"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">报告编号:</div> |
| | | <div class="search_input"><el-input v-model="componentData.entity.code" clearable placeholder="请输入" |
| | | size="small" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | <div class="app-container"> |
| | | <div> |
| | | <el-form :model="entity" ref="entity" size="small" :inline="true"> |
| | | <el-form-item label="报告编号" prop="code"> |
| | | <el-input v-model="entity.code" clearable placeholder="请输入" |
| | | size="small" @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="状态" prop="queryStatus"> |
| | | <el-select v-model="entity.queryStatus" clearable size="small" @change="refreshTable()"> |
| | | <el-option v-for="(a, i) in queryStatusList" :key="i" :label="a.label" :value="a.value"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="下单类别" prop="typeSource"> |
| | | <el-select v-model="entity.typeSource" clearable size="small" @change="refreshTable()"> |
| | | <el-option v-for="(a, i) in typeSourceList" :key="i" :label="a.label" :value="a.value"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="检验类别" prop="orderType"> |
| | | <el-select v-model="entity.orderType" clearable size="small" @change="refreshTable()"> |
| | | <el-option v-for="(a, i) in orderTypeList" :key="i" :label="a.label" :value="a.value"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button size="mini" @click="refresh()">重置</el-button> |
| | | <el-button size="mini" type="primary" @click="refreshTable()">查询</el-button> |
| | | <el-button :loading="outLoading" size="mini" type="primary" @click="handleDowns">批量下载</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div> |
| | | <lims-table :tableData="valueTableData" :column="column" :page="page" :tableLoading="tableLoading" |
| | | :isSelection="true" :handleSelectionChange="handleChange" |
| | | :height="'calc(100vh - 290px)'" @pagination="pagination" key="valueTableData"> |
| | | <div slot="action" slot-scope="scope"> |
| | | <el-button size="small" type="text" @click="viewIssued(scope.row)">查看报告</el-button> |
| | | <el-upload ref='upload1' |
| | | style="display: inline;margin: 0 6px" |
| | | :action="fileAction1 +'?id='+ scope.row.id" |
| | | :auto-upload="true" |
| | | :before-upload="fileBeforeUpload1" |
| | | :headers="uploadHeader" :on-error="onError1" |
| | | :on-success="handleSuccessUp1" |
| | | :show-file-list="false" |
| | | accept='.doc,.docx'> |
| | | <el-button size="small" type="text" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName">上传</el-button> |
| | | </el-upload> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName" @click="handleRestore(scope.row)">还原</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName" @click="sendBackTask(scope.row)">退回任务</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName" @click="handle(scope.row)">提交</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state == null || scope.row.state == 0 ||scope.row.isExamine == 1 || userName !== scope.row.examineUser" @click="handleIssued(scope.row)">审核</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state == null || scope.row.state == 0 || scope.row.isExamine == 0 || scope.row.isExamine == null || scope.row.isRatify == 1 || userName !== scope.row.ratifyUser" @click="handleApprove(scope.row)">批准</el-button> |
| | | <el-popover placement="bottom" trigger="hover" style="margin-left: 6px"> |
| | | <template #reference> |
| | | <el-button link type="text" size="small">更多</el-button> |
| | | </template> |
| | | <div> |
| | | <el-button style="margin-left: 10px" type="text" size="small" @click="download(scope.row)">下载</el-button> |
| | | <el-button type="text" size="small" @click="viewInspectInfo(scope.row)">原始记录</el-button> |
| | | <el-button type="text" size="small" @click="handleFileLook(scope.row)">附件上传</el-button> |
| | | </div> |
| | | </el-popover> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">状态:</div> |
| | | <div class="search_input"> |
| | | <el-select v-model="componentData.entity.queryStatus" clearable size="small" style="width: 100%;" @change="refreshTable()"> |
| | | <el-option v-for="(a, i) in queryStatusList" :key="i" :label="a.label" :value="a.value"></el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">下单类别:</div> |
| | | <div class="search_input"> |
| | | <el-select v-model="componentData.entity.typeSource" clearable size="small" style="width: 100%;" @change="refreshTable()"> |
| | | <el-option v-for="(a, i) in typeSourceList" :key="i" :label="a.label" :value="a.value"></el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">检验类别:</div> |
| | | <div class="search_input"> |
| | | <el-select v-model="componentData.entity.orderType" clearable size="small" style="width: 100%;" @change="refreshTable()"> |
| | | <el-option v-for="(a, i) in orderTypeList" :key="i" :label="a.label" :value="a.value"></el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">重 置</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">查 询</el-button> |
| | | <el-button :loading="outLoading" size="small" style="margin-right: 16px;" type="primary" @click="handleDowns">批量下载</el-button> |
| | | </div> |
| | | </div> |
| | | <!-- <input id="input" type="file" accept=".doc,.docx"></input> --> |
| | | <div class="table"> |
| | | <el-table @selection-change="handleChange" :data="valueTableData" style="width: 100%" height="calc(100vh - 21em)" v-loading="tableLoading"> |
| | | <!-- 表格列 --> |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column header-align="center" align="center" width="70" prop="prop" label="序号" type="index"></el-table-column> |
| | | <el-table-column prop="code" label="报告编号" min-width="180"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" @click="selectAllByOne(scope.row)">{{scope.row.code}}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="typeSource" label="下单类别" min-width="120"> |
| | | <template slot-scope="scope"> |
| | | <el-tag type="info" v-if="scope.row.typeSource === 1" disable-transitions>原材料下单</el-tag> |
| | | <el-tag type="info" v-if="scope.row.typeSource === 0" disable-transitions>成品下单</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="orderType" label="检验类别" min-width="150"> |
| | | <template slot-scope="scope"> |
| | | <el-tag type="success" v-if="scope.row.orderType === 'Customer-ordered test'" disable-transitions>委托试验</el-tag> |
| | | <el-tag v-if="scope.row.orderType === '抽检'" disable-transitions>抽检</el-tag> |
| | | <el-tag type="info" v-if="scope.row.orderType === '进厂检验'" disable-transitions>进厂检验</el-tag> |
| | | <el-tag type="warning" v-if="scope.row.orderType === 'Quarterly inspection'" disable-transitions>季度检验</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="createTime" label="创建时间" min-width="150"></el-table-column> |
| | | <el-table-column prop="writeUserName" label="提交人" min-width="110"></el-table-column> |
| | | <el-table-column prop="writeTime" label="提交时间" min-width="150"></el-table-column> |
| | | <el-table-column prop="state" label="提交状态" min-width="110"> |
| | | <template slot-scope="scope"> |
| | | <el-tag type="danger" v-if="scope.row.state === 0" disable-transitions>待提交</el-tag> |
| | | <el-tag type="success" v-if="scope.row.state === 1" disable-transitions>已提交</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="examineUser" label="审核人" width="110"></el-table-column> |
| | | <el-table-column prop="examineTime" label="审核时间" width="180"></el-table-column> |
| | | <el-table-column prop="isExamine" label="审核状态" width="110"> |
| | | <template slot-scope="scope"> |
| | | <el-tag type="danger" v-if="scope.row.isExamine === 0" disable-transitions>不通过</el-tag> |
| | | <el-tag type="success" v-if="scope.row.isExamine === 1" disable-transitions>通过</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="examineTell" label="审核备注" width="180"></el-table-column> |
| | | <el-table-column prop="ratifyUser" label="批准人" width="110"></el-table-column> |
| | | <el-table-column prop="ratifyTime" label="批准时间" width="180"></el-table-column> |
| | | <el-table-column prop="isRatify" label="批准状态" width="110"> |
| | | <template slot-scope="scope"> |
| | | <el-tag type="danger" v-if="scope.row.isRatify === 0" disable-transitions>不批准</el-tag> |
| | | <el-tag type="success" v-if="scope.row.isRatify === 1" disable-transitions>批准</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="ratifyTell" label="批准备注" width="180"></el-table-column> |
| | | <!-- 操作按钮 --> |
| | | <el-table-column label="操作" fixed="right" min-width="360" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="small" type="text" @click="viewIssued(scope.row)">查看报告</el-button> |
| | | <el-upload ref='upload1' |
| | | style="display: inline" |
| | | :action="fileAction1 +'?id='+ scope.row.id" |
| | | :auto-upload="true" |
| | | :before-upload="fileBeforeUpload1" |
| | | :headers="headers" :on-error="onError1" |
| | | :on-success="handleSuccessUp1" |
| | | :show-file-list="false" |
| | | accept='.doc,.docx'> |
| | | <el-button size="small" type="text" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName">上传</el-button> |
| | | <!-- <span>上传</span>--> |
| | | </el-upload> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName" @click="handleRestore(scope.row)">还原</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName" @click="sendBackTask(scope.row)">退回任务</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName" @click="handle(scope.row)">提交</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state == null || scope.row.state == 0 ||scope.row.isExamine == 1 || userName !== scope.row.examineUser" @click="handleIssued(scope.row)">审核</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state == null || scope.row.state == 0 || scope.row.isExamine == 0 || scope.row.isExamine == null || scope.row.isRatify == 1 || userName !== scope.row.ratifyUser" @click="handleApprove(scope.row)">批准</el-button> |
| | | <el-popover placement="bottom" :width="170" trigger="hover"> |
| | | <template #reference> |
| | | <el-button link type="text" size="small">更多</el-button> |
| | | </template> |
| | | <div> |
| | | <el-button style="margin-left: 10px" type="text" size="small" @click="download(scope.row)">下载</el-button> |
| | | <el-button type="text" size="small" @click="viewInspectInfo(scope.row)">原始记录</el-button> |
| | | <el-button type="text" size="small" @click="handleFileLook(scope.row)">附件上传</el-button> |
| | | </div> |
| | | </el-popover> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page.current" |
| | | style="margin-right: 5%;" :page-sizes="[10, 20, 30, 50, 100]" :page-size="page.size" |
| | | layout="->,total, sizes, prev, pager, next, jumper" :total="total"> |
| | | </el-pagination> |
| | | </div> |
| | | </lims-table> |
| | | </div> |
| | | <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="claimVisible" title="在线编制" |
| | | width="22cm"> |
| | |
| | | <el-button :loading="loadingVerify" type="primary" @click="handleSubmit">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <div v-if="activeFace >0 && isCopper === null" style="width: 100%;height: 100%;"> |
| | | <Add :active="activeFace" :currentId="currentId" :examine="examine"/> |
| | | </div> |
| | | <div v-if="activeFace >0 && isCopper === 0" style="width: 100%;height: 100%;"> |
| | | <CustomsInspection :active="activeFace" :currentId="currentId" :customsInspection="customsInspection" :isReport="isReport"/> |
| | | </div> |
| | | <div v-if="activeFace >0 && isCopper === 1" style="width: 100%;height: 100%;"> |
| | | <CopperOrder :active="activeFace" :currentId="currentId"></CopperOrder> |
| | | </div> |
| | | <!--产业链信息查看--> |
| | | <ShowInfo v-if="showInfoDialog" ref="showInfoDialog" :showInfoDialog="showInfoDialog"></ShowInfo> |
| | | <!-- <ShowInfo v-if="showInfoDialog" ref="showInfoDialog" :showInfoDialog="showInfoDialog"></ShowInfo>--> |
| | | <!--报告查看--> |
| | | <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="viewIssuedVisible" title="报告查看" |
| | | width="80vw"> |
| | |
| | | <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" /> |
| | | </div> |
| | | </el-dialog> |
| | | <!--检验任务信息查看--> |
| | | <Inspection v-if="state>0" :key="InspectionKey" :inspectorList="inspectorList" :orderId="orderId" |
| | | :sonLaboratory="sonLaboratory" :state="state" |
| | | :typeSource="typeSource" |
| | | @goback="goback" @refreshView="refreshView"/> |
| | | <!--附件查看--> |
| | | <el-dialog :visible.sync="filesDialogVisible" title="附件查看" width="80%" @closed="closeFilesLook"> |
| | | <div style="display: flex;justify-content: space-between;"> |
| | | <div style="margin-bottom: 10px"> |
| | | <el-upload ref='upload' |
| | | :action="fileAction" |
| | | :auto-upload="true" |
| | | :before-upload="fileBeforeUpload" :data="{orderId: filesLookInfo.insOrderId}" |
| | | :headers="headers" :on-error="onError" |
| | | :headers="uploadHeader" :on-error="onError" |
| | | :on-success="handleSuccessUp" |
| | | :show-file-list="false" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' style="width: 80px !important;"> |
| | | <el-button size="small" style="height: 38px" type="primary">附件上传</el-button> |
| | | </el-upload> |
| | | </div> |
| | | <!-- <div v-if="filesDialogVisible" style="height: 70vh;overflow-y: auto;">--> |
| | | <!-- <ValueTable :key="upIndex"--> |
| | | <!-- ref="fileList"--> |
| | | <!-- :componentData="fileComponentData"--> |
| | | <!-- :delUrl="$api.insOrderPlan.delfile"--> |
| | | <!-- :url="$api.insOrderPlan.getFileList"--> |
| | | <!-- class="value-table"/>--> |
| | | <!-- </div>--> |
| | | <lims-table :tableData="tableDataFile" :column="columnFile" @pagination="paginationFile" height="500px" |
| | | key="tableDataFile" :page="pageFile" :tableLoading="tableLoadingFile"></lims-table> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | |
| | | import onlyoffice from "@/components/Onlyoffice/onlyoffice.vue"; |
| | | // import ShowInfo from "../do/b1-material-ins-order/showInfo.vue"; |
| | | import file from "@/utils/file"; |
| | | import { |
| | | downAll, |
| | | examineReport, |
| | | pageInsReport, |
| | | ratifyReport, |
| | | sendBackTask, |
| | | upReportUrl, |
| | | writeReport |
| | | } from "@/api/business/insReport"; |
| | | import {mapGetters} from "vuex"; |
| | | import {selectUserCondition} from "@/api/business/inspectionTask"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import {delfile, downFile, getFileList} from "@/api/business/rawMaterialOrder"; |
| | | export default { |
| | | components: {onlyoffice}, |
| | | components: {limsTable, onlyoffice}, |
| | | data() { |
| | | return { |
| | | componentData: { |
| | | entity: { |
| | | queryStatus: null, |
| | | code: null, |
| | | typeSource: null, |
| | | orderBy: { |
| | | field: 'id', |
| | | order: 'desc' |
| | | } |
| | | }, |
| | | isIndex: true, |
| | | showSelect: true, |
| | | select: true, |
| | | selectMethod: 'handleChange', |
| | | do: [ |
| | | { |
| | | id: '', |
| | | font: '查看报告', |
| | | type: 'text', |
| | | method: 'viewIssued', |
| | | }, |
| | | { |
| | | id: 'download', |
| | | font: '下载', |
| | | type: 'text', |
| | | method: 'download' |
| | | }, { |
| | | id: 'handleUpload', |
| | | font: '上传', |
| | | type: 'upload', |
| | | uploadConfig: { |
| | | url: this.$api.insReport.inReport, |
| | | accept: '.docx' |
| | | }, |
| | | method: 'handleUpload', |
| | | disabFun: (row, index) => { |
| | | return row.state != 0 || userName != row.writeUserName |
| | | } |
| | | }, |
| | | { |
| | | id: 'handleRestore', |
| | | font: '还原', |
| | | type: 'text', |
| | | method: 'handleRestore', |
| | | disabFun: (row, index) => { |
| | | return row.state != 0 || JSON.parse(localStorage.getItem("user")).name != row.writeUserName |
| | | } |
| | | }, |
| | | { |
| | | id: 'sendBackTask', |
| | | font: '退回任务', |
| | | type: 'text', |
| | | method: 'sendBackTask', |
| | | disabFun: (row, index) => { |
| | | return row.state != 0 || JSON.parse(localStorage.getItem("user")).name != row.writeUserName |
| | | } |
| | | }, |
| | | { |
| | | id: 'handle', |
| | | font: '提交', |
| | | type: 'text', |
| | | method: 'handle', |
| | | disabFun: (row, index) => { |
| | | return row.state != 0 || JSON.parse(localStorage.getItem("user")).name != row.writeUserName |
| | | } |
| | | }, |
| | | { |
| | | id: 'handleIssued', |
| | | font: '审核', |
| | | type: 'text', |
| | | method: 'handleIssued', |
| | | disabFun: (row, index) => { |
| | | return row.state == null || row.state == 0 || row.isExamine == 1 || JSON.parse(localStorage.getItem("user")).name != row.examineUser |
| | | } |
| | | }, { |
| | | id: 'handleApprove', |
| | | font: '批准', |
| | | type: 'text', |
| | | method: 'handleApprove', |
| | | disabFun: (row, index) => { |
| | | return row.state == null || row.state == 0 || row.isExamine == 0 || row.isExamine == null || row.isRatify == 1 || JSON.parse(localStorage.getItem("user")).name != row.ratifyUser |
| | | } |
| | | }, |
| | | { |
| | | id: '', |
| | | font: '原始记录', |
| | | type: 'text', |
| | | method: 'viewInspectInfo', |
| | | }, |
| | | { |
| | | id: '', |
| | | font: '附件上传', |
| | | type: 'text', |
| | | method: 'handleFileLook', |
| | | } |
| | | ], |
| | | linkEvent: { |
| | | code: { |
| | | method: 'selectAllByOne' |
| | | } |
| | | }, |
| | | tagField: { |
| | | isRatify: { |
| | | select: [{ |
| | | value: 0, |
| | | type: 'danger', |
| | | label: '不批准' |
| | | }, { |
| | | value: 1, |
| | | type: 'success', |
| | | label: '批准' |
| | | }] |
| | | }, |
| | | isExamine: { |
| | | select: [{ |
| | | value: 0, |
| | | type: 'danger', |
| | | label: '不通过' |
| | | }, { |
| | | value: 1, |
| | | type: 'success', |
| | | label: '通过' |
| | | }] |
| | | }, |
| | | state: { |
| | | select: [{ |
| | | value: 0, |
| | | type: 'danger', |
| | | label: '待提交' |
| | | }, { |
| | | value: 1, |
| | | type: 'success', |
| | | label: '已提交' |
| | | }] |
| | | }, |
| | | typeSource: { |
| | | select: [{ |
| | | value: 0, |
| | | label: '成品下单', |
| | | type: 'info' |
| | | },{ |
| | | value: 1, |
| | | label: '原材料下单', |
| | | type: 'info' |
| | | }] |
| | | }, |
| | | queryStatus: { |
| | | select: [{ |
| | | value: 0, |
| | | label: '待提交', |
| | | type: 'info' |
| | | },{ |
| | | value: 1, |
| | | label: '待审核', |
| | | type: 'info' |
| | | },{ |
| | | value: 2, |
| | | label: '待批准', |
| | | type: 'info' |
| | | }] |
| | | }, |
| | | orderType: { |
| | | select: [{ |
| | | value: 'Customer-ordered test', |
| | | label: '委托试验', |
| | | type: 'success', |
| | | effect: 'plain' |
| | | },{ |
| | | value: '抽检', |
| | | label: '抽检', |
| | | type: '', |
| | | effect: 'plain' |
| | | },{ |
| | | value: '进厂检验', |
| | | label: '进厂检验', |
| | | type: 'info', |
| | | effect: 'plain' |
| | | },{ |
| | | value: 'Quarterly inspection', |
| | | label: '季度检验', |
| | | type: 'warning', |
| | | effect: 'plain' |
| | | }] |
| | | } |
| | | }, |
| | | selectField: {}, |
| | | requiredAdd: [], |
| | | needSort: ['createTime', 'state', 'writeTime', 'isExamine', 'examineTime', 'ratifyTime'], |
| | | requiredUp: [] |
| | | entity: { |
| | | queryStatus: null, |
| | | code: null, |
| | | typeSource: null, |
| | | }, |
| | | page: { |
| | | current: 1, |
| | | size: 20, |
| | | total: 0 |
| | | }, |
| | | total: null, |
| | | entityCopy: {}, |
| | | upIndex: 0, |
| | | statusList: [], |
| | | claimVisible: false, |
| | |
| | | sonLaboratory: '', // 试验室 |
| | | filesDialogVisible: false, |
| | | filesLookInfo: {}, |
| | | fileComponentData: { |
| | | entity: { |
| | | insOrderId:'' |
| | | }, |
| | | isIndex: true, |
| | | showSelect: false, |
| | | select: false, |
| | | sort: false, |
| | | init:false, |
| | | do: [ |
| | | { |
| | | id: 'parent', |
| | | font: '下载', |
| | | type: 'text', |
| | | method: 'handleDown' |
| | | },{ |
| | | id: 'delete', |
| | | font: '删除', |
| | | type: 'text', |
| | | method: 'doDiy', |
| | | tableDataFile: [], |
| | | tableLoadingFile: false, |
| | | columnFile: [ |
| | | { |
| | | dataType: 'tag', |
| | | label: '类型', |
| | | prop: 'type', |
| | | formatData: (params) => { |
| | | if (params == 1) { |
| | | return '图片' |
| | | } else if (params == 2) { |
| | | return '文件' |
| | | } else { |
| | | return '' |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 1) { |
| | | return 'success' |
| | | } else if (params == 2) { |
| | | return 'warning' |
| | | } else { |
| | | return '' |
| | | } |
| | | } |
| | | ], |
| | | isPage: false, |
| | | linkEvent: {}, |
| | | tagField: { |
| | | type:{ |
| | | select:[ |
| | | { |
| | | value: 1, |
| | | label: '图片' |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: '文件' |
| | | }, |
| | | { label: '附件名称', prop: 'fileName' }, |
| | | { label: '上传人', prop: 'name' }, |
| | | { label: '上传时间', prop: 'createTime' }, |
| | | { |
| | | dataType: 'action', |
| | | fixed: 'right', |
| | | label: '操作', |
| | | width: '170px', |
| | | operation: [ |
| | | { |
| | | name: '下载', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleDown(row); |
| | | } |
| | | ] |
| | | } |
| | | }, |
| | | currentId: '', |
| | | selectField: {}, |
| | | requiredAdd: [], |
| | | requiredUp: [] |
| | | }, |
| | | { |
| | | name: '删除', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.delete(row); |
| | | } |
| | | }, |
| | | ] |
| | | } |
| | | ], |
| | | pageFile: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | isCopper: null, |
| | | tableLoading: false, |
| | | valueTableData: [], |
| | | userName: '' |
| | | column: [ |
| | | { |
| | | label: "报告编号", |
| | | prop: "code", |
| | | width: "160px", |
| | | dataType: "link", |
| | | linkMethod: "selectAllByOne", |
| | | }, |
| | | { |
| | | label: "下单类别", |
| | | prop: "typeSource", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == 0) { |
| | | return "成品下单"; |
| | | } else { |
| | | return "原材料下单"; |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | label: "检验类型", |
| | | prop: "orderType", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | return this.orderTypeList.find((m) => m.value == params).label; |
| | | }, |
| | | formatType: (params) => { |
| | | return this.orderTypeList.find((m) => m.value == params).type; |
| | | }, |
| | | }, |
| | | { label: "创建时间", prop: "createTime" }, |
| | | { label: "提交人", prop: "writeUserName" }, |
| | | { label: "提交时间", prop: "writeTime" }, |
| | | { |
| | | label: "提交状态", |
| | | prop: "state", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == 0) { |
| | | return "待提交"; |
| | | } else { |
| | | return "已提交"; |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 0) { |
| | | return "danger"; |
| | | } else { |
| | | return "success"; |
| | | } |
| | | }, |
| | | }, |
| | | { label: "审核人", prop: "examineUser" }, |
| | | { label: "审核时间", prop: "examineTime" }, |
| | | { |
| | | label: "审核状态", |
| | | prop: "isExamine", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == 0) { |
| | | return "不通过"; |
| | | } else { |
| | | return "通过"; |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 0) { |
| | | return "danger"; |
| | | } else { |
| | | return "success"; |
| | | } |
| | | }, |
| | | }, |
| | | { label: "审核备注", prop: "examineTell" }, |
| | | { label: "批准人", prop: "ratifyUser" }, |
| | | { label: "批准时间", prop: "ratifyTime" }, |
| | | { |
| | | label: "批准状态", |
| | | prop: "isRatify", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == 0) { |
| | | return "不批准"; |
| | | } else { |
| | | return "批准"; |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 0) { |
| | | return "danger"; |
| | | } else { |
| | | return "success"; |
| | | } |
| | | }, |
| | | }, |
| | | { label: "批准备注", prop: "ratifyTell" }, |
| | | { |
| | | fixed: "right", |
| | | dataType: "slot", |
| | | slot: "action", |
| | | width: '360px', |
| | | label: "操作" |
| | | } |
| | | ], |
| | | userName: '', |
| | | } |
| | | }, |
| | | computed: { |
| | | headers() { |
| | | return { |
| | | 'token': sessionStorage.getItem('token') |
| | | } |
| | | }, |
| | | ...mapGetters(["nickName", "userId"]), |
| | | action() { |
| | | return this.javaApi + this.$api.insReport.upAll |
| | | return this.javaApi + '/insReport/upAll' |
| | | }, |
| | | fileAction() { |
| | | return this.javaApi + this.$api.insOrderPlan.uploadFile |
| | | return this.javaApi + '/unqualifiedHandler/uploadFileByUnqualified' |
| | | }, |
| | | fileAction1() { |
| | | return this.javaApi + this.$api.insReport.inReport |
| | | return this.javaApi + '/insReport/inReport' |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.entityCopy = this.HaveJson(this.componentData.entity) |
| | | this.userName = JSON.parse(localStorage.getItem("user")).name |
| | | this.getPower() |
| | | this.refreshTable() |
| | | }, |
| | | methods: { |
| | | refreshTable() { |
| | | this.tableLoading = true |
| | | pageInsReport({ |
| | | ...this.page,...this.entity |
| | | }).then(res => { |
| | | this.tableLoading = false |
| | | this.page.total = res.data.body.total |
| | | this.valueTableData = res.data.body.records |
| | | }) |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.refreshTable(); |
| | | }, |
| | | refresh() { |
| | | this.resetForm('entity') |
| | | this.refreshTable(); |
| | | }, |
| | | handleChange(arr){ |
| | | this.mutiList = arr |
| | | }, |
| | |
| | | if(row.userName){ |
| | | inspectorList = row.userName.split(',') |
| | | } |
| | | let user = JSON.parse(localStorage.getItem('user')) |
| | | if(user){ |
| | | inspectorList.push(user.name) |
| | | } |
| | | this.inspectorList = inspectorList |
| | | this.state = 3; |
| | | this.typeSource = row.typeSource |
| | | this.orderId = row.insOrderId |
| | | this.sonLaboratory = row.sonLaboratory |
| | | inspectorList.push(this.nickName) |
| | | this.$router.push({ |
| | | path: "/inspectionTask/inspection", |
| | | query: { |
| | | sonLaboratory: row.sonLaboratory, |
| | | state: 3, |
| | | typeSource: row.typeSource, |
| | | orderId: row.insOrderId, |
| | | inspectorList: inspectorList, |
| | | }, |
| | | }) |
| | | }, |
| | | goback() { |
| | | this.state = 0 |
| | | this.refreshTable('page') |
| | | }, |
| | | // 打开查看附件弹框 |
| | | handleFileLook (row) { |
| | | this.filesLookInfo = row |
| | | this.filesDialogVisible = true |
| | | this.fileComponentData.entity.insOrderId = row.insOrderId |
| | | this.$nextTick(() => { |
| | | this.$refs['fileList'].selectList() |
| | | this.getFileList() |
| | | }, |
| | | // 查询附件查看列表回调 |
| | | getFileList() { |
| | | this.tableLoadingFile = true |
| | | getFileList({insOrderId: this.filesLookInfo.insOrderId}).then(res => { |
| | | this.tableLoadingFile = false |
| | | if (res.code === 200) { |
| | | this.tableDataFile = res.data.records |
| | | this.pageFile.total = res.data.total |
| | | } |
| | | }).catch(err => { |
| | | this.tableLoadingFile = false |
| | | }) |
| | | }, |
| | | paginationFile(page) { |
| | | this.pageFile.size = page.limit |
| | | this.getFileList() |
| | | }, |
| | | closeFilesLook () { |
| | | this.filesDialogVisible = false |
| | |
| | | this.upLoading = false; |
| | | if (response.code == 200) { |
| | | this.$message.success('上传成功'); |
| | | this.$refs.fileList.selectList() |
| | | this.getFileList() |
| | | } |
| | | }, |
| | | handleSuccessUp1(response, ) { |
| | |
| | | this.$message.success('上传成功'); |
| | | } |
| | | }, |
| | | // 下载附件的文件 |
| | | handleDown(row){ |
| | | this.$axios.post(this.$api.insOrderPlan.downFile, { |
| | | downFile({ |
| | | id: row.id, |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | |
| | | |
| | | }) |
| | | }, |
| | | // 刷新页面 |
| | | refreshView () { |
| | | this.InspectionKey++ |
| | | // 删除附件文件 |
| | | delete(row) { |
| | | this.$confirm('是否删除当前数据?', "警告", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }).then(() => { |
| | | delfile({ id: row.id }).then(res => { |
| | | if (res.code === 500) { |
| | | return |
| | | } |
| | | this.$message.success('删除成功') |
| | | this.getList() |
| | | }).catch(e => { |
| | | this.$message.error('删除失败') |
| | | }) |
| | | }).catch(() => { }) |
| | | }, |
| | | // 查看产业链信息 |
| | | openInfoDialog (row) { |
| | |
| | | } |
| | | let str = this.mutiList.map(m=>m.id).join(',') |
| | | this.outLoading = true |
| | | this.$axios.get(this.$api.insReport.downAll+'?ids='+str).then(res => { |
| | | downAll({ids: str}).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('导出成功') |
| | | // const blob = new Blob([res],{ type: 'application/octet-stream' }); |
| | |
| | | this.$message.error('上传失败') |
| | | this.$refs.upload1.clearFiles() |
| | | }, |
| | | refreshTable(e) { |
| | | this.tableLoading = false |
| | | this.$axios.post(this.$api.insReport.pageInsReport, { |
| | | page: this.page, |
| | | entity: this.componentData.entity |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) { |
| | | return |
| | | } |
| | | this.total = res.data.body.total |
| | | this.valueTableData = res.data.body.records |
| | | }) |
| | | }, |
| | | handleSizeChange(val) { |
| | | this.page.size = val |
| | | this.refreshTable(); |
| | | }, |
| | | handleCurrentChange(val) { |
| | | this.page.current = val |
| | | this.refreshTable(); |
| | | }, |
| | | refresh() { |
| | | this.componentData.entity = this.HaveJson(this.entityCopy) |
| | | this.refreshTable(); |
| | | }, |
| | | async handleWeave(row) { |
| | | let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS |
| | | fileName = fileName.replace('/word/','') |
| | | const userName = JSON.parse(localStorage.getItem("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'); |
| | | }, |
| | | // 权限分配 |
| | | getPower(radio) { |
| | | let power = JSON.parse(sessionStorage.getItem('power')) |
| | | let edit = false |
| | | let up = false |
| | | let res = false |
| | | let sub = false |
| | | let issued = true |
| | | let approve = true |
| | | for (var i = 0; i < power.length; i++) { |
| | | if (power[i].menuMethod == 'upReportFile') { |
| | | edit = true |
| | | } |
| | | if (power[i].menuMethod == 'inReport') { |
| | | up = true |
| | | } |
| | | if (power[i].menuMethod == 'upReportUrl') { |
| | | res = true |
| | | } |
| | | if (power[i].menuMethod == 'writeReport') { |
| | | sub = true |
| | | } |
| | | if (power[i].menuMethod == 'ratifyReport') { |
| | | approve = true |
| | | } |
| | | if (power[i].menuMethod == 'examineReport') { |
| | | issued = true |
| | | } |
| | | } |
| | | if (!approve) { |
| | | this.componentData.do.splice(6, 1) |
| | | } |
| | | if (!issued) { |
| | | this.componentData.do.splice(5, 1) |
| | | } |
| | | if (!sub) { |
| | | this.componentData.do.splice(4, 1) |
| | | } |
| | | if (!res) { |
| | | this.componentData.do.splice(3, 1) |
| | | } |
| | | if (!up) { |
| | | this.componentData.do.splice(2, 1) |
| | | } |
| | | if (!edit) { |
| | | this.componentData.do.splice(0, 1) |
| | | } |
| | | }, |
| | | confirmClaim() { |
| | | // console.log(this.$refs.Word.getValue()) |
| | | }, |
| | | playOrder(num) { |
| | | this.activeFace = num |
| | | }, |
| | | async selectAllByOne(row) { |
| | | selectAllByOne(row) { |
| | | this.isCopper = row.isCopper |
| | | this.customsInspection = row |
| | | this.activeFace = 2; |
| | | this.examine = 1; |
| | | this.isReport = 1 |
| | | this.currentId = parseInt(row.insOrderId) |
| | | switch (row.isCopper) { |
| | | case 0: |
| | | // 原材料 |
| | | this.$router.push({ |
| | | path: "/materialOrder/customsInspection", query: { |
| | | customsInspection: row, |
| | | active: this.activeFace, |
| | | currentId: row.insOrderId, |
| | | isReport: this.isReport |
| | | } |
| | | }); |
| | | break; |
| | | case null: |
| | | // 成品 |
| | | this.$router.push({ |
| | | path: "/productOrder/add", query: { |
| | | examine: this.examine, |
| | | active: this.activeFace, |
| | | currentId: row.insOrderId |
| | | } |
| | | }); |
| | | break; |
| | | case 1: |
| | | // 铜材 |
| | | this.$router.push({ |
| | | path: "/materialOrder/copperOrder", query: { |
| | | active: this.activeFace, |
| | | currentId: row.insOrderId |
| | | } |
| | | }); |
| | | break; |
| | | } |
| | | }, |
| | | download(row) { |
| | | let url = row.urlS ? row.urlS : row.url; |
| | |
| | | }, |
| | | // 还原操作 |
| | | handleRestore(row) { |
| | | this.$axios.post(this.$api.insReport.upReportUrl, { |
| | | upReportUrl({ |
| | | id: row.id |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | |
| | | fileType = "pdf" |
| | | } |
| | | fileName = fileName.replace('/word/','') |
| | | const userName = JSON.parse(localStorage.getItem("user")).name; |
| | | const userName = this.nickName |
| | | this.option = { |
| | | url: this.javaApi + "/word/" + fileName, |
| | | isEdit: false, |
| | |
| | | } |
| | | this.issuedVisible = true; |
| | | }, |
| | | // 查看pdf报告 |
| | | viewIssuedPdf(row) { |
| | | this.currentInfo = row; |
| | | let url = row.tempUrlPdf |
| | | if(url){ |
| | | url = url.split('.')[0]+'.pdf' |
| | | const link = document.createElement('a'); |
| | | link.href = this.javaApi + url; |
| | | link.target = '_blank'; |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | } |
| | | }, |
| | | // 查看报告 |
| | | viewIssued(row) { |
| | | this.currentInfo = row; |
| | |
| | | fileType = "pdf" |
| | | } |
| | | fileName = fileName.replace('/word/','') |
| | | const userName = JSON.parse(localStorage.getItem("user")).name; |
| | | const userName = this.nickName |
| | | this.option = { |
| | | url: this.javaApi + "/word/" + fileName, |
| | | isEdit: false, |
| | |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.upLoad = true |
| | | this.$axios.post(this.$api.insReport.sendBackTask+'?id='+row.id).then(res => { |
| | | sendBackTask({id: row.id}).then(res => { |
| | | this.upLoad = false |
| | | if (res.code === 201) { |
| | | return |
| | | } |
| | | this.$message.success('退回成功!') |
| | | this.refreshTable('page') |
| | | }).catch(err => { |
| | |
| | | return |
| | | } |
| | | this.loadingIssued = true; |
| | | this.$axios.post(this.$api.insReport.examineReport, { |
| | | examineReport({ |
| | | id: this.currentInfo.id, |
| | | userId: this.approver, |
| | | isExamine: 1 |
| | | }).then(res => { |
| | | this.loadingIssued = false; |
| | | if (res.code === 201) { |
| | | return |
| | | } |
| | | this.$message.success('提交成功') |
| | | this.refreshTable('page') |
| | | this.currentInfo = null; |
| | |
| | | }, |
| | | // 获取人员列表 |
| | | getAuthorizedPerson() { |
| | | this.$axios.get(this.$api.user.selectQualityUserList).then(res => { |
| | | let data = [] |
| | | let userName = JSON.parse(localStorage.getItem("user")).name; |
| | | res.data.forEach(a => { |
| | | // if(a.name !== userName) { |
| | | selectUserCondition({ type: 0 }).then((res) => { |
| | | let data = []; |
| | | res.data.forEach((a) => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id |
| | | }) |
| | | // } |
| | | }) |
| | | this.approverList = data |
| | | value: a.id, |
| | | }); |
| | | }); |
| | | this.approverList = data; |
| | | }) |
| | | }, |
| | | // 批准按钮 |
| | |
| | | fileType = "pdf" |
| | | } |
| | | fileName = fileName.replace('/word/','') |
| | | const userName = JSON.parse(localStorage.getItem("user")).name; |
| | | const userName = this.nickName |
| | | this.option = { |
| | | url: this.javaApi + "/word/" + fileName, |
| | | isEdit: false, |
| | |
| | | // 批准通过 |
| | | subApprove() { |
| | | this.loadingApprove = true; |
| | | this.$axios.post(this.$api.insReport.ratifyReport, { |
| | | 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; |
| | |
| | | // 提交审核人操作 |
| | | handleSubmit(row) { |
| | | this.loadingVerify = true |
| | | this.$axios.post(this.$api.insReport.writeReport, { |
| | | writeReport({ |
| | | id: this.currentInfo.id, |
| | | userId: this.verifyUser, |
| | | }).then(res => { |
| | | this.loadingVerify = false |
| | | if (res.code === 201) { |
| | | return |
| | | } |
| | | this.addVerifyDia = false |
| | | this.$message.success('提交成功') |
| | | this.refreshTable('page') |
| | |
| | | return this.$message.error('请输入原因') |
| | | } |
| | | this.loadingIssuedReason = true; |
| | | this.$axios.post(this.$api.insReport.examineReport, { |
| | | 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; |
| | |
| | | return this.$message.error('请输入原因') |
| | | } |
| | | this.loadingApproveReason = true |
| | | this.$axios.post(this.$api.insReport.ratifyReport, { |
| | | ratifyReport({ |
| | | id: this.currentInfo.id, |
| | | isRatify: 0, |
| | | examineTell: this.reason |
| | | }).then(res => { |
| | | this.loadingApproveReason = false |
| | | if (res.code === 201) { |
| | | return |
| | | } |
| | | this.$message.success('操作成功') |
| | | this.refreshTable('page') |
| | | this.currentInfo = null; |