From 6ef9e5189ac1888b8c4c504d5c5d3f431807ff56 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期六, 15 三月 2025 11:57:40 +0800
Subject: [PATCH] 修改电路试验单位
---
src/components/do/a6-device/check-and-accept.vue | 922 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 920 insertions(+), 2 deletions(-)
diff --git a/src/components/do/a6-device/check-and-accept.vue b/src/components/do/a6-device/check-and-accept.vue
index 8882f55..d8f5350 100644
--- a/src/components/do/a6-device/check-and-accept.vue
+++ b/src/components/do/a6-device/check-and-accept.vue
@@ -1,13 +1,931 @@
+<!-- 璁惧楠屾敹 -->
<template>
- <div>璁惧楠屾敹</div>
+ <div>
+ <div class="search">
+ <div class="search_thing">
+ <div class="search_label">娴佺▼缂栧彿锛�</div>
+ <div class="search_input"><el-input v-model="search.processNumber" clearable placeholder="璇疯緭鍏�" size="small"
+ @keyup.enter.native="getDeviceAList(clickNodeVal.value)"></el-input></div>
+ <el-button size="small" style="margin-left: 10px" @click="resetSearch">閲� 缃�</el-button>
+ <el-button size="small" type="primary" @click="getDeviceAList(clickNodeVal.value)">鏌� 璇�</el-button>
+ </div>
+ <div class="search_thing">
+ <el-button size="small" type="primary" @click="dialogVisible = true">娣诲姞楠屾敹</el-button>
+ <el-button :loading="outLoading" size="small" type="primary" @click="handleDown">瀵煎嚭</el-button>
+ </div>
+ </div>
+ <div class="tables">
+ <el-table ref="table" :data="tableDataAlist" height="100%">
+ <el-table-column label="搴忓彿" type="index" width="60">
+ <template v-slot="scope">
+ <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="娴佺▼缂栧彿" min-width="150" prop="processNumber" show-overflow-tooltip/>
+ <el-table-column label="璁惧鍚嶇О" min-width="140" prop="deviceName" show-overflow-tooltip/>
+ <el-table-column label="绠$悊缂栧彿" min-width="140" prop="managementNumber" show-overflow-tooltip/>
+ <el-table-column label="搴忓垪鍙�" min-width="80" prop="serialNumber" />
+ <el-table-column label="鎻愪氦鑰�" min-width="100" prop="submitUser" />
+ <el-table-column label="鎻愪氦鏃ユ湡" min-width="150" prop="createTime" />
+ <el-table-column label="褰撳墠鐘舵��" min-width="140" prop="currentState" />
+ <el-table-column label="褰撳墠璐熻矗浜�" min-width="120" prop="currentResponsible" />
+ <el-table-column fixed="right" label="鎿嶄綔" min-width="180">
+ <template #default="{ row }">
+ <el-button size="small" type="text" @click="handleAttachmentClick(row)">闄勪欢</el-button>
+ <el-button size="small" type="text" @click="handleViewClick(row)">鏌ョ湅</el-button>
+ <el-button size="small" type="text" @click="handleDownOne(row)">瀵煎嚭</el-button>
+ <el-button size="small" type="text" @click="handleDeleteClick(row)">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]"
+ :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange"
+ @current-change="handleCurrentChange">
+ </el-pagination>
+ </div>
+ <!-- 娣诲姞璁惧鏁呴殰璁板綍 -->
+ <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible" title="浠櫒璁惧楠屾敹璁板綍"
+ width="60%" @open="openRecordAcceptance">
+ <el-steps :active="currentStep" finish-status="success">
+ <el-step v-for="(v, i) in steps" :key="i" :title="v" style="cursor:pointer"
+ @click.native="choiceStep(i)"></el-step>
+ </el-steps>
+ <el-form ref="form" :model="form" :rules="rules" label-width="130px">
+ <div v-show="currentStepClick === 0">
+ <el-card style="margin-top: 1em; height: 56vh; overflow-y: scroll;">
+ <!-- 鏂板璁惧浜嬭褰曞崱鐗� -->
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="娴佺▼缂栧彿锛�" prop="processNumber">
+ <el-input v-model="form.processNumber" disabled size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璁惧鍚嶇О锛�">
+ <el-input v-model="form.deviceName" disabled size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鐢熶骇鍘傚锛�">
+ <el-input v-model="form.manufacturer" disabled size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璁惧鍨嬪彿锛�">
+ <el-input v-model="form.specificationModel" disabled size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="绠$悊缂栧彿锛�">
+ <el-input v-model="form.managementNumber" disabled size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :rules="[{ required: currentStep === 0, message: '璇疯緭鍏ュ簭鍒楀彿', trigger: 'blur' }]" label="搴忓垪鍙凤細"
+ prop="serialNumber">
+ <el-input v-model="form.serialNumber" :disabled="currentStep !== 0" size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :rules="[{ required: currentStep === 0, message: '璇疯緭鍏ヨ澶囩被鍒�', trigger: 'change' }]" label="璁惧绫诲埆锛�"
+ prop="deviceClass">
+ <el-radio-group v-model="form.deviceClass" :disabled="currentStep !== 0">
+ <el-radio label="0precision">绮惧瘑鍨嬭澶�</el-radio>
+ <el-radio label="1conventional">甯歌璁惧</el-radio><br />
+ <el-radio label="2auxiliary_class">杈呭姪绫昏澶�</el-radio>
+ <el-radio label="4environmental">鐜绫昏澶�</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item :rules="[{ required: currentStep === 0, message: '璇疯緭鍏ュ紑绠卞墠妫�鏌ュ鍖呰鏈夋棤鐮存崯', trigger: 'blur' }]" label="寮�绠卞墠妫�鏌ュ鍖呰鏈夋棤鐮存崯锛�" label-width="220px"
+ prop="checkOuterPackaging">
+ <el-input v-model="form.checkOuterPackaging" :disabled="currentStep !== 0" size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="鐩稿叧闄勪欢锛�" prop="fileName">
+ <el-input v-model="form.fileName" :style="`width: ${currentStep == 0 ? '88%' : '100%'};`" disabled
+ size="small">
+ <el-button v-if="currentStep === 0" slot="append" icon="el-icon-delete-solid"
+ @click="deleteFile"></el-button>
+ </el-input>
+ <el-upload ref="upload" :action="action" :on-success="onSuccess" :show-file-list="false"
+ style="float: right;">
+ <el-button v-if="currentStep === 0" slot="trigger" class="uploadFile" size="small"
+ style="position: relative;top: -4px" type="primary">闄勪欢涓婁紶</el-button>
+ </el-upload>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item :rules="[{ required: currentStep === 0, message: '璇烽�夋嫨涓嬬幆鑺傝矗浠讳汉', trigger: 'change' }]" label="涓嬬幆鑺傝矗浠讳汉锛�"
+ prop="submitNextPesponsible">
+ <el-select v-model="form.submitNextPesponsible" :disabled="currentStep !== 0" clearable filterable
+ placeholder="璇烽�夋嫨涓嬬幆鑺傝礋璐d汉" size="small" style="width: 50%;">
+ <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.name">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :rules="[{ required: currentStep === 0, message: '璇疯緭鍏ヨ澶囧紑绠遍獙鏀剁粨璁�', trigger: 'change' }]" label="璁惧寮�绠遍獙鏀剁粨璁猴細" label-width="150px"
+ prop="unpackingAcceptanceConclusion">
+ <el-radio-group v-model="form.unpackingAcceptanceConclusion" :disabled="currentStep !== 0">
+ <el-radio :label="'0qualified'">鍚堟牸</el-radio>
+ <el-radio :label="'1unqualified'">涓嶅悎鏍硷紝缂哄皯澶囦欢渚涘簲鍟嗚ˉ鍙�</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <div style="margin-bottom: 20px; width: 100%;">
+ <label>澶囦欢纭锛�</label>
+ <el-button v-if="currentStep === 0" size="small" style="float: right;"
+ type="primary" @click="addTableRow('sparePartsConfirmationList')">澧炲姞琛�</el-button>
+ </div>
+ <el-table :data="form.sparePartsConfirmationList" border stripe style="width: 100%; min-height: 30vh">
+ <el-table-column label="搴忓彿" prop="搴忓彿" type="index" width="80" />
+ <el-table-column label="鍚嶇О" min-width="120" prop="name">
+ <template v-slot="scope">
+ <el-input v-if="currentStep === 0" v-model="scope.row.name" size="small"></el-input>
+ <label v-else>{{ scope.row.name }}</label>
+ </template>
+ </el-table-column>
+ <el-table-column label="鏁伴噺" min-width="120" prop="number">
+ <template v-slot="scope">
+ <el-input v-if="currentStep === 0" v-model="scope.row.number" size="small"></el-input>
+ <label v-else>{{ scope.row.number }}</label>
+ </template>
+ </el-table-column>
+ <el-table-column label="澶囨敞" min-width="120" prop="note">
+ <template v-slot="scope">
+ <el-input v-if="currentStep === 0" v-model="scope.row.note" size="small"></el-input>
+ <label v-else>{{ scope.row.note }}</label>
+ </template>
+ </el-table-column>
+ <el-table-column v-if="currentStep === 0" fixed="right" label="鎿嶄綔" width="90">
+ <template slot-scope="scope">
+ <el-button icon="el-icon-delete" type="text"
+ @click="deleteRow(scope.$index, scope.row, 'sparePartsConfirmationList')">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-col>
+ <el-col :span="24">
+ <div style="margin: 20px 0; width: 100%;">
+ <label>鏂囦欢绫荤‘璁わ細</label>
+ <el-button v-if="currentStep === 0" size="small" style="float: right;"
+ type="primary" @click="addTableRow('fileClassConfirmationList')">澧炲姞琛�</el-button>
+ </div>
+ <el-table :data="form.fileClassConfirmationList" border stripe style="width: 100%; min-height: 30vh">
+ <el-table-column label="搴忓彿" prop="搴忓彿" type="index" width="80" />
+ <el-table-column label="搴旀湁鍐屾暟" min-width="120" prop="expectedCopies">
+ <template v-slot="scope">
+ <el-input v-if="currentStep === 0" v-model="scope.row.expectedCopies" size="small"></el-input>
+ <label v-else>{{ scope.row.expectedCopies }}</label>
+ </template>
+ </el-table-column>
+ <el-table-column label="瀹為檯鏀跺埌鍐屾暟" min-width="120" prop="actualCopies">
+ <template v-slot="scope">
+ <el-input v-if="currentStep === 0" v-model="scope.row.actualCopies" size="small"></el-input>
+ <label v-else>{{ scope.row.actualCopies }}</label>
+ </template>
+ </el-table-column>
+ <el-table-column v-if="currentStep === 0" fixed="right" label="鎿嶄綔" width="90">
+ <template v-slot="scope">
+ <el-button icon="el-icon-delete" type="text"
+ @click="deleteRow(scope.$index, scope.row, 'fileClassConfirmationList')">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-col>
+ <el-col :span="24" style="margin-top: 10px;">
+ <el-form-item label="澶囨敞锛�" label-width="90px">
+ <el-input v-model="form.submitRemarks" :disabled="currentStep !== 0" size="small"
+ type="textarea"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-card>
+ <el-row style="margin-top: 1em;">
+ <el-col :span="4">
+ 鎿嶄綔浜猴細{{ form.submitOperatingPersonnel }}
+ </el-col>
+ <el-col :span="6">
+ 鏃ユ湡锛歿{ form.submitDate }}
+ </el-col>
+ </el-row>
+ </div>
+ <div v-show="currentStepClick === 1">
+ <el-card style="margin-top: 1em; height: 56vh; overflow-y: scroll;">
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="澶嶆牳鎰忚锛�" prop="accidentDescription">
+ <el-input v-model="form.unpackingReviewOpinion" :disabled="currentStep !== 1" size="small"
+ type="textarea"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item :rules="[{ required: currentStep === 1, message: '璇疯緭鍏ヤ笅鐜妭璐d换浜�', trigger: 'change' }]" label="涓嬬幆鑺傝矗浠讳汉锛�"
+ prop="unpackingNextPesponsible">
+ <el-select v-model="form.unpackingNextPesponsible" :disabled="currentStep !== 1" clearable filterable
+ placeholder="璇烽�夋嫨涓嬬幆鑺傝礋璐d汉" size="small" style="width: 50%;">
+ <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.name">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-card>
+ <el-row style="margin-top: 1em;">
+ <el-col :span="4">
+ 鎿嶄綔浜猴細{{ form.unpackingOperatingPersonnel }}
+ </el-col>
+ <el-col :span="6">
+ 鏃ユ湡锛歿{ form.unpackingDate }}
+ </el-col>
+ </el-row>
+ </div>
+ <div v-show="currentStepClick === 2">
+ <el-card style="margin-top: 1em; height: 56vh; overflow-y: scroll;">
+ <el-row>
+ <el-col :span="24">
+ <el-form-item :rules="[{ required: currentStep === 2, message: '璇疯緭鍏ュ畨瑁呬綅缃�', trigger: 'blur' }]" label="瀹夎浣嶇疆锛�"
+ prop="installLocation">
+ <el-input v-model="form.installLocation" :disabled="currentStep !== 2" clearable placeholder="璇疯緭鍏ュ畨瑁呬綅缃�"
+ size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="澶囨敞锛�">
+ <el-input v-model="form.installRemarks" :disabled="currentStep !== 2" size="small"
+ type="textarea"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item :rules="[{ required: currentStep === 2, message: '璇疯緭鍏ヤ笅鐜妭璐d换浜�', trigger: 'blur' }]" label="涓嬬幆鑺傝矗浠讳汉锛�"
+ prop="installNextPesponsible">
+ <el-select v-model="form.installNextPesponsible" :disabled="currentStep !== 2" clearable filterable
+ placeholder="璇烽�夋嫨涓嬬幆鑺傝礋璐d汉" size="small" style="width: 50%;">
+ <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.name">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <div style="margin-bottom: 20px; width: 100%;">
+ <label>瀹夎楠屾敹璁板綍</label>
+ <el-button v-if="currentStep === 2" size="small" style="float: right;"
+ type="primary" @click="addTableRow('installationAcceptanceRecordList')">澧炲姞琛�</el-button>
+ </div>
+ <el-table :data="form.installationAcceptanceRecordList" border stripe
+ style="width: 100%; min-height: 30vh">
+ <el-table-column label="搴忓彿" prop="搴忓彿" type="index" width="80" />
+ <el-table-column label="椤圭洰" min-width="120" prop="installationProject">
+ <template v-slot="scope">
+ <el-input v-if="currentStep === 2" v-model="scope.row.installationProject"
+ size="small"></el-input>
+ <label v-else>{{ scope.row.installationProject }}</label>
+ </template>
+ </el-table-column>
+ <el-table-column label="瀹夎鎯呭喌" min-width="120" prop="installationSituation">
+ <template v-slot="scope">
+ <el-input v-if="currentStep === 2" v-model="scope.row.installationSituation"
+ size="small"></el-input>
+ <label v-else>{{ scope.row.installationSituation }}</label>
+ </template>
+ </el-table-column>
+ <el-table-column label="瀹夎瀹屾垚" min-width="120" prop="installationCompleted">
+ <template v-slot="scope">
+ <el-select v-if="currentStep === 2" v-model="scope.row.installationCompleted" placeholder="璇烽�夋嫨">
+ <el-option label="鏄�" value="0yes"></el-option>
+ <el-option label="鍚�" value="1no"></el-option>
+ </el-select>
+ <label v-else>{{ scope.row.installationCompleted === '0yes' ? '鏄�' :
+ scope.row.installationCompleted === '1no' ? '鍚�' : '' }}</label>
+ </template>
+ </el-table-column>
+ <el-table-column v-if="currentStep === 2" fixed="right" label="鎿嶄綔" width="90">
+ <template slot-scope="scope">
+ <el-button icon="el-icon-delete" type="text"
+ @click="deleteRow(scope.$index, scope.row, 'installationAcceptanceRecordList')">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-col>
+ </el-row>
+ </el-card>
+ <el-row style="margin-top: 1em;">
+ <el-col :span="4">
+ 鎿嶄綔浜猴細{{ form.installOperatingPersonnel }}
+ </el-col>
+ <el-col :span="6">
+ 鏃ユ湡锛歿{ form.installDate }}
+ </el-col>
+ </el-row>
+ </div>
+ <div v-show="currentStepClick === 3">
+ <el-card style="margin-top: 1em; height: 56vh; overflow-y: scroll;">
+ <el-row>
+ <el-col :span="24">
+ <el-form-item :rules="[{ required: currentStep === 3, message: '璇疯緭鍏ュ鍚堟剰瑙�', trigger: 'blur' }]" label="澶嶅悎鎰忚锛�"
+ prop="installationAcceptanceCompoundOpinion">
+ <el-input v-model="form.installationAcceptanceCompoundOpinion" :disabled="currentStep !== 3"
+ size="small" type="textarea"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item :rules="[{ required: currentStep === 3, message: '璇疯緭鍏ヤ笅鐜妭璐熻矗浜�', trigger: 'change' }]" label="涓嬬幆鑺傝矗浠讳汉锛�"
+ prop="installationAcceptanceNextPesponsible">
+ <el-select v-model="form.installationAcceptanceNextPesponsible" :disabled="currentStep !== 3" clearable
+ filterable placeholder="璇烽�夋嫨涓嬬幆鑺傝礋璐d汉" size="small" style="width: 50%;">
+ <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.name">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-card>
+ <el-row style="margin-top: 1em;">
+ <el-col :span="4">
+ 鎿嶄綔浜猴細{{ form.installationAcceptanceOperatingPersonnel }}
+ </el-col>
+ <el-col :span="6">
+ 鏃ユ湡锛歿{ form.installationAcceptanceDate }}
+ </el-col>
+ </el-row>
+ </div>
+ <div v-show="currentStepClick === 4">
+ <el-card style="margin-top: 1em; height: 56vh; overflow-y: scroll;">
+ <div style="margin-bottom: 20px; width: 100%;">
+ <label>楠屾敹鏍告煡璁板綍锛�</label>
+ <el-button v-if="currentStep === 4" size="small" style="float: right;"
+ type="primary" @click="addTableRow('acceptanceCheckRecordList')">澧炲姞琛�</el-button>
+ </div>
+ <el-table :data="form.acceptanceCheckRecordList" border style="width: 100%; min-height: 30vh">
+ <el-table-column label="搴忓彿" prop="sequence" width="80">
+ </el-table-column>
+ <el-table-column label="浠櫒妯″潡" min-width="120" prop="instrumentModule">
+ <template v-slot="scope">
+ <el-input v-if="currentStep === 4" v-model="scope.row.instrumentModule" size="small"></el-input>
+ <label v-else>{{ scope.row.instrumentModule }}</label>
+ </template>
+ </el-table-column>
+ <el-table-column label="鏍告煡鍙傛暟" min-width="120" prop="verificationParameter">
+ <template v-slot="scope">
+ <el-input v-if="currentStep === 4" v-model="scope.row.verificationParameter" size="small"></el-input>
+ <label v-else>{{ scope.row.verificationParameter }}</label>
+ </template>
+ </el-table-column>
+ <el-table-column label="鍙帴鏀堕檺" min-width="120" prop="acceptableLimit">
+ <template v-slot="scope">
+ <el-input v-if="currentStep === 4" v-model="scope.row.acceptableLimit" size="small"></el-input>
+ <label v-else>{{ scope.row.acceptableLimit }}</label>
+ </template>
+ </el-table-column>
+ <el-table-column label="鏍告煡缁撴灉" min-width="120" prop="verificationResult">
+ <template v-slot="scope">
+ <el-input v-if="currentStep === 4" v-model="scope.row.verificationResult" size="small"></el-input>
+ <label v-else>{{ scope.row.verificationResult }}</label>
+ </template>
+ </el-table-column>
+ <el-table-column label="鏍告煡缁撹" min-width="120" prop="verificationConclusion">
+ <template v-slot="scope">
+ <el-select v-if="currentStep === 4" v-model="scope.row.verificationConclusion" placeholder="璇烽�夋嫨">
+ <el-option label="绗﹀悎" value="0accordWith"></el-option>
+ <el-option label="涓嶇鍚�" value="1inconformity"></el-option>
+ </el-select>
+ <label v-else>{{ scope.row.verificationConclusion }}</label>
+ </template>
+ </el-table-column>
+ <el-table-column v-if="currentStep === 4" fixed="right" label="鎿嶄綔" width="90">
+ <template slot-scope="scope">
+ <el-button size="small" type="text"
+ @click="deleteRow(scope.$index, scope.row, 'acceptanceCheckRecordList')">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-form-item :rules="[{ required: currentStep === 4, message: '璇疯緭鍏ヨ澶囧紑绠遍獙鏀剁粨璁�', trigger: 'change' }]" label="璁惧寮�绠遍獙鏀剁粨璁猴細"
+ label-width="150px" prop="acceptanceCheckUnpackingConclusion">
+ <el-radio-group v-model="form.acceptanceCheckUnpackingConclusion" :disabled="currentStep !== 4">
+ <el-radio :label="'0qualified'">鍚堟牸</el-radio>
+ <el-radio :label="'1unqualified'">涓嶅悎鏍硷紝缂哄皯澶囦欢渚涘簲鍟嗚ˉ鍙�</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item :rules="[{ required: currentStep === 4, message: '璇疯緭鍏ヤ笅鐜妭璐d换浜�', trigger: 'change' }]" label="涓嬬幆鑺傝矗浠讳汉锛�"
+ prop="acceptanceCheckNextPesponsible">
+ <el-select v-model="form.acceptanceCheckNextPesponsible" :disabled="currentStep !== 4" clearable
+ filterable placeholder="璇烽�夋嫨涓嬬幆鑺傝礋璐d汉" size="small" style="width: 50%;">
+ <el-option v-for="item in responsibleOptions" :key="item.value" :label="item.label" :value="item.name">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-card>
+ <el-row style="margin-top: 1em;">
+ <el-col :span="4">
+ 鎿嶄綔浜猴細{{ form.acceptanceCheckOperatingPersonnel }}
+ </el-col>
+ <el-col :span="6">
+ 鏃ユ湡锛歿{ form.acceptanceCheckDate }}
+ </el-col>
+ </el-row>
+ </div>
+ <div v-show="currentStepClick === 5">
+ <el-card style="margin-top: 1em; height: 56vh; overflow-y: scroll;">
+ <el-row>
+ <el-col :span="24">
+ <el-form-item :rules="[{ required: currentStep === 5, message: '璇疯緭鍏ュ鏍告剰瑙�', trigger: 'blur' }]" label="瀹℃牳鎰忚锛�"
+ prop="acceptanceAuditAuditOpinion">
+ <el-input v-model="form.acceptanceAuditAuditOpinion" :disabled="currentStep !== 5" size="small"
+ type="textarea"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-card>
+ <el-row style="margin-top: 1em;">
+ <el-col :span="4">
+ 鎿嶄綔浜猴細{{ form.acceptanceAuditOperatingPersonnel }}
+ </el-col>
+ <el-col :span="6">
+ 鏃ユ湡锛歿{ form.acceptanceAuditDate }}
+ </el-col>
+ </el-row>
+ </div>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button v-if="currentStep !== 0 && currentStep !== 6" @click="submitForm('3reject')">椹冲洖</el-button>
+ <el-button v-if="currentStep === 0" @click="submitForm('2save')">淇濆瓨</el-button>
+ <el-button v-if="currentStep !== 6" type="primary" @click="submitForm('1submit')">{{ currentStep === 0 ? '鎻愪氦' :
+ '閫氳繃'
+ }}</el-button>
+ </span>
+ </el-dialog>
+ </div>
+ <!-- 鏌ュ崟缂栬緫妗� -->
</template>
<script>
-export default {
+import { dateFormat } from '../../../util/date'
+import file from '../../../util/file';
+export default {
+ props: {
+ clickNodeVal: {
+ type: Object,
+ default: () => {
+ return {};
+ }
+ }
+ },
+ data() {
+ return {
+ //浜嬫晠璁惧淇℃伅
+ tableDataAlist: [], // 鏇存敼鍙橀噺鍚嶇О
+ dialogVisible: false,
+ rules: {
+ quantity: [{ required: true, message: '璇疯緭鍏ユ暟閲�', trigger: 'blur' }],
+ },
+ currentStep: 0, // 姝ラ鏉℃樉绀虹鍑犳
+ currentStepClick: 0, // 鐐瑰嚮姝ラ鏉″彉鍖�
+ steps: ['鎻愪氦', '寮�绠遍獙鏀跺鏍�', '瀹夎楠屾敹妫�鏌�', '瀹夎楠屾敹澶嶆牳', '楠屾敹鏍告煡', '楠屾敹鏍告煡瀹℃牳'],
+ form: {
+ sparePartsConfirmationList: [], // 澶囦欢纭List
+ fileClassConfirmationList: [], // 鏂囦欢纭List
+ installationAcceptanceRecordList: [], // 瀹夎楠屾敹璁板綍
+ acceptanceCheckRecordList: [], // 楠屾敹鏍告煡璁板綍
+ fileName: '', // 鏂囦欢鍚嶇О
+ systemFileName: '', // 绯荤粺鏂囦欢鍚嶇О
+ },
+ outLoading: false,
+ responsibleOptions: [], // 涓嬬幆鑺傝礋璐d汉list
+ isUpdate: false,
+ search: {
+ size: 20,
+ current: 1,
+ total: 0,
+ processNumber: '',
+ },
+ }
+ },
+ computed: {
+ action() {
+ return this.javaApi + this.$api.personnel.saveCNASFile
+ }
+ },
+ mounted() {
+ // 鑾峰彇璁惧浜嬫晠淇℃伅
+ this.getDeviceAList(this.clickNodeVal.value);
+ window.excelClosed = this.closed
+ },
+ methods: {
+ handleSizeChange(val) {
+ this.search.size = val
+ this.getPersonnelTraining(this.clickNodeVal.value);
+ },
+ handleCurrentChange(val) {
+ this.search.current = val
+ this.getPersonnelTraining(this.clickNodeVal.value);
+ },
+ deleteFile() {
+ this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ枃浠�, 鏄惁缁х画?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ this.$axios.delete(this.$api.personnel.deleteCNASFile + "?fileName=" + this.form.systemFileName).then(res => {
+ if (res.code == 200) {
+ this.$message.success('鍒犻櫎鎴愬姛锛�')
+ }
+ })
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '宸插彇娑堝垹闄�'
+ });
+ });
+ },
+ onSuccess(response, file, fileList) {
+ if (response.code == 200) {
+ // 鍦ㄤ繚瀛樿祴鍊兼柊鏂囦欢
+ this.form.fileName = file.name
+ this.form.systemFileName = response.data
+ } else {
+ this.$message.error(response.message)
+ }
+ },
+ addTableRow(value) {
+ switch (value) {
+ // 澶囦欢纭
+ case 'sparePartsConfirmationList':
+ const obj = Object.assign({
+ name: '',
+ number: null,
+ note: ''
+ })
+ this.form.sparePartsConfirmationList.push(obj)
+ break
+ // 鏂囦欢纭List
+ case 'fileClassConfirmationList':
+ const obj1 = Object.assign({
+ expectedCopies: '',
+ actualCopies: '',
+ })
+ this.form.fileClassConfirmationList.push(obj1)
+ break
+ // 瀹夎楠屾敹璁板綍
+ case 'installationAcceptanceRecordList':
+ const obj2 = Object.assign({
+ installationProject: '',
+ installationSituation: '',
+ installationCompleted: ''
+ })
+ this.form.installationAcceptanceRecordList.push(obj2)
+ break
+ // 楠屾敹鏍告煡璁板綍
+ case 'acceptanceCheckRecordList':
+ const obj3 = Object.assign({
+ instrumentModule: '',
+ verificationParameter: '',
+ acceptableLimit: '',
+ verificationResult: '',
+ verificationConclusion: ''
+ })
+ this.form.acceptanceCheckRecordList.push(obj3)
+ default:
+ break
+ }
+ },
+ deleteRow(index, row, type) {
+ switch (type) {
+ // 澶囦欢纭
+ case 'sparePartsConfirmationList':
+ if (row.sparePartsId) {
+ this.$axios.delete(this.$api.deviceCheck.deleteIncidentReportAll + '?sparePartsId=' + row.sparePartsId).then(res => { });
+ }
+ this.form.sparePartsConfirmationList.splice(index, 1)
+ this.$message.success('鍒犻櫎鎴愬姛锛�')
+ break
+ // 鏂囦欢纭List
+ case 'fileClassConfirmationList':
+ if (row.fileId) {
+ this.$axios.delete(this.$api.deviceCheck.deleteIncidentReportAll + '?fileId=' + row.fileId).then(res => { });
+ }
+ this.form.fileClassConfirmationList.splice(index, 1)
+ this.$message.success('鍒犻櫎鎴愬姛锛�')
+ break
+ // 瀹夎楠屾敹璁板綍
+ case 'installationAcceptanceRecordList':
+ if (row.installId) {
+ this.$axios.delete(this.$api.deviceCheck.deleteIncidentReportAll + '?installId=' + row.installId).then(res => { });
+ }
+ this.form.installationAcceptanceRecordList.splice(index, 1)
+ this.$message.success('鍒犻櫎鎴愬姛锛�')
+ break
+ // 楠屾敹鏍告煡璁板綍
+ case 'acceptanceCheckRecordList':
+ if (row.acceptanceCheckId) {
+ this.$axios.delete(this.$api.deviceCheck.deleteIncidentReportAll + '?acceptanceCheckId=' + row.acceptanceCheckId).then(res => { });
+ }
+ this.form.acceptanceCheckRecordList.splice(index, 1)
+ this.$message.success('鍒犻櫎鎴愬姛锛�')
+ default:
+ break
+ }
+ },
+ choiceStep(index) {
+ this.currentStepClick = index
+ },
+ openRecordAcceptance() {
+ // 鑾峰彇璁惧鍩虹淇℃伅
+ this.$axios.get(this.$api.deviceScope.selectDeviceByCode + '?id=' + this.clickNodeVal.value).then(res => {
+ this.form.deviceName = res.data.deviceName
+ this.form.manufacturer = res.data.manufacturer
+ this.form.specificationModel = res.data.specificationModel
+ this.form.managementNumber = res.data.managementNumber
+ this.$nextTick(() => {
+ this.$refs['form'].clearValidate()
+ })
+ });
+ // 鑾峰彇璐熻矗浜轰俊鎭�
+ this.getUserList()
+ },
+ //鎻愪氦琛ㄥ崟
+ async submitForm(saveState) {
+ this.$refs.form.validate((valid) => {
+ if (valid === true || saveState !== '1submit') {
+ // 缁欏綋鍓嶇幆鑺傝缃垱寤轰汉涓庢椂闂�
+ let user = JSON.parse(localStorage.getItem('user'))
+ const dateTime = dateFormat(new Date())
+ // 鑾峰彇褰撳墠鐜妭鎿嶄綔浜轰笌鏃ユ湡
+ switch (this.currentStep) {
+ case 0:
+ this.form.submitOperatingPersonnel = user.name
+ this.form.submitDate = dateTime
+ break
+ case 1:
+ this.form.unpackingOperatingPersonnel = user.name
+ this.form.unpackingDate = dateTime
+ break
+ case 2:
+ this.form.installOperatingPersonnel = user.name
+ this.form.installDate = dateTime
+ break
+ case 3:
+ this.form.installationAcceptanceOperatingPersonnel = user.name
+ this.form.installationAcceptanceDate = dateTime
+ break
+ case 4:
+ this.form.acceptanceCheckOperatingPersonnel = user.name
+ this.form.acceptanceCheckDate = dateTime
+ break
+ case 5:
+ this.form.acceptanceAuditOperatingPersonnel = user.name
+ this.form.acceptanceAuditDate = dateTime
+ break
+ default:
+ break
+ }
+ // 鑾峰彇褰撳墠鐜妭璐熻矗浜�
+ switch (saveState === '3reject' ? this.currentStep - 1 : this.currentStep) {
+ case 0:
+ this.form.currentResponsible = this.form.submitNextPesponsible
+ break
+ case 1:
+ this.form.currentResponsible = this.form.unpackingNextPesponsible
+ break
+ case 2:
+ this.form.currentResponsible = this.form.installNextPesponsible
+ break
+ case 3:
+ this.form.currentResponsible = this.form.installationAcceptanceNextPesponsible
+ break
+ case 4:
+ this.form.currentResponsible = this.form.acceptanceCheckNextPesponsible
+ break
+ default:
+ break
+ }
+ let currentStepAction;
+ // 璁剧疆璇ユ搷浣滃垽鏂槸鍚︿负鎻愪氦锛屼繚瀛橈紝椹冲洖锛岄�氳繃
+ switch (saveState) {
+ // 鎻愪氦锛岄�氳繃
+ case '1submit':
+ currentStepAction = this.currentStep + 1
+ break
+ // 淇濆瓨
+ case '2save':
+ currentStepAction = this.currentStep
+ break
+ // 椹冲洖
+ case '3reject':
+ currentStepAction = this.currentStep - 1
+ break
+ default:
+ break
+ }
+ // 鑾峰彇褰撳墠鐘舵��
+ this.form.currentState = currentStepAction === 6 ? '鍏抽棴' : this.steps[currentStepAction]
+ this.form.deviceId = this.clickNodeVal.value
+ this.$axios.post(this.$api.deviceCheck.saveIncidentReportData, this.form, {
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ }).then(res => {
+ if (res.code == 200) {
+ this.$message.success('鎻愪氦鎴愬姛')
+ this.getDeviceAList(this.clickNodeVal.value);
+ this.dialogVisible = false
+ }
+ })
+ } else {
+ let step = this.steps[this.currentStep]
+ this.$message.warning(step + ' 娴佺▼涓湁蹇呭~椤规湭濉紒');
+ }
+ });
+ },
+ // 鑾峰彇璐熻矗浜轰俊鎭帴鍙�
+ getUserList() {
+ this.$axios.get(this.$api.deviceScope.selectUserList).then(res => {
+ if (res.code == 200) {
+ this.responsibleOptions = res.data
+ }
+ })
+ },
+ resetSearch() {
+ this.search = {
+ size: 20,
+ current: 1,
+ total: 0,
+ processNumber: '',
+ }
+ this.getDeviceAList(this.clickNodeVal.value);
+ },
+ // 鑾峰彇璁惧浜嬫晠淇℃伅(鏍规嵁浠巚uex涓幏鍙栧埌鐨勮澶囧悕绉癷d杩涜鏁版嵁鏌ヨ)
+ getDeviceAList(deviceId) {
+ this.$axios.get(this.$api.deviceCheck.incidentReportPage + "?deviceId=" + deviceId + "&size=" + this.search.size + "¤t=" + this.search.current + "&processNumber=" + this.search.processNumber).then(res => {
+ if (res.code == 200) {
+ this.tableDataAlist = res.data.records
+ this.search.total = res.data.total
+ }
+ })
+ },
+ //table 浜嬩欢澶勭悊寮�濮嬪
+ handleAttachmentClick(row) {
+ // 妯℃嫙涓嬭浇闄勪欢
+ const imageUrl = this.javaApi+'/img/'+row.systemFileName; // 鍥剧墖 URL
+ // downloadImage(imageUrl);
+ file.downloadIamge(imageUrl,row.fileName)
+ },
+ handleViewClick(row) {
+ this.$axios.get(this.$api.deviceCheck.getShowIncidentReport + "?id=" + row.id).then(res => {
+ this.form = { ...res.data }
+ // 濡傛灉绱㈠紩涓�6琛ㄧず鍏ㄩ儴閫氳繃
+ this.currentStep = this.steps.indexOf(this.form.currentState) === -1 ? 6 : this.steps.indexOf(this.form.currentState)
+ this.currentStepClick = this.currentStep === 6 ? 0 : this.currentStep
+ this.$nextTick(() => {
+ this.$refs['form'].clearValidate()
+ })
+ })
+ this.dialogVisible = true
+ },
+ // 瀵煎嚭
+ handleDownOne(row) {
+ this.outLoading = true
+ this.$axios.get(this.$api.deviceCheck.acceptanceCertificateExport + '?deviceId=' + row.deviceId + '&processNumber=' + row.processNumber, {
+ responseType: "blob"
+ }).then(res => {
+ this.outLoading = false
+ this.$message.success('瀵煎嚭鎴愬姛')
+ const blob = new Blob([res], { type: 'application/octet-stream' });
+ const url = URL.createObjectURL(blob);
+ const link = document.createElement('a');
+ link.href = url;
+ link.download = '璁惧楠屾敹.doc';
+ link.click();
+ })
+ },
+ // 鍒犻櫎
+ handleDeleteClick(row) {
+ this.$confirm('姝ゆ搷浣滃皢鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ this.$axios.delete(this.$api.deviceCheck.deleteIncidentReport + '?id=' + row.id).then(res => {
+ if (res.code == 200) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.getDeviceAList(this.clickNodeVal.value);
+ }
+ })
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '宸插彇娑堝垹闄�'
+ });
+ });
+
+ },
+ //瀵煎嚭
+ handleDown() {
+ this.outLoading = true
+ this.$axios.get(this.$api.deviceCheck.incidentReportExport + '?deviceId=' + this.clickNodeVal.value, {
+ responseType: "blob"
+ }).then(res => {
+ this.outLoading = false
+ this.$message.success('瀵煎嚭鎴愬姛')
+ const blob = new Blob([res], { type: 'application/octet-stream' });
+ const url = URL.createObjectURL(blob);
+ const link = document.createElement('a');
+ link.href = url;
+ link.download = '璁惧楠屾敹.xlsx';
+ link.click();
+ })
+ },
+ },
+ watch: {
+ // 鐩戝惉鐐瑰嚮el-tree鐨勬暟鎹紝杩涜鏁版嵁鍒锋柊
+ clickNodeVal(newVal) {
+ if (newVal.value) {
+ this.getDeviceAList(newVal.value);
+ }
+ },
+ dialogVisible(newVal) {
+ if (!newVal) {
+ this.form = {
+ sparePartsConfirmationList: [], // 澶囦欢纭List
+ fileClassConfirmationList: [], // 鏂囦欢纭List
+ installationAcceptanceRecordList: [], // 瀹夎楠屾敹璁板綍
+ acceptanceCheckRecordList: [], // 楠屾敹鏍告煡璁板綍
+ fileName: '', // 鏂囦欢鍚嶇О
+ systemFileName: '', // 绯荤粺鏂囦欢鍚嶇О
+ }
+ this.currentStep = 0 // 姝ラ鏉℃樉绀虹鍑犳
+ this.currentStepClick = 0 // 鐐瑰嚮姝ラ鏉″彉鍖�
+ this.$refs['form'].clearValidate()
+ }
+ }
+ }
+}
+function downloadImage(url) {
+ const link = document.createElement('a');
+ link.href = url;
+ link.download = 'attachment.jpg'; // 鏂囦欢鍚�
+ document.body.appendChild(link);
+ link.click();
+ document.body.removeChild(link);
}
</script>
<style scoped>
+>>>.el-radio {
+ color: #606266;
+ font-weight: 500;
+ cursor: pointer;
+ margin-right: 0px;
+ width: 10em;
+}
+.tables {
+ width: 100%;
+ height: calc(100vh - 17em);
+}
+
+.search {
+ background-color: #fff;
+ height: 40px;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.search_thing {
+ display: flex;
+ align-items: center;
+ height: 40px;
+}
+
+.search_label {
+ font-size: 14px;
+ width: 110px;
+}
+
+.search_input {
+ width: calc(100% - 120px);
+}
+
+.search_thing {
+ display: flex;
+ margin: 10px 0;
+}
+
+.line {
+ width: 20px;
+ height: 1px;
+ background-color: #ccc;
+ display: inline-block;
+ margin-right: 10px;
+}
+
+.form .search_label {
+ width: 120px;
+}
</style>
--
Gitblit v1.9.3