| | |
| | | </a-col> |
| | | |
| | | <a-col class="scroll-col" |
| | | :span="model.maintenanceStatus&&model.maintenanceStatus!='WAIT_MAINTENANCE'&&model.maintenanceStatus!='UNDER_MAINTENANCE'?10:16"> |
| | | :span="model.maintenanceStatus&&model.maintenanceStatus!=='WAIT_MAINTENANCE'&&model.maintenanceStatus!=='UNDER_MAINTENANCE'?10:16"> |
| | | <a-tabs :active-key="activeTabKey" @change="handleTabChange"> |
| | | <a-tab-pane :key="1" tab="操作工" |
| | | v-if="selectShenpiData.taskDefKey&&selectShenpiData.taskDefKey=='operator_task'|| |
| | | (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')"> |
| | | v-if="(selectShenpiData.taskDefKey&&selectShenpiData.taskDefKey==='operator_task')|| |
| | | (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE')"> |
| | | <j-vxe-table ref="editableDetailTable1" :rowNumber="false" rowSelection bordered |
| | | alwaysEdit keep-source :height="300" |
| | | alwaysEdit keep-source |
| | | :dataSource="detail.operatorMaintenanceList" :columns="detail.columns" |
| | | @selectRowChange="handleTableSelectRowChange($event,'Operator')"> |
| | | <template v-slot:maintenanceResult="props"> |
| | | <j-dict-select-tag v-model="props.row.maintenanceResult" dictCode="maintenance_result" |
| | | placeholder="请选择保养结果" |
| | | :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')" |
| | | :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE')" |
| | | @change="handleInspectionResultSelectChange($event,props.row)" |
| | | style="width: 100%"/> |
| | | </template> |
| | | |
| | | <template v-slot:exceptionDescription="props"> |
| | | <a-textarea :rows="1" :autoSize="false" v-model="props.row.exceptionDescription" |
| | | :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!='1'?'请输入异常描述':''" |
| | | :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!=='1'?'请输入异常描述':''" |
| | | :disabled="disableSubmit|| |
| | | (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE') || |
| | | (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE') || |
| | | !props.row.maintenanceResult || |
| | | props.row.maintenanceResult === '1'"/> |
| | | </template> |
| | | |
| | | <template v-slot:reportFlag="props"> |
| | | <j-dict-select-tag v-model="props.row.reportFlag" dictCode="yn" style="width: 100%" |
| | | :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!='1'?'请选择异常是否报修':''" |
| | | :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!=='1'?'请选择异常是否报修':''" |
| | | :disabled="disableSubmit || |
| | | (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE') || |
| | | (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE') || |
| | | !props.row.maintenanceResult || |
| | | props.row.maintenanceResult === '1'"/> |
| | | </template> |
| | |
| | | </a-tab-pane> |
| | | |
| | | <a-tab-pane :key="2" tab="维修工" |
| | | v-if="selectShenpiData.taskDefKey&&selectShenpiData.taskDefKey=='maintenance_task'|| |
| | | (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')"> |
| | | v-if="(selectShenpiData.taskDefKey&&selectShenpiData.taskDefKey==='maintenance_task')|| |
| | | (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE')"> |
| | | <j-vxe-table ref="editableDetailTable2" :rowNumber="false" rowSelection bordered |
| | | alwaysEdit kee-source :height="300" |
| | | alwaysEdit kee-source |
| | | :dataSource="detail.repairerMaintenanceList" :columns="detail.columns" |
| | | @selectRowChange="handleTableSelectRowChange($event,'Repairer')"> |
| | | <template v-slot:maintenanceResult="props"> |
| | | <j-dict-select-tag v-model="props.row.maintenanceResult" dictCode="maintenance_result" |
| | | placeholder="请选择保养结果" |
| | | :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')" |
| | | :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE')" |
| | | @change="handleInspectionResultSelectChange($event,props.row)" |
| | | style="width: 100%"/> |
| | | </template> |
| | | |
| | | <template v-slot:exceptionDescription="props"> |
| | | <a-textarea :rows="1" :autoSize="false" v-model="props.row.exceptionDescription" |
| | | :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!='1'?'请输入异常描述':''" |
| | | :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!=='1'?'请输入异常描述':''" |
| | | :disabled="disableSubmit || |
| | | (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE') || |
| | | (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE') || |
| | | !props.row.maintenanceResult || |
| | | props.row.maintenanceResult === '1'"/> |
| | | </template> |
| | | |
| | | <template v-slot:reportFlag="props"> |
| | | <j-dict-select-tag v-model="props.row.reportFlag" |
| | | :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!='1'?'请选择异常是否报修':''" |
| | | :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!=='1'?'请选择异常是否报修':''" |
| | | dictCode="yn" style="width: 100%" |
| | | :disabled="disableSubmit|| |
| | | (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE') || |
| | | (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE') || |
| | | !props.row.maintenanceResult || |
| | | props.row.maintenanceResult === '1'"/> |
| | | </template> |
| | | </j-vxe-table> |
| | | </a-tab-pane> |
| | | |
| | | <template v-if="selectShenpiData.procInstId"> |
| | | <template v-if="selectShenpiData.processDefinitionKey"> |
| | | <a-tab-pane key='3' tab='流程图'> |
| | | <img :src="imageSrc" alt="Fetched Image"/> |
| | | </a-tab-pane> |
| | | </template> |
| | | |
| | | <a-tab-pane key='4' tab='流转节点'> |
| | | <a-card> |
| | | <a-timeline style="padding:0 1% 0 12%" > |
| | | <a-timeline-item color='white' v-for="(item,index1) in hitaskDataSource" :key="index1"> |
| | | <div class="bottom"> |
| | | <p>处理人:{{item.assignee_dictText}}</p> |
| | | <p v-if="index1 !==0">处理时长:{{item.duration}}</p> |
| | | <p v-if="item.name !== '提交申请'">处理类型:{{item.sequenceFlowName}}</p> |
| | | <p v-if="item.description != null">处理意见:{{item.description}}</p> |
| | | <div class="left_qiu"><span>{{item.taskName}}</span></div> |
| | | </div> |
| | | </a-timeline-item> |
| | | </a-timeline> |
| | | </a-card> |
| | | </a-tab-pane> |
| | | |
| | | <a-button |
| | | v-if="activeTabKey!=='3'" |
| | | :disabled="disableSubmit || |
| | | (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE') || |
| | | (activeTabKey=='1'&&selectedOperatorMaintenanceRowKeys.length == 0)|| |
| | | (activeTabKey=='2'&&selectedRepairerMaintenanceRowKeys.length == 0)" |
| | | (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE') || |
| | | (activeTabKey==='1'&&selectedOperatorMaintenanceRowKeys.length === 0)|| |
| | | (activeTabKey==='2'&&selectedRepairerMaintenanceRowKeys.length === 0)" |
| | | slot="tabBarExtraContent" |
| | | type="primary" @click="handleSelectAllInspectionResult">批量保养正常 |
| | | </a-button> |
| | |
| | | |
| | | <!--右侧审批列--> |
| | | <a-col :span="6" class="scroll-col" |
| | | v-if="model.maintenanceStatus&&model.maintenanceStatus!='WAIT_MAINTENANCE'&&model.maintenanceStatus!='UNDER_MAINTENANCE'"> |
| | | v-if="model.maintenanceStatus&&model.maintenanceStatus!=='WAIT_MAINTENANCE'&&model.maintenanceStatus!=='UNDER_MAINTENANCE'"> |
| | | <a-tabs v-if="displayAdminConfirmFlag"> |
| | | <a-tab-pane tab="管理员确认"> |
| | | <a-row> |
| | |
| | | <a-form-model-item prop="manageUserResult" label="确认类型"> |
| | | <j-dict-select-tag type='radio' v-model='model.manageUserResult' dictCode='approve_reject' |
| | | placeholder="请选择确认类型" |
| | | :disabled="disableSubmit || model.maintenanceStatus!='WAIT_ADMIN_CONFIRM'"/> |
| | | :disabled="disableSubmit || model.maintenanceStatus!=='WAIT_ADMIN_CONFIRM'"/> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span="24"> |
| | | <a-form-model-item label="问题描述"> |
| | | <a-textarea placeholder="请描述问题" v-model='model.problemDescription' |
| | | :disabled="disableSubmit || model.maintenanceStatus!='WAIT_ADMIN_CONFIRM'"/> |
| | | :disabled="disableSubmit || model.maintenanceStatus!=='WAIT_ADMIN_CONFIRM'"/> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span="24"> |
| | | <a-form-model-item label="处理措施描述"> |
| | | <a-textarea placeholder="请描述处理措施" v-model="model.dealDescription" |
| | | :disabled="disableSubmit || model.maintenanceStatus!='WAIT_ADMIN_CONFIRM'"/> |
| | | :disabled="disableSubmit || model.maintenanceStatus!=='WAIT_ADMIN_CONFIRM'"/> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | </a-row> |
| | |
| | | <a-form-model-item prop="inspectorResult" label="确认类型"> |
| | | <j-dict-select-tag type='radio' v-model='model.inspectorResult' dictCode='approve_reject' |
| | | placeholder="请选择确认类型" |
| | | :disabled="disableSubmit || model.maintenanceStatus!='WAIT_INSPECTOR_CONFIRM'"/> |
| | | :disabled="disableSubmit || model.maintenanceStatus!=='WAIT_INSPECTOR_CONFIRM'"/> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span="24"> |
| | | <a-form-model-item label="确认意见"> |
| | | <a-textarea placeholder="请输入意见" v-model="model.inspectConfirmComment" |
| | | :disabled="disableSubmit || model.maintenanceStatus!='WAIT_INSPECTOR_CONFIRM'"/> |
| | | :disabled="disableSubmit || model.maintenanceStatus!=='WAIT_INSPECTOR_CONFIRM'"/> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | </a-row> |
| | |
| | | queryById: '/eam/secondMaintenanceOrder/list', |
| | | detail: '/eam/secondMaintenanceOrderDetail/queryList', |
| | | approval: '/eam/secondMaintenanceOrder/approval', |
| | | diagramView: '/assign/flow/diagramView' |
| | | diagramView: '/assign/flow/diagramView', |
| | | queryHisTaskList:'/assign/flow/queryHisTaskList', |
| | | }, |
| | | disableSubmit: false, |
| | | selectedOperatorMaintenanceRowKeys: [], |
| | | selectedRepairerMaintenanceRowKeys: [], |
| | | hitaskDataSource:[], |
| | | detail: { |
| | | operatorMaintenanceList: [], |
| | | repairerMaintenanceList: [], |
| | |
| | | }, |
| | | computed: { |
| | | displayAdminConfirmFlag() { |
| | | return ['WAIT_ADMIN_CONFIRM', 'WAIT_INSPECTOR_CONFIRM', 'COMPLETE'].includes(this.model.maintenanceStatus) |
| | | return ['WAIT_ADMIN_CONFIRM', 'WAIT_INSPECTOR_CONFIRM', 'COMPLETE', 'REJECTED'].includes(this.model.maintenanceStatus) |
| | | }, |
| | | displayInspectorConfirmFlag() { |
| | | return ['WAIT_INSPECTOR_CONFIRM', 'COMPLETE'].includes(this.model.maintenanceStatus) |
| | | return ['WAIT_INSPECTOR_CONFIRM', 'COMPLETE', 'REJECTED'].includes(this.model.maintenanceStatus) && this.model.manageUserResult === '1' |
| | | } |
| | | }, |
| | | methods: { |
| | |
| | | * 主页面点击执行审批时触发 |
| | | * @param record 主页面列表行记录 |
| | | */ |
| | | async handleDetail(record) { |
| | | async handleApprove(record) { |
| | | this.spinning = true |
| | | this.model = {} |
| | | this.detail.operatorMaintenanceList = this.detail.repairerMaintenanceList = [] |
| | | this.handleTabToFirstTable() |
| | | this.getBasicInformationByApi(record) |
| | | this.getFlowChartImageByApi(record) |
| | | this.getFlowTaskListByApi(record) |
| | | this.loadDetail(record.dataId) |
| | | }, |
| | | |
| | |
| | | * 主页面点击详情时触发 |
| | | * @param record 主页面列表行记录 |
| | | */ |
| | | recordDetail(record) { |
| | | handleDetail(record) { |
| | | this.spinning = true |
| | | this.activeTabKey = 1 |
| | | this.detail.operatorMaintenanceList = this.detail.repairerMaintenanceList = [] |
| | | this.model = Object.assign({}, record) |
| | | this.getFlowTaskListByApi(record) |
| | | this.loadDetail(record.id) |
| | | }, |
| | | |
| | |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * 获取流转节点 |
| | | * @param record |
| | | */ |
| | | getFlowTaskListByApi(record) { |
| | | console.log("sss",record) |
| | | let parmhis={ |
| | | 'procInstId': record.procInstId |
| | | } |
| | | getAction(this.url.queryHisTaskList,parmhis).then(res=>{ |
| | | this.hitaskDataSource=res.result |
| | | }).finally( |
| | | this.visible = true, |
| | | console.log('this.approveData---->', this.approveData) |
| | | ) |
| | | }, |
| | | |
| | | /** |
| | |
| | | that.confirmLoading = that.spinning = true |
| | | |
| | | // 仅在保养中状态传递表格列表 |
| | | if (this.model.maintenanceStatus == 'UNDER_MAINTENANCE') { |
| | | if (this.model.maintenanceStatus === 'UNDER_MAINTENANCE') { |
| | | for (let index = 1; index <= 2; index++) { |
| | | if (that.$refs['editableDetailTable' + index]) { |
| | | this.model.tableDetailList = that.$refs['editableDetailTable' + index].getTableData() |
| | |
| | | handleTabToFirstTable() { |
| | | this.$nextTick(() => { |
| | | console.log('taskDefKey', this.selectShenpiData.taskDefKey) |
| | | if ((this.selectShenpiData.taskDefKey && this.selectShenpiData.taskDefKey == 'operator_task') || !this.selectShenpiData.taskDefKey) this.activeTabKey = 1 |
| | | else if (this.selectShenpiData.taskDefKey && this.selectShenpiData.taskDefKey == 'maintenance_task') this.activeTabKey = 2 |
| | | if ((this.selectShenpiData.taskDefKey && this.selectShenpiData.taskDefKey === 'operator_task') || !this.selectShenpiData.taskDefKey || (this.model.maintenanceStatus !== 'UNDER_MAINTENANCE')) this.activeTabKey = 1 |
| | | else if (this.selectShenpiData.taskDefKey && this.selectShenpiData.taskDefKey === 'maintenance_task') this.activeTabKey = 2 |
| | | }) |
| | | }, |
| | | |
| | |
| | | getAction(this.url.detail, { orderId }) |
| | | .then(res => { |
| | | if (res.success) { |
| | | this.detail.operatorMaintenanceList = res.result.filter(item => item.itemCategory == 'OPERATOR_MAINTENANCE') |
| | | this.detail.repairerMaintenanceList = res.result.filter(item => item.itemCategory == 'REPAIRER_MAINTENANCE') |
| | | this.detail.operatorMaintenanceList = res.result.filter(item => item.itemCategory === 'OPERATOR_MAINTENANCE') |
| | | this.detail.repairerMaintenanceList = res.result.filter(item => item.itemCategory === 'REPAIRER_MAINTENANCE') |
| | | } |
| | | }) |
| | | }, |
| | |
| | | // 批量选择所有点检结果 |
| | | handleSelectAllInspectionResult() { |
| | | let selectedRowKeys, prefix |
| | | if (this.activeTabKey == 1) { |
| | | if (this.activeTabKey === 1) { |
| | | selectedRowKeys = this.selectedOperatorMaintenanceRowKeys |
| | | prefix = 'operator' |
| | | } |
| | | else if (this.activeTabKey == 2) { |
| | | else if (this.activeTabKey === 2) { |
| | | selectedRowKeys = this.selectedRepairerMaintenanceRowKeys |
| | | prefix = 'repairer' |
| | | } |
| | | else selectedRowKeys = [] |
| | | if (selectedRowKeys.length == 0) return |
| | | if (selectedRowKeys.length === 0) return |
| | | |
| | | selectedRowKeys.forEach(key => { |
| | | const dataItem = this.detail[prefix + 'MaintenanceList'].find(item => item.id === key) |
| | |
| | | } |
| | | } |
| | | } |
| | | /* 全局禁选样式 - 作用于整个页面 */ |
| | | html.submitting, |
| | | html.submitting body { |
| | | pointer-events: none !important; |
| | | cursor: wait !important; |
| | | } |
| | | |
| | | /* 蒙层效果增强 */ |
| | | html.submitting::before { |
| | | content: ''; |
| | | position: fixed; |
| | | top: 0; |
| | | left: 0; |
| | | right: 0; |
| | | bottom: 0; |
| | | background: rgba(255, 255, 255, 0.5); |
| | | z-index: 9998; |
| | | } |
| | | |
| | | /* 加载指示器 - 更明显的视觉反馈 */ |
| | | html.submitting::after { |
| | | content: '提交中...'; |
| | | position: fixed; |
| | | top: 50%; |
| | | left: 50%; |
| | | transform: translate(-50%, -50%); |
| | | background: #1890ff; |
| | | color: white; |
| | | padding: 10px 20px; |
| | | border-radius: 4px; |
| | | z-index: 9999; |
| | | } |
| | | |
| | | /* 禁用状态按钮样式 */ |
| | | .disabled-btn { |
| | | opacity: 0.6; |
| | | cursor: not-allowed !important; |
| | | } |
| | | |
| | | .shallow-hr { |
| | | border: 0; |
| | | height: 1px; /* 分界线的高度 */ |
| | | background-color: rgba(0, 0, 0, 0.1); /* 使用 RGBA 颜色,并设置较低的透明度 */ |
| | | margin: 20px 0; /* 分界线上下的外边距 */ |
| | | } |
| | | .btn-custom { |
| | | background-color: #4CAF50; /* 绿色背景 */ |
| | | color: white; /* 白色文字 */ |
| | | border: none; /* 无边框 */ |
| | | padding: 5px 15px; /* 内边距 */ |
| | | text-align: center; /* 文字居中 */ |
| | | text-decoration: none; /* 无下划线 */ |
| | | display: inline-block; /* 行内块元素 */ |
| | | font-size: 12px; /* 字体大小 */ |
| | | margin: 4px 2px; /* 外边距 */ |
| | | cursor: pointer; /* 鼠标悬停时显示手型 */ |
| | | border-radius: 4px; /* 圆角边框 */ |
| | | } |
| | | |
| | | .bold-large-label { |
| | | font-weight: bold; |
| | | font-size: 20px; /* 或你需要的任何大小 */ |
| | | } |
| | | .left_qiu{ |
| | | position: absolute; |
| | | left: -74px; |
| | | top: 0; |
| | | width:54px; |
| | | border-radius: 50%; |
| | | height:54px; |
| | | font-size: 13px; |
| | | margin: auto; |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | align-items: center; |
| | | justify-content: center; |
| | | background: #0099ff; |
| | | transform: translate(0, 0); |
| | | } |
| | | /deep/ .ant-timeline-item-tail{ |
| | | left: -29px !important; |
| | | } |
| | | .left_qiu span{ |
| | | width: 3em; |
| | | display: block; |
| | | color: #fff; |
| | | text-align: center; |
| | | } |
| | | .img{ |
| | | width: 75%; |
| | | } |
| | | |
| | | .wrap{ |
| | | clear: both; |
| | | width: 100%; |
| | | display: flex; |
| | | height: 50px; |
| | | border: 1px solid #ccc; |
| | | /* background-color: aqua; */ |
| | | } |
| | | .box{ |
| | | width:21%; |
| | | height:50px; |
| | | border-right: 1px solid #ccc; |
| | | line-height: 50px; |
| | | /* background: red; */ |
| | | text-align:center; |
| | | margin: auto; |
| | | } |
| | | |
| | | </style> |