离线版问卷-可集成到现有系统

目录标题

  • 离线版问卷
    • 💡前言
        • 亮点
        • 场景
        • 题外话
    • 🎨 预览
    • 🌈 技术栈
    • 📦 仓库
    • 💻 初始化
    • 🚀 启动
    • 🛠️ 打包
    • 🗂 目录结构
    • ✨ 使用方法
      • 集成【设计问卷】
      • 集成【填写问卷】
      • 集成【只读问卷】
      • 集成【填答简洁版问卷】
      • 集成【只读简洁版问卷】
    • 🏗️ 待完善
    • 📌 许可协议
    • 🎨 展示

离线版问卷

💡前言

某天在【掘金】看到低代码相关文章,结合自己开发过那么多的项目,系统集成 “表单”、“问卷”、”考试” 还是挺常见的,查阅了好多开源项目,都是独立的一个系统,很难集成到现有的项目中,于是我在想:为什么不能有一款【离线版问卷】,它提供 ”设计问卷页面“ ,也提供 “渲染问卷页面”,它只关心数据,不关心集成到哪个系统,不关心集成到哪个功能。

亮点
  1. 提供 “设计问卷” 页面
  2. 提供 “填写问卷” 页面
  3. 提供 “只读问卷” 页面
  4. 提供 “简洁填写问卷” 页面
  5. 提供 “简洁只读问卷” 页面
  6. 数据安全,点击【提交】按钮后,提交回调函数由“宿主系统”提供
场景
  • 想开发一款【问卷系统】,不用从0开始去构建:控件模型、事件交互、逻辑解析、问卷渲染,拿来即用。
  • 想开发一款【活动系统】,每个活动需要填写的 “报名信息” 不一样,引入【离线版问卷】,可进行动态配置填写字段。
题外话

项目目前处于小孩子刚出生阶段,会有很多的需要待完善的点,各位大佬有意见和需求和项目不足点欢迎提出来,我虚心学习请教。

生活中是卑微的打工人,社恐五颗星,大家口下留情,被业务折磨已经身心疲惫了。

祝大家:财源广进,金玉满堂,身体健康,笑口常开,吉祥如意乐无边!


🎨 预览

点击链接直达预览地址
在这里插入图片描述

🌈 技术栈

vue3

📦 仓库

questionnaire_web

💻 初始化

pnpm install

🚀 启动

pnpm dev

🛠️ 打包

pnpm build

🗂 目录结构

.
├── README.md
├── index.html
├── package.json
├── public
├── src
│   ├── App.vue
│   ├── api
│   ├── assets
│   ├── components
│   ├── hooks
│   │   ├── useAnimate  // 动画
│   │   ├── useDesignV1  // 问卷设计V1
│   │   │   ├── action.js  // 解析动作函数
│   │   │   ├── common  // 常用函数
│   │   │   ├── index.js
│   │   │   ├── materielComponents  // 控件源码
│   │   │   └── materielModel  // 控件模型
│   │   └── useGlobal  // 全局
│   ├── main.js
│   ├── router  // 路由
│   ├── stores
│   ├── styles  // 全局样式
│   ├── utils  // 工具集合
│   └── views
│       ├── 404.vue
│       ├── home.vue
│       └── questionnaire
│           └── v1
│               ├── answer  // 填答页面
│               ├── demo.vue
│               ├── design  // 设计页面
│               └── styles  // 样式
└── vite.config.js

✨ 使用方法

集成【设计问卷】

<script setup>
// 第一步: 拼凑地址, 后续换成部署后的域名
const designUrl = 'https://chenbz777.github.io/questionnaire_web/#/questionnaire/v1/design';// 第二步: 问卷数据, 实际上应该是通过接口获取
let questionnaireData = {};// 第三步: 设置问卷数据
function setQuestionnaireData() {console.log('setQuestionnaireData', questionnaireData);// setQuestionnaireData 方法是“离线版问卷”挂载上去的window.myIframe.contentWindow.setQuestionnaireData(questionnaireData);
}// 第四步: 配置完成后获取问卷数据存起来, 这里实际上应该是传递给接口进行保存
function getQuestionnaireData() {// getQuestionnaireData 方法是“离线版问卷”挂载上去的questionnaireData = window.myIframe.contentWindow.getQuestionnaireData();console.log('getQuestionnaireData', questionnaireData);
}
</script><template><div><iframe :src="designUrl" id="myIframe" class="my-iframe"></iframe></div>
</template><style scoped>
.my-iframe {display: block;width: 100%;height: 100vh;border: 0;
}
</style>

