From 7859c063db5effe91f2418056e70b848177a3628 Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期四, 14 八月 2025 10:51:29 +0800 Subject: [PATCH] 1、保养规范审批流程根据规范分类区分展示保养项明细 2、调整二保批量新增功能 --- src/views/flowable/workflow/MaintenanceStandard/MaintenanceStandardApprovalModal.vue | 179 +++++++++++++++------- src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue | 229 ++++++++++++++++++++-------- src/views/eam/base/EamMaintenanceStandardList.vue | 1 src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue | 19 + 4 files changed, 296 insertions(+), 132 deletions(-) diff --git a/src/views/eam/base/EamMaintenanceStandardList.vue b/src/views/eam/base/EamMaintenanceStandardList.vue index ffc3205..e0c16ed 100644 --- a/src/views/eam/base/EamMaintenanceStandardList.vue +++ b/src/views/eam/base/EamMaintenanceStandardList.vue @@ -308,7 +308,6 @@ dataIndex: 'action', align: 'center', scopedSlots: { customRender: 'action' }, - width: 200, fixed: 'right' } this.columns = [...this.columns, operationColumn] diff --git a/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue b/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue index 231629a..6e9e4ce 100644 --- a/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue +++ b/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue @@ -39,7 +39,8 @@ <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> <div class="table-operator" v-if="isDisplayOperation"> <a-button v-has="'secondMaintenanceOrder:add'" @click="handleAdd" type="primary" icon="plus">鏂板</a-button> - <a-button v-has="'secondMaintenanceOrder:batchAdd'" @click="handleBatchAdd" type="primary" icon="plus">鎵归噺鏂板</a-button> + <a-button v-has="'secondMaintenanceOrder:batchAdd'" @click="handleBatchAdd" type="primary" icon="plus">鎵归噺鏂板 + </a-button> <a-dropdown v-if="selectedRowKeys.length > 0"> <a-menu slot="overlay"> <a-menu-item v-has="'secondMaintenanceOrder:batchAbolish'" key="1" @click="handlerBatchAbolish"> @@ -79,7 +80,8 @@ <a-divider v-has="'secondMaintenanceOrder:edit'" type="vertical"/> - <a-popconfirm v-has="'secondMaintenanceOrder:collect'" title="纭畾棰嗗彇鍚�?" @confirm="() => handlerCollect(record.id)"> + <a-popconfirm v-has="'secondMaintenanceOrder:collect'" title="纭畾棰嗗彇鍚�?" + @confirm="() => handlerCollect(record.id)"> <a>棰嗗彇</a> </a-popconfirm> @@ -89,7 +91,8 @@ <a class="ant-dropdown-link">鏇村 <a-icon type="down"/></a> <a-menu slot="overlay"> <a-menu-item> - <a-popconfirm v-has="'secondMaintenanceOrder:abolish'" title="纭畾浣滃簾鍚�?" @confirm="() => handlerAbolish(record.id)"> + <a-popconfirm v-has="'secondMaintenanceOrder:abolish'" title="纭畾浣滃簾鍚�?" + @confirm="() => handlerAbolish(record.id)"> <a>浣滃簾</a> </a-popconfirm> </a-menu-item> @@ -104,13 +107,15 @@ <a @click="handleDetail(record)">璇︽儏</a> - <a-divider v-has="'secondMaintenanceOrder:restore'" v-if="record.maintenanceStatus === 'ABOLISH'" type="vertical"/> + <a-divider v-has="'secondMaintenanceOrder:restore'" v-if="record.maintenanceStatus === 'ABOLISH'" + type="vertical"/> - <a-popconfirm v-has="'secondMaintenanceOrder:restore'" v-if="record.maintenanceStatus === 'ABOLISH'" title="纭畾杩樺師鍚�?" @confirm="() => handlerRestore(record.id)"> + <a-popconfirm v-has="'secondMaintenanceOrder:restore'" v-if="record.maintenanceStatus === 'ABOLISH'" + title="纭畾杩樺師鍚�?" @confirm="() => handlerRestore(record.id)"> <a>杩樺師</a> </a-popconfirm> - <a-divider type="vertical"/> + <a-divider type="vertical"/> <a @click="handlePrint(record)">棰勮</a> </template> </span> @@ -289,7 +294,7 @@ methods: { handleBatchAdd() { this.$refs.batchModalForm.title = '鎵归噺鏂板' - this.$refs.batchModalForm.visible = true + this.$refs.batchModalForm.add() }, /** diff --git a/src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue b/src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue index 225e683..a340fc9 100644 --- a/src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue +++ b/src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue @@ -1,27 +1,43 @@ <template> - <j-modal :title="title" :width="1200" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen centered + <j-modal :title="title" :visible="visible" :confirmLoading="confirmLoading" fullscreen :mask-closable="false" @ok="handleOk" @cancel="handleCancel" cancelText="鍏抽棴"> <a-spin :spinning="spinning"> - <j-vxe-table ref="editableDetailTable" rowNumber rowSelection bordered alwaysEdit toolbar - :toolbarConfig="detail.toolbarConfig" keep-source :height="500" - :dataSource="detail.dataSource" :columns="detail.columns"> - <!--缁熶竴缂栫爜--> - <template v-slot:equipmentId="props"> - <maintenance-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="props.row.equipmentId" - maintenanceCategory="SECOND_MAINTENANCE" :allowClear="false" - @autocompleteForm="autocompleteForm($event,props.row)"/> - </template> + <a-row :gutter="48"> + <a-col :span="6"> + <a-tabs default-active-key="1"> + <a-tab-pane tab="璁惧缁撴瀯鏍�" key="1"> + <a-tree showLine ref="tree" :expandedKeys.sync="expandedKeys" + :treeData="treeDataSource" checkable @check="onCheck" v-model="checkedKeys" + @expand="onExpand" @select="handleTreeNodeSelect"> + </a-tree> + </a-tab-pane> + </a-tabs> + </a-col> - <!-- 淇濆吇鏃ユ湡--> - <template v-slot:maintenanceDate="props"> - <a-date-picker v-model="props.row.maintenanceDate" value-format="YYYY-MM-DD" :allow-clear="false"/> - </template> + <a-col :span="18"> + <a-tabs default-active-key="1"> + <a-tab-pane tab="璁惧鏄庣粏" key="1"> + <j-vxe-table ref="editableDetailTable" rowNumber rowSelection bordered alwaysEdit keep-source + :height="500" :dataSource="detail.dataSource" :columns="detail.columns" + @selectRowChange="handleTableSelectRowChange"> + <!-- 淇濆吇鏃ユ湡--> + <template v-slot:maintenanceDate="props"> + <a-date-picker v-model="props.row.maintenanceDate" value-format="YYYY-MM-DD" :allow-clear="false"/> + </template> - <!-- 鎿嶄綔--> - <template v-slot:action="props"> - <a :disabled="!props.row.equipmentId" @click="handlePreviewDetail(props.row.standardId)">棰勮鏄庣粏</a> - </template> - </j-vxe-table> + <!-- 鎿嶄綔--> + <template v-slot:action="props"> + <a :disabled="!props.row.equipmentId" @click="handlePreviewDetail(props.row.standardId)">棰勮鏄庣粏</a> + </template> + </j-vxe-table> + </a-tab-pane> + + <a-date-picker slot="tabBarExtraContent" type="primary" value-format="YYYY-MM-DD" :allowClear="false" + @change="handleBatchSetDate"/> + </a-tabs> + </a-col> + </a-row> + </a-spin> <eam-second-maintenance-batch-order-detail-modal ref="detailModal"/> @@ -29,58 +45,43 @@ </template> <script> - import { postAction } from '@/api/manage' - import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue' + import { getAction, postAction } from '@/api/manage' import { JVXETypes } from '@comp/jeecg/JVxeTable' import EamSecondMaintenanceBatchOrderDetailModal from './EamSecondMaintenanceBatchOrderDetailModal' export default { name: 'EamSecondMaintenanceBatchOrderModal', - components: { EamSecondMaintenanceBatchOrderDetailModal, MaintenanceEquipmentSelect }, + components: { EamSecondMaintenanceBatchOrderDetailModal }, data() { return { title: '鎿嶄綔', visible: false, confirmLoading: false, spinning: false, + treeDataSource: [], + checkedKeys: [], + expandedKeys: [], + selectedKeys: [], url: { - batchAdd: '/eam/secondMaintenanceOrder/batchAdd' + batchAdd: '/eam/secondMaintenanceOrder/batchAdd', + getDeviceTree: '/eam/secondMaintenanceOrder/BatchTreeStructure' }, detail: { dataSource: [], columns: [ { - title: 'ID', - key: 'id', - type: JVXETypes.hidden - }, - { - title: '宸ュ崟鍙�', - key: 'orderNum', - align: 'center', - type: JVXETypes.inputNumber, - disabled: true, - placeholder: '${title}绯荤粺鑷姩鐢熸垚', - width: 200 - }, - { title: '缁熶竴缂栫爜', - key: 'equipmentId', + key: 'equipmentCode', align: 'center', - type: JVXETypes.slot, - slotName: 'equipmentId', - width: 300, - validateRules: [ - { required: true, message: '璇疯緭鍏�${title}鎴栧悕绉版悳绱�' }, - { unique: true, message: '${title}涓嶈兘閲嶅' } - ] + type: JVXETypes.normal, + width: 150 }, { title: '瑙勮寖鍚嶇О', key: 'standardName', align: 'center', type: JVXETypes.normal, - width: 200 + width: 300 }, { title: '淇濆吇鏃ユ湡', @@ -103,47 +104,141 @@ key: 'remark', align: 'center', type: JVXETypes.textarea, - placeholder: '璇疯緭鍏ュ娉�', - width: 300 + placeholder: '璇疯緭鍏ュ娉�' }, { title: '鎿嶄綔', align: 'center', type: JVXETypes.slot, width: 150, - slotName: 'action', - fixed: 'right' + slotName: 'action' } - ], - toolbarConfig: { - // prefix 鍓嶇紑锛泂uffix 鍚庣紑 - slot: ['prefix', 'suffix'], - // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳 - btn: ['add', 'remove', 'clearSelection'] - } + ] } } }, methods: { add() { - //鍒濆鍖栭粯璁ゅ�� - this.model = { maintenancePeriod: 6 } this.visible = true - this.editable = true - this.detail.operatorMaintenanceList = this.detail.repairerMaintenanceList = [] + this.checkedKeys = this.detail.dataSource = [] + this.queryTreeData() }, + // 鑾峰彇璁惧缁撴瀯鏍� + queryTreeData() { + this.spinning = true + this.treeDataSource = [] + getAction(this.url.getDeviceTree) + .then(res => { + if (res.success) { + this.allTreeKeys = [] + this.treeDataSource = res.result + this.generateList(this.treeDataSource) + this.expandedKeys = this.allTreeKeys + } else { + this.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }) + .finally(() => { + this.spinning = false + }) + }, + + /** + * 棰勮璁惧瑙勮寖鏄庣粏 + * @param standardId + */ handlePreviewDetail(standardId) { this.$refs.detailModal.visible = true this.$refs.detailModal.loadStandardDetail(standardId) }, - autocompleteForm(selectObj, record) { - this.$set(record, 'standardName', selectObj.standardName) - this.$set(record, 'standardId', selectObj.id) - this.$set(record, 'equipmentId', selectObj.equipmentId) - this.$set(record, 'maintenancePeriod', selectObj.maintenancePeriod) - this.$refs.editableDetailTable.validateTable() + onExpand(expandedKeys) { + this.expandedKeys = expandedKeys + this.autoExpandParent = false + }, + + async onCheck(value, obj) { + this.$refs.editableDetailTable.clearValidate() + this.checkedKeys = value + const childNodesList = obj.checkedNodes.filter(item => item.data.props.equipmentId).map(item => { + return { + ...item.data.props.dataRef, + id: item.data.props.dataRef.key, + equipmentId: item.data.props.dataRef.key, + equipmentCode: item.data.props.dataRef.equipmentId, + standardId: item.data.props.dataRef.maintenanceStandardId, + standardName: item.data.props.dataRef.maintenanceStandardName, + maintenancePeriod: 6 + } + }) + + if (childNodesList.length === 0) { + this.detail.dataSource = [] + return + } + console.log('childNodesList', childNodesList) + + if (childNodesList.length > this.detail.dataSource.length) { + childNodesList.forEach(childNode => { + if (!(this.detail.dataSource.map(item => item.id).includes(childNode.id))) this.detail.dataSource.push(childNode) + }) + console.log('detail+++++++++++', this.detail.dataSource) + } else { + const deleteList = [] + this.detail.dataSource.map(item => item.id).forEach(item => { + if (!(childNodesList.map(childNode => childNode.id).includes(item))) deleteList.push(item) + }) + + deleteList.forEach(deleteItem => { + this.detail.dataSource.splice(this.detail.dataSource.findIndex(item => item.id === deleteItem), 1) + }) + + console.log('deleteList', deleteList) + console.log('detail----------', this.detail.dataSource) + } + }, + + /** + * 鐐瑰嚮鏍戣妭鐐规椂瑙﹀彂 + * @param selectedKeys + * @param event + */ + handleTreeNodeSelect(selectedKeys, event) { + event.node.$el.childNodes[1].click() + }, + + /** + * 閫掑綊鏍戞暟鎹睍寮�鎵�鏈夎妭鐐� + * @param data + */ + generateList(data) { + for (let i = 0; i < data.length; i++) { + const node = data[i] + const key = node.key + this.allTreeKeys.push(key) + if (node.children) { + this.generateList(node.children) + } + } + }, + + handleBatchSetDate(value) { + this.detail.dataSource.forEach((item, index, self) => { + if (this.selectedKeys.includes(item.id)) this.$set(item, 'maintenanceDate', value) + }) + }, + + /** + * 琛ㄦ牸澶氶�夋鍙戠敓鏀瑰彉鏃惰Е鍙� + * @param {selectedRowIds} 琛ㄦ牸涓凡閫夋嫨鐨処D鍒楄〃 + */ + handleTableSelectRowChange({ selectedRowIds }) { + this.selectedKeys = selectedRowIds + console.log('selectedKeys', this.selectedKeys) }, async handleOk() { diff --git a/src/views/flowable/workflow/MaintenanceStandard/MaintenanceStandardApprovalModal.vue b/src/views/flowable/workflow/MaintenanceStandard/MaintenanceStandardApprovalModal.vue index 910bb94..dc08948 100644 --- a/src/views/flowable/workflow/MaintenanceStandard/MaintenanceStandardApprovalModal.vue +++ b/src/views/flowable/workflow/MaintenanceStandard/MaintenanceStandardApprovalModal.vue @@ -74,25 +74,67 @@ </a-col> <a-col :span="10" class="scroll-col"> - <a-tabs default-active-key="1"> - <a-tab-pane key="1" tab="淇濆吇椤规槑缁�"> - <j-vxe-table ref="editableDetailTable" bordered alwaysEdit keep-source :dataSource="detail.dataSource" - :columns="detail.columns"> - <template v-slot:itemCategory="props"> - <j-dict-select-tag v-model="props.row.itemCategory" :dict-code="encodedDictCode" disabled/> - </template> - </j-vxe-table> - </a-tab-pane> + <a-tabs v-model="activeTabKey"> + <template v-if="model.maintenanceCategory==='POINT_INSPECTION'"> + <a-tab-pane key="1" tab="鏃ョ偣妫�"> + <j-vxe-table bordered alwaysEdit keep-source :dataSource="detail.dataSource1" + :columns="detail.columns"> + <template v-slot:itemCategory="props"> + <j-dict-select-tag v-model="props.row.itemCategory" :dict-code="encodedDictCode" disabled/> + </template> + </j-vxe-table> + </a-tab-pane> + + <a-tab-pane key="2" tab="鍛ㄧ偣妫�"> + <j-vxe-table bordered alwaysEdit keep-source :dataSource="detail.dataSource2" + :columns="detail.columns"> + <template v-slot:itemCategory="props"> + <j-dict-select-tag v-model="props.row.itemCategory" :dict-code="encodedDictCode" disabled/> + </template> + </j-vxe-table> + </a-tab-pane> + </template> + + <template v-if="model.maintenanceCategory==='SECOND_MAINTENANCE'"> + <a-tab-pane key="1" tab="鎿嶄綔宸�"> + <j-vxe-table bordered alwaysEdit keep-source :dataSource="detail.dataSource1" + :columns="detail.columns"> + <template v-slot:itemCategory="props"> + <j-dict-select-tag v-model="props.row.itemCategory" :dict-code="encodedDictCode" disabled/> + </template> + </j-vxe-table> + </a-tab-pane> + + <a-tab-pane key="2" tab="缁翠慨宸�"> + <j-vxe-table bordered alwaysEdit keep-source :dataSource="detail.dataSource2" + :columns="detail.columns"> + <template v-slot:itemCategory="props"> + <j-dict-select-tag v-model="props.row.itemCategory" :dict-code="encodedDictCode" disabled/> + </template> + </j-vxe-table> + </a-tab-pane> + </template> + + <template v-if="model.maintenanceCategory==='THIRD_MAINTENANCE'"> + <a-tab-pane key="1" tab="涓変繚"> + <j-vxe-table bordered alwaysEdit keep-source :dataSource="detail.dataSource1" + :columns="detail.columns"> + <template v-slot:itemCategory="props"> + <j-dict-select-tag v-model="props.row.itemCategory" :dict-code="encodedDictCode" disabled/> + </template> + </j-vxe-table> + </a-tab-pane> + </template> <template v-if="selectShenpiData.processDefinitionKey"> - <a-tab-pane key='2' tab='娴佺▼鍥�'> + <a-tab-pane key='3' tab='娴佺▼鍥�'> <img :src="imageSrc" alt="Fetched Image"/> </a-tab-pane> </template> - <a-tab-pane key='3' tab='娴佽浆鑺傜偣'> + <a-tab-pane key='4' tab='娴佽浆鑺傜偣'> <a-card> - <a-timeline style="padding:0 1% 0 12%" > + <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> @@ -177,7 +219,7 @@ confirmLoading: false, spinning: false, model: {}, - hitaskDataSource:[], + hitaskDataSource: [], validatorRules: { repairManagerApproveResult: [{ required: true, message: '璇烽�夋嫨纭绫诲瀷' }], technicalManagerApproveResult: [{ required: true, message: '璇烽�夋嫨纭绫诲瀷' }] @@ -192,6 +234,7 @@ sm: { span: 16 } }, visible: false, + activeTabKey: '1', // 琛ㄥご url: { diagramView: '/assign/flow/diagramView', @@ -201,7 +244,8 @@ detailList: '/eam/eamMaintenanceStandardDetail/queryList' }, detail: { - dataSource: [], + dataSource1: [], + dataSource2: [], columns: [], inspectionColumns: [ { @@ -218,16 +262,17 @@ title: '椤圭洰搴忓彿', key: 'itemCode', type: JVXETypes.normal, - align: 'center' - }, - { - title: '淇濆吇椤瑰垎绫�', - key: 'itemCategory', - type: JVXETypes.slot, - slotName: 'itemCategory', align: 'center', - disabled: true + width: 100 }, + // { + // title: '淇濆吇椤瑰垎绫�', + // key: 'itemCategory', + // type: JVXETypes.slot, + // slotName: 'itemCategory', + // align: 'center', + // disabled: true + // }, { title: '淇濆吇椤圭洰', key: 'itemName', @@ -256,16 +301,17 @@ title: '椤圭洰搴忓彿', key: 'itemCode', type: JVXETypes.normal, - align: 'center' - }, - { - title: '淇濆吇椤瑰垎绫�', - key: 'itemCategory', - type: JVXETypes.slot, - slotName: 'itemCategory', align: 'center', - disabled: true + width: 100 }, + // { + // title: '淇濆吇椤瑰垎绫�', + // key: 'itemCategory', + // type: JVXETypes.slot, + // slotName: 'itemCategory', + // align: 'center', + // disabled: true + // }, { title: '淇濆吇椤圭洰', key: 'itemName', @@ -332,11 +378,11 @@ }, computed: { displayRepairLeaderFlag() { - return this.model.standardStatus && ['WAIT_REPAIR_DIRECTOR', 'WAIT_TECHNICAL_DIRECTOR','START', 'REJECTED'].includes(this.model.standardStatus) + return this.model.standardStatus && ['WAIT_REPAIR_DIRECTOR', 'WAIT_TECHNICAL_DIRECTOR', 'START', 'REJECTED'].includes(this.model.standardStatus) }, displayTechnicalDirectorFlag() { - return this.model.standardStatus && ['WAIT_TECHNICAL_DIRECTOR','START', 'REJECTED'].includes(this.model.standardStatus) && this.model.repairManagerApproveResult === '1' + return this.model.standardStatus && ['WAIT_TECHNICAL_DIRECTOR', 'START', 'REJECTED'].includes(this.model.standardStatus) && this.model.repairManagerApproveResult === '1' }, encodedDictCode() { @@ -350,6 +396,7 @@ * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍 */ handleApprove(record) { + this.activeTabKey = '1' this.getBasicInformationByApi(record) this.getFlowChartImageByApi(record) this.getFlowTaskListByApi(record) @@ -360,15 +407,13 @@ * @param record */ getFlowTaskListByApi(record) { - console.log("sss",record) - let parmhis={ + let parmhis = { 'procInstId': record.procInstId } - getAction(this.url.queryHisTaskList,parmhis).then(res=>{ - this.hitaskDataSource=res.result + getAction(this.url.queryHisTaskList, parmhis).then(res => { + this.hitaskDataSource = res.result }).finally( - this.visible = true, - console.log('this.approveData---->', this.approveData) + this.visible = true ) }, @@ -377,7 +422,8 @@ * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍 */ handleDetail(record) { - this.detail.dataSource = [] + this.activeTabKey = '1' + this.detail.dataSource1 = this.detail.dataSource2 = [] this.model = Object.assign({}, record) this.getFlowTaskListByApi(record) this.loadDetail(record.id) @@ -390,7 +436,7 @@ getBasicInformationByApi(record) { this.spinning = true this.model = {} - this.detail.dataSource = [] + this.detail.dataSource1 = this.detail.dataSource2 = [] const that = this getAction(this.url.queryById, { id: record.dataId }) .then(res => { @@ -441,9 +487,26 @@ * @param dataId 涓氬姟ID */ loadDetail(dataId) { + this.spinning = true getAction(this.url.detailList, { standardId: dataId }) .then(res => { - if (res.success) this.detail.dataSource = res.result + if (res.success) { + switch (this.model.maintenanceCategory) { + case 'POINT_INSPECTION': + this.detail.dataSource1 = res.result.filter(item => item.itemCategory === 'DAY_INSPECTION') + this.detail.dataSource2 = res.result.filter(item => item.itemCategory === 'WEEK_INSPECTION') + break + case 'SECOND_MAINTENANCE': + this.detail.dataSource1 = res.result.filter(item => item.itemCategory === 'OPERATOR_MAINTENANCE') + this.detail.dataSource2 = res.result.filter(item => item.itemCategory === 'REPAIRER_MAINTENANCE') + break + case 'THIRD_MAINTENANCE': + this.detail.dataSource1 = res.result + break + default: + break + } + } }) .finally(() => { this.spinning = false @@ -451,11 +514,6 @@ }, async submitForm() { - let errMap = await this.$refs.editableDetailTable.validateTable() - if (errMap) { - return - } - this.$refs.form.validate(valid => { if (valid) { this.confirmLoading = this.spinning = true @@ -517,6 +575,7 @@ } } } + /* 鍏ㄥ眬绂侀�夋牱寮� - 浣滅敤浜庢暣涓〉闈� */ html.submitting, html.submitting body { @@ -562,6 +621,7 @@ background-color: rgba(0, 0, 0, 0.1); /* 浣跨敤 RGBA 棰滆壊锛屽苟璁剧疆杈冧綆鐨勯�忔槑搴� */ margin: 20px 0; /* 鍒嗙晫绾夸笂涓嬬殑澶栬竟璺� */ } + .btn-custom { background-color: #4CAF50; /* 缁胯壊鑳屾櫙 */ color: white; /* 鐧借壊鏂囧瓧 */ @@ -580,13 +640,14 @@ font-weight: bold; font-size: 20px; /* 鎴栦綘闇�瑕佺殑浠讳綍澶у皬 */ } - .left_qiu{ + + .left_qiu { position: absolute; left: -74px; top: 0; - width:54px; + width: 54px; border-radius: 50%; - height:54px; + height: 54px; font-size: 13px; margin: auto; display: flex; @@ -596,20 +657,23 @@ background: #0099ff; transform: translate(0, 0); } - /deep/ .ant-timeline-item-tail{ + + /deep/ .ant-timeline-item-tail { left: -29px !important; } - .left_qiu span{ + + .left_qiu span { width: 3em; display: block; color: #fff; text-align: center; } - .img{ + + .img { width: 75%; } - .wrap{ + .wrap { clear: both; width: 100%; display: flex; @@ -617,13 +681,14 @@ border: 1px solid #ccc; /* background-color: aqua; */ } - .box{ - width:21%; - height:50px; + + .box { + width: 21%; + height: 50px; border-right: 1px solid #ccc; line-height: 50px; /* background: red; */ - text-align:center; + text-align: center; margin: auto; } </style> \ No newline at end of file -- Gitblit v1.9.3