fix:修改问题
This commit is contained in:
parent
3e4253d9a9
commit
8e35ac314b
Binary file not shown.
138086
apaas-custom-mydemo/apaas-custom-mydemo.common.js
Normal file
138086
apaas-custom-mydemo/apaas-custom-mydemo.common.js
Normal file
File diff suppressed because one or more lines are too long
1
apaas-custom-mydemo/apaas-custom-mydemo.css
Normal file
1
apaas-custom-mydemo/apaas-custom-mydemo.css
Normal file
File diff suppressed because one or more lines are too long
138096
apaas-custom-mydemo/apaas-custom-mydemo.umd.js
Normal file
138096
apaas-custom-mydemo/apaas-custom-mydemo.umd.js
Normal file
File diff suppressed because one or more lines are too long
19
apaas-custom-mydemo/apaas-custom-mydemo.umd.min.js
vendored
Normal file
19
apaas-custom-mydemo/apaas-custom-mydemo.umd.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
146
apaas-custom-mydemo/apaas.json
Normal file
146
apaas-custom-mydemo/apaas.json
Normal 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"
|
||||
}
|
||||
10
apaas-custom-mydemo/demo.html
Normal file
10
apaas-custom-mydemo/demo.html
Normal 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>
|
||||
BIN
apaas-custom-mydemo/static/custom/apaas-custom-mydemo/1.jpg
Normal file
BIN
apaas-custom-mydemo/static/custom/apaas-custom-mydemo/1.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
@ -165,39 +165,43 @@ export default {
|
||||
method: 'get'
|
||||
},
|
||||
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'
|
||||
},
|
||||
ADD_REPORT: {
|
||||
url: '/custom/benchmark/startReportApproval',
|
||||
url: 'http://10.26.81.22:9091/custom/benchmark/startReportApproval',
|
||||
method: 'post'
|
||||
},
|
||||
SAVE_REPORT: {
|
||||
url: '/custom/benchmark/insertReport',
|
||||
url: 'http://10.26.81.22:9091/custom/benchmark/insertReport',
|
||||
method: 'post'
|
||||
},
|
||||
EDIT_REPORT: {
|
||||
url: '/custom/benchmark/updateReport',
|
||||
url: 'http://10.26.81.22:9091/custom/benchmark/updateReport',
|
||||
method: 'post'
|
||||
},
|
||||
RESTART_REPORT_APPROVAL: {
|
||||
url: '/custom/benchmark/restartReportApproval',
|
||||
url: 'http://10.26.81.22:9091/custom/benchmark/restartReportApproval',
|
||||
method: 'post'
|
||||
},
|
||||
START_REPORT_APPROVAL: {
|
||||
url: '/custom/benchmark/handleReportApproval',
|
||||
url: 'http://10.26.81.22:9091/custom/benchmark/handleReportApproval',
|
||||
method: 'post'
|
||||
},
|
||||
GET_REPORT_DETAIL: {
|
||||
url: '/custom/benchmark/getReportDetail',
|
||||
url: 'http://10.26.81.22:9091/custom/benchmark/getReportDetail',
|
||||
method: 'get'
|
||||
},
|
||||
GET_REPORT_DETAIL_PROCESS: {
|
||||
url: '/custom/benchmark/getReportProcess',
|
||||
url: 'http://10.26.81.22:9091/custom/benchmark/getReportProcess',
|
||||
method: 'get'
|
||||
},
|
||||
DOWNLOAD_REPORT: {
|
||||
url: '/custom/benchmark/downloadReport',
|
||||
url: 'http://10.26.81.22:9091/custom/benchmark/downloadReport',
|
||||
method: 'get'
|
||||
},
|
||||
//权限管理相关接口
|
||||
|
||||
@ -51,13 +51,13 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="部门:" prop="department">
|
||||
<el-form-item v-if="dispatchType !== 'update_param'" label="部门:" prop="department">
|
||||
<el-select
|
||||
v-model="formData.department"
|
||||
placeholder="请选择部门"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
:disabled="!formData.subsystem || (dispatchType === 'update_param' && !formData.partsName)"
|
||||
:disabled="!formData.subsystem"
|
||||
@change="handleDepartmentChange"
|
||||
>
|
||||
<el-option
|
||||
@ -77,13 +77,22 @@
|
||||
style="width: 100%"
|
||||
/>
|
||||
</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-select
|
||||
v-model="formData.userId"
|
||||
:placeholder="dispatchType === 'update_param' ? '请输入填写人姓名进行搜索' : '请输入责任人姓名进行搜索'"
|
||||
style="width: 100%"
|
||||
clearable
|
||||
:disabled="!formData.department || (dispatchType === 'update_param' && !formData.partsName)"
|
||||
:disabled="dispatchType === 'update_param' ? !formData.partsName : !formData.department"
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
@ -155,6 +164,8 @@ export default {
|
||||
department: '',
|
||||
currentResponsibleId: '', // 现责任人的ID(用于判断是新增还是修改)
|
||||
currentResponsibleName: '', // 现责任人名称(只读显示)
|
||||
currentFillerId: '', // 现填写人的ID(用于判断是新增还是修改)
|
||||
currentFillerName: '', // 现填写人名称(只读显示)
|
||||
userId: '', // 新责任人的userId(用于 el-select 的 v-model)
|
||||
userNumber: '', // 新责任人的userNumber(用于提交)
|
||||
username: '', // 新责任人的username(用于显示)
|
||||
@ -178,9 +189,6 @@ export default {
|
||||
subsystem: [
|
||||
{ required: true, message: '请选择子系统', trigger: 'change' }
|
||||
],
|
||||
department: [
|
||||
{ required: true, message: '请选择部门', trigger: 'change' }
|
||||
],
|
||||
userId: [
|
||||
{ required: true, message: this.dispatchType === 'update_param' ? '请选择填写人' : '请选择责任人', trigger: 'change' }
|
||||
]
|
||||
@ -190,6 +198,11 @@ export default {
|
||||
rules.partsName = [
|
||||
{ required: true, message: '请选择零部件名称', trigger: 'change' }
|
||||
]
|
||||
} else {
|
||||
// 如果是批量修改责任人,添加部门验证
|
||||
rules.department = [
|
||||
{ required: true, message: '请选择部门', trigger: 'change' }
|
||||
]
|
||||
}
|
||||
return rules
|
||||
}
|
||||
@ -219,6 +232,8 @@ export default {
|
||||
department: '',
|
||||
currentResponsibleId: '',
|
||||
currentResponsibleName: '',
|
||||
currentFillerId: '',
|
||||
currentFillerName: '',
|
||||
userId: '',
|
||||
userNumber: '',
|
||||
username: '',
|
||||
@ -250,6 +265,8 @@ export default {
|
||||
department: '',
|
||||
currentResponsibleId: '',
|
||||
currentResponsibleName: '',
|
||||
currentFillerId: '',
|
||||
currentFillerName: '',
|
||||
userId: '',
|
||||
userNumber: '',
|
||||
username: '',
|
||||
@ -304,11 +321,13 @@ export default {
|
||||
},
|
||||
// 处理子系统选择变化
|
||||
handleSubsystemChange(subsystem) {
|
||||
// 清空零部件名称、部门和现责任人
|
||||
// 清空零部件名称、部门和现责任人/现填写人
|
||||
this.formData.partsName = ''
|
||||
this.formData.department = ''
|
||||
this.formData.currentResponsibleId = ''
|
||||
this.formData.currentResponsibleName = ''
|
||||
this.formData.currentFillerId = ''
|
||||
this.formData.currentFillerName = ''
|
||||
this.formData.rowId = ''
|
||||
this.formData.userId = ''
|
||||
this.formData.userNumber = ''
|
||||
@ -329,24 +348,29 @@ export default {
|
||||
params.forEach((param) => {
|
||||
// 检查参数是否属于选中的子系统
|
||||
if (param.subsystemName === subsystem) {
|
||||
// 如果是批量修改填写人,收集零部件名称
|
||||
// 如果是批量修改填写人,收集零部件名称(包括 /)
|
||||
if (this.dispatchType === 'update_param') {
|
||||
const paramPartsName = param.partsName || partsName
|
||||
if (paramPartsName && paramPartsName !== '/') {
|
||||
if (paramPartsName) {
|
||||
partsNameSet.add(paramPartsName)
|
||||
}
|
||||
}
|
||||
// 收集部门名称
|
||||
if (param.department) {
|
||||
// 收集部门名称(仅用于批量修改责任人)
|
||||
if (this.dispatchType !== 'update_param' && param.department) {
|
||||
departmentSet.add(param.department)
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
// 如果是批量修改填写人,设置零部件名称列表
|
||||
// 如果是批量修改填写人,设置零部件名称列表(添加 / 作为默认项)
|
||||
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) {
|
||||
// 清空部门和填写人
|
||||
this.formData.department = ''
|
||||
// 清空现填写人和新填写人
|
||||
this.formData.currentFillerId = ''
|
||||
this.formData.currentFillerName = ''
|
||||
this.formData.userId = ''
|
||||
this.formData.userNumber = ''
|
||||
this.formData.username = ''
|
||||
this.availableDepartments = []
|
||||
this.userOptions = []
|
||||
// 根据子系统和零部件名称筛选部门列表
|
||||
// 根据子系统和零部件名称查找现填写人
|
||||
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] || {}
|
||||
let foundFiller = null
|
||||
|
||||
// 遍历所有零部件名称(partsName)
|
||||
Object.keys(currentVersionData).forEach((dataPartsName) => {
|
||||
@ -384,20 +423,36 @@ export default {
|
||||
const paramPartsName = param.partsName || dataPartsName
|
||||
if (
|
||||
param.subsystemName === this.formData.subsystem &&
|
||||
paramPartsName === partsName &&
|
||||
param.department
|
||||
paramPartsName === this.formData.partsName &&
|
||||
param.filledByUserId
|
||||
) {
|
||||
departmentSet.add(param.department)
|
||||
// 找到第一个有填写人的参数,使用其填写人信息
|
||||
if (!foundFiller) {
|
||||
foundFiller = {
|
||||
userId: param.filledByUserId,
|
||||
username: param.filledBy || ''
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
// 转换为数组格式
|
||||
this.availableDepartments = Array.from(departmentSet).map((dept) => ({
|
||||
department: dept
|
||||
}))
|
||||
if (foundFiller) {
|
||||
// 如果找到了填写人,尝试从 fillerPersons 中获取完整信息
|
||||
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 {
|
||||
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) {
|
||||
// 如果是批量修改填写人,需要检查零部件名称和部门
|
||||
// 如果是批量修改填写人,只需要检查零部件名称
|
||||
if (this.dispatchType === 'update_param') {
|
||||
if (!this.formData.partsName || !this.formData.department) {
|
||||
if (!this.formData.partsName) {
|
||||
this.userOptions = []
|
||||
return
|
||||
}
|
||||
} else {
|
||||
// 批量修改责任人,只需要检查部门
|
||||
// 批量修改责任人,需要检查部门
|
||||
if (!this.formData.department) {
|
||||
this.userOptions = []
|
||||
return
|
||||
@ -571,7 +626,6 @@ export default {
|
||||
const confirmData = {
|
||||
subsystem: this.formData.subsystem,
|
||||
partsName: this.formData.partsName,
|
||||
department: this.formData.department,
|
||||
userId: this.formData.userId, // 确保传递userId
|
||||
userNumber: this.formData.userNumber || this.formData.userId, // 如果没有 userNumber,使用 userId
|
||||
username: this.formData.username || ''
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<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>
|
||||
</div>
|
||||
|
||||
@ -1450,9 +1450,9 @@ export default {
|
||||
|
||||
// 如果是批量修改填写人,直接更新页面数据
|
||||
if (this.dispatchType === 'update_param') {
|
||||
const { subsystem, partsName, department, userId, userNumber, username } = change
|
||||
console.log(change, 'change', subsystem, partsName, department, userId, userNumber, username)
|
||||
if (!subsystem || !partsName || !department || !userId) {
|
||||
const { subsystem, partsName, userId, userNumber, username } = change
|
||||
console.log(change, 'change', subsystem, partsName, userId, userNumber, username)
|
||||
if (!subsystem || !partsName || !userId) {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: '缺少必要参数'
|
||||
@ -1460,9 +1460,6 @@ export default {
|
||||
return
|
||||
}
|
||||
|
||||
// 标准化部门路径(将 · 替换为 -),确保匹配正确
|
||||
const normalizedDepartment = department.replace(/·/g, '-')
|
||||
|
||||
// 获取当前版本的数据
|
||||
const currentData = this.versionData[this.currentVersionId] || {}
|
||||
let updateCount = 0
|
||||
@ -1480,22 +1477,17 @@ export default {
|
||||
const params = currentData[dataPartsName] || []
|
||||
// 遍历该零部件下的所有参数
|
||||
params.forEach((param, index) => {
|
||||
// 标准化参数的部门路径(将 · 替换为 -)
|
||||
const normalizedParamDept = (param.department || '').replace(/·/g, '-')
|
||||
// 获取参数的零部件名称(优先使用param.partsName,否则使用dataPartsName)
|
||||
const paramPartsName = param.partsName || dataPartsName
|
||||
|
||||
// 检查参数是否匹配子系统、零部件名称和部门(使用标准化后的部门路径进行匹配)
|
||||
// 检查参数是否匹配子系统和零部件名称(不再匹配部门)
|
||||
if (
|
||||
param.subsystemName === subsystem &&
|
||||
paramPartsName === partsName &&
|
||||
normalizedParamDept === normalizedDepartment
|
||||
paramPartsName === partsName
|
||||
) {
|
||||
// 更新填写人信息
|
||||
param.filledBy = userId // 填写人ID(userId,用于提交)
|
||||
param.filledByUserId = userId // 填写人userId(用于 el-select 的 v-model)
|
||||
// 同步更新部门信息
|
||||
param.department = department
|
||||
|
||||
// 使用 Vue.set 确保响应式更新
|
||||
this.$set(currentData[dataPartsName], index, param)
|
||||
|
||||
@ -49,14 +49,14 @@
|
||||
下载导入模板
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="shouldShowMaintainButton"
|
||||
|
||||
class="right-button"
|
||||
@click="handleMaintainParams"
|
||||
>
|
||||
维护参数
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="shouldShowMaintainButton"
|
||||
|
||||
class="right-button-primary"
|
||||
type="primary"
|
||||
@click="handleInitiateApproval"
|
||||
@ -179,8 +179,8 @@
|
||||
:pageConfig="approvalTableConfig.pageConfig"
|
||||
:pagination="pagination"
|
||||
class="approval-table"
|
||||
@size-change="pageSizeChange"
|
||||
@current-page-change="currentChange"
|
||||
@size-change="approvalPageSizeChange"
|
||||
@current-page-change="approvalCurrentPageChange"
|
||||
>
|
||||
</x-vxe-table>
|
||||
</div>
|
||||
@ -1300,6 +1300,14 @@ export default {
|
||||
this.$set(this.pagination, 'currentPage', currentPage)
|
||||
this.loadData()
|
||||
},
|
||||
approvalPageSizeChange(size) {
|
||||
this.$set(this.pagination, 'pageSize', size)
|
||||
this.getApprovalChange()
|
||||
},
|
||||
approvalCurrentPageChange(currentPage) {
|
||||
this.$set(this.pagination, 'currentPage', currentPage)
|
||||
this.getApprovalChange()
|
||||
},
|
||||
selectDataChange(data) {
|
||||
this.$emit('select-data-change', data)
|
||||
},
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="apaas-custom-page-mydemo custom-page">
|
||||
<template v-if="!showReportDetail">
|
||||
<div class="page-header">
|
||||
<!-- <div class="page-header">
|
||||
<div class="title">
|
||||
报告管理
|
||||
</div>
|
||||
@ -13,7 +13,7 @@
|
||||
@click.native="handleRefresh()"
|
||||
></x-svg-icon>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<div class="page-search-panel">
|
||||
<div class="searched-fields">
|
||||
@ -59,12 +59,7 @@
|
||||
</div>
|
||||
<div class="searched-field">
|
||||
<span class="fielded-label">状态</span>
|
||||
<el-select
|
||||
v-model="searchPanelValue.status"
|
||||
clearable
|
||||
filterable
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-select v-model="searchPanelValue.status" clearable filterable placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in statusOptions"
|
||||
:key="item.id"
|
||||
@ -172,7 +167,10 @@
|
||||
@click.stop="handleApprove(row)"
|
||||
>审批</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
|
||||
v-if="!row.status || row.status === '' || row.status === 'DRAFT'"
|
||||
href="javascript:void(0)"
|
||||
@ -180,7 +178,10 @@
|
||||
@click.stop="handleLaunch(row)"
|
||||
>发起</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
|
||||
v-if="row.status === 'REJECTED'"
|
||||
href="javascript:void(0)"
|
||||
@ -188,7 +189,10 @@
|
||||
@click.stop="handleRestart(row)"
|
||||
>重新发起</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
|
||||
v-if="row.filePath"
|
||||
href="javascript:void(0)"
|
||||
@ -207,7 +211,12 @@
|
||||
</x-vxe-table>
|
||||
</div>
|
||||
</template>
|
||||
<report-detail v-else :detail="currentReportDetail" @close="closeReportDetail" @refresh="handleReportDetailRefresh" />
|
||||
<report-detail
|
||||
v-else
|
||||
:detail="currentReportDetail"
|
||||
@close="closeReportDetail"
|
||||
@refresh="handleReportDetailRefresh"
|
||||
/>
|
||||
|
||||
<!-- 新增/修改报告弹窗 -->
|
||||
<el-dialog
|
||||
@ -318,9 +327,9 @@
|
||||
<el-button type="primary" icon="el-icon-upload">
|
||||
选择文件
|
||||
</el-button>
|
||||
<div slot="tip" class="el-upload__tip"
|
||||
>支持扩展名: .doc .pdf .xls .xlsx .ppt .pptx,仅支持上传一个文件</div
|
||||
>
|
||||
<div slot="tip" class="el-upload__tip">
|
||||
支持扩展名: .doc .pdf .xls .xlsx .ppt .pptx,仅支持上传一个文件
|
||||
</div>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item label="说明" prop="explanation">
|
||||
@ -366,11 +375,7 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr
|
||||
v-for="(step, index) in launchWorkflowSteps"
|
||||
:key="index"
|
||||
class="workflow-row"
|
||||
>
|
||||
<tr v-for="(step, index) in launchWorkflowSteps" :key="index" class="workflow-row">
|
||||
<td class="step-name-cell">
|
||||
<span class="step-name">
|
||||
{{ step.name }}
|
||||
@ -481,6 +486,7 @@ export default {
|
||||
status: ''
|
||||
},
|
||||
statusOptions: [
|
||||
{ id: 'DRAFT', label: '草稿' },
|
||||
{ id: 'APPROVING', label: '审批中' },
|
||||
{ id: 'COMPLETE', label: '已完成' },
|
||||
{ id: 'REJECTED', label: '已拒绝' }
|
||||
@ -690,10 +696,12 @@ export default {
|
||||
}
|
||||
// 如果有文件路径,显示在文件列表中
|
||||
if (row.fileUrl || row.filePath) {
|
||||
this.fileList = [{
|
||||
this.fileList = [
|
||||
{
|
||||
name: row.title || '文件',
|
||||
url: row.fileUrl || row.filePath
|
||||
}]
|
||||
}
|
||||
]
|
||||
} else {
|
||||
this.fileList = []
|
||||
}
|
||||
@ -787,6 +795,7 @@ export default {
|
||||
// 构建提交数据
|
||||
const submitData = {
|
||||
reportId: reportId,
|
||||
userId: getUserId(),
|
||||
proofreadUsers: this.launchWorkflowSteps[0].handlers,
|
||||
reviewUsers: this.launchWorkflowSteps[1].handlers,
|
||||
countersignUsers: [],
|
||||
@ -821,9 +830,7 @@ export default {
|
||||
if (!query || query.trim() === '') {
|
||||
// 空查询时,只保留已选择的人员在选项中
|
||||
if (step.handlers && step.handlers.length > 0) {
|
||||
const selectedOptions = step.options.filter(opt =>
|
||||
step.handlers.includes(opt.userId)
|
||||
)
|
||||
const selectedOptions = step.options.filter((opt) => step.handlers.includes(opt.userId))
|
||||
step.options = selectedOptions
|
||||
} else {
|
||||
step.options = []
|
||||
@ -854,24 +861,24 @@ export default {
|
||||
}
|
||||
// 转换为选项格式
|
||||
const users = result
|
||||
.map(user => ({
|
||||
.map((user) => ({
|
||||
userId: user.userId || user.id,
|
||||
username: user.username || user.name,
|
||||
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 filteredUsers = users.filter(user => !existingIds.has(user.userId))
|
||||
const selectedOptions = (step.options || []).filter(opt =>
|
||||
opt.userId && step.handlers && step.handlers.includes(opt.userId)
|
||||
const filteredUsers = users.filter((user) => !existingIds.has(user.userId))
|
||||
const selectedOptions = (step.options || []).filter(
|
||||
(opt) => opt.userId && step.handlers && step.handlers.includes(opt.userId)
|
||||
)
|
||||
const optionsMap = new Map()
|
||||
selectedOptions.forEach(opt => {
|
||||
selectedOptions.forEach((opt) => {
|
||||
if (opt.userNumber) {
|
||||
optionsMap.set(opt.userNumber, opt)
|
||||
}
|
||||
})
|
||||
filteredUsers.forEach(user => {
|
||||
filteredUsers.forEach((user) => {
|
||||
if (user.userNumber && !optionsMap.has(user.userNumber)) {
|
||||
optionsMap.set(user.userNumber, user)
|
||||
}
|
||||
@ -882,9 +889,7 @@ export default {
|
||||
.asyncErrorCatch((err) => {
|
||||
console.error('搜索人员失败:', err)
|
||||
if (step.handlers && step.handlers.length > 0) {
|
||||
const selectedOptions = step.options.filter(opt =>
|
||||
step.handlers.includes(opt.userId)
|
||||
)
|
||||
const selectedOptions = step.options.filter((opt) => step.handlers.includes(opt.userId))
|
||||
step.options = selectedOptions
|
||||
} else {
|
||||
step.options = []
|
||||
@ -1118,11 +1123,9 @@ export default {
|
||||
if (!query || query.trim() === '') {
|
||||
// 空查询时,只保留已选择的人员在选项中
|
||||
if (step.handlers && step.handlers.length > 0) {
|
||||
const selectedOptions = step.options.filter(opt =>
|
||||
step.handlers.includes(opt.userId)
|
||||
)
|
||||
const missingIds = step.handlers.filter(id =>
|
||||
!selectedOptions.some(opt => opt.userId === id)
|
||||
const selectedOptions = step.options.filter((opt) => step.handlers.includes(opt.userId))
|
||||
const missingIds = step.handlers.filter(
|
||||
(id) => !selectedOptions.some((opt) => opt.userId === id)
|
||||
)
|
||||
if (missingIds.length > 0) {
|
||||
step.options = selectedOptions
|
||||
@ -1158,30 +1161,30 @@ export default {
|
||||
}
|
||||
// 转换为选项格式:{userId: user.userId, username: user.username, userNumber: user.userNumber}
|
||||
const users = result
|
||||
.map(user => ({
|
||||
.map((user) => ({
|
||||
userId: user.userId || user.id,
|
||||
username: user.username || user.name,
|
||||
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)
|
||||
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 中获取)+ 新的搜索结果
|
||||
const selectedOptions = (step.options || []).filter(opt =>
|
||||
opt.userId && step.handlers && step.handlers.includes(opt.userId)
|
||||
const selectedOptions = (step.options || []).filter(
|
||||
(opt) => opt.userId && step.handlers && step.handlers.includes(opt.userId)
|
||||
)
|
||||
// 去重:使用 Map 确保每个 userNumber 只出现一次(使用 userNumber 作为 key 确保唯一性)
|
||||
const optionsMap = new Map()
|
||||
// 先添加已选择的选项
|
||||
selectedOptions.forEach(opt => {
|
||||
selectedOptions.forEach((opt) => {
|
||||
if (opt.userNumber) {
|
||||
optionsMap.set(opt.userNumber, opt)
|
||||
}
|
||||
})
|
||||
// 再添加新的搜索结果
|
||||
filteredUsers.forEach(user => {
|
||||
filteredUsers.forEach((user) => {
|
||||
if (user.userNumber && !optionsMap.has(user.userNumber)) {
|
||||
optionsMap.set(user.userNumber, user)
|
||||
}
|
||||
@ -1193,9 +1196,7 @@ export default {
|
||||
console.error('搜索人员失败:', err)
|
||||
// 搜索失败时,保留已选择的人员信息
|
||||
if (step.handlers && step.handlers.length > 0) {
|
||||
const selectedOptions = step.options.filter(opt =>
|
||||
step.handlers.includes(opt.userId)
|
||||
)
|
||||
const selectedOptions = step.options.filter((opt) => step.handlers.includes(opt.userId))
|
||||
step.options = selectedOptions
|
||||
} else {
|
||||
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) {
|
||||
searchParams[key] = this.searchPanelValue[key]
|
||||
}
|
||||
|
||||
@ -108,7 +108,7 @@
|
||||
</section>
|
||||
|
||||
<!-- 审批流程 -->
|
||||
<section class="block-section">
|
||||
<section v-if="reportDetail.status && reportDetail.status !== 'DRAFT'" class="block-section">
|
||||
<div class="section-title">
|
||||
审批流程
|
||||
</div>
|
||||
@ -350,9 +350,9 @@ export default {
|
||||
} else {
|
||||
// 如果已经有完整的详情数据,直接使用
|
||||
this.reportDetail = this.detail
|
||||
// 如果flowId存在,加载审批流程
|
||||
if (this.detail.flowId) {
|
||||
this.getApprovalSpet()
|
||||
// 如果flowId存在且状态不是草稿,加载审批流程
|
||||
if (this.detail.flowId && this.reportDetail.status && this.reportDetail.status !== 'DRAFT') {
|
||||
this.getApprovalSpet(this.detail.flowId)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -374,8 +374,10 @@ export default {
|
||||
this.$request(request)
|
||||
.asyncThen((resp) => {
|
||||
this.reportDetail = resp.data || resp
|
||||
// 如果flowId存在,加载审批流程
|
||||
// 如果flowId存在且状态不是草稿,加载审批流程
|
||||
if (flowId && this.reportDetail.status && this.reportDetail.status !== 'DRAFT') {
|
||||
this.getApprovalSpet(flowId)
|
||||
}
|
||||
})
|
||||
.asyncErrorCatch((err) => {
|
||||
console.error('获取报告详情失败:', err)
|
||||
@ -529,12 +531,10 @@ export default {
|
||||
}
|
||||
// 如果审批通过,返回上一级
|
||||
if (approvalResult === 'PASS') {
|
||||
|
||||
this.$emit('refresh')
|
||||
this.handleBack()
|
||||
} else {
|
||||
// 如果退回,只刷新流程数据,不返回
|
||||
|
||||
}
|
||||
})
|
||||
.asyncErrorCatch((err) => {
|
||||
|
||||
@ -22,25 +22,32 @@
|
||||
<el-input v-model="searchPanelValue.manufacturerName" placeholder="请输入" />
|
||||
</div> -->
|
||||
<div class="searched-field">
|
||||
<span class="fielded-label">型号</span>
|
||||
<el-input v-model="searchPanelValue.modelName" placeholder="请输入" />
|
||||
<span class="fielded-label">标题</span>
|
||||
<el-input v-model="searchPanelValue.template" placeholder="请输入" />
|
||||
</div>
|
||||
<div class="searched-field">
|
||||
<span class="fielded-label">产品编号</span>
|
||||
<el-input v-model="searchPanelValue.productNumber" placeholder="请输入" />
|
||||
<span class="fielded-label">状态</span>
|
||||
<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 class="searched-field">
|
||||
<span class="fielded-label">申请人</span>
|
||||
<el-input v-model="searchPanelValue.applicant" placeholder="请输入" />
|
||||
<el-input v-model="searchPanelValue.username" placeholder="请输入" />
|
||||
</div>
|
||||
<div class="searched-field">
|
||||
<span class="fielded-label">申请时间</span>
|
||||
<el-date-picker
|
||||
v-model="searchPanelValue.applyTime"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
v-model="searchPanelValue.createDate"
|
||||
type="date"
|
||||
placeholder="请选择"
|
||||
value-format="yyyy-MM-dd"
|
||||
format="yyyy-MM-dd"
|
||||
/>
|
||||
</div>
|
||||
<!-- <div class="searched-field">
|
||||
@ -190,7 +197,12 @@
|
||||
</x-vxe-table>
|
||||
</div>
|
||||
</template>
|
||||
<report-detail v-else :detail="currentReportDetail" @close="closeReportDetail" @refresh="handleReportDetailRefresh" />
|
||||
<report-detail
|
||||
v-else
|
||||
:detail="currentReportDetail"
|
||||
@close="closeReportDetail"
|
||||
@refresh="handleReportDetailRefresh"
|
||||
/>
|
||||
|
||||
<!-- 新增/修改报告弹窗 -->
|
||||
<el-dialog
|
||||
@ -348,11 +360,7 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr
|
||||
v-for="(step, index) in launchWorkflowSteps"
|
||||
:key="index"
|
||||
class="workflow-row"
|
||||
>
|
||||
<tr v-for="(step, index) in launchWorkflowSteps" :key="index" class="workflow-row">
|
||||
<td class="step-name-cell">
|
||||
<span class="step-name">
|
||||
{{ step.name }}
|
||||
@ -463,6 +471,7 @@
|
||||
status: ''
|
||||
},
|
||||
statusOptions: [
|
||||
{ id: 'DRAFT', label: '草稿' },
|
||||
{ id: 'APPROVING', label: '审批中' },
|
||||
{ id: 'COMPLETE', label: '已完成' },
|
||||
{ id: 'REJECTED', label: '已拒绝' }
|
||||
@ -672,10 +681,12 @@
|
||||
}
|
||||
// 如果有文件路径,显示在文件列表中
|
||||
if (row.fileUrl || row.filePath) {
|
||||
this.fileList = [{
|
||||
this.fileList = [
|
||||
{
|
||||
name: row.title || '文件',
|
||||
url: row.fileUrl || row.filePath
|
||||
}]
|
||||
}
|
||||
]
|
||||
} else {
|
||||
this.fileList = []
|
||||
}
|
||||
@ -803,9 +814,7 @@
|
||||
if (!query || query.trim() === '') {
|
||||
// 空查询时,只保留已选择的人员在选项中
|
||||
if (step.handlers && step.handlers.length > 0) {
|
||||
const selectedOptions = step.options.filter(opt =>
|
||||
step.handlers.includes(opt.userId)
|
||||
)
|
||||
const selectedOptions = step.options.filter((opt) => step.handlers.includes(opt.userId))
|
||||
step.options = selectedOptions
|
||||
} else {
|
||||
step.options = []
|
||||
@ -836,24 +845,24 @@
|
||||
}
|
||||
// 转换为选项格式
|
||||
const users = result
|
||||
.map(user => ({
|
||||
.map((user) => ({
|
||||
userId: user.userId || user.id,
|
||||
username: user.username || user.name,
|
||||
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 filteredUsers = users.filter(user => !existingIds.has(user.userId))
|
||||
const selectedOptions = (step.options || []).filter(opt =>
|
||||
opt.userId && step.handlers && step.handlers.includes(opt.userId)
|
||||
const filteredUsers = users.filter((user) => !existingIds.has(user.userId))
|
||||
const selectedOptions = (step.options || []).filter(
|
||||
(opt) => opt.userId && step.handlers && step.handlers.includes(opt.userId)
|
||||
)
|
||||
const optionsMap = new Map()
|
||||
selectedOptions.forEach(opt => {
|
||||
selectedOptions.forEach((opt) => {
|
||||
if (opt.userNumber) {
|
||||
optionsMap.set(opt.userNumber, opt)
|
||||
}
|
||||
})
|
||||
filteredUsers.forEach(user => {
|
||||
filteredUsers.forEach((user) => {
|
||||
if (user.userNumber && !optionsMap.has(user.userNumber)) {
|
||||
optionsMap.set(user.userNumber, user)
|
||||
}
|
||||
@ -864,9 +873,7 @@
|
||||
.asyncErrorCatch((err) => {
|
||||
console.error('搜索人员失败:', err)
|
||||
if (step.handlers && step.handlers.length > 0) {
|
||||
const selectedOptions = step.options.filter(opt =>
|
||||
step.handlers.includes(opt.userId)
|
||||
)
|
||||
const selectedOptions = step.options.filter((opt) => step.handlers.includes(opt.userId))
|
||||
step.options = selectedOptions
|
||||
} else {
|
||||
step.options = []
|
||||
@ -1100,11 +1107,9 @@
|
||||
if (!query || query.trim() === '') {
|
||||
// 空查询时,只保留已选择的人员在选项中
|
||||
if (step.handlers && step.handlers.length > 0) {
|
||||
const selectedOptions = step.options.filter(opt =>
|
||||
step.handlers.includes(opt.userId)
|
||||
)
|
||||
const missingIds = step.handlers.filter(id =>
|
||||
!selectedOptions.some(opt => opt.userId === id)
|
||||
const selectedOptions = step.options.filter((opt) => step.handlers.includes(opt.userId))
|
||||
const missingIds = step.handlers.filter(
|
||||
(id) => !selectedOptions.some((opt) => opt.userId === id)
|
||||
)
|
||||
if (missingIds.length > 0) {
|
||||
step.options = selectedOptions
|
||||
@ -1140,30 +1145,30 @@
|
||||
}
|
||||
// 转换为选项格式:{userId: user.userId, username: user.username, userNumber: user.userNumber}
|
||||
const users = result
|
||||
.map(user => ({
|
||||
.map((user) => ({
|
||||
userId: user.userId || user.id,
|
||||
username: user.username || user.name,
|
||||
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)
|
||||
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 中获取)+ 新的搜索结果
|
||||
const selectedOptions = (step.options || []).filter(opt =>
|
||||
opt.userId && step.handlers && step.handlers.includes(opt.userId)
|
||||
const selectedOptions = (step.options || []).filter(
|
||||
(opt) => opt.userId && step.handlers && step.handlers.includes(opt.userId)
|
||||
)
|
||||
// 去重:使用 Map 确保每个 userNumber 只出现一次(使用 userNumber 作为 key 确保唯一性)
|
||||
const optionsMap = new Map()
|
||||
// 先添加已选择的选项
|
||||
selectedOptions.forEach(opt => {
|
||||
selectedOptions.forEach((opt) => {
|
||||
if (opt.userNumber) {
|
||||
optionsMap.set(opt.userNumber, opt)
|
||||
}
|
||||
})
|
||||
// 再添加新的搜索结果
|
||||
filteredUsers.forEach(user => {
|
||||
filteredUsers.forEach((user) => {
|
||||
if (user.userNumber && !optionsMap.has(user.userNumber)) {
|
||||
optionsMap.set(user.userNumber, user)
|
||||
}
|
||||
@ -1175,9 +1180,7 @@
|
||||
console.error('搜索人员失败:', err)
|
||||
// 搜索失败时,保留已选择的人员信息
|
||||
if (step.handlers && step.handlers.length > 0) {
|
||||
const selectedOptions = step.options.filter(opt =>
|
||||
step.handlers.includes(opt.userId)
|
||||
)
|
||||
const selectedOptions = step.options.filter((opt) => step.handlers.includes(opt.userId))
|
||||
step.options = selectedOptions
|
||||
} else {
|
||||
step.options = []
|
||||
@ -1340,33 +1343,25 @@
|
||||
loadData() {
|
||||
// 定义所有搜索字段,确保即使为空也传递空字符串
|
||||
const searchParams = {
|
||||
title: '',
|
||||
manufacturerName: '',
|
||||
modelName: '',
|
||||
productNumber: '',
|
||||
module: '',
|
||||
plate: '',
|
||||
platform: '',
|
||||
series: '',
|
||||
marketSegment: '',
|
||||
projectName: '',
|
||||
projectNumber: '',
|
||||
templateName: '',
|
||||
username: '',
|
||||
createDate: '',
|
||||
status: ''
|
||||
}
|
||||
|
||||
// 合并用户输入的搜索值
|
||||
Object.keys(searchParams).forEach(key => {
|
||||
Object.keys(searchParams).forEach((key) => {
|
||||
if (this.searchPanelValue[key] !== undefined && this.searchPanelValue[key] !== null) {
|
||||
searchParams[key] = this.searchPanelValue[key]
|
||||
}
|
||||
})
|
||||
|
||||
const request = {
|
||||
...api.GET_REPORT_LIST,
|
||||
...api.GET_REPORT_LIST_BY_CONDITION,
|
||||
params: {
|
||||
pageNumber: this.pagination.currentPage,
|
||||
pageSize: this.pagination.pageSize,
|
||||
createBy: getUserId(),
|
||||
userId: getUserId(),
|
||||
...searchParams
|
||||
},
|
||||
disableSuccessMsg: true
|
||||
@ -1657,4 +1652,3 @@
|
||||
text-align: right !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -104,8 +104,8 @@
|
||||
<span v-else-if="row[colConfig.prop] === '已通过'" class="status-tag status-approved"
|
||||
>已通过</span
|
||||
>
|
||||
<span v-else-if="row[colConfig.prop] === '已撤回'" class="status-tag status-withdrawn"
|
||||
>已撤回</span
|
||||
<span v-else-if="row[colConfig.prop] === '已拒绝'" class="status-tag status-withdrawn"
|
||||
>已拒绝</span
|
||||
>
|
||||
<span v-else class="status-tag status-default">{{ row[colConfig.prop] }}</span>
|
||||
</div>
|
||||
@ -508,7 +508,10 @@ export default {
|
||||
// 通过API获取审批详情
|
||||
const flowId = row.flowId || row.id
|
||||
if (!flowId) {
|
||||
this.$message.error('缺少审批ID,无法查看详情')
|
||||
this.$message({
|
||||
type: 'error',
|
||||
message: '缺少审批ID,无法查看详情'
|
||||
})
|
||||
return
|
||||
}
|
||||
this.showEngineCheck = true
|
||||
@ -773,8 +776,8 @@ export default {
|
||||
}
|
||||
|
||||
&.status-withdrawn {
|
||||
background: #f5f7fa;
|
||||
color: #606266;
|
||||
background: #f56c6c;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user