feat(front): 项目/会议管理 admin 端补齐 + 删除按钮 + 级联 UI + 角色劳务组件
admin 会议管理: - 新建 admin/AdminMeetings.vue (查看/删除/批量删除, 面包屑 首页/项目管理/会议管理) - AdminLayout.vue 加 /admin/meetings 菜单 - router/index.js 加 admin-meetings + admin-meetings-detail 路由 - MeetingDetail.vue admin 删除按钮改 admin+manager 双角色可触发 (onAdminDelete 跳回按角色) manager 会议管理: - Meetings.vue 加批量删除 + 删除按钮 + 删除确认文案 (6 张表级联) - MeetingDetail.vue 删除按钮 v-if 改 canDeleteMeeting = isAdmin || isManager manager 项目管理: - Projects.vue 加批量删除 + 删除项 + doDelete 改走 cascade (5 张项目表 + 会议链) - ProjectsNew.vue style-alignment: page-card 居左 (max-width 1200px, 无 margin auto), form-actions 包在 el-form 内 - Projects.vue + Meetings.vue + AdminMeetings.vue 删页内冗余删除提示 store + 组件: - store/user.js 加 isAdmin getter - components/ProjectRoleSelect.vue 新建 (项目级角色劳务下拉, 接 roleLabor)
This commit is contained in:
@@ -100,12 +100,9 @@ const projectId = ref('')
|
||||
const row = ref({})
|
||||
const loading = ref(false)
|
||||
|
||||
// 角色劳务 (从 biz_project.role_labor JSON 字段读)
|
||||
// 角色劳务 (从 biz_project.role_labor JSON 字段读; 空数组 → 模板 "暂无角色" 行兜底)
|
||||
const form = reactive({
|
||||
roleRows: [
|
||||
{ role: '主席', customName: '', amount: 5000 },
|
||||
{ role: '主持', customName: '', amount: 3000 }
|
||||
]
|
||||
roleRows: []
|
||||
})
|
||||
// 监督员 (从 biz_project.monitors JSON 字段读)
|
||||
const monitors = ref([])
|
||||
@@ -147,11 +144,11 @@ async function loadProject() {
|
||||
const resp = await bizGet('project', projectId.value)
|
||||
const data = (resp && resp.data) || resp || {}
|
||||
row.value = data || {}
|
||||
// 角色劳务 (JSON 字段, 缺则用默认)
|
||||
// 角色劳务 (JSON 字段, 缺/空 → form.roleRows 保持空数组, 模板"暂无角色"兜底)
|
||||
try {
|
||||
const rl = JSON.parse(row.value.roleLabor || '[]')
|
||||
if (Array.isArray(rl) && rl.length) form.roleRows = rl
|
||||
} catch (e) { /* keep default */ }
|
||||
} catch (e) { /* keep empty */ }
|
||||
// 监督员 (JSON 字段)
|
||||
try {
|
||||
const mn = JSON.parse(row.value.monitors || '[]')
|
||||
|
||||
Reference in New Issue
Block a user