fix:修改问题

This commit is contained in:
大黑 2025-12-22 16:10:36 +08:00
parent 3e4253d9a9
commit 8e35ac314b
17 changed files with 278307 additions and 1893 deletions

Binary file not shown.

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

View File

@ -0,0 +1,146 @@
{
"entry": "index.js",
"copyAssets": ["public/custom/apaas-custom-mydemo"],
"router": {
"apaas-custom-modalContorl":{
"name": "apaas-custom-modalContorl",
"path": "apaas-custom-modalContorl",
"meta": {
"title": "模板管理"
}
},
"apaas-custom-selfEnginedata":{
"name": "apaas-custom-selfEnginedata",
"path": "apaas-custom-selfEnginedata",
"meta": {
"title": "玉柴发动机数据"
}
},
"apaas-custom-otherEnginedata":{
"name": "apaas-custom-otherEnginedata",
"path": "apaas-custom-otherEnginedata",
"meta": {
"title": "竞品发动机数据"
}
},
"apaas-custom-checkData":{
"name": "apaas-custom-checkData",
"path": "apaas-custom-checkData",
"meta": {
"title": "数据检查"
}
},
"apaas-custom-report":{
"name": "apaas-custom-report",
"path": "apaas-custom-report",
"meta": {
"title": "对标报告"
}
},
"apaas-custom-reportList":{
"name": "apaas-custom-reportList",
"path": "apaas-custom-reportList",
"meta": {
"title": "报告列表"
}
},
"apaas-custom-reportDetail":{
"name": "apaas-custom-reportDetail",
"path": "apaas-custom-reportDetail",
"meta": {
"title": "报告详情"
}
},
"apaas-custom-reportCheck":{
"name": "apaas-custom-reportCheck",
"path": "apaas-custom-reportCheck",
"meta": {
"title": "报告检查"
}
},
"apaas-custom-modelDetail":{
"name": "apaas-custom-modelDetail",
"path": "apaas-custom-modelDetail",
"meta": {
"title": "系统参数管理"
}
},
"apaas-custom-engineDetail":{
"name": "apaas-custom-engineDetail",
"path": "apaas-custom-engineDetail",
"meta": {
"title": "发动机参数详情"
}
},
"apaas-custom-approvalManagement":{
"name": "apaas-custom-approvalManagement",
"path": "apaas-custom-approvalManagement",
"meta": {
"title": "模板审批管理"
}
},
"apaas-custom-toDoList":{
"name": "apaas-custom-toDoList",
"path": "apaas-custom-toDoList",
"meta": {
"title": "数据待办"
}
},
"apaas-custom-myDone":{
"name": "apaas-custom-myDone",
"path": "apaas-custom-myDone",
"meta": {
"title": "我的已办"
}
},
"apaas-custom-mySend":{
"name": "apaas-custom-mySend",
"path": "apaas-custom-mySend",
"meta": {
"title": "我发起的"
}
},
"apaas-custom-selfEngineCheck":{
"name": "apaas-custom-selfEngineCheck",
"path": "apaas-custom-selfEngineCheck",
"meta": {
"title": "玉柴发动机审核"
}
},
"apaas-custom-otherEngineCheck":{
"name": "apaas-custom-otherEngineCheck",
"path": "apaas-custom-otherEngineCheck",
"meta": {
"title": "竞品发动机审核"
}
},
"apaas-custom-managerData":{
"name": "apaas-custom-managerData",
"path": "apaas-custom-managerData",
"meta": {
"title": "责任人管理"
}
},
"apaas-custom-fillerData":{
"name": "apaas-custom-fillerData",
"path": "apaas-custom-fillerData",
"meta": {
"title": "填写人管理"
}
},
"apaas-custom-permissionManagement":{
"name": "apaas-custom-permissionManagement",
"path": "apaas-custom-permissionManagement",
"meta": {
"title": "权限管理"
}
}
},
"customWidgetList": [
{
"code": "mydemo",
"text": "mydemo"
}
],
"outputName": "apaas-custom-mydemo"
}

View File

@ -0,0 +1,10 @@
<meta charset="utf-8">
<title>apaas-custom-mydemo demo</title>
<script src="./apaas-custom-mydemo.umd.js"></script>
<link rel="stylesheet" href="./apaas-custom-mydemo.css">
<script>
console.log(apaas-custom-mydemo)
</script>

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -165,39 +165,43 @@ export default {
method: 'get' method: 'get'
}, },
GET_REPORT_LIST: { GET_REPORT_LIST: {
url: '/custom/benchmark/getReportAndTodoByCondition', url: 'http://10.26.81.22:9091/custom/benchmark/getReportAndTodoByCondition',
method: 'post'
},
GET_REPORT_LIST_BY_CONDITION: {
url: 'http://10.26.81.22:9091/custom/benchmark/getApprovalList',
method: 'post' method: 'post'
}, },
ADD_REPORT: { ADD_REPORT: {
url: '/custom/benchmark/startReportApproval', url: 'http://10.26.81.22:9091/custom/benchmark/startReportApproval',
method: 'post' method: 'post'
}, },
SAVE_REPORT: { SAVE_REPORT: {
url: '/custom/benchmark/insertReport', url: 'http://10.26.81.22:9091/custom/benchmark/insertReport',
method: 'post' method: 'post'
}, },
EDIT_REPORT: { EDIT_REPORT: {
url: '/custom/benchmark/updateReport', url: 'http://10.26.81.22:9091/custom/benchmark/updateReport',
method: 'post' method: 'post'
}, },
RESTART_REPORT_APPROVAL: { RESTART_REPORT_APPROVAL: {
url: '/custom/benchmark/restartReportApproval', url: 'http://10.26.81.22:9091/custom/benchmark/restartReportApproval',
method: 'post' method: 'post'
}, },
START_REPORT_APPROVAL: { START_REPORT_APPROVAL: {
url: '/custom/benchmark/handleReportApproval', url: 'http://10.26.81.22:9091/custom/benchmark/handleReportApproval',
method: 'post' method: 'post'
}, },
GET_REPORT_DETAIL: { GET_REPORT_DETAIL: {
url: '/custom/benchmark/getReportDetail', url: 'http://10.26.81.22:9091/custom/benchmark/getReportDetail',
method: 'get' method: 'get'
}, },
GET_REPORT_DETAIL_PROCESS: { GET_REPORT_DETAIL_PROCESS: {
url: '/custom/benchmark/getReportProcess', url: 'http://10.26.81.22:9091/custom/benchmark/getReportProcess',
method: 'get' method: 'get'
}, },
DOWNLOAD_REPORT: { DOWNLOAD_REPORT: {
url: '/custom/benchmark/downloadReport', url: 'http://10.26.81.22:9091/custom/benchmark/downloadReport',
method: 'get' method: 'get'
}, },
//权限管理相关接口 //权限管理相关接口

