src/api/cnas/resourceDemand/device.js
@@ -868,6 +868,15 @@ params: query, }); } //设å¤ç»´æ¤å é¤ export function deviceMaintenanceExport(query) { return request({ url: "/deviceMaintain/deviceMaintenanceExport", method: "get", responseType: "blob", params: query, }); } // æ°å¢è®¾å¤ç»´æ¤ä¿å » export function addDeviceMaintenance(data) { @@ -1275,3 +1284,86 @@ params: query, }); } //设å¤é¢çº¦æ¥å£ export function device(query) { return request({ url: "/api/device-faults/device", method: "get", params: query, }); } //设å¤éªæ¶ä¸å个tableè¡¨æ ¼çå é¤åè½ export function deleteIncidentReportAll(query) { return request({ url: "/incident-report/deleteIncidentReportAll", method: "delete", params: query, }); } //设å¤éªæ¶ ä¿åï¼æäº¤ï¼é©³åï¼éè¿æ¥å£ export function saveIncidentReportData(query) { return request({ url: "/incident-report/saveIncidentReportData", method: "post", data: query, }); } //设å¤éªæ¶ ä¿åï¼æäº¤ï¼é©³åï¼éè¿æ¥å£ export function incidentReportPage(query) { return request({ url: "/incident-report/incidentReportPage", method: "get", params: query, }); } //设å¤éªæ¶ ä¿åï¼æäº¤ï¼é©³åï¼éè¿æ¥å£ export function getShowIncidentReport(query) { return request({ url: "/incident-report/getShowIncidentReport", method: "get", params: query, }); } //设å¤éªæ¶å¯¼åº export function incidentReportExport(query) { return request({ url: "/incident-report/incidentReportExport", method: "get", params: query, responseType: "blob" }); } //æ·»å è®¾å¤æ é export function addOrUpdateDeviceFaultOne(query) { return request({ url: "/deviceFaultOne/addOrUpdateDeviceFaultOne", method: "post", data: query, }); } //è®¾å¤æ é表 å页æ¥è¯¢ export function deviceFaultOnePage(query) { return request({ url: "/deviceFaultOne/deviceFaultOnePage", method: "get", params: query, }); } //è®¾å¤æ éå¯¼åº export function exportRewardAndPunishmentRecords(query) { return request({ url: "/deviceFaultOne/exportRewardAndPunishmentRecords", method: "get", params: query, responseType: "blob" }); } //å é¤ è®¾å¤æ é export function deleteDeviceFaultOne(query) { return request({ url: "/deviceFaultOne/deleteDeviceFaultOne", method: "delete", params: query, }); } src/views/CNAS/resourceDemand/device/component/borrow.vue
@@ -13,7 +13,7 @@ </div> <div class="btns"> <el-button size="small" type="primary" @click="add">æ°å¢</el-button> <!-- <el-button size="small" type="primary" @click="handleDown" :loading="outLoading">导åº</el-button>--> <el-button size="small" type="primary" @click="handleDown" :loading="outLoading">导åº</el-button> </div> </div> <div class="tables" style="margin-top: 10px;"> src/views/CNAS/resourceDemand/device/component/calibration.vue
@@ -4,9 +4,9 @@ <div class="btnS"> <el-button size="small" type="primary" @click="calibrationMaintenance()">æ ¡å项ç®ç»´æ¤</el-button> <el-button size="small" type="primary" @click="add('add')">æ·»å æ ¡åè®°å½</el-button> <!-- <el-button size="small" type="primary" @click="handleDown">导åºExcel</el-button> --> <el-button size="small" type="primary" @click="handleDown">导åºExcel</el-button> </div> <div class="tables" style="margin-top: 10px;"> <div class="tables" style="margin-top: 16px;"> <el-table :data="tableData" height="calc(100vh - 20em)"> <el-table-column label="åºå·" type="index" width="120"> <template v-slot="scope"> @@ -14,7 +14,8 @@ </template> </el-table-column> <el-table-column label="è®°å½ç¼å·" min-width="150" prop="processNumber"></el-table-column> <el-table-column label="æ ¡åæºæ" min-width="150" prop="unitOfMeasure" show-overflow-tooltip></el-table-column> <el-table-column label="æ ¡åæºæ" min-width="150" prop="unitOfMeasure" show-overflow-tooltip></el-table-column> <el-table-column label="æ ¡åç»è®º" min-width="150" prop="status"> <template v-slot="scope"> {{ scope.row.status === '0yes' ? 'åæ ¼' : scope.row.status === '1no' ? 'ä¸åæ ¼' : 'å ¶ä»' }} @@ -27,10 +28,11 @@ <el-table-column label="ç¡®è®¤æ¥æ" min-width="150" prop="confirmDate"></el-table-column> <el-table-column label="ç»è®°äºº" min-width="150" prop="createUser"></el-table-column> <el-table-column label="ç»è®°æ¥æ" min-width="150" prop="createTime"></el-table-column> <el-table-column fixed="right" label="æä½" min-width="180" align="center"> <el-table-column fixed="right" label="æä½" min-width="150"> <template #default="{ row }"> <el-button size="small" type="text" @click="handleAttachmentClick(row)">ä¸è½½éä»¶</el-button> <el-button size="small" type="text" @click="handleViewClick('view', row)">æ¥ç</el-button> <el-button size="small" type="text" @click="handleAttachmentClick(row)">éä»¶</el-button> <!-- <el-button size="small" type="text" @click="handleViewClick('view', row)">æ¥ç</el-button> --> <el-button size="small" type="text" @click="handleViewClick('add', row)">ç¼è¾</el-button> <el-button size="small" type="text" @click="handleDeleteClick(row)">å é¤</el-button> </template> </el-table-column> @@ -40,15 +42,65 @@ @size-change="handleSizeChange" @current-change="handleCurrentChange"> </el-pagination> </div> <!-- æä»¶é¢è§ --> <el-dialog :visible.sync="lookDialogVisible" fullscreen title="æ¥çéä»¶" width="800px"> <filePreview v-if="lookDialogVisible" :currentFile="{}" :fileUrl="previewFile" style="height: 90vh;overflow-y: auto;top: 0"/> </el-dialog> <!-- éä»¶å¼¹æ¡ --> <el-dialog title="éä»¶" :visible.sync="dialogVisibleFile" width="60%" > <el-upload ref="upload" style="margin-top: 5px;margin-bottom: 10px;" :action="action" :data="uploadData" :headers="headers" :before-upload="beforeUpload" :on-success="onSuccess" > <el-button type="primary" size="small" :loading="upLoading">ä¸ä¼ éä»¶</el-button> </el-upload> <el-table :data="fileData" border height="400px" style="width: 100%"> <el-table-column label="åºå·" type="index" width="240px"> </el-table-column> <el-table-column label="æä»¶åç§°" prop="fileName"> </el-table-column> <el-table-column label="æä½"> <template slot-scope="scope"> <el-button type="text" @click="preview(scope.row)">é¢è§</el-button> <el-button type="text" @click="download(scope.row)">ä¸è½½</el-button> <el-button type="text" @click="delFile(scope.row)" style="color: red;">å é¤</el-button> </template> </el-table-column> </el-table> <span slot="footer" class="dialog-footer"> <el-button type="primary" @click="dialogVisibleFile = false">å ³ é</el-button> </span> </el-dialog> <!-- æ ¡å项ç®ç»´æ¤ --> <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible0" title="æ ¡å项ç®ç»´æ¤" top="5vh" width="70%"> <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible0" title="æ ¡å项ç®ç»´æ¤" top="5vh" width="70%"> <h4> <span style="display: flex;align-items: center;"><span class="line"></span><span>è®¾å¤æ ¡ååæ°ç»´æ¤</span></span> <el-button :loading="addCalibrateLoading" size="small" type="primary" @click="addCalibrate">æ·» å </el-button> </h4> <div> <el-form ref="form0" :model="form0" :rules="form0Rules" label-position="right" label-width="120px"> <el-form ref="form0" :model="form0" :rules="form0Rules" label-position="right" label-width="120px"> <el-row> <el-col :span="12"> <el-form-item label="计éåæ°:" prop="measurementParameter"> @@ -77,8 +129,9 @@ <span style="display: flex;align-items: center;"><span class="line"></span><span>è®¾å¤æ ¡ååæ°</span></span> </h4> <!-- è®¾å¤æ ¡ååæ°è¡¨æ ¼ --> <el-table ref="calibrateTable" v-loading="calibrateParamsLoading" :data="calibrateParams" max-height="450" stripe style="width: 100%"> <el-table ref="calibrateTable" v-loading="calibrateParamsLoading" :data="calibrateParams" max-height="450" stripe style="width: 100%"> <el-table-column label="ç¼å·" type="index" width="80"></el-table-column> <el-table-column label="计éåæ°" prop="measurementParameter"></el-table-column> <el-table-column label="éç¨èå´" prop="rangeOfMeasurement"></el-table-column> @@ -95,8 +148,9 @@ </el-dialog> <!-- æ·»å æ ¡åè®°å½ --> <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible1" title="æ·»å æ ¡åè®°å½" top="5vh" width="80%" @close="resetCalibrationRecord"> <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible1" title="æ ¡åè®°å½" top="5vh" width="80%" @close="resetCalibrationRecord"> <div style="height: 70vh;overflow-y: auto;overflow-x: hidden;"> <h4> <div style="display: flex;align-items: center;"> @@ -104,8 +158,8 @@ <span>æ·»å è®¾å¤æ ¡åè®°å½</span> </div> </h4> <el-form ref="calibrationRecord" :model="calibrationRecord" :rules="formRules" label-position="right" label-width="120px"> <el-form ref="calibrationRecord" :model="calibrationRecord" :rules="formRules" label-position="right" label-width="120px"> <el-row> <el-col :span="6"> <el-form-item label="æ ¡åæå¡æºæ:" prop="unitOfMeasure"> @@ -116,15 +170,19 @@ <el-col :span="8"> <el-form-item label="æ ¡åæ¥æ:" prop="calibrationDate"> <el-date-picker v-model="calibrationRecord.calibrationDate" :disabled="operationType === 'view'" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" style="width: 90%" type="date" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" style="width: 90%" type="date" value-format="yyyy-MM-dd" @change="getNextCalibrationDate"> </el-date-picker> </el-form-item> </el-col> <el-col :span="10"> <el-form-item label="䏿¬¡æ ¡åæ¥æ:" label-width="140px"> <el-date-picker v-model="calibrationRecord.nextCalibrationDate" disabled format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" style="width: 90%" type="date" value-format="yyyy-MM-dd"> <el-date-picker v-model="calibrationRecord.nextCalibrationDate" disabled format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" style="width: 90%" type="date" value-format="yyyy-MM-dd"> </el-date-picker> </el-form-item> </el-col> @@ -142,8 +200,8 @@ </el-col> <el-col :span="10"> <el-form-item label="è®¡éæ åä¸ç¡®å®åº¦:" label-width="140px" prop="calibrationStandardUncertainty"> <el-input v-model="calibrationRecord.calibrationStandardUncertainty" :disabled="operationType === 'view'" size="small" style="width: 90%"></el-input> <el-input v-model="calibrationRecord.calibrationStandardUncertainty" :disabled="operationType === 'view'" size="small" style="width: 90%"></el-input> </el-form-item> </el-col> <el-col :span="6"> @@ -154,8 +212,8 @@ </el-col> <el-col :span="8"> <el-form-item label="è¯ä¹¦ç¼å·:" prop="certificateSerialNumber"> <el-input v-model="calibrationRecord.certificateSerialNumber" :disabled="operationType === 'view'" size="small" style="width: 90%"></el-input> <el-input v-model="calibrationRecord.certificateSerialNumber" :disabled="operationType === 'view'" size="small" style="width: 90%"></el-input> </el-form-item> </el-col> <el-col :span="10"> @@ -170,31 +228,32 @@ <el-col :span="6"> <el-form-item label="ç¡®è®¤æ¥æ:"> <el-date-picker v-model="calibrationRecord.confirmDate" :disabled="operationType === 'view'" format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ¥æ" size="small" style="width: 100%" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"> format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ¥æ" size="small" style="width: 100%" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"> </el-date-picker> </el-form-item> </el-col> <el-col :span="17"> <!-- <el-col :span="17"> <el-form-item label="éä»¶ï¼" prop="fileName"> <el-input v-model="calibrationRecord.fileName" :style="`width: ${operationType === 'add' ? '85%' : '100%'};}`" disabled size="small"> <el-input v-model="calibrationRecord.fileName" :style="`width: ${operationType === 'add' ? '85%' : '100%'};}`" disabled size="small"> <el-button v-if="operationType === 'add'" slot="append" icon="el-icon-delete-solid" @click="deleteFile"></el-button> </el-input> <el-upload v-if="operationType === 'add'" ref="upload" :action="action" :before-upload="beforeUpload" :headers="uploadHeader" :limit="1" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" style="float: right;"> <el-upload v-if="operationType === 'add'" ref="upload" :action="action" :before-upload="beforeUpload" :headers="headers" :limit="1" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" style="float: right;"> <el-button :loading="upLoading" size="small" style="position: relative; top: -4px;" type="primary">éä»¶ä¸ä¼ </el-button> </el-upload> </el-form-item> </el-col> </el-col> --> <el-col :span="24"> <el-form-item label="夿³¨:"> <el-input v-model="calibrationRecord.remark" :disabled="operationType === 'view'" :rows="3" size="small" style="width: 96%" type="textarea"></el-input> <el-input v-model="calibrationRecord.remark" :disabled="operationType === 'view'" :rows="3" size="small" style="width: 96%" type="textarea"></el-input> </el-form-item> </el-col> </el-row> @@ -240,11 +299,25 @@ </template> </el-table-column> </el-table> <!-- æä½æ¥å¿ --> <!-- <h4>--> <!-- <div style="display: flex;--> <!-- align-items: center;">--> <!-- <span class="line"></span><span>æ¬è®°å½ç¶æåæä½æ¥å¿</span>--> <!-- </div>--> <!-- </h4>--> <!-- <el-table :data="tableDataOperate" style="width: 100%">--> <!-- <el-table-column type="index" label="åºå·" width="100"></el-table-column>--> <!-- <el-table-column prop="operator" label="æä½äºº" width="120"></el-table-column>--> <!-- <el-table-column prop="operationTime" label="æä½æ¶é´" width="180"></el-table-column>--> <!-- <el-table-column prop="operationType" label="æä½ç±»å" width="120"></el-table-column>--> <!-- <el-table-column prop="operationContent" label="æä½å 容"></el-table-column>--> <!-- </el-table>--> </div> <span slot="footer" class="dialog-footer"> <el-button v-if="operationType === 'add'" @click="dialogVisible1 = false">å æ¶</el-button> <el-button v-if="operationType === 'add'" :loading="addRecordLoading" type="primary" @click="addRecord">ç¡® å®</el-button> <el-button v-if="operationType === 'add'" :loading="addRecordLoading" type="primary" @click="addRecord">ç¡® å®</el-button> </span> </el-dialog> </div> @@ -263,7 +336,9 @@ saveOrUpdateDeviceMetric } from '@/api/cnas/resourceDemand/device.js' import { mapGetters } from "vuex"; import filePreview from "@/components/Preview/filePreview.vue"; export default { components: {filePreview}, props: { clickNodeVal: { type: Object, src/views/CNAS/resourceDemand/device/component/check-and-accept.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,929 @@ <!-- 设å¤éªæ¶ --> <template> <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> </div> <div class="search_thing" style="padding-left: 30px;"> <el-button size="small" @click="resetSearch">é ç½®</el-button> <el-button size="small" type="primary" @click="getDeviceAList(clickNodeVal.value)">æ¥ è¯¢</el-button> </div> <div class="btns"> <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" style="margin-top: 10px;"> <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="140"> <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="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="è¯·éæ©ä¸ç¯èè´è´£äºº" 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: '请è¾å ¥ä¸ç¯è责任人', trigger: 'change' }]" label="ä¸ç¯è责任人ï¼" prop="unpackingNextPesponsible"> <el-select v-model="form.unpackingNextPesponsible" :disabled="currentStep !== 1" clearable filterable placeholder="è¯·éæ©ä¸ç¯èè´è´£äºº" 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: '请è¾å ¥ä¸ç¯è责任人', trigger: 'blur' }]" label="ä¸ç¯è责任人ï¼" prop="installNextPesponsible"> <el-select v-model="form.installNextPesponsible" :disabled="currentStep !== 2" clearable filterable placeholder="è¯·éæ©ä¸ç¯èè´è´£äºº" 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="è¯·éæ©ä¸ç¯èè´è´£äºº" 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: '请è¾å ¥ä¸ç¯è责任人', trigger: 'change' }]" label="ä¸ç¯è责任人ï¼" prop="acceptanceCheckNextPesponsible"> <el-select v-model="form.acceptanceCheckNextPesponsible" :disabled="currentStep !== 4" clearable filterable placeholder="è¯·éæ©ä¸ç¯èè´è´£äºº" 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> import { dateFormat } from '@/utils/date' import file from "@/utils/file"; import { deleteCNASFile, deleteIncidentReportAll, getShowIncidentReport, incidentReportExport, incidentReportPage, saveIncidentReportData, selectDeviceByCode } from "@/api/cnas/resourceDemand/device"; import {selectUserCondition} from "@/api/system/user"; 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: [], // ä¸ç¯èè´è´£äººlist isUpdate: false, search: { size: 20, current: 1, total: 0, processNumber: '', }, } }, computed: { action() { return this.javaApi + '/personBasicInfo/saveCNASFile' } }, mounted() { // è·å设å¤äºæ ä¿¡æ¯ this.getDeviceAList(this.clickNodeVal.value); window.excelClosed = this.closed }, methods: { handleSizeChange(val) { this.search.size = val this.getDeviceAList(this.clickNodeVal.value); }, handleCurrentChange(val) { this.search.current = val this.getDeviceAList(this.clickNodeVal.value); }, deleteFile() { this.$confirm('æ¤æä½å°æ°¸ä¹ å é¤è¯¥æä»¶, æ¯å¦ç»§ç»?', 'æç¤º', { confirmButtonText: 'ç¡®å®', cancelButtonText: 'åæ¶', type: 'warning' }).then(() => { 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) { deleteIncidentReportAll({sparePartsId: row.sparePartsId}).then(res => { }); } this.form.sparePartsConfirmationList.splice(index, 1) this.$message.success('å 餿åï¼') break // æä»¶ç¡®è®¤List case 'fileClassConfirmationList': if (row.fileId) { deleteIncidentReportAll({fileId: row.fileId}).then(res => { }); } this.form.fileClassConfirmationList.splice(index, 1) this.$message.success('å 餿åï¼') break // å®è£ éªæ¶è®°å½ case 'installationAcceptanceRecordList': if (row.installId) { deleteIncidentReportAll({installId: row.installId}).then(res => { }); } this.form.installationAcceptanceRecordList.splice(index, 1) this.$message.success('å 餿åï¼') break // éªæ¶æ ¸æ¥è®°å½ case 'acceptanceCheckRecordList': if (row.acceptanceCheckId) { deleteIncidentReportAll({acceptanceCheckId: row.acceptanceCheckId}).then(res => { }); } this.form.acceptanceCheckRecordList.splice(index, 1) this.$message.success('å 餿åï¼') default: break } }, choiceStep(index) { this.currentStepClick = index }, openRecordAcceptance() { // è·å设å¤åºç¡ä¿¡æ¯ 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 saveIncidentReportData(this.form).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() { selectUserCondition().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); }, // è·å设å¤äºæ ä¿¡æ¯(æ ¹æ®ä»vuexä¸è·åå°ç设å¤åç§°idè¿è¡æ°æ®æ¥è¯¢) getDeviceAList(deviceId) { incidentReportPage({deviceId: deviceId, size:this.search.size, current: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) { 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 }, handleDeleteClick(row) { this.$confirm('æ¤æä½å°å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { confirmButtonText: 'ç¡®å®', cancelButtonText: 'åæ¶', type: 'warning' }).then(() => { deleteIncidentReportAll({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 incidentReportExport({deviceId: this.clickNodeVal.value}).then(res => { this.outLoading = false const blob = new Blob([res], { type: 'application/octet-stream' }); this.$download.saveAs(blob, '设å¤éªæ¶.xlsx') }) }, }, 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; position: relative; } .search_thing { display: flex; align-items: center; height: 40px; } .search_label { font-size: 14px; text-align: right; } .search_input { width: calc(100% - 120px); } .btns { position: absolute; right: 0px; top: 40%; transform: translate(0, -50%); /* text-align: right; */ } .search_thing { display: flex; margin-bottom: 10px; } .search_label { /* width: 150px; */ text-align: right; padding-right: 10px; } .search_input { flex-grow: 1; } .line { width: 20px; height: 1px; background-color: #ccc; display: inline-block; margin-right: 10px; } .form .search_label { width: 120px; } </style> src/views/CNAS/resourceDemand/device/component/check.vue
@@ -4,7 +4,7 @@ <div class="btns"> <el-button size="small" type="primary" @click="calibrationMaintenance()">æ ¸æ¥é¡¹ç®ç»´æ¤</el-button> <el-button size="small" type="primary" @click="add('add')">æ·»å æ ¸æ¥è®°å½</el-button> <el-button size="small" type="primary">导åºExcel</el-button> <el-button size="small" type="primary" @click="downLoadPost">导åºExcel</el-button> </div> <div class="tables" style="margin-top: 16px;"> <el-table :data="tableData" height="calc(100vh - 20em)"> @@ -42,14 +42,15 @@ </div> <!-- æ ¡å项ç®ç»´æ¤ --> <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible0" title="æ ¸æ¥é¡¹ç®ç»´æ¤" top="5vh" width="70%"> <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible0" title="æ ¸æ¥é¡¹ç®ç»´æ¤" top="5vh" width="70%"> <h4> <span style="display: flex;align-items: center;"><span class="line"></span><span>è®¾å¤æ ¸æ¥åæ°ç»´æ¤</span></span> <el-button :loading="addCalibrateLoading" size="small" type="primary" @click="addCalibrate">æ·» å </el-button> </h4> <div> <el-form ref="form0" :model="form0" :rules="form0Rules" label-position="right" label-width="120px"> <el-form ref="form0" :model="form0" :rules="form0Rules" label-position="right" label-width="120px"> <el-row> <el-col :span="12"> <el-form-item label="æ ¸æ¥åæ°:" prop="measurementParameter"> @@ -78,8 +79,9 @@ <span style="display: flex;align-items: center;"><span class="line"></span><span>è®¾å¤æ ¸æ¥åæ°</span></span> </h4> <!-- è®¾å¤æ ¡ååæ°è¡¨æ ¼ --> <el-table ref="calibrateTable" v-loading="calibrateParamsLoading" :data="calibrateParams" max-height="450" stripe style="width: 100%"> <el-table ref="calibrateTable" v-loading="calibrateParamsLoading" :data="calibrateParams" max-height="450" stripe style="width: 100%"> <el-table-column label="ç¼å·" type="index" width="80"></el-table-column> <el-table-column label="æ ¸æ¥åæ°" prop="measurementParameter"></el-table-column> <el-table-column label="æ ¸æ¥èå´" prop="rangeOfMeasurement"></el-table-column> @@ -96,8 +98,9 @@ </el-dialog> <!-- æ·»å æ ¸æ¥è®°å½ --> <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible1" title="æ·»å æ ¸æ¥è®°å½" top="5vh" width="80%" @close="resetcalibrationRecord"> <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible1" title="æ ¸æ¥è®°å½" :before-close="handleClose" top="5vh" width="80%" @close="resetcalibrationRecord"> <div class="dialog-content"> <h4> <span style="display: flex;align-items: center;"> @@ -105,8 +108,8 @@ <span>æ·»å è®¾å¤æ ¸æ¥è®°å½</span> </span> </h4> <el-form ref="calibrationRecord" :model="calibrationRecord" :rules="formRules" label-position="right" label-width="120px"> <el-form ref="calibrationRecord" :model="calibrationRecord" :rules="formRules" label-position="right" label-width="120px"> <el-row> <el-col :span="6"> <el-form-item label="æ ¸æ¥äºº:" prop="unitOfMeasure"> @@ -116,17 +119,19 @@ </el-col> <el-col :span="8"> <el-form-item label="æ ¸æ¥æ¥æ:" prop="calibrationDate"> <el-date-picker v-model="calibrationRecord.calibrationDate" :disabled="operationType === 'view'" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" style="width: 90%" type="date" value-format="yyyy-MM-dd"> <el-date-picker v-model="calibrationRecord.calibrationDate" :disabled="operationType === 'view'" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" style="width: 90%" type="date" value-format="yyyy-MM-dd"> </el-date-picker> </el-form-item> </el-col> <el-col :span="10"> <el-form-item label="䏿¬¡æ ¸æ¥æ¥æ:" label-width="140px" prop="nextCalibrationDate"> <el-date-picker v-model="calibrationRecord.nextCalibrationDate" :disabled="operationType === 'view'" :picker-options="{ disabledDate: this.disabledDate }" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" style="width: 90%" type="date" value-format="yyyy-MM-dd"> <el-date-picker v-model="calibrationRecord.nextCalibrationDate" :disabled="operationType === 'view'" :picker-options="{ disabledDate: this.disabledDate }" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" style="width: 90%" type="date" value-format="yyyy-MM-dd"> </el-date-picker> </el-form-item> </el-col> @@ -144,8 +149,8 @@ </el-col> <el-col :span="10"> <el-form-item label="æ ¸æ¥æ åä¸ç¡®å®åº¦:" label-width="140px" prop="calibrationStandardUncertainty"> <el-input v-model="calibrationRecord.calibrationStandardUncertainty" :disabled="operationType === 'view'" size="small" style="width: 90%"></el-input> <el-input v-model="calibrationRecord.calibrationStandardUncertainty" :disabled="operationType === 'view'" size="small" style="width: 90%"></el-input> </el-form-item> </el-col> <el-col :span="6"> @@ -156,8 +161,8 @@ </el-col> <el-col :span="8"> <el-form-item label="æ£æ¥æ¥åç¼å·:" prop="certificateSerialNumber"> <el-input v-model="calibrationRecord.certificateSerialNumber" :disabled="operationType === 'view'" size="small" style="width: 90%"></el-input> <el-input v-model="calibrationRecord.certificateSerialNumber" :disabled="operationType === 'view'" size="small" style="width: 90%"></el-input> </el-form-item> </el-col> <el-col :span="8"> @@ -171,14 +176,15 @@ </el-col> <el-col :span="23"> <el-form-item label="éä»¶ï¼" prop="fileName"> <el-input v-model="calibrationRecord.fileName" :style="`width: ${operationType === 'add' ? '90%' : '100%'};}`" disabled size="small"> <el-input v-model="calibrationRecord.fileName" :style="`width: ${operationType === 'add' ? '90%' : '100%'};}`" disabled size="small"> <el-button v-if="operationType === 'add'" slot="append" icon="el-icon-delete-solid" @click="deleteFile"></el-button> </el-input> <el-upload v-if="operationType === 'add'" ref="upload" :action="action" :before-upload="beforeUpload" :headers="uploadHeader" :limit="1" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" style="float: right;"> <el-upload v-if="operationType === 'add'" ref="upload" :action="action" :before-upload="beforeUpload" :headers="headers" :limit="1" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" style="float: right;"> <el-button :loading="upLoading" size="small" style="position: relative; top: -4px;" type="primary">éä»¶ä¸ä¼ </el-button> @@ -229,13 +235,12 @@ </el-table-column> <el-table-column label="åé¡¹ç»æè¯´æ" prop="singleResultStatement"> <template slot-scope="scope"> <el-input v-model="scope.row.singleResultStatement" :disabled="operationType === 'view'" size="small"></el-input> <el-input v-model="scope.row.singleResultStatement" :disabled="operationType === 'view'" size="small"></el-input> </template> </el-table-column> </el-table> <span slot="footer" class="dialog-footer" style="float: right;margin-top: 10px"> <el-button v-if="operationType === 'add'" @click="dialogVisible1 = false">å æ¶</el-button> <el-button v-if="operationType === 'add'" @click="handleClose">å æ¶</el-button> <el-button v-if="operationType === 'add'" type="primary" @click="addRecord">ç¡® å®</el-button> </span> </div> @@ -247,6 +252,7 @@ <script> import file from '@/utils/file'; import { mapGetters } from "vuex"; import {deviceMetricRecordExport} from "@/api/cnas/resourceDemand/device"; export default { components: {}, props: { @@ -561,7 +567,15 @@ message: '已忶å é¤' }); }) } }, downLoadPost() { this.outLoading = true deviceMetricRecordExport({deviceId: this.clickNodeVal.value}).then(res => { this.outLoading = false const blob = new Blob([res],{ type: 'application/msword' }); this.$download.saveAs(blob, 'è®¾å¤æ ¸æ¥.xlsx') }) }, }, watch: { // çå¬ç¹å»el-treeçæ°æ®ï¼è¿è¡æ°æ®å·æ° src/views/CNAS/resourceDemand/device/component/fault.vue
@@ -278,6 +278,13 @@ <script> import { dateFormat } from '@/utils/date' import { mapGetters } from "vuex"; import { addOrUpdateDeviceFaultOne, deleteCNASFile, deleteDeviceFaultOne, deviceFaultOnePage, exportRewardAndPunishmentRecords, selectDeviceByCode } from "@/api/cnas/resourceDemand/device"; import {selectUserCondition} from "@/api/system/user"; export default { props: { clickNodeVal: { @@ -310,7 +317,7 @@ computed: { ...mapGetters(["nickName"]), action() { return this.javaApi + this.$api.personnel.saveCNASFile return this.javaApi + '/personBasicInfo/saveCNASFile' } }, mounted() { @@ -399,11 +406,7 @@ // è·åå½åç¶æ this.form.currentState = currentStepAction === 5 ? 'å ³é' : this.steps[currentStepAction] this.form.deviceId = this.clickNodeVal.value this.$axios.post(this.$api.deviceCheck.addOrUpdateDeviceFaultOne, this.form, { headers: { 'Content-Type': 'application/json' } }).then(res => { addOrUpdateDeviceFaultOne(this.form).then(res => { if (res.code == 200) { this.$message.success('æäº¤æå') this.getTableList(this.clickNodeVal.value) @@ -425,7 +428,7 @@ }, openRecordAcceptance() { // è·å设å¤åºç¡ä¿¡æ¯ this.$axios.get(this.$api.deviceScope.selectDeviceByCode + '?id=' + this.clickNodeVal.value).then(res => { 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 @@ -436,11 +439,9 @@ }, // è·åè´è´£äººä¿¡æ¯æ¥å£ getUserList() { this.$axios.get(this.$api.deviceScope.selectUserList).then(res => { if (res.code == 200) { this.users = res.data } }) selectUserCondition().then((res) => { this.users = res.data; }); }, handleSizeChange(val) { this.search.size = val @@ -456,7 +457,7 @@ cancelButtonText: 'åæ¶', type: 'warning' }).then(() => { this.$axios.delete(this.$api.personnel.deleteCNASFile + "?fileName=" + this.form.systemFileName).then(res => { deleteCNASFile({fileName: this.form.systemFileName}).then(res => { if (res.code == 200) { this.$message.success('å 餿åï¼') } @@ -477,7 +478,7 @@ this.form.fileName = response.data this.$message.success('ä¸ä¼ æå') } else { this.$message.error(response.message) this.$message.error(response.msg) } }, onError(error, file, fileList) { @@ -505,7 +506,13 @@ }, //è·åææä¿¡æ¯ getTableList(deviceId) { this.$axios.get(this.$api.deviceCheck.deviceFaultOnePage + '?deviceId=' + deviceId + "&size=" + this.search.size + "¤t=" + this.search.current + "&processNumber=" + this.search.processNumber).then(res => { const params = { deviceId: deviceId, size: this.search.size, current: this.search.current, processNumber: this.search.processNumber, } deviceFaultOnePage(params).then(res => { if (res.code == 200) { this.faultParam = res.data.records this.search.total = res.data.total @@ -515,19 +522,10 @@ //å¯¼åº handleDown() { this.outLoading = true this.$axios.post(this.$api.deviceCheck.exportRewardAndPunishmentRecords, { deviceId: this.clickNodeVal.value }, { responseType: "blob" }).then(res => { exportRewardAndPunishmentRecords({deviceId: this.clickNodeVal.value}).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(); }).finally(() => { this.outLoading = false this.$dowmload.saveAs(blob, 'è®¾å¤æ é表.xlsx') }) }, selectAllByOne(row) { @@ -556,7 +554,7 @@ cancelButtonText: 'åæ¶', type: 'warning' }).then(() => { this.$axios.delete(this.$api.deviceCheck.deleteDeviceFaultOne + '?id=' + row.id).then(res => { deleteDeviceFaultOne({id: row.id}).then(res => { if (res.code == 200) { this.$message.success('å 餿å') this.getTableList(this.clickNodeVal.value) src/views/CNAS/resourceDemand/device/component/files.vue
@@ -7,7 +7,7 @@ <el-button type="primary" size="small" @click="openEditForm" style="">修订档æ¡</el-button> <el-button type="primary" size="small" @click="dialogVisible1 = true" style="">æ·»å éä»¶</el-button> <el-button type="primary" size="small" @click="deviceDialog = true" style="">æ¥ç设å¤äºç»´ç </el-button> <el-button type="primary" size="small" @click="handleDownOne" style="">导åº</el-button> <!-- <el-button type="primary" size="small" @click="handleDownOne" style="">导åº</el-button>--> </div> </div> <el-divider></el-divider> @@ -26,7 +26,10 @@ <div class="form-item"> <label>设å¤åç§°</label> <!-- <p>{{ Mdata.deviceName }}</p> --> <el-tooltip class="item" :content="Mdata.deviceName"> <el-tooltip class="item" :content="Mdata.deviceName" > <span class="text-ellipsis">{{ Mdata.deviceName }}</span> </el-tooltip> </div> @@ -46,7 +49,10 @@ <div class="form-item"> <label>ç产åå®¶</label> <!-- <p>{{ Mdata.manufacturer }}</p> --> <el-tooltip class="item" :content="Mdata.manufacturer"> <el-tooltip class="item" :content="Mdata.manufacturer" > <span class="text-ellipsis">{{ Mdata.manufacturer }}</span> </el-tooltip> </div> @@ -60,7 +66,7 @@ <p>{{ Mdata.acquisitionDate | formaterDateTime }}</p> </div> <div class="form-item"> <label>æ ¡åæææ</label> <label>å¯ç¨æ¥æ</label> <p>{{ Mdata.activationDate | formaterDateTime }}</p> </div> <div class="form-item"> @@ -74,7 +80,10 @@ </div> <div class="form-item"> <label>å确度éå¼</label> <el-tooltip class="item" :content="Mdata.technicalIndicators"> <el-tooltip class="item" :content="Mdata.technicalIndicators" > <span class="text-ellipsis">{{ Mdata.technicalIndicators }}</span> </el-tooltip> <!-- <p>{{ Mdata.technicalIndicators }}</p> --> @@ -121,7 +130,12 @@ </div> <div class="form-item"> <label>æ£éªé¡¹</label> <el-tooltip class="item" effect="dark" :content="Mdata.insProductItem" placement="top"> <el-tooltip class="item" effect="dark" :content="Mdata.insProductItem" placement="top" > <span class="text-ellipsis">{{ Mdata.insProductItem }}</span> </el-tooltip> </div> @@ -131,16 +145,16 @@ </div> <div class="form-item"> <label>æè¿æ ¡åæ¥æ</label> <label>æè¿æº¯æºæ¥æ</label> <p>{{ Mdata.lastCalibrationDate | formaterDateTime }}</p> </div> <div class="form-item"> <label>䏿¬¡æ ¡åæ¥æ</label> <p>{{ Mdata.nextCalibrationDate | formaterDateTime }}</p> </div> <div class="form-item"> <label>éè´è´¹ç¨(å )</label> <p>{{ Mdata.unitPrice }}</p> </div> <div class="form-item"> <label>åç¨æ¶é´</label> <p>{{ Mdata.nextCalibrationDate | formaterDateTime }}</p> </div> <div class="form-item"> <label>设å¤è´è´£äºº</label> @@ -170,21 +184,21 @@ <el-table-column prop="quantity" label="份æ°" min-width="80" /> <el-table-column prop="pageCount" label="页ç " min-width="80" /> <el-table-column prop="provider" label="æä¾è " min-width="150" /> <el-table-column prop="provideDate" label="彿¡£æ¥æ" min-width="150" /> <el-table-column prop="provideDate" label="æä¾æ¥æ" min-width="150" /> <el-table-column prop="comments" label="夿³¨" min-width="150" /> <el-table-column fixed="right" label="æä½" min-width="180"> <template slot-scope="scope"> <el-button type="text" size="small" @click="handleAttachmentClick(scope.row)">ä¸è½½éä»¶</el-button> <el-button type="text" size="small" @click="handleViewClick(scope.row)">ç¼è¾</el-button> <el-button type="text" size="small" @click="handleViewClick(scope.row)">æ¥ç</el-button> <el-button type="text" size="small" @click="handleDeleteClick(scope.row)">å é¤</el-button> </template> </el-table-column> </el-table> </div> <!-- 修订 --> <el-dialog title="æ¡£æ¡ä¿®è®¢" top="5vh" :visible.sync="dialogVisible" width="70%" @open="openFileRevisionDialog" <el-dialog title="修订档æ¡" top="5vh" :visible.sync="dialogVisible" width="70%" @open="openFileRevisionDialog" :before-close="handleClose"> <el-row style="display:flex;justify-content: space-around;max-height: 75vh;overflow-y: auto;"> <el-row style="display:flex;justify-content: space-around;"> <!-- 左边å¸å± --> <el-col :span="7"> <el-col> @@ -222,7 +236,7 @@ <el-col :span="7"> <el-form :model="editData" label-width="116px" ref="rules2" :rules="rules1"> <el-form-item label="æ ¡åæå¡æºæ:"> <el-input v-model="editData.calibrationServices" size="small"></el-input> <el-input v-model="editData.calibrationServices" disabled size="small"></el-input> </el-form-item> <el-form-item label="èµäº§ç¼ç :"> <el-input v-model="editData.assetCode" size="small"></el-input> @@ -241,7 +255,7 @@ value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="éæ©æ¥æ"> </el-date-picker> </el-form-item> <el-form-item label="æ ¡åæææ:" prop="activationDate"> <el-form-item label="å¯ç¨æ¥æ:" prop="activationDate"> <el-date-picker style="width:100%" v-model="editData.activationDate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="éæ©æ¥æ"> </el-date-picker> @@ -264,7 +278,7 @@ <el-col :span="7"> <el-form :model="editData" label-width="140px" ref="ruleForm" :rules="rules1"> <!-- å®éªå®¤å表 --> <el-form-item label="æå±é¨é¨:" prop="subordinateDepartmentsId"> <el-form-item label="æå±é¨é¨:"> <el-select v-model="editData.subordinateDepartmentsId" placeholder="è¯·éæ©" size="small" style="width:100%"> <el-option v-for="item in subordinateDepartmentsList" :key="item.value" :label="item.label" :value="item.value"> @@ -276,16 +290,16 @@ placeholder="è¯·éæ©" size="small" style="width:100%;" :collapse-tags="true" separator="," filterable clearable></el-cascader> </el-form-item> <el-form-item label="æè¿æ ¡åæ¥æ:"> <el-date-picker style="width:100%" v-model="editData.lastCalibrationDate" format="yyyy-MM-dd" <!-- <el-form-item label="æè¿æ ¡åæ¥æ:"> <el-date-picker style="width:100%" v-model="Mdata.latestTraceability" format="yyyy-MM-dd" value-format="yyyy-MM-dd" type="date" size="small" placeholder="éæ©æ¥æ"> </el-date-picker> </el-form-item> --> <!-- <el-form-item label="䏿¬¡æ ¡åæ¥æ:"> <el-date-picker style="width:100%" v-model="Mdata.nextCalibrationDate" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" type="date" size="small" placeholder="éæ©æ¥æ"> </el-date-picker> </el-form-item> <el-form-item label="䏿¬¡æ ¡åæ¥æ:"> <el-date-picker style="width:100%" v-model="editData.nextCalibrationDate" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" type="date" size="small" placeholder="éæ©æ¥æ"> </el-date-picker> </el-form-item> </el-form-item> --> <el-form-item label="设å¤ç±»å:"> <el-select v-model="editData.largeCategory" placeholder="è¯·éæ©" size="small" style="width:100%"> <el-option v-for="item in equipmentList" :key="item.value" :label="item.label" :value="item.value"> @@ -324,8 +338,9 @@ <div> <div v-show="editData.imageName" class="picName">{{ editData.imageName }}</div> <el-upload :action="action" :on-success="handleSuccessUpImg2" :show-file-list="false" accept='image/jpg,image/jpeg,image/png' :headers="uploadHeader" :on-change="beforeUpload" :on-error="onError" ref='upload' class="avatar-uploader"> accept='image/jpg,image/jpeg,image/png' :headers="headers" :on-change="beforeUpload" :on-error="onError" ref='upload' class="avatar-uploader" > <img v-if="editData.imageUpload" :src="javaApi + '/img/' + editData.imageUpload" class="avatar"> <i v-else class="el-icon-plus avatar-uploader-icon"></i> </el-upload> @@ -341,7 +356,7 @@ </el-row> </span> </el-dialog> <el-dialog title="设å¤éä»¶" top="5vh" v-if="dialogVisible1" :visible.sync="dialogVisible1" width="40%"> <el-dialog title="æ·»å 设å¤éä»¶" top="5vh" v-if="dialogVisible1" :visible.sync="dialogVisible1" width="40%"> <el-form ref="form" :model="addFile" label-width="120px"> <el-row :gutter="20"> <el-col :span="12"> @@ -386,8 +401,8 @@ </el-col> <el-col :span="12"> <el-form-item label="彿¡£æ¥æï¼"> <el-date-picker type="date" style="width:100%" placeholder="è¯·éæ©æ¥æ" size="small" v-model="addFile.provideDate" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker> <el-date-picker type="date" style="width:100%" placeholder="è¯·éæ©æ¥æ" size="small" v-model="addFile.archiveDate" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker> </el-form-item> </el-col> <el-col :span="24"> @@ -397,9 +412,9 @@ </el-col> <el-col :span="24"> <el-form-item label="éä»¶ï¼" style="float: left;"> <el-upload class="upload-demo" :action="action" :headers="uploadHeader" ref="uploadFile" :on-error="onError" :on-remove="handleRemove" :on-success="onSuccess" :before-remove="beforeRemove" multiple :limit="1" :on-exceed="handleExceed" :file-list="fileList"> <el-upload class="upload-demo" :action="action" :headers="headers" ref="uploadFile" :on-error="onError" :on-remove="handleRemove" :on-success="onSuccess" :before-remove="beforeRemove" multiple :limit="1" :on-exceed="handleExceed" :file-list="fileList"> <el-button size="small" type="primary">ç¹å»ä¸ä¼ </el-button> </el-upload> </el-form-item> src/views/CNAS/resourceDemand/device/component/maintenance.vue
@@ -7,16 +7,16 @@ <div class="search_input"><el-input v-model="search.deviceNumber" clearable placeholder="请è¾å ¥" size="small" @keyup.enter.native="getAllMessage(clickNodeVal.value)"></el-input></div> </div> <div class="search_thing" style="padding-left: 30px;"> <div class="search_thing" style="padding-left: 20px;"> <el-button size="small" @click="resetSearch">é ç½®</el-button> <el-button size="small" type="primary" @click="getAllMessage(clickNodeVal.value)">æ¥ è¯¢</el-button> </div> <div class="btns"> <el-button size="small" type="primary" @click="dialogVisible = true; add()">æ·»å ç»´æ¤è®°å½</el-button> <el-button :loading="outLoading" size="small" type="primary" @click="handleDownOne">导åº</el-button> <el-button :loading="outLoading" size="small" type="primary" @click="handleDown">导åº</el-button> </div> </div> <div class="tables" style="margin-top: 10px;"> <div class="tables" style="margin-top: 16px;"> <el-table ref="table" :data="MaintainParam" height="calc(100vh - 20em)"> <el-table-column label="åºå·" type="index" width="120"> <template v-slot="scope"> @@ -31,7 +31,7 @@ <el-table-column label="æäº¤äºº" min-width="150" prop="name" /> <el-table-column label="æäº¤æ¥æ" min-width="150" prop="date"> </el-table-column> <el-table-column fixed="right" label="æä½" width="110"> <el-table-column fixed="right" label="æä½" width="150"> <template slot-scope="scope"> <el-button size="small" type="text" @click="handleViewClick(scope.row)">æ¥ç</el-button> <el-button size="small" type="text" @click="handleDeleteClick(scope.$index, scope.row)">å é¤</el-button> @@ -44,7 +44,8 @@ </el-pagination> </div> <!-- æ°å»ºç»´æ¤ --> <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible" title="æ·»å ç»´æ¤è®°å½" <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible" title="æ·»å ç»´æ¤è®°å½" top="5vh" width="60%"> <el-form ref="form" :model="formData" label-width="130px"> <el-row> @@ -71,14 +72,14 @@ </el-form-item> </el-col> <el-col :span="12"> <el-form-item :rules="[{ required: true, message: '请è¾å ¥ç»´æ¤æ¶é´', trigger: 'blur' }]" label="ç»´æ¤æ¶é´:" prop="date"> <el-form-item :rules="[{ required: true, message: 'è¯·éæ©ç»´æ¤æ¶é´', trigger: 'blur' }]" label="ç»´æ¤æ¶é´:" prop="date"> <el-date-picker v-model="formData.date" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" style="width:100%" type="date" value-format="yyyy-MM-dd"> </el-date-picker> </el-form-item> </el-col> <el-col :span="12"> <el-form-item :rules="[{ required: true, message: '请è¾å ¥ç»´æ¤æ¶é´', trigger: 'blur' }]" label="ç»´æ¤ç±»å:" <el-form-item :rules="[{ required: true, message: 'è¯·éæ©ç»´æ¤ç±»å', trigger: 'blur' }]" label="ç»´æ¤ç±»å:" prop="maintenanceType"> <el-radio-group v-model="formData.maintenanceType" :disabled="!this.editMode"> <el-radio :label="0">使ç¨ååç»´æ¤</el-radio> @@ -89,8 +90,13 @@ <el-col :span="12"> <el-form-item :rules="[{ required: true, message: 'è¯·éæ©ä¸æ¬¡ç»´æ¤æ¶é´', trigger: 'blur' }]" label="䏿¬¡ç»´æ¤æ¶é´:" prop="nextDate"> <el-date-picker v-model="formData.nextDate" :picker-options="{ disabledDate: this.disabledDate }" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" style="width:100%" type="date" <el-date-picker v-model="formData.nextDate" :picker-options="{ disabledDate: this.disabledDate }" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" style="width:90%" type="date" value-format="yyyy-MM-dd"> </el-date-picker> </el-form-item> @@ -121,7 +127,7 @@ deleteDeviceMaintenance, selectDeviceByCode, addDeviceMaintenance, getDeviceMaintenancePage, getDeviceMaintenancePage, deviceMaintenanceExport, } from '@/api/cnas/resourceDemand/device.js' export default { props: { @@ -179,10 +185,10 @@ // å¯¼åº handleDownOne() { this.outLoading = true exportMaintenanceRecord({ deviceId: this.clickNodeVal.value }).then(res => { deviceMaintenanceExport({ deviceId: this.clickNodeVal.value }).then(res => { this.outLoading = false const blob = new Blob([res], { type: 'application/octet-stream' }); this.$download.saveAs(blob, '设å¤ç»´æ¤ä¿å »è®°å½.doc') this.$download.saveAs(blob, '设å¤ç»´æ¤.xlsx') }) }, //æä½è¯¦æ å é¤ @@ -193,13 +199,12 @@ type: 'warning' }).then(() => { deleteDeviceMaintenance({ id: row.id }).then(res => { }) // this.MaintainParam.splice(index, 1); this.getAllMessage(this.clickNodeVal.value) this.$message({ type: 'success', message: 'å 餿å!' }); }) }).catch(() => { this.$message({ type: 'info', src/views/CNAS/resourceDemand/device/component/management.vue
@@ -34,9 +34,10 @@ <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 320px)'" :page="page" @pagination="pagination"></lims-table> </div> <el-dialog :title="isUp ? '设å¤è¯¦æ ' : 'æ¡£æ¡ä¿®è®¢'" :visible.sync="dialogVisible" width="70%" top="5vh" <el-dialog :title="isUp ? '设å¤è¯¦æ ' : 'æ¡£æ¡ä¿®è®¢'" :visible.sync="dialogVisible" width="70%" top="5vh" :before-close="handleClose"> <el-row style="display:flex;justify-content: space-around;max-height: 75vh;overflow-y: auto;"> <el-row style="display:flex;justify-content: space-around;"> <!-- 左边å¸å± --> <el-col :span="7"> <el-col> @@ -55,14 +56,15 @@ </el-image> <!-- 表å --> <el-form :label-position="labelPosition" :model="formData" label-width="120px"> <el-form-item label="仪å¨åç§°:" required prop="deviceName"> <el-form-item label="仪å¨åç§°:" required> <el-input :disabled="isUp" v-model="formData.deviceName" size="small"></el-input> </el-form-item> <el-form-item label="仪å¨åç§°EN:" required> <el-input :disabled="isUp" v-model="formData.enDeviceName" size="small"></el-input> </el-form-item> <el-form-item label="è§æ ¼åå·:" required> <el-input :disabled="isUp" v-model="formData.specificationModel" size="small"></el-input> <el-input :disabled="isUp" v-model="formData.specificationModel" size="small"></el-input> </el-form-item> <el-form-item label="ç产åå®¶:"> <el-input :disabled="isUp" v-model="formData.manufacturer" size="small"></el-input> @@ -74,13 +76,7 @@ <el-col :span="7"> <el-form :label-position="labelPosition" :model="formData" label-width="116px"> <el-form-item label="æ ¡åæå¡æºæ:"> <el-input :disabled="isUp" v-model="formData.calibrationServices" size="small"></el-input> </el-form-item> <el-form-item label="èµäº§ç¼ç :"> <el-input v-model="formData.assetCode" :disabled="isUp" size="small"></el-input> </el-form-item> <el-form-item label="产å°:"> <el-input v-model="formData.origin" :disabled="isUp" size="small"></el-input> <el-input disabled v-model="formData.calibrationServices" size="small"></el-input> </el-form-item> <el-form-item label="åºåç¼å·:"> <el-input :disabled="isUp" v-model="formData.factoryNo" size="small"></el-input> @@ -89,20 +85,22 @@ <el-input :disabled="isUp" v-model="formData.managementNumber" size="small"></el-input> </el-form-item> <el-form-item label="è´ç½®æ¥æ:"> <el-date-picker :disabled="isUp" style="width:100%" v-model="formData.acquisitionDate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="éæ©æ¥æ"> <el-date-picker :disabled="isUp" style="width:100%" v-model="formData.acquisitionDate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="éæ©æ¥æ"> </el-date-picker> </el-form-item> <el-form-item label="æ ¡åæææ:" required> <el-date-picker :disabled="isUp" style="width:100%" v-model="formData.activationDate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="éæ©æ¥æ"> <el-form-item label="å¯ç¨æ¥æ:" required> <el-date-picker :disabled="isUp" style="width:100%" v-model="formData.activationDate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="éæ©æ¥æ"> </el-date-picker> </el-form-item> <el-form-item label="è´è´£äºº:"> <el-select v-model="formData.equipmentManager" placeholder="è¯·éæ©" size="small" :disabled="isUp" <el-form-item label="管ç人:"> <el-select v-model="formData.equipmentManager" placeholder="è¯·éæ©" size="small" style="width:100%"> <el-option v-for="item in responsiblePersonList" :key="item.value" :label="item.label" :value="item.value"> <el-option :disabled="isUp" v-for="item in responsiblePersonList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> @@ -119,33 +117,37 @@ <el-col :span="7"> <el-form :label-position="labelPosition" :model="formData" label-width="140px" ref="ruleForm"> <!-- å®éªå®¤å表 --> <el-form-item label="æå±é¨é¨:" required> <el-select :disabled="isUp" v-model="formData.subordinateDepartmentsId" placeholder="è¯·éæ©" size="small" style="width:100%"> <el-option v-for="item in subordinateDepartmentsList" :key="item.value" :label="item.label" :value="item.value"> <el-form-item label="æå±é¨é¨:"> <el-select :disabled="isUp" v-model="formData.subordinateDepartmentsId" placeholder="è¯·éæ©" size="small" style="width:100%"> <el-option v-for="item in subordinateDepartmentsList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> <el-form-item label="æ£æµé¡¹ç®:"> <el-cascader :disabled="isUp" v-model="formData.insProductIds" :options="options" :show-all-levels="false" :props="props" placeholder="è¯·éæ©" size="small" style="width:100%;" :collapse-tags="!isUp" separator="," filterable clearable></el-cascader> <el-cascader :disabled="isUp" v-model="formData.insProductIds" :options="options" :show-all-levels="false" :props="props" placeholder="è¯·éæ©" size="small" style="width:100%;" :collapse-tags="!isUp" separator="," filterable clearable></el-cascader> </el-form-item> <el-form-item label="æè¿æ ¡åæ¥æ:"> <el-date-picker :disabled="isUp" style="width:100%" v-model="formData.lastCalibrationDate" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" type="date" size="small" placeholder="éæ©æ¥æ"> <el-form-item label="æè¿æ ¡åæ¥æ:" v-if="isUp"> <el-date-picker :disabled="isUp" style="width:100%" v-model="formData.latestTraceability" format="yyyy-MM-dd" value-format="yyyy-MM-dd" type="date" size="small" placeholder="éæ©æ¥æ"> </el-date-picker> </el-form-item> <el-form-item label="䏿¬¡æ ¡åæ¥æ:"> <el-date-picker :disabled="isUp" style="width:100%" v-model="formData.nextCalibrationDate" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" type="date" size="small" placeholder="éæ©æ¥æ"> <el-form-item label="䏿¬¡æ ¡åæ¥æ:" v-if="isUp"> <el-date-picker :disabled="isUp" style="width:100%" v-model="formData.latestTraceability" format="yyyy-MM-dd" value-format="yyyy-MM-dd" type="date" size="small" placeholder="éæ©æ¥æ"> </el-date-picker> </el-form-item> <el-form-item label="设å¤ç±»å:"> <el-select :disabled="isUp" v-model="formData.largeCategory" placeholder="è¯·éæ©" size="small" style="width:100%"> <el-option v-for="item in equipmentList" :key="item.value" :label="item.label" :value="item.value"> <el-option v-for="item in equipmentList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> @@ -155,28 +157,21 @@ <el-form-item label="å½åç¶æ:" required> <el-select :disabled="isUp" v-model="formData.deviceStatus" placeholder="è¯·éæ©" size="small" style="width:100%"> <el-option v-for="item in deviceStatusList" :key="item.value" :label="item.label" :value="item.value"> <el-option v-for="item in deviceStatusList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> <el-form-item label="æ ¡åå¨æï¼æï¼:" required> <el-input :disabled="isUp" v-model="formData.calibrationDate" size="small"></el-input> </el-form-item> <el-form-item label="被ææäºº:"> <el-select v-model="formData.authorizedPerson" multiple :disabled="isUp" placeholder="è¯·éæ©" size="small" style="width:100%"> <el-option v-for="item in responsiblePersonList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> <el-form-item label="å¾ç:"> <div style="border: 1px solid #DCDFE6;border-radius:4px;height:32px;lineHeight:32px;display:flex;justify-content: space-around;font-size: 13px;"> <div v-show="formData.imageName" class="picName">{{ formData.imageName }}</div> <el-upload :disabled="isUp" :action="action" :on-success="handleSuccessUpImg2" :show-file-list="false" accept='image/jpg,image/jpeg,image/png' :headers="uploadHeader" :on-change="beforeUpload" :on-error="onError" ref='upload'> <el-upload :disabled="isUp" :action="action" :on-success="handleSuccessUpImg2" :show-file-list="false" accept='image/jpg,image/jpeg,image/png' :headers="headers" :on-change="beforeUpload" :on-error="onError" ref='upload'> <el-button type="text" style="height:30px;padding-top:8px">ä¸ä¼ </el-button> </el-upload> </div> @@ -236,12 +231,6 @@ <el-form-item label="æ ¡åæå¡æºæ:"> <el-input v-model="formData2.calibrationServices" size="small"></el-input> </el-form-item> <el-form-item label="èµäº§ç¼ç :"> <el-input v-model="formData2.assetCode" size="small"></el-input> </el-form-item> <el-form-item label="产å°:"> <el-input v-model="formData2.origin" size="small"></el-input> </el-form-item> <el-form-item label="åºåç¼å·:"> <el-input v-model="formData2.factoryNo" size="small"></el-input> </el-form-item> @@ -249,17 +238,18 @@ <el-input v-model="formData2.managementNumber" size="small"></el-input> </el-form-item> <el-form-item label="è´ç½®æ¥æ:"> <el-date-picker style="width:100%" v-model="formData2.acquisitionDate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="éæ©æ¥æ"> <el-date-picker style="width:100%" v-model="formData2.acquisitionDate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="éæ©æ¥æ"> </el-date-picker> </el-form-item> <el-form-item label="æ ¡åæææ:" required> <el-date-picker style="width:100%" v-model="formData2.activationDate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="éæ©æ¥æ"> <el-form-item label="å¯ç¨æ¥æ:" required> <el-date-picker style="width:100%" v-model="formData2.activationDate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="éæ©æ¥æ"> </el-date-picker> </el-form-item> <el-form-item label="è´è´£äºº:"> <el-select v-model="formData2.equipmentManager" placeholder="è¯·éæ©" size="small" style="width:100%"> <el-form-item label="管ç人:"> <el-select v-model="formData2.equipmentManager" placeholder="è¯·éæ©" size="small" style="width:100%"> <el-option v-for="item in responsiblePersonList" :key="item.value" :label="item.label" :value="item.value"> </el-option> @@ -269,7 +259,8 @@ <el-input v-model="formData2.storagePoint" size="small"></el-input> </el-form-item> <el-form-item label="ææ¯ææ :"> <el-input v-model="formData2.technicalIndicators" :rows="7" type="textarea" size="small"></el-input> <el-input v-model="formData2.technicalIndicators" :rows="7" type="textarea" size="small"></el-input> </el-form-item> </el-form> </el-col> @@ -277,31 +268,24 @@ <el-col :span="7"> <el-form :label-position="labelPosition" :model="formData2" label-width="120px" ref="ruleForm"> <!-- å®éªå®¤å表 --> <el-form-item label="æå±é¨é¨:" required> <el-select v-model="formData2.subordinateDepartmentsId" placeholder="è¯·éæ©" size="small" style="width:100%"> <el-option v-for="item in subordinateDepartmentsList" :key="item.value" :label="item.label" :value="item.value"> <el-form-item label="æå±é¨é¨:"> <el-select v-model="formData2.subordinateDepartmentsId" placeholder="è¯·éæ©" size="small" style="width:100%"> <el-option v-for="item in subordinateDepartmentsList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> <el-form-item label="æ£æµé¡¹ç®:"> <el-cascader v-model="formData2.insProductIds" :options="options" :show-all-levels="false" :props="props" placeholder="è¯·éæ©" size="small" style="width:100%" collapse-tags separator="," filterable clearable></el-cascader> </el-form-item> <el-form-item label="æè¿æ ¡åæ¥æ:"> <el-date-picker style="width:100%" v-model="formData2.lastCalibrationDate" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" type="date" size="small" placeholder="éæ©æ¥æ"> </el-date-picker> </el-form-item> <el-form-item label="䏿¬¡æ ¡åæ¥æ:"> <el-date-picker style="width:100%" v-model="formData2.nextCalibrationDate" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" type="date" size="small" placeholder="éæ©æ¥æ"> </el-date-picker> <el-cascader v-model="formData2.insProductIds" :options="options" :show-all-levels="false" :props="props" placeholder="è¯·éæ©" size="small" style="width:100%" collapse-tags separator="," filterable clearable></el-cascader> </el-form-item> <el-form-item label="设å¤ç±»å:"> <el-select v-model="formData2.largeCategory" placeholder="è¯·éæ©" size="small" style="width:100%"> <el-option v-for="item in equipmentList" :key="item.value" :label="item.label" :value="item.value"> <el-select v-model="formData2.largeCategory" placeholder="è¯·éæ©" size="small" style="width:100%"> <el-option v-for="item in equipmentList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> @@ -309,28 +293,22 @@ <el-input v-model="formData2.unitPrice" size="small"></el-input> </el-form-item> <el-form-item label="å½åç¶æ:" required> <el-select v-model="formData2.deviceStatus" placeholder="è¯·éæ©" size="small" style="width:100%"> <el-option v-for="item in deviceStatusList" :key="item.value" :label="item.label" :value="item.value"> <el-select v-model="formData2.deviceStatus" placeholder="è¯·éæ©" size="small" style="width:100%"> <el-option v-for="item in deviceStatusList" :key="item.id" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> <el-form-item label="æ ¡åå¨æï¼æï¼:" required> <el-input v-model="formData2.calibrationDate" size="small"></el-input> </el-form-item> <el-form-item label="被ææäºº:"> <el-select v-model="formData2.authorizedPerson" multiple placeholder="è¯·éæ©" size="small" style="width:100%"> <el-option v-for="item in responsiblePersonList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> <el-form-item label="å¾ç:"> <div style="border: 1px solid #DCDFE6;border-radius:4px;height:32px;line-height:32px;display:flex;justify-content: space-around;font-size: 13px;"> <div v-show="formData2.imageName" class="picName">{{ formData2.imageName }}</div> <el-upload :action="action" :on-success="handleSuccessUpImg2" :show-file-list="false" accept='image/jpg,image/jpeg,image/png' :headers="uploadHeader" :on-change="beforeUpload" accept='image/jpg,image/jpeg,image/png' :headers="headers" :on-change="beforeUpload" :on-error="onError" ref='upload'> <el-button type="text" style="height:30px;padding-top:8px">ä¸ä¼ </el-button> </el-upload> src/views/CNAS/resourceDemand/device/component/operationInstruction.vue
@@ -2,7 +2,7 @@ <template> <div> <div style="margin: 10px 0;text-align: right"> <el-button size="small" type="primary" @click="getList">å·æ°</el-button> <!-- <el-button size="small" type="primary" @click="getList">å·æ°</el-button>--> <el-button size="small" type="primary" @click="dialogVisible = true">åæ§ç³è¯·</el-button> </div> <el-table :data="tableData" border height="calc(100vh - 18em)"> src/views/CNAS/resourceDemand/device/component/operationOverview.vue
@@ -67,6 +67,7 @@ <script> import EchartModule from '@/components/Echart/echart.vue' import {device} from "@/api/cnas/resourceDemand/device"; export default { components: { EchartModule }, @@ -143,7 +144,7 @@ }, //è·å设å¤è¿è¡æ»è§ä¿¡æ¯ getDeviceInfo(deviceId) { this.$axios.get(this.$api.deviceFault.getDevice + "/" + deviceId).then(res => { device({deviceId: deviceId}).then(res => { if (res.code == 200) { this.deviceData = res.data this.chartData.value = res.data.progress src/views/CNAS/resourceDemand/device/component/record.vue
@@ -3,23 +3,20 @@ <div> <div class="search"> <div class="search_thing"> <div class="search_label">æ ·åç¼å·ï¼</div> <el-input v-model="search.sampleCode" clearable placeholder="请è¾å ¥" size="small" style="width: 60%;" @keyup.enter.native="getTableList(clickNodeVal.value)"></el-input> <div class="search_label">管çç¼å·ï¼</div> <el-input v-model="search.managementNumber" clearable placeholder="请è¾å ¥" size="small" style="width: 60%;" <div class="search_label">æµç¨ç¼å·ï¼</div> <el-input v-model="search.deviceNumber" clearable placeholder="请è¾å ¥" size="small" style="width: 70%;" @keyup.enter.native="getTableList(clickNodeVal.value)"></el-input> </div> <div class="search_thing" style="padding-left: 30px;"> <el-button size="small" @click="resetSearch">é ç½®</el-button> <el-button size="small" type="primary" @click="getTableList(clickNodeVal.value)">æ¥ è¯¢</el-button> </div> <div class="btns" v-if="isMenuList != 1"> <div class="btns"> <el-button size="small" type="primary" @click="dialogVisible = true, openAdd()">æ° å»º</el-button> <el-button :loading="outLoading" size="small" type="primary" @click="openHandleOut">导 åº</el-button> <el-button :loading="outLoading" size="small" type="primary" @click="handleDown">导 åº</el-button> </div> </div> <div class="tables" style="margin-top: 10px;"> <div class="tables" style="margin-top: 16px;"> <el-table ref="Recordtable" :data="formParamList" height="calc(100vh - 20em)"> <!-- è¡¨æ ¼å --> <el-table-column label="åºå·" type="index" width="120"> @@ -27,29 +24,30 @@ <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span> </template> </el-table-column> <el-table-column label="æ ·åç¼å·" min-width="180" prop="sampleCode" /> <el-table-column label="æ ·åç¼å·" min-width="180" prop="deviceNumber" /> <el-table-column label="设å¤åç§°" min-width="150" prop="deviceName" /> <el-table-column label="管çç¼å·" min-width="150" prop="managementNumber" /> <el-table-column label="温度(°C)" min-width="120" prop="temperature" /> <el-table-column label="湿度(%RH)" min-width="120" prop="humidity" /> <el-table-column label="使ç¨å" min-width="120" prop="useBefore"> <template v-slot="scope"> {{ scope.row.useBefore === 1 ? 'è¯å¥½' : 'å¼å¸¸' }} {{ scope.row.useBefore === 1 ? 'æ£å¸¸' : '䏿£å¸¸' }} </template> </el-table-column> <el-table-column label="使ç¨å" min-width="120" prop="useAfter"> <template v-slot="scope"> {{ scope.row.useAfter === 1 ? 'è¯å¥½' : 'å¼å¸¸' }} {{ scope.row.useAfter === 1 ? 'æ£å¸¸' : '䏿£å¸¸' }} </template> </el-table-column> <!-- <el-table-column label="å¼å¸¸æ åµ" min-width="120" prop="abnormal" />--> <el-table-column label="å¼å¸¸æ åµ" min-width="120" prop="abnormal" /> <el-table-column label="使ç¨å¼å§æ¥æ" min-width="150" prop="useStartDate" /> <el-table-column label="使ç¨ç»ææ¥æ" min-width="150" prop="useEndDate" /> <el-table-column label="使ç¨äºº" min-width="120" prop="usePerson" /> <el-table-column label="夿³¨" min-width="120" prop="remark" /> <!-- æä½æé® --> <el-table-column fixed="right" label="æä½" width="150" align="center"> <el-table-column fixed="right" label="æä½" width="130"> <template slot-scope="scope"> <el-button size="small" type="text" @click="showDetailsDialog('edit', scope.row)">ç¼è¾</el-button> <el-button size="small" type="text" @click="showDetailsDialog('view', scope.row)">æ¥ç</el-button> <el-button size="small" type="text" @click="showDetailsDialog(scope.row)">æ¥ç详æ </el-button> <el-button size="small" type="text" @click="handleDeleteClick(scope.$index, scope.row)">å é¤</el-button> </template> </el-table-column> @@ -63,81 +61,100 @@ <el-form ref="form" :model="form" label-width="130px"> <el-row> <el-col :span="24"> <el-form-item :rules="[{ required: true, message: 'æ ·åç¼å·', trigger: 'blur' }]" label="æ ·åç¼å·:" prop="sampleCode"> <el-input v-model="form.sampleCode" :disabled="operationType === 'view'" size="small" style="width: 100%;"></el-input> <el-form-item label="æ ·åç¼å·:"> <el-input v-model="form.deviceNumber" disabled size="small" style="width: 100%;"></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="设å¤åç§°:" required> <el-input v-model="form.deviceName" :disabled="operationType === 'view'" size="small" style="width: 100%;"></el-input> <el-input v-model="form.deviceName" :disabled="true" size="small" style="width: 100%;"></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="管çç¼å·:" required> <el-input v-model="form.managementNumber" :disabled="operationType === 'view'" size="small" style="width: 100%;"></el-input> <el-input v-model="form.managementNumber" :disabled="true" size="small" style="width: 100%;"></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item :rules="[{ required: true, message: '请è¾å ¥æ¸©åº¦(°C)', trigger: 'blur' }]" label="温度(°C):" prop="temperature"> <el-input v-model="form.temperature" :disabled="isShow" size="small" style="width: 100%;"></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item :rules="[{ required: true, message: '请è¾å ¥æ¹¿åº¦(%RH)', trigger: 'blur' }]" label="湿度(%RH):" prop="humidity"> <el-input v-model="form.humidity" :disabled="isShow" size="small" style="width: 100%;"></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item :rules="[{ required: true, message: 'è¯·éæ©ä½¿ç¨å', trigger: 'change' }]" label="使ç¨å:" prop="useBefore"> <el-radio-group v-model="form.useBefore" :disabled="operationType === 'view'"> <el-radio :label="1">è¯å¥½</el-radio> <el-radio :label="0">å¼å¸¸</el-radio> <el-radio-group v-model="form.useBefore" :disabled="isShow"> <el-radio :label="1">æ£å¸¸</el-radio> <el-radio :label="0">䏿£å¸¸</el-radio> </el-radio-group> </el-form-item> </el-col> <el-col :span="12"> <el-form-item :rules="[{ required: true, message: 'è¯·éæ©ä½¿ç¨å', trigger: 'change' }]" label="使ç¨å:" prop="useAfter"> <el-radio-group v-model="form.useAfter" :disabled="operationType === 'view'"> <el-radio :label="1">è¯å¥½</el-radio> <el-radio :label="0">å¼å¸¸</el-radio> <el-radio-group v-model="form.useAfter" :disabled="isShow"> <el-radio :label="1">æ£å¸¸</el-radio> <el-radio :label="0">䏿£å¸¸</el-radio> </el-radio-group> </el-form-item> </el-col> <el-col v-if="form.useAfter === 0" :span="24"> <el-form-item :rules="[{ required: form.useAfter === 0, message: '请è¾å ¥å¼å¸¸æ åµ', trigger: 'blur' }]" label="å¼å¸¸æ åµ:" prop="abnormal"> <el-input v-model="form.abnormal" :disabled="isShow" size="small" style="width: 100%;" type="textarea"></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item :rules="[{ required: true, message: '请è¾å ¥ä½¿ç¨æ¥æ', trigger: 'blur' }]" label="ä½¿ç¨æ¥æ:" prop="useDateList"> <el-date-picker v-model="form.useDateList" :disabled="operationType === 'view'" end-placeholder="ç»ææ¥æ" format="yyyy-MM-dd HH:mm:ss" size="small" start-placeholder="å¼å§æ¥æ" style="width:100%" type="datetimerange" value-format="yyyy-MM-dd HH:mm:ss"> <el-date-picker v-model="form.useDateList" :disabled="isShow" value-format="yyyy-MM-dd" type="daterange" range-separator="è³" start-placeholder="å¼å§æ¥æ" end-placeholder="ç»ææ¥æ"> </el-date-picker> <!-- <el-date-picker v-model="form.useDateList" :disabled="isShow" end-placeholder="ç»ææ¥æ" format="yyyy-MM-dd HH:mm:ss" size="small" start-placeholder="å¼å§æ¥æ" style="width:100%" type="datetimerange" value-format="yyyy-MM-dd HH:mm:ss"> </el-date-picker> --> </el-form-item> </el-col> <el-col :span="12"> <el-form-item :rules="[{ required: true, message: '请è¾å ¥ä½¿ç¨äºº', trigger: 'change' }]" label="使ç¨äºº:" prop="usePersonId"> <el-select @change="usePersonName" v-model="form.usePersonId" :disabled="operationType === 'view'" placeholder="è¯·éæ©" size="small" style="width: 100%"> <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> </el-select> prop="usePerson"> <el-input v-model="form.usePerson" :disabled="isShow" size="small" style="width:100%"></el-input> <!-- <el-select v-model="form.usePerson" placeholder="è¯·éæ©" :disabled="isShow" size="small" style="width:100%"> <el-option v-for="item in responsiblePersonList" :key="item.name" :label="item.name" :value="item.id"> </el-option> </el-select> --> </el-form-item> </el-col> <el-col :span="24"> <el-form-item label="夿³¨:"> <el-input v-model="form.remark" :disabled="operationType === 'view'" type="textarea"></el-input> <el-input v-model="form.remark" :disabled="isShow" type="textarea"></el-input> </el-form-item> </el-col> </el-row> </el-form> <span slot="footer" class="dialog-footer"> <el-button @click="dialogVisible = false">å æ¶</el-button> <el-button v-if="operationType !== 'view'" type="primary" @click="saveRecord">ç¡® å®</el-button> </span> </el-dialog> <el-dialog :visible.sync="ratifyDialog" title="导åº" width="30%" @close="ratifyDialog = false, exportDate = ''"> <span>æ¶é´ï¼ <el-date-picker v-model="exportDate" format="yyyy-MM" placeholder="éæ©æä»½" size="small" style="width:100%" type="month" value-format="yyyy-MM"> </el-date-picker> </span> <span slot="footer" class="dialog-footer"> <el-button @click="ratifyDialog = false, exportDate = ''">å æ¶</el-button> <el-button :loading="outLoading" type="primary" @click="handleDown">导 åº</el-button> <el-button v-if="!isShow" @click="dialogVisible = false">å æ¶</el-button> <el-button v-if="!isShow" type="primary" @click="saveRecord">ç¡® å®</el-button> </span> </el-dialog> </div> src/views/CNAS/resourceDemand/device/index.vue
@@ -34,18 +34,16 @@ <div v-if="isShowAll" style="height: 100%;"> <el-tabs v-model="menuListActiveName" class="main_right" type="border-card"> <el-tab-pane label="è®¾å¤æ»è§" name="è®¾å¤æ»è§"> <!-- 宿æ¥å£ --> <overview v-if="menuListActiveName == 'è®¾å¤æ»è§'" :clickNodeVal="clickNodeVal" /> </el-tab-pane> <el-tab-pane label="设å¤å·¥å ·æç»" name="设å¤å·¥å ·æç»"> <!-- 宿æ¥å£ --> <management v-if="menuListActiveName == '设å¤å·¥å ·æç»'" :clickNodeVal="clickNodeVal" /> </el-tab-pane> <el-tab-pane label="èµæºé¢å®" name="èµæºé¢å®"> <resourceReservation v-if="menuListActiveName == 'èµæºé¢å®'" :clickNodeVal="clickNodeVal"/> </el-tab-pane> <el-tab-pane label="ä½ä¸æå¯¼ä¹¦" name="ä½ä¸æå¯¼ä¹¦"> <operationInstruction v-if="tabListActiveName == 'ä½ä¸æå¯¼ä¹¦'" :clickNodeVal="clickNodeVal" /> <operationInstruction v-if="menuListActiveName == 'ä½ä¸æå¯¼ä¹¦'" :clickNodeVal="clickNodeVal" /> </el-tab-pane> </el-tabs> </div> @@ -55,37 +53,29 @@ <operationOverview v-if="tabListActiveName == '设å¤è¿è¡æ»è§'" :clickNodeVal="clickNodeVal"/> </el-tab-pane> <el-tab-pane label="è®¾å¤æ¡£æ¡" name="è®¾å¤æ¡£æ¡"> <!-- 宿æ¥å£ --> <files v-if="tabListActiveName == 'è®¾å¤æ¡£æ¡'" :clickNodeVal="clickNodeVal" /> </el-tab-pane> <el-tab-pane label="设å¤éªæ¶" name="设å¤éªæ¶"> <!-- 宿æ¥å£ --> <equipment-acceptance v-if="tabListActiveName == '设å¤éªæ¶'" :clickNodeVal="clickNodeVal"></equipment-acceptance> <checkAndAccept v-if="tabListActiveName == '设å¤éªæ¶'" :clickNodeVal="clickNodeVal"/> </el-tab-pane> <el-tab-pane label="è®¾å¤æ ¡å" name="è®¾å¤æ ¡å"> <!-- 宿æ¥å£ --> <calibration v-if="tabListActiveName == 'è®¾å¤æ ¡å'" :clickNodeVal="clickNodeVal" /> </el-tab-pane> <el-tab-pane label="è®¾å¤æ ¸æ¥" name="è®¾å¤æ ¸æ¥"> <check v-if="tabListActiveName == 'è®¾å¤æ ¸æ¥'" :clickNodeVal="clickNodeVal"/> </el-tab-pane> <el-tab-pane label="设å¤ç»´æ¤" name="设å¤ç»´æ¤"> <!-- 宿æ¥å£ --> <maintenance v-if="tabListActiveName == '设å¤ç»´æ¤'" :clickNodeVal="clickNodeVal" /> </el-tab-pane> <el-tab-pane label="设å¤åç¨" name="设å¤åç¨"> <!-- 宿æ¥å£ --> <borrow v-if="tabListActiveName == '设å¤åç¨'" :clickNodeVal="clickNodeVal" /> </el-tab-pane> <el-tab-pane label="è®¾å¤æ é" name="è®¾å¤æ é"> <fault v-if="tabListActiveName == 'è®¾å¤æ é'" :clickNodeVal="clickNodeVal" /> </el-tab-pane> <!-- 宿æ¥å£ --> <el-tab-pane label="使ç¨è®°å½" name="使ç¨è®°å½"> <record v-if="tabListActiveName == '使ç¨è®°å½'" :clickNodeVal="clickNodeVal" /> </el-tab-pane> <!-- 宿æ¥å£ --> <el-tab-pane label="设å¤åç¨/å¯ç¨" name="设å¤åç¨/å¯ç¨"> <state v-if="tabListActiveName == '设å¤åç¨/å¯ç¨'" :clickNodeVal="clickNodeVal" /> </el-tab-pane> @@ -102,7 +92,7 @@ import operationInstruction from "./component/operationInstruction.vue"; import operationOverview from "./component/operationOverview.vue"; import files from "./component/files.vue"; import EquipmentAcceptance from "./component/equipmentAcceptance.vue"; import checkAndAccept from "./component/check-and-accept.vue"; import calibration from "./component/calibration.vue"; import check from "./component/check.vue"; import maintenance from "./component/maintenance.vue"; @@ -116,7 +106,7 @@ } from '@/api/cnas/resourceDemand/device.js' export default { components: { EquipmentAcceptance, checkAndAccept, operationOverview, files, calibration,