集成【填写问卷】

<script setup>
import { onMounted, nextTick } from 'vue';// 第一步: 拼凑地址, 后续换成部署后的域名
const answerUrl = 'https://chenbz777.github.io/questionnaire_web/questionnaire/v1/answer';// 第二步: 问卷数据, 实际上应该是通过接口获取
let questionnaireData = {};// 第三步: 设置问卷数据
function setQuestionnaireData() {console.log('setQuestionnaireData', questionnaireData);// data 是问卷填答数据,把onSubmit获取到的 submitData.data 原样传回去就可以进行数据回显const data = {};// setQuestionnaireData 方法是“离线版问卷”挂载上去的window.myIframe.contentWindow.setQuestionnaireData(questionnaireData, data);
}nextTick(() => {// 第四步: 挂载提交方法进行回调window.myIframe2.contentWindow.onSubmit = function (submitData) {/*** submitData: {*  errorList: [],  // 错误列表*  data: {},  // 问卷数据*  totalScore: 0,  // 总分*  score: 0,  // 得分*  answerSheet: [],  // 答题卡: 题目 - 得分、不得分0、未答-1*  startTime: 0,  // 开始答题时间(时间戳)*  endTime: 0,  // 答题结束时间(时间戳)*/console.log('onSubmit', submitData);};
});onMounted(() => {// 设置问卷数据: 实际上应该是请求数据获取后再调用setQuestionnaireData();
});
</script><template><div><iframe :src="answerUrl" id="myIframe" class="my-iframe"></iframe></div>
</template><style scoped>
.my-iframe {display: block;width: 100%;height: 100vh;border: 0;
}
</style>

集成【只读问卷】

<script setup>
import { onMounted } from 'vue';// 第一步: 拼凑地址, 后续换成部署后的域名
const readonlyUrl = 'https://chenbz777.github.io/questionnaire_web/#/questionnaire/v1/readonly';// 第二步: 问卷数据, 实际上应该是通过接口获取
let questionnaireData = {};// 第三步: 设置问卷数据
function setQuestionnaireData() {console.log('setQuestionnaireData', questionnaireData);// data 是问卷填答数据,把onSubmit获取到的 submitData.data 原样传回去就可以进行数据回显const data = {};// setQuestionnaireData 方法是“离线版问卷”挂载上去的window.myIframe.contentWindow.setQuestionnaireData(questionnaireData, data);
}onMounted(() => {// 设置问卷数据: 实际上应该是请求数据获取后再调用setQuestionnaireData();
});
</script><template><div><iframe :src="readonlyUrl" id="myIframe" class="my-iframe"></iframe></div>
</template><style scoped>
.my-iframe {display: block;width: 100%;height: 100vh;border: 0;
}
</style>

集成【填答简洁版问卷】

const answerEasyUrl = 'https://chenbz777.github.io/questionnaire_web/#/questionnaire/v1/answer/easy';

用法与【填答问卷】一致,只是去掉了"皮肤"样式

集成【只读简洁版问卷】

const readonlyEasyUrl = 'https://chenbz777.github.io/questionnaire_web/#/questionnaire/v1/readonly/easy';

用法与【只读问卷】一致,只是去掉了"皮肤"样式

🏗️ 待完善

  1. [控件] 附件上传

    因为没有存储库,所以没有接上传功能

  2. [控件] 日期时间

    暂时还没找到好的日期时间插件,后续再补充

📌 许可协议

本项目基于 MIT 许可证开源,详情请参阅 LICENSE 文件。

