From ae9b400eae985f6b6f2e33f66ee1575f72675898 Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期六, 09 八月 2025 00:18:41 +0800 Subject: [PATCH] 添加流程节点 --- src/views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue | 388 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 342 insertions(+), 46 deletions(-) diff --git a/src/views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue b/src/views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue index d866f53..73f1c4f 100644 --- a/src/views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue +++ b/src/views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue @@ -66,91 +66,121 @@ </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 - :dataSource="detail.operatorMaintenanceList" :columns="detail.columns" + :dataSource="detail.operatorMaintenanceList" :columns="getColumns()" @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'?'璇烽�夋嫨寮傚父鏄惁鎶ヤ慨':''" - :disabled="disableSubmit || - (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE') || - !props.row.maintenanceResult || - props.row.maintenanceResult === '1'"/> + :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!=='1'?'璇烽�夋嫨寮傚父鏄惁鎶ヤ慨':''" + :disabled="true"/> </template> + + <!-- 鎿嶄綔 --> + <template v-slot:action="props"> + <a + v-if="shouldShowActionColumn" + :class="{ 'disabled-link': shouldDisableRepairButton(props.row) }" + @click="!shouldDisableRepairButton(props.row) && handleRepairReporting(props.row)"> + 鎶ヤ慨濉姤 + </a> + </template> + </j-vxe-table> </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 - :dataSource="detail.repairerMaintenanceList" :columns="detail.columns" + :dataSource="detail.repairerMaintenanceList" :columns="getColumns()" @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') || - !props.row.maintenanceResult || - props.row.maintenanceResult === '1'"/> + :disabled="true"/> </template> + + <!-- 鎿嶄綔 --> + <template v-slot:action="props"> + <a :class="{ 'disabled-link': shouldDisableRepairButton(props.row) }" + @click="!shouldDisableRepairButton(props.row) && handleRepairReporting(props.row)"> + 鎶ヤ慨濉姤 + </a> + </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">鎵归噺淇濆吇姝e父 </a-button> @@ -159,7 +189,7 @@ <!--鍙充晶瀹℃壒鍒�--> <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> @@ -167,19 +197,19 @@ <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> @@ -193,13 +223,13 @@ <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> @@ -208,6 +238,9 @@ </a-col> </a-row> </a-form-model> + + <eamReportRepair-modal ref="modalForm" @ok="handleRepairComplete" @close="handleRepairClose"/> + </a-spin> </j-modal> </template> @@ -217,11 +250,13 @@ import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js' import { JVXETypes } from '@comp/jeecg/JVxeTable' import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect' + import EamReportRepairModal from "@views/eam/repair/modules/EamReportRepairList/EamReportRepairModal.vue"; export default { name: 'SecondMaintenanceApprovalModal', mixins: [JVxeTableModelMixin], components: { + EamReportRepairModal, MaintenanceEquipmentSelect }, props: { @@ -234,6 +269,7 @@ title: '鎿嶄綔', visible: false, model: {}, + currentRepairRow: null, labelCol: { xs: { span: 24 }, sm: { span: 6 } @@ -262,11 +298,13 @@ 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: [], @@ -323,6 +361,14 @@ validateRules: [ { handler: this.customValidator } ] + }, + { + title: '鎿嶄綔', + align: 'center', + type: JVXETypes.slot, + width: 150, + slotName: 'action', + fixed: 'right' } ] } @@ -330,24 +376,103 @@ }, 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' + }, + // 鎿嶄綔鍒椾粎鍦ㄤ繚鍏讳腑鐘舵�佷笅鏄剧ず + shouldShowActionColumn() { + return this.model.maintenanceStatus === 'UNDER_MAINTENANCE'; } }, methods: { + + // 娣诲姞鑾峰彇鍒楃殑鏂规硶 + getColumns() { + const columns = [ + { + title: 'ID', + key: 'id', + type: JVXETypes.hidden + }, + { + title: 'orderId', + key: 'orderId', + type: JVXETypes.hidden + }, + { + title: '搴忓彿', + key: 'itemCode', + type: JVXETypes.normal, + width: 60, + align: 'center' + }, + { + title: '淇濆吇椤�', + key: 'itemName', + type: JVXETypes.normal, + align: 'center' + }, + { + title: '淇濆吇缁撴灉', + key: 'maintenanceResult', + type: JVXETypes.slot, + align: 'center', + slotName: 'maintenanceResult', + validateRules: [ + { required: true, message: '璇烽�夋嫨${title}' } + ] + }, + { + title: '寮傚父鎻忚堪', + key: 'exceptionDescription', + type: JVXETypes.slot, + align: 'center', + slotName: 'exceptionDescription', + validateRules: [ + { handler: this.customValidator } + ] + }, + { + title: '鏄惁鎶ヤ慨', + key: 'reportFlag', + type: JVXETypes.slot, + align: 'center', + slotName: 'reportFlag', + validateRules: [ + { handler: this.customValidator } + ] + } + ]; + + // 浠呭湪淇濆吇涓姸鎬佷笅娣诲姞鎿嶄綔鍒� + if (this.shouldShowActionColumn) { + columns.push({ + title: '鎿嶄綔', + align: 'center', + type: JVXETypes.slot, + width: 150, + slotName: 'action', + fixed: 'right' + }); + } + + return columns; + }, + /** * 涓婚〉闈㈢偣鍑绘墽琛屽鎵规椂瑙﹀彂 * @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) }, @@ -355,11 +480,12 @@ * 涓婚〉闈㈢偣鍑昏鎯呮椂瑙﹀彂 * @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) }, @@ -385,6 +511,22 @@ }) } }) + }, + + /** + * 鑾峰彇娴佽浆鑺傜偣 + * @param record + */ + getFlowTaskListByApi(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) + ) }, /** @@ -443,7 +585,7 @@ 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() @@ -499,8 +641,8 @@ 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 }) }, @@ -509,8 +651,8 @@ 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') } }) }, @@ -523,16 +665,16 @@ // 鎵归噺閫夋嫨鎵�鏈夌偣妫�缁撴灉 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) @@ -573,6 +715,42 @@ } }, + shouldDisableRepairButton(row) { + return ( + this.model.maintenanceStatus !== 'UNDER_MAINTENANCE' || + row.maintenanceResult === '1' || + row.reportFlag === '1' + ); + }, + + handleRepairComplete(success) { + if (success && this.currentRepairRow) { + this.$set(this.currentRepairRow, 'reportFlag', '1'); + this.$message.success("鎶ヤ慨宸叉垚鍔熸彁浜�"); + } + this.currentRepairRow = null; + }, + + /** + * 寮傚父鎻忚堪濉姤鏁呴殰鎶ヤ慨 + * @param exceptionDescription + */ + handleRepairReporting(row) { + this.currentRepairRow = row; // 瀛樺偍褰撳墠鎿嶄綔琛� + let record = { + faultDescription: row.exceptionDescription, + equipmentId: this.model.equipmentId + } + this.$refs.modalForm.handleRepair(record) + }, + + handleRepairClose(success) { + if (!success && this.currentRepairRow) { + this.currentRepairRow = null; // 娓呴櫎鏈垚鍔熺殑鎿嶄綔 + } + }, + + handleCancel() { this.close() }, @@ -611,4 +789,122 @@ } } } + /* 鍏ㄥ眬绂侀�夋牱寮� - 浣滅敤浜庢暣涓〉闈� */ + 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; + } + + /* 娣诲姞绂佺敤鏍峰紡 */ + .disabled-link { + color: #999; + cursor: not-allowed; + pointer-events: none; + text-decoration: none; + } + </style> \ No newline at end of file -- Gitblit v1.9.3