feat:年前最后一版
This commit is contained in:
parent
d7e9e51ebf
commit
fd5ae6a55e
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -23,7 +23,7 @@ export default {
|
|||||||
},
|
},
|
||||||
// 导入引擎
|
// 导入引擎
|
||||||
IMPORT_ENGINE_MODEL: {
|
IMPORT_ENGINE_MODEL: {
|
||||||
url: '/custom/dataEntryEngineModel/import',
|
url: '/custom/engineParamDetailPojo/excelImport',
|
||||||
method: 'post'
|
method: 'post'
|
||||||
},
|
},
|
||||||
// 获取参数列表
|
// 获取参数列表
|
||||||
@ -56,6 +56,10 @@ export default {
|
|||||||
url: '/custom/activiti/updateNode',
|
url: '/custom/activiti/updateNode',
|
||||||
method: 'post'
|
method: 'post'
|
||||||
},
|
},
|
||||||
|
EDIT_DATA_DEPT: {
|
||||||
|
url: '/custom/engineParamDetailPojo/updateDept',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
REJECT_TODO_TASK: {
|
REJECT_TODO_TASK: {
|
||||||
url: '/custom/todoTaskPojo/rejectTodo',
|
url: '/custom/todoTaskPojo/rejectTodo',
|
||||||
method: 'post'
|
method: 'post'
|
||||||
|
|||||||
@ -3148,6 +3148,8 @@ export default {
|
|||||||
xAxisValueItem = model.burnType || ''
|
xAxisValueItem = model.burnType || ''
|
||||||
} else if (xAxisValue === 'engineCapacity') {
|
} else if (xAxisValue === 'engineCapacity') {
|
||||||
xAxisValueItem = model.engineCapacity || ''
|
xAxisValueItem = model.engineCapacity || ''
|
||||||
|
} else if (xAxisValue === 'productNumber') {
|
||||||
|
xAxisValueItem = model.productNumber || ''
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xAxisValueItem) {
|
if (xAxisValueItem) {
|
||||||
|
|||||||
@ -416,7 +416,7 @@ export default {
|
|||||||
returnableNodes: [],
|
returnableNodes: [],
|
||||||
selectedReturnNode: '',
|
selectedReturnNode: '',
|
||||||
returnSubmitting: false,
|
returnSubmitting: false,
|
||||||
returnOpinion: '', // 退回意见(仅在选择编制节点时使用)
|
returnOpinion: '拒绝', // 退回意见(仅在选择编制节点时使用)
|
||||||
isEditingProcessTitle: false, // 是否正在编辑流程主题
|
isEditingProcessTitle: false, // 是否正在编辑流程主题
|
||||||
editingProcessTitle: '' // 正在编辑的流程主题值
|
editingProcessTitle: '' // 正在编辑的流程主题值
|
||||||
}
|
}
|
||||||
@ -989,20 +989,25 @@ export default {
|
|||||||
this.returnableNodes = ['编制']
|
this.returnableNodes = ['编制']
|
||||||
})
|
})
|
||||||
this.selectedReturnNode = ''
|
this.selectedReturnNode = ''
|
||||||
this.returnOpinion = ''
|
this.returnOpinion = '拒绝'
|
||||||
this.returnNodeDialogVisible = true
|
this.returnNodeDialogVisible = true
|
||||||
},
|
},
|
||||||
// 关闭退回节点选择弹窗
|
// 关闭退回节点选择弹窗
|
||||||
handleReturnNodeDialogClose() {
|
handleReturnNodeDialogClose() {
|
||||||
this.returnNodeDialogVisible = false
|
this.returnNodeDialogVisible = false
|
||||||
this.selectedReturnNode = ''
|
this.selectedReturnNode = ''
|
||||||
this.returnOpinion = ''
|
this.returnOpinion = '拒绝'
|
||||||
},
|
},
|
||||||
// 处理退回节点选择变化
|
// 处理退回节点选择变化
|
||||||
handleReturnNodeChange() {
|
handleReturnNodeChange() {
|
||||||
// 如果不是"编制"节点,清空意见
|
// 如果不是"编制"节点,清空意见
|
||||||
if (this.selectedReturnNode !== '编制') {
|
if (this.selectedReturnNode !== '编制') {
|
||||||
this.returnOpinion = ''
|
this.returnOpinion = ''
|
||||||
|
} else {
|
||||||
|
// 如果选择"编制"节点,设置默认值为"拒绝"
|
||||||
|
if (!this.returnOpinion) {
|
||||||
|
this.returnOpinion = '拒绝'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 提交退回操作
|
// 提交退回操作
|
||||||
|
|||||||
@ -15,7 +15,7 @@
|
|||||||
<el-select
|
<el-select
|
||||||
v-model="currentVersionId"
|
v-model="currentVersionId"
|
||||||
size="small"
|
size="small"
|
||||||
:disabled="!canSwitchVersion || isEditMode"
|
:disabled="!canSwitchVersion || isEditMode || isEditDeptMode"
|
||||||
style="width: 120px;"
|
style="width: 120px;"
|
||||||
@change="onVersionChange"
|
@change="onVersionChange"
|
||||||
>
|
>
|
||||||
@ -53,24 +53,27 @@
|
|||||||
>
|
>
|
||||||
<el-option v-for="ver in versions" :key="ver.id" :label="ver.label" :value="ver.id" />
|
<el-option v-for="ver in versions" :key="ver.id" :label="ver.label" :value="ver.id" />
|
||||||
</el-select> -->
|
</el-select> -->
|
||||||
<el-button size="small" v-if="hasAnyEditPermission() && detail &&( detail.distributeStatus === '已完成' || detail.distributeStatus === '未分发')" @click="handleSyncVersion">
|
<el-button size="small" v-if="!isEditDeptMode && hasAnyEditPermission() && detail &&( detail.distributeStatus === '已完成' || detail.distributeStatus === '未分发')" @click="handleSyncVersion">
|
||||||
同步参数版本
|
同步参数版本
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<el-button size="small" v-if="!isEditDeptMode && hasAnyEditPermission() && detail &&( detail.distributeStatus === '已完成' || detail.distributeStatus === '未分发')" @click="handleEditDept">
|
||||||
|
编辑部门
|
||||||
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="hasAnyEditPermission() && detail && detail.distributeStatus === '已完成'"
|
v-if="!isEditMode && !isEditDeptMode && hasAnyEditPermission() && detail && detail.distributeStatus === '已完成'"
|
||||||
size="small"
|
size="small"
|
||||||
@click="handleEdit">
|
@click="handleEdit">
|
||||||
编辑
|
编辑
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="!isEditMode && !isJustCheckMode"
|
v-if="!isEditMode && !isEditDeptMode && !isJustCheckMode"
|
||||||
size="small"
|
size="small"
|
||||||
style="margin-left: 12px;"
|
style="margin-left: 12px;"
|
||||||
@click="handleExportTemplate"
|
@click="handleExportTemplate"
|
||||||
>下载导入模板</el-button
|
>下载导入模板</el-button
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="!isEditMode && !isJustCheckMode"
|
v-if="!isEditMode && !isEditDeptMode && !isJustCheckMode"
|
||||||
size="small"
|
size="small"
|
||||||
:disabled="importing"
|
:disabled="importing"
|
||||||
:loading="importing"
|
:loading="importing"
|
||||||
@ -84,7 +87,7 @@
|
|||||||
accept=".xlsx,.xls"
|
accept=".xlsx,.xls"
|
||||||
@change="handleFileChange"
|
@change="handleFileChange"
|
||||||
/>
|
/>
|
||||||
<template v-if="!isEditMode && !isJustCheckMode">
|
<template v-if="!isEditMode && !isEditDeptMode && !isJustCheckMode && (!detail || detail.distributeStatus !== '已完成')">
|
||||||
<el-button v-if="hasAnyEditPermission()" size="small" @click="handleEdit"
|
<el-button v-if="hasAnyEditPermission()" size="small" @click="handleEdit"
|
||||||
>编辑</el-button
|
>编辑</el-button
|
||||||
>
|
>
|
||||||
@ -108,7 +111,7 @@
|
|||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
<!-- 查看模式下,如果状态是已完成,显示编辑按钮或发起审批按钮 -->
|
<!-- 查看模式下,如果状态是已完成,显示编辑按钮或发起审批按钮 -->
|
||||||
<template v-if="!isEditMode && detail && detail.distributeStatus === '已完成'">
|
<template v-if="!isEditMode && !isEditDeptMode && detail && detail.distributeStatus === '已完成'">
|
||||||
|
|
||||||
<el-button
|
<el-button
|
||||||
v-if="hasSavedInCheckMode"
|
v-if="hasSavedInCheckMode"
|
||||||
@ -122,6 +125,11 @@
|
|||||||
<el-button size="small" @click="handleSaveEdit">保存编辑</el-button>
|
<el-button size="small" @click="handleSaveEdit">保存编辑</el-button>
|
||||||
<el-button size="small" @click="handleCancelEdit">取消</el-button>
|
<el-button size="small" @click="handleCancelEdit">取消</el-button>
|
||||||
</template>
|
</template>
|
||||||
|
<template v-else-if="isEditDeptMode">
|
||||||
|
<el-button size="small" @click="handleBatchModifyDept">批量修改</el-button>
|
||||||
|
<el-button size="small" @click="handleSaveDeptEdit">保存编辑</el-button>
|
||||||
|
<el-button size="small" @click="handleCancelDeptEdit">取消</el-button>
|
||||||
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -267,7 +275,24 @@
|
|||||||
<span v-else>{{ row.parameterValue || '/' }}</span>
|
<span v-else>{{ row.parameterValue || '/' }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="!isEditMode || isDispatchMode" class="cell">
|
<div v-if="!isEditMode || isDispatchMode" class="cell">
|
||||||
<span>{{ formatDepartmentDisplay(row.department) }}</span>
|
<span v-if="!isEditDeptMode">{{ formatDepartmentDisplay(row.department) }}</span>
|
||||||
|
<el-select
|
||||||
|
v-else-if="isEditDeptMode"
|
||||||
|
v-model="row.department"
|
||||||
|
size="small"
|
||||||
|
placeholder="请选择部门"
|
||||||
|
class="dept-select"
|
||||||
|
clearable
|
||||||
|
filterable
|
||||||
|
:filter-method="handleDeptRemoteSearch"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="dept in filteredDeptOptions"
|
||||||
|
:key="dept.id"
|
||||||
|
:value="dept.name"
|
||||||
|
:label="dept.name"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
<!-- 分发状态列:只在分发责任人模式下显示 -->
|
<!-- 分发状态列:只在分发责任人模式下显示 -->
|
||||||
<div v-if="isDispatchMode && dispatchType !== 'update_param'" class="cell">
|
<div v-if="isDispatchMode && dispatchType !== 'update_param'" class="cell">
|
||||||
@ -510,6 +535,77 @@
|
|||||||
@confirm="handleBatchModifyConfirm"
|
@confirm="handleBatchModifyConfirm"
|
||||||
@refresh-responsible-persons="loadResponsiblePersons"
|
@refresh-responsible-persons="loadResponsiblePersons"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<!-- 批量修改部门弹窗 -->
|
||||||
|
<el-dialog
|
||||||
|
title="批量修改部门"
|
||||||
|
:visible.sync="batchModifyDeptDialogVisible"
|
||||||
|
width="600px"
|
||||||
|
append-to-body
|
||||||
|
@close="handleBatchModifyDeptDialogClose"
|
||||||
|
>
|
||||||
|
<el-form
|
||||||
|
ref="batchModifyDeptForm"
|
||||||
|
:model="batchModifyDeptFormData"
|
||||||
|
:rules="batchModifyDeptFormRules"
|
||||||
|
label-width="120px"
|
||||||
|
>
|
||||||
|
<el-form-item label="子系统:" prop="subsystem">
|
||||||
|
<el-select
|
||||||
|
v-model="batchModifyDeptFormData.subsystem"
|
||||||
|
placeholder="请选择子系统"
|
||||||
|
clearable
|
||||||
|
style="width: 100%"
|
||||||
|
@change="handleBatchModifyDeptSubsystemChange"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in batchModifyDeptSubsystemList"
|
||||||
|
:key="item"
|
||||||
|
:label="item"
|
||||||
|
:value="item"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="零部件名称:" prop="partsName">
|
||||||
|
<el-select
|
||||||
|
v-model="batchModifyDeptFormData.partsName"
|
||||||
|
placeholder="请选择零部件名称"
|
||||||
|
clearable
|
||||||
|
multiple
|
||||||
|
style="width: 100%"
|
||||||
|
:disabled="!batchModifyDeptFormData.subsystem"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in batchModifyDeptPartsNameList"
|
||||||
|
:key="item"
|
||||||
|
:label="item"
|
||||||
|
:value="item"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="部门:" prop="department">
|
||||||
|
<el-select
|
||||||
|
v-model="batchModifyDeptFormData.department"
|
||||||
|
placeholder="请选择部门"
|
||||||
|
clearable
|
||||||
|
filterable
|
||||||
|
style="width: 100%"
|
||||||
|
:filter-method="handleBatchModifyDeptRemoteSearch"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="dept in filteredBatchModifyDeptOptions"
|
||||||
|
:key="dept.id"
|
||||||
|
:value="dept.name"
|
||||||
|
:label="dept.name"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="handleBatchModifyDeptDialogClose">取消</el-button>
|
||||||
|
<el-button type="primary" :loading="batchModifyDeptSubmitting" @click="handleBatchModifyDeptConfirm">确定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -585,10 +681,26 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
isEditMode: false,
|
isEditMode: false,
|
||||||
|
isEditDeptMode: false, // 编辑部门模式状态
|
||||||
originalData: null, // 保存原始数据,用于取消编辑
|
originalData: null, // 保存原始数据,用于取消编辑
|
||||||
|
originalDeptData: null, // 保存原始部门数据,用于取消编辑部门
|
||||||
dispatchOriginalData: null, // 保存分发模式下的原始数据,用于比较责任人变化
|
dispatchOriginalData: null, // 保存分发模式下的原始数据,用于比较责任人变化
|
||||||
savedCheckedKeys: [], // 保存编辑前的选中节点
|
savedCheckedKeys: [], // 保存编辑前的选中节点
|
||||||
savedDefaultExpandedKeys: [], // 保存编辑前的展开节点
|
savedDefaultExpandedKeys: [], // 保存编辑前的展开节点
|
||||||
|
departmentList: [], // 部门列表
|
||||||
|
deptLoading: false, // 部门搜索loading状态
|
||||||
|
deptSearchText: '', // 部门搜索文本
|
||||||
|
// 批量修改部门相关
|
||||||
|
batchModifyDeptDialogVisible: false, // 批量修改部门弹窗显示状态
|
||||||
|
batchModifyDeptSubmitting: false, // 批量修改部门提交loading状态
|
||||||
|
batchModifyDeptFormData: {
|
||||||
|
subsystem: '',
|
||||||
|
partsName: [],
|
||||||
|
department: ''
|
||||||
|
},
|
||||||
|
batchModifyDeptSubsystemList: [], // 子系统列表
|
||||||
|
batchModifyDeptPartsNameList: [], // 零部件名称列表
|
||||||
|
batchModifyDeptSearchText: '', // 批量修改部门搜索文本
|
||||||
currentVersionId: '',
|
currentVersionId: '',
|
||||||
hasVersionChanged: false, // 是否切换过版本
|
hasVersionChanged: false, // 是否切换过版本
|
||||||
treeFilterText: '',
|
treeFilterText: '',
|
||||||
@ -675,15 +787,56 @@ export default {
|
|||||||
const version = this.versions.find((v) => v.id === this.currentVersionId)
|
const version = this.versions.find((v) => v.id === this.currentVersionId)
|
||||||
return version ? version.label : 'V1'
|
return version ? version.label : 'V1'
|
||||||
},
|
},
|
||||||
|
// 过滤后的部门选项(用于下拉选择)
|
||||||
|
filteredDeptOptions() {
|
||||||
|
if (!this.deptSearchText || this.deptSearchText.trim() === '') {
|
||||||
|
return this.departmentList
|
||||||
|
}
|
||||||
|
const searchText = this.deptSearchText.toLowerCase()
|
||||||
|
return this.departmentList.filter((dept) => {
|
||||||
|
return dept.name && dept.name.toLowerCase().includes(searchText)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 批量修改部门过滤后的部门选项
|
||||||
|
filteredBatchModifyDeptOptions() {
|
||||||
|
if (!this.batchModifyDeptSearchText || this.batchModifyDeptSearchText.trim() === '') {
|
||||||
|
return this.departmentList
|
||||||
|
}
|
||||||
|
const searchText = this.batchModifyDeptSearchText.toLowerCase()
|
||||||
|
return this.departmentList.filter((dept) => {
|
||||||
|
return dept.name && dept.name.toLowerCase().includes(searchText)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 批量修改部门表单验证规则
|
||||||
|
batchModifyDeptFormRules() {
|
||||||
|
return {
|
||||||
|
subsystem: [
|
||||||
|
{ required: true, message: '请选择子系统', trigger: 'change' }
|
||||||
|
],
|
||||||
|
partsName: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
type: 'array',
|
||||||
|
min: 1,
|
||||||
|
message: '请至少选择一个零部件名称',
|
||||||
|
trigger: 'change'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
department: [
|
||||||
|
{ required: true, message: '请选择部门', trigger: 'change' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
// 判断是否允许切换版本(只有从列表查看按钮进入的可以切换版本)
|
// 判断是否允许切换版本(只有从列表查看按钮进入的可以切换版本)
|
||||||
canSwitchVersion() {
|
canSwitchVersion() {
|
||||||
// 从列表查看按钮进入的条件:不是隐藏操作模式、不是分发模式、不是从待办进入、没有填写人、不是编辑模式
|
// 从列表查看按钮进入的条件:不是隐藏操作模式、不是分发模式、不是从待办进入、没有填写人、不是编辑模式、不是编辑部门模式
|
||||||
return (
|
return (
|
||||||
!this.hideOperations &&
|
!this.hideOperations &&
|
||||||
!this.isDispatchMode &&
|
!this.isDispatchMode &&
|
||||||
!this.fromTodo &&
|
!this.fromTodo &&
|
||||||
!this.filledBy &&
|
!this.filledBy &&
|
||||||
!this.isEditMode
|
!this.isEditMode &&
|
||||||
|
!this.isEditDeptMode
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
// 判断是否是查看模式(justCheck)
|
// 判断是否是查看模式(justCheck)
|
||||||
@ -985,6 +1138,8 @@ export default {
|
|||||||
// 加载责任人列表和填写人列表
|
// 加载责任人列表和填写人列表
|
||||||
this.loadResponsiblePersons()
|
this.loadResponsiblePersons()
|
||||||
this.loadFillerPersons()
|
this.loadFillerPersons()
|
||||||
|
// 加载部门列表
|
||||||
|
this.loadDepartmentList()
|
||||||
// 加载版本列表
|
// 加载版本列表
|
||||||
this.getversions()
|
this.getversions()
|
||||||
// 加载树数据
|
// 加载树数据
|
||||||
@ -2124,13 +2279,325 @@ export default {
|
|||||||
handleCancelEdit() {
|
handleCancelEdit() {
|
||||||
// 取消编辑,恢复原始数据
|
// 取消编辑,恢复原始数据
|
||||||
if (this.originalData) {
|
if (this.originalData) {
|
||||||
|
// 深拷贝恢复原始数据
|
||||||
this.versionData = JSON.parse(JSON.stringify(this.originalData))
|
this.versionData = JSON.parse(JSON.stringify(this.originalData))
|
||||||
|
// 强制更新视图,确保数据恢复后界面正确显示
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$forceUpdate()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
this.isEditMode = false
|
this.isEditMode = false
|
||||||
this.originalData = null
|
this.originalData = null
|
||||||
this.changeData = [] // 清空修改数据
|
this.changeData = [] // 清空修改数据
|
||||||
// 取消编辑时,如果在查看模式下,不重置 hasSavedInCheckMode(保持已保存状态)
|
// 取消编辑时,如果在查看模式下,不重置 hasSavedInCheckMode(保持已保存状态)
|
||||||
},
|
},
|
||||||
|
// 进入编辑部门模式
|
||||||
|
handleEditDept() {
|
||||||
|
// 保存原始数据
|
||||||
|
this.originalDeptData = JSON.parse(JSON.stringify(this.versionData))
|
||||||
|
this.isEditDeptMode = true
|
||||||
|
},
|
||||||
|
// 保存部门编辑
|
||||||
|
handleSaveDeptEdit() {
|
||||||
|
if (!this.originalDeptData) {
|
||||||
|
this.$message({
|
||||||
|
type: 'warning',
|
||||||
|
message: '没有原始数据,无法比较'
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const currentData = this.versionData[this.currentVersionId] || {}
|
||||||
|
const originalVersionData = this.originalDeptData[this.currentVersionId] || {}
|
||||||
|
const deptChangeData = []
|
||||||
|
|
||||||
|
// 遍历当前版本的所有零件名称
|
||||||
|
Object.keys(currentData).forEach((partsName) => {
|
||||||
|
const currentParams = currentData[partsName] || []
|
||||||
|
const originalParams = originalVersionData[partsName] || []
|
||||||
|
|
||||||
|
// 创建原始数据的映射,方便查找
|
||||||
|
const originalMap = new Map()
|
||||||
|
originalParams.forEach((param) => {
|
||||||
|
const key = param.id || `${param.parameterName}_${param.subsystemName}`
|
||||||
|
originalMap.set(key, param)
|
||||||
|
})
|
||||||
|
|
||||||
|
// 遍历当前参数,找出部门修改项
|
||||||
|
currentParams.forEach((currentParam) => {
|
||||||
|
const key =
|
||||||
|
currentParam.id || `${currentParam.parameterName}_${currentParam.subsystemName}`
|
||||||
|
const originalParam = originalMap.get(key)
|
||||||
|
|
||||||
|
if (originalParam) {
|
||||||
|
// 比较 department 是否有变化
|
||||||
|
const currentDept = currentParam.department || ''
|
||||||
|
const originalDept = originalParam.department || ''
|
||||||
|
|
||||||
|
if (currentDept !== originalDept) {
|
||||||
|
// 有修改,添加到 deptChangeData
|
||||||
|
deptChangeData.push({
|
||||||
|
paramId: currentParam.id || currentParam.parameterId,
|
||||||
|
department: currentDept
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
// 如果没有修改项,提示用户
|
||||||
|
if (deptChangeData.length === 0) {
|
||||||
|
this.$message({
|
||||||
|
type: 'warning',
|
||||||
|
message: '没有部门数据被修改'
|
||||||
|
})
|
||||||
|
this.isEditDeptMode = false
|
||||||
|
this.originalDeptData = null
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('修改的部门数据项:', deptChangeData)
|
||||||
|
|
||||||
|
// 获取 modelId:优先使用 detail.id,其次使用 engineModelID,最后使用 currentEngineModelID
|
||||||
|
const modelId = (this.detail && this.detail.id) || this.engineModelID || this.currentEngineModelID
|
||||||
|
if (!modelId) {
|
||||||
|
this.$message({
|
||||||
|
type: 'error',
|
||||||
|
message: '缺少机型ID,无法保存'
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构建接口参数
|
||||||
|
const requestParams = {
|
||||||
|
modelId: modelId,
|
||||||
|
userId: getUserId(),
|
||||||
|
list: deptChangeData
|
||||||
|
}
|
||||||
|
|
||||||
|
// 调用保存部门接口
|
||||||
|
const request = {
|
||||||
|
...api.EDIT_DATA_DEPT,
|
||||||
|
params: requestParams,
|
||||||
|
disableSuccessMsg: true
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$request(request)
|
||||||
|
.asyncThen((resp) => {
|
||||||
|
this.isEditDeptMode = false
|
||||||
|
this.originalDeptData = null
|
||||||
|
|
||||||
|
// 重新加载数据
|
||||||
|
this.loadEngineDetail()
|
||||||
|
this.$message({
|
||||||
|
type: 'success',
|
||||||
|
message: '保存成功'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.asyncErrorCatch((err) => {
|
||||||
|
console.error('保存部门失败:', err)
|
||||||
|
this.$message({
|
||||||
|
type: 'error',
|
||||||
|
message: err?.message || '保存失败,请重试'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 取消部门编辑
|
||||||
|
handleCancelDeptEdit() {
|
||||||
|
// 取消编辑,恢复原始数据
|
||||||
|
if (this.originalDeptData) {
|
||||||
|
this.versionData = JSON.parse(JSON.stringify(this.originalDeptData))
|
||||||
|
}
|
||||||
|
this.isEditDeptMode = false
|
||||||
|
this.originalDeptData = null
|
||||||
|
},
|
||||||
|
// 加载部门列表
|
||||||
|
loadDepartmentList() {
|
||||||
|
const request = {
|
||||||
|
...api.GET_DEPT_OF_USER,
|
||||||
|
disableSuccessMsg: true
|
||||||
|
}
|
||||||
|
this.$request(request)
|
||||||
|
.asyncThen((resp) => {
|
||||||
|
// 处理返回的数据,确保格式为 { id, name }
|
||||||
|
let result = []
|
||||||
|
if (resp && resp.data) {
|
||||||
|
result = Array.isArray(resp.data) ? resp.data : (resp.data.data || [])
|
||||||
|
}
|
||||||
|
// 格式化数据,确保每个节点都有 id 和 name 字段
|
||||||
|
this.departmentList = this.formatDepartmentListData(result)
|
||||||
|
})
|
||||||
|
.asyncErrorCatch((err) => {
|
||||||
|
console.error('加载部门列表失败:', err)
|
||||||
|
this.departmentList = []
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 格式化部门列表数据
|
||||||
|
formatDepartmentListData(data) {
|
||||||
|
if (!Array.isArray(data)) {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
// 递归处理树形结构,提取所有部门节点
|
||||||
|
const formatNode = (node) => {
|
||||||
|
const formatted = {
|
||||||
|
id: node.id,
|
||||||
|
name: node.name || node.label || ''
|
||||||
|
}
|
||||||
|
return formatted
|
||||||
|
}
|
||||||
|
|
||||||
|
// 递归提取所有节点(包括子节点)
|
||||||
|
const extractAllNodes = (nodes) => {
|
||||||
|
let allNodes = []
|
||||||
|
nodes.forEach((node) => {
|
||||||
|
allNodes.push(formatNode(node))
|
||||||
|
if (node.children && Array.isArray(node.children) && node.children.length > 0) {
|
||||||
|
allNodes = allNodes.concat(extractAllNodes(node.children))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return allNodes
|
||||||
|
}
|
||||||
|
|
||||||
|
return extractAllNodes(data)
|
||||||
|
},
|
||||||
|
// 部门远程搜索(用于 el-select 的 filter-method)
|
||||||
|
handleDeptRemoteSearch(query) {
|
||||||
|
this.deptSearchText = query || ''
|
||||||
|
// 由于 filteredDeptOptions 是计算属性,会自动根据 deptSearchText 过滤
|
||||||
|
},
|
||||||
|
// 打开批量修改部门弹窗
|
||||||
|
handleBatchModifyDept() {
|
||||||
|
// 初始化表单数据
|
||||||
|
this.batchModifyDeptFormData = {
|
||||||
|
subsystem: '',
|
||||||
|
partsName: [],
|
||||||
|
department: ''
|
||||||
|
}
|
||||||
|
this.batchModifyDeptSubsystemList = []
|
||||||
|
this.batchModifyDeptPartsNameList = []
|
||||||
|
this.batchModifyDeptSearchText = ''
|
||||||
|
|
||||||
|
// 获取当前版本数据,提取子系统列表
|
||||||
|
const currentData = this.versionData[this.currentVersionId] || {}
|
||||||
|
const subsystemSet = new Set()
|
||||||
|
|
||||||
|
Object.keys(currentData).forEach((partsName) => {
|
||||||
|
const params = currentData[partsName] || []
|
||||||
|
params.forEach((param) => {
|
||||||
|
if (param.subsystemName) {
|
||||||
|
subsystemSet.add(param.subsystemName)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
this.batchModifyDeptSubsystemList = Array.from(subsystemSet).sort()
|
||||||
|
this.batchModifyDeptDialogVisible = true
|
||||||
|
|
||||||
|
// 清除表单验证
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (this.$refs.batchModifyDeptForm) {
|
||||||
|
this.$refs.batchModifyDeptForm.clearValidate()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 批量修改部门子系统选择变化
|
||||||
|
handleBatchModifyDeptSubsystemChange(subsystem) {
|
||||||
|
// 清空零部件名称和部门
|
||||||
|
this.batchModifyDeptFormData.partsName = []
|
||||||
|
this.batchModifyDeptFormData.department = ''
|
||||||
|
this.batchModifyDeptPartsNameList = []
|
||||||
|
|
||||||
|
if (!subsystem) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据子系统筛选零部件名称列表
|
||||||
|
const currentData = this.versionData[this.currentVersionId] || {}
|
||||||
|
const partsNameSet = new Set()
|
||||||
|
|
||||||
|
Object.keys(currentData).forEach((dataPartsName) => {
|
||||||
|
const params = currentData[dataPartsName] || []
|
||||||
|
params.forEach((param) => {
|
||||||
|
if (param.subsystemName === subsystem) {
|
||||||
|
const paramPartsName = param.partsName || dataPartsName
|
||||||
|
if (paramPartsName) {
|
||||||
|
partsNameSet.add(paramPartsName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
this.batchModifyDeptPartsNameList = Array.from(partsNameSet).sort()
|
||||||
|
},
|
||||||
|
// 批量修改部门远程搜索
|
||||||
|
handleBatchModifyDeptRemoteSearch(query) {
|
||||||
|
this.batchModifyDeptSearchText = query || ''
|
||||||
|
},
|
||||||
|
// 批量修改部门弹窗关闭
|
||||||
|
handleBatchModifyDeptDialogClose() {
|
||||||
|
this.batchModifyDeptDialogVisible = false
|
||||||
|
this.batchModifyDeptFormData = {
|
||||||
|
subsystem: '',
|
||||||
|
partsName: [],
|
||||||
|
department: ''
|
||||||
|
}
|
||||||
|
this.batchModifyDeptSubsystemList = []
|
||||||
|
this.batchModifyDeptPartsNameList = []
|
||||||
|
this.batchModifyDeptSearchText = ''
|
||||||
|
if (this.$refs.batchModifyDeptForm) {
|
||||||
|
this.$refs.batchModifyDeptForm.clearValidate()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 批量修改部门确认
|
||||||
|
handleBatchModifyDeptConfirm() {
|
||||||
|
this.$refs.batchModifyDeptForm.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
const { subsystem, partsName, department } = this.batchModifyDeptFormData
|
||||||
|
|
||||||
|
if (!subsystem || !partsName || !Array.isArray(partsName) || partsName.length === 0 || !department) {
|
||||||
|
this.$message({
|
||||||
|
type: 'warning',
|
||||||
|
message: '请完整填写表单信息'
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取当前版本数据
|
||||||
|
const currentData = this.versionData[this.currentVersionId] || {}
|
||||||
|
let updateCount = 0
|
||||||
|
|
||||||
|
// 遍历所有零部件名称
|
||||||
|
Object.keys(currentData).forEach((dataPartsName) => {
|
||||||
|
const params = currentData[dataPartsName] || []
|
||||||
|
params.forEach((param) => {
|
||||||
|
const paramPartsName = param.partsName || dataPartsName
|
||||||
|
// 检查是否匹配选中的子系统和零部件名称
|
||||||
|
if (
|
||||||
|
param.subsystemName === subsystem &&
|
||||||
|
partsName.includes(paramPartsName)
|
||||||
|
) {
|
||||||
|
// 更新部门
|
||||||
|
this.$set(param, 'department', department)
|
||||||
|
updateCount++
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
if (updateCount > 0) {
|
||||||
|
this.$message({
|
||||||
|
type: 'success',
|
||||||
|
message: `已批量更新 ${updateCount} 个参数的部门`
|
||||||
|
})
|
||||||
|
this.handleBatchModifyDeptDialogClose()
|
||||||
|
} else {
|
||||||
|
this.$message({
|
||||||
|
type: 'warning',
|
||||||
|
message: '未找到匹配的参数'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
handleBatchModifyResponsible() {
|
handleBatchModifyResponsible() {
|
||||||
// 直接打开弹窗,弹窗内部会处理数据加载
|
// 直接打开弹窗,弹窗内部会处理数据加载
|
||||||
this.$refs.batchModifyResponsibleModal.showModal()
|
this.$refs.batchModifyResponsibleModal.showModal()
|
||||||
@ -2239,7 +2706,11 @@ export default {
|
|||||||
if (updateCount > 0) {
|
if (updateCount > 0) {
|
||||||
// this.$message.success(`已批量更新 ${updateCount} 个参数的填写人`)
|
// this.$message.success(`已批量更新 ${updateCount} 个参数的填写人`)
|
||||||
} else {
|
} else {
|
||||||
this.$message.warning('未找到匹配的参数')
|
this.$message({
|
||||||
|
type: 'warning',
|
||||||
|
message: '没有参数被修改'
|
||||||
|
})
|
||||||
|
return
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1297,11 +1297,19 @@ export default {
|
|||||||
this.loadManagerData()
|
this.loadManagerData()
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
let errMessage = ''
|
||||||
|
if (err && err.data && err.data.errors && Array.isArray(err.data.errors)) {
|
||||||
|
for (let error of err.data.errors) {
|
||||||
|
errMessage += error + '\n'
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
errMessage = err.message || '导入失败,请稍后重试'
|
||||||
|
}
|
||||||
console.error('导入失败:', err)
|
console.error('导入失败:', err)
|
||||||
loadingInstance.close()
|
loadingInstance.close()
|
||||||
this.$message({
|
this.$message({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
message: err.message || '导入失败,请稍后重试'
|
message: errMessage || '导入失败,请稍后重试'
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
|
|||||||
@ -578,7 +578,7 @@ export default {
|
|||||||
returnableNodes: [],
|
returnableNodes: [],
|
||||||
selectedReturnNode: '',
|
selectedReturnNode: '',
|
||||||
returnSubmitting: false,
|
returnSubmitting: false,
|
||||||
returnOpinion: '', // 退回意见(仅在选择编制节点时使用)
|
returnOpinion: '拒绝', // 退回意见(仅在选择编制节点时使用)
|
||||||
isEditMode: false, // 编辑模式
|
isEditMode: false, // 编辑模式
|
||||||
editFormData: {
|
editFormData: {
|
||||||
title: '',
|
title: '',
|
||||||
@ -1087,20 +1087,25 @@ export default {
|
|||||||
this.returnableNodes = ['编制']
|
this.returnableNodes = ['编制']
|
||||||
})
|
})
|
||||||
this.selectedReturnNode = ''
|
this.selectedReturnNode = ''
|
||||||
this.returnOpinion = ''
|
this.returnOpinion = '拒绝'
|
||||||
this.returnNodeDialogVisible = true
|
this.returnNodeDialogVisible = true
|
||||||
},
|
},
|
||||||
// 关闭退回节点选择弹窗
|
// 关闭退回节点选择弹窗
|
||||||
handleReturnNodeDialogClose() {
|
handleReturnNodeDialogClose() {
|
||||||
this.returnNodeDialogVisible = false
|
this.returnNodeDialogVisible = false
|
||||||
this.selectedReturnNode = ''
|
this.selectedReturnNode = ''
|
||||||
this.returnOpinion = ''
|
this.returnOpinion = '拒绝'
|
||||||
},
|
},
|
||||||
// 处理退回节点选择变化
|
// 处理退回节点选择变化
|
||||||
handleReturnNodeChange() {
|
handleReturnNodeChange() {
|
||||||
// 如果不是"编制"节点,清空意见
|
// 如果不是"编制"节点,清空意见
|
||||||
if (this.selectedReturnNode !== '编制') {
|
if (this.selectedReturnNode !== '编制') {
|
||||||
this.returnOpinion = ''
|
this.returnOpinion = ''
|
||||||
|
} else {
|
||||||
|
// 如果选择"编制"节点,设置默认值为"拒绝"
|
||||||
|
if (!this.returnOpinion) {
|
||||||
|
this.returnOpinion = '拒绝'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 提交退回操作
|
// 提交退回操作
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user