From 96f5e06ffbc743dae63db27064140832d752a3f9 Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期一, 24 二月 2025 19:48:58 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- src/views/business/reportPreparation/index.vue | 953 +++++++++++++++++++++++------------------------------------ 1 files changed, 374 insertions(+), 579 deletions(-) diff --git a/src/views/business/reportPreparation/index.vue b/src/views/business/reportPreparation/index.vue index 3d9209a..60a78b9 100644 --- a/src/views/business/reportPreparation/index.vue +++ b/src/views/business/reportPreparation/index.vue @@ -1,138 +1,67 @@ <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>瀛e害妫�楠�</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"> @@ -229,17 +158,8 @@ <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"> @@ -251,33 +171,22 @@ <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> @@ -286,206 +195,33 @@ 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: '瀛e害妫�楠�', - 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, @@ -542,78 +278,214 @@ 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 }, @@ -624,27 +496,40 @@ 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 @@ -653,7 +538,7 @@ this.upLoading = false; if (response.code == 200) { this.$message.success('涓婁紶鎴愬姛'); - this.$refs.fileList.selectList() + this.getFileList() } }, handleSuccessUp1(response, ) { @@ -661,8 +546,9 @@ this.$message.success('涓婁紶鎴愬姛'); } }, + // 涓嬭浇闄勪欢鐨勬枃浠� handleDown(row){ - this.$axios.post(this.$api.insOrderPlan.downFile, { + downFile({ id: row.id, }).then(res => { if (res.code === 200) { @@ -682,9 +568,23 @@ }) }, - // 鍒锋柊椤甸潰 - 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) { @@ -700,7 +600,7 @@ } 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' }); @@ -765,118 +665,48 @@ 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; - //鍙傝�僾abOnlyOffice缁勪欢鍙傛暟閰嶇疆 - 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; @@ -888,7 +718,7 @@ }, // 杩樺師鎿嶄綔 handleRestore(row) { - this.$axios.post(this.$api.insReport.upReportUrl, { + upReportUrl({ id: row.id }).then(res => { if (res.code === 200) { @@ -907,7 +737,7 @@ 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, @@ -921,19 +751,6 @@ } 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; @@ -944,7 +761,7 @@ 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, @@ -966,11 +783,8 @@ 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 => { @@ -990,15 +804,12 @@ 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; @@ -1020,18 +831,15 @@ }, // 鑾峰彇浜哄憳鍒楄〃 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; }) }, // 鎵瑰噯鎸夐挳 @@ -1044,7 +852,7 @@ 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, @@ -1061,15 +869,11 @@ // 鎵瑰噯閫氳繃 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; @@ -1084,14 +888,11 @@ // 鎻愪氦瀹℃牳浜烘搷浣� 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') @@ -1110,15 +911,12 @@ 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; @@ -1136,15 +934,12 @@ 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; -- Gitblit v1.9.3