feat: OA(泛微 ecology)登录身份校验 + 公示详情悬浮按钮/PDF缩放

OA 登录校验 (manager/leader 单一可信源 = ecology 合规视图 v_compliance_project_manager):
- ComplianceLoginService: 手机号登录查视图(type=1→manager/type=2→leader), 自动建号 sys_user+biz_person, 角色不匹配软删重建; 密码登录门禁 gateForPasswordLogin
- EcologyDataSourceConfig: 独立只读 JdbcTemplate(ecologyJdbcTemplate) 接泛微库, 不接入主库动态数据源
- SysLoginController: 密码登录前 complianceGate 校验 manager/leader 仍存于视图
- BizAuthController: smsLogin 改走 reconcileForLogin; 发码放行 ecology 视图内未注册手机号
- application*.yml: 新增 spring.datasource.ecology 只读连接(prod/test)
- Login.vue: 登录标题居中微调 + 供应商注册跳生产域名

公示详情 (publicity/:id):
- 右侧悬浮操作按钮从垂直居中改为主区右上(紧贴版心右缘), 中窄屏兜底贴右缘
- PDF 预览 #zoom 由 page-width 改为数值缩放(121), 放大正文占满宽度

文档:
- shouce/ 手册 md 入仓

注: oalogin/ (含 OA 管理员密码的临时笔记) 已加 .gitignore, 不入库
This commit is contained in:
郭庆泰
2026-09-01 20:45:15 +08:00
parent a14d95288c
commit beb9799a06
20 changed files with 2425 additions and 30 deletions
+3
View File
@@ -89,3 +89,6 @@ ry-vue2/ # 旧 vue 控制台
# ===== OCR 模型 (大二进制, 不进版本库, 部署时放 jar 同目录 models/) =====
ry-api/models/
ry-ocr-java/src/main/resources/models/
# ===== OA 单点登录临时笔记 (含 OA 管理员密码, 不入库) =====
oalogin/
@@ -25,6 +25,7 @@ import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysMenuService;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.business.domain.BizExpert;
import com.ruoyi.business.service.ComplianceLoginService;
import com.ruoyi.business.service.IBizExpertService;
/**
@@ -56,6 +57,9 @@ public class SysLoginController
@Autowired
private IBizExpertService expertService;
@Autowired
private ComplianceLoginService complianceLoginService;
/**
* 登录方法
*
@@ -70,6 +74,12 @@ public class SysLoginController
{
return AjaxResult.error("您的信息正在审核中");
}
// 合规人员/项目负责人门禁: 校验其仍存在于 ecology 视图, 角色变更则软删重建
String complianceGate = complianceGate(loginBody.getUsername());
if (complianceGate != null)
{
return AjaxResult.error(complianceGate);
}
AjaxResult ajax = AjaxResult.success();
// 生成令牌
String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
@@ -101,6 +111,33 @@ public class SysLoginController
return expert != null && "1".equals(expert.getAuditStatus());
}
/**
* 密码登录门禁: 用户名命中 manager/leader 时校验其仍存在于 ecology 视图.
* 返回 null=放行, 非 null=错误提示 (直接报错, 不走密码登录).
*/
private String complianceGate(String username)
{
if (username == null || username.isEmpty())
{
return null;
}
SysUser probe = userService.selectUserByUserName(username);
if (probe == null && username.contains("@"))
{
probe = userService.selectUserByEmail(username);
}
if (probe == null || probe.getUserId() == null)
{
return null;
}
String role = probe.getRoleType();
if (!"manager".equals(role) && !"leader".equals(role))
{
return null;
}
return complianceLoginService.gateForPasswordLogin(probe);
}
/**
* 获取用户信息
*
@@ -10,6 +10,12 @@ spring:
url: jdbc:mysql://47.95.12.80:3306/hegui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: hegui
password: C55zwt5L2TeB4kLB
# 合规(泛微 ecology)外部只读库, 登录校验合规人员/项目负责人用
ecology:
url: jdbc:mysql://oagm228.guojustar.com:3306/ecology?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
username: user_compliance
password: 'ComplexPass@2026'
driver-class-name: com.mysql.cj.jdbc.Driver
# 生产环境外部接口地址
ruoyi:
@@ -20,15 +26,15 @@ ruoyi:
base-url: https://hegui.bahim.org.cn/camera/
supplier-account-api:
# base-url: https://zbsupplier.guojustar.com/supplier-api/bidding/supplier/openapi/accounts
base-url: https://zbsuppliertest.guojustar.com/supplier-api/bidding/supplier/openapi/accounts
base-url: https://zbsupplier.guojustar.com/supplier-api/bidding/supplier/openapi/accounts
# base-url: https://zbsuppliertest.guojustar.com/supplier-api/bidding/supplier/openapi/accounts
supplier-account-api-aes:
key-id: supplier-api-key
key: 'kY0+oIO/laeaaaYDd+9TCYbCQR0b/vqMeJ9sUnSVd9U='
bidding-api:
# notice-list-url: https://zbpublic.guojustar.com/portal-api/bidding/public/notice/list
# detail-url: https://zbpublic.guojustar.com/#/detail/
notice-list-url: https://zbpublictest.guojustar.com/portal-api/bidding/public/notice/list
detail-url: https://zbpublictest.guojustar.com/#/detail/
notice-list-url: https://zbpublic.guojustar.com/portal-api/bidding/public/notice/list
detail-url: https://zbpublic.guojustar.com/#/detail/
# notice-list-url: https://zbpublictest.guojustar.com/portal-api/bidding/public/notice/list
# detail-url: https://zbpublictest.guojustar.com/#/detail/
@@ -6,6 +6,12 @@ spring:
url: jdbc:mysql://mmos.uvwcloud.com:3306/guoju0808?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: Qljl1rh_
# 合规(泛微 ecology)外部只读库, 登录校验合规人员/项目负责人用
ecology:
url: jdbc:mysql://101.254.99.156:11120/ecology?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
username: user_compliance
password: 'ComplexPass@2026'
driver-class-name: com.mysql.cj.jdbc.Driver
# 测试环境外部接口地址
ruoyi:
@@ -97,7 +97,7 @@ spring:
basename: i18n/messages
profiles:
# 默认 prod 环境; 本地测试用 --spring.profiles.active=test (group 自动展开为 druid,test)
active: prod
active: test
group:
test: druid,test
prod: druid,prod
@@ -0,0 +1,42 @@
package com.ruoyi.business.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.jdbc.core.JdbcTemplate;
/**
* 合规(泛微 ecology)外部只读库数据源.
* <p>
* 用于登录时校验合规人员(manager) / 项目负责人(leader) 是否仍存在于
* {@code v_compliance_project_manager} 视图 (按 mobile 手机号匹配).
* <p>
* 独立 JdbcTemplate (bean 名 ecologyJdbcTemplate), 不接入主库事务 / MyBatis,
* 避免与 DruidConfig 的主从动态数据源 (dynamicDataSource @Primary) 产生二义性.
*/
@Configuration
public class EcologyDataSourceConfig
{
@Bean(name = "ecologyJdbcTemplate")
public JdbcTemplate ecologyJdbcTemplate(Environment env)
{
String url = env.getProperty("spring.datasource.ecology.url");
String username = env.getProperty("spring.datasource.ecology.username");
String password = env.getProperty("spring.datasource.ecology.password");
String driver = env.getProperty("spring.datasource.ecology.driver-class-name", "com.mysql.cj.jdbc.Driver");
DruidDataSource ds = new DruidDataSource();
ds.setUrl(url);
ds.setUsername(username);
ds.setPassword(password);
ds.setDriverClassName(driver);
// 只读小连接池, 登录校验用
ds.setInitialSize(1);
ds.setMinIdle(1);
ds.setMaxActive(3);
ds.setMaxWait(3000);
ds.setValidationQuery("SELECT 1");
return new JdbcTemplate(ds);
}
}
@@ -19,7 +19,9 @@ import com.ruoyi.business.dto.SmsValidForm;
import com.ruoyi.business.mapper.BizPersonMapper;
import com.ruoyi.business.service.IBizExpertService;
import com.ruoyi.business.service.IBizOrgService;
import com.ruoyi.business.service.ComplianceLoginService;
import com.ruoyi.business.service.SysSmsService;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.id.SnowflakeId;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.controller.BaseController;
@@ -69,6 +71,9 @@ public class BizAuthController extends BaseController {
@Autowired
private IBizExpertService expertService;
@Autowired
private ComplianceLoginService complianceLoginService;
@Autowired
private BizPersonMapper bizPersonMapper;
@@ -101,8 +106,8 @@ public class BizAuthController extends BaseController {
if (phone == null || !phone.matches("^1\\d{10}$")) {
return error("请输入正确的手机号");
}
// 登录反义: 手机号未注册则不发
if (!userService.isPhoneRegistered(phone)) {
// 登录反义: 手机号未注册则不发; 但合规人员/项目负责人可从 ecology 视图自动建号, 放行发码
if (!userService.isPhoneRegistered(phone) && !complianceLoginService.existsInEcology(phone)) {
return error("该手机号未注册, 请先注册账号");
}
String uuid = smsService.sendCode(phone);
@@ -138,15 +143,15 @@ public class BizAuthController extends BaseController {
return error("验证码错误或已过期: " + e.getMessage());
}
// 3. 查用户 (checkPhoneUnique 只 select user_id+phonenumber, 缺 role_type/user_name/status,
// 需再按 userId 查完整 user, 否则 LoginUser 里 roleType=null 导致前端拿不到角色而跳回登录页)
SysUser probe = userMapper.checkPhoneUnique(phone);
if (probe == null || probe.getUserId() == null) {
return error("该手机号未注册");
// 3. 查用户 + 合规人员/项目负责人身份校验 (可能从 ecology 视图自动建号)
SysUser user;
try {
user = complianceLoginService.reconcileForLogin(phone);
} catch (ServiceException e) {
return error(e.getMessage());
}
SysUser user = userMapper.selectUserById(probe.getUserId());
if (user == null) {
return error("该手机号未注册");
return error("用户不存在");
}
// 4. 校验用户状态
@@ -0,0 +1,200 @@
package com.ruoyi.business.service;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.business.domain.BizPerson;
import com.ruoyi.business.mapper.BizPersonMapper;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.id.SnowflakeId;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.service.ISysUserService;
/**
* 合规人员(manager) / 项目负责人(leader) 登录身份校验 + 自动建号.
* <p>
* 单一可信源 = 泛微 ecology 的 {@code v_compliance_project_manager} 视图 (按 mobile 手机号):
* - type=1 → 合规人员 → role_type=manager
* - type=2 → 项目负责人 → role_type=leader
* <p>
* 登录决策 (手机号 vs 视图 vs sys_user):
* - 已注册且非 manager/leader → 不查视图, 直接放行 (走原逻辑)
* - 视图里没有 → 报"用户不存在"
* - 视图里有 + sys_user 没有 → 入库(sys_user + biz_person, 登录名=手机号, 密码留空) 后放行
* - 视图里有 + sys_user 有 + 角色匹配 → 放行
* - 视图里有 + sys_user 有 + 角色不匹配 → 软删旧 + 建新 后放行
*/
@Service
public class ComplianceLoginService
{
private static final Logger log = LoggerFactory.getLogger(ComplianceLoginService.class);
private static final String ECOLOGY_LOOKUP_SQL =
"SELECT lastname, type FROM v_compliance_project_manager WHERE mobile = ? LIMIT 1";
@Autowired
@Qualifier("ecologyJdbcTemplate")
private JdbcTemplate ecologyJdbcTemplate;
@Autowired
private SysUserMapper userMapper;
@Autowired
private ISysUserService userService;
@Autowired
private BizPersonMapper bizPersonMapper;
/**
* 短信登录主路径: 查用户 + 合规/负责人校验, 返回最终要登录的 SysUser.
* 无资格时抛 {@link ServiceException}("用户不存在").
*/
@Transactional(rollbackFor = Exception.class)
public SysUser reconcileForLogin(String phone)
{
SysUser user = findUserByPhone(phone);
String role = user == null ? null : user.getRoleType();
boolean needEcology = user == null || "manager".equals(role) || "leader".equals(role);
if (!needEcology)
{
return user;
}
EcologyPerson p = queryEcology(phone);
if (p == null)
{
throw new ServiceException("用户不存在");
}
String expectedRole = p.type == 1 ? "manager" : "leader";
if (user == null)
{
// sys_user 没有 → 自动入库
return provision(p, phone, expectedRole);
}
if (expectedRole.equals(role))
{
// 角色匹配 → 直接放行
return user;
}
// 角色不匹配 → 软删旧 + 建新
userService.deleteUserByIds(new Long[] { user.getUserId() });
return provision(p, phone, expectedRole);
}
/**
* 密码登录门禁: 已解析出的 manager/leader 校验其是否仍在视图、角色是否一致.
* 返回 null=放行; 非 null=错误提示 (此时调用方应直接报错, 不再走密码登录).
*/
@Transactional(rollbackFor = Exception.class)
public String gateForPasswordLogin(SysUser user)
{
String phone = user.getPhonenumber();
EcologyPerson p = queryEcology(phone == null ? "" : phone);
if (p == null)
{
return "用户不存在";
}
String expectedRole = p.type == 1 ? "manager" : "leader";
if (expectedRole.equals(user.getRoleType()))
{
return null;
}
// 角色不匹配 → 软删旧 + 建新 (新账号密码留空, 只能短信登录)
userService.deleteUserByIds(new Long[] { user.getUserId() });
provision(p, phone, expectedRole);
return "账号角色已更新, 请使用手机验证码登录";
}
/**
* 手机号是否存在于 ecology 视图 (短信发码前放行合规/负责人未注册手机号用).
*/
public boolean existsInEcology(String phone)
{
return queryEcology(phone) != null;
}
private SysUser findUserByPhone(String phone)
{
SysUser probe = userMapper.checkPhoneUnique(phone);
if (probe == null || probe.getUserId() == null)
{
return null;
}
return userMapper.selectUserById(probe.getUserId());
}
private EcologyPerson queryEcology(String phone)
{
if (phone == null || phone.isEmpty())
{
return null;
}
try
{
List<Map<String, Object>> rows = ecologyJdbcTemplate.queryForList(ECOLOGY_LOOKUP_SQL, phone);
if (rows == null || rows.isEmpty())
{
return null;
}
Map<String, Object> row = rows.get(0);
Object typeObj = row.get("type");
if (typeObj == null)
{
return null;
}
EcologyPerson p = new EcologyPerson();
p.type = ((Number) typeObj).intValue();
p.name = row.get("lastname") == null ? null : row.get("lastname").toString();
return p;
}
catch (Exception e)
{
// ecology 库不可达时 fail-closed: 视作视图没有, 合规/负责人被拦, 普通用户不受影响
log.warn("查询 ecology 合规视图失败: {}", e.getMessage());
return null;
}
}
private SysUser provision(EcologyPerson p, String phone, String role)
{
String name = (p.name == null || p.name.isEmpty()) ? phone : p.name;
SysUser u = new SysUser();
u.setUserName(phone); // 登录名 = 手机号
u.setNickName(name);
u.setPhonenumber(phone);
u.setRoleType(role); // 显式写, 避免 DB 默认 'executor'
u.setStatus("0");
// 密码留空 (只能短信登录)
u.setCreateBy(phone);
userService.insertUser(u);
Long userId = u.getUserId();
BizPerson person = new BizPerson();
SnowflakeId.injectIfEmpty(person, "personId");
person.setName(name);
person.setPhone(phone);
person.setUnitType(role);
person.setDepartment("manager".equals(role) ? "合规部" : "项目组");
person.setPosition("manager".equals(role) ? "合规员" : "项目负责人");
person.setUserId(userId);
person.setCreateBy(phone);
person.setUpdateBy(phone);
bizPersonMapper.insert(person);
return u;
}
private static class EcologyPerson
{
int type;
String name;
}
}
+2 -2
View File
@@ -1,5 +1,5 @@
# 测试环境 API 基路径 (nginx 反向代理前缀)
VITE_APP_BASE_API = '/hegui-api'
VITE_APP_BASE_API = '/hg-api'
# 测试环境静态资源子路径 (nginx 部署在 /hegui/)
VITE_BASE = '/hegui/'
VITE_BASE = '/hg/'
Binary file not shown.

Before

Width:  |  Height:  |  Size: 478 KiB

After

Width:  |  Height:  |  Size: 118 KiB

+5 -4
View File
@@ -21,8 +21,8 @@
<!-- 右侧登录卡片 -->
<section class="login-section">
<div class="login-card">
<h1 class="login-title">{{ loginMode === 'password' ? '账号登录' : '手机号登录' }}</h1>
<p class="login-subtitle">{{ loginMode === 'password' ? '请输入您的账号信息' : '请输入手机号接收验证码' }}</p>
<h1 class="login-title">{{ loginMode === 'password' ? '登录' : '登录' }}</h1>
<!-- <p class="login-subtitle">{{loginMode === 'password' ? '请输入您的账号信息' : '请输入手机号接收验证码' }}</p> -->
<div class="login-tabs">
<span class="tab" :class="{ active: loginMode === 'password' }" @click="switchMode('password')">账号密码登录</span>
@@ -103,7 +103,6 @@
<input type="radio" name="registerUserType" :value="t.value" v-model="registerUserType">
<div class="info">
<div class="name">{{ t.name }}</div>
<div class="desc">{{ t.desc }}</div>
</div>
</label>
</div>
@@ -375,7 +374,7 @@ function confirmRegister() {
// 执行方(供应商)注册: 跳转到独立供应商注册系统, 不走本系统注册页
if (registerUserType.value === 'executor') {
showRoleModal.value = false
window.location.href = 'https://zbsuppliertest.guojustar.com/'
window.location.href = 'https://zbsupplier.guojustar.com/'
return
}
const routeMap = {
@@ -599,11 +598,13 @@ body { margin: 0; padding: 0; }
}
.login-page .login-title{
transform: translateY(-10px);
font-size: 26px;
font-weight: 600;
color: #1f2937;
margin-bottom: 10px;
letter-spacing: 2px;
text-align: center;
}
.login-page .login-subtitle{
+14 -8
View File
@@ -279,11 +279,13 @@ function isImg(url) {
// OSS bucket 设置了 Content-Disposition: attachment, iframe/embed 直接访问会被强制下载.
// 所有 OSS 文件 URL 走 /common/oss/proxy 后端代理 (重写为 inline)
// 必须加 /dev-api 前缀: Vite dev server proxy 只代理 /dev-api/* 到后端, 其他相对 URL 会 SPA fallback 到 index.html
// #toolbar=0 隐藏 Chrome PDF viewer 工具栏, #zoom=page-width 强制 PDF 撑满 iframe 宽度
// #toolbar=0 隐藏 Chrome PDF viewer 工具栏, #zoom=<百分比> 放大 PDF 内容
// 红头文件自带较宽页边距, page-width 会把整页(含边距)缩进 iframe, 正文仍偏小;
// 用数值缩放(如 160)裁掉边距、让正文尽量占满宽度, 数字越大越大/裁得越多
function proxyUrl(url) {
if (!url) return url
if (url.includes('hwtossbamlorgcn.oss-cn-beijing.aliyuncs.com')) {
return import.meta.env.VITE_APP_BASE_API + '/common/oss/proxy?url=' + encodeURIComponent(url) + '#toolbar=0&zoom=page-width'
return import.meta.env.VITE_APP_BASE_API + '/common/oss/proxy?url=' + encodeURIComponent(url) + '#toolbar=0&zoom=121'
}
return url
}
@@ -584,8 +586,6 @@ onBeforeUnmount(() => {
gap: 20px;
background: transparent; /* 不要 card 包裹 */
padding: 24px 0; /* 去掉左右内边距让内容铺满 */
/* 给悬浮按钮留右边距,避免按钮遮住内容 */
padding-right: 80px;
border-radius: 0;
box-shadow: none;
align-items: stretch;
@@ -689,18 +689,24 @@ onBeforeUnmount(() => {
100% { background-position: -200% 0; }
}
/* 悬浮固定到页面右侧中部 - 不占 detail-main 空间 */
/* 悬浮固定到 main 右上, 紧贴版心右侧 - 不占 detail-main 空间 */
.detail-actions {
position: fixed;
right: 24px;
top: 50%;
transform: translateY(-50%);
left: calc(50% + 630px); /* 版心右缘(677) 附近, 按钮右缘略出内容右上角 */
top: 180px;
z-index: 100;
display: flex;
flex-direction: column;
gap: 12px;
width: 132px;
}
/* 中窄屏: 版心右侧放不下按钮时改贴屏幕右缘, 避免溢出 */
@media (max-width: 1660px) and (min-width: 901px) {
.detail-actions {
left: auto;
right: 12px;
}
}
.action-btn {
display: flex; align-items: center; justify-content: center; gap: 6px;
height: 38px; padding: 0 18px;
+209
View File
@@ -0,0 +1,209 @@
# 后台管理员用户手册
> 本手册面向「后台管理员」角色。内容基于系统实际页面整理。
## 角色说明
后台管理员是平台的**超级管理员**,负责系统级维护与全局业务管理:
- **系统账号**:用户管理、角色管理
- **基础数据**:科室、职称、项目类别(供医生注册 / 投稿下拉选择)
- **网站内容**:协议、专项计划、劳务协议模板
- **业务复用**:项目管理、会议管理、专家管理、支持/执行单位管理(权限比合规人员更大,如可删除项目、新增单位等)
## 菜单概览
登录后左侧菜单(后台管理员角色):
- 工作台
- 用户管理
- 角色管理
- 项目管理
- 会议管理
- 资料库管理(子菜单:专家管理 / 支持单位管理 / 执行单位管理 / 科室管理 / 职称管理 / 项目类别管理)
- 网站管理(子菜单:协议管理 / 专项计划管理 / 劳务协议配置)
- 消息通知
- 账号信息
---
## Q1. 如何维护基础数据(科室 / 职称 / 项目类别)
> 「科室管理」「职称管理」「项目类别管理」三个页面结构完全一致,都是「基础数据」的新增、编辑、删除:这些数据用于**医生(专家)注册时选择科室 / 职称**、**医生投稿时选择项目类别**。后台管理员在此维护下拉选项。
### 一、进入与列表
1. 点击左侧菜单「**资料库管理**」→「科室管理」/「职称管理」/「项目类别管理」。
2. 列表展示:ID(项目类别页为「序号」)、名称、排序、状态(启用 / 停用)、创建时间。
3. 可按名称、状态筛选。
### 二、新增
1. 点「**新增科室 / 新增职称 / 新增类别**」按钮。
2. 弹窗填写:
- **名称**:科室名称 / 职称名称 / 类别名称。
- **排序**(数字越小越靠前)。
3. 点「**保存**」→ 新增成功(默认启用)。
### 三、编辑
1. 点行内「**编辑**」。
2. 可改名称、排序,以及**状态**(启用 / 停用,仅编辑时可选)。
3. 点「保存」。
### 四、停用 / 启用
- 行内「**停用** / **启用**」切换;停用后该项不再出现在前台的下拉选项里。
### 五、删除
- 点行内「**删除**」→ 确认「该操作不可恢复」→ 删除。
### 六、注意事项
- 三个页面操作完全一致,区别仅是「名称」字段的叫法(科室名称 / 职称名称 / 类别名称)。
- 科室、职称供**医生注册**时选择;项目类别供**医生投稿**时选择。停用 / 删除后前台下拉不再显示。
- 删除**不可恢复**,删除前请确认该项已无项目 / 专家引用。
---
## Q2. 如何管理用户(系统账号)
> 「用户管理」维护系统全部登录账号,覆盖 6 种角色。新建用户时按角色**显示不同字段**(无企业归属的账号 / 评审专家 / 支持方·执行方)。
### 一、查看与筛选
1. 点击左侧菜单「**用户管理**」。
2. 列表展示:用户 ID、账号、姓名、角色、单位名称、手机号、邮箱、状态(启用 / 停用)、创建时间。
3. 可按用户账号、姓名、单位名称、角色、状态筛选。
### 二、新建用户(按角色)
1. 点「**新建用户**」按钮。
2. 先选「**角色**」(6 种:后台管理员 / 合规人员 / 评审专家 / 执行人 / 支持方 / 项目负责人)。
3. 填通用字段:
- **登录账号**。
- **密码**。
- 邮箱。
4. 按所选角色填附加字段:
- **后台管理员 / 合规人员 / 项目负责人**(无企业归属的账号):姓名、手机号。
- **评审专家**:姓名、手机号、工作单位、科室、职称。
- **支持方 / 执行人**:选「**账号类型**」——
- **主账号(新建单位)**:单位名称、企业性质、联系人、联系电话。
- **子账号(选已有单位)**:所属单位(搜索选择)、姓名、手机号、部门、职务。
5. 选「**状态**」(启用 / 停用,默认启用)。
6. 点「保存」→ 新建成功。
### 三、编辑用户
1. 点行内「**编辑**」。
2. 账号(登录名)**不可改**;可改姓名、角色、手机号、邮箱。
3. 点「保存」。
### 四、重置密码
- 点行内「**重置密码**」→ 确认 → 重置为默认密码 `123456`
### 五、停用 / 启用
- 点行内「**停用** / **启用**」切换;停用后该账号无法登录。
### 六、删除
- 点行内「**删除**」→ 弹强警告(「删除后无法恢复,该用户关联的项目 / 会议 / 报名数据将受影响」)→ 确认删除。
- **不能删除自己**(自己账号的「删除」置灰)。
### 七、注意事项
- 6 种角色:后台管理员、合规人员、评审专家、执行人、支持方、项目负责人。
- 「子账号」必须挂到**已有主账号的单位**下(下拉只列出有主账号的单位)。
- 重置密码固定为 `123456`,建议提醒使用人首次登录后自行修改。
- 删除不可恢复,且会影响该用户关联的项目 / 会议 / 报名数据,谨慎操作。
---
## Q3. 如何管理专项计划
> 「专项计划」是门户对外展示的栏目,支持**富文本**或**上传文件**两种内容形式。后台管理员在此维护,访客在门户详情页查看。
### 一、进入与列表
1. 点击左侧菜单「**网站管理**」→「专项计划管理」。
2. 列表展示:ID、标题、类型(富文本 / 上传文件)、排序、状态(启用 / 停用)、更新时间。
3. 可按标题、类型、状态筛选。
### 二、新建专项计划
1. 点「**新增**」进入新建页。
2. 填写字段:
- **标题**。
- **内容类型**:**富文本** 或 **上传文件**——
- 富文本 → 在「正文」富文本编辑器里录入内容。
- 上传文件 → 上传文件作为内容。
- **排序**(数字越小越靠前)。
- **状态**(启用 / 停用)。
- **备注**(内部备注)。
3. 点「保存」→ 返回列表。
### 三、编辑
- 列表点「**编辑**」进入编辑页,可改全部字段(标题、类型、正文或文件、排序、状态、备注)。
- 切换内容类型会**清空另一字段**(富文本 → 文件会清空正文,反之清空文件),避免脏数据。
### 四、预览
- 列表点「**预览**」→ 新窗口打开门户的专项计划详情页(公开页 `/special-plan/{id}`)。
- 已停用的项「预览」置灰。
### 五、删除
- 列表点「**删除**」→ 确认 → 删除。
### 六、注意事项
- 专项计划对外展示在门户,预览打开的是公开详情页。
- 富文本 / 上传文件二选一;切换类型会清空已填的另一侧内容。
- 状态在「编辑」页里切换(列表页无独立的启用 / 停用按钮)。
- 排序数字越小越靠前。
---
## Q4. 如何管理用户协议 / 隐私政策
> 「协议管理」维护两条**固定协议**:**用户协议(agreement**和**隐私政策(privacy)**——二者各一条,只能编辑内容与状态,不能新增或删除。
### 一、进入与列表
1. 点击左侧菜单「**网站管理**」→「协议管理」。
2. 列表展示:ID、标题、类型(用户协议 / 隐私政策)、状态(启用 / 停用)、更新时间。
3. 可按类型、标题、状态筛选。
### 二、编辑协议
1. 点行内「**编辑**」进入编辑页。
2. 字段:
- **标题**。
- **类型**(用户协议 / 隐私政策,编辑时**不可改**)。
- **状态**(启用 / 停用)。
- **正文**(富文本)。
- **备注**(内部备注)。
3. 点「保存」。
### 三、预览
- 点行内「**预览**」→ 新窗口打开门户协议正文页。已停用的项「预览」置灰。
### 四、这两个协议在哪里展示
- 展示在**三个注册页**:专家注册、执行单位(供应商)注册、支持方注册——页面底部「我已阅读并同意」区各有「《用户协议》」「《隐私政策》」两个链接。
- 访客点击后,新窗口打开门户公开文章页:
- `/article/agreement` → 用户协议正文
- `/article/privacy` → 隐私政策正文
- **只有「启用」状态的协议会被注册页展示**(停用后注册页不再显示对应链接,后台预览也置灰)。
### 五、注意事项
- 用户协议、隐私政策各**固定一条**,只能编辑,不能新增 / 删除(列表页无「新增」「删除」入口)。
- 编辑页「类型」不可改。
- 正文为富文本,支持格式排版。
- 修改启用状态会直接影响注册页协议链接的显示。
+105
View File
@@ -0,0 +1,105 @@
# 医生(评审专家)用户手册
> 本手册面向「医生」角色(评审专家)。内容基于系统实际页面整理。
## 角色说明
医生是项目的发起者(评审专家),负责**投稿策划方案**。策划方案经合规管理员审核通过后立项,之后医生才能看到自己报名的项目和参与的会议。
## 菜单概览
登录后左侧菜单(医生角色):
- 首页
- 我的项目策划方案(投稿入口)
- 我参与的会议(资质审核通过后才显示)
- 我报名的项目(资质审核通过后才显示)
- 消息通知
- 账号信息
---
## Q1. 如何投稿策划方案
> 医生通过「投稿」提交策划方案(含设计文件),审核通过后立项。
### 一、进入投稿列表
1. 点击左侧菜单「**我的项目策划方案**」。
2. 列表展示:投稿名称、项目方向、项目类别、形式、设计文件、状态、是否结算、项目编号、创建时间、审核意见、备注。
### 二、新建投稿
1. 点击「**新建投稿**」按钮。
2. 填写字段:
- 策划方案名称
- 项目方向(下拉选择)
- 项目形式(线上 / 线下 / 线上+线下 / 其他)
- 项目类别(下拉选择)
- 设计文件
- 备注
3. 点击「**保存**」→ 存为草稿(状态「未提交」)。
### 三、提交投稿
1. 保存后回到列表,点击该行「**提交**」按钮。
2. 确认提交 → 状态变为「待审核」,进入合规审核流程。
3. 也可勾选多条草稿 → 点击「**批量提交**」一次性提交多条。
### 四、查看审核结果
- 列表「状态」列显示当前状态:**未提交 / 待审核 / 通过 / 拒绝**。
- 「审核意见」列显示合规管理员的审核意见。
- 审核**通过**后立项,列表会生成「项目编号」。
### 五、注意事项
- 只有「未提交」「拒绝」状态的投稿可以**修改 / 提交**;「待审核」「通过」状态锁定,不可修改。
- 被**拒绝**后,可修改内容后重新提交(重新进入审核)。
---
## Q2. 如何参与会议并签署劳务
> 会议执行后,医生作为参会人需要「签署劳务」:填写劳务信息并手写签名,平台自动生成 PDF 劳务协议归档。
### 一、参与会议(查看会议信息)
1. 点击左侧菜单「**我参与的会议**」(资质审核通过后才显示)。
2. 列表展示:项目编号、会议名称、当前阶段、日程、邀请函、签署状态。
3. 可点击「日程」查看 / 下载**日程海报**,「邀请函」查看 / 下载**会议邀请函**。
### 二、签署劳务(三步)
**进入签署:**
1. 在「我参与的会议」列表,找到要签署的会议,点击行内「**签署劳务**」。
2. 弹出**二维码**(也可点「复制链接」),用手机扫码或打开链接,自动登录并进入签署页。
**第一步:填写劳务信息**
在手机上填写:
- 手机号、姓名、工作单位、科室、医务职称
- 账户名称(持卡人姓名)、身份证号、银行卡号、银行名称、开户银行(支行)、开户银行地址、银行详细地址
- 身份证附件(正反面)
- 劳务形式(多选)
填完后点「下一步」。
**第二步:签署协议**
1. 页面显示劳务协议正文。
2. 底部点「签名确认」→ 弹出**手写签名画板**,在画板上手写姓名(可「清除」重写)。
3. 确认签名 → 点「提交」。
**第三步:签字成功**
- 提示签字成功,系统自动生成 PDF 劳务协议并归档。
### 三、注意事项
- 签署状态在列表中区分「已签署 / 未签署」;已签署后点「**查看劳务**」可查看 / 下载签字 PDF。
- 手机扫码后**无需再次登录**。
- 身份证正反面必须上传。
- 再次打开已签署的签署链接,会直接展示已签协议 PDF。
+190
View File
@@ -0,0 +1,190 @@
# 执行方(执行单位)用户手册
> 本手册面向「执行方」角色(承接项目并执行会议的单位)。内容基于系统实际页面整理。
## 角色说明
执行方是承接项目、执行会议的单位(供应商)。账号分两种:
| 账号类型 | 权限 |
|---|---|
| **主账号** | 查看本单位承接的全部项目;可分配项目、建会、上传材料、人员管理等 |
| **执行人员** | 只能查看被分配的项目;仅查看,不参与分配 |
## 菜单概览
登录后左侧菜单(执行方角色):
- 首页
- 我的项目策划方案(投稿入口)
- 项目列表(承接的项目)
- 会议列表(会议管理)
- 人员管理(仅主账号可见)
- 消息通知
- 账号信息
---
## Q1. 如何分配项目(把项目分配给执行人员)
> 「分配」是指**主账号**把承接的项目指派给团队下的「执行人员(子账号)」,由该执行人员负责该项目。执行人员本身不能发起分配。
### 一、单个项目分配
1. 点击左侧菜单「**项目列表**」。
2. 找到目标项目,点击行内「**分配**」链接。
3. 弹窗中选择「分配给执行人」(下拉支持搜索,可多选;管理员账号显示但不可选)。
4. 点击「确定」,完成分配。
### 二、批量分配
1. 在列表首列勾选多个项目。
2. 点击上方工具栏「**项目分配**」按钮。
3. 弹窗中显示「已选项目数」与「项目编号预览」,选择执行人(可多选)。
4. 点击「确定」,批量分配完成。结果按项目逐条反馈(成功 N / 总数,失败项列出原因)。
### 三、注意事项
- 分配对象是「执行人员」——来自「人员管理」中本单位团队下的**子账号**;管理员不可被分配。
- 重新分配会**覆盖**该项目原已分配的执行人员。
- 执行人员登录后,列表页**不会显示**「项目分配」按钮与勾选列,只能查看自己被分配的项目。
- 已结题的项目不再显示「分配」入口。
---
## Q2. 如何建会(新建会议)
> 「建会」是指为承接的项目创建一场具体的会议(第 N 期)。主账号与执行人员只要能看到项目,都可建会。
### 一、进入建会
1. 点击左侧菜单「**项目列表**」,找到要建会的项目。
2. 点击行内「**建会**」链接,进入「新建会议」页。
**建会入口有两个限制:**
- **场次上限**:某项目已建会议数达到分配场次时,「建会」按钮置灰(悬停提示「已建会议数已达分配场次上限」)。
- **结题项目**:已结题的项目不显示「建会」入口。
### 二、填写会议信息
页面上方是**只读快照**(项目编号、项目名称、支持单位、总场次/总期数、项目创建人、项目创建时间),下方填写:
| 字段 | 说明 |
|---|---|
| 会议名称 | 执行方**不可改**,自动取项目名称 |
| 期数 | 本次会议是项目的第几期 |
| 会议开始时间 | 会议开始日期时间 |
| 会议结束时间 | 会议结束日期时间 |
| 会议地点 | 会议举办地点 |
| 备注 | 补充说明 |
### 三、保存
点击「**保存**」→ 创建成功,自动跳转到会议列表。
### 四、注意事项
- 「总场次/总期数」对执行方 = 分配给本单位的场次口径。
---
## Q3. 如何上传并提交会议材料
> 会议材料分「**劳务**」「**会务**」两条轨,独立上传、独立提交、独立审核。完整审核链路:**执行方提交 → 合规审核(一审)→ 支持方监察(二审)**。
### 一、进入材料管理
1. 点击左侧菜单「**会议列表**」,找到要上传材料的会议。
2. 点击行内「**上传材料**」,进入会议详情页的「材料管理」区。
### 二、上传劳务材料(劳务材料 tab)
1. **参会人管理**:点「+ 新增参会人」按手机号添加医生(姓名 / 手机号 / 医院 / 科室 / 职称 / 银行卡 / 身份证等),或「批量导入」。添加后可「邀请参会」「推送电子签」让医生完成签署。
2. **劳务协议**:点「下载目录」拿空目录模板,放入各参会人签好的协议后压缩,点「上传协议」回填(按「序号_姓名」逐个对应)。
3. **专家照片**:同上——下载目录 → 放照片 → 压缩上传回填。
4. **劳务材料**(逐个上传):
- 企业权益
- 签到表(会议现场签到表,可扫码拍照)
- 前全景(会议现场前全景,带定位框,扫码拍照)
- 后全景(会议现场后全景,扫码拍照)
5. **日程海报**:上传会议日程海报。
页面底部自动汇总「**劳务费合计**」。
### 三、上传会务材料(会务材料 tab)
1. **发票表**:上传含发票的材料后,系统自动识别发票号、开票时间、金额并汇总展示。
2. **会务材料**(逐个上传):物料制作、酒店、大交通、小交通、执行费、设计费、其他、总结算单、总发票(每项都有提示:需要什么照片 / 盖章结算单 / 发票)。
3. **打包上传**:点「下载目录」拿空目录模板,把各类材料放进对应子目录后压缩成 zip,点「上传会务材料」一次性回填(单个目录多文件会自动打包成一个 zip)。
页面底部自动汇总「**会务费合计**」,上传总发票后以总发票金额为准。
### 四、提交材料
上传完成后,点底部提交按钮:
- 「**提交劳务**」:仅提交劳务轨。
- 「**提交会务**」:仅提交会务轨。
- 「**提交全部**」:两轨一起提交。
提交前系统会**自动保存**所有未保存的内容,然后进入审核流程,提示「材料已提交,待合规审核」。
### 五、查看审核进度
- 详情页右侧「**材料审核**」时间轴,按轮次记录「执行方提交 → 合规审核 → 支持方监察」的通过 / 拒绝结果。
- 被拒绝的轨会退回,需重新修改上传后再提交。
### 六、注意事项
- 只有「**已执行**」且「**未冻结**」的会议才能提交材料;未执行会议不能提交。
- 材料一经提交进入审核,对应轨即**锁定**,不能再改(除非被拒绝退回)。
- 「保存」按钮仅在材料未提交 / 被退回时可用;两轨都进入审核后锁定。
- 劳务 / 会务两轨可独立提交、独立被审,互不影响。
---
## Q4. 如何管理团队人员(执行人员)
> 执行方主账号可维护本单位团队人员,其中**子账号就是「执行人员」**——即 Q1「分配项目」里可被分配的对象。此菜单仅主账号可见。
### 一、进入人员管理
1. 点击左侧菜单「**人员管理**」(仅主账号可见,执行人员无此菜单)。
2. 列表展示:姓名、手机号、所属公司、部门、职务、角色、状态。
- 角色:`管理员`(主账号)/ `执行人员`(子账号)。
- 状态:`正常` / `禁用`
3. 可按姓名、手机号、所属公司、部门、职务筛选。
### 二、新建人员(执行人员 / 子账号)
1. 点击「**新建人员**」→ 进入独立新建页。
2. 填写字段:
- 用户名(子账号登录用户名)
- 初始密码
- 姓名、手机号
- 所属公司(由主账号注册时自动带出,只读不可改)
- 部门、职务、状态(正常 / 禁用)
3. 点击「**保存**」。新建成功后弹窗显示子账号**账号 + 初始密码**(仅本次显示,请记录后告知使用人)。
### 三、编辑人员
- 列表「更多 → 编辑」进入编辑页;可改姓名、手机号、部门、职务、状态,**用户名和密码不可改**。
### 四、批量导入
1. 点击「**批量导入**」→「批量导入模板下载」下载 Excel 模板。
2. 按模板填写后选择文件 →「开始导入」。
3. 导入完成后弹窗逐行展示成功 / 失败明细(含失败原因)。
### 五、重置密码 / 禁用 / 恢复
- **重置密码**:一键重置为默认密码 `123456`
- **禁用 / 恢复**:禁用后该账号无法登录;恢复后重新启用。
- 主账号**不能**禁用自己。
### 六、注意事项
- 子账号= 执行人员,就是 Q1「项目分配」里可被分配的对象。
- 已禁用的执行人员**不会**出现在「项目分配」的候选列表里(Q1)。
- 新建时填的用户名 / 密码,就是该执行人员登录系统的账号。
+96
View File
@@ -0,0 +1,96 @@
# 主要流程说明
> 本章梳理平台整体的**项目全生命周期**主线与支撑环节,帮助读者理解业务如何流转、各角色在哪个环节做什么。各角色的具体操作见对应手册(后台管理员 / 合规人员 / 医生 / 执行方 / 支持方 / 项目负责人)。
## 一、角色与账号体系
| 角色 | 在业务里的位置 |
|---|---|
| 后台管理员 | 系统维护 + 全局兜底(账号 / 基础数据 / 网站内容 / 单位) |
| 合规人员 | 核心审核与项目管理(合规管理员 / 项目经理) |
| 医生(评审专家) | 项目发起者:投稿、参与会议、签署劳务 |
| 执行方 | 承接项目、建会、上传材料 |
| 支持方 | 申办方:监察二审、查看项目 |
| 项目负责人 | 纯只读,查看自己负责的项目 |
- **账号类型**:主账号(注册即新建单位)与 子账号(挂靠已有单位)。支持方 / 执行方按主账号 / 子账号区分权限;医生 / 后台管理员 / 项目负责人 / 合规人员是无企业归属的账号。
- **门户匿名访问**:首页、项目公示、3 个注册页、登录、协议、专项计划,均无需登录即可访问。
## 二、主线:项目全生命周期
```
① 医生注册·资质审核 → ② 医生投稿·立项 → ③ 项目创建·分配·公示
→ ④ 公示意向·报名 → ⑤ 执行方建会·上传材料 → ⑥ 医生签署劳务
→ ⑦ 材料审核·结算·完结
```
**① 医生(评审专家)注册与资质审核**
- 医生在门户「专家注册」提交执业证书、职称证明。
- 审核(合规人员「专家审核」或后台管理员「专家管理」)通过后,生成医生账号,医生解锁「我参与的会议 / 我报名的项目」。
- **后台管理员**:审核专家,或「新建专家」直接通过 + 建账号。
**② 医生投稿 → 立项**
- 医生在「我的项目策划方案」新建投稿 → 提交。
- 合规人员在「策划方案管理」审核,通过时**填写项目编号** = 立项。
- **后台管理员**:维护「项目类别」下拉选项(供医生投稿选择)。
**③ 项目创建、分配与公示**
- 合规人员新建项目(项目信息 + 角色劳务 + 公告文件,并指定项目负责人)→ 分配支持单位(1 个)+ 执行单位(多个,各分场次 / 金额)。
- 「保存并发布公告」→ 门户「项目公示」对外可见。
- **后台管理员**:全局兜底查看项目 / 会议;可**删除项目**(合规人员无删除权)。
**④ 公示意向与报名**
- 门户公示详情页按 4 类公告(专家参与邀请函 / 项目公益支持函 / 项目通知 / 日程)展示。
- 访客或登录用户可:医生「立即报名」、支持方「公益支持」(支持意向)、执行方「项目执行申请」(执行意向)。
- 意向会被系统记录,合规人员在「支持意向 / 执行意向」查看与导出。
- **后台管理员**:基本不介入。
**⑤ 执行方建会与上传材料**
- 执行方在「项目列表」建会(第 N 期,受分配场次上限约束)。
- 上传「劳务材料」(参会人 / 劳务协议 / 签到表 / 现场全景 / 日程海报)与「会务材料」(发票自动识别 / 各类费用 / 总结算单 / 总发票),页面自动汇总劳务费 / 会务费。
- **后台管理员**:会议管理兜底查看,不参与上传。
**⑥ 医生签署劳务(生成 PDF**
- 执行方「邀请参会 / 推送电子签」→ 医生手机扫码(免登录)完成三步签署:填劳务信息 → 手写签名 → 生成 PDF 归档。
- PDF 按「劳务协议模板」自动填入姓名、手机号、会议名称、费用总额等信息。
- **后台管理员**:配置「劳务协议模板」(默认模板、启用 / 禁用),影响生成的劳务协议正文。
**⑦ 材料审核 → 结算 → 完结**
- 执行方提交材料 → 合规一审(劳务 / 会务分轨,可独立通过 / 退回)→ 支持方监察二审 → 结算(上传付款凭证)→ 完结。
- **后台管理员**:会议管理兜底查看审核进度;审核动作由合规人员 / 支持方完成。
## 三、支撑环节
**① 账号与单位体系**
- 支持单位 / 执行单位在门户注册 → 生成单位主账号。
- 后台管理员 / 合规人员维护单位、单位下子账号:支持方子账号 = 监察员,执行方子账号 = 执行人员。
- 新增 / 编辑 / 批量导入单位、指定「机构管理员」(更换主账号)为后台管理员专属;合规人员只能管理单位下人员。
**② 基础数据(科室 / 职称 / 项目类别)**
- 供医生注册选择科室 / 职称、医生投稿选择项目类别。
- 后台管理员专属维护(新增、编辑、删除、启停用)。
**③ 网站内容(协议 / 专项计划 / 劳务协议模板)**
- 协议、专项计划在门户对外展示;劳务协议模板用于医生签署时生成 PDF。
- 后台管理员专属维护。
## 四、各角色职责速查
| 角色 | 主要职责 |
|---|---|
| 医生(评审专家) | 注册资质、投稿策划方案、参与会议、签署劳务 |
| 合规人员 | 审核立项、建项目分配、材料一审、专家审核、结算完结 |
| 执行方 | 承接项目、建会、上传材料、提交审核 |
| 支持方 | 监察二审、查看项目 |
| 项目负责人 | 只读查看自己负责的项目 |
| 后台管理员 | 系统维护 + 全局兜底(账号 / 基础数据 / 网站内容 / 单位) |
+63
View File
@@ -0,0 +1,63 @@
# 项目负责人用户手册
> 本手册面向「项目负责人」角色。内容基于系统实际页面整理。
## 角色说明
项目负责人是项目的负责人(**纯只读账号**),用于查看被指定为自己负责的项目及其执行情况。账号无企业 / 机构归属、无主账号 / 子账号之分,数据按「项目负责人 = 自己」隔离:
- 只能看到**自己负责的项目**,及其项目下的**会议**
- **纯只读**:不提供任何写操作(新建 / 编辑 / 分配 / 审核 / 结算 / 评分 / 删除等)
- 项目负责人由合规人员在**新建项目**时指定(见《合规人员手册》Q2)
## 菜单概览
登录后左侧菜单(项目负责人角色):
- 首页
- 项目列表
- 会议列表
- 账号信息
---
## Q1. 如何查看我负责的项目 / 会议
> 项目负责人是只读角色:只能查看被指定为自己负责的项目及其会议,不能做任何写操作(新建、编辑、分配、审核、结算、评分等)。
### 一、查看我负责的项目
1. 点击左侧菜单「**项目列表**」。
2. 列表展示:项目编号、项目名称、总场次/总期数、已执行、未执行、总金额、可用金额、已支付劳务费、已支付会务费、执行单位评分(合规/支持)、支持单位、服务机构、项目形式、是否结题、项目开始/结束时间。
3. 可按支持单位、服务机构、项目编号、项目名称、项目形式、项目时间、是否结题、是否结算筛选。
4. 数据隔离:仅显示「项目负责人 = 自己」的项目(后端按项目负责人字段隔离)。
### 二、查看项目详情
- 点击项目名称或行内「**查看**」→ 进入项目详情页(只读),展示:
- **项目信息**:项目编号、项目名称、总场次/总期数、总金额、管理费及税金、项目形式、项目开始时间、项目结束时间、是否招标项目、项目负责人、支持单位、执行单位列表(名称 / 场次 / 金额)。
- **角色劳务设置**:各会议角色的劳务金额。
- **支持单位监督员**:该项目支持单位下的监督员名单。
### 三、从项目跳到会议 / 看评分
- 点击列表「总场次 / 已执行 / 未执行」列的数字 → 跳到会议列表,并按对应范围(全部 / 已执行 / 未执行)自动筛选。
- 点击「执行单位评分(合规 / 支持)」列 → 弹窗查看该项目的 4 维度评分明细与平均分(只读)。
### 四、查看会议列表
1. 点击左侧菜单「**会议列表**」(或从项目列表点场次数字跳入)。
2. 列表展示:项目编号、会议 ID、项目形式、会议名称、会议开始/结束时间、总期数、期数、当前阶段、备注。
3. 可按项目编号、会议 ID、会议名称、期数、会议时间、项目形式、当前阶段、备注筛选。
4. 会议同样按「项目负责人 = 自己」隔离,只显示自己负责项目下的会议。
### 五、查看会议详情
- 点击会议名称或行内「**查看**」→ 进入会议详情页(只读),仅展示会议信息、材料与审核进度,无任何操作按钮。
### 六、注意事项
- 项目负责人是**纯只读**账号:项目列表、会议列表、详情页均不显示任何「新建 / 编辑 / 分配 / 审核 / 结算 / 评分 / 删除」等写操作按钮。
- 只能看到「项目负责人 = 自己」的项目;他人的项目不可见。
- 「项目负责人」在新建项目时由合规人员指定(见《合规人员手册》Q2「如何创建项目并分配支持单位 / 执行单位」)。
- 侧栏无「消息通知」菜单项;消息可从首页的通知模块进入查看。
+300
View File
@@ -0,0 +1,300 @@
# 合规人员(合规管理员)用户手册
> 本手册面向「合规人员」角色(合规管理员 / 项目经理)。内容基于系统实际页面整理。
## 角色说明
合规人员是平台的核心审核与项目管理角色,负责贯穿「投稿 → 立项 → 执行 → 审核 → 结算」全流程:
- 审核医生投稿的**策划方案**(通过后立项)
- **项目管理**(新建、分配支持方/执行方、删除、导出)
- **会议管理**(建会、材料合规审核·一审、结算、完结)
- **专家资质审核**(医生注册后是否放行)
- **支持/执行单位管理**、**支持/执行意向查看**、账号与消息
## 菜单概览
登录后左侧菜单(合规人员角色):
- 工作台
- 策划方案管理
- 项目管理
- 会议管理
- 专家审核
- 支持单位管理
- 执行单位管理
- 支持意向
- 执行意向
- 消息通知
- 账号管理
---
## Q1. 如何审核策划方案(立项)
> 医生通过「投稿」提交策划方案(含设计文件),合规人员在此审核。**审核通过即「立项」**——通过时需手动填写项目编号,之后该方案进入「项目管理」成为正式项目;退回则医生可修改后重新提交。
### 一、查看策划方案列表
1. 点击左侧菜单「**策划方案管理**」。
2. 列表展示:策划方案名称、项目方向、项目类别、项目形式、设计文件、状态、是否结算、项目编号、提交时间、备注。
3. 可按项目编号、策划方案名称、项目方向、项目类别、状态、是否结算、备注筛选。
### 二、查看设计文件
- 列表「设计文件」列可点「**查看**」(新窗口预览 PDF)或「**下载**」。
- 审核前先查看设计文件,确认方案内容。
### 三、单个审核(通过 / 退回)
1. 找到状态为「**待审核**」的行,点击行内「**审核**」。
2. 弹窗中:
- 选择审核结果「**通过**」或「**退回**」。
- 选「通过」时,需填写「**项目编号**」(即立项后该项目的编号)。
- 审核意见(会回显给医生在「审核意见」列看到)。
3. 点击「确认」:
- 通过 → 状态变「通过」,生成项目编号,立项成功。
- 退回 → 状态变「拒绝」,医生可修改后重新提交。
### 四、批量退回
1. 勾选多条「待审核」的方案。
2. 点击「**批量审核**」→ 弹窗只允许**退回**,填审核意见。
3. 点击「确认退回」→ 批量应用(非待审核的会被跳过并提示)。
### 五、修改策划方案
- 点击行内「**修改**」,进入修改页,可改:项目规划(项目方向)、投稿名称、学科方向、形式、项目类别、设计文件、备注(项目编号只读不可改)。
### 六、结算
- 状态为「通过」且「未结算」的行,显示「**结算**」按钮;点击确认即标记为已结算。
- 也可勾选多条「通过且未结算」的方案 →「**批量结算**」。
### 七、注意事项
- 「退回」与「拒绝」是同一状态,只是不同入口的叫法不同。
- 审核**通过时需填写项目编号**,是立项的关键一步;退回时无需填。
- 只有「待审核」状态的方案才有「审核」按钮;「通过」且未结算的才有「结算」按钮。
- 审核意见会回显给医生,退回时建议写明原因。
---
## Q2. 如何创建项目并分配支持单位 / 执行单位
> 项目「新建」和「分配」是两个独立页面:先新建项目(填项目信息 + 角色劳务 + 公告文件),再到「项目分配」页面指定**支持单位**(一个)和**执行单位**(可多个,每个分场次 + 金额)。
### 一、新建项目
1. 点击左侧菜单「**项目管理**」→「**新建项目**」按钮,进入新建页。
2. **项目信息**
- 项目名称、项目编号
- 项目负责人(下拉选择)
- 是否招标项目(是 / 否)
- 项目形式(线上 / 线下 / 线上+线下 / 其他)
- 总场次 / 总期数、总金额(元)、管理费(元)
- 开始时间、结束时间
3. **角色劳务设置**:为每种会议角色(主席 / 主持 / 讲者 / 点评·评审 / 讨论 / 其他)配置劳务金额;可「+ 增加角色」或「删除角色」。
4. **公告文件**:上传邀请函、支持函、通知、日程(PDF / 图片)。
5. 底部按钮:
- 「**保存**」→ 暂存(不对外发布)。
- 「**保存并发布公告**」→ 保存并发布到公示(外部可见)。
### 二、分配支持单位 / 执行单位
**入口:**「项目管理」列表页——单个项目点行内「**分配**」;或多个项目勾选后点顶部「**项目分配**」(批量)。
1. **选择支持单位**:下拉搜索并选择一个支持单位(一个项目一个支持方)。
2. **添加执行单位**:在表格里「+ 增加执行方」,每行选执行单位 + 填「场次」「金额」(可加多个执行单位,同一项目不能重复选同一执行单位)。
3. **提交截止(天)**:执行方提交材料的自然日期限。
4. 页面顶部实时显示「项目总场次 / 已分配场次」「总金额 / 已分配金额 / 可用金额」,**超出会红色告警**,需调整到不超。
5. 点「**保存**」完成分配。
### 三、注意事项
- 支持单位只能选**一个**;执行单位可**多个**,按「场次 + 金额」分别分配。
- 已分配场次 / 金额总和**不得超过**项目总场次 / 总金额,否则无法保存。
- 已结题的项目**不能分配**(行内「分配」置灰,批量会跳过已结题项)。
- 已禁用的支持单位 / 执行单位仍显示但置灰,不可选。
- 分配后,执行单位在自己「项目列表」能看到该项目并建会(见执行方手册)。
---
## Q3. 如何审核会议材料(合规一审)并结算
> 执行方提交材料后,先到**合规审核(一审)**——由合规人员对「劳务」「会务」两轨材料分别通过 / 退回;两轨都通过后,合规人员补充付款凭证、结算、完结。完整的链路:**执行方提交 → 合规一审 → 支持方监察二审 → 结算 → 完结**。
### 一、进入会议审核
1. 点击左侧菜单「**会议管理**」。
2. 列表中,处于「**待合规审核**」状态的会议,行内显示黄色「**审核**」链接;点击进入会议详情页。
3. 详情页底部「材料管理」区,会按轨显示「**审核劳务**」「**审核会务**」「**审核全部**」按钮(哪一轨到了待审状态,对应按钮才亮)。
### 二、审核材料(一审,分轨)
1. 先切换到「劳务材料」「会务材料」tab,检查执行方上传的材料(参会人、劳务协议、签到表、发票、结算单等)。
2. 点「审核劳务」/「审核会务」/「审核全部」,弹出审核窗口:
- 对「劳务材料」「会务材料」分别选 **通过****拒绝**
- 填写审核意见(退回时建议写明原因,将退回执行方整改)。
3. 点「确定」提交,提示「审核完成」。
### 三、批量审核
- 会议列表勾选多个「待合规审核」的会议 →「**批量审核**」→ 选「通过 / 退回」+ 填意见(退回时意见需填写)→ 确定,逐条返回成功 / 失败明细。
### 四、结算 / 完结
1. **结算**:两轨材料都「通过」后,会议进入待结算。点「结算」→ 确认「已上传劳务 / 会务付款凭证」→ 结算完成。
2. **完结**:已结算的会议,在「更多 → 完结」或详情页「完结」按钮,确认后流程终止。
### 五、上传付款凭证 / 下载材料
- **付款凭证**:详情页「劳务凭证」「会务凭证」tab 上传(结算前需补充)。
- **下载材料**:列表行内「会务下载」「劳务下载」打 zip 下载;也可勾选多个会议「批量下载会务 / 批量下载劳务」。
### 六、注意事项
- 一审是**分轨**的:劳务、会务可独立通过 / 拒绝,互不影响。
- **拒绝会退回执行方**重新提交,重新提交后再次进入合规一审(重新走一轮)。
- 只有「两轨都通过」才能结算;结算前建议先上传付款凭证。
- 「审核」与「结算」在列表互斥出现:待审显示「审核」,两轨通过且未结算才显示「结算」。
- 冻结的会议可在「更多 → 解冻」重新放开(解冻后提交截止时间重新计算)。
- 二审(支持方监察)在合规一审通过后自动流转,见支持方手册。
---
## Q4. 如何审核专家(医生资质)
> 「专家」即医生(评审专家)。医生注册后提交资质材料,合规人员在此审核;**审核通过后医生才能看到「我参与的会议」「我报名的项目」**,进入完整业务流程。
### 一、进入专家审核
1. 点击左侧菜单「**专家审核**」。
2. 列表展示:姓名、手机号、工作单位、科室、职称、执业证书、职称证明、审核状态、启用状态、审批时间、审批人。
3. 可按姓名、手机号、工作单位、审核状态筛选(未提交 / 待审核 / 通过 / 拒绝)。
### 二、查看资质材料
- 「执业证书」「职称证明」列可点「查看」(图片预览)或「下载」。
- 审核前先核对证书、证明是否齐全有效。
### 三、单个审核(通过 / 拒绝)
1. 找到状态为「待审核」的专家,点行内「**审核**」。
2. 弹窗中选「**通过**」或「**拒绝**」,填写审核意见(拒绝时建议写明原因)。
3. 点「确认」→ 状态更新,系统记录审批人与审批时间。
4. 已拒绝的专家,行内「已拒绝」可查看拒绝时间 / 审批人 / 拒绝意见。
### 四、批量审核
- 勾选多个专家 →「**批量审核**」→ 确认后批量通过(意见记为「批量通过」)。
### 五、新建专家(可选)
- 「新建专家」录入医生信息(姓名 / 手机号 / 工作单位 / 科室 / 职称 / 执业证书 / 职称证明 / 身份证 / 银行卡等),**新建即自动通过审核**,并生成登录账号(初始密码 = 手机号,弹窗提示)。
### 六、注意事项
- 审核状态:未提交 / 待审核 / 通过 / 拒绝;只有「待审核」需要处理。
- **通过是医生解锁完整功能的闸门**——未通过前医生看不到「我参与的会议」「我报名的项目」。
- 拒绝会回显意见给医生,便于其修改后重新提交。
- 新建专家 = 自动通过审核 + 创建登录账号(医生角色)。
---
## Q5. 如何管理支持单位 / 执行单位
> 「支持单位管理」「执行单位管理」是两个镜像菜单,分别维护**支持单位**(申办方)与**执行单位**(供应商)的单位信息及单位下人员。合规人员对单位本身只有**查看 / 人员管理 / 启用禁用**权限;**新增、编辑、批量导入单位是后台管理员专属**。单位下的人员则可新建、导入、编辑、禁用、重置密码。
### 一、查看单位列表
1. 点击左侧菜单「**支持单位管理**」或「**执行单位管理**」。
2. 列表展示:单位名称、单位地址、税号/统一社会信用代码、合作状态(正常 / 禁用)、创建日期、联系人、联系电话。
3. 可按单位名称、税号/统一社会信用代码、合作状态筛选。
4. 点行内「**查看**」弹窗展示单位完整信息(含「公司类型」标签:支持方 / 执行方)。
### 二、管理单位下人员
1. 点行内「**人员管理**」→ 跳转到该单位的人员列表(面包屑显示「… / 单位名」)。
2. 人员列表展示:姓名、手机号、(执行单位另有「邮箱」列)、企业名称、部门、职务、状态;可按姓名、手机号、企业名称、部门、职务筛选。
3. 合规人员可对人员执行以下操作:
- **查看**:进入人员详情(只读)。
- **编辑**:改姓名、手机号、部门、职务、状态(用户名 / 密码不可改)。
- **新建人员**:录入子账号(用户名 / 初始密码 / 姓名 / 手机号 / 部门 / 职务 / 状态),保存后弹窗显示「账号 + 初始密码」。
- **批量导入**:下载模板 → 按模板填写 → 选择文件导入 → 弹窗逐行展示成功 / 失败明细。
- **启用 / 禁用**:禁用后该账号无法登录;恢复后重新启用。
- **重置密码**:一键重置为默认密码 `123456`
### 三、启用 / 禁用单位
- 行内「**禁用**」:禁用后该企业**主账号无法登录,企业下子账号也将被拦截**(弹窗有确认提示)。
- 已禁用单位行内显示「**恢复**」,点击即恢复为正常。
### 四、注意事项
- 合规人员**不能新增 / 编辑 / 批量导入单位**,这些按钮仅后台管理员可见。
- 「更换机构管理员」开关仅后台管理员可见,合规人员无法指定某人员为该机构主账号。
- 支持单位与执行单位是两个独立菜单、两套独立数据,管理入口与操作方式完全一致,区别仅是「公司类型」标签(支持方 / 执行方)。
- 禁用单位是「一刀切」:该单位主账号及旗下所有子账号都会被拦截登录,恢复后一并放开。
- 单位下新建的子账号:支持单位 = **监察员**,执行单位 = **执行人员**——即支持方 Q1「分配监察员」、执行方 Q1「分配执行人」里可被分配的对象。
---
## Q6. 如何查看支持意向 / 执行意向
> 「支持意向」「执行意向」是**公示公告对外匿名征集**的两个意向列表——外部访客(无需登录)在公示页填写「我有支持意向」或「我有执行意向」,这些意向会被系统记录,合规人员在此集中查看并导出。当前页面为**只读 + 导出**,不提供审核 / 删除操作。
### 一、进入意向列表
1. 点击左侧菜单「**支持意向**」或「**执行意向**」。
2. 列表展示:项目编号、意向项目名称、姓名、工作单位、部门、职务、手机号、**账号状态**、创建时间。
3. 「账号状态」标记该意向人是否已注册为系统账号:
- **存在**(绿)→ 已是平台账号(可对应到具体单位 / 人员)。
- **不存在**(黄)→ 尚未注册。
### 二、筛选
- 可按项目编号、意向项目名称、姓名、工作单位、手机号筛选。
### 三、导出
- 点「**导出**」→ 按**当前筛选条件**全量下载 Excel(`支持意向_日期.xlsx` / `执行意向_日期.xlsx`)。
### 四、注意事项
- 数据来自公示页的**匿名意向**(访客无需登录即可填写)。
- 「账号状态」用于识别该意向人是否已有账号,便于后续对接;未注册的仅留下姓名 / 单位 / 手机号等联系方式。
- 当前页面**无审核 / 删除操作**(操作列已关闭),仅提供查看与导出。
- 支持意向 / 执行意向是两个独立列表,入口与操作一致,区别仅是意向类型(支持 / 执行)。
---
## Q7. 如何修改个人账号信息(账号管理)
> 菜单名「**账号管理**」,实际是**修改自己登录账号的信息**(姓名 / 手机号 / 密码),不是管理他人账号。
### 一、进入账号管理
1. 点击左侧菜单「**账号管理**」。
2. 页面展示并回显当前账号的「姓名」「手机号」。
### 二、修改姓名 / 手机号
1. 「姓名」清空无法保存。
2. 修改「手机号」。
3. 点「**保存**」→ 提示「保存成功」。
### 三、修改登录密码
1. 填写「原密码」、「新密码」、「确认密码」。
2. 点「**保存**」→ 姓名 / 手机号与密码(若填了)分别提交更新。
### 四、取消
- 点「**取消**」恢复为进入页面时的姓名 / 手机号,并清空三个密码输入框。
### 五、注意事项
- **密码留空 = 不修改密码**:三个密码框都留空时,只更新姓名 / 手机号,不影响密码。
- 只要填了「新密码」,就**必须同时填「原密码」**,否则无法改密。
- 本页只作用于**当前登录的合规人员账号自身**;管理他人账号(如单位下人员)走「支持单位管理 / 执行单位管理」里的「人员管理」(见 Q5)。
+954
View File
@@ -0,0 +1,954 @@
# 平台用户使用说明(完整版)
# 第一部分 · 平台概述与业务流程
> 本章梳理平台整体的**项目全生命周期**,帮助读者理解业务如何流转、各角色在哪个环节做什么。
## 一、角色与账号体系
| 角色 | 在业务里的位置 |
|---|---|
| 后台管理员 | 系统维护 |
| 合规人员 | 核心审核与项目管理 |
| 医生 | 投稿、参与会议、签署劳务 |
| 执行方 | 承接项目、建会、上传材料 |
| 支持方 | 申办方:监察、查看项目 |
| 项目负责人 | 纯只读,查看自己负责的项目 |
- **账号类型**:主账号(注册即新建单位)与 子账号(挂靠已有单位)。支持方 / 执行方按主账号 / 子账号区分权限;医生 / 后台管理员 / 项目负责人 / 合规人员是无企业归属的账号。
- **门户匿名访问**:首页、项目公示、3 个注册页、登录、协议、专项计划,均无需登录即可访问。
## 二、主线:项目全生命周期
```
1. 医生注册·资质审核
2. 医生投稿·立项
3. 项目创建·分配·公示
4. 公示意向·报名
5. 执行方建会·上传材料
6. 医生签署劳务
7. 材料审核·结算·完结
```
**1. 医生注册与资质审核**
- 医生在门户注册,提交执业证书、职称证明。
- 医生注册后**审核通过前不能登录系统**;合规人员或后台管理员审核通过后,医生才能登录,看到**我参与的会议 / 我报名的项目**。
- **后台管理员**:审核专家,或直接新建专家并通过、创建账号。
**2. 医生投稿**
- 医生新建投稿并提交。
- 合规人员审核,通过时**填写项目编号** 并在OA创建项目。
**3. 项目创建、分配与公示**
- 合规人员新建项目 → 分配支持单位 + 执行单位(各分场次 / 金额)。
- 发布公告后,门户**项目公示**对外可见。
**4. 公示与报名**
- 门户公示详情页按 4 类公告(专家参与邀请函 / 项目公益支持函 / 项目通知 / 日程)展示。
- 公示页提供三个按钮:医生**立即报名**、**公益支持**、**项目执行申请**。
- 合规人员查看与导出意向。
**5. 执行方建会与上传材料**
- 执行方建会。
- 上传**劳务材料**(参会人 / 劳务协议 / 签到表 / 现场全景 / 日程海报)与**会务材料**(发票自动识别 / 各类费用 / 总发票),页面自动汇总劳务费 / 会务费。
**6. 医生签署劳务(生成 PDF**
- 执行方发起签署 → 医生手机扫码(免登录)完成三步签署:填劳务信息 → 手写签名 → 生成 PDF 归档。
- PDF 按**劳务协议模板**自动填入姓名、手机号、会议名称、费用总额等信息。
- **后台管理员**:配置**劳务协议模板**(默认模板、启用 / 禁用),影响生成的劳务协议正文。
**7. 材料审核 → 结算 → 完结**
- 执行方提交材料 → 合规审核 → 支持方监察 → 结算(上传凭证)→ 完结。
- **后台管理员**:兜底查看审核进度;审核动作由合规人员 / 支持方完成。
## 三、各角色职责
| 角色 | 主要职责 |
|---|---|
| 医生 | 投稿策划方案、参与会议、签署劳务 |
| 合规人员 | 创建项目、建项目分配、材料审核、专家审核、项目结算 |
| 执行方 | 建会、上传材料、提交审核 |
| 支持方 | 监察、查看项目 |
| 项目负责人 | 查看自己负责的项目 |
| 后台管理员 | 系统维护 |
---
# 第二部分 · 分角色操作手册
## 角色一 · 医生
### 菜单概览
登录后左侧菜单(医生角色):
- 首页
- 我的项目策划方案
- 我参与的会议
- 我报名的项目
- 消息通知
- 账号信息
### Q1. 如何投稿策划方案
#### 一、进入投稿列表
1. 点击左侧菜单**我的项目策划方案**。
2. 列表展示:投稿名称、项目方向、项目类别、形式、设计文件、状态、是否结算、项目编号、创建时间、审核意见、备注。
#### 二、新建投稿
1. 点击**新建投稿**按钮。
2. 填写字段:
- 策划方案名称
- 项目方向
- 项目形式(线上 / 线下 / 线上+线下 / 其他)
- 项目类别
- 设计文件
- 备注
3. 点击**保存**→ 存为草稿(状态**未提交**)。
#### 三、提交投稿
1. 保存后回到列表,点击该行**提交**按钮。
2. 确认提交 → 状态变为**待审核**,进入合规审核流程。
3. 也可勾选多条草稿 → 点击**批量提交**一次性提交多条。
#### 四、查看审核结果
- 列表**状态**列显示当前状态:**未提交 / 待审核 / 通过 / 拒绝**。
- **审核意见**列显示合规人员的审核意见。
- 审核**通过**后,列表显示**项目编号**。
### Q2. 如何参与会议并签署劳务
> 会议执行后,医生作为参会人需要**签署劳务**:填写劳务信息并手写签名,平台自动生成 PDF 劳务协议归档。
#### 一、查看会议信息
1. 点击左侧菜单**我参与的会议**。
2. 列表展示:项目编号、会议名称、当前阶段、日程、邀请函、签署状态。
3. 可点击**日程**查看 / 下载**日程海报**,**邀请函**查看 / 下载**会议邀请函**。
#### 二、签署劳务
**进入签署:**
1. 在**我参与的会议**列表,找到要签署的会议,点击行内**签署劳务**。
2. 弹出**二维码**,用手机扫码或打开链接,自动登录并进入签署页。
**第一步:填写劳务信息**
在手机上填写:
- 手机号、姓名、工作单位、科室、医务职称、身份证附件(正反面)
- 账户名称、身份证号、银行卡号、银行名称、开户银行(支行)、开户银行地址、银行详细地址等
填完后点**下一步**。
**第二步:签署协议**
1. 页面显示劳务协议正文。
2. 底部点**签名确认**→ 弹出**手写签名画板**,在画板上手写姓名。
3. 确认签名 → 点**提交**。
**第三步:签字成功**
- 提示签字成功,系统自动生成 PDF 劳务协议并归档。
#### 三、注意事项
- 签署状态在列表中区分**已签署 / 未签署**;已签署后点**查看劳务**可查看 / 下载签字 PDF。
- 身份证正反面必须上传。
- 再次打开已签署的签署链接,会直接展示已签协议 PDF。
---
## 角色二 · 合规人员
### 角色说明
合规人员是平台的核心审核与项目管理角色,负责贯穿**投稿 → 立项 → 执行 → 审核 → 结算**全流程:
- 审核医生投稿的**策划方案**(通过后立项)
- **项目管理**(新建、分配支持方/执行方、删除、导出)
- **会议管理**(建会、材料合规审核、结算、完结)
- **专家资质审核**(医生注册后是否放行)
- **支持/执行单位管理**、**支持/执行意向查看**、账号与消息
### 菜单概览
登录后左侧菜单:
- 工作台
- 策划方案管理
- 项目管理
- 会议管理
- 专家审核
- 支持单位管理
- 执行单位管理
- 支持意向
- 执行意向
- 消息通知
- 账号管理
### Q1. 如何审核策划方案
#### 一、查看策划方案列表
1. 点击左侧菜单**策划方案管理**。
2. 列表展示:策划方案名称、项目方向、项目类别、项目形式、设计文件、状态、是否结算、项目编号、提交时间、备注。
3. 可按项目编号、策划方案名称、项目方向、项目类别、状态、是否结算、备注筛选。
#### 二、查看设计文件
- 列表**设计文件**列可点**查看**(新窗口预览 PDF)或**下载**。
- 审核前先查看设计文件,确认方案内容。
#### 三、审核策划方案
1. 找到状态为**待审核**的行,点击行内**审核**。
2. 弹窗中:
- 选择审核结果**通过**或**退回**。
- 选**通过**时,需填写**项目编号**。
- 审核意见(会回显给医生在**审核意见**列看到)。
#### 四、批量退回
1. 勾选多条**待审核**的方案。
2. 点击**批量审核**→ 弹窗只允许**退回**,填审核意见。
3. 点击**确认退回**→ 批量应用。
#### 五、修改策划方案
- 点击行内**修改**,进入修改页,可改:项目规划(项目方向)、投稿名称、学科方向、形式、项目类别、设计文件、备注。
#### 六、结算
- 状态为**通过**且**未结算**的行,显示**结算**按钮;点击确认即标记为已结算。
- 也可勾选多条**通过且未结算**的方案 →**批量结算**。
#### 七、注意事项
- 审核**通过时需填写项目编号**,退回时无需填。
- 只有**待审核**状态的方案才有**审核**按钮;**通过**且未结算的才有**结算**按钮。
- 审核意见会回显给医生,退回时建议写明原因。
### Q2. 如何创建项目并分配支持单位 / 执行单位
#### 一、新建项目
1. 点击左侧菜单**项目管理**→**新建项目**按钮,进入新建页。
2. **项目信息**
- 项目名称、项目编号
- 项目负责人
- 是否招标项目
- 项目形式
- 总场次 / 总期数、总金额(元)、管理费(元)
- 开始时间、结束时间
3. **角色劳务设置**:为每种会议角色配置劳务金额;可**增加角色**或**删除角色**。
4. **公告文件**:上传邀请函、支持函、通知、日程。
5. 底部按钮:
- **保存** → 暂存,不对外发布。
- **保存并发布公告**→ 保存并发布到公示。
#### 二、分配支持单位 / 执行单位
**入口:** **项目管理**列表页——单个项目点行内**分配**;或多个项目勾选后点顶部**项目分配**进行批量分配。
1. **选择支持单位**:选择一个支持单位。
2. **添加执行单位**:在表格里**+ 增加执行方**,每行选执行单位 + 填**场次** **金额**(可加多个执行单位,同一项目不能重复选同一执行单位)。
3. **提交截止(天)**:执行方提交材料的自然日期限。
4. 页面顶部实时显示**项目总场次 / 已分配场次** **总金额 / 已分配金额 / 可用金额**,**超出会红色告警**,需调整到不超。
5. 点**保存**完成分配。
#### 三、注意事项
- 支持单位只能选**一个**;执行单位可**多个**,按**场次 + 金额**分别分配。
- 已分配场次 / 金额总和**不得超过**项目总场次 / 总金额,否则无法保存。
- 已结题的项目**不能分配**(行内**分配**置灰,批量会跳过已结题项)。
- 已禁用的支持单位 / 执行单位仍显示但置灰,不可选。
- 分配后,执行单位在自己**项目列表**能看到该项目并建会(见执行方手册)。
### Q3. 如何审核会议材料并结算
> 执行方提交材料后,先到**合规审核**——由合规人员对**劳务材料** **会务材料**分别审核;合规审核通过后,再到**支持方监察**——由支持方对两类材料分别监察;合规审核与支持方监察都通过后,合规人员补充付款凭证、结算、完结。完整的链路:**执行方提交 → 合规审核 → 支持方监察 → 结算 → 完结**。
#### 一、进入会议审核
1. 点击左侧菜单**会议管理**。
2. 列表中,处于**待合规审核**状态的会议,行内显示**审核**链接;点击进入会议详情页。
3. 详情页底部**材料管理**区,会分别显示**审核劳务** **审核会务** **审核全部**按钮。
#### 二、审核材料(劳务 / 会务分别审核)
1. 先切换到**劳务材料** **会务材料**tab,检查执行方上传的材料(参会人、劳务协议、签到表、发票、结算单等)。
2. 点**审核劳务**/**审核会务**/**审核全部**,弹出审核窗口:
- 对**劳务材料** **会务材料**选 **通过****拒绝**
- 填写审核意见(退回时建议写明原因,将退回执行方整改)。
3. 点**确定**提交,提示**审核完成**。
#### 三、批量审核
- 会议列表勾选多个**待合规审核**的会议 →**批量审核**→ 选**通过 / 退回**+ 填意见(退回时意见需填写)→ 确定,逐条返回成功 / 失败明细。
#### 四、结算 / 完结
1. **结算**:劳务、会务材料都**通过**后,会议进入待结算。点**结算**→ 确认**已上传劳务 / 会务付款凭证**→ 结算完成,会议完结。
#### 五、上传付款凭证 / 下载材料
- **付款凭证**:详情页**劳务凭证** **会务凭证** 上传(结算前需补充)。
- **下载材料**:列表行内**会务下载** **劳务下载**打 zip 下载;也可勾选多个会议**批量下载会务 / 批量下载劳务**
#### 六、注意事项
- 劳务、会务可独立通过 / 拒绝,互不影响。
- **拒绝会退回执行方**重新提交,重新提交后再次进入合规审核。
- 只有劳务、会务**都通过**才能结算;结算前建议先上传付款凭证。
- 冻结的会议可在**更多 → 解冻**重新放开(解冻后提交截止时间重新计算)。
- 支持方监察在合规审核通过后流转,见支持方手册。
### Q4. 如何审核专家(医生资质)
> 医生注册后提交资质材料,合规人员审核;审核通过后医生才能登录,看到**我参与的会议** **我报名的项目**,进入完整业务流程。
#### 一、进入专家审核
1. 点击左侧菜单**专家审核**。
2. 列表展示:姓名、手机号、工作单位、科室、职称、执业证书、职称证明、审核状态、启用状态、审批时间、审批人。
3. 可按姓名、手机号、工作单位、审核状态筛选(未提交 / 待审核 / 通过 / 拒绝)。
#### 二、查看资质材料
- **执业证书** **职称证明**列可点**查看**来预览或**下载**
- 审核前先核对证书、证明是否齐全有效。
#### 三、审核专家
1. 找到状态为**待审核**的专家,点行内**审核**。
2. 弹窗中选**通过**或**拒绝**,填写审核意见。
#### 四、批量审核
- 勾选多个专家 →**批量审核**→ 确认后批量审核。
#### 五、新建专家
- **新建专家**录入医生信息(姓名 / 手机号 / 工作单位 / 科室 / 职称 / 执业证书 / 职称证明 / 身份证 / 银行卡等),**新建即自动通过审核**,并生成登录账号(初始密码 = 手机号,弹窗提示)。
#### 六、注意事项
- 审核状态:未提交 / 待审核 / 通过 / 拒绝;只有**待审核**需要处理。
- 未通过前医生不能登录。
- 新建专家 将 自动通过审核 + 创建登录账号(医生角色)。
### Q5. 如何管理支持单位 / 执行单位
#### 一、查看单位列表
1. 点击左侧菜单**支持单位管理**或**执行单位管理**。
2. 列表展示:单位名称、单位地址、税号/统一社会信用代码、合作状态(正常 / 禁用)、创建日期、联系人、联系电话。
3. 可按单位名称、税号/统一社会信用代码、合作状态筛选。
4. 点行内**查看**弹窗展示单位完整信息。
#### 二、管理单位下人员
1. 点行内**人员管理**→ 跳转到该单位的人员列表(面包屑显示**… / 单位名**)。
2. 人员列表展示:姓名、手机号、(执行单位另有**邮箱**列)、企业名称、部门、职务、状态;可按姓名、手机号、企业名称、部门、职务筛选。
3. 合规人员可对人员执行以下操作:
- **查看**:进入人员详情。
- **编辑**:改姓名、手机号、部门、职务、状态。
- **新建人员**:录入子账号(用户名 / 初始密码 / 姓名 / 手机号 / 部门 / 职务 / 状态)。
- **批量导入**:下载模板 → 按模板填写 → 选择文件导入 → 弹窗逐行展示成功 / 失败明细。
- **启用 / 禁用**:禁用后该账号无法登录;恢复后重新启用。
- **重置密码**:一键重置为默认密码 `123456`
#### 三、启用 / 禁用单位
- 行内**禁用**:禁用后该企业**主账号无法登录,企业下子账号也将被拦截**。
- 已禁用单位行内显示**恢复**,点击即恢复为正常。
#### 四、注意事项
- 合规人员**不能新增 / 编辑 / 批量导入单位**,这些按钮仅后台管理员可见。
- 禁用单位后,该单位主账号及旗下所有子账号都会被拦截登录,恢复后一并放开。
### Q6. 如何查看支持意向 / 执行意向
#### 一、进入意向列表
点击左侧菜单**支持意向**或**执行意向**。
#### 二、筛选
- 可按项目编号、意向项目名称、姓名、工作单位、手机号筛选。
#### 三、导出
- 点**导出**→ 按**当前筛选条件**下载 Excel。
#### 四、注意事项
- 支持意向(公示页**公益支持**)匿名访客无需登录即可填写;执行意向(公示页**项目执行申请**)需登录后才能填写。
- **账号状态**用于识别该意向人是否已有账号,便于后续对接;未注册的仅留下姓名 / 单位 / 手机号等联系方式。
- 当前页面**无审核 / 删除操作**(操作列已关闭),仅提供查看与导出。
### Q7. 如何修改个人账号信息(账号管理)
#### 一、进入账号管理
1. 点击左侧菜单**账号管理**。
2. 页面展示并回显当前账号的**姓名** **手机号**
#### 二、修改姓名 / 手机号
1. **姓名**清空无法保存。
2. 修改**手机号**。
3. 点**保存**→ 提示**保存成功**。
#### 三、修改登录密码
1. 填写**原密码**、**新密码**、**确认密码**。
2. 点**保存**→ 姓名 / 手机号与密码(若填了)分别提交更新。
#### 五、注意事项
- **密码留空 = 不修改密码**:三个密码框都留空时,只更新姓名 / 手机号,不影响密码。
- 只要填了**新密码**,就**必须同时填原密码**,否则无法改密。
---
## 角色三 · 执行方(执行单位)
### 角色说明
执行方是承接项目、执行会议的单位(供应商)。账号分两种:
| 账号类型 | 权限 |
|---|---|
| **主账号** | 查看本单位承接的全部项目;可分配项目、建会、上传材料、人员管理等 |
| **执行人员** | 只能查看被分配的项目;不参与分配 |
### 菜单概览
登录后左侧菜单(执行方角色):
- 首页
- 我的项目策划方案(投稿入口)
- 项目列表(承接的项目)
- 会议列表
- 人员管理(仅主账号可见)
- 消息通知
- 账号信息
### Q1. 如何分配项目(把项目分配给执行人员)
> **分配**是指**主账号**把承接的项目指派给团队下的**执行人员(子账号)**,由该执行人员负责该项目。
#### 一、单个项目分配
1. 点击左侧菜单**项目列表**。
2. 找到目标项目,点击行内**分配**链接。
3. 弹窗中选择**分配给执行人**(可多选;管理员账号显示但不可选)。
4. 点击**确定**,完成分配。
#### 二、批量分配
1. 在列表首列勾选多个项目。
2. 点击上方工具栏**项目分配**按钮。
3. 弹窗中显示**已选项目数**与**项目编号预览**,选择执行人(可多选)。
4. 点击**确定**,批量分配完成。结果按项目逐条反馈(成功 N / 总数,失败项列出原因)。
#### 三、注意事项
- 分配对象是**执行人员**——来自**人员管理**中本单位团队下的**子账号**。
- 重新分配会**覆盖**该项目原已分配的执行人员。
- 执行人员登录后,列表页**不会显示** **项目分配**按钮与勾选列,只能查看自己被分配的项目。
- 已结题的项目不再显示**分配**入口。
### Q2. 如何建会
> **建会**是指为承接的项目创建一场具体的会议(第 N 期)。主账号与执行人员只要能看到项目,都可建会。
#### 一、进入建会
1. 点击左侧菜单**项目列表**,找到要建会的项目。
2. 点击行内**建会**链接,进入**新建会议**页。
**建会入口有两个限制:**
- **场次上限**:某项目已建会议数达到分配场次时,**建会**按钮置灰。
- **结题项目**:已结题的项目不显示**建会**入口。
#### 二、填写会议信息
填写期数、会议开始时间、会议结束时间、会议地点、备注。
#### 三、保存
点击**保存**, 创建成功,自动跳转到会议列表。
#### 四、注意事项
- **总场次/总期数**对执行方是分配给本单位的场次口径。
### Q3. 如何上传并提交会议材料
> 会议材料分**劳务材料** **会务材料**两类,独立上传、独立提交、独立审核。完整审核链路:**执行方提交 → 合规审核 → 支持方监察**。
#### 一、进入材料管理
1. 点击左侧菜单**会议列表**,找到要上传材料的会议。
2. 点击行内**上传材料**,进入会议详情页的**材料管理**区。
#### 二、上传劳务材料
1. **参会人管理**:点**+ 新增参会人**按手机号添加医生(姓名 / 手机号 / 医院 / 科室 / 职称 / 银行卡 / 身份证等),或**批量导入**。添加后可**邀请参会** **推送电子签**让医生完成签署。
2. **劳务协议**:点**下载目录**拿空目录模板,放入各参会人签好的协议后压缩,点**上传协议**回填(按**序号_姓名**逐个对应)。
3. **专家照片**:同上。
4. **劳务材料**
- 企业权益
- 签到表(会议现场签到表,带定位框,可扫码拍照)
- 前全景(会议现场前全景,带定位框,扫码拍照)
- 后全景(会议现场后全景,扫码拍照)
5. **日程海报**:上传会议日程海报。
页面底部自动汇总**劳务费合计**。
#### 三、上传会务材料
1. **发票表**:上传含发票的材料后,系统自动识别发票号、开票时间、金额并汇总展示。
2. **会务材料**:物料制作、酒店、大交通、小交通、执行费、设计费、其他、总结算单、总发票。
3. **打包上传**:点**下载目录**拿空目录模板,把各类材料放进对应子目录后压缩成 zip,点**上传会务材料**一次性回填(单个目录多文件会自动打包成一个 zip)。
页面底部自动汇总**会务费合计**,**上传总发票后以总发票金额为准**。
#### 四、提交材料
上传完成后,点底部提交按钮:
- **提交劳务**:仅提交劳务材料。
- **提交会务**:仅提交会务材料。
- **提交全部**:劳务、会务一起提交。
提交前系统会**自动保存**所有未保存的内容,然后进入审核流程,提示**材料已提交,待合规审核**。
#### 五、查看审核进度
- 详情页右侧**材料审核**时间轴,按轮次记录**执行方提交 → 合规审核 → 支持方监察**的通过 / 拒绝结果。
- 被拒绝的那类材料会退回,需重新修改上传后再提交。
#### 六、注意事项
- 只有**已执行**且**未冻结**的会议才能提交材料;未执行会议不能提交。
- 材料一经提交进入审核,对应材料即**锁定**,不能再改(除非被拒绝退回)。
- **保存**按钮仅在材料未提交 / 被退回时可用;劳务、会务都进入审核后锁定。
- 劳务 / 会务可独立提交、独立被审,互不影响。
### Q4. 如何管理团队人员(执行人员)
#### 一、进入人员管理
1. 点击左侧菜单**人员管理**(仅主账号可见,执行人员无此菜单)。
2. 列表展示:姓名、手机号、所属公司、部门、职务、角色、状态。
- 角色:`管理员`(主账号)/ `执行人员`(子账号)。
- 状态:`正常` / `禁用`
3. 可按姓名、手机号、所属公司、部门、职务筛选。
#### 二、新建人员(执行人员 / 子账号)
1. 点击**新建人员**→ 进入独立新建页。
2. 填写字段:
- 用户名(子账号登录用户名)
- 初始密码
- 姓名、手机号
- 所属公司(由主账号注册时自动带出,只读不可改)
- 部门、职务、状态(正常 / 禁用)
3. 点击**保存**。新建成功后弹窗显示子账号**账号 + 初始密码**(仅本次显示,请记录后告知使用人)。
#### 三、编辑人员
- 列表**更多 → 编辑**进入编辑页;可改姓名、手机号、部门、职务、状态,**用户名和密码不可改**。
#### 四、批量导入
1. 点击**批量导入**→**批量导入模板下载**下载 Excel 模板。
2. 按模板填写后选择文件 →**开始导入**。
3. 导入完成后弹窗逐行展示成功 / 失败明细(含失败原因)。
#### 五、重置密码 / 禁用 / 恢复
- **重置密码**:一键重置为默认密码 `123456`
- **禁用 / 恢复**:禁用后该账号无法登录;恢复后重新启用。
- 主账号**不能**禁用自己。
#### 六、注意事项
- 已禁用的执行人员**不会**出现在**项目分配**的候选列表里。
- 新建时填的用户名 / 密码,就是该执行人员登录系统的账号。
---
## 角色四 · 支持方
### 角色说明
支持方是项目的支持单位。支持方账号分两种:
| 账号类型 | 权限 |
|---|---|
| **主账号** | 查看本单位全部项目;可进行项目分配、项目评价、人员管理等操作 |
| **监察员子账号** | 只能查看被主账号分配的项目;仅查看,**不参与分配** |
### 菜单概览
登录后左侧菜单(支持方角色):
- 首页
- 我的项目
- 会议列表
- 人员管理(仅主账号可见)
- 消息通知
- 账号信息
### Q1. 如何查看并分配项目?
#### 一、查看项目
1. 点击左侧菜单**我的项目**,进入项目列表页。
2. 列表上方支持按以下条件筛选:
- 项目编号
- 项目名称
- 项目时间
- 是否结题(已结题 / 未结题)
3. 列表展示字段:项目编号、项目名称、总场次、已执行、未执行、总金额、可用金额、劳务费、会务费、项目开始时间、项目结束时间、是否结题、执行单位评价(支持方)。
5. **权限差异**
- 主账号:可查看本单位全部项目。
- 监察员子账号:只能看到被分配给自己负责的项目。
#### 二、分配项目(把项目分配给监察员)
> **分配**是指**主账号**把项目指派给团队下的**监察员子账号**,由该子账号负责该项目后续的监察工作。子账号本身不能发起分配。
**单个项目分配:**
1. 在**我的项目**列表,找到目标项目,点击行内**分配**链接。
2. 弹窗中选择**分配给监察员**(可多选)。
3. 点击**确定**,完成分配。
**批量分配:**
1. 在列表首列勾选多个项目。
2. 点击上方工具栏**项目分配**按钮。
3. 弹窗中选择监察员(可多选)。
4. 点击**确定**,批量分配完成。
**注意事项:**
- 监察员候选来自**人员管理**中本单位团队下的**子账号**;已禁用的账号不会出现在候选列表。
- 重新分配会**覆盖**该项目原已分配的监察员。
- 监察员子账号登录后,列表页**不会显示** **项目分配**按钮与勾选列,只能查看自己被分配的项目。
### Q2. 如何给项目打分(执行单位评分)?
#### 一、给单个项目打分
1. 进入**我的项目**列表,找到要评价的项目。
2. 点击该行操作列的**项目评价**链接,弹出**执行单位评分**弹窗。
3. 弹窗内按 4 个维度分别打分(每项 1~5 分):
- 履约质量 —— 服务 / 活动效果达标度
- 时效响应 —— 执行 & 售后响应速度
- 配合度 —— 沟通配合 & 问题处理
- 合规安全 —— 流程合规 & 无安全事故
4. 填好 4 项分数后点击**确定**,即可完成打分。
#### 二、查看已评分
- 列表**执行单位评价(支持方)**列显示的就是该项目执行单位的平均分。
- 点击该数字,可弹窗查看 4 个维度的明细得分与平均分。
#### 三、注意事项
- 重新打分会**覆盖**自己之前对该项目的评分(再次打开时会回显上次的分数)。
- 打分对象是**执行单位**,不是项目本身。
### Q3. 如何管理团队人员(监察员)
> 支持方主账号可维护本单位的团队人员,其中**子账号就是监察员**。此菜单仅主账号可见。
#### 一、进入人员管理
1. 点击左侧菜单**人员管理**(仅主账号可见,子账号无此菜单)。
2. 列表展示:账号、姓名、手机号、所属公司、部门、职务、角色、状态、创建时间。
- 角色:`管理员`(主账号)/ `监察员`(子账号)。
- 状态:`正常` / `禁用`
3. 可按姓名、手机号、工作单位、部门、状态筛选。
#### 二、新建人员(子账号 / 监察员)
1. 点击**新建人员**按钮。
2. 填写字段:
- 用户名(子账号登录用户名)
- 初始密码
- 姓名、手机号、部门、职务、状态
- **所属公司**由主账号注册时自动带出,不可修改
3. 点击**保存**。新建成功后弹窗会显示刚创建的子账号**账号 + 初始密码**(密码仅本次显示,请记录后告知使用人)。
#### 三、批量导入
1. 点击**批量导入**→**批量导入模板下载**下载 Excel 模板。
2. 按模板填写后,选择文件并**开始导入**。
3. 导入完成后弹窗逐行展示成功 / 失败列表。
#### 四、编辑 / 禁用 / 删除 / 重置密码
行内操作列支持:
- **查看 / 编辑**:编辑可改姓名、手机号、部门、职务、状态;用户名和密码不可改。
- **重置密码**:一键重置为默认密码 `123456`
- **禁用 / 恢复**:禁用后该账号无法登录;恢复后重新启用。
- **删除**:不可恢复,请谨慎操作。
#### 五、注意事项
- 主账号**不能**禁用 / 删除自己。
- 已禁用的监察员**不会**出现在**项目分配**的候选列表里。
- 新建人员时填的用户名 / 密码,就是该监察员登录系统的账号。
### Q4. 如何监察会议
> **监察**是指支持方对执行方提交的会议材料(劳务 / 会务)的审核。完整审核链路:执行方提交材料 → 合规审核(由合规人员做)→ 支持方监察。支持方监察通过后,该会议材料才算审核完成。
#### 一、进入会议监察
1. 点击左侧菜单**会议列表**。
2. 列表中,处于**待监察**状态的会议,操作列会显示**监察**按钮;其余会议只有**查看**。
- 支持方主账号和监察员都能看到监察入口。
#### 二、监察会议材料
1. 点击**监察**进入会议详情页。
2. 详情页底部按材料分类显示监察按钮:**监察劳务** / **监察会务** / **监察全部**(哪一类到了待监察状态,对应按钮才亮)。
3. 点击按钮,弹出**监察意见**窗口:
- 对**劳务材料** **会务材料**分别选择 **通过****拒绝**
- 填写审核意见(拒绝时建议说明原因,将退回执行方整改)。
#### 三、查看审核轨迹
- 会议详情页右侧**材料审核**时间轴,会按轮次记录每一次**提交 → 合规 → 监察**的通过 / 拒绝结果,可追溯历史。
#### 四、注意事项
- 只有合规审核通过后的会议,才会到支持方监察这一步。
- **拒绝**会退回执行方重新提交,重新提交后再次进入合规审核。
- 系统按**项目分配的支持单位**校验权限,支持方只能监察自己单位项目下的会议。
- 劳务 / 会务可独立通过 / 拒绝,互不影响。
---
## 角色五 · 项目负责人
> 本手册面向**项目负责人**角色。内容基于系统实际页面整理。
### 角色说明
项目负责人是**只读账号**,用于查看被指定为自己负责的项目及其执行情况。
- 只能看到**自己负责的项目**,及其项目下的**会议**
- 不提供任何写操作(新建 / 编辑 / 分配 / 审核 / 结算 / 评分 / 删除等)
- 项目负责人由合规人员在**新建项目**时指定
### 菜单概览
登录后左侧菜单(项目负责人角色):
- 首页
- 项目列表
- 会议列表
- 账号信息
### Q1. 如何查看我负责的项目 / 会议
> 项目负责人只能查看被指定为自己负责的项目及其会议,不能做任何写操作。
#### 一、查看我负责的项目
- 点击左侧菜单**项目列表**。
#### 二、查看项目详情
- 点击项目名称或行内**查看**→ 进入项目详情页
#### 三、看评分
- 点击**执行单位评分(合规 / 支持)**列 → 弹窗查看该项目的 4 维度评分明细与平均分。
#### 四、查看会议列表
- 点击左侧菜单**会议列表**(或从项目列表点场次数字跳入)。
#### 五、查看会议详情
- 点击会议名称或行内**查看**→ 进入会议详情页。
#### 六、注意事项
- 项目负责人是**纯只读**账号:项目列表、会议列表、详情页均不显示任何**新建 / 编辑 / 分配 / 审核 / 结算 / 评分 / 删除**等写操作按钮。
- 只能看到**项目负责人是自己**的项目。
- **项目负责人**在新建项目时由合规人员指定
---
## 角色六 · 后台管理员
### 角色说明
后台管理员是平台的**超级管理员**,负责系统级维护与全局业务管理:
- **系统账号**:用户管理、角色管理
- **基础数据**:科室、职称、项目类别
- **网站内容**:协议、专项计划、劳务协议模板
- **业务权限**:项目管理、会议管理、专家管理、支持/执行单位管理等
### 菜单概览
登录后左侧菜单:
- 工作台
- 用户管理
- 角色管理
- 项目管理
- 会议管理
- 资料库管理(子菜单:专家管理 / 支持单位管理 / 执行单位管理 / 科室管理 / 职称管理 / 项目类别管理)
- 网站管理(子菜单:协议管理 / 专项计划管理 / 劳务协议配置)
- 消息通知
- 账号信息
### Q1. 如何维护基础数据(科室 / 职称 / 项目类别)
#### 一、进入与列表
1. 点击左侧菜单**资料库管理**→**科室管理**/**职称管理**/**项目类别管理**。
2. 列表展示:ID(项目类别页为**序号**)、名称、排序、状态(启用 / 停用)、创建时间。
3. 可按名称、状态筛选。
#### 二、新增
1. 点**新增科室 / 新增职称 / 新增类别**按钮。
2. 弹窗填写:
- **名称**:科室名称 / 职称名称 / 类别名称。
- **排序**(数字越小越靠前)。
3. 点**保存**→ 新增成功(默认启用)。
#### 三、编辑
1. 点行内**编辑**。
2. 可改名称、排序,以及**状态**(启用 / 停用)。
3. 点**保存**。
#### 四、停用 / 启用
- 行内**停用** / **启用**切换;停用后该项不再出现在前台的选项里。
#### 五、删除
- 点行内**删除**→ 确认**该操作不可恢复**→ 删除。
### Q2. 如何管理用户(系统账号)
#### 一、查看与筛选
1. 点击左侧菜单**用户管理**。
2. 列表展示:用户 ID、账号、姓名、角色、单位名称、手机号、邮箱、状态(启用 / 停用)、创建时间。
3. 可按用户账号、姓名、单位名称、角色、状态筛选。
#### 二、新建用户(按角色)
1. 点**新建用户**按钮。
2. 先选**角色**( 后台管理员 / 合规人员 / 评审专家 / 执行人 / 支持方 / 项目负责人)。
3. 填通用字段。
4. 按所选角色填附加字段。
5. 点**保存**→ 新建成功。
#### 三、编辑用户
1. 点行内**编辑**。
2. 可改姓名、角色、手机号、邮箱等。
3. 点**保存**。
#### 四、重置密码
- 点行内**重置密码**→ 确认 → 重置为默认密码 `123456`
#### 五、停用 / 启用
- 点行内**停用** / **启用**切换;停用后该账号无法登录。
#### 六、删除
- 点行内**删除**→ 弹强警告 → 确认删除。
- **不能删除自己**(自己账号的**删除**置灰)。
### Q3. 如何管理专项计划
#### 一、进入与列表
1. 点击左侧菜单**网站管理**→**专项计划管理**。
2. 列表展示:ID、标题、类型、排序、状态(启用 / 停用)、更新时间。
3. 可按标题、类型、状态筛选。
#### 二、新建专项计划
1. 点**新增**进入新建页。
2. 填写字段:
- **标题**。
- **内容类型**
- 富文本 → 在**正文**富文本编辑器里录入内容。
- 上传文件 → 上传文件作为内容。
- **排序**(数字越小越靠前)。
- **状态**(启用 / 停用)。
- **备注**(内部备注)。
3. 点**保存**→ 返回列表。
#### 三、编辑
- 列表点**编辑**进入编辑页,可改全部字段。
- 切换内容类型会**清空另一字段**(富文本 → 文件会清空正文,反之清空文件)。
#### 四、预览
- 列表点**预览**→ 新窗口打开门户的专项计划详情页。
- 已停用的项**预览**置灰。
#### 五、删除
- 列表点**删除**→ 确认 → 删除。
#### 六、注意事项
- 专项计划对外展示在门户,预览打开的是公开详情页。
- 排序数字越小越靠前。
+172
View File
@@ -0,0 +1,172 @@
# 支持方用户手册
> 本手册面向「支持方」角色(申办方 / 支持单位)。内容基于系统实际页面整理。
## 角色说明
支持方是项目的发起 / 支持单位。支持方账号分两种:
| 账号类型 | 权限 |
|---|---|
| **主账号** | 查看本单位全部项目;可进行项目分配、项目评价、人员管理等操作 |
| **监察员子账号** | 只能查看被主账号分配的项目;仅查看,**不参与分配** |
## 菜单概览
登录后左侧菜单(支持方角色):
- 首页
- 我的项目
- 会议列表
- 人员管理(仅主账号可见)
- 消息通知
- 账号信息
---
## Q1. 如何查看并分配项目?
### 一、查看项目
1. 登录系统进入支持方「**首页**」,顶部有 5 张 KPI 卡:项目总数量、已结算的项目、已结题的项目、已执行会议、未执行会议。点击「项目总数量」卡片可快速进入项目列表。
2. 点击左侧菜单「**我的项目**」,进入项目列表页。
3. 列表上方支持按以下条件筛选:
- 项目编号(模糊)
- 项目名称(模糊)
- 项目时间(起止日期范围)
- 是否结题(已结题 / 未结题)
4. 列表展示字段:项目编号、项目名称、总场次、已执行、未执行、总金额、可用金额、劳务费、会务费、项目开始时间、项目结束时间、是否结题、执行单位评价(支持方)。
5. **权限差异**
- 主账号:可查看本单位全部项目。
- 监察员子账号:只能看到被分配给自己负责的项目。
### 二、分配项目(把项目分配给监察员)
> 「分配」是指**主账号**把项目指派给团队下的「监察员子账号」,由该子账号负责该项目后续的监察工作。子账号本身不能发起分配。
**单个项目分配:**
1. 在「我的项目」列表,找到目标项目,点击行内「**分配**」链接。
2. 弹窗中选择「分配给监察员」(下拉支持按姓名 / 手机号搜索,可多选)。
3. 点击「确定」,完成分配。
**批量分配:**
1. 在列表首列勾选多个项目。
2. 点击上方工具栏「**项目分配**」按钮。
3. 弹窗中会显示「已选项目数」与「项目编号预览」,选择监察员(可多选)。
4. 点击「确定」,批量分配完成。结果会按项目逐条反馈(成功 N / 总数,失败项会列出原因)。
**注意事项:**
- 监察员候选来自「人员管理」中本单位团队下的**子账号**;已禁用的账号不会出现在候选列表。
- 重新分配会**覆盖**该项目原已分配的监察员。
- 监察员子账号登录后,列表页**不会显示**「项目分配」按钮与勾选列,只能查看自己被分配的项目。
---
## Q2. 如何给项目打分(执行单位评分)?
> 「打分」是指支持方对项目的**执行单位**进行评价,从 4 个维度各打 1~5 分,系统自动算平均分。评分结果会在列表「执行单位评价(支持方)」列显示。
### 一、给单个项目打分
1. 进入「我的项目」列表,找到要评价的项目。
2. 点击该行操作列的「**项目评价**」链接,弹出「执行单位评分」弹窗。
3. 弹窗内按 4 个维度分别打分(每项 1~5 分):
- 履约质量 —— 服务 / 活动效果达标度
- 时效响应 —— 执行 & 售后响应速度
- 配合度 —— 沟通配合 & 问题处理
- 合规安全 —— 流程合规 & 无安全事故
4. 填好 4 项分数后点击「确定」,系统提示「评分完成,平均分:X.X」并刷新列表。
### 二、查看已评分
- 列表「执行单位评价(支持方)」列显示的就是该项目执行单位的平均分。
- 点击该数字,可弹窗查看 4 个维度的明细得分与平均分。
### 三、注意事项
- 重新打分会**覆盖**自己之前对该项目的评分(再次打开时会回显上次的分数)。
- 打分对象是「执行单位」(承接项目执行的单位),不是项目本身。
---
## Q3. 如何管理团队人员(监察员)
> 支持方主账号可以维护本单位的团队人员,其中**子账号就是「监察员」**——也就是 Q1「分配项目」里可被分配的对象。此菜单仅主账号可见。
### 一、进入人员管理
1. 点击左侧菜单「**人员管理**」(仅主账号可见,子账号无此菜单)。
2. 列表展示:账号、姓名、手机号、所属公司、部门、职务、角色、状态、创建时间。
- 角色:`管理员`(主账号)/ `监察员`(子账号)。
- 状态:`正常` / `禁用`
3. 可按姓名、手机号、工作单位、部门、状态筛选。
### 二、新建人员(子账号 / 监察员)
1. 点击「**新建人员**」按钮。
2. 填写字段:
- 用户名(子账号登录用户名)
- 初始密码
- 姓名、手机号、部门、职务、状态(正常 / 禁用)
- 「所属公司」由主账号注册时自动带出,不可修改
3. 点击「保存」。新建成功后弹窗会显示刚创建的子账号**账号 + 初始密码**(密码仅本次显示,请记录后告知使用人)。
### 三、批量导入
1. 点击「**批量导入**」→「批量导入模板下载」下载 Excel 模板。
2. 按模板填写后,选择文件并「开始导入」。
3. 导入完成后弹窗逐行展示成功 / 失败明细(含失败原因)。
### 四、编辑 / 禁用 / 删除 / 重置密码
行内操作列支持:
- **查看 / 编辑**:编辑可改姓名、手机号、部门、职务、状态;用户名和密码不可改。
- **重置密码**:一键重置为默认密码 `123456`
- **禁用 / 恢复**:禁用后该账号无法登录;恢复后重新启用。
- **删除**:不可恢复,请谨慎操作。
### 五、注意事项
- 主账号**不能**禁用 / 删除自己(避免把自己锁在系统外)。
- 已禁用的监察员**不会**出现在「项目分配」的候选列表里(Q1)。
- 新建人员时填的用户名 / 密码,就是该监察员登录系统的账号。
---
## Q4. 如何监察会议
> 「监察」是指支持方对执行方提交的会议材料(劳务 / 会务)进行**二审**。完整审核链路:执行方提交材料 → 合规审核(一审,由合规管理员做)→ 支持方监察(二审)。支持方监察通过后,该会议材料才算审核完成。
### 一、进入会议监察
1. 点击左侧菜单「**会议列表**」。
2. 列表中,处于「待监察」状态的会议,操作列会显示「**监察**」按钮;其余会议只有「查看」。
- 支持方主账号和监察员都能看到监察入口。
### 二、监察会议材料
1. 点击「监察」进入会议详情页。
2. 详情页底部按材料轨显示监察按钮:**监察劳务** / **监察会务** / **监察全部**(哪一轨到了待监察状态,对应按钮才亮)。
3. 点击按钮,弹出「监察意见」窗口:
- 对「劳务材料」「会务材料」分别选择 **通过****拒绝**
- 填写审核意见(拒绝时建议说明原因,将退回执行方整改)。
4. 点击「确定」提交,系统提示「审核完成」。
### 三、查看审核轨迹
- 会议详情页右侧「材料审核」时间轴,会按轮次记录每一次「提交 → 合规 → 监察」的通过 / 拒绝结果,可追溯历史。
### 四、注意事项
- 监察是**二审**:只有合规审核(一审)通过后的会议,才会到支持方监察这一步。
- 「拒绝」会退回执行方重新提交,重新提交后再次进入合规审核,重新走一轮。
- 系统按「项目分配的支持单位」校验权限,支持方只能监察自己单位项目下的会议。
- 劳务 / 会务两轨可独立通过 / 拒绝,互不影响。