From 54ca5d675acc4583de3bea0cffdac10cdf9dc2d4 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期四, 17 四月 2025 17:21:19 +0800 Subject: [PATCH] 1.设备使用授权页面开发、联调 2.设备保养、量值溯源计划添加查看功能 --- src/api/cnas/resourceDemand/device.js | 57 ++++++ src/views/CNAS/resourceDemand/device/component/equipmentMaintenance.vue | 1 src/views/CNAS/resourceDemand/device/component/quantityValueTraceabilityPlan.vue | 31 +- src/views/CNAS/resourceDemand/device/index.vue | 6 src/views/CNAS/resourceDemand/device/component/addVerificationYearPlanDia.vue | 2 src/views/CNAS/resourceDemand/device/component/addYearPlanDia.vue | 2 src/views/CNAS/resourceDemand/device/component/usageAuthorization.vue | 376 +++++++++++++++++++++++++++++++++++++++++ src/views/CNAS/resourceDemand/device/component/equipmentMaintenancePlan.vue | 25 +- 8 files changed, 470 insertions(+), 30 deletions(-) diff --git a/src/api/cnas/resourceDemand/device.js b/src/api/cnas/resourceDemand/device.js index fb3c7ea..5f2d7fd 100644 --- a/src/api/cnas/resourceDemand/device.js +++ b/src/api/cnas/resourceDemand/device.js @@ -1263,3 +1263,60 @@ data: query, }); } +//璁惧浣跨敤鎺堟潈 鍒嗛〉鏌ヨ +export function selectDeviceImpowerByPage(query) { + return request({ + url: "/deviceImpower/selectDeviceImpowerByPage", + method: "get", + params: query, + }); +} +//璁惧浣跨敤鎺堟潈 鏌ヨ璇︽儏 +export function getImpowerDetail(query) { + return request({ + url: "/deviceImpower/getImpowerDetail", + method: "get", + params: query, + }); +} +//璁惧浣跨敤鎺堟潈 鍒犻櫎 +export function deleteImpower(query) { + return request({ + url: "/deviceImpower/deleteImpower", + method: "delete", + params: query, + }); +} +//璁惧浣跨敤鎺堟潈 瀵煎嚭 +export function exportDeviceImpower(query) { + return request({ + url: "/deviceImpower/exportDeviceImpower", + method: "get", + responseType: "blob", + params: query, + }); +} +//璁惧浣跨敤鎺堟潈 鏂板 +export function addImpower(query) { + return request({ + url: "/deviceImpower/addImpower", + method: "post", + data: query, + }); +} +//璁惧浣跨敤鎺堟潈 淇敼 +export function updateImpower(query) { + return request({ + url: "/deviceImpower/updateImpower", + method: "post", + data: query, + }); +} +//璁惧浣跨敤鎺堟潈 鎵瑰噯鎺堟潈 +export function reviewImpowerStatus(query) { + return request({ + url: "/deviceImpower/reviewImpowerStatus", + method: "post", + data: query, + }); +} diff --git a/src/views/CNAS/resourceDemand/device/component/addVerificationYearPlanDia.vue b/src/views/CNAS/resourceDemand/device/component/addVerificationYearPlanDia.vue index 29618b3..894b4ad 100644 --- a/src/views/CNAS/resourceDemand/device/component/addVerificationYearPlanDia.vue +++ b/src/views/CNAS/resourceDemand/device/component/addVerificationYearPlanDia.vue @@ -14,7 +14,7 @@ <div style="margin: 10px 0"> <el-table ref="yearTable" :data="examinePlanDetailsList" id="templateParamTable" row-key="deviceId" v-loading="yearTableLoading" - :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border height="500px"> + :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border height="560px"> <el-table-column label="璁惧鍚嶇О" min-width="190" prop="deviceName"> <template slot-scope="scope"> <el-input v-model="scope.row.deviceName" clearable size="small"></el-input> diff --git a/src/views/CNAS/resourceDemand/device/component/addYearPlanDia.vue b/src/views/CNAS/resourceDemand/device/component/addYearPlanDia.vue index 951dfbc..d750d8e 100644 --- a/src/views/CNAS/resourceDemand/device/component/addYearPlanDia.vue +++ b/src/views/CNAS/resourceDemand/device/component/addYearPlanDia.vue @@ -12,7 +12,7 @@ </el-date-picker> </div> <div style="margin: 10px 0"> - <el-table id="templateParamTable" ref="yearTable" :data="calibrationPlanDetailList" height="300px" + <el-table id="templateParamTable" ref="yearTable" :data="calibrationPlanDetailList" height="560px" v-loading="yearTableLoading" :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border row-key="deviceId" style="width: 100% ;"> diff --git a/src/views/CNAS/resourceDemand/device/component/equipmentMaintenance.vue b/src/views/CNAS/resourceDemand/device/component/equipmentMaintenance.vue index 08aea3d..ed7d0e6 100644 --- a/src/views/CNAS/resourceDemand/device/component/equipmentMaintenance.vue +++ b/src/views/CNAS/resourceDemand/device/component/equipmentMaintenance.vue @@ -86,7 +86,6 @@ search: { maintenanceDate: '', }, - total: 0, outLoading: false, tableData: [], tableLoading: false, diff --git a/src/views/CNAS/resourceDemand/device/component/equipmentMaintenancePlan.vue b/src/views/CNAS/resourceDemand/device/component/equipmentMaintenancePlan.vue index 549402a..e6ceeff 100644 --- a/src/views/CNAS/resourceDemand/device/component/equipmentMaintenancePlan.vue +++ b/src/views/CNAS/resourceDemand/device/component/equipmentMaintenancePlan.vue @@ -28,6 +28,7 @@ <template slot-scope="scope"> <el-button :disabled="scope.row.status === 1" size="small" type="text" @click="handleForm('edit', scope.row)">缂栬緫</el-button> + <el-button size="small" type="text" @click="handleForm('view', scope.row)">鏌ョ湅</el-button> <el-button :disabled="scope.row.status === 1" size="small" type="text" @click="tellApprove(scope.row.maintenancePlanId)">瀹℃牳閫氱煡</el-button> <el-button :disabled="scope.row.status === 1 || userId != scope.row.auditId" size="small" type="text" @@ -47,54 +48,54 @@ <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="applicationForm" title="璁惧淇濆吇璁″垝琛�" width="80%" @close="closeDialog"> <div style="display: flex;align-items: center;"> - <el-button v-if="operationType !== 'check'" size="small" type="primary" @click="addTableRow">娣诲姞</el-button> + <el-button v-if="operationType === 'edit'" size="small" type="primary" @click="addTableRow">娣诲姞</el-button> <span style="width: 60px;margin-left: 10px">骞翠唤锛�</span> <el-date-picker v-model="form.planYear" type="year" value-format="yyyy" clearable size="small" format="yyyy" - placeholder="閫夋嫨骞�"> + placeholder="閫夋嫨骞�" :disabled="operationType !== 'edit'"> </el-date-picker> </div> <div style="margin: 10px 0"> <el-table ref="yearTable" :data="deviceMaintenancePlanDetails" id="templateParamTable" row-key="deviceId" :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border - height="300px" style="width: 100% ;"> + height="560px" style="width: 100% ;"> <el-table-column align="center" header-align="center" label="搴忓彿" type="index" width="60"></el-table-column> <el-table-column label="璁惧鍚嶇О" min-width="170" prop="deviceName"> <template slot-scope="scope"> - <el-input v-model="scope.row.deviceName" :disabled="operationType === 'check'" clearable + <el-input v-model="scope.row.deviceName" :disabled="operationType !== 'edit'" clearable size="small"></el-input> </template> </el-table-column> <el-table-column label="璁惧缂栧彿" min-width="140" prop="deviceNumber"> <template slot-scope="scope"> - <el-input v-model="scope.row.deviceNumber" :disabled="operationType === 'check'" clearable + <el-input v-model="scope.row.deviceNumber" :disabled="operationType !== 'edit'" clearable size="small"></el-input> </template> </el-table-column> <el-table-column label="褰掑睘瀹為獙瀹�" min-width="120" prop="storagePoint"> <template slot-scope="scope"> - <el-input v-model="scope.row.storagePoint" :disabled="operationType === 'check'" clearable + <el-input v-model="scope.row.storagePoint" :disabled="operationType !== 'edit'" clearable size="small"></el-input> </template> </el-table-column> <el-table-column label="淇濆吇鍏抽敭閮ㄤ綅" min-width="120" prop="maintenanceSite"> <template slot-scope="scope"> - <el-input v-model="scope.row.maintenanceSite" :disabled="operationType === 'check'" clearable size="small" + <el-input v-model="scope.row.maintenanceSite" :disabled="operationType !== 'edit'" clearable size="small" type="textarea"></el-input> </template> </el-table-column> <el-table-column label="淇濆吇鍐呭" min-width="120" prop="maintenanceContent"> <template slot-scope="scope"> - <el-input v-model="scope.row.maintenanceContent" :disabled="operationType === 'check'" clearable + <el-input v-model="scope.row.maintenanceContent" :disabled="operationType !== 'edit'" clearable size="small" type="textarea"></el-input> </template> </el-table-column> <el-table-column label="淇濆吇鍛ㄦ湡" min-width="90" prop="maintenanceIntervals"> <template slot-scope="scope"> - <el-input v-model="scope.row.maintenanceIntervals" :disabled="operationType === 'check'" clearable + <el-input v-model="scope.row.maintenanceIntervals" :disabled="operationType !== 'edit'" clearable size="small"></el-input> </template> </el-table-column> - <el-table-column fixed="right" label="鎿嶄綔" width="80" align="center" v-if="operationType !== 'check'"> + <el-table-column fixed="right" label="鎿嶄綔" width="80" align="center" v-if="operationType === 'edit'"> <template slot-scope="scope"> <el-button style="color: #f56c6c" type="text" @click="deleteRow(scope.$index)">鍒犻櫎</el-button> </template> @@ -103,7 +104,7 @@ </div> <span slot="footer" class="dialog-footer"> <el-button @click="closeDialog">鍙� 娑�</el-button> - <el-button v-if="operationType !== 'check'" :loading="submitFormLoading" type="primary" @click="submitForm">纭� + <el-button v-if="operationType === 'edit'" :loading="submitFormLoading" type="primary" @click="submitForm">纭� 璁�</el-button> <el-button v-if="operationType === 'check'" :loading="submitFormLoading" type="primary" @click="checkStatus(0)">涓嶉�氳繃</el-button> @@ -124,7 +125,7 @@ </el-table> <span slot="footer" class="dialog-footer"> <el-button @click="addEquipDia = false">鍙� 娑�</el-button> - <el-button v-if="operationType !== 'check'" :loading="submitFormLoading" type="primary" + <el-button v-if="operationType === 'edit'" :loading="submitFormLoading" type="primary" @click="changeMachineName">纭� 璁�</el-button> </span> diff --git a/src/views/CNAS/resourceDemand/device/component/quantityValueTraceabilityPlan.vue b/src/views/CNAS/resourceDemand/device/component/quantityValueTraceabilityPlan.vue index bb806b6..54d0c87 100644 --- a/src/views/CNAS/resourceDemand/device/component/quantityValueTraceabilityPlan.vue +++ b/src/views/CNAS/resourceDemand/device/component/quantityValueTraceabilityPlan.vue @@ -25,10 +25,11 @@ </el-table-column> <el-table-column label="鎵瑰噯鏃堕棿" min-width="180" prop="auditDate"></el-table-column> <!-- 鎿嶄綔鎸夐挳 --> - <el-table-column align="center" fixed="right" label="鎿嶄綔" min-width="240"> + <el-table-column align="center" fixed="right" label="鎿嶄綔" min-width="270"> <template slot-scope="scope"> <el-button :disabled="scope.row.status === 1" size="small" type="text" @click="handleForm('edit', scope.row)">缂栬緫</el-button> + <el-button size="small" type="text" @click="handleForm('view', scope.row)">鏌ョ湅</el-button> <el-button :disabled="scope.row.status === 1" size="small" type="text" @click="tellApprove(scope.row.traceabilityManagementId)">鎵瑰噯閫氱煡</el-button> <el-button :disabled="scope.row.status === 1 || userId != scope.row.auditId" size="small" type="text" @@ -49,66 +50,66 @@ <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="applicationForm" title="浠櫒璁惧閲忓�兼函婧愮鐞嗘�讳綋璁″垝" width="80%" @close="closeDialog"> <div style="display: flex;align-items: center;"> - <el-button v-if="operationType !== 'check'" size="small" type="primary" @click="addTableRow">娣诲姞</el-button> + <el-button v-if="operationType === 'edit'" size="small" type="primary" @click="addTableRow">娣诲姞</el-button> <span style="width: 60px;margin-left: 10px">骞翠唤锛�</span> <el-date-picker v-model="form.planYear" type="year" value-format="yyyy" clearable size="small" format="yyyy" - placeholder="閫夋嫨骞�"> + placeholder="閫夋嫨骞�" :disabled="operationType !== 'edit'"> </el-date-picker> </div> <div style="margin: 10px 0"> - <el-table ref="yearTable" :data="deviceTraceabilityManagementDetails" height="300px" id="templateParamTable" + <el-table ref="yearTable" :data="deviceTraceabilityManagementDetails" height="560px" id="templateParamTable" :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border row-key="deviceId" v-loading="yearTableLoading"> <el-table-column align="center" header-align="center" label="搴忓彿" type="index" width="60"></el-table-column> <el-table-column label="璁惧鍚嶇О" min-width="170" prop="deviceId"> <template slot-scope="scope"> - <el-input v-model="scope.row.deviceName" :disabled="operationType === 'check'" clearable + <el-input v-model="scope.row.deviceName" :disabled="operationType !== 'edit'" clearable size="small"></el-input> </template> </el-table-column> <el-table-column label="鍨嬪彿" min-width="140" prop="specificationModel"> <template slot-scope="scope"> - <el-input v-model="scope.row.specificationModel" :disabled="operationType === 'check'" clearable + <el-input v-model="scope.row.specificationModel" :disabled="operationType !== 'edit'" clearable size="small"></el-input> </template> </el-table-column> <el-table-column label="璁惧缂栧彿" min-width="140" prop="managementNumber"> <template slot-scope="scope"> - <el-input v-model="scope.row.managementNumber" :disabled="operationType === 'check'" clearable + <el-input v-model="scope.row.managementNumber" :disabled="operationType !== 'edit'" clearable size="small"></el-input> </template> </el-table-column> <el-table-column label="鎶�鏈寚鏍囧弬鏁�" min-width="150" prop="technicalIndexParameters"> <template slot-scope="scope"> - <el-input v-model="scope.row.technicalIndexParameters" :disabled="operationType === 'check'" clearable + <el-input v-model="scope.row.technicalIndexParameters" :disabled="operationType !== 'edit'" clearable size="small" type="textarea"></el-input> </template> </el-table-column> <el-table-column label="鎶�鏈寚鏍囪姹�" min-width="150" prop="technicalRequirements"> <template slot-scope="scope"> - <el-input v-model="scope.row.technicalRequirements" :disabled="operationType === 'check'" clearable + <el-input v-model="scope.row.technicalRequirements" :disabled="operationType !== 'edit'" clearable size="small" type="textarea"></el-input> </template> </el-table-column> <el-table-column label="妫�瀹氬懆鏈�" min-width="120" prop="verificationCycle"> <template slot-scope="scope"> - <el-input v-model="scope.row.verificationCycle" :disabled="operationType === 'check'" clearable + <el-input v-model="scope.row.verificationCycle" :disabled="operationType !== 'edit'" clearable size="small" type="textarea"></el-input> </template> </el-table-column> <el-table-column label="妫�瀹氬崟浣�" min-width="90" prop="verificationUnit"> <template slot-scope="scope"> - <el-input v-model="scope.row.verificationUnit" :disabled="operationType === 'check'" clearable + <el-input v-model="scope.row.verificationUnit" :disabled="operationType !== 'edit'" clearable size="small" type="textarea"></el-input> </template> </el-table-column> <el-table-column label="澶囨敞" min-width="90" prop="remark"> <template slot-scope="scope"> - <el-input v-model="scope.row.remark" :disabled="operationType === 'check'" clearable size="small" + <el-input v-model="scope.row.remark" :disabled="operationType !== 'edit'" clearable size="small" type="textarea"></el-input> </template> </el-table-column> - <el-table-column fixed="right" label="鎿嶄綔" width="80" align="center" v-if="operationType !== 'check'"> + <el-table-column fixed="right" label="鎿嶄綔" width="80" align="center" v-if="operationType === 'edit'"> <template slot-scope="scope"> <el-button style="color: #f56c6c" type="text" @click="deleteRow(scope.$index)">鍒犻櫎</el-button> </template> @@ -117,7 +118,7 @@ </div> <span slot="footer" class="dialog-footer"> <el-button @click="closeDialog">鍙� 娑�</el-button> - <el-button v-if="operationType !== 'check'" :loading="submitFormLoading" type="primary" @click="submitForm">纭� + <el-button v-if="operationType === 'edit'" :loading="submitFormLoading" type="primary" @click="submitForm">纭� 璁�</el-button> <el-button v-if="operationType === 'check'" :loading="submitFormLoading" type="primary" @click="checkStatus(0)">涓嶉�氳繃</el-button> @@ -137,7 +138,7 @@ </el-table> <span slot="footer" class="dialog-footer"> <el-button @click="addEquipDia = false">鍙� 娑�</el-button> - <el-button v-if="operationType !== 'check'" :loading="submitFormLoading" type="primary" + <el-button v-if="operationType === 'edit'" :loading="submitFormLoading" type="primary" @click="changeMachineName">纭� 璁�</el-button> </span> diff --git a/src/views/CNAS/resourceDemand/device/component/usageAuthorization.vue b/src/views/CNAS/resourceDemand/device/component/usageAuthorization.vue new file mode 100644 index 0000000..78d4681 --- /dev/null +++ b/src/views/CNAS/resourceDemand/device/component/usageAuthorization.vue @@ -0,0 +1,376 @@ +<template> + <div> + <div class="search"> + <el-button size="small" type="primary" @click="refreshTableList">鍒� 鏂�</el-button> + <el-button size="small" type="primary" @click="openDia('add')">鏂� 澧�</el-button> + <el-button :loading="outLoading" size="small" type="primary" @click="openHandleOut">瀵� 鍑�</el-button> + </div> + <div> + <lims-table :tableData="tableData" :column="column" + height="calc(100vh - 20em)" @pagination="pagination" + :page="page" :tableLoading="tableLoading"></lims-table> + </div> + <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="usageTableDia" + title="璁惧淇濆吇璁″垝琛�" width="80%" @close="closeDialog"> + <div style="display: flex;align-items: center;"> + <el-button size="small" type="primary" @click="addTableRow">娣诲姞</el-button> + <span style="width: 60px;margin-left: 10px">骞翠唤锛�</span> + <el-date-picker v-model="form.impowerYear" type="year" value-format="yyyy" clearable size="small" format="yyyy" + placeholder="閫夋嫨骞�"> + </el-date-picker> + </div> + <div style="margin: 10px 0"> + <el-table ref="usageTableData" :data="usageTableData" id="templateParamTable" row-key="deviceId" + :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border + height="560px" style="width: 100% ;"> + <el-table-column align="center" header-align="center" label="搴忓彿" type="index" width="60"></el-table-column> + <el-table-column label="璁惧鍚嶇О" min-width="170" prop="deviceName"> + <template slot-scope="scope"> + <el-input v-model="scope.row.deviceName" clearable + size="small" :disabled="operationType === 'check'"></el-input> + </template> + </el-table-column> + <el-table-column label="璁惧缂栧彿" min-width="140" prop="deviceNumber"> + <template slot-scope="scope"> + <el-input v-model="scope.row.deviceNumber" clearable + size="small" :disabled="operationType === 'check'"></el-input> + </template> + </el-table-column> + <el-table-column label="瑙勬牸鍨嬪彿" min-width="120" prop="model"> + <template slot-scope="scope"> + <el-input v-model="scope.row.model" clearable + size="small" :disabled="operationType === 'check'"></el-input> + </template> + </el-table-column> + <el-table-column label="妫�娴嬮」鐩�" min-width="120" prop="inspectionItem<"> + <template slot-scope="scope"> + <el-input v-model="scope.row.inspectionItem" clearable size="small" + :disabled="operationType === 'check'"></el-input> + </template> + </el-table-column> + <el-table-column label="琚巿鏉冧汉" min-width="120" prop="delegatee"> + <template slot-scope="scope"> + <el-select v-model="scope.row.delegatedUserArr" + clearable filterable multiple + :disabled="operationType === 'check'" + placeholder="璇烽�夋嫨" size="small" style="width: 100%;"> + <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </template> + </el-table-column> + <el-table-column fixed="right" label="鎿嶄綔" width="80" align="center"> + <template slot-scope="scope"> + <el-button style="color: #f56c6c" type="text" @click="deleteRow(scope.$index)">鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="closeDialog">鍙� 娑�</el-button> + <el-button v-if="operationType !== 'check'" :loading="submitFormLoading" type="primary" @click="submitForm">纭</el-button> + <el-button v-if="operationType === 'check'" :loading="submitFormLoading" type="primary" + @click="checkStatus(0)">涓嶉�氳繃</el-button> + <el-button v-if="operationType === 'check'" :loading="submitFormLoading" type="primary" + @click="checkStatus(1)">閫氳繃</el-button> + </span> + </el-dialog> + <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="addEquipDia" title="娣诲姞璁惧" + width="50%"> + <div style="display: flex;align-items: center;"> + <span style="width: 90px;margin-left: 10px">琚巿鏉冧汉锛�</span> + <el-select v-model="delegatedUser" clearable filterable multiple + placeholder="璇烽�夋嫨" size="small" style="width: 100%;"> + <el-option v-for="item in responsibleOptions" :key="item.name" :label="item.name" :value="item.name"> + </el-option> + </el-select> + </div> + <el-table ref="multipleTable" :data="equipOptions" tooltip-effect="dark" height="500" style="width: 100%" + :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border + @selection-change="handleSelectionChange"> + <el-table-column type="selection" width="55"></el-table-column> + <el-table-column label="璁惧鍚嶇О" prop="label" width="190"></el-table-column> + <el-table-column prop="value" label="璁惧缂栧彿" width="130"></el-table-column> + <el-table-column prop="managementNumber" label="褰掑睘瀹為獙瀹�"></el-table-column> + </el-table> + <span slot="footer" class="dialog-footer"> + <el-button @click="addEquipDia = false">鍙� 娑�</el-button> + <el-button :loading="submitFormLoading" type="primary" @click="changeMachineName">纭</el-button> + </span> + </el-dialog> + </div> +</template> + +<script> +import limsTable from "@/components/Table/lims-table.vue"; +import { + addImpower, + deleteImpower, deviceScopeSearch, getImpowerDetail, reviewImpowerStatus, + selectDeviceImpowerByPage, updateImpower +} from "@/api/cnas/resourceDemand/device"; +import {exportQualityMonitorDetail} from "@/api/cnas/process/ensureResults/qualityMonitor"; +import {selectUserCondition} from "@/api/system/user"; + +export default { + name: '', + // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� + components: {limsTable}, + props: { + clickNodeVal: { + type: Object, + default: () => { + } + } + }, + data() { + // 杩欓噷瀛樻斁鏁版嵁 + return { + outLoading: false, + tableData: [], + tableLoading: false, + page: { + total: 0, + size: 20, + current: 1 + }, + column: [ + { label: '璁″垝骞翠唤', prop: 'impowerYear' }, + { label: '缂栧埗浜�', prop: 'compiler' }, + { label: '缂栧埗鏃堕棿', prop: 'datePreparation' }, + { label: '鎺堟潈浜�', prop: 'audit' }, + { label: '鎺堟潈鏃ユ湡', prop: 'auditDate' }, + { + dataType: 'action', + label: '鎿嶄綔', + operation: [ + { + name: '缂栬緫', + type: 'text', + clickFun: (row) => { + this.openDia('edit', row); + }, + }, + { + name: '鎺堟潈', + type: 'text', + clickFun: (row) => { + this.openDia('check', row); + }, + }, + { + name: '鍒犻櫎', + type: 'text', + clickFun: (row) => { + this.handleDeleteClick(row); + }, + }, + ] + } + ], + responsibleOptions: [], + operationType: '', + usageTableDia: false, + usageTableData: [], + submitFormLoading: false, + addEquipDia: false, + equipOptions: [], + selectionRows: [], + form: { + impowerYear: '' + }, + delegatedUser: [], + impowerId: '' + }; + }, + mounted() { + this.refreshTableList() + }, + // 鏂规硶闆嗗悎 + methods: { + // 鐐瑰嚮鍒锋柊 + refreshTableList () { + this.page.current = 1; + this.getTableList() + }, + // 鍒嗛〉鍒囨崲 + pagination(page) { + this.page.size = page.limit + this.getTableList() + }, + getTableList () { + this.tableLoading = true + selectDeviceImpowerByPage({ + ...this.page + }).then(res => { + this.tableLoading = false + this.tableData = res.data.records + this.page.total = res.data.total + }).catch(err => { + this.tableLoading = false + }) + }, + // 鎵撳紑鎿嶄綔寮规 + openDia (type, row) { + this.operationType = type + this.usageTableDia = true + this.form = { + impowerYear: '', + usageTableData: [], + } + this.usageTableData = [] + if (row) { + this.impowerId = row.impowerId + getImpowerDetail({ impowerId: this.impowerId }).then(res => { + if (res.code === 200) { + this.form = res.data + this.usageTableData = this.form.usageTableData + } + }).catch(error => { + console.error(error) + }) + } + this.getEquipOptions() + this.getUserList() + }, + closeDialog () { + this.usageTableDia = false + this.getTableList() + }, + // 娣诲姞璁惧 + addTableRow() { + this.addEquipDia = true + this.delegatedUser = this.responsibleOptions.map((item) => item.name); + this.getEquipOptions() + }, + // 鍒犻櫎琛ㄦ牸琛� + deleteRow(index) { + this.usageTableData.splice(index, 1) + }, + // 鎻愪氦鏂板鍜屼慨鏀� + submitForm() { + this.form.usageTableData = this.HaveJson(this.usageTableData) + this.form.usageTableData.forEach((item) => { + item.delegatedUser = item.delegatedUserArr.join(',') + }) + this.submitFormLoading = true + if (this.operationType === 'add') { + addImpower(this.form).then(res => { + if (res.code == 200) { + this.$message.success('鏂板鎴愬姛') + this.usageTableDia = false + this.refreshTableList() + } + this.submitFormLoading = false + }).catch(err => { + this.submitFormLoading = false + }) + } else { + updateImpower(this.form).then(res => { + if (res.code == 200) { + this.$message.success('淇敼鎴愬姛') + this.usageTableDia = false + this.refreshTableList() + } + this.submitFormLoading = false + }).catch(err => { + this.submitFormLoading = false + }) + } + }, + // 鎻愪氦瀹℃牳 + checkStatus(status) { + const params = { + status: status, + impowerId: this.impowerId + } + reviewImpowerStatus(params).then(res => { + if (res.code == 200) { + this.$message.success('瀹℃牳鎴愬姛') + this.usageTableDia = false + this.refreshTableList() + } + this.submitFormLoading = false + }).catch(err => { + this.submitFormLoading = false + }) + }, + handleSelectionChange(selection) { + this.selectionRows = selection + }, + // 璧嬪�间华鍣ㄧ紪鍙� + changeMachineName() { + this.deviceMaintenancePlanDetails = [] + this.selectionRows.map(val => { + this.usageTableData.push({ deviceId: val.id, deviceName: val.label, deviceNumber: val.value, model: val.specificationModel, delegatedUserArr: this.delegatedUser }) + }) + this.addEquipDia = false + }, + // 鑾峰彇鎵�鏈夎澶� + getEquipOptions() { + this.equipOptions = [] + deviceScopeSearch({ status: 0 }).then(res => { + if (res.code === 200 && res.data) { + this.equipOptions = res.data.map(m => { + m.value = m.managementNumber + m.label = m.deviceName + return m + }) + } + }).catch(error => { + console.error(error) + }) + }, + openHandleOut (row) { + exportQualityMonitorDetail({ impowerId: row.impowerId }).then(res => { + this.outLoading = false + const blob = new Blob([res], { type: 'application/msword' }); + this.$download.saveAs(blob, row.monitorName + '.docx') + }) + }, + handleDeleteClick(row) { + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ枃浠�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + deleteImpower({ id: row.impowerId }).then(res => { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + this.refreshTableList() + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + // 鑾峰彇璐熻矗浜轰俊鎭帴鍙� + getUserList() { + selectUserCondition({type: 2}).then(res => { + if (res.code == 200) { + this.responsibleOptions = res.data + } + }) + }, + }, + watch: { + // 鐩戝惉鐐瑰嚮el-tree鐨勬暟鎹紝杩涜鏁版嵁鍒锋柊 + clickNodeVal(newVal) { + if (newVal.value) { + this.refreshTableList(); + } + }, + }, +}; +</script> + +<style scoped> +.search { + height: 46px; + text-align: right; + margin-top: 10px; +} +</style> diff --git a/src/views/CNAS/resourceDemand/device/index.vue b/src/views/CNAS/resourceDemand/device/index.vue index f3f4170..063a9b2 100644 --- a/src/views/CNAS/resourceDemand/device/index.vue +++ b/src/views/CNAS/resourceDemand/device/index.vue @@ -55,6 +55,10 @@ <quantity-value-traceability-plan v-if="menuListActiveName == '閲忓�兼函婧愯鍒�'" :clickNodeVal="clickNodeVal"></quantity-value-traceability-plan> </el-tab-pane> + <el-tab-pane label="璁惧浣跨敤鎺堟潈" name="璁惧浣跨敤鎺堟潈"> + <usage-authorization v-if="menuListActiveName == '璁惧浣跨敤鎺堟潈'" + :clickNodeVal="clickNodeVal"></usage-authorization> + </el-tab-pane> <el-tab-pane label="鍒╃敤澶栭儴浠櫒璁惧" name="鍒╃敤澶栭儴浠櫒璁惧"> <using-external-instruments v-if="menuListActiveName == '鍒╃敤澶栭儴浠櫒璁惧'" :clickNodeVal="clickNodeVal"></using-external-instruments> </el-tab-pane> @@ -131,6 +135,7 @@ import EquipmentAcceptance from "./component/equipmentAcceptance.vue"; import QuantityValueTraceabilityPlan from "./component/quantityValueTraceabilityPlan.vue"; import equipmentMaintenance from "./component/equipmentMaintenance.vue"; +import usageAuthorization from "./component/usageAuthorization.vue"; import { treeDevice, } from '@/api/cnas/resourceDemand/device.js' @@ -160,6 +165,7 @@ resourceReservation, operationInstruction, equipmentMaintenance, + usageAuthorization, }, data() { return { -- Gitblit v1.9.3