View File

@ -51,13 +51,13 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="部门:" prop="department"> <el-form-item v-if="dispatchType !== 'update_param'" label="部门:" prop="department">
<el-select <el-select
v-model="formData.department" v-model="formData.department"
placeholder="请选择部门" placeholder="请选择部门"
clearable clearable
style="width: 100%" style="width: 100%"
:disabled="!formData.subsystem || (dispatchType === 'update_param' && !formData.partsName)" :disabled="!formData.subsystem"
@change="handleDepartmentChange" @change="handleDepartmentChange"
> >
<el-option <el-option
@ -77,13 +77,22 @@
style="width: 100%" style="width: 100%"
/> />
</el-form-item> </el-form-item>
<el-form-item v-if="dispatchType === 'update_param'" label="现填写人:">
<el-input
v-model="formData.currentFillerName"
disabled
placeholder="暂无填写人"
readonly
style="width: 100%"
/>
</el-form-item>
<el-form-item :label="dispatchType === 'update_param' ? '填写人:' : '责任人:'" prop="userId"> <el-form-item :label="dispatchType === 'update_param' ? '填写人:' : '责任人:'" prop="userId">
<el-select <el-select
v-model="formData.userId" v-model="formData.userId"
:placeholder="dispatchType === 'update_param' ? '请输入填写人姓名进行搜索' : '请输入责任人姓名进行搜索'" :placeholder="dispatchType === 'update_param' ? '请输入填写人姓名进行搜索' : '请输入责任人姓名进行搜索'"
style="width: 100%" style="width: 100%"
clearable clearable
:disabled="!formData.department || (dispatchType === 'update_param' && !formData.partsName)" :disabled="dispatchType === 'update_param' ? !formData.partsName : !formData.department"
filterable filterable
remote remote
reserve-keyword reserve-keyword
@ -155,6 +164,8 @@ export default {
department: '', department: '',
currentResponsibleId: '', // ID currentResponsibleId: '', // ID
currentResponsibleName: '', // currentResponsibleName: '', //
currentFillerId: '', // ID
currentFillerName: '', //
userId: '', // userId el-select v-model userId: '', // userId el-select v-model
userNumber: '', // userNumber userNumber: '', // userNumber
username: '', // username username: '', // username
@ -178,9 +189,6 @@ export default {
subsystem: [ subsystem: [
{ required: true, message: '请选择子系统', trigger: 'change' } { required: true, message: '请选择子系统', trigger: 'change' }
], ],
department: [
{ required: true, message: '请选择部门', trigger: 'change' }
],
userId: [ userId: [
{ required: true, message: this.dispatchType === 'update_param' ? '请选择填写人' : '请选择责任人', trigger: 'change' } { required: true, message: this.dispatchType === 'update_param' ? '请选择填写人' : '请选择责任人', trigger: 'change' }
] ]
@ -190,6 +198,11 @@ export default {
rules.partsName = [ rules.partsName = [
{ required: true, message: '请选择零部件名称', trigger: 'change' } { required: true, message: '请选择零部件名称', trigger: 'change' }
] ]
} else {
//
rules.department = [
{ required: true, message: '请选择部门', trigger: 'change' }
]
} }
return rules return rules
} }
@ -219,6 +232,8 @@ export default {
department: '', department: '',
currentResponsibleId: '', currentResponsibleId: '',
currentResponsibleName: '', currentResponsibleName: '',
currentFillerId: '',
currentFillerName: '',
userId: '', userId: '',
userNumber: '', userNumber: '',
username: '', username: '',
@ -250,6 +265,8 @@ export default {
department: '', department: '',
currentResponsibleId: '', currentResponsibleId: '',
currentResponsibleName: '', currentResponsibleName: '',
currentFillerId: '',
currentFillerName: '',
userId: '', userId: '',
userNumber: '', userNumber: '',
username: '', username: '',
@ -304,11 +321,13 @@ export default {
}, },
// //
handleSubsystemChange(subsystem) { handleSubsystemChange(subsystem) {
// // /
this.formData.partsName = '' this.formData.partsName = ''
this.formData.department = '' this.formData.department = ''
this.formData.currentResponsibleId = '' this.formData.currentResponsibleId = ''
this.formData.currentResponsibleName = '' this.formData.currentResponsibleName = ''
this.formData.currentFillerId = ''
this.formData.currentFillerName = ''
this.formData.rowId = '' this.formData.rowId = ''
this.formData.userId = '' this.formData.userId = ''
this.formData.userNumber = '' this.formData.userNumber = ''
@ -329,24 +348,29 @@ export default {
params.forEach((param) => { params.forEach((param) => {
// //
if (param.subsystemName === subsystem) { if (param.subsystemName === subsystem) {
// // /
if (this.dispatchType === 'update_param') { if (this.dispatchType === 'update_param') {
const paramPartsName = param.partsName || partsName const paramPartsName = param.partsName || partsName
if (paramPartsName && paramPartsName !== '/') { if (paramPartsName) {
partsNameSet.add(paramPartsName) partsNameSet.add(paramPartsName)
} }
} }
// //
if (param.department) { if (this.dispatchType !== 'update_param' && param.department) {
departmentSet.add(param.department) departmentSet.add(param.department)
} }
} }
}) })
}) })
// // /
if (this.dispatchType === 'update_param') { if (this.dispatchType === 'update_param') {
this.availablePartsNames = Array.from(partsNameSet).sort() const partsNamesArray = Array.from(partsNameSet).sort()
// /
if (!partsNamesArray.includes('/')) {
partsNamesArray.unshift('/')
}
this.availablePartsNames = partsNamesArray
} }
// //
@ -363,17 +387,32 @@ export default {
}, },
// //
handlePartsNameChange(partsName) { handlePartsNameChange(partsName) {
// //
this.formData.department = '' this.formData.currentFillerId = ''
this.formData.currentFillerName = ''
this.formData.userId = '' this.formData.userId = ''
this.formData.userNumber = '' this.formData.userNumber = ''
this.formData.username = '' this.formData.username = ''
this.availableDepartments = []
this.userOptions = [] this.userOptions = []
// //
if (partsName && this.formData.subsystem) { if (partsName && this.formData.subsystem) {
const departmentSet = new Set() this.findCurrentFiller()
} else {
this.formData.currentFillerId = ''
this.formData.currentFillerName = ''
}
},
//
findCurrentFiller() {
if (!this.formData.subsystem || !this.formData.partsName) {
this.formData.currentFillerId = ''
this.formData.currentFillerName = ''
return
}
// versionData
const currentVersionData = this.versionData[this.currentVersionId] || {} const currentVersionData = this.versionData[this.currentVersionId] || {}
let foundFiller = null
// partsName // partsName
Object.keys(currentVersionData).forEach((dataPartsName) => { Object.keys(currentVersionData).forEach((dataPartsName) => {
@ -384,20 +423,36 @@ export default {
const paramPartsName = param.partsName || dataPartsName const paramPartsName = param.partsName || dataPartsName
if ( if (
param.subsystemName === this.formData.subsystem && param.subsystemName === this.formData.subsystem &&
paramPartsName === partsName && paramPartsName === this.formData.partsName &&
param.department param.filledByUserId
) { ) {
departmentSet.add(param.department) // 使
if (!foundFiller) {
foundFiller = {
userId: param.filledByUserId,
username: param.filledBy || ''
}
}
} }
}) })
}) })
// if (foundFiller) {
this.availableDepartments = Array.from(departmentSet).map((dept) => ({ // fillerPersons
department: dept const fillerPerson = this.fillerPersons.find(
})) (p) => p.userId === foundFiller.userId || p.id === foundFiller.userId
)
if (fillerPerson) {
this.formData.currentFillerId = fillerPerson.userId || fillerPerson.id || ''
this.formData.currentFillerName = fillerPerson.userName || foundFiller.username || ''
} else { } else {
this.availableDepartments = [] this.formData.currentFillerId = foundFiller.userId || ''
this.formData.currentFillerName = foundFiller.username || ''
}
} else {
//
this.formData.currentFillerId = ''
this.formData.currentFillerName = ''
} }
}, },
// //
@ -437,16 +492,16 @@ export default {
} }
} }
}, },
// // /
handleRemoteSearch(query) { handleRemoteSearch(query) {
// //
if (this.dispatchType === 'update_param') { if (this.dispatchType === 'update_param') {
if (!this.formData.partsName || !this.formData.department) { if (!this.formData.partsName) {
this.userOptions = [] this.userOptions = []
return return
} }
} else { } else {
// //
if (!this.formData.department) { if (!this.formData.department) {
this.userOptions = [] this.userOptions = []
return return
@ -571,7 +626,6 @@ export default {
const confirmData = { const confirmData = {
subsystem: this.formData.subsystem, subsystem: this.formData.subsystem,
partsName: this.formData.partsName, partsName: this.formData.partsName,
department: this.formData.department,
userId: this.formData.userId, // userId userId: this.formData.userId, // userId
userNumber: this.formData.userNumber || this.formData.userId, // userNumber使 userId userNumber: this.formData.userNumber || this.formData.userId, // userNumber使 userId
username: this.formData.username || '' username: this.formData.username || ''

View File

@ -19,7 +19,7 @@
</div> </div>
</div> </div>
<div class="header-right"> <div class="header-right">
<el-button type="primary" v-if="detail.statusDescription === '审批中'" size="small" @click="handleApprove"> <el-button type="primary" size="small" @click="handleApprove">
审批 审批
</el-button> </el-button>
</div> </div>

View File

@ -1450,9 +1450,9 @@ export default {
// //
if (this.dispatchType === 'update_param') { if (this.dispatchType === 'update_param') {
const { subsystem, partsName, department, userId, userNumber, username } = change const { subsystem, partsName, userId, userNumber, username } = change
console.log(change, 'change', subsystem, partsName, department, userId, userNumber, username) console.log(change, 'change', subsystem, partsName, userId, userNumber, username)
if (!subsystem || !partsName || !department || !userId) { if (!subsystem || !partsName || !userId) {
this.$message({ this.$message({
type: 'warning', type: 'warning',
message: '缺少必要参数' message: '缺少必要参数'
@ -1460,9 +1460,6 @@ export default {
return return
} }
// · -
const normalizedDepartment = department.replace(/·/g, '-')
// //
const currentData = this.versionData[this.currentVersionId] || {} const currentData = this.versionData[this.currentVersionId] || {}
let updateCount = 0 let updateCount = 0
@ -1480,22 +1477,17 @@ export default {
const params = currentData[dataPartsName] || [] const params = currentData[dataPartsName] || []
// //
params.forEach((param, index) => { params.forEach((param, index) => {
// · -
const normalizedParamDept = (param.department || '').replace(/·/g, '-')
// 使param.partsName使dataPartsName // 使param.partsName使dataPartsName
const paramPartsName = param.partsName || dataPartsName const paramPartsName = param.partsName || dataPartsName
// 使 //
if ( if (
param.subsystemName === subsystem && param.subsystemName === subsystem &&
paramPartsName === partsName && paramPartsName === partsName
normalizedParamDept === normalizedDepartment
) { ) {
// //
param.filledBy = userId // IDuserId param.filledBy = userId // IDuserId
param.filledByUserId = userId // userId el-select v-model param.filledByUserId = userId // userId el-select v-model
//
param.department = department
// 使 Vue.set // 使 Vue.set
this.$set(currentData[dataPartsName], index, param) this.$set(currentData[dataPartsName], index, param)

View File

@ -49,14 +49,14 @@
下载导入模板 下载导入模板
</el-button> </el-button>
<el-button <el-button
v-if="shouldShowMaintainButton"
class="right-button" class="right-button"
@click="handleMaintainParams" @click="handleMaintainParams"
> >
维护参数 维护参数
</el-button> </el-button>
<el-button <el-button
v-if="shouldShowMaintainButton"
class="right-button-primary" class="right-button-primary"
type="primary" type="primary"
@click="handleInitiateApproval" @click="handleInitiateApproval"
@ -179,8 +179,8 @@
:pageConfig="approvalTableConfig.pageConfig" :pageConfig="approvalTableConfig.pageConfig"
:pagination="pagination" :pagination="pagination"
class="approval-table" class="approval-table"
@size-change="pageSizeChange" @size-change="approvalPageSizeChange"
@current-page-change="currentChange" @current-page-change="approvalCurrentPageChange"
> >
</x-vxe-table> </x-vxe-table>
</div> </div>
@ -1300,6 +1300,14 @@ export default {
this.$set(this.pagination, 'currentPage', currentPage) this.$set(this.pagination, 'currentPage', currentPage)
this.loadData() this.loadData()
}, },
approvalPageSizeChange(size) {
this.$set(this.pagination, 'pageSize', size)
this.getApprovalChange()
},
approvalCurrentPageChange(currentPage) {
this.$set(this.pagination, 'currentPage', currentPage)
this.getApprovalChange()
},
selectDataChange(data) { selectDataChange(data) {
this.$emit('select-data-change', data) this.$emit('select-data-change', data)
}, },

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="apaas-custom-page-mydemo custom-page"> <div class="apaas-custom-page-mydemo custom-page">
<template v-if="!showReportDetail"> <template v-if="!showReportDetail">
<div class="page-header"> <!-- <div class="page-header">
<div class="title"> <div class="title">
报告管理 报告管理
</div> </div>
@ -13,7 +13,7 @@
@click.native="handleRefresh()" @click.native="handleRefresh()"
></x-svg-icon> ></x-svg-icon>
</div> </div>
</div> </div> -->
<div class="page-search-panel"> <div class="page-search-panel">
<div class="searched-fields"> <div class="searched-fields">
@ -59,12 +59,7 @@
</div> </div>
<div class="searched-field"> <div class="searched-field">
<span class="fielded-label">状态</span> <span class="fielded-label">状态</span>
<el-select <el-select v-model="searchPanelValue.status" clearable filterable placeholder="请选择">
v-model="searchPanelValue.status"
clearable
filterable
placeholder="请选择"
>
<el-option <el-option
v-for="item in statusOptions" v-for="item in statusOptions"
:key="item.id" :key="item.id"
@ -172,7 +167,10 @@
@click.stop="handleApprove(row)" @click.stop="handleApprove(row)"
>审批</a >审批</a
> >
<span v-if="row.status === 'APPROVING'" style="width: 6px; display: inline-block"></span> <span
v-if="row.status === 'APPROVING'"
style="width: 6px; display: inline-block"
></span>
<a <a
v-if="!row.status || row.status === '' || row.status === 'DRAFT'" v-if="!row.status || row.status === '' || row.status === 'DRAFT'"
href="javascript:void(0)" href="javascript:void(0)"
@ -180,7 +178,10 @@
@click.stop="handleLaunch(row)" @click.stop="handleLaunch(row)"
>发起</a >发起</a
> >
<span v-if="!row.status || row.status === '' || row.status === 'DRAFT'" style="width: 6px; display: inline-block"></span> <span
v-if="!row.status || row.status === '' || row.status === 'DRAFT'"
style="width: 6px; display: inline-block"
></span>
<a <a
v-if="row.status === 'REJECTED'" v-if="row.status === 'REJECTED'"
href="javascript:void(0)" href="javascript:void(0)"
@ -188,7 +189,10 @@
@click.stop="handleRestart(row)" @click.stop="handleRestart(row)"
>重新发起</a >重新发起</a
> >
<span v-if="row.status === 'REJECTED'" style="width: 6px; display: inline-block"></span> <span
v-if="row.status === 'REJECTED'"
style="width: 6px; display: inline-block"
></span>
<a <a
v-if="row.filePath" v-if="row.filePath"
href="javascript:void(0)" href="javascript:void(0)"
@ -207,7 +211,12 @@
</x-vxe-table> </x-vxe-table>
</div> </div>
</template> </template>
<report-detail v-else :detail="currentReportDetail" @close="closeReportDetail" @refresh="handleReportDetailRefresh" /> <report-detail
v-else
:detail="currentReportDetail"
@close="closeReportDetail"
@refresh="handleReportDetailRefresh"
/>
<!-- 新增/修改报告弹窗 --> <!-- 新增/修改报告弹窗 -->
<el-dialog <el-dialog
@ -318,9 +327,9 @@
<el-button type="primary" icon="el-icon-upload"> <el-button type="primary" icon="el-icon-upload">
选择文件 选择文件
</el-button> </el-button>
<div slot="tip" class="el-upload__tip" <div slot="tip" class="el-upload__tip">
>支持扩展名: .doc .pdf .xls .xlsx .ppt .pptx仅支持上传一个文件</div 支持扩展名: .doc .pdf .xls .xlsx .ppt .pptx仅支持上传一个文件
> </div>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item label="说明" prop="explanation"> <el-form-item label="说明" prop="explanation">
@ -366,11 +375,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr <tr v-for="(step, index) in launchWorkflowSteps" :key="index" class="workflow-row">
v-for="(step, index) in launchWorkflowSteps"
:key="index"
class="workflow-row"
>
<td class="step-name-cell"> <td class="step-name-cell">
<span class="step-name"> <span class="step-name">
{{ step.name }} {{ step.name }}
@ -481,6 +486,7 @@ export default {
status: '' status: ''
}, },
statusOptions: [ statusOptions: [
{ id: 'DRAFT', label: '草稿' },
{ id: 'APPROVING', label: '审批中' }, { id: 'APPROVING', label: '审批中' },
{ id: 'COMPLETE', label: '已完成' }, { id: 'COMPLETE', label: '已完成' },
{ id: 'REJECTED', label: '已拒绝' } { id: 'REJECTED', label: '已拒绝' }
@ -690,10 +696,12 @@ export default {
} }
// //
if (row.fileUrl || row.filePath) { if (row.fileUrl || row.filePath) {
this.fileList = [{ this.fileList = [
{
name: row.title || '文件', name: row.title || '文件',
url: row.fileUrl || row.filePath url: row.fileUrl || row.filePath
}] }
]
} else { } else {
this.fileList = [] this.fileList = []
} }
@ -787,6 +795,7 @@ export default {
// //
const submitData = { const submitData = {
reportId: reportId, reportId: reportId,
userId: getUserId(),
proofreadUsers: this.launchWorkflowSteps[0].handlers, proofreadUsers: this.launchWorkflowSteps[0].handlers,
reviewUsers: this.launchWorkflowSteps[1].handlers, reviewUsers: this.launchWorkflowSteps[1].handlers,
countersignUsers: [], countersignUsers: [],
@ -821,9 +830,7 @@ export default {
if (!query || query.trim() === '') { if (!query || query.trim() === '') {
// //
if (step.handlers && step.handlers.length > 0) { if (step.handlers && step.handlers.length > 0) {
const selectedOptions = step.options.filter(opt => const selectedOptions = step.options.filter((opt) => step.handlers.includes(opt.userId))
step.handlers.includes(opt.userId)
)
step.options = selectedOptions step.options = selectedOptions
} else { } else {
step.options = [] step.options = []
@ -854,24 +861,24 @@ export default {
} }
// //
const users = result const users = result
.map(user => ({ .map((user) => ({
userId: user.userId || user.id, userId: user.userId || user.id,
username: user.username || user.name, username: user.username || user.name,
userNumber: user.userNumber || user.userId || user.id userNumber: user.userNumber || user.userId || user.id
})) }))
.filter(user => user.userId && user.userNumber) .filter((user) => user.userId && user.userNumber)
const existingIds = new Set(step.handlers || []) const existingIds = new Set(step.handlers || [])
const filteredUsers = users.filter(user => !existingIds.has(user.userId)) const filteredUsers = users.filter((user) => !existingIds.has(user.userId))
const selectedOptions = (step.options || []).filter(opt => const selectedOptions = (step.options || []).filter(
opt.userId && step.handlers && step.handlers.includes(opt.userId) (opt) => opt.userId && step.handlers && step.handlers.includes(opt.userId)
) )
const optionsMap = new Map() const optionsMap = new Map()
selectedOptions.forEach(opt => { selectedOptions.forEach((opt) => {
if (opt.userNumber) { if (opt.userNumber) {
optionsMap.set(opt.userNumber, opt) optionsMap.set(opt.userNumber, opt)
} }
}) })
filteredUsers.forEach(user => { filteredUsers.forEach((user) => {
if (user.userNumber && !optionsMap.has(user.userNumber)) { if (user.userNumber && !optionsMap.has(user.userNumber)) {
optionsMap.set(user.userNumber, user) optionsMap.set(user.userNumber, user)
} }
@ -882,9 +889,7 @@ export default {
.asyncErrorCatch((err) => { .asyncErrorCatch((err) => {
console.error('搜索人员失败:', err) console.error('搜索人员失败:', err)
if (step.handlers && step.handlers.length > 0) { if (step.handlers && step.handlers.length > 0) {
const selectedOptions = step.options.filter(opt => const selectedOptions = step.options.filter((opt) => step.handlers.includes(opt.userId))
step.handlers.includes(opt.userId)
)
step.options = selectedOptions step.options = selectedOptions
} else { } else {
step.options = [] step.options = []
@ -1118,11 +1123,9 @@ export default {
if (!query || query.trim() === '') { if (!query || query.trim() === '') {
// //
if (step.handlers && step.handlers.length > 0) { if (step.handlers && step.handlers.length > 0) {
const selectedOptions = step.options.filter(opt => const selectedOptions = step.options.filter((opt) => step.handlers.includes(opt.userId))
step.handlers.includes(opt.userId) const missingIds = step.handlers.filter(
) (id) => !selectedOptions.some((opt) => opt.userId === id)
const missingIds = step.handlers.filter(id =>
!selectedOptions.some(opt => opt.userId === id)
) )
if (missingIds.length > 0) { if (missingIds.length > 0) {
step.options = selectedOptions step.options = selectedOptions
@ -1158,30 +1161,30 @@ export default {
} }
// {userId: user.userId, username: user.username, userNumber: user.userNumber} // {userId: user.userId, username: user.username, userNumber: user.userNumber}
const users = result const users = result
.map(user => ({ .map((user) => ({
userId: user.userId || user.id, userId: user.userId || user.id,
username: user.username || user.name, username: user.username || user.name,
userNumber: user.userNumber || user.userId || user.id userNumber: user.userNumber || user.userId || user.id
})) }))
.filter(user => user.userId && user.userNumber) // userId userNumber .filter((user) => user.userId && user.userNumber) // userId userNumber
// step.handlers userId el-option value userId // step.handlers userId el-option value userId
const existingIds = new Set(step.handlers || []) const existingIds = new Set(step.handlers || [])
// //
const filteredUsers = users.filter(user => !existingIds.has(user.userId)) const filteredUsers = users.filter((user) => !existingIds.has(user.userId))
// options + // options +
const selectedOptions = (step.options || []).filter(opt => const selectedOptions = (step.options || []).filter(
opt.userId && step.handlers && step.handlers.includes(opt.userId) (opt) => opt.userId && step.handlers && step.handlers.includes(opt.userId)
) )
// 使 Map userNumber 使 userNumber key // 使 Map userNumber 使 userNumber key
const optionsMap = new Map() const optionsMap = new Map()
// //
selectedOptions.forEach(opt => { selectedOptions.forEach((opt) => {
if (opt.userNumber) { if (opt.userNumber) {
optionsMap.set(opt.userNumber, opt) optionsMap.set(opt.userNumber, opt)
} }
}) })
// //
filteredUsers.forEach(user => { filteredUsers.forEach((user) => {
if (user.userNumber && !optionsMap.has(user.userNumber)) { if (user.userNumber && !optionsMap.has(user.userNumber)) {
optionsMap.set(user.userNumber, user) optionsMap.set(user.userNumber, user)
} }
@ -1193,9 +1196,7 @@ export default {
console.error('搜索人员失败:', err) console.error('搜索人员失败:', err)
// //
if (step.handlers && step.handlers.length > 0) { if (step.handlers && step.handlers.length > 0) {
const selectedOptions = step.options.filter(opt => const selectedOptions = step.options.filter((opt) => step.handlers.includes(opt.userId))
step.handlers.includes(opt.userId)
)
step.options = selectedOptions step.options = selectedOptions
} else { } else {
step.options = [] step.options = []
@ -1373,7 +1374,7 @@ export default {
} }
// //
Object.keys(searchParams).forEach(key => { Object.keys(searchParams).forEach((key) => {
if (this.searchPanelValue[key] !== undefined && this.searchPanelValue[key] !== null) { if (this.searchPanelValue[key] !== undefined && this.searchPanelValue[key] !== null) {
searchParams[key] = this.searchPanelValue[key] searchParams[key] = this.searchPanelValue[key]
} }
@ -1453,9 +1454,9 @@ export default {
top: 0; top: 0;
} }
} }
} }
.file-list { .file-list {
margin-top: 10px; margin-top: 10px;
.file-item { .file-item {
@ -1486,30 +1487,30 @@ export default {
} }
} }
} }
} }
.dialog-body-wrapper { .dialog-body-wrapper {
max-height: 70vh; max-height: 70vh;
overflow-y: auto; overflow-y: auto;
padding-right: 10px; padding-right: 10px;
} }
::v-deep .create-report-dialog { ::v-deep .create-report-dialog {
.el-dialog__body { .el-dialog__body {
padding: 20px 20px 10px 20px; padding: 20px 20px 10px 20px;
max-height: 70vh; max-height: 70vh;
overflow-y: auto; overflow-y: auto;
} }
} }
::v-deep .el-upload-dragger { ::v-deep .el-upload-dragger {
width: 100%; width: 100%;
height: 180px; height: 180px;
} }
::v-deep .el-form-item { ::v-deep .el-form-item {
margin-bottom: 18px; margin-bottom: 18px;
} }
.approval-workflow { .approval-workflow {
display: flex; display: flex;
@ -1620,7 +1621,7 @@ export default {
line-height: 32px; line-height: 32px;
} }
} }
} }
.searched-fields { .searched-fields {
max-height: 200px !important; max-height: 200px !important;
display: flex !important; display: flex !important;
@ -1628,7 +1629,7 @@ export default {
flex-direction: row !important; flex-direction: row !important;
gap: 16px 32px !important; gap: 16px 32px !important;
width: 100% !important; width: 100% !important;
} }
.searched-field { .searched-field {
display: flex !important; display: flex !important;
align-items: center !important; align-items: center !important;
@ -1657,7 +1658,7 @@ export default {
height: 32px; height: 32px;
line-height: 32px; line-height: 32px;
} }
} }
.el-select-dropdown__item { .el-select-dropdown__item {
display: flex !important; display: flex !important;
justify-content: space-between !important; justify-content: space-between !important;

View File

@ -108,7 +108,7 @@
</section> </section>
<!-- 审批流程 --> <!-- 审批流程 -->
<section class="block-section"> <section v-if="reportDetail.status && reportDetail.status !== 'DRAFT'" class="block-section">
<div class="section-title"> <div class="section-title">
审批流程 审批流程
</div> </div>
@ -350,9 +350,9 @@ export default {
} else { } else {
// 使 // 使
this.reportDetail = this.detail this.reportDetail = this.detail
// flowId // flowId稿
if (this.detail.flowId) { if (this.detail.flowId && this.reportDetail.status && this.reportDetail.status !== 'DRAFT') {
this.getApprovalSpet() this.getApprovalSpet(this.detail.flowId)
} }
} }
} }
@ -374,8 +374,10 @@ export default {
this.$request(request) this.$request(request)
.asyncThen((resp) => { .asyncThen((resp) => {
this.reportDetail = resp.data || resp this.reportDetail = resp.data || resp
// flowId // flowId稿
if (flowId && this.reportDetail.status && this.reportDetail.status !== 'DRAFT') {
this.getApprovalSpet(flowId) this.getApprovalSpet(flowId)
}
}) })
.asyncErrorCatch((err) => { .asyncErrorCatch((err) => {
console.error('获取报告详情失败:', err) console.error('获取报告详情失败:', err)
@ -529,12 +531,10 @@ export default {
} }
// //
if (approvalResult === 'PASS') { if (approvalResult === 'PASS') {
this.$emit('refresh') this.$emit('refresh')
this.handleBack() this.handleBack()
} else { } else {
// 退 // 退
} }
}) })
.asyncErrorCatch((err) => { .asyncErrorCatch((err) => {

View File

@ -22,25 +22,32 @@
<el-input v-model="searchPanelValue.manufacturerName" placeholder="请输入" /> <el-input v-model="searchPanelValue.manufacturerName" placeholder="请输入" />
</div> --> </div> -->
<div class="searched-field"> <div class="searched-field">
<span class="fielded-label">型号</span> <span class="fielded-label">标题</span>
<el-input v-model="searchPanelValue.modelName" placeholder="请输入" /> <el-input v-model="searchPanelValue.template" placeholder="请输入" />
</div> </div>
<div class="searched-field"> <div class="searched-field">
<span class="fielded-label">产品编号</span> <span class="fielded-label">状态</span>
<el-input v-model="searchPanelValue.productNumber" placeholder="请输入" /> <el-select v-model="searchPanelValue.status" clearable filterable placeholder="请选择">
<el-option
v-for="item in statusOptions"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</div> </div>
<div class="searched-field"> <div class="searched-field">
<span class="fielded-label">申请人</span> <span class="fielded-label">申请人</span>
<el-input v-model="searchPanelValue.applicant" placeholder="请输入" /> <el-input v-model="searchPanelValue.username" placeholder="请输入" />
</div> </div>
<div class="searched-field"> <div class="searched-field">
<span class="fielded-label">申请时间</span> <span class="fielded-label">申请时间</span>
<el-date-picker <el-date-picker
v-model="searchPanelValue.applyTime" v-model="searchPanelValue.createDate"
type="daterange" type="date"
range-separator="至" placeholder="请选择"
start-placeholder="开始日期" value-format="yyyy-MM-dd"
end-placeholder="结束日期" format="yyyy-MM-dd"
/> />
</div> </div>
<!-- <div class="searched-field"> <!-- <div class="searched-field">
@ -190,7 +197,12 @@
</x-vxe-table> </x-vxe-table>
</div> </div>
</template> </template>
<report-detail v-else :detail="currentReportDetail" @close="closeReportDetail" @refresh="handleReportDetailRefresh" /> <report-detail
v-else
:detail="currentReportDetail"
@close="closeReportDetail"
@refresh="handleReportDetailRefresh"
/>
<!-- 新增/修改报告弹窗 --> <!-- 新增/修改报告弹窗 -->
<el-dialog <el-dialog
@ -348,11 +360,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr <tr v-for="(step, index) in launchWorkflowSteps" :key="index" class="workflow-row">
v-for="(step, index) in launchWorkflowSteps"
:key="index"
class="workflow-row"
>
<td class="step-name-cell"> <td class="step-name-cell">
<span class="step-name"> <span class="step-name">
{{ step.name }} {{ step.name }}
@ -434,14 +442,14 @@
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import ReportDetail from './reportDetail.vue' import ReportDetail from './reportDetail.vue'
import api from '@/api' import api from '@/api'
import { getUserId } from '@/utils' import { getUserId } from '@/utils'
export default { export default {
name: 'ReportPage', name: 'ReportPage',
components: { components: {
ReportDetail ReportDetail
@ -463,6 +471,7 @@
status: '' status: ''
}, },
statusOptions: [ statusOptions: [
{ id: 'DRAFT', label: '草稿' },
{ id: 'APPROVING', label: '审批中' }, { id: 'APPROVING', label: '审批中' },
{ id: 'COMPLETE', label: '已完成' }, { id: 'COMPLETE', label: '已完成' },
{ id: 'REJECTED', label: '已拒绝' } { id: 'REJECTED', label: '已拒绝' }
@ -672,10 +681,12 @@
} }
// //
if (row.fileUrl || row.filePath) { if (row.fileUrl || row.filePath) {
this.fileList = [{ this.fileList = [
{
name: row.title || '文件', name: row.title || '文件',
url: row.fileUrl || row.filePath url: row.fileUrl || row.filePath
}] }
]
} else { } else {
this.fileList = [] this.fileList = []
} }
@ -803,9 +814,7 @@
if (!query || query.trim() === '') { if (!query || query.trim() === '') {
// //
if (step.handlers && step.handlers.length > 0) { if (step.handlers && step.handlers.length > 0) {
const selectedOptions = step.options.filter(opt => const selectedOptions = step.options.filter((opt) => step.handlers.includes(opt.userId))
step.handlers.includes(opt.userId)
)
step.options = selectedOptions step.options = selectedOptions
} else { } else {
step.options = [] step.options = []
@ -836,24 +845,24 @@
} }
// //
const users = result const users = result
.map(user => ({ .map((user) => ({
userId: user.userId || user.id, userId: user.userId || user.id,
username: user.username || user.name, username: user.username || user.name,
userNumber: user.userNumber || user.userId || user.id userNumber: user.userNumber || user.userId || user.id
})) }))
.filter(user => user.userId && user.userNumber) .filter((user) => user.userId && user.userNumber)
const existingIds = new Set(step.handlers || []) const existingIds = new Set(step.handlers || [])
const filteredUsers = users.filter(user => !existingIds.has(user.userId)) const filteredUsers = users.filter((user) => !existingIds.has(user.userId))
const selectedOptions = (step.options || []).filter(opt => const selectedOptions = (step.options || []).filter(
opt.userId && step.handlers && step.handlers.includes(opt.userId) (opt) => opt.userId && step.handlers && step.handlers.includes(opt.userId)
) )
const optionsMap = new Map() const optionsMap = new Map()
selectedOptions.forEach(opt => { selectedOptions.forEach((opt) => {
if (opt.userNumber) { if (opt.userNumber) {
optionsMap.set(opt.userNumber, opt) optionsMap.set(opt.userNumber, opt)
} }
}) })
filteredUsers.forEach(user => { filteredUsers.forEach((user) => {
if (user.userNumber && !optionsMap.has(user.userNumber)) { if (user.userNumber && !optionsMap.has(user.userNumber)) {
optionsMap.set(user.userNumber, user) optionsMap.set(user.userNumber, user)
} }
@ -864,9 +873,7 @@
.asyncErrorCatch((err) => { .asyncErrorCatch((err) => {
console.error('搜索人员失败:', err) console.error('搜索人员失败:', err)
if (step.handlers && step.handlers.length > 0) { if (step.handlers && step.handlers.length > 0) {
const selectedOptions = step.options.filter(opt => const selectedOptions = step.options.filter((opt) => step.handlers.includes(opt.userId))
step.handlers.includes(opt.userId)
)
step.options = selectedOptions step.options = selectedOptions
} else { } else {
step.options = [] step.options = []
@ -1100,11 +1107,9 @@
if (!query || query.trim() === '') { if (!query || query.trim() === '') {
// //
if (step.handlers && step.handlers.length > 0) { if (step.handlers && step.handlers.length > 0) {
const selectedOptions = step.options.filter(opt => const selectedOptions = step.options.filter((opt) => step.handlers.includes(opt.userId))
step.handlers.includes(opt.userId) const missingIds = step.handlers.filter(
) (id) => !selectedOptions.some((opt) => opt.userId === id)
const missingIds = step.handlers.filter(id =>
!selectedOptions.some(opt => opt.userId === id)
) )
if (missingIds.length > 0) { if (missingIds.length > 0) {
step.options = selectedOptions step.options = selectedOptions
@ -1140,30 +1145,30 @@
} }
// {userId: user.userId, username: user.username, userNumber: user.userNumber} // {userId: user.userId, username: user.username, userNumber: user.userNumber}
const users = result const users = result
.map(user => ({ .map((user) => ({
userId: user.userId || user.id, userId: user.userId || user.id,
username: user.username || user.name, username: user.username || user.name,
userNumber: user.userNumber || user.userId || user.id userNumber: user.userNumber || user.userId || user.id
})) }))
.filter(user => user.userId && user.userNumber) // userId userNumber .filter((user) => user.userId && user.userNumber) // userId userNumber
// step.handlers userId el-option value userId // step.handlers userId el-option value userId
const existingIds = new Set(step.handlers || []) const existingIds = new Set(step.handlers || [])
// //
const filteredUsers = users.filter(user => !existingIds.has(user.userId)) const filteredUsers = users.filter((user) => !existingIds.has(user.userId))
// options + // options +
const selectedOptions = (step.options || []).filter(opt => const selectedOptions = (step.options || []).filter(
opt.userId && step.handlers && step.handlers.includes(opt.userId) (opt) => opt.userId && step.handlers && step.handlers.includes(opt.userId)
) )
// 使 Map userNumber 使 userNumber key // 使 Map userNumber 使 userNumber key
const optionsMap = new Map() const optionsMap = new Map()
// //
selectedOptions.forEach(opt => { selectedOptions.forEach((opt) => {
if (opt.userNumber) { if (opt.userNumber) {
optionsMap.set(opt.userNumber, opt) optionsMap.set(opt.userNumber, opt)
} }
}) })
// //
filteredUsers.forEach(user => { filteredUsers.forEach((user) => {
if (user.userNumber && !optionsMap.has(user.userNumber)) { if (user.userNumber && !optionsMap.has(user.userNumber)) {
optionsMap.set(user.userNumber, user) optionsMap.set(user.userNumber, user)
} }
@ -1175,9 +1180,7 @@
console.error('搜索人员失败:', err) console.error('搜索人员失败:', err)
// //
if (step.handlers && step.handlers.length > 0) { if (step.handlers && step.handlers.length > 0) {
const selectedOptions = step.options.filter(opt => const selectedOptions = step.options.filter((opt) => step.handlers.includes(opt.userId))
step.handlers.includes(opt.userId)
)
step.options = selectedOptions step.options = selectedOptions
} else { } else {
step.options = [] step.options = []
@ -1340,33 +1343,25 @@
loadData() { loadData() {
// 使 // 使
const searchParams = { const searchParams = {
title: '', templateName: '',
manufacturerName: '', username: '',
modelName: '', createDate: '',
productNumber: '',
module: '',
plate: '',
platform: '',
series: '',
marketSegment: '',
projectName: '',
projectNumber: '',
status: '' status: ''
} }
// //
Object.keys(searchParams).forEach(key => { Object.keys(searchParams).forEach((key) => {
if (this.searchPanelValue[key] !== undefined && this.searchPanelValue[key] !== null) { if (this.searchPanelValue[key] !== undefined && this.searchPanelValue[key] !== null) {
searchParams[key] = this.searchPanelValue[key] searchParams[key] = this.searchPanelValue[key]
} }
}) })
const request = { const request = {
...api.GET_REPORT_LIST, ...api.GET_REPORT_LIST_BY_CONDITION,
params: { params: {
pageNumber: this.pagination.currentPage, pageNumber: this.pagination.currentPage,
pageSize: this.pagination.pageSize, pageSize: this.pagination.pageSize,
createBy: getUserId(), userId: getUserId(),
...searchParams ...searchParams
}, },
disableSuccessMsg: true disableSuccessMsg: true
@ -1381,11 +1376,11 @@
}) })
} }
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.custom-page { .custom-page {
width: 100%; width: 100%;
height: 100%; height: 100%;
overflow-y: auto; overflow-y: auto;
@ -1435,9 +1430,9 @@
top: 0; top: 0;
} }
} }
} }
.file-list { .file-list {
margin-top: 10px; margin-top: 10px;
.file-item { .file-item {
@ -1468,32 +1463,32 @@
} }
} }
} }
} }
.dialog-body-wrapper { .dialog-body-wrapper {
max-height: 70vh; max-height: 70vh;
overflow-y: auto; overflow-y: auto;
padding-right: 10px; padding-right: 10px;
} }
::v-deep .create-report-dialog { ::v-deep .create-report-dialog {
.el-dialog__body { .el-dialog__body {
padding: 20px 20px 10px 20px; padding: 20px 20px 10px 20px;
max-height: 70vh; max-height: 70vh;
overflow-y: auto; overflow-y: auto;
} }
} }
::v-deep .el-upload-dragger { ::v-deep .el-upload-dragger {
width: 100%; width: 100%;
height: 180px; height: 180px;
} }
::v-deep .el-form-item { ::v-deep .el-form-item {
margin-bottom: 18px; margin-bottom: 18px;
} }
.approval-workflow { .approval-workflow {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 16px; gap: 16px;
@ -1578,8 +1573,8 @@
} }
} }
} }
} }
.page-search-panel { .page-search-panel {
background: white; background: white;
padding: 16px 24px !important; padding: 16px 24px !important;
border-bottom: 1px solid #ebeef5 !important; border-bottom: 1px solid #ebeef5 !important;
@ -1602,16 +1597,16 @@
line-height: 32px; line-height: 32px;
} }
} }
} }
.searched-fields { .searched-fields {
max-height: 200px !important; max-height: 200px !important;
display: flex !important; display: flex !important;
flex-wrap: wrap !important; flex-wrap: wrap !important;
flex-direction: row !important; flex-direction: row !important;
gap: 16px 32px !important; gap: 16px 32px !important;
width: 100% !important; width: 100% !important;
} }
.searched-field { .searched-field {
display: flex !important; display: flex !important;
align-items: center !important; align-items: center !important;
gap: 12px !important; gap: 12px !important;
@ -1639,22 +1634,21 @@
height: 32px; height: 32px;
line-height: 32px; line-height: 32px;
} }
} }
.el-select-dropdown__item { .el-select-dropdown__item {
display: flex !important; display: flex !important;
justify-content: space-between !important; justify-content: space-between !important;
padding-right: 20px !important; padding-right: 20px !important;
} }
.username-text { .username-text {
color: #303133 !important; color: #303133 !important;
display: inline-block; display: inline-block;
text-align: right !important; text-align: right !important;
} }
.user-id-text { .user-id-text {
color: #909399 !important; color: #909399 !important;
display: inline-block; display: inline-block;
margin-left: 20px; margin-left: 20px;
text-align: right !important; text-align: right !important;
} }
</style> </style>

View File

@ -104,8 +104,8 @@
<span v-else-if="row[colConfig.prop] === '已通过'" class="status-tag status-approved" <span v-else-if="row[colConfig.prop] === '已通过'" class="status-tag status-approved"
>已通过</span >已通过</span
> >
<span v-else-if="row[colConfig.prop] === '撤回'" class="status-tag status-withdrawn" <span v-else-if="row[colConfig.prop] === '拒绝'" class="status-tag status-withdrawn"
>撤回</span >拒绝</span
> >
<span v-else class="status-tag status-default">{{ row[colConfig.prop] }}</span> <span v-else class="status-tag status-default">{{ row[colConfig.prop] }}</span>
</div> </div>
@ -508,7 +508,10 @@ export default {
// API // API
const flowId = row.flowId || row.id const flowId = row.flowId || row.id
if (!flowId) { if (!flowId) {
this.$message.error('缺少审批ID无法查看详情') this.$message({
type: 'error',
message: '缺少审批ID无法查看详情'
})
return return
} }
this.showEngineCheck = true this.showEngineCheck = true
@ -773,8 +776,8 @@ export default {
} }
&.status-withdrawn { &.status-withdrawn {
background: #f5f7fa; background: #f56c6c;
color: #606266; color: white;
} }
} }
} }