提交所有代码
This commit is contained in:
@@ -23,8 +23,8 @@
|
||||
<el-row :gutter="12">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目负责人">
|
||||
<el-select v-model="form.leadUserId" placeholder="请选择合规管理员" filterable clearable :filter-method="searchManagers" style="width:100%">
|
||||
<el-option v-for="u in managerOptions" :key="u.userId"
|
||||
<el-select v-model="form.leadUserId" placeholder="请选择项目负责人" filterable clearable :filter-method="searchLeaders" style="width:100%">
|
||||
<el-option v-for="u in leaderOptions" :key="u.userId"
|
||||
:label="`${u.nickName || u.userName}${u.nickName && u.userName ? ' (' + u.userName + ')' : ''}`" :value="u.userId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -133,7 +133,7 @@
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { bizAdd, bizUpdate, bizGet } from '@/api/public'
|
||||
import { listExecutor, listManagers } from '@/api/system'
|
||||
import { listExecutor, listLeaders } from '@/api/system'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import request from '@/utils/request'
|
||||
import OssFileUploader from '@/components/OssFileUploader.vue'
|
||||
@@ -155,13 +155,13 @@ function nowLocalDatetime() {
|
||||
return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}:${p(d.getSeconds())}`
|
||||
}
|
||||
|
||||
// 项目负责人候选 (合规管理员, sys_user.role_type='manager')
|
||||
const managerOptions = ref([])
|
||||
// 项目负责人候选 (sys_user.role_type='leader')
|
||||
const leaderOptions = ref([])
|
||||
let _managerTimer = null
|
||||
|
||||
const form = reactive({
|
||||
projectName: '', projectNo: '', projectForm: '',
|
||||
// 项目负责人 (sys_user.role_type='manager' 合规管理员, 名称由后端 JOIN 查, 不缓存)
|
||||
// 项目负责人 (sys_user.role_type='leader', 名称由后端 JOIN 查, 不缓存)
|
||||
leadUserId: null,
|
||||
// 是否招标项目 Y/N (默认 N)
|
||||
isBidProject: 'N',
|
||||
@@ -267,29 +267,29 @@ async function loadProject() {
|
||||
}
|
||||
}
|
||||
|
||||
// 加载项目负责人 (合规管理员, sys_user.role_type='manager')
|
||||
async function loadManagers(query) {
|
||||
// 加载项目负责人 (sys_user.role_type='leader')
|
||||
async function loadLeaders(query) {
|
||||
if (_managerTimer) clearTimeout(_managerTimer)
|
||||
_managerTimer = setTimeout(async () => {
|
||||
try {
|
||||
const params = { pageNum: 1, pageSize: 50 }
|
||||
if (query) params.userName = query
|
||||
const r = await listManagers(params)
|
||||
managerOptions.value = (r.data && r.data.rows) || r.rows || []
|
||||
const r = await listLeaders(params)
|
||||
leaderOptions.value = (r.data && r.data.rows) || r.rows || []
|
||||
// 已选项不在结果里时按 userId 单独拉取并加首位, 避免 el-select 选中后 label 空白
|
||||
if (form.leadUserId && !managerOptions.value.find(u => u.userId === form.leadUserId)) {
|
||||
const r2 = await listManagers({ userId: form.leadUserId })
|
||||
if (form.leadUserId && !leaderOptions.value.find(u => u.userId === form.leadUserId)) {
|
||||
const r2 = await listLeaders({ userId: form.leadUserId })
|
||||
const sel = (r2.data && r2.data.rows) || r2.rows || []
|
||||
if (sel[0]) managerOptions.value = [sel[0], ...managerOptions.value]
|
||||
if (sel[0]) leaderOptions.value = [sel[0], ...leaderOptions.value]
|
||||
}
|
||||
} catch (e) { managerOptions.value = [] }
|
||||
} catch (e) { leaderOptions.value = [] }
|
||||
}, 200)
|
||||
}
|
||||
function searchManagers(q) { loadManagers(q) }
|
||||
function searchLeaders(q) { loadLeaders(q) }
|
||||
|
||||
onMounted(() => {
|
||||
loadProject()
|
||||
loadManagers('')
|
||||
loadLeaders('')
|
||||
})
|
||||
function goBack() {
|
||||
// 带 _t 强制 Projects.vue watch 触发 reload, 即便路由一样也重载
|
||||
|
||||
Reference in New Issue
Block a user