小程序-基于java+SpringBoot+Vue的乡村研学旅行平台计划与实现 ...

打印 上一主题 下一主题

主题 828|帖子 828|积分 2484

项目运行

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 4G内存以上;或者 Mac OS;
5.是否Maven项目: 否;检察源码目录中是否包罗pom.xml;若包罗,则为maven项目,否则为非maven项目
6.数据库:MySql 5.7/8.0等版本均可;
7.小程序:uniapp
毕设资助,指导,本源码分享,调试部署(见文末)
体系介绍:

乡村研学旅行平台是一个旨在提高乡村研学信息管理效率的体系,它通过互联网技术,实现了数据内容管理的现代化。该平台不仅为管理员提供了便捷的数据管理功能,还提升了用户的满足度。体系包罗了收货地点管理、购物车管理、客服聊天管理、字典表管理、论坛管理、景点管理等多个模块,实现了从数据录入到汇总分析的全过程管理。
团体功能包罗:
  1. 收货地址管理
  2. 购物车管理
  3. 客服聊天管理
  4. 字典表管理
  5. 论坛管理
  6. 景点管理
  7. 景点收藏管理
  8. 景点评价管理
  9. 景点预约管理
  10. 商品管理
  11. 商品收藏管理
  12. 商品评价管理
  13. 商品订单管理
  14. 研学管理
  15. 研学收藏管理
  16. 研学留言管理
  17. 研学报名管理
  18. 用户管理
  19. 管理员管理
复制代码
前台模块:
  1. 用户登录/注册
  2. 景点浏览与预约
  3. 商品浏览与购买
  4. 研学活动参与
  5. 论坛交流
复制代码
背景模块:
  1. 乡村研学管理
  2. 商品信息管理
  3. 商品类型管理
  4. 用户信息管理
  5. 订单处理
  6. 数据字典管理
  7. 论坛帖子管理
复制代码

功能截图:




代码实现:

  1. var _default = {
  2.   data: function data() {
  3.     return {
  4.       username: '',
  5.       password: '',
  6.       codes: [{
  7.         num: 1,
  8.         color: '#000',
  9.         rotate: '10deg',
  10.         size: '16px'
  11.       }, {
  12.         num: 2,
  13.         color: '#000',
  14.         rotate: '10deg',
  15.         size: '16px'
  16.       }, {
  17.         num: 3,
  18.         color: '#000',
  19.         rotate: '10deg',
  20.         size: '16px'
  21.       }, {
  22.         num: 4,
  23.         color: '#000',
  24.         rotate: '10deg',
  25.         size: '16px'
  26.       }],
  27.       options: ['请选择登录用户类型'],
  28.       optionsValues: ['', 'yonghu'],
  29.       index: 0,
  30.       roleNum: 0
  31.     };
  32.   },
  33.   onLoad: function onLoad() {
  34.     var options = ['请选择登录用户类型'];
  35.     var menus = _menu.default.list();
  36.     this.menuList = menus;
  37.     for (var i = 0; i < this.menuList.length; i++) {
  38.       if (this.menuList[i].hasFrontLogin == '是') {
  39.         options.push(this.menuList[i].roleName);
  40.         this.roleNum++;
  41.       }
  42.     }
  43.     if (this.roleNum == 1) {
  44.       this.index = 1;
  45.     }
  46.     this.options = options;
  47.     this.randomString(4);
  48.     this.styleChange();
  49.   },
  50.   methods: {
  51.     randomString: function randomString() {
  52.       var len = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 4;
  53.       var chars = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
  54.       var colors = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
  55.       var sizes = ['28', '30', '32', '34', '36'];
  56.       for (var i = 0; i < len; i++) {
  57.         // 随机验证码
  58.         var key = Math.floor(Math.random() * chars.length);
  59.         this.codes[i].num = chars[key];
  60.         // 随机验证码颜色
  61.         var code = '#';
  62.         for (var j = 0; j < 6; j++) {
  63.           var _key = Math.floor(Math.random() * colors.length);
  64.           code += colors[_key];
  65.         }
  66.         this.codes[i].color = code;
  67.         // 随机验证码方向
  68.         var rotate = Math.floor(Math.random() * 30);
  69.         var plus = Math.floor(Math.random() * 2);
  70.         if (plus == 1) rotate = '-' + rotate;
  71.         this.codes[i].rotate = 'rotate(' + rotate + 'deg)';
  72.         // 随机验证码字体大小
  73.         var size = Math.floor(Math.random() * sizes.length);
  74.         this.codes[i].size = sizes[size] + 'rpx';
  75.       }
  76.     },
  77.     styleChange: function styleChange() {
  78.       this.$nextTick(function () {
  79.         // document.querySelectorAll('.uni-yaoxianStyle .uni-yaoxianStyle-yaoxianStyle').forEach(el=>{
  80.         //   el.style.backgroundColor = this.loginFrom.content.yaoxianStyle.backgroundColor
  81.         // })
  82.       });
  83.     },
  84.     onRegisterTap: function onRegisterTap(tableName) {
  85.       uni.setStorageSync("loginTable", tableName);
  86.       this.$utils.jump('../register/register');
  87.     },
  88.     onForgetTap: function onForgetTap() {
  89.       this.$utils.jump('../forget/forget');
  90.     },
  91.     onLoginTap: function onLoginTap() {
  92.       var _this = this;
  93.       return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
  94.         var res;
  95.         return _regenerator.default.wrap(function _callee$(_context) {
  96.           while (1) {
  97.             switch (_context.prev = _context.next) {
  98.               case 0:
  99.                 if (_this.optionsValues[_this.index]) {
  100.                   _context.next = 3;
  101.                   break;
  102.                 }
  103.                 _this.$utils.msg("请选择登陆人类型");
  104.                 return _context.abrupt("return");
  105.               case 3:
  106.                 if (true) {
  107.                   _context.next = 6;
  108.                   break;
  109.                 }
  110.                 _this.$utils.msg("请输入正确的验证码");
  111.                 return _context.abrupt("return");
  112.               case 6:
  113.                 _context.next = 8;
  114.                 return _this.$api.login("".concat(_this.optionsValues[_this.index]), {
  115.                   username: _this.username,
  116.                   password: _this.password
  117.                 });
  118.               case 8:
  119.                 res = _context.sent;
  120.                 uni.setStorageSync("token", res.token);
  121.                 uni.setStorageSync("nickname", _this.username);
  122.                 uni.setStorageSync("nowTable", "".concat(_this.optionsValues[_this.index]));
  123.                 _context.next = 14;
  124.                 return _this.$api.session("".concat(_this.optionsValues[_this.index]));
  125.               case 14:
  126.                 res = _context.sent;
  127.                 uni.setStorageSync("userid", res.data.id);
  128.                 if (res.data.vip) {
  129.                   uni.setStorageSync("vip", res.data.vip);
  130.                 }
  131.                 uni.setStorageSync("role", "".concat(_this.options[_this.index]));
  132.                 _this.$utils.tab("../index/index");
  133.               case 19:
  134.               case "end":
  135.                 return _context.stop();
  136.             }
  137.           }
  138.         }, _callee);
  139.       }))();
  140.     },
  141.     optionsChange: function optionsChange(e) {
  142.       this.index = e.target.value;
  143.     }
  144.   }
  145. };
复制代码
源码获取:

大家点赞、收藏、关注、批评啦 、检察

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王海鱼

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表