From 8b311e8310a5ff81068129f59e4e1c434a1e3a25 Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期一, 23 六月 2025 14:25:10 +0800 Subject: [PATCH] 新增流程处理,新增程序确认表处理 --- src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchList.vue | 5 src/views/dnc/common/TableContextMenu.vue | 2 src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue | 43 ---- src/views/dnc/base/modules/ProductStructure/Document/NcDocumentTableList.vue | 47 +++++ src/views/flowable/workflow/assignEquipmentFileStream/AssignEquipmentFileStreamHandle.vue | 392 +++++++++++++++++++++++++++++++++++++++++++ src/views/flowable/workflow/FlowTodo.vue | 26 ++ 6 files changed, 464 insertions(+), 51 deletions(-) diff --git a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue index bb21be2..31fc780 100644 --- a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue +++ b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue @@ -47,7 +47,7 @@ currentRightClickedTableRowInfo: {}, hasLoadedDataTabKeyArray: [], url:{ - submitProccess:'/dncFlow/dispatchFile/submitProccess' + } } }, @@ -166,47 +166,6 @@ description: res.message }) } - }) - .finally(() => { - that.$destroyAll() - }) - }, - onCancel: () => { - that.$destroyAll() - } - }) - }, - handleAppoint(){ - const that = this - const { docId, param, attributionId,attributionType,publishFileId } = this.currentRightClickedTableRowInfo - that.$confirm({ - title: '鎻愮ず', - content: `纭瀹氬瀷鍚楋紵`, - okText: '纭', - cancelText: '鍙栨秷', - onOk: () => { - let dispatchFile = { - 'docId':docId, - 'attributionId':attributionId, - 'attributionType':attributionType, - 'fileId':publishFileId - } - postAction(this.url.submitProccess,dispatchFile) - .then(res => { - if (res.success) { - this.$message.success('娴佺▼鍙戣捣鎴愬姛') - } else { - that.$notification.error({ - message: '娑堟伅', - description: res.message - }) - } - }) - .catch(err => { - that.$notification.error({ - message: '娑堟伅', - description: err.message - }) }) .finally(() => { that.$destroyAll() diff --git a/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentTableList.vue b/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentTableList.vue index c3c709f..b5ee82a 100644 --- a/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentTableList.vue +++ b/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentTableList.vue @@ -17,7 +17,7 @@ </template> <script> - import { getAction } from '@/api/manage' +import { getAction, postAction } from '@/api/manage' import { JeecgListMixin } from '@/mixins/JeecgListMixin' import DocumentModal from '../../../../common/DocumentModal' import NcDocumentAssignModal from './NcDocumentAssignModal' @@ -96,7 +96,8 @@ currentRightClickedDocumentInfo: {}, currentClickedDocumentInfo: {}, url: { - list: '/nc/doc/find/page' + list: '/nc/doc/find/page', + submitProccess:'/dncFlow/dispatchFile/submitProccess' } } }, @@ -213,6 +214,48 @@ this.$refs.documentAssignModalRef.visible = true }, + handleAppoint(record){ + const that = this + console.log("sssss",record) + that.$confirm({ + title: '鎻愮ず', + content: `纭瀹氬瀷鍚楋紵`, + okText: '纭', + cancelText: '鍙栨秷', + onOk: () => { + let dispatchFile = { + 'docId':record.docId, + 'attributionId':record.attributionId, + 'attributionType':record.attributionType, + 'fileId':record.publishFileId + } + postAction(this.url.submitProccess,dispatchFile) + .then(res => { + if (res.success) { + this.$message.success('娴佺▼鍙戣捣鎴愬姛') + } else { + that.$notification.error({ + message: '娑堟伅', + description: res.message + }) + } + }) + .catch(err => { + that.$notification.error({ + message: '娑堟伅', + description: err.message + }) + }) + .finally(() => { + that.$destroyAll() + }) + }, + onCancel: () => { + that.$destroyAll() + } + }) + }, + handleDocumentExtract(record) { const that = this const { docId, attributionId, attributionType } = record diff --git a/src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchList.vue b/src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchList.vue index 13c7147..7cab115 100644 --- a/src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchList.vue +++ b/src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchList.vue @@ -67,9 +67,9 @@ <span slot="action" slot-scope="text, record"> - <a @click="handleEdit(record)">涓婁紶/淇敼淇℃伅</a> + <a v-if="record.flowStatus === '1'" @click="handleEdit(record)">涓婁紶/淇敼淇℃伅</a> - <a-divider type="vertical" /> + <a-divider v-if="record.flowStatus === '1'" type="vertical" /> <a @click="handleOpenPrintGuideCardModal(record)">鐢熸垚鏁版帶鍔犲伐绋嬪簭纭琛�</a> @@ -325,6 +325,7 @@ }) .finally(() => { that.$destroyAll() + this.loadData(1) }) }, onCancel: () => { diff --git a/src/views/dnc/common/TableContextMenu.vue b/src/views/dnc/common/TableContextMenu.vue index 60d8ecc..b6bda8c 100644 --- a/src/views/dnc/common/TableContextMenu.vue +++ b/src/views/dnc/common/TableContextMenu.vue @@ -56,6 +56,7 @@ { label: '涓嬭浇', code: 'document_download', subMenu: [], icon: 'download', isCommonMethod: true }, { label: '鍒犻櫎', code: 'document_delete', subMenu: [], icon: 'delete', isCommonMethod: true }, { label: '鎵归噺鍒犻櫎', code: 'document_batch_remove', subMenu: [], icon: 'delete', isCommonMethod: true }, + { label: '瀹氬瀷', code: 'document_appoint', subMenu: [], icon: 'swap-right', isCommonMethod: true }, { label: '鐢熷懡鍛ㄦ湡', subMenu: [ @@ -96,7 +97,6 @@ { label: '涓嬭浇', code: 'document_download', subMenu: [], icon: 'download', isCommonMethod: true }, { label: '鍒犻櫎', code: 'document_delete', subMenu: [], icon: 'delete', isCommonMethod: true }, { label: '鎵归噺鍒犻櫎', code: 'document_batch_remove', subMenu: [], icon: 'delete', isCommonMethod: true }, - { label: '瀹氬瀷', code: 'document_appoint', subMenu: [], icon: 'swap-right', isCommonMethod: true }, { label: '鐢熷懡鍛ㄦ湡', subMenu: [ diff --git a/src/views/flowable/workflow/FlowTodo.vue b/src/views/flowable/workflow/FlowTodo.vue index 1e8d371..76b8b69 100644 --- a/src/views/flowable/workflow/FlowTodo.vue +++ b/src/views/flowable/workflow/FlowTodo.vue @@ -280,6 +280,11 @@ :selectShenpiData='selectGuideCardData' @searchReset='searchReset' ></guide-card-batch-handle> + <AssignEquipmentFileStreamHandle + ref='assignEquipmentFileStreamHandle' + :selectShenpiData='selectEquipmentSealUpData' + @searchReset='searchReset' + ></AssignEquipmentFileStreamHandle> </a-card> </template> @@ -292,7 +297,6 @@ import WeekMaintenanceApprovalModal from '@views/flowable/workflow/weekMaintenance/WeekMaintenanceApprovalModal' import RepairOrderApprovalModal from '@views/flowable/workflow/repairOrder/RepairOrderApprovalModal' import InspectionOrderHandle from '@views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue' - import { getAction } from '@api/manage' import InspectionOrderBatchHandle from './InspectionOrder/InspectionOrderBatchHandle' import WeekMaintenanceBatchApprovalModal from './weekMaintenance/WeekMaintenanceBatchApprovalModal' @@ -300,10 +304,10 @@ import DispatchFileHandle from '@views/flowable/workflow/dispatchFile/DispatchFileHandle.vue' import DispatchFileBachHandleStyle from '@views/flowable/workflow/dispatchFile/DispatchFileBachHandleStyle#Drawer.vue' import GuideCardBatchHandle from '@views/flowable/workflow/guideCardBatch/GuideCardBatchHandle.vue' +import AssignEquipmentFileStreamHandle from '@views/flowable/workflow/assignEquipmentFileStream/AssignEquipmentFileStreamHandle.vue' import OutBoundOrderHandle from '@views/flowable/workflow/outBoundOrder/OutBoundOrderHandle.vue' import EquipmentLeanOutApprovalModal from '@views/flowable/workflow/leanOut/EquipmentLeanOutApprovalModal.vue' -import SecondMaintenanceApprovalModal - from '@views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue' +import SecondMaintenanceApprovalModal from '@views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue' import ThirdMaintenanceApprovalModal from '@views/flowable/workflow/thirdMaintenance/ThirdMaintenanceApprovalModal.vue' import EquipmentSealUpApprovalModal from '@views/flowable/workflow/sealUp/EquipmentSealUpApprovalModal.vue' import EquipmentTransferApprovalModal from '@views/flowable/workflow/transfer/EquipmentTransferApprovalModal.vue' @@ -339,7 +343,8 @@ EquipmentScrapApprovalModal, SparePartApplyHandle, StandardizedProcessHandle, - GuideCardBatchHandle + GuideCardBatchHandle, + AssignEquipmentFileStreamHandle }, data() { return { @@ -428,6 +433,8 @@ selectInboundOrderData: {}, selectSparePartApplyData: {}, selectGuideCardData:{}, + selectEquipmentAssignProductData:{}, + selectEquipmentSealUpData:{}, //涓氬姟淇℃伅ID dataId: undefined } @@ -537,6 +544,9 @@ break case 'programConfirmApproval': this.handleGuideCardApproval(item) + break + case 'equipmentAssignProductApproval': + this.handleEquipmentAssignProductApproval(item) break default: alert('娌℃壘鍒拌娴佺▼') @@ -708,12 +718,20 @@ this.$refs.sparePartApplyModal.getAllApproveData(item) } }, + //DNC-绋嬪簭纭琛ㄦ祦绋� handleGuideCardApproval(item) { console.log('item----->', item) this.selectGuideCardData = item this.$refs.guideCardBatchHandle.clearTableSource() this.$refs.guideCardBatchHandle.getAllApproveData(item) }, + //DNC-璁惧缁撴瀯鏍戞寚娲句骇鍝佺粨鏋勬爲 + handleEquipmentAssignProductApproval(item){ + console.log('item----->', item) + this.selectEquipmentSealUpData = item + this.$refs.assignEquipmentFileStreamHandle.clearTableSource() + this.$refs.assignEquipmentFileStreamHandle.getAllApproveData(item) + } } } </script> diff --git a/src/views/flowable/workflow/assignEquipmentFileStream/AssignEquipmentFileStreamHandle.vue b/src/views/flowable/workflow/assignEquipmentFileStream/AssignEquipmentFileStreamHandle.vue new file mode 100644 index 0000000..36b9386 --- /dev/null +++ b/src/views/flowable/workflow/assignEquipmentFileStream/AssignEquipmentFileStreamHandle.vue @@ -0,0 +1,392 @@ +<!-- + Description: 宸ヤ綔娴�-DNC-璁惧缁撴瀯鏍戞寚娲句骇鍝佺粨鏋勬爲澶勭悊椤甸潰 List + Author: 浣滆�� liuyh + Date: 2025-02-27 +--> +<template> + <a-modal + :title="title" + :width="width" + :visible="visible" + :footer="null" + @cancel="handCancel" + > + <a-card :bordered="false"> + <div> + <b>{{ selectShenpiData.description }}</b> + <br> + <br> + <a-tag color="blue"> + 褰撳墠澶勭悊浜� {{ selectShenpiData.assignee_dictText }} + </a-tag> + <a-tag color="blue"> + 浠诲姟鍒涘缓鏃堕棿 {{ selectShenpiData.createTime }} + </a-tag> + <br> + <br> + <button @click="fetchAndShowBmp" class="btn-custom">鎵撳紑娴佺▼鍥�</button> + <div v-if="imageSrc"> + <img :src="imageSrc" alt="Fetched Image" /> + </div> + <hr class="shallow-hr"> + </div> + <div> + <b>瀹$璇︽儏</b> + <br> + <a-form :form='form'> + <a-spin :spinning="spinning"> + <a-tabs default-active-key='1' @change='callback'> + <a-tab-pane key='1' tab='鍩烘湰淇℃伅'> + <a-form-model ref='form' :model='tableRowRecord' :rules='validatorRules'> + <a-row> + <a-col :span='span'> + <a-form-model-item label="璁惧缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId_dictText"> + <a-input :disabled='coldisabled' v-model="tableRowRecord.equipmentId_dictText" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item label="璁惧绋嬪簭鏂囦欢鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentDocId_dictText"> + <a-input :disabled='coldisabled' v-model="tableRowRecord.equipmentDocId_dictText" ></a-input> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span='span'> + <a-form-model-item label="浜у搧鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="productId_dictText"> + <a-input :disabled='coldisabled' v-model="tableRowRecord.productId_dictText" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item label="閮ㄤ欢鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="componentId_dictText"> + <a-input :disabled='coldisabled' v-model="tableRowRecord.componentId_dictText" ></a-input> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span='span'> + <a-form-model-item label="闆朵欢鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="partsId_dictText"> + <a-input :disabled='coldisabled' v-model="tableRowRecord.partsId_dictText"></a-input> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item label="宸ヨ壓瑙勭▼鐗堟湰鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="psvId_dictText"> + <a-input :disabled='coldisabled' v-model="tableRowRecord.psvId_dictText" ></a-input> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span='span'> + <a-form-model-item label="宸ュ簭鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="processId_dictText"> + <a-input :disabled='coldisabled' v-model="tableRowRecord.processId_dictText" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item label="宸ユ鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="stepId_dictText"> + <a-input :disabled='coldisabled' v-model="tableRowRecord.stepId_dictText" ></a-input> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span='span'> + <a-form-model-item label="鏁版帶绯荤粺绫诲埆" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="deviceTypeName"> + <a-input :disabled='coldisabled' v-model="tableRowRecord.deviceTypeName" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item label="绋嬪簭鏂囦欢鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="docName"> + <a-input :disabled='coldisabled' v-model="tableRowRecord.docName" ></a-input> + </a-form-model-item> + </a-col> + </a-row> + </a-form-model> + </a-tab-pane> + <a-tab-pane key='2' 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-tabs> + </a-spin> + </a-form> + </div> + <div> + <hr class="shallow-hr"> + <br> + <b>瀹℃壒璇︽儏</b> + <br> + <a-form-model ref="form" :model="approveData" :rules="validatorRules" slot="detail"> + <a-row> + <a-col ::span='span' class="btxx"> + <a-form-model-item label="澶勭悊绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" prop='status'> + <j-dict-select-tag type='list' v-model='assignFileStream.auditType' dictCode='nc_sq_handle_type' placeholder="璇烽�夋嫨澶勭悊绫诲瀷" /> + </a-form-model-item > + </a-col> + <a-col :span="24" class="btxx"> + <a-form-model-item label="澶勭悊鎰忚" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-textarea v-model="assignFileStream.approveContent" rows="4" placeholder="璇疯緭鍏ュ鐞嗘剰瑙�"/> + </a-form-model-item > + </a-col> + + </a-row> + <div class="table-operator" style="text-align: right;"> + <a-button @click="handleQueXiaoTask" type="primary" icon="close">鍙栨秷</a-button> + <a-button @click="submitForm">鎻� 浜�</a-button> + </div> + </a-form-model> + </div> + </a-card> + + + </a-modal> +</template> + +<script> + +import '@assets/less/TableExpand.less' +import { mixinDevice } from '@/utils/mixin' +import { getAction, deleteAction, postAction, downFile, httpAction } from '@api/manage' +export default { + name: 'FlowShenPi', + mixins: [mixinDevice], + props: { + selectShenpiData: { + type: Object, + required: true + } + }, + + data() { + return { + form: this.$form.createForm(this), + span: 12, + span1: 8, + coldisabled: true, + spinning: false, + tableRowRecord: {}, + assignFileStream:{}, + tableDataSource: [], + usageDataSource: [], + hitaskDataSource:[], + bomForm: {}, + imageSrc: null, + drawerVisible: true, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 } + }, + wrapperCol: { + xs: { span: 30 }, + sm: { span: 16 } + }, + validatorRules: { + status: { + rules: [ + { required: true, message: '璇烽�夋嫨瀹℃壒鐘舵��!'}, + ] + }, + }, + approveData: {}, + flowData: {}, + title: '璇︽儏椤甸潰', + width: 1000, + visible: false, + // 琛ㄥご + url: { + queryBomDataById: '/dncFlow/assignEquipmentFileStream/selectVoById', + diagramView: '/assign/flow/diagramView', + queryHisTaskList:'/dncFlow/dispatchFile/queryHisTaskList', + auditGuideCardBatch:"/dncFlow/assignEquipmentFileStream/audit", + }, + dictOptions: {}, + superFieldList: [], + workflowSource: [] + } + }, + created() { + }, + computed: {}, + methods: { + callback() { + }, + handCancel() { + this.visible = false + }, + clearTableSource() { + this.tableDataSource = [] + this.usageDataSource = [] + }, + fetchAndShowBmp() { + console.log('flowData----->', this.flowData) + try { + let parm = { + processDefinitionId: this.flowData.processDefinitionId, + processInstanceId:this.flowData.processInstanceId, + TaskDefinitionKey:this.flowData.processDefinitionKey + } + downFile(this.url.diagramView,parm,'get').then((res=>{ + console.log('Pica------>',res) + const urlObject = window.URL.createObjectURL(new Blob([res])) + this.imageSrc = urlObject + })) + } catch (error) { + console.error('Error fetching image blob:', error) + alert('鏃犳硶鍔犺浇鍥剧墖锛岃绋嶅悗鍐嶈瘯銆�') + } + }, + handleQueXiaoTask(){ + this.visible = false + this.routeReload() + }, + submitForm () { + const that = this; + if (!that.assignFileStream.auditType==null || that.assignFileStream.auditType===undefined){ + this.$message.warning('璇烽�夋嫨澶勭悊绫诲瀷锛�') + return false; + } + if (!that.assignFileStream.approveContent==null || that.assignFileStream.approveContent===undefined) { + this.$message.warning('璇疯緭鍏ュ鐞嗘剰瑙侊紒') + return false; + } + if ((!that.selectShenpiData.inspectionOpinion==null || that.selectShenpiData.taskDefKey===undefined)&&that.selectShenpiData.taskDefKey==="proofread") { + this.$message.warning('璇疯緭鍏ラ妫�鎰忚锛�') + } + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.form.validateFields((err, values) => { + if (!err) { + that.confirmLoading = true; + let url=this.url.auditGuideCardBatch + let method = 'post'; + let flowTaskVo = {} + flowTaskVo.comment =that.assignFileStream.approveContent; + flowTaskVo.dataId = this.selectShenpiData.dataId + flowTaskVo.taskId = this.selectShenpiData.id + flowTaskVo.userId = this.selectShenpiData.assignee + flowTaskVo.instanceId = this.selectShenpiData.procInstId + flowTaskVo.values = this.selectShenpiData.variables + flowTaskVo.inspectionOpinion=that.assignFileStream.inspectionOpinion + flowTaskVo.auditType = that.assignFileStream.auditType + console.log("琛ㄥ崟鎻愪氦鏁版嵁",flowTaskVo) + httpAction(url,flowTaskVo,method).then((res)=>{ + if(res.success){ + that.$message.success(res.message); + that.visible = false + //鍒锋柊琛ㄦ牸 + that.$emit('searchReset') + }else{ + that.$message.warning(res.message); + } + }).finally(() => { + that.confirmLoading = false; + }) + } + }) + }, + getAllApproveData(item) { + console.log('selectShenpiData----->', this.selectShenpiData) + this.flowData = item + let param = { + 'id': item.dataId + } + let parmhis={ + 'procInstId': item.procInstId + } + getAction(this.url.queryHisTaskList,parmhis).then(res=>{ + this.hitaskDataSource=res.result + getAction(this.url.queryBomDataById, param).then((res => { + if (res.success) { + this.tableRowRecord = res.result[0] + console.log('this.tableRowRecord----->', this.tableRowRecord) + } + })) + }).finally( + this.visible = true, + console.log('this.approveData---->', this.approveData) + ) + } + } +} +</script> +<style scoped> +.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; +} + +@import '~@assets/less/common.less'; +</style> \ No newline at end of file -- Gitblit v1.9.3