|
|
|
@ -79,7 +79,7 @@ |
|
|
|
<el-row :gutter="10" style="margin-top:12px"> |
|
|
|
<el-col :span="16"> |
|
|
|
<div class="sub-panel-header"> |
|
|
|
<span style="font-size:16px">季度供应商绩效评级请求: {{ currentRequest.requestNo || '-' }}</span> |
|
|
|
<span style="font-size:16px">季度供应商绩效评级请求</span> |
|
|
|
</div> |
|
|
|
<el-table :data="indicatorList" size="mini" border :height="indicatorTableHeight" highlight-current-row |
|
|
|
ref="indicatorTable" @row-click="selectIndicatorRow" v-loading="indicatorLoading"> |
|
|
|
@ -94,13 +94,14 @@ |
|
|
|
</el-col> |
|
|
|
<el-col :span="8"> |
|
|
|
<div class="sub-panel-header"> |
|
|
|
<span style="font-size:16px">进度 <span v-if="viewIndicatorCode">( {{ viewIndicatorCode }} )</span></span> |
|
|
|
<span style="font-size:16px">进度 <span v-if="viewIndicatorCode"></span></span> |
|
|
|
</div> |
|
|
|
<el-table :data="progressList" size="mini" border :height="indicatorTableHeight" v-loading="progressLoading"> |
|
|
|
<el-table-column prop="departmentName" label="部门" min-width="120" header-align="center" |
|
|
|
<el-table-column prop="departmentName" label="部门" min-width="90" header-align="center" |
|
|
|
align="left" /> |
|
|
|
<el-table-column prop="owner" label="负责人" min-width="100" header-align="center" align="left" /> |
|
|
|
<el-table-column prop="completedFlag" label="已完成" width="90" header-align="center" align="center"> |
|
|
|
<el-table-column prop="owner" label="负责人" min-width="80" header-align="center" align="left" /> |
|
|
|
<el-table-column prop="userDisplay" label="负责人名称" min-width="90" header-align="center" align="left" /> |
|
|
|
<el-table-column prop="completedFlag" label="已完成" width="60" header-align="center" align="center"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="completedDate" label="完成时间" min-width="140" header-align="center" |
|
|
|
align="center" /> |
|
|
|
@ -175,14 +176,20 @@ |
|
|
|
<span style="font-size:14px">指定负责人</span> |
|
|
|
</div> |
|
|
|
<el-table :data="departmentList" :key="'dept-new'" size="mini" border height="380" v-loading="deptLoading"> |
|
|
|
<el-table-column prop="departmentNo" label="部门编号" min-width="70" header-align="center" align="left" /> |
|
|
|
<el-table-column prop="departmentName" label="部门名称" min-width="150" header-align="center" align="left" /> |
|
|
|
<el-table-column prop="owner" label="负责人" min-width="140" header-align="center" align="left" show-overflow-tooltip> |
|
|
|
<el-table-column prop="departmentNo" label="部门编号" min-width="60" header-align="center" align="left" /> |
|
|
|
<el-table-column prop="departmentName" label="部门名称" min-width="80" header-align="center" align="left" /> |
|
|
|
<el-table-column prop="owner" label="负责人" min-width="80" header-align="center" align="left" show-overflow-tooltip> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span v-if="scope.row.owner">{{scope.row.owner}}</span> |
|
|
|
<span v-if="scope.row.owner">{{ scope.row.owner }}</span> |
|
|
|
<span v-else style="color:#999">(未选择)</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="ownerDisplay" label="负责人姓名" min-width="120" header-align="center" align="left" show-overflow-tooltip> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span v-if="scope.row.ownerDisplay">{{ scope.row.ownerDisplay }}</span> |
|
|
|
<span v-else style="color:#999">-</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="操作" fixed="right" width="90" header-align="center" align="center"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<a class="customer-a" @click="openOwnerSelect(scope.row)">查询</a> |
|
|
|
@ -199,12 +206,18 @@ |
|
|
|
<el-table :data="departmentList" :key="'dept-edit'" size="mini" border height="380" v-loading="deptLoading"> |
|
|
|
<el-table-column prop="departmentNo" label="部门编号" min-width="100" header-align="center" align="left" /> |
|
|
|
<el-table-column prop="departmentName" label="部门名称" min-width="200" header-align="center" align="left" /> |
|
|
|
<el-table-column prop="owner" label="负责人" min-width="160" header-align="center" align="left" show-overflow-tooltip> |
|
|
|
<el-table-column prop="owner" label="负责人" min-width="120" header-align="center" align="left" show-overflow-tooltip> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span v-if="scope.row.owner">{{scope.row.owner}}</span> |
|
|
|
<span v-if="scope.row.owner">{{ scope.row.owner }}</span> |
|
|
|
<span v-else style="color:#999">(未选择)</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="ownerDisplay" label="负责人姓名" min-width="140" header-align="center" align="left" show-overflow-tooltip> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span v-if="scope.row.ownerDisplay">{{ scope.row.ownerDisplay }}</span> |
|
|
|
<span v-else style="color:#999">-</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="操作" width="110" header-align="center" align="center"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<a class="customer-a" @click="openOwnerSelect(scope.row)">查询</a> |
|
|
|
@ -534,9 +547,32 @@ export default { |
|
|
|
if (data && (data.code === 0 || data.code === '0')) { |
|
|
|
// 统一使用 owner 字段 |
|
|
|
this.departmentList = data.rows || data.obj || [] |
|
|
|
// 加载所有用户列表,用于匹配 ownerDisplay |
|
|
|
this.loadAllUsersForDisplay() |
|
|
|
} else { this.departmentList = [] } |
|
|
|
}).catch(()=> { this.departmentList=[] }).finally(()=> { this.deptLoading=false }) |
|
|
|
}, |
|
|
|
// 加载所有用户用于匹配显示名称 |
|
|
|
loadAllUsersForDisplay() { |
|
|
|
// 使用和 loadOwners 相同的调用方式,传入一个空对象或第一个部门 |
|
|
|
const queryParam = this.departmentList.length > 0 ? this.departmentList[0] : {} |
|
|
|
fetchOwnerUserList(queryParam).then(({data})=> { |
|
|
|
if (data && (data.code===0||data.code==='0')) { |
|
|
|
const userList = (data.page? data.page.list : (data.rows||data.obj||[])) || [] |
|
|
|
// 为每个有 owner 的部门匹配 userDisplay |
|
|
|
this.departmentList.forEach(dept => { |
|
|
|
if (dept.owner) { |
|
|
|
const matchedUser = userList.find(u => u.username === dept.owner || u.userName === dept.owner) |
|
|
|
if (matchedUser) { |
|
|
|
this.$set(dept, 'ownerDisplay', matchedUser.userDisplay || matchedUser.user_display || '') |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
}).catch(()=> { |
|
|
|
// 静默失败,不影响其他数据显示 |
|
|
|
}) |
|
|
|
}, |
|
|
|
openOwnerSelect(row) { this.currentDeptRow = row; this.ownerDialogVisible = true; this.ownerQuery.keyword=''; this.loadOwners(); }, |
|
|
|
loadOwners() { |
|
|
|
this.ownerLoading = true; |
|
|
|
@ -548,7 +584,10 @@ export default { |
|
|
|
if (!this.currentDeptRow || !row) return; |
|
|
|
const uname = row.username || row.userName || row.user_id || '' |
|
|
|
if (!uname) { this.$message.warning('该行缺少 username无法选择'); return } |
|
|
|
// 保存 username 到 owner 字段(用于提交) |
|
|
|
this.$set(this.currentDeptRow, 'owner', uname) |
|
|
|
// 保存 userDisplay 到 ownerDisplay 字段(仅用于显示) |
|
|
|
this.$set(this.currentDeptRow, 'ownerDisplay', row.userDisplay || row.user_display || '') |
|
|
|
this.ownerDialogVisible = false |
|
|
|
}, |
|
|
|
clearOwner(row) { row.owner = '' }, |
|
|
|
|