From 92ff846fb659c62037a32b1d8c15eae9df9d9b54 Mon Sep 17 00:00:00 2001 From: zenglf <18502938215@163.com> Date: 星期一, 18 九月 2023 13:24:30 +0800 Subject: [PATCH] Merge branch 'develop' of http://117.34.109.166:18448/r/vue_mdc_430 --- src/views/eam/modules/predictiveWorkOrder/PredictiveWorkOrderDrawer.vue | 717 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 717 insertions(+), 0 deletions(-) diff --git a/src/views/eam/modules/predictiveWorkOrder/PredictiveWorkOrderDrawer.vue b/src/views/eam/modules/predictiveWorkOrder/PredictiveWorkOrderDrawer.vue new file mode 100644 index 0000000..c95da53 --- /dev/null +++ b/src/views/eam/modules/predictiveWorkOrder/PredictiveWorkOrderDrawer.vue @@ -0,0 +1,717 @@ +<template> + <a-drawer + :title="title" + :width="drawerWidth" + :visible="visible" + @close="handleCancel" + :confirmLoading="confirmLoading" + :maskClosable="maskClosable" + > + <a-card :style="getBackground()"> + <template> + <a-card> + <div :style="{width: '100%',border: '1px solid #e9e9e9',padding: '10px 16px',background: '#fff',}"> + <a-row :style="{textAlign:'left'}"> + <a-button + :style="{marginRight: '8px'}" + @click="handleSW" + :disabled=SWbuttonDistable + type="primary" + >寮�宸�</a-button> + <a-button + :style="{marginRight: '8px'}" + @click="handleReport" + :disabled="buttonDistable" + type="primary" + >鎶ュ伐</a-button> + <a-button + :style="{marginRight: '8px'}" + @click="handleReset" + :disabled="revocationDistable" + type="primary" + >鎾ら攢</a-button> + </a-row> + </div> + <div :style="{width: '100%',border: '1px solid #e9e9e9',padding: '10px 16px',background: '#fff',}"> + <a-row :gutter="24"> + <a-col :span="8"> + <a-form-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + label="鐘舵��" + class="hightColor" + > + <span + v-if="this.model != null" + class="hightColor" + >{{ this.model.status_dictText }}</span> + <span + v-else + class="frozenRowClass" + >-</span> + </a-form-item> + </a-col> + <a-col :span="8"> + <a-form-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + label="宸ュ崟缁熶竴缂栫爜" + class="hightColor" + > + <span + v-if="this.model != null" + class="hightColor" + >{{ this.model.num }}</span> + <span + v-else + class="frozenRowClass" + >-</span> + </a-form-item> + </a-col> + <a-col :span="8"> + <a-form-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + label="鐩戞帶绫诲瀷" + class="hightColor" + > + <span + v-if="this.model != null" + class="hightColor" + >{{ this.model.monitorType_dictText }}</span> + <span + v-else + class="frozenRowClass" + >-</span> + </a-form-item> + </a-col> + </a-row> + <a-row :gutter="24"> + <a-col :span="8"> + <a-form-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + label="鏍囧噯缂栫爜" + class="hightColor" + > + <span + v-if="this.model != null" + class="hightColor" + >{{ this.model.planNum }}</span> + <span + v-else + class="frozenRowClass" + >-</span> + </a-form-item> + </a-col> + <a-col :span="8"> + <a-form-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + label="璐d换鐝粍" + class="hightColor" + > + <span + v-if="this.model != null" + class="hightColor" + >{{ this.model.teamId_dictText }}</span> + <span + v-else + class="frozenRowClass" + >-</span> + </a-form-item> + </a-col> + </a-row> + </div> + <div :style="{width: '100%',border: '1px solid #e9e9e9',padding: '10px 16px',background: '#fff',}"> + <a-row :gutter="24"> + <a-col :span="8"> + <a-form-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + label="璁惧缂栧彿" + class="hightColor" + > + <span + v-if="this.model != null" + class="hightColor" + >{{ this.model.equipmentNum }}</span> + <span + v-else + class="frozenRowClass" + >-</span> + </a-form-item> + </a-col> + <a-col :span="8"> + <a-form-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + label="璁惧鍚嶇О" + class="hightColor" + > + <span + v-if="this.model != null" + class="hightColor" + >{{ this.model.equipmentName }}</span> + <span + v-else + class="frozenRowClass" + >-</span> + </a-form-item> + </a-col> + <a-col :span="8"> + <a-form-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + label="璁惧鍨嬪彿" + class="hightColor" + > + <span + v-if="this.model != null" + class="hightColor" + >{{ this.model.model }}</span> + <span + v-else + class="frozenRowClass" + >-</span> + </a-form-item> + </a-col> + </a-row> + </div> + <a-tabs + type="card" + defaultActiveKey="1" + > + <a-tab-pane + tab='鐩戞帶璁板綍' + key="1" + class="hightColor" + > + <div + class="table-operator" + style="margin:-16px" + > + <predictive-parameters :orderId='model.id' v-show="model.monitorType == 'cskz'"/> + <!-- v-if="selectionRows[0].monitorType == 'cskz'" --> + <predictive-warn :orderId='model.id' v-show="model.monitorType == 'bjkz'"/> + <!-- v-if="selectionRows[0].monitorType == 'bjkz'"--> + </div> + </a-tab-pane> + <a-tab-pane + tab='缁存姢鍐呭' + key="2" + class="hightColor" + > + <predictive-order-detail-list :mainId='workPlanId'></predictive-order-detail-list> + </a-tab-pane> + + <a-tab-pane + tab='璁″垝鐢ㄦ枡' + key="3" + > + <div + class="table-operator" + style="margin:-16px" + > + <plan-material :maintenanceStandardId="workPlanId" /> + </div> + </a-tab-pane> + <a-tab-pane + tab='鍗遍櫓闃叉帶' + key="4" + > + <div + class="table-operator" + style="margin:-16px" + > + <maintenance-standard-safety-requirement :maintenanceStandardId='workPlanId' /> + </div> + </a-tab-pane> + <a-tab-pane + tab='浣滀笟鎸囧涔�' + key="5" + > + <div + class="table-operator" + style="margin:-16px" + > + <predictive-work-instruction :maintenanceStandardId='workPlanId'></predictive-work-instruction> + </div> + </a-tab-pane> + <a-tab-pane + tab='瀹為檯鐢ㄦ枡' + key="6" + > + <div + class="table-operator" + style="margin:-16px" + > + <actual-material-edit-table + ref="actualMaterialTabel" + :orderId="orderId" + :orderStatus="orderStatus" + :equipmentId="equipmentId" + ></actual-material-edit-table> + </div> + </a-tab-pane> + <a-tab-pane + tab='瀹為檯宸ユ椂' + key="7" + > + <div + class="table-operator" + style="margin:-16px" + > + <actual-work-hours-edit-table + :orderId="orderId" + :orderStatus="orderStatus" + :equipmentId="equipmentId" + :teamId = "teamId" + ></actual-work-hours-edit-table> + </div> + </a-tab-pane> + </a-tabs> + </a-card> + </template> + </a-card> + + <div :style="{width: '100%',border: '1px solid #e9e9e9',padding: '10px 16px',background: '#fff',}"> + <a-row :style="{textAlign:'right'}"> + <a-button + :style="{marginRight: '8px'}" + @click="handleCancel" + > + 鍙栨秷 + </a-button> + <a-button + :style="{marginRight: '8px'}" + @click="handleTS" + :disabled="buttonDistable" + type="primary" + v-if="false" + >鏆傚瓨</a-button> + <a-button + @click="handleOk" + :disabled="buttonDistable" + type="primary" + v-if="false" + >淇濆瓨</a-button> + </a-row> + </div> + </a-drawer> +</template> + +<script> +import { JeecgListMixin } from '@/mixins/JeecgListMixin' +import { requestPut, getAction, downFile } from '@/api/manage' +import Tooltip from 'ant-design-vue/es/tooltip' + +import { preview } from 'vue-photo-preview' +import { ACCESS_TOKEN } from '@/store/mutation-types' +import Vue from 'vue' +import PdfView from '@views/common/PdfView' +import { getFileAccessHttpUrl } from '@/api/manage'; + +import PlanMaterial from './PlanMaterial.vue' +import MaintenanceStandardSafetyRequirement from './SafetyRequirement' +import ActualMaterialEditTable from './ActualMaterialEditTable' +import ActualWorkHoursEditTable from './ActualWorkHoursEditTable' +//鏂颁笢瑗� +import PredictiveParameters from './boms/PredictiveParameters.vue' +import PredictiveSpareParts from './boms/PredictiveSpareParts.vue' +import PredictiveWarn from './boms/PredictiveWarn.vue' +import PredictiveOrderDetailList from './DetailList' +import PredictiveWorkInstruction from './WorkInstruction' + +export default { + name: 'PredictiveWorkOrderExeDrawer', + mixins: [JeecgListMixin], + components: { + PdfView, + Tooltip, + PlanMaterial, + MaintenanceStandardSafetyRequirement, + ActualMaterialEditTable, + ActualWorkHoursEditTable, + PredictiveParameters, + PredictiveSpareParts, + PredictiveWarn, + PredictiveOrderDetailList, + PredictiveWorkInstruction + + }, + data() { + return { + pageSizeOptions: ['1'], + currentPage: 1, + pageSize: 1, + total: 10, + // + workPlanId:'', + orderId:'', + orderStatus:'', + equipmentId:'', + teamId:'', + // + title: "涓撲笟宸ュ崟鎵ц", + visible: false, + maskClosable: true, + confirmLoading: false, + drawerWidth: "100%", + buttonDistable: false, + SWbuttonDistable: false, + revocationDistable: false, + currentNodeSelect: '', + specialtyMaintenancePlanId: '', + maintenanceStandardId: '-1', + model: {}, + labelCol: { + xs: { span: 24 }, + sm: { span: 6 }, + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 18 }, + }, + url: { + listMaterial: "/eam/maintenanceOrderActualMaterial/getMaintenanceOrderActualMaterialList", + listHours: "/eam/maintenanceOrderActualWorkingHour/getMaintenanceOrderActualWorkingHourList", + getEquipmentTotalByOrderId: "/eam/predictiveworkorder/getEquipmentTotalByOrderId", + urlDownload: window._CONFIG['staticDomainURL'], + download: '/sys/upload/downloadFile', + editStatus: "/eam/predictiveworkorder/editStatus", + revocation: "/eam/predictiveworkorder/revocation", + report: "/eam/predictiveworkorder/report", + }, + } + }, + mounted() { + this.$bus.$on('closeDrawer', (data) => { + this.visible = false; + }) + }, + + methods: { + + onChange(page, pageSize) { + this.queryParam.specialtyMaintenanceOrderId = this.specialtyMaintenanceOrderId + this.queryParam.pageSize = pageSize + this.queryParam.pageNo = page + this.getEquipmentTotal() + }, + + handleShow(record) { + this.model = Object.assign({}, record); + this.workPlanId = record.workPlanId; + this.orderId = record.id; + this.orderStatus = record.status; + this.equipmentId = record.equipmentId; + this.teamId = record.teamId; + this.visible = true; + if(record.status=='4'){ + this.$message.success("宸ュ崟姝e湪鎵ц褰撲腑锛岃鍦ㄦ杩囩▼涓綍鍏ュ疄闄呯敤鏂欏拰宸ユ椂") + } + + }, + getEquipmentTotal() { + var params = this.queryParam;//鏌ヨ鏉′欢 + getAction(this.url.getEquipmentTotalByOrderId, params).then((res) => { + if (res.success) { + this.total = res.result.total + this.model.equipmentNum = res.result.records[0].equipmentNum + this.model.equipmentName = res.result.records[0].equipmentName + this.model.equipmentModel = res.result.records[0].equipmentModel + this.model.equipmentId = res.result.records[0].equipmentId + this.queryParam.equipmentId = res.result.records[0].equipmentId + this.loadData1(1) + } else { + this.$message.warning(res.message) + } + }).finally(() => { + + }) + }, + loadData1(arg) { + if (!this.url.list) { + this.$message.error("璇疯缃畊rl.list灞炴��!") + return + } + //鍔犺浇鏁版嵁 鑻ヤ紶鍏ュ弬鏁�1鍒欏姞杞界涓�椤电殑鍐呭 + if (arg === 1) { + this.ipagination.current = 1; + } + var params = this.getQueryParams();//鏌ヨ鏉′欢 + this.loading = true; + getAction(this.url.list, params).then((res) => { + if (res.success) { + for (let i = 0; i < res.result.records.length; i++) { + this.maintenanceStandardId = res.result.records[i].maintenanceStandardId; + let r = res.result.records[i].sketchPhoto; + r.src = this.getSrc(res.result.records[i].sketchPhoto); + } + //update-begin---author:zhangyafei Date:20201118 for锛氶�傞厤涓嶅垎椤电殑鏁版嵁鍒楄〃------------ + this.dataSource = res.result.records || res.result; + if (res.result.total) { + this.ipagination.total = res.result.total; + } else { + this.ipagination.total = 0; + } + //update-end---author:zhangyafei Date:20201118 for锛氶�傞厤涓嶅垎椤电殑鏁版嵁鍒楄〃------------ + } else { + this.$message.warning(res.message) + } + }).finally(() => { + this.loading = false + }) + }, + + modalFormOk() { + this.getEquipmentTotal() + //娓呯┖鍒楄〃閫変腑 + this.onClearSelected() + }, + loadData() { + // this.getEquipmentTotal() + }, + getBackground() { + return "background-color:rgba(127, 127, 127,0.08)"; + }, + handleCancel() { + this.$emit('ok'); + this.alterFlag = new Date(); + this.close() + }, + close() { + this.visible = false; + }, + //鏆傚瓨 + handleTS() { + const that = this; + that.confirmLoading = true; + let formData = Object.assign(this.model); + formData.specialtyInspectionOrderDetails = that.dataSource + requestPut(this.url.edit, formData).then((res) => { + if (res.success) { + that.$message.success("鏆傚瓨鎴愬姛!"); + that.getEquipmentTotal() + that.$emit('ok'); + that.alterFlag = new Date(); + } else { + that.$message.warning(res.message); + } + }).finally(() => { + that.confirmLoading = false; + // that.close(); + }) + }, + //寮�宸� + handleSW() { + const that = this; + that.confirmLoading = true; + this.$confirm({ + title: '宸ュ崟寮�宸�', + content: '鎻愮ず锛氬紑宸ュ悗鏃犳硶鎾ゅ洖锛岃璋ㄦ厧鎿嶄綔锛�', + okText: '纭', + cancelText: '鍙栨秷', + onOk() { + requestPut(that.url.editStatus, { id: that.model.id, status: '4' }).then((res) => { + if (res.success) { + that.model.status = '4' + that.$message.success("宸ュ崟寮�宸ユ垚鍔燂紒") + that.buttonDistable = false + that.revocationDistable = true + that.SWbuttonDistable = true + } else { + that.$message.warning("宸ュ崟寮�宸ュけ璐ワ紒") + } + }).finally(() => { + that.confirmLoading = false; + // that.close(); + }) + }, + }) + }, + //鎶ュ伐 + handleReport() { + const that = this; + that.confirmLoading = true; + that.$confirm({ + title: '宸ュ崟鎶ュ伐', + content: '鎻愮ず锛氬鏈夋湭濉啓鐨勫繀濉」鎴栧鑷存姤宸ュけ璐ワ紝纭鎶ュ伐鍚楋紒', + okText: '纭', + cancelText: '鍙栨秷', + onOk() { + requestPut(that.url.report, { id: that.orderId, status: '5' }).then((res) => { + if (res.success) { + that.model.status = '5' + that.$message.success(res.message) + that.buttonDistable = false + that.revocationDistable = true + that.SWbuttonDistable = true + that.$emit('ok'); + that.alterFlag = new Date(); + that.close(); + } else { + that.$message.warning(res.message) + } + }).finally(() => { + that.confirmLoading = false; + // + }) + }, + }) + }, + //鎾ら攢 + handleReset() { + const that = this; + that.confirmLoading = true; + this.$confirm({ + title: '瀹屽伐鎾ら攢', + content: '鎻愮ず锛氬畬宸ユ挙閿�鍚庡彲缁х画鎶ュ伐鎿嶄綔锛�', + okText: '纭', + cancelText: '鍙栨秷', + onOk() { + requestPut(that.url.revocation, { id: that.orderId, status: '4' }).then((res) => { + if (res.success) { + that.model.status = '4' + that.orderStatus = '4' + that.$message.success(res.message) + that.buttonDistable = false + that.revocationDistable = true + that.SWbuttonDistable = true + that.$emit('ok'); + } else { + that.$message.warning(res.message) + } + }).finally(() => { + that.confirmLoading = false; + // that.close(); + }) + }, + }) + }, + //淇濆瓨 + handleOk() { + const that = this; + that.confirmLoading = true; + let formData = Object.assign(this.model); + for (let i = 0; i < that.dataSource.length; i++) { + let o = this.dataSource[i] + if (o.inspectionProjectResult == null || o.inspectionProjectResult == '') { + that.$message.warning('璇疯緭鍏ョ偣妫�缁撴灉锛�') + that.confirmLoading = false; + return + } + if (o.treatmentMeasure == null || o.treatmentMeasure == '') { + that.$message.warning('璇烽�夋嫨寮傚父澶勭疆锛�') + that.confirmLoading = false; + return + } + } + formData.specialtyInspectionOrderDetails = that.dataSource + requestPut(this.url.save, formData).then((res) => { + if (res.success) { + that.$message.success("淇濆瓨鎴愬姛!"); + that.getEquipmentTotal() + that.$emit('ok'); + that.alterFlag = new Date(); + } else { + that.$message.warning("淇濆瓨澶辫触!"); + } + }).finally(() => { + that.confirmLoading = false; + // that.close(); + }) + }, + + view(record) { + this.$refs.pdfview.showPdf(record.src); + }, + + handleDownload(record) { + downFile(this.url.download, { id: record.upload.id }).then((res) => { + if (!res) { + this.$message.warning('鏂囦欢涓嬭浇澶辫触') + return + } else { + let fileName = record.upload.name; + if (typeof window.navigator.msSaveBlob !== 'undefined') { + window.navigator.msSaveBlob(new Blob([res]), fileName); + } else { + let url = window.URL.createObjectURL(new Blob([res])); + let link = document.createElement('a'); + link.style.display = 'none'; + link.href = url; + link.setAttribute('download', fileName); + document.body.appendChild(link); + link.click() + document.body.removeChild(link) //涓嬭浇瀹屾垚绉婚櫎鍏冪礌 + window.URL.revokeObjectURL(url) //閲婃斁鎺塨lob瀵硅薄 + } + } + }) + }, + + getSrc(record) { + if (!record.path) { + return ''; + } + //鏈湴锛歭ocal\Minio锛歮inio\闃块噷浜戯細alioss + if (record.uploadType == 'local') { + + let ssoLoginFlag = Vue.ls.get("ssoLoginFlag"); + let deployMode = Vue.ls.get("deployMode"); + + if (ssoLoginFlag && deployMode == "container") { + var baseProject = Vue.ls.get("baseProject"); + console.log("baseProject==>" + baseProject) + + var hostname = window.location.protocol + "//" + window.location.host; + var url = hostname + '/' + baseProject + '/sys/common/static'; + return getFileAccessHttpUrl(record.path + record.encodeName, url, window._CONFIG['hyperTextTransfer']) + } else { + //鏍规嵁鍙戝竷鐘舵�佷慨鏀筯ttps 鎴� http + return getFileAccessHttpUrl(record.path + record.encodeName, this.url.urlDownload, window._CONFIG['hyperTextTransfer']) + } + + } else if (record.uploadType == 'alioss') { + + const OSS = require('ali-oss') + const client = new OSS({ + // region浠ユ澀宸炰负渚嬶紙oss-cn-hangzhou锛夛紝鍏朵粬region鎸夊疄闄呮儏鍐靛~鍐欍�� + region: window._CONFIG['region'], + // 闃块噷浜戜富璐﹀彿AccessKey鎷ユ湁鎵�鏈堿PI鐨勮闂潈闄愶紝椋庨櫓寰堥珮銆傚己鐑堝缓璁偍鍒涘缓骞朵娇鐢≧AM璐﹀彿杩涜API璁块棶鎴栨棩甯歌繍缁达紝璇风櫥褰昍AM鎺у埗鍙板垱寤篟AM璐﹀彿銆� + accessKeyId: window._CONFIG['accessKeyId'], + accessKeySecret: window._CONFIG['accessKeySecret'], + bucket: window._CONFIG['bucket'], + }) + // object-key琛ㄧず浠嶰SS涓嬭浇鏂囦欢鏃堕渶瑕佹寚瀹氬寘鍚枃浠跺悗缂�鍦ㄥ唴鐨勫畬鏁磋矾寰勶紝渚嬪abc/efg/123.jpg銆� + return client.signatureUrl(record.path) + } + }, + }, + +} +</script> + +<style scoped> +@import '~@assets/less/common.less'; +.hightColor { + height: 10%; + font-weight: bold; + font-size: 20px; + color: #1b1e1e; +} +.frozenRowClass { + color: #c9c9c9; +} +.fontweight { + font-weight: bold; +} +.hight { + color: #f5222d; +} +.red { + color: red; +} +</style> \ No newline at end of file -- Gitblit v1.9.3