🎨 展示

题型
在这里插入图片描述

大纲
在这里插入图片描述

逻辑
在这里插入图片描述

事件
在这里插入图片描述

检查
在这里插入图片描述

题库
在这里插入图片描述

皮肤
在这里插入图片描述

预览

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/52520.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

省委书记邀约大学生创业,长沙又一次为年轻人沸腾

敢想敢做的大学生&#xff0c;一直是创新创业的主力军。尤其是这些年“学术型”创业团队在各行各业越来越多见&#xff0c;市场对他们的接纳和支持力度也越来越强&#xff0c;给了新一代的大学生们更大的底气。 以往&#xff0c;大学生创业经常“落地生根”&#xff0c;先搞事…

【编译原理】编译器概述、编译器结构、编译器实例

编译器概述、编译器结构、编译器实例 编译器概述 1.编译器是一个程序 核心功能是把源代码翻译成目标代码 比如源代码&#xff1a;C/C&#xff0c;Java&#xff0c;C#&#xff0c;html 目标代码&#xff1a;X86&#xff0c;IA64,ARM,… 把一种源程序翻译成另外一种源程序&…

Facebook的秘密算法:如何提升你的社交体验

在数字时代&#xff0c;社交媒体平台已经成为我们日常生活的重要组成部分。作为全球最大的社交网络之一&#xff0c;Facebook通过其复杂的算法&#xff0c;影响着亿万用户的社交体验。这些算法不仅决定了我们在平台上看到的内容&#xff0c;还在背后默默优化我们的互动方式。本…

[数据集][目标检测]汽车头部尾部检测数据集VOC+YOLO格式5319张3类别

数据集制作单位&#xff1a;未来自主研究中心(FIRC) 版权单位&#xff1a;未来自主研究中心(FIRC) 版权声明&#xff1a;数据集仅仅供个人使用&#xff0c;不得在未授权情况下挂淘宝、咸鱼等交易网站公开售卖,由此引发的法律责任需自行承担 数据集格式&#xff1a;Pascal VOC格…

SpringSecurity剖析

1、SpringSecurity 入门 1.1、简介 Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的实际标准。Spring Security是一个框架&#xff0c;致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样&#xff0c;Sp…

红帽RHCE认证值不值得考?RHCE认证有什么用?

在IT行业&#xff0c;红帽认证作为一项衡量Linux技能水平的重要标准&#xff0c;受到了广泛的关注和认可。 拥有一张权威认证证书无疑是提升自身竞争力、实现职业发展的重要途径。 RHCE认证作为Linux领域的顶级认证之一&#xff0c;其价值和意义不言而喻。 那么&#xff0c;…

PowerBi 柱形图,数据标签无法显示在端外

如图 即使设置了“数据标签”显示“端外“&#xff0c;仍然不作用。 原因其实是因为Y轴的数据范围设置不当&#xff0c;如图&#xff0c;当前Y轴范围是0到自动 只需要修改为最大和最小值都是自动即可&#xff0c;选中0 按backspace键删除&#xff0c;然后&#xff0c;鼠标在任意…

排班系统|基于Springboot+vue的医护人员排班系统(源码+数据库+文档)

排班系统|医护人员排班系统 目录 基于Springbootvue的医护人员排班系统 一、前言 二、系统设计 三、系统功能设计 医护类型管理 排班类型管理 科室信息管理 医护信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&…

C语言代码练习(第十八天)

今日练习&#xff1a; 48、猴子吃桃问题。猴子第1天摘下若干个桃子&#xff0c;当即吃了一半&#xff0c;还不过瘾&#xff0c;又多吃了一个。第2天早上又将剩下的桃子吃掉一半&#xff0c;又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时&…

【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)

文章目录 PyQt5超详细教程前言第7部分&#xff1a;生成图表与数据可视化7.1 matplotlib 与 PyQt5 的结合7.2 在 PyQt5 中嵌入 matplotlib 图表示例 1&#xff1a;嵌入简单的 matplotlib 图表代码详解&#xff1a; 7.3 动态生成图表示例 2&#xff1a;动态更新图表代码详解&…

