feat: 会议提交剩余时间+解冻 + 会务/劳务材料批量下载 + 多角色人员/账号模块完善

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
郭庆泰
2026-08-25 06:53:18 +08:00
co-authored by Claude
parent 0c882ae846
commit 591a43fe61
126 changed files with 3789 additions and 1334 deletions
+6 -8
View File
@@ -82,10 +82,6 @@
<!-- ========== 第二区块角色劳务设置 ========== -->
<div class="new-card-title">角色劳务设置</div>
<div class="hint-text">
<p>*角色劳务设置针对该项目所有会议生效</p>
<p>*专家劳务明细当会议劳务金额超过角色劳务设置时,该劳务金额为税后金额,则系统进行提示</p>
</div>
<div v-for="(r, idx) in form.roleRows" :key="idx" class="role-row">
<el-select v-model="r.role" placeholder="请选择" style="width:160px" @change="onRoleSelectChange(r)">
<el-option label="主席" value="主席" />
@@ -98,11 +94,10 @@
<el-input v-if="r.role === '其他'" v-model="r.customName" placeholder="角色名" class="role-custom" />
<el-input-number v-model="r.amount" :min="0" :precision="2" placeholder="劳务金额" class="role-amount" />
<div class="row-actions">
<el-button link type="primary" @click="addRoleRow">增加角色</el-button>
<el-button link type="danger" :disabled="form.roleRows.length<=1" @click="removeRoleRowAt(idx)">删除角色</el-button>
</div>
</div>
<p class="hint-text">*当选择其他时,需手动填写角色名称,显示填写框</p>
<el-button link type="primary" @click="addRoleRow" style="margin-top: 8px;">+ 增加角色</el-button>
<!-- ========== 第三区块公告文件 ========== -->
<div class="new-card-title">公告文件</div>
@@ -245,11 +240,12 @@ async function loadProject() {
if (m) { n.url = m.url || ''; n.name = m.name || '' }
}
} else {
// 兼容老数据 (DB 实测只剩 invitationUrl/supportLetterUrl/publishUrl 3 个独立列)
// 兼容老数据 (独立列: invitationUrl/supportLetterUrl/publishUrl/scheduleUrl)
const noticeMap = {
invitation: p.invitationUrl,
supportLetter: p.supportLetterUrl,
publish: p.publishUrl
notice: p.publishUrl,
schedule: p.scheduleUrl
}
for (const n of form.notices) {
n.url = noticeMap[n.key] || ''
@@ -332,6 +328,8 @@ async function submit(mode = 'save') {
for (const n of uploaded) {
if (n.key === 'invitation') payload.invitationUrl = n.url
else if (n.key === 'supportLetter') payload.supportLetterUrl = n.url
else if (n.key === 'notice') payload.publishUrl = n.url
else if (n.key === 'schedule') payload.scheduleUrl = n.url
}
// 发布时设置 is_published='1' + publish_time (同步后端字段)
if (mode === 'publish') {