Git Product home page Git Product logo

xiaoju-survey's Introduction


  XIAOJUSURVEY是一套轻量、安全的问卷系统基座,提供面向个人和企业的一站式产品级解决方案,快速满足各类线上调研场景。

  内部系统已沉淀 40+种题型,累积精选模板 100+,适用于市场调研、客户满意度调研、在线考试、投票、报道、测评等众多场景。数据能力上,经过上亿量级打磨,沉淀了分题统计、交叉分析、多渠道分析等在线报表能力,快速满足专业化分析。

  开源项目以打造调研基座为核心,围绕平台能力工程架构研发体系进行建设,大家可以「快速」打造「专属」问卷系统:快速了解生态发展理念

功能简介

  • 问卷管理:创、编、投、收、数据分析

  • 多样化题型:单行输入框、多行输入框、单项选择、多项选择、判断题、评分、投票、...

  • 用户管理:登录、注册、权限管理

  • 数据安全:传输加密、脱敏等

更全的建设请查阅 官方 Feature

(个人和企业用户均可快速构建特定领域的调研类解决方案。)

技术

Web 端:Vue3 + ElementPlus;C 端多端渲染(在建,申请加入共建

Server 端:Nestjs + MongoDB;Java(在建,申请加入共建

智能化基座:(在建)

项目优势

一、具备全面的综合性和专业性

  • 制定了问卷标准化协议规范

    领域标准保障概念互通,是全系统的基础和核心。基于实际业务经验,沉淀了两大类:

    • 业务描述:问卷协议、题型协议
    • 物料描述:题型物料协议,包含题型和设置器
  • 制定了问卷 UI/UX 规范

    设计语言是系统灵活性、一致性的基石,保障系统支撑的实际业务运转拥有极高的用户体验。包含两部分:

    • 设计规范:灵活、降噪、统一
    • 交互规范:遵循用户行为特征,遵循产品定位,遵循成熟的用户习惯
  • 所见即所得,搭建渲染一致性高

    实际业务使用上包含问卷生成和投放使用,即对于系统的搭建端和渲染端。我们将题型场景化设计,以满足一份问卷从加工生产到投放应用的高度一致。

  • 题型物料化设计,自由定制扩展

    题型是问卷最核心的组成部分,而题型可配置化能力决定了上层业务可扩展的场景以及系统自身可复用的场景。 题型架构设计上,主打每一类题型拥有通用基础能力,每一种题型拥有原子化特性能力,并保障高度定制化。

  • 合规建设沉淀积累,安全能力拓展性高

    数据加密传输、敏感信息精细化检测、投票防刷等能力,保障问卷发布、数据回收链路安全性。

二、轻量化设计,快速接入、灵活扩展

快速启动

Node 版本 >= 18.x, 查看环境准备指导

复制工程

git clone [email protected]:didi/xiaoju-survey.git

服务端启动

方案一、快速启动,无需安装数据库

便于快速预览工程,对于正式项目需要使用方案二。

1、安装依赖

cd server
npm install

2、启动

npm run local

服务运行依赖 mongodb-memory-server

1、数据保存在内存中,重启服务会更新数据。
2、启动内存服务器新实例时,如果找不到 MongoDB 二进制文件会自动下载,因此首次可能需要一些时间。

方案二、(生产推荐)

1、启动数据库

项目使用 MongoDB:MongoDB 安装指导

2、安装依赖

cd server
npm install

3、启动

npm run dev

前端启动

安装依赖

cd web
npm install

启动

npm run serve

访问

问卷管理端

http://localhost:8080/management

问卷投放端

创建并发布问卷。

http://localhost:8080/render/:surveyPath



QQ 交流群

官方群会发布项目最新消息、建设计划和社区活动,欢迎你的加入:

微信交流群

官方群会发布项目最新消息、建设计划和社区活动,欢迎你的加入。任何问题和合作可以联系小助手:

Star

开源不易,如果该项目对你有帮助,请 star 一下 ❤️❤️❤️,你的支持是我们最大的动力。

Star History Chart

记录

如果你使用了该项目,请记录反馈:我在使用,你的支持是我们最大的动力。

贡献

如果你想成为贡献者或者扩展技术栈,请查看:贡献者指南,你的加入使我们最大的荣幸。

Feature

关注每周推出的建设:官方 Feature

CHANGELOG

关注重大变更:MAJOR CHANGELOG

文章分享

1、掘金、2、InfoQ

欢迎投稿

xiaoju-survey's People

Contributors

1004801012 avatar alwayrun avatar chaorenluo avatar codeniu avatar houhoz avatar luch1994 avatar nilnoop avatar realabiha avatar skique avatar sudoooooo avatar xixiibn5100 avatar yelang-web avatar yujiang0030 avatar zepingwong avatar zy445566 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xiaoju-survey's Issues

评分组件高级设置显示异常

  • 分类:前端
  • 类别:Bug
  • 标题: 评分组件高级设置显示异常
  • 操作系统: Mac
  • 内容:点击评分组件高级设置修改,修改完成后再次点击高级设置,之前修改的内容消失
  • 操作步骤:点击评分组件高级设置修改,修改完成后再次点击高级设置,之前修改的内容消失
  • 期待的行为:修改后再次点击能看到修改的内容
  • 实际行为:看不到之前修改的内容
image image

题型增加子标题或描述

描述您希望的需求

建议给所有题型都增加一个子标题或描述,用于对采集的数据进行说明或描述,当配置时题型填写了这个字段数据则在采集端展示
有些场景下一个题目标题不能描述完题本身的意义或作用,这个时候需要有一个地方来填写一个描述信息来给予说明,
image

题型处于活动状态时,侧边操作工具栏默认显示

描述您希望的需求

当前题型处于活动状态时,侧边操作栏应处于显示状态,这样不管光标移动到何处,再次移回时不需要先移动到活动题选区,而是可直接到活动题型侧边栏做相应操作,

所以在以下两种状态下显示侧边操栏较合理:
1、光标所在区题型 (不一定是活动题型)
2、活动区题型 (光标不一定在活动题选区)

missing babel-loader pakcgae

ERROR in management
Module not found: Error: Can't resolve 'babel-loader' in '/Users/busyhe/Workspace/projects/xiaoju-survey/web'

ERROR in render
Module not found: Error: Can't resolve 'babel-loader' in '/Users/busyhe/Workspace/projects/xiaoju-survey/web'

技术优化认领:代码优化

在建设架构和平台能力的同时,我们在代码层面上也需要进一步的优化。

如果你想熟悉工程或者参与贡献,这是一个比较好的机会。

方式

1、留言序号进行相关优化点认领:如认领1
2、官方会将跟进人标记到此Issue
3、自测并提交PR到develop分支

List

不定期补充可认领的代码优化列表,同时欢迎大家提Issue反馈,定期采纳 🤝

重构 management/pages/list 目录下组件, 使用 Vue3 组合式 API 写法

下列组件, 调整成 Vue3 组合式 API 写法
management/pages/list/components/BaseList.vue
management/pages/list/components/ModifyDialog.vue
management/pages/list/index.vue.vue
management/pages/list/components/ToolBar.vue
management/pages/list/components/TextSelect.vue
management/pages/list/components/TextButton.vue.vue

【北大开源实践】- 问卷编辑检测

功能描述
登录失效检测:在问卷编辑页面,每半小时校验一次当前登录态,若检测到登录过期时弹窗提示用户。
协作冲突检测:在问卷内容变更触发自动保存或者手动保存和发布时,进行冲突检测。
a. 不同窗口触发保存的时间超过2分钟,不存在冲突,新窗口获取编辑权限
b. 不同窗口触发保存的时间不超过两分钟,存在冲突,根据保存用户是否相同弹出不同的弹窗提示。
效果展示
登录失效弹窗
0897f1bcdfc9caea6ab2af6e5ccf06a

协作冲突弹窗
相同用户保存:
094a19b87589075f2483d19ed687b67

不同用户保存:
d3977681d2b3fba2ebee26dfeea0c78

技术方案链接
https://loz4ql5x1y.feishu.cn/docx/T2BLdL4lHoR2G4xMJQ8cggDonkd?from=from_copylink

PR链接
#287

🌈 参与项目贡献

👍 鼓励大家参与社区和项目建设。

我们的初心一直不变:”让调研更轻松“,👏👏👏期待你的加入!!!



1、如何参与?
不论您是新手还是大佬,都可以从此入手选择您的参与方式:如何参与建设

2、了解项目理念
生态发展计划

问卷编辑-题型上下移动选区未移动问题

分类

前端

系统

mac

复现步骤

1、当题型处于活动态时,使用右侧操作栏 上移或下移 操作移动当前题型,活动态选区没跟着题型移动
image

2、题型已移动、活动选区还在之前位置
image

预期结果

当活动态题型移动位置时,活动选区跟着题型走

重复提交

能否添加配置,限制是否可以重复提交

[feature]: 支持题目标题与选项上传图片

改动原因

题目标题和选项新增上传图片功能,可以在问卷投放页和数据分析中展示配图

改动内容

在问卷编辑端,题目标题和选项编辑的富文本功能栏,支持使用内置的上传api上传图片。
上传api支持本地存储、oss、七牛云存储,需要自行配置。

改动验证

#291

平台功能增强认领:小功能建设

由于开源项目是以打造调研基座为方向,我们更多在于建设灵活高扩展的架构和技术方案,平台功能上主要以提供基础版为主。但我们也看到,其实部分基础功能可以更进一步。所以希望和社区一起进行已有功能的完善和优化。

如果你想熟悉工程或者参与贡献,这是一个比较好的机会。

Q&A

和官方Feature: https://github.com/didi/xiaoju-survey/issues/45 的区别?
1、官方Feature是体系性的建设、完整功能的建设
2、小功能建设是在已有功能上进行迭代和优化,即 enhancement

方式

1、留言序号进行相关小功能认领:如认领1
2、官方会将跟进人标记到此Issue
3、自测并提交PR到develop分支

List

不定期补充可认领的小功能列表,同时欢迎大家提Issue反馈小功能,定期采纳 🤝

💡 MAJOR CHANGELOG

2024.5.20

对应docker tag1.1.2

web部署由托管在server变更为nginx启动,docker启动的端口从3000变为80:
image

2024.5.10

对应docker tag1.1.0

web升级Vue3,具体查看升级文档

2024.1.30

变更

对应commit tag1.2.0

对应docker tag1.0.4

服务端架构应用koa升级成nestjs,变化点如下:
1、服务端架构升级到nestjs
2、安全插件化方案
3、传输加密使用rsa加密
4、服务端单测
5、日志
6、环境变量放到配置文件维护,同时删除无效变量,具体查看.env文件
特别注意DB地XIAOJU_SURVEY_MONGO_AUTH_SOURCE需要单独配置

XIAOJU_SURVEY_MONGO_DB_NAME=xiaojuSurvey
XIAOJU_SURVEY_MONGO_URL=mongodb://localhost:27017
XIAOJU_SURVEY_MONGO_AUTH_SOURCE=


XIAOJU_SURVEY_RESPONSE_AES_ENCRYPT_SECRET_KEY=dataAesEncryptSecretKey
XIAOJU_SURVEY_HTTP_DATA_ENCRYPT_TYPE=rsa

XIAOJU_SURVEY_JWT_SECRET=xiaojuSurveyJwtSecret
XIAOJU_SURVEY_JWT_EXPIRES_IN=8h

XIAOJU_SURVEY_LOGGER_FILENAME=./logs/app.log

7、升级前版本:https://github.com/didi/xiaoju-survey/releases/tag/v1.1.0

2024.1.17

变更

对应commit tag1.2.0

对应docker tag1.0.3

优化服务端环境变量引入方式,主要优化了配置引用方式和命名规范:
1、xiaojuSurveyMongoUrl 规范化成 XIAOJU_SURVEY_MONGO_URL
2、xiaojuSurveyJwtSecret 规范化成 XIAOJU_SURVEY_JWT_SECRET
3、xiaojuSurveyJwtExpiresIn 规范化成 XIAOJU_SURVEY_JWT_EXPIRES_IN
4、xiaojuSurveySessionExpireTime 使用 XIAOJU_SURVEY_JWT_EXPIRES_IN
5、xiaojuSurveyEncryptType 规范化成 XIAOJU_SURVEY_ENCRYPT_TYPE
6、xiaojuSurveyDataAesEncryptSecretKey 规范化成 XIAOJU_SURVEY_ENCRYPT_SECRET_KEY
7、xiaojuSurveyAesCodelength 使用 XIAOJU_SURVEY_ENCRYPT_TYPE_LEN

来源

@alwayrun PR 🎉

影响

⚠️ 服务重新部署前,特别注意您的环境配置,需重新配置环境变量,尤其是MongoDB和启动,如下提示,最新内容看文档

希望增加跳题逻辑

希望增加跳题逻辑,例如在有些情况下,输入题输入了某个值或选择题选了某可以跳过(或隐藏)中间一些题不做

image

windows服务启动接口404

  • 分类:后端
  • 类别:Bug
  • 标题: 所有的接口都是404
  • 操作系统: windows
  • 内容:所有的接口都是404
  • 操作步骤:通过 npm run local启动服务端后,前端项目也启动,访问前端页面,请求接口,所有的接口都报404
  • 期待的行为:接口可以正常访问
  • 实际行为:所有接口404

image

Vue3风格统一认领:选项式升级成组合式API

升级Vue3

由于vue2及周边生态已经停止维护,同时vue3的生态建设已经日趋完善与稳定,进行了vue3的升级。主要变动如下:
vue及其必相关必要依赖的升级,包括

  1. vue,为保持功能稳定,待升级稳定后再优化至composition写法。升级部分break change写法,如slot="body" -> <template #body>
  2. vue router
  3. vuex,并解耦部分写法至 hook,例如this.app.store => useStore()
  4. vuedraggable
  5. element-ui -> element-plus
  6. 脚手架从vue-cli升级至vite

最后一题活动状态下删除操作会触发两处问题

分类

前端

系统

Mac

复现步骤

当前题型在活动状态且是最后一个题型时删除会触发两处问题
1: 当删除操作发生时,当前题型已不再是活动题型,所以侧边题型属性设置域区要消失
2、由于侧边题型属性设置域区未消失,会导致 Setter 部分组件依赖于 modelConfig 内部组件出错

准备操作前展示如下:
image

操作完成后如下:
image

服务启动报错Invalid database name: ''

分类:
环境
类别:
操作系统:
内容:
启动docker报错,提示未经验证的数据库name
报错:PM ERROR [ExceptionHandler] Invalid database name: '' MongoServerError: Invalid database name: '' at Connection.onMessage (/xiaoju-survey/server/node_modules/mongodb/lib/cmap/connection.js:202:26)
操作步骤:
启动命令如下
docker run -p 8080:3000 -v xxx --name running-xiaoju-survey-test -e XIAOJU_SURVEY_MONGO_URL=mongodb://[name]:[password]@[host]:[port]/database xiaojusurvey/xiaoju-survey:1.0.4

希望能实现对接第三方系统的用户系统和单点登录认证

1、对接第三方系统的用户系统
xiaoju服务端API能够提供用户同步接口,实现第三方用户系统和xiaoju用户系统打通。

2、xiaoju web管理端实现用户单点登录
第三方管理用户数据通过服务端API同步到xiaoju问卷系统,用户在第三方系统登录后,通过xiaoju系统的提供的单点认证接口获取到ticket,跳转到xiaoju问卷管理端时携带ticket参数实现用户单点认证和登录,用户可在xiaoju管理端创建和管理自己的问卷。

3、xiaoju web答题端实现用户单点登录
第三方普通用户数据通过服务端API同步到xiaoju问卷系统,用户在第三方系统登录后,通过xiaoju系统的提供的单点认证接口获取到ticket,跳转到xiaoju问卷作答端时携带ticket参数实现用户单点认证和登录,用户可在xiaoju作答端完成问卷作答和提交。

4、第三方系统对接xiaoju问卷作答数据
xiaoju服务端API能够提供问卷作答数据获取API(用户作答统计数据或用户是否作答记录数据)。

题型属性-显示序号

目前我看系统中针对每个题型都有一个 显示序号 的属性设置,是否有这种特别的场景需要对某些题型设置成显示或隐藏序号,如果没有这种部分题型单独设置 显示序号 的要求,这个属性设置是否归类到问卷级更合理,正常情况 显示序号 应该是针对整份问卷所有题目的,如果按现在设计放在题型级属性设置上,配置一份问卷隐藏 显示序号 需要对整份问卷所有题型都进行设置,这样增加了配置问卷交互操作次数

❤️🌟 谁在用XIAOJUSURVEY?

我们希望通过这个 issue 激发社区建立更多联系,以推动 XIAOJUSURVEY 生态系统的发展。

您可以在这里分享对 XIAOJUSURVEY 的感兴趣之处、项目的应用经验、遇到的问题和期待等。

同时,欢迎您留下以下相关信息,来分享经验以及扩大您项目的影响力

项目/应用名称:
项目应用介绍:
项目网站地址:
您公司的名称:
您所在的城市:

👏 期待您的参与和分享! 👍

希望VUE3版本不要过度设计

当前VUE2版本前端设计过于臃肿
前端二开理解难度极大
希望使用标准开发结构,让更多人容易上手,从而贡献项目

物料题型通用组件 BaseChoice 单选类型题重复触发 change 事件问题

分类

前端

系统

mac

复现步骤

1、render/components/MaterialGroup.vue组件下例方法增加测试日志输出

const handleChange = (data) => {
  console.log(data.key, data.value) // 增加此行代码
  emit('formChange', data)
}

2、选择一份已有问卷或创建一份新的问卷进入编辑页
3、在编辑页增加一个 单项选择题型, 保存并发布
4、进入投放问卷页,打开调试制控台,重复点击单选输入题同一选项

操作测试结果如下:
image

不能启动Server服务

操作系统:macOS 13.4 (22F66)
Node版本:v16.19.0

问题描述:

warning package.json: No license field
$ npm run copy && npm run launch

> [email protected] copy
> cp -rf ./src/ ./build/


> [email protected] launch
> npm run build && SERVER_ENV=local node ./build/index.js


> [email protected] build
> tsc

src/apps/security/db/mongo.ts:1:51 - error TS2307: Cannot find module 'mongodb' or its corresponding type declarations.

1 import { Collection, MongoClient, ObjectId } from 'mongodb'
                                                    ~~~~~~~~~

src/apps/surveyManage/db/mongo.ts:1:51 - error TS2307: Cannot find module 'mongodb' or its corresponding type declarations.

1 import { Collection, MongoClient, ObjectId } from 'mongodb'
                                                    ~~~~~~~~~

src/apps/surveyManage/index.ts:8:23 - error TS2307: Cannot find module 'joi' or its corresponding type declarations.

8 import * as Joi  from 'joi'
                        ~~~~~

src/apps/surveyManage/service/surveyService.ts:6:20 - error TS2307: Cannot find module 'lodash' or its corresponding type declarations.

6 import * as _ from "lodash";
                     ~~~~~~~~

src/apps/surveyManage/service/surveyService.ts:7:25 - error TS2307: Cannot find module 'moment' or its corresponding type declarations.

7 import * as moment from "moment";
                          ~~~~~~~~

src/apps/surveyManage/utils/index.ts:4:23 - error TS2307: Cannot find module 'joi' or its corresponding type declarations.

4 import * as Joi  from 'joi'
                        ~~~~~

src/apps/surveyPublish/db/mongo.ts:1:51 - error TS2307: Cannot find module 'mongodb' or its corresponding type declarations.

1 import { Collection, MongoClient, ObjectId } from 'mongodb'
                                                    ~~~~~~~~~

src/apps/surveyPublish/index.ts:7:22 - error TS2307: Cannot find module 'joi' or its corresponding type declarations.

7 import * as Joi from 'joi'
                       ~~~~~

src/apps/surveyPublish/service/surveySubmitService.ts:5:25 - error TS2307: Cannot find module 'moment' or its corresponding type declarations.

5 import * as moment from 'moment'
                          ~~~~~~~~

src/apps/surveyPublish/utils/index.ts:3:23 - error TS2307: Cannot find module 'joi' or its corresponding type declarations.

3 import * as Joi  from 'joi'
                        ~~~~~

src/apps/user/db/mongo.ts:1:51 - error TS2307: Cannot find module 'mongodb' or its corresponding type declarations.

1 import { Collection, MongoClient, ObjectId } from 'mongodb'
                                                    ~~~~~~~~~

src/apps/user/index.ts:3:22 - error TS2307: Cannot find module 'joi' or its corresponding type declarations.

3 import * as Joi from 'joi'
                       ~~~~~

src/apps/user/service/userService.ts:4:8 - error TS2307: Cannot find module 'jsonwebtoken' or its corresponding type declarations.

4 } from 'jsonwebtoken';
         ~~~~~~~~~~~~~~

src/apps/user/utils/index.ts:3:23 - error TS2307: Cannot find module 'joi' or its corresponding type declarations.

3 import * as Joi  from 'joi'
                        ~~~~~


Found 14 errors in 13 files.

Errors  Files
     1  src/apps/security/db/mongo.ts:1
     1  src/apps/surveyManage/db/mongo.ts:1
     1  src/apps/surveyManage/index.ts:8
     2  src/apps/surveyManage/service/surveyService.ts:6
     1  src/apps/surveyManage/utils/index.ts:4
     1  src/apps/surveyPublish/db/mongo.ts:1
     1  src/apps/surveyPublish/index.ts:7
     1  src/apps/surveyPublish/service/surveySubmitService.ts:5
     1  src/apps/surveyPublish/utils/index.ts:3
     1  src/apps/user/db/mongo.ts:1
     1  src/apps/user/index.ts:3
     1  src/apps/user/service/userService.ts:4
     1  src/apps/user/utils/index.ts:3
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

问卷配置题型标题栏编辑框无法失去焦点问题

分类

前端

系统

mac

复现步骤

1、点击题目标题进入可编辑模式, 编辑完成后
2、点击背景高亮区域任何地方都无法让标题编辑框失去焦点
3、正常交互流程应该是点击非标题编辑框以外的任何地方都应该使其失去焦点

image

问卷编辑在题型切换选中状态时会触发两次选中状态事件

分类

前端

系统

Mac

复现步骤

questionModule/PreviewPanel.vue
在下列函数处增加 console.log(currentEditOne) 测试复现问题

async onSelectEditOne(currentEditOne) {
    console.log(currentEditOne)
    this.$store.commit('edit/setCurrentEditOne', currentEditOne)
},

预期结果

不同题型切换只会触发一次选中,对于标题区域及提交区域切换只触发了一次选中,但中间问卷配置区域题型切换则触发两次选中

实际结果

第一次选中标题(当前选中区域在标题,则控制台输出为 mainTitle)
image

第二次选中第一题(当前选中区域在第一题,则控制台输出为第一行两行 索引号)
image

第三次选中第二题(当前选中区域在第二题,则控制台输出为第二两行 索引号)
image

@soarpenguin @lijinsuo @Trinea @MingliangT

之前创建的问卷,启用预览报错

分类

前端

系统

    Uncaught (in promise) TypeError: Cannot convert undefined or null to object
          at Function.keys (<anonymous>)
          at QuestionWrapper.vue:62:12
          at ReactiveEffect.fn (chunk-GLFS4MB4.js?v=ccac3a66:1615:17)
          at ReactiveEffect.run (chunk-GLFS4MB4.js?v=ccac3a66:1410:23)
          at get value (chunk-GLFS4MB4.js?v=ccac3a66:1627:111)
          at unref (chunk-GLFS4MB4.js?v=ccac3a66:1252:29)
          at Object.get (chunk-GLFS4MB4.js?v=ccac3a66:1676:39)
          at Proxy._sfc_render (QuestionWrapper.vue:5:20)
          at renderComponentRoot (chunk-GLFS4MB4.js?v=ccac3a66:2494:17)
          at ReactiveEffect.componentUpdateFn [as fn] (chunk-GLFS4MB4.js?v=ccac3a66:6834:46) 

复现步骤

 之前创建的问卷,启用问卷预览的时候提示错误

看了源码 : 老的问卷没有 rangeConfig: {}、建议把 QuestionWrapper.vue 文件中第61行新增判断改为

if (
       QUESTION_TYPE.RATES.includes(type) &&
       rest.rangeConfig &&
     Object.keys(rest.rangeConfig).filter((index) => rest.rangeConfig[index].isShowInput).length > 0
) {
        let { rangeConfig, othersValue } = useShowInput(field)
        moduleConfig.rangeConfig = unref(rangeConfig)
        moduleConfig.othersValue = unref(othersValue)
}

能删除在逻辑设置中的题目

分类

前端

系统

mac

复现步骤

在逻辑最后一空选中题目
截屏2024-05-30 17 41 50
删除题目
截屏2024-05-30 17 42 01

预期结果

不能被删除或者删除时input内容被清空

实际结果

截屏2024-05-30 17 42 16

创建问卷失败

分类

后端

系统

复现步骤

问卷备注留空,创建问卷

预期结果

创建成功

实际结果

创建失败,后端报500,debug发现'remark' is not allowed to be empty

【北大开源实践】- 问卷断点续答 - 前端

功能描述

  1. B端功能设置:增加断点续答和自动回填上次填写内容的两项配置。

  2. C端功能运用:
    a. 同一答题者再次进入问卷时,如果前一次编辑内容未提交,则出现断点续答确认弹窗。
    b. 同一答题者再次进入问卷时,如果前一次编辑内容已提交,则出现回填确认弹窗

效果展示

1. B端展示
image
2. C端展示

填写问卷后刷新,出现弹窗:

image

点击确定后,问卷会展示上次填写的内容:

image

提交问卷后刷新,出现弹窗:

image

点击确认后,问卷会展示上次填写的内容;点击取消后,展示空白问卷

技术方案链接

https://zq6hwnc7q7c.feishu.cn/docx/SBemdhOZVoz2u4xr640ctdRTnY5

PR链接

#282

🚀 官方Features

👏👏以下是官方Feature,鼓励您参与共建。
开源项目以打造调研基座为方向:深度建设灵活高扩展的架构和技术方案,并提供基础版功能,社区可在此基础上快速定制和扩展复杂场景。

共建指南

1、Feature认领
在此 Issue 留言认领:

认领:// 描述认领哪个Feature
完成时间:// 开发完成即提交PR的具体时间

官方回复确认后,等于认领成功。
认领成功后,需要进行功能设计和技术方案check:

  • 官方一周内将给出具体功能要求的Feature Issue链接,认领者可进行建议回复
  • 认领者提交技术方案(设计思路),待review和确认

建议沟通完成后再进行代码开发。
(以上讨论环节时长视实际情况而定,此过程均为了保障项目质量、提升贡献有效性和代码接收率)

功能将进行拆分描述,参与者可进一步认领感兴趣建设的部分,同时也鼓励和欢迎提出idea进行讨论,碰撞出更好的方案

2、PR
在Feature Issue中附上PR链接;
PR请查阅 贡献手册

请特别注意分支使用develop


项目重大迭代变更记录

#48


可参与的体系化建设

体系建设

  • 物料广场
  • 国际化
  • 智能化

(持续收集...)

问卷类型扩展

  • 考试问卷
  • 测评问卷
  • 有声问卷
  • 视频问卷

(持续收集...)

渲染端扩展

  • 嵌入式问卷:问卷SDK,加入

可认领的Feature池

功能尝鲜 / 技术尝鲜 / 新手友好:

平台能力

  • 全局配置:全部必填、全部显示类型、全部显示序号、全部显示分割线
  • 问卷编辑撤销和恢复
  • Excel导入
  • 显示逻辑可视化
  • 无效答卷
  • 结果页设置 - 扩展跳转

(持续收集...)

题型

  • 填空题
  • 下拉选择题
  • 多级联动题
  • 图片上传题
  • 文件上传题
  • 日期选择题
  • 时间选择题
  • 矩阵多选
  • 矩阵评分
  • 矩阵NPS评分
  • 矩阵填空
  • 矩阵多行填空

(持续收集...)

题型配置

  • 单选/多选设置横排/竖排
  • 标题引用
  • 选项随机
  • 默认选中第一项
  • 选项分组

(持续收集...)

工程能力

  • schema core
  • 前端单测(物料、数据、基础函数)

(持续收集...)



以下Feature已录入月迭代计划,不可认领

2024年7月Feature

  • 跳转逻辑 @skique
  • 7.25,考试问卷(具体放出的功能待六月方案设计后同步)@skique
  • 7.18,选项引用@nilnoop

2024年6月Feature

2024年5月Feature

  • 架构:5.29,渲染统一公测版 @chaorenluo
  • 架构:5.20,web部署由托管在server变更为nginx启动,docker:1.1.2 @chaorenluo

 ❌ 5.30,数据分析可视化 @skique

2024年4月Feature

 ❌ 4.25,显示逻辑(#36@skique

  • 4.18,资源上传能力建设,docker:1.0.8 @luch1994
  • 4.11,升级vue3公测版
  • 4.3,nps评分,docker:1.0.6 @chaorenluo

2024年3月Feature

  • 3.28,数据推送,docker:1.0.7 #56@luch1994
  • 3.25,C端换皮肤,docker:1.0.5 @skique

 ❌ 3.21,C端换皮肤,docker:1.0.5 @skique

  • 3.14,服务端问卷编辑、回收的核心单测 @luch1994
  • 3.7,C端答题进度条 @chaorenluo

2024年2月Feature

  • 2.5,服务端架构升级nestjs ,docker:1.0.4 @luch1994
  • 2.1,performance压缩图片,优化编辑器图片懒加载 (#59) @nilnoop

2024年1月Feature

 ❌ 1.18,服务端架构升级

 ❌ 1.25,问卷列表筛选 @Realabiha

 ❌ 1.25,服务端架构升级 @luch1994

 ❌ 2.1,服务端日志 @luch1994

  • 1.30,服务端架构升级(服务端日志) @luch1994
    服务端架构升级试用时间:1.30~2.6,2.6正式发布

问卷编辑-题型拖拽问题

分类

前端

系统

mac

复现步骤

1、当前问卷有三个题目如下图
image

2、选中当前问卷第一题,按住右侧操作栏移动图标往第二题后拖动
image

3、拖动到目的地后放开拖动按钮则会回弹到原来题型所有位置
image

预期结果

两种情况:
1、从前往后拖,拖动到某一目标题型后,目标题型处之前全往前移
2、从后往前拖,拖动到某一目标题型前,目标题型处之后全往后移

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.