电脑与电脑之间怎么快速传输文件?

若两台电脑在同一局域网&#xff0c;可以使用Windows远程桌面传输文件&#xff0c;或者使用远程看看这款免费的远程桌面软件&#xff0c;它支持在不同的网络之间传输文件&#xff0c;而且速度快、安全性高。 步骤1. 在两台电脑上下载、安装并运行远程看看。 步骤2. 注册一个远…

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染&#xff1a;一项综述 文章目录 大规模语言模型的基准数据污染&#xff1a;一项综述摘要1 引言 摘要 大规模语言模型&#xff08;LLMs&…

从基础到进阶:直播美颜API集成主播美颜SDK的开发指南

今天&#xff0c;小编将从基础概念开始&#xff0c;详细介绍如何集成直播美颜API&#xff0c;并通过主播美颜SDK实现高级美颜功能&#xff0c;为开发者提供清晰的开发指南。 一、什么是直播美颜API&#xff1f; 直播美颜API是一套接口&#xff0c;允许开发者在直播过程中对视…

别找了!包含gpt在内的国内可以使用的Ai网站都在这了【最新可用】

在当今人工智能迅速发展的时代&#xff0c;智能创作与对话平台为用户提供了多样化的功能支持。以下是一些国内代表性的GPT平台&#xff0c;涵盖了从个人到企业的广泛需求&#xff0c;您可以根据自己的需求灵活选择。我们还为您整理了这些平台的链接&#xff0c;方便直接体验。&…

Redis学习Day3——项目工程开发

扩展阅读推荐&#xff1a; 黑马程序员Redis入门到实战教程_哔哩哔哩_bilibili 使用git命令行将本地仓库代码上传到gitee/github远程仓库-CSDN博客 一、项目介绍及其初始化 学习Redis的过程&#xff0c;我们还将遇到各种实际问题&#xff0c;例如缓存击穿、雪崩、热Key等问题&…

Ubuntu20.04+ros-noetic配置Cartographer

一、概述 因为要配置激光SLAM&#xff0c;Cartographer属于激光雷达SLAM 中比较经典的一款&#xff0c;在学习之前先将其在Ubuntu20.04首先配置出来并成功运行demo。 二、具体操作 &#xff08;一&#xff09;概述 使用平台是Windows的wsl2上的Ubuntu20.04子系统&#xff0c;…

如何看待IBM中国研发部裁员?

如何看待IBM中国研发部裁员&#xff1f;近日&#xff0c;IBM中国宣布撤出在华两大研发中心&#xff0c;引发了IT行业对于跨国公司在华研发战略的广泛讨论。这一决定不仅影响了众多IT从业者的职业发展&#xff0c;也让人思考全球化背景下中国IT产业的竞争力和未来发展方向。面对…

Java+vue的医药进出口交易系统(源码+数据库+文档)

外贸系统|医药进出口交易系统 目录 基于Javavue的服装定制系统 一、前言 二、系统设计 三、系统功能设计 仓储部门功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设…

中国书法——孙溟㠭浅析碑帖《三希堂法帖》

孙溟㠭浅析碑帖《三希堂法帖》 全称是《三希堂石渠宝笈法帖》&#xff0c;是中国清代宫廷刻帖&#xff0c;一共三十二册。 清朝高宗弘历收藏了晋王羲之《快雪时晴帖》&#xff0c;王献之的《中秋帖》&#xff0c;王珣的《伯远帖》三种王氏原墨迹。故而把所藏法书之所…

农产品管理与推荐系统Python+Django网页界面+计算机毕设项目+推荐算法

一、介绍 农产品管理与推荐系统。本系统使用Python作为主要开发语言&#xff0c;前端使用HTML&#xff0c;CSS&#xff0c;BootStrap等技术和框架搭建前端界面&#xff0c;后端使用Django框架处理应用请求&#xff0c;使用Ajax等技术实现前后端的数据通信。实现了一个综合性的…