From 06ca842a5219511302497d0a87be4293ae7cb7a0 Mon Sep 17 00:00:00 2001 From: zhuo <2089219845@qq.com> Date: 星期四, 17 四月 2025 23:10:07 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- /dev/null | 287 -------------- src/api/cnas/resourceDemand/device.js | 117 ++++- src/views/CNAS/resourceDemand/device/component/equipmentMaintenance.vue | 289 ++++++++++++++ src/views/CNAS/resourceDemand/device/component/quantityValueTraceabilityPlan.vue | 31 src/views/CNAS/resourceDemand/device/index.vue | 16 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 9 files changed, 788 insertions(+), 357 deletions(-) diff --git a/src/api/cnas/resourceDemand/device.js b/src/api/cnas/resourceDemand/device.js index 58189d3..5f2d7fd 100644 --- a/src/api/cnas/resourceDemand/device.js +++ b/src/api/cnas/resourceDemand/device.js @@ -874,42 +874,6 @@ }); } -//璁惧淇濆吇鍗曟潯瀵煎嚭 -export function exportMaintenanceRecord(query) { - return request({ - url: "/deviceMaintain/exportMaintenanceRecord", - method: "get", - responseType: "blob", - params: query, - }); -} - -//璁惧缁存姢鍒犻櫎 -export function deleteDeviceMaintenance(query) { - return request({ - url: "/deviceMaintain/deleteDeviceMaintenance", - method: "delete", - params: query, - }); -} - -// 鏂板璁惧缁存姢淇濆吇 -export function addDeviceMaintenance(data) { - return request({ - url: "/deviceMaintain/addDeviceMaintenance", - method: "post", - data: data, - }); -} -//璁惧缁存姢琛� 鏌ヨ -export function getDeviceMaintenancePage(query) { - return request({ - url: "/deviceMaintain/getDeviceMaintenancePage", - method: "get", - params: query, - }); -} - // 鍊熺敤-淇濆瓨 export function saveDeviceBorrow(data) { return request({ @@ -1275,3 +1239,84 @@ params: query, }); } +//璁惧缁存姢淇濆吇 鏌ヨ +export function selectDeviceMaintenancePage(query) { + return request({ + url: "/deviceMaintain/selectDeviceMaintenancePage", + method: "get", + params: query, + }); +} +//璁惧缁存姢淇濆吇 鍒犻櫎 +export function deleteDeviceMaintenance(query) { + return request({ + url: "/deviceMaintain/deleteDeviceMaintenance", + method: "delete", + params: query, + }); +} +//璁惧缁存姢淇濆吇 鏂板 +export function addDeviceMaintenance(query) { + return request({ + url: "/deviceMaintain/addDeviceMaintenance", + method: "post", + 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 new file mode 100644 index 0000000..ed7d0e6 --- /dev/null +++ b/src/views/CNAS/resourceDemand/device/component/equipmentMaintenance.vue @@ -0,0 +1,289 @@ +<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 :visible.sync="dialogVisible" title="浠櫒璁惧浣跨敤缁存姢淇濆吇琛�" width="55%"> + <el-form ref="form" :model="form" label-width="130px" :rules="rules"> + <el-row> + <el-col :span="12"> + <el-form-item label="缁存姢鏃ユ湡:" prop="maintenanceDate"> + <el-date-picker v-model="form.maintenanceDate" :disabled="operationType === 'view'" + format="yyyy-MM-dd" size="small" placeholder="閫夋嫨鏃ユ湡" style="width:100%" + type="date" value-format="yyyy-MM-dd"> + </el-date-picker> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="24"> + <el-form-item label="缁存姢鍐呭:" prop="maintenanceContentArr"> + <el-checkbox-group v-model="form.maintenanceContentArr" :disabled="operationType === 'view'"> + <el-checkbox v-for="city in qualificationList" :key="city.label" :label="city.label" + :value="city.label"></el-checkbox> + </el-checkbox-group> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="缁存姢浜�:" prop="maintenanceUserId"> + <el-select v-model="form.maintenanceUserId" + clearable filterable + 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> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="澶囨敞:" prop="remark"> + <el-input v-model="form.remark" :disabled="operationType === 'view'" size="small" + style="width: 100%;"></el-input> + </el-form-item> + </el-col> + </el-row> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="closeDia">鍙� 娑�</el-button> + <el-button v-if="operationType !== 'view'" type="primary" @click="saveRecord" :loading="buttonLoading">纭� 瀹�</el-button> + </span> + </el-dialog> + </div> +</template> + +<script> +import { + addDeviceMaintenance, + deleteDeviceMaintenance, + selectDeviceMaintenancePage +} from "@/api/cnas/resourceDemand/device"; +import limsTable from "@/components/Table/lims-table.vue"; +import {selectUserCondition} from "@/api/system/user"; + +export default { + name: '', + // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� + components: {limsTable}, + props: { + clickNodeVal: { + type: Object, + default: () => { + return {}; + } + }, + }, + data() { + // 杩欓噷瀛樻斁鏁版嵁 + return { + search: { + maintenanceDate: '', + }, + outLoading: false, + tableData: [], + tableLoading: false, + page: { + total: 0, + size: 20, + current: 1 + }, + column: [ + { label: '缁存姢鏃ユ湡', prop: 'maintenanceDate' }, + { label: '缁存姢鍐呭', prop: 'maintenanceContent' }, + { label: '缁存姢浜�', prop: 'maintenanceUserName' }, + { label: '澶囨敞', prop: 'remark' }, + { + dataType: 'action', + label: '鎿嶄綔', + operation: [ + { + name: '缂栬緫', + type: 'text', + clickFun: (row) => { + this.openDia('edit', row); + }, + }, + { + name: '鍒犻櫎', + type: 'text', + clickFun: (row) => { + this.handleDeleteClick(row); + }, + }, + ] + } + ], + dialogVisible: false, + form: { + id: '', + deviceId: '', + maintenanceDate: '', + maintenanceContentArr: [], + maintenanceContent: '', + maintenanceUserId: '', + remark: '', + }, + operationType: '', + buttonLoading: false, + qualificationList: [], + rules: { + maintenanceDate: [{ required: true, message: '璇烽�夋嫨缁存姢鏃ユ湡', trigger: 'change' }], + maintenanceContentArr: [{ required: true, message: '璇烽�夋嫨缁存姢鍐呭', trigger: 'change' }], + maintenanceUserId: [{ required: true, message: '璇烽�夋嫨缁存姢浜�', trigger: 'change' }], + }, + responsibleOptions: [], + }; + }, + mounted() { + this.refreshTableList() + }, + // 鏂规硶闆嗗悎 + methods: { + // 鐐瑰嚮鍒锋柊 + refreshTableList () { + this.page.current = 1; + this.getTableList() + }, + // 鍒嗛〉鍒囨崲 + pagination(page) { + this.page.size = page.limit + this.getTableList() + }, + getTableList () { + this.tableLoading = true + selectDeviceMaintenancePage({ + deviceId: this.clickNodeVal.value, + ...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.dialogVisible = true + this.$nextTick(() => { + this.$refs['form'].resetFields() + this.form.id = '' + if (this.operationType === 'edit') { + this.form = {...row} + this.$set(this.form, 'maintenanceContentArr', this.form.maintenanceContent.split(',')) + } + }) + this.getDictS() + this.getUserList() + }, + // 鏌ヨ缁存姢鍐呭閫夋嫨妗嗗唴瀹� + getDictS () { + // 瀹氫箟瀹為獙瀹ゅ悕绉颁笌缁存姢鍐呭绫诲瀷鐨勬槧灏勫叧绯� + const labTypeMapping = { + '鑰佸寲瀹�': 'aging_maintenance_content', + '鑰佸寲瀹為獙瀹�': 'aging_maintenance_content', + '鐢垫�ц兘瀹為獙瀹�': 'electrical_maintenance_content', + '鐜瀹為獙瀹�': 'environmental_maintenance_content', + '鐕冪儳瀹為獙瀹�': 'burn_maintenance_content', + '娣风偧瀹為獙瀹�': 'mixing_maintenance_content', + '妫�娴嬩腑蹇冪數鎬ц兘瀹為獙瀹�': 'center_electrical_maintenance_content', + '鎭掓俯浜�': 'temperature2_maintenance_content', + '鎭掓俯涓�': 'temperature1_maintenance_content', + '鍖栧瀹為獙瀹�': 'chemistry_maintenance_content', + '鍒舵牱瀹�': 'sample_maintenance_content', + '浣庢俯瀹為獙瀹�': 'hypothermia_maintenance_content', + }; + // 鑾峰彇褰撳墠鑺傜偣鐨勫疄楠屽鍚嶇О + const name = this.clickNodeVal.parent.label; + // 鏍规嵁鏄犲皠鍏崇郴鑾峰彇瀵瑰簲鐨勭被鍨� + const type = labTypeMapping[name]; + this.getDicts(type).then((response) => { + this.qualificationList = response.data.map((m) => { + return { + label: m.dictLabel, + value: m.dictValue, + }; + }); + }); + }, + openHandleOut () { + + }, + handleDeleteClick(row) { + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ枃浠�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + deleteDeviceMaintenance({ id: row.id }).then(res => { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + this.refreshTableList() + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + // 鎻愪氦鏂板鍜屼繚瀛� + saveRecord () { + this.$refs.form.validate((valid) => { + if (valid) { + this.buttonLoading = true; + this.form.maintenanceContent = this.form.maintenanceContentArr.join(',') + this.form.deviceId = this.clickNodeVal.value + addDeviceMaintenance(this.form).then(res => { + this.buttonLoading = false; + this.$message.success('鏂板鎴愬姛') + this.closeDia() + this.getTableList() + }).catch(err => { + this.buttonLoading = false; + }) + } + }) + }, + closeDia () { + this.$refs['form'].resetFields(); + this.dialogVisible = false + this.refreshTableList() + }, + // 鑾峰彇璐熻矗浜轰俊鎭帴鍙� + 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/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/maintenance.vue b/src/views/CNAS/resourceDemand/device/component/maintenance.vue deleted file mode 100644 index 8bc91aa..0000000 --- a/src/views/CNAS/resourceDemand/device/component/maintenance.vue +++ /dev/null @@ -1,287 +0,0 @@ -<!-- 璁惧缁存姢 --> -<template> - <div> - <div class="search"> - <el-form :model="search" ref="search" size="small" :inline="true"> - <el-form-item label="娴佺▼缂栧彿"> - <el-input v-model="search.deviceNumber" clearable placeholder="璇疯緭鍏�" size="small" - @keyup.enter.native="getAllMessage(clickNodeVal.value)"></el-input> - </el-form-item> - <el-form-item> - <el-button size="mini" type="primary" @click="getAllMessage(clickNodeVal.value)">鏌ヨ</el-button> - <el-button size="mini" @click="resetSearch">閲嶇疆</el-button> - </el-form-item> - </el-form> - <div> - <el-button size="small" type="primary" @click="dialogVisible = true; add()">娣诲姞缁存姢璁板綍</el-button> - <el-button :loading="outLoading" size="small" type="primary" @click="handleDownOne">瀵煎嚭</el-button> - </div> - </div> - <div> - <el-table ref="table" :data="MaintainParam" height="calc(100vh - 20em)" - :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border> - <el-table-column label="搴忓彿" type="index" width="120"> - <template v-slot="scope"> - <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span> - </template> - </el-table-column> - <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="缁存姢鍐呭" min-width="150" prop="content" /> - <el-table-column label="缁存姢鏃堕棿" min-width="150" prop="date" /> - <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"> - <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> - </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" background> - </el-pagination> - </div> - <!-- 鏂板缓缁存姢 --> - <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> - <el-col :span="24"> - <el-form-item label="娴佺▼缂栧彿:" prop="deviceNumber"> - <el-input v-model="formData.deviceNumber" clearable disabled size="small"></el-input> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="璁惧鍚嶇О:" prop="deviceName"> - <el-input v-model="formData.deviceName" clearable disabled placeholder="璇疯緭鍏�" size="small"></el-input> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="绠$悊缂栧彿:" prop="managementNumber"> - <el-input v-model="formData.managementNumber" clearable disabled placeholder="璇疯緭鍏�" - size="small"></el-input> - </el-form-item> - </el-col> - <el-col :span="24"> - <el-form-item :rules="[{ required: true, message: '璇疯緭鍏ョ淮鎶ゅ唴瀹�', trigger: 'blur' }]" label="缁存姢鍐呭:" - prop="content"> - <el-input v-model="formData.content" placeholder="璇疯緭鍏�" size="small" type="textarea"></el-input> - </el-form-item> - </el-col> - <el-col :span="12"> - <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="缁存姢绫诲瀷:" - prop="maintenanceType"> - <el-radio-group v-model="formData.maintenanceType" :disabled="!this.editMode"> - <el-radio :label="0">浣跨敤鍓嶅悗缁存姢</el-radio> - <el-radio :label="1">璁″垝涓淮鎶�</el-radio> - </el-radio-group> - </el-form-item> - </el-col> - <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" - 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="缁存姢浜�:" prop="name"> - <el-input v-model="formData.name" clearable placeholder="璇疯緭鍏�" size="small"></el-input> - </el-form-item> - </el-col> - <el-col :span="24"> - <el-form-item label="澶囨敞:"> - <el-input v-model="formData.comments" placeholder="璇疯緭鍏�" size="small" type="textarea"></el-input> - </el-form-item> - </el-col> - </el-row> - </el-form> - <span slot="footer" class="dialog-footer"> - <el-button v-if="editMode" @click="dialogVisible = false">鍙� 娑�</el-button> - <el-button v-if="editMode" type="primary" @click="addRecord">纭� 瀹�</el-button> - </span> - </el-dialog> - </div> -</template> - -<script> -import { - exportMaintenanceRecord, - deleteDeviceMaintenance, - selectDeviceByCode, - addDeviceMaintenance, - getDeviceMaintenancePage, -} from '@/api/cnas/resourceDemand/device.js' -export default { - props: { - clickNodeVal: { - type: Object, - default: () => { - return {}; - } - } - }, - data() { - return { - search: { - size: 20, - current: 1, - total: 0, - deviceNumber: '' - }, - editMode: false, - dialogVisible: false, - //琛ㄥ崟缁存姢鍐呭 - formData: {}, - //琛ㄥご鏄剧ず - MaintainParam: [], - outLoading: false - } - }, - mounted() { - this.getAllMessage(this.clickNodeVal.value) - }, - methods: { - //涓嬫缁存姢鏃ユ湡:绂佺敤鍦ㄧ淮鎶ゆ棩鏈熷墠鐨勬棩鏈� - disabledDate(time) { - let selectDate = this.formData.date - if (selectDate) { - let oldDate = new Date(selectDate) - return time <= oldDate.getTime() - } - return false - }, - handleSizeChange(val) { - this.search.size = val - this.getAllMessage(this.clickNodeVal.value) - }, - handleCurrentChange(val) { - this.search.current = val - this.getAllMessage(this.clickNodeVal.value) - }, - //鎿嶄綔璇︽儏鏌ョ湅 - handleViewClick(row) { - this.editMode = false; - this.dialogVisible = true; - this.formData = row; - }, - // 瀵煎嚭 - handleDownOne() { - this.outLoading = true - exportMaintenanceRecord({ deviceId: this.clickNodeVal.value }).then(res => { - this.outLoading = false - const blob = new Blob([res], { type: 'application/octet-stream' }); - this.$download.saveAs(blob, '璁惧缁存姢淇濆吇璁板綍.doc') - }) - }, - //鎿嶄綔璇︽儏鍒犻櫎 - handleDeleteClick(index, row) { - this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ枃浠�, 鏄惁缁х画?', '鎻愮ず', { - confirmButtonText: '纭畾', - cancelButtonText: '鍙栨秷', - 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', - message: '宸插彇娑堝垹闄�' - }); - }); - }, - //鐐瑰嚮鍚庡彲缂栬緫 - add() { - selectDeviceByCode({ id: this.clickNodeVal.value }).then(res => { - this.formData.deviceName = res.data.deviceName - this.formData.managementNumber = res.data.managementNumber - this.$nextTick(() => { - this.$refs['form'].clearValidate() - }) - }); - this.editMode = true; - }, - //娣诲姞缁存姢璁板綍 - addRecord() { - this.$refs['form'].validate((valid) => { - if (valid) { - this.formData.deviceId = this.clickNodeVal.value; - addDeviceMaintenance(this.formData).then(res => { - if (res.code == 200) { - this.$message.success('娣诲姞鎴愬姛'); - this.getAllMessage(this.clickNodeVal.value) - this.dialogVisible = false; - this.formData = {}; //娓呯┖琛ㄥ崟 - } - }) - // this.MaintainParam.push(this.formData) - } - }) - }, - resetSearch() { - this.search = { - size: 20, - current: 1, - total: 0, - deviceNumber: '', - } - this.getAllMessage(this.clickNodeVal.value); - }, - //鑾峰彇琛ㄥ崟璁惧缁存姢淇℃伅 - getAllMessage(deviceId) { - getDeviceMaintenancePage({ - deviceId, - ...this.search - }).then(res => { - if (res.code == 200) { - this.MaintainParam = res.data.records - this.search.total = res.data.total - } - }) - }, - }, - watch: { - // 鐩戝惉鐐瑰嚮el-tree鐨勬暟鎹紝杩涜鏁版嵁鍒锋柊 - clickNodeVal(newVal) { - if (newVal.value) { - this.getAllMessage(newVal.value) - } - }, - dialogVisible(newVal) { - if (newVal === false) { - this.formData = {} - this.$refs['form'].clearValidate() - } - } - } -} -</script> - -<style scoped> -.search { - height: 46px; - display: flex; - justify-content: space-between; - margin-top: 10px; - align-items: flex-start; -} -</style> 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 ec9951f..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> @@ -74,8 +78,8 @@ <el-tab-pane label="璁惧鏍″噯" name="璁惧鏍″噯"> <calibration v-if="tabListActiveName == '璁惧鏍″噯'" :clickNodeVal="clickNodeVal" /> </el-tab-pane> - <el-tab-pane label="璁惧缁存姢" name="璁惧缁存姢"> - <maintenance v-if="tabListActiveName == '璁惧缁存姢'" :clickNodeVal="clickNodeVal" /> + <el-tab-pane label="璁惧缁存姢淇濆吇" name="璁惧缁存姢淇濆吇"> + <equipmentMaintenance v-if="tabListActiveName == '璁惧缁存姢淇濆吇'" :clickNodeVal="clickNodeVal" /> </el-tab-pane> <el-tab-pane label="璁惧鍊熺敤" name="璁惧鍊熺敤"> <borrow v-if="tabListActiveName == '璁惧鍊熺敤'" :clickNodeVal="clickNodeVal" /> @@ -112,7 +116,6 @@ import files from "./component/files.vue"; import calibration from "./component/calibration.vue"; import check from "./component/check.vue"; -import maintenance from "./component/maintenance.vue"; import borrow from "./component/borrow.vue"; import fault from "./component/fault.vue"; import record from "./component/record.vue"; @@ -131,6 +134,8 @@ import EquipmentMaintenancePlan from "./component/equipmentMaintenancePlan.vue"; 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' @@ -151,7 +156,6 @@ files, calibration, check, - maintenance, borrow, fault, record, @@ -159,7 +163,9 @@ management, overview, resourceReservation, - operationInstruction + operationInstruction, + equipmentMaintenance, + usageAuthorization, }, data() { return { -- Gitblit v1.9.3