手机网站开发报价单,个人网页设计链接,做寂网站,门户网站模板 图片TOC
springboot451微乐校园pf
绪论
1.1 研究背景
当前社会各行业领域竞争压力非常大#xff0c;随着当前时代的信息化#xff0c;科学化发展#xff0c;让社会各行业领域都争相使用新的信息技术#xff0c;对行业内的各种相关数据进行科学化#xff0c;规范化管理。这…TOC
springboot451微乐校园pf
绪论
1.1 研究背景
当前社会各行业领域竞争压力非常大随着当前时代的信息化科学化发展让社会各行业领域都争相使用新的信息技术对行业内的各种相关数据进行科学化规范化管理。这样的大环境让那些止步不前不接受信息改革带来的信息技术的企业随时面临被淘汰被取代的风险。所以当今各个行业领域不管是传统的教育行业餐饮行业还是旅游行业医疗行业等领域都将使用新的信息技术进行信息革命改变传统的纸质化需要人手工处理工作事务的办公环境。软件信息技术能够覆盖社会各行业领域是时代的发展要求各种数据以及文件真正实现电子化是信息社会发展的不可逆转的必然趋势。本微乐校园也是紧跟科学技术的发展运用当今一流的软件技术实现软件系统的开发让考试信息完全通过管理系统实现科学化规范化程序化管理。从而帮助信息管理者节省事务处理的时间降低数据处理的错误率对于基础数据的管理水平可以起到促进作用也从一定程度上对随意的业务管理工作进行了避免同时微乐校园的数据库里面存储的各种动态信息也为上层管理人员作出重大决策提供了大量的事实依据。总之微乐校园是一款可以真正提升管理者的办公效率的软件系统。
1.2 目的和意义
信息数据的处理完全依赖人工进行操作会耗费大量的人工成本特别是面对大量的数据信息时传统人工操作不仅不能对数据的出错率进行保证还容易出现各种信息资源的低利用率与低安全性问题。更有甚者耽误大量的宝贵时间尤其是对信息的更新归纳与统计更是耗财耗力的过程。所以电子化信息管理的出现就能缓解以及改变传统人工方式面临的处境一方面可以确保信息数据在短时间被高效处理还能节省人力成本另一方面可以确保信息数据的安全性可靠性并可以实现信息数据的快速检索与修改操作这些优点是之前的旧操作模式无法比拟的。因此微乐校园为数据信息的管理模式的升级与改革提供了重要的窗口。
1.3 论文结构安排
为了帮助用户更好的了解和理解程序的开发流程与相关内容本文将通过六个章节进行内容阐述。
第一章描述了程序的开发背景程序运用于现实生活的目的与意义以及程序文档的结构安排信息
第二章描述了程序的开发环境包括程序开发涉及到的技术程序开发使用的数据存储工具等信息
第三章描述了程序着手进行开发时会面临的可行性问题并对程序功能以及性能要求进行描述
第四章描述了程序大功能模块下的功能细分信息以及存储程序数据的数据库表文件结构的设计信息等
第五章描述了程序的功能实现界面的内容也对程序操作人员操作的部分功能进行了描述
第六章描述了程序功能的测试内容并介绍了系统测试的概念与方法。
2 相关技术
2.1 SSM框架介绍
本课题程序开发使用到的框架技术英文名称缩写是SSM在JavaWeb开发中使用的流行框架有SSH、SSM、SpringMVC等作为一个课题程序采用SSH框架也可以SSM框架也可以SpringMVC也可以。SSH框架是属于重量级别的框架配置繁琐不够灵活修改程序需要修改好多个文件并且运行起来也占用内存较高CPU使用率相对也高SpringMVC是Spring开发的一套MVC架构更灵活更好用SSM框架取中间值既没有SSH臃肿也没有SpringMVC简化属于中间级别的在配置过程和使用过程中更能编写和理解。MyBatis框架取代Hibernate框架是因为它更灵活不需要完全在框架里操作它在数据操作上可以写出更灵活的代码它的性能也比Hibernate框架更稳定。总的来说使用SSM框架是通过综合考虑而使用的网上有很多的使用教程和心得体会而且SSM又是这么的流行用SSM框架开发是顺其自然的。
2.2 VUE介绍
Vue (读音 /vjuː/类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层不仅易于上手还便于与第三方库或既有项目整合。另一方面当与现代化的工具链以及各种支持类库结合使用时Vue 也完全能够为复杂的单页应用提供驱动。
2.3 Mysql数据库介绍
开发的程序面向用户的只是程序的功能界面让用户操作程序界面的各个功能那么很多人就会问用户使用程序功能生成的数据信息放在哪里的这个就需要涉及到数据库的知识了一般来说程序开发通常就会对常用数据存储工具的特点进行分析比对比如Mysql数据库的特点与优势Access数据库的特点与优势Sqlserver数据库的特点与优势等最终看哪个数据库与需要开发的程序比较匹配也符合程序功能运行需要的数据存储要求比如需要开发商业级别的程序存储的数据对数据库要求较高可以选用Oracle如果只是比较简单的程序对数据存储没有过多要求可以选用微软旗下的Access当开发程序要求数据库占用空间小并能满足程序数据存储要求时就可以考虑Oracle公司从瑞典MySQL AB公司在很早之前就收购过一个关系型数据库它是现在的Mysql数据库。在数据库工具里面它是最受认可的其中一个应用软件。需要说明的信息就是本程序的开发就运用到了此数据库。它将程序数据通过使用不同的数据表格进行保存在增加了程序数据的存储速度的时候也提高了数据库的灵活性。 图2.3展示的就是MySQL的架构图。 图2.3 MySQL数据库架构图
3 系统分析
当用户确定开发一款程序时是需要遵循下面的顺序进行工作概括为系统分析--系统设计--系统开发--系统测试无论这个过程是否有变更或者迭代都是按照这样的顺序开展工作的。系统分析就是分析系统需要做什么的问题主要目的就是确定系统的功能这也为接下来的工作做了一个好的开端。
3.1 系统可行性分析
开发一款程序软件不仅需要时间也需要人力物力资源。而进行可行性分析这个环节就是解决用户这方面的疑问看看程序在当前的条件下是否可以进行开发。
3.1.1 技术可行性分析
此程序选用的开发语言是Java这种编程语言有着丰富的数据类型在指令控制语句上也比较完善更重要的就是对类与对象的大力支持这些优点为程序开发者提供了技术保障尤其是现在代码都逐渐模块化有关系统功能开发的源码在网络上都公开展示了所以让具备一定计算机开发基础的开发人员独立开发系统在技术上也逐渐容易。
3.1.2 经济可行性分析
开发此程序最关键的设备就是一台电脑无论是学校计算机室配备的电脑还是自己入学以来购置的笔记本都是可以符合开发要求的设备另外在网络上学校本已完全覆盖了校园网所以在设备以及网络上无须考虑经济问题。
3.1.3 运行可行性分析
随着电脑软件以及配套硬件的完善升级当下的计算机环境是一片大好尤其是计算机已经广泛普及到家家户户所以计算机设备现在是随处可见由于本次开发的程序占有的资源耗费较小在一般的电脑或笔记本上都能轻松运转起来。
通过上面的可行性描述可以从经济技术运行方面解决程序开发是否可行的问题。因此可以认为该程序软件是可以进行开发的。
3.2 系统性能分析
系统性能分析也是比较重要的内容进行系统性能分析就是为了确保系统的功能要能够在生活中运行使用时达到规定的指标因此一个完整的系统软件是需要进行系统的性能分析这个步骤的。本次进行性能分析主要从易用性指标可扩展性指标系统健壮性指标系统安全性指标这几个方面进行分析。
3.2.1 易用性指标
本次程序软件的开发的目的就是让使用者可以通过使用该软件提高信息数据的管理效率同时该程序软件也需要针对不同的操作用户设置对应的功能因此此程序的操作流程应该尽量与用户日常操作软件的行为习惯相贴合另外程序软件的设计与开发也应考虑非计算机专业用户的计算机操作水平要让大部分使用者都可以轻松操作程序提供的各个功能。
3.2.2 可扩展性指标
当前需要开发的程序软件是根据当下的用户需求进行设计开发的但是随着时间的推移社会大环境的改变开发出的程序也是需要与时俱进的需要根据用户不断变换的需求进行相应的功能内容的扩展需要注意的就是当对成型的程序进行功能模块新增时仍然需要保证程序原有架构以及功能不能受到影响新增的功能模块在系统中也能够运行正常该指标达标也就可以保证此程序是可以在满足信息管理要求下从容应对市场环境的变化。
3.2.3 健壮性指标
程序软件的开发就是为了投入使用时可以一直稳定的处理各种数据信息程序软件一旦不稳定也会给使用者带来干扰。因此从性能分析的角度就要要求程序软件在应对使用者的误操作或者是使用者因为各种原因填写有误的数据等情况时程序要一直保持稳定并能够正常让使用者进行使用。当程序的某个功能模块出现异常时程序的其它功能模块也要能够确保正常使用。程序的健壮性指标达标可以让使用者产生良好的用户体验。
3.2.4 安全性指标
程序软件的安全问题是首要问题毕竟程序对应数据库里面存放的数据信息是庞大的里面也包括了许多重要的个人信息这就对程序要具备一个完善的安全机制提出了要求。因此程序必须要设置登录功能用以进行用户身份的检查以及身份和权限的匹配通过对不同用户身份进行功能约束绝不容忍用户越权操作程序。另外也需要时刻防范计算机病毒还有黑客通过采取针对性的办法进行安全应对确保程序时刻处于安全的环境让使用者放心使用。
3.3 系统流程分析
3.3.1 操作流程分析
程序上交给用户进行使用时需要提供程序的操作流程图如图3.1所示这样便于用户容易理解程序的具体工作步骤现如今程序的操作流程都有一个大致的标准即先通过登录页面提交登录数据通过程序验证正确之后用户才能在程序功能操作区页面操作对应的功能。 图3.1 程序操作流程图
3.3.2 登录流程分析
在这个部分需要对程序的登录功能模块的运行流程如图3.2所示进行单独说明。程序设置登录模块也是为了安全起见让用户使用放心登录模块主要就是让用户提交登录信息程序进行数据验证验证通过的用户才能够成功登录程序。 图3.2 程序登录流程图
3.3.3 信息添加流程分析
程序的添加功能就是提供给操作者录入信息的功能不管是涉及到用户信息添加还是其它功能模块涉及到的信息添加程序的信息添加流程如图3.3所示都是一致的。程序都是先对操作者录入的数据进行判定这个判定规则是一段提前编写完成的程序代码当程序判定数据符合要求时才会把操作者录入的数据登记在数据表里面比如添加的用户信息就会把新添加的用户信息写入用户信息的数据表文件里面。 图3.3 信息添加流程图
3.3.4 信息删除流程分析
当从程序里面删除某种无效数据时遵循程序的信息删除流程如图3.4所示先要选中操作者需要删除的数据程序为了预防操作者误删信息也会进行提示当操作者真正确定要删选中的信息时该信息就会从数据库中被永久删除。 图3.4 信息删除流程图
3.4 系统功能分析
程序功能需要花费一定时间进行分析与设计需要从大量的参考资料或者是社会上同种类型的程序中吸收对此程序开发有用的知识可以将其它同类型程序中的合理功能部分规划到此程序里面另外程序功能也需要针对用户的需求进行分析与设计。
4 系统设计
4.1 总体功能
微乐校园是根据需求定制开发开发软件选用idea平台配合MySQL数据库进行开发环境的搭建操作网站采用为微信小程序结构进行开发用户通过小程序访问项目,管理人员通过访问系统数据仅仅需要在客户端安装谷歌浏览器或者是当下常用浏览器就可以访问网站后台管理内容。
4.2 系统概要设计
本次拟开发的系统为了节约开发成本也为了后期在维护和升级上的便利性打算通过浏览器来实现系统功能界面的展示让程序软件的主要事务集中在后台的服务器端处理前端部分只用处理少量的事务逻辑。下面使用一张图如图4.2所示来说明程序的工作原理。 图4.2 程序工作的原理图
4.3 系统功能结构设计
在分析并得出使用者对程序的功能要求时就可以进行程序设计了。如图4.3展示的就是管理员功能结构图管理员在后台主要管理代跑管理、代跑收藏管理、代跑留言管理、代跑订单管理、字典管理、叫车管理、用户咨询管理、二手商品管理、二手商品评价管理、二手商品订单管理、失物招领管理、司机管理、用户管理、约战校园管理、约战校园留言管理、管理员管理等。 图4.3 管理员功能结构图
4.4 数据库设计
程序功能操作不管是添加修改还是删除等功能产生的数据都是经由数据库进行数据保存和更新的所以一个数据库设计的好坏也是程序是否好坏的判定标准因为程序的成功有一半的功劳都是靠数据库的优秀设计。数据库一旦设计得良好是可以减轻开发人员的开发负担的。
4.4.1 数据库E-R图设计
这个部分的设计需要使用到E-R图绘制工具常用的工具就是Visio工具来绘制E-R模型图这款工具不仅可以快速创建需要的E-R模型图而且该工具提供的操作界面很简单可以短时间内修改绘图界面的图形或者是文字的属性。在绘制E-R模型图时要分清楚各个图形代表的含义以免绘制出错E-R模型图由长方形实体椭圆形属性菱形关系这三部分图形符号组成绘制期间要区分开来用准确的图形符号代表相应的数据元素。
1下图是代跑订单实体和其具备的属性。 代跑订单实体属性图
2下图是用户实体和其具备的属性。 用户实体属性图
3下图是代跑实体和其具备的属性。 代跑实体属性图
4下图是失物招领实体和其具备的属性。 失物招领实体属性图
5下图是司机实体和其具备的属性。 司机实体属性图
6下图是代跑留言实体和其具备的属性。 代跑留言实体属性图
7下图是二手商品实体和其具备的属性。 二手商品实体属性图
8下图是叫车实体和其具备的属性。 叫车实体属性图
9下图是约战校园实体和其具备的属性。 约战校园实体属性图
10下图是用户咨询实体和其具备的属性。 用户咨询实体属性图
11下图是二手商品评价实体和其具备的属性。 二手商品评价实体属性图
12下图是二手商品订单实体和其具备的属性。 二手商品订单实体属性图
13下图是代跑收藏实体和其具备的属性。 代跑收藏实体属性图
14下图是约战校园留言实体和其具备的属性。 约战校园留言实体属性图
4.4.2 数据库表结构设计
数据库系统一旦选定之后需要根据程序要求在数据库中建立数据库文件并在已经完成创建的数据库文件里面为程序运行中产生的数据建立对应的数据表格数据表结构设计就是对创建的数据表格进行字段设计字段长度设计字段类型设计等当数据表格合理设计完成之后才能正常存储相关程序运行产生的数据信息。
表4.1代跑表
序号列名数据类型说明允许空1IdIntid否2yonghu_idInteger用户是3daipiao_nameString代跑标题是4daipiao_photoString代跑照片是5daipiao_addressString代跑地点是6daipiao_lianxirenString联系人是7daipiao_lianxifangshiString联系方式是8daipiao_typesInteger代跑类型是9daipiao_new_moneyBigDecimal代跑金额是10daipiao_timeDate代跑时间是11daipiao_contentString代跑内容是12daipiao_zhuangtai_typesInteger代跑状态是13insert_timeDate录入时间是14create_timeDate创建时间是
表4.2代跑收藏表
序号列名数据类型说明允许空1IdIntid否2daipiao_idInteger代跑是3yonghu_idInteger用户是4daipiao_collection_typesInteger类型是5insert_timeDate收藏时间是6create_timeDate创建时间是
表4.3代跑留言表
序号列名数据类型说明允许空1IdIntid否2daipiao_idInteger代跑是3yonghu_idInteger用户是4daipiao_liuyan_textString留言内容是5insert_timeDate留言时间是6reply_textString回复内容是7update_timeDate回复时间是8create_timeDate创建时间是
表4.4代跑订单表
序号列名数据类型说明允许空1IdIntid否2daipiao_order_uuid_numberString订单号是3daipiao_idInteger代跑是4yonghu_idInteger用户是5daipiao_order_true_priceBigDecimal实付价格是6daipiao_order_typesInteger订单类型是7daipiao_order_payment_typesInteger支付类型是8insert_timeDate订单创建时间是9create_timeDate创建时间是
表4.5字典表
序号列名数据类型说明允许空1IdIntid否2dic_codeString字段是3dic_nameString字段名是4code_indexInteger编码是5index_nameString编码名字是6super_idInteger父字段id是7beizhuString备注是8create_timeDate创建时间是
表4.6叫车表
序号列名数据类型说明允许空1IdIntid否2yonghu_idInteger用户是3siji_idInteger司机是4jiaoche_uuid_numberString叫车编号是5jiaoche_nameString叫车标题是6jiaoche_photoString叫车照片是7shangche_timeDate上车时间是8jiaoche_addressString上车地点是9jiaoche_quwang_addressString去往地点是10jiaoche_typesInteger叫车类型是11jiaoche_new_moneyBigDecimal出价是12jiaoche_contentString叫车详情是13insert_timeDate叫车时间是14jiaoche_zhuangtai_typesInteger叫车状态是15create_timeDate创建时间是
表4.7用户咨询表
序号列名数据类型说明允许空1IdIntid否2yonghu_idInteger提问人是3siji_idInteger回答人是4jiaoche_chat_issue_textString问题是5issue_timeDate问题时间是6jiaoche_chat_reply_textString回复是7reply_timeDate回复时间是8zhuangtai_typesInteger状态是9jiaoche_chat_typesInteger数据类型是10insert_timeDate提问时间是11create_timeDate创建时间是
表4.8二手商品表
序号列名数据类型说明允许空1IdIntid否2yonghu_idInteger用户是3shangpin_nameString二手商品名称是4shangpin_uuid_numberString二手商品编号是5shangpin_photoString二手商品照片是6shangpin_typesInteger商品类型是7shangpin_kucun_numberInteger二手数量是8shangpin_old_moneyBigDecimal二手商品原价是9shangpin_new_moneyBigDecimal现价/个是10shangpin_clicknumInteger二手商品热度是11shangpin_contentString二手商品介绍是12shangpin_deleteInteger逻辑删除是13insert_timeDate录入时间是14create_timeDate创建时间是
表4.9二手商品评价表
序号列名数据类型说明允许空1IdIntid否2shangpin_idInteger二手商品是3yonghu_idInteger用户是4shangpin_commentback_textString评价内容是5insert_timeDate评价时间是6reply_textString回复内容是7update_timeDate回复时间是8create_timeDate创建时间是
表4.10二手商品订单表
序号列名数据类型说明允许空1IdIntid否2shangpin_order_uuid_numberString订单号是3shangpin_idInteger二手商品是4yonghu_idInteger用户是5buy_numberInteger购买数量是6shangpin_order_true_priceBigDecimal实付价格是7shangpin_order_courier_nameString联系人是8shangpin_order_courier_numberString联系方式是9shangpin_order_typesInteger订单类型是10shangpin_order_payment_typesInteger支付类型是11insert_timeDate订单创建时间是12create_timeDate创建时间是
表4.11失物招领表
序号列名数据类型说明允许空1IdIntid否2yonghu_idInteger用户是3shiwuzhaoling_nameString物品名称是4shiwuzhaoling_uuid_numberString物品编号是5shiwuzhaoling_photoString物品照片是6shiwuzhaoling_addressString丢失地点/找到地点是7shiwuzhaoling_typesInteger物品类型是8jutishijian_timeDate具体时间是9shiwuzhaoling_clicknumInteger热度是10shiwuzhaoling_contentString详细描述是11shiwuzhaoling_zhuangtai_typesInteger状态是12insert_timeDate录入时间是13create_timeDate创建时间是
表4.12司机表
序号列名数据类型说明允许空1IdIntid否2siji_nameString司机姓名是3siji_phoneString司机手机号是4siji_id_numberString司机身份证号是5siji_photoString司机头像是6new_moneyBigDecimal余额是7siji_emailString电子邮箱是8create_timeDate创建时间是
表4.13用户表
序号列名数据类型说明允许空1IdIntid否2yonghu_nameString用户姓名是3yonghu_phoneString用户手机号是4yonghu_id_numberString用户身份证号是5yonghu_photoString用户头像是6yonghu_emailString电子邮箱是7new_moneyBigDecimal余额是8create_timeDate创建时间是
表4.14约战校园表
序号列名数据类型说明允许空1IdIntid否2yonghu_idInteger用户是3yuezhanxiaoyuan_nameString约战校园名称是4yuezhanxiaoyuan_photoString约战校园照片是5yuezhan_timeDate约战时间是6yuezhanxiaoyuan_addressString约战地点是7yuezhanxiaoyuan_typesInteger约战校园类型是8yuezhanxiaoyuan_clicknumInteger约战校园热度是9yuezhanxiaoyuan_contentString约战内容是10yuezhanxiaoyuan_deleteInteger逻辑删除是11insert_timeDate录入时间是12create_timeDate创建时间是
表4.15约战校园留言表
序号列名数据类型说明允许空1IdIntid否2yuezhanxiaoyuan_idInteger约战校园是3yonghu_idInteger用户是4yuezhanxiaoyuan_liuyan_textString留言内容是5insert_timeDate留言时间是6reply_textString回复内容是7update_timeDate回复时间是8create_timeDate创建时间是
表4.16管理员表
序号列名数据类型说明允许空1IdIntid否2usernameString学生名是3passwordString密码是4roleString角色是5addtimeDate新增时间是
5 系统实现
系统实现部分就是将系统分析系统设计部分的内容通过编码进行功能实现以一个实际应用系统的形式展示系统分析与系统设计的结果。前面提到的系统分析系统设计最主要还是进行功能系统操作逻辑的设计也包括了存储数据的数据库方面的设计等内容系统实现就是一个最终的实施阶段将前面的设计成果进行物理转化最终出具可以运用于实际的软件系统。
5.1 管理员功能介绍
5.1.1 约战校园列表
如图5.1显示的就是约战校园列表页面此页面提供给管理员的功能有查看约战校园、新增约战校园、修改约战校园、删除约战校园等。 图5.1 约战校园列表页面
5.1.2 代跑信息管理
代跑信息管理页面提供的功能操作有新增代跑修改代跑删除代跑操作。下图就是代跑信息管理页面。 图5.3 代跑信息管理页面
5.1.3代跑类型管理
代跑类型管理页面显示所有代跑类型在此页面既可以让管理员添加新的代跑信息类型也能对已有的代跑类型信息执行编辑更新失效的代跑类型信息也能让管理员快速删除。下图就是代跑类型管理页面。 图5.4 代跑类型列表页面
系统
YonghuController.java package com.controller;import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;/*** 用户* 后端接口* author* email
*/
RestController
Controller
RequestMapping(/yonghu)
public class YonghuController {private static final Logger logger LoggerFactory.getLogger(YonghuController.class);private static final String TABLE_NAME yonghu;Autowiredprivate YonghuService yonghuService;Autowiredprivate TokenService tokenService;Autowiredprivate DictionaryService dictionaryService;//级联表非注册的service//注册表serviceAutowiredprivate SijiService sijiService;/*** 后端列表*/RequestMapping(/page)public R page(RequestParam MapString, Object params, HttpServletRequest request){logger.debug(page方法:,,Controller:{},,params:{},this.getClass().getName(),JSONObject.toJSONString(params));String role String.valueOf(request.getSession().getAttribute(role));if(false)return R.error(511,永不会进入);else if(用户.equals(role))params.put(yonghuId,request.getSession().getAttribute(userId));else if(司机.equals(role))params.put(sijiId,request.getSession().getAttribute(userId));CommonUtil.checkMap(params);PageUtils page yonghuService.queryPage(params);//字典表数据转换ListYonghuView list (ListYonghuView)page.getList();for(YonghuView c:list){//修改对应字典表字段dictionaryService.dictionaryConvert(c, request);}return R.ok().put(data, page);}/*** 后端详情*/RequestMapping(/info/{id})public R info(PathVariable(id) Long id, HttpServletRequest request){logger.debug(info方法:,,Controller:{},,id:{},this.getClass().getName(),id);YonghuEntity yonghu yonghuService.selectById(id);if(yonghu !null){//entity转viewYonghuView view new YonghuView();BeanUtils.copyProperties( yonghu , view );//把实体数据重构到view中//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put(data, view);}else {return R.error(511,查不到数据);}}/*** 后端保存*/RequestMapping(/save)public R save(RequestBody YonghuEntity yonghu, HttpServletRequest request){logger.debug(save方法:,,Controller:{},,yonghu:{},this.getClass().getName(),yonghu.toString());String role String.valueOf(request.getSession().getAttribute(role));if(false)return R.error(511,永远不会进入);WrapperYonghuEntity queryWrapper new EntityWrapperYonghuEntity().eq(username, yonghu.getUsername()).or().eq(yonghu_phone, yonghu.getYonghuPhone()).or().eq(yonghu_id_number, yonghu.getYonghuIdNumber());logger.info(sql语句:queryWrapper.getSqlSegment());YonghuEntity yonghuEntity yonghuService.selectOne(queryWrapper);if(yonghuEntitynull){yonghu.setCreateTime(new Date());yonghu.setPassword(123456);yonghuService.insert(yonghu);return R.ok();}else {return R.error(511,账户或者用户手机号或者用户身份证号已经被使用);}}/*** 后端修改*/RequestMapping(/update)public R update(RequestBody YonghuEntity yonghu, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {logger.debug(update方法:,,Controller:{},,yonghu:{},this.getClass().getName(),yonghu.toString());YonghuEntity oldYonghuEntity yonghuService.selectById(yonghu.getId());//查询原先数据String role String.valueOf(request.getSession().getAttribute(role));
// if(false)
// return R.error(511,永远不会进入);if(.equals(yonghu.getYonghuPhoto()) || null.equals(yonghu.getYonghuPhoto())){yonghu.setYonghuPhoto(null);}yonghuService.updateById(yonghu);//根据id更新return R.ok();}/*** 删除*/RequestMapping(/delete)public R delete(RequestBody Integer[] ids, HttpServletRequest request){logger.debug(delete:,,Controller:{},,ids:{},this.getClass().getName(),ids.toString());ListYonghuEntity oldYonghuList yonghuService.selectBatchIds(Arrays.asList(ids));//要删除的数据yonghuService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 批量上传*/RequestMapping(/batchInsert)public R save( String fileName, HttpServletRequest request){logger.debug(batchInsert方法:,,Controller:{},,fileName:{},this.getClass().getName(),fileName);Integer yonghuId Integer.valueOf(String.valueOf(request.getSession().getAttribute(userId)));SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);try {ListYonghuEntity yonghuList new ArrayList();//上传的东西MapString, ListString seachFields new HashMap();//要查询的字段Date date new Date();int lastIndexOf fileName.lastIndexOf(.);if(lastIndexOf -1){return R.error(511,该文件没有后缀);}else{String suffix fileName.substring(lastIndexOf);if(!.xls.equals(suffix)){return R.error(511,只支持后缀为xls的excel文件);}else{URL resource this.getClass().getClassLoader().getResource(static/upload/ fileName);//获取文件路径File file new File(resource.getFile());if(!file.exists()){return R.error(511,找不到上传文件请联系管理员);}else{ListListString dataList PoiUtil.poiImport(file.getPath());//读取xls文件dataList.remove(0);//删除第一行因为第一行是提示for(ListString data:dataList){//循环YonghuEntity yonghuEntity new YonghuEntity();
// yonghuEntity.setUsername(data.get(0)); //账户 要改的
// //yonghuEntity.setPassword(123456);//密码
// yonghuEntity.setYonghuName(data.get(0)); //用户姓名 要改的
// yonghuEntity.setYonghuPhone(data.get(0)); //用户手机号 要改的
// yonghuEntity.setYonghuIdNumber(data.get(0)); //用户身份证号 要改的
// yonghuEntity.setYonghuPhoto();//详情和图片
// yonghuEntity.setSexTypes(Integer.valueOf(data.get(0))); //性别 要改的
// yonghuEntity.setYonghuEmail(data.get(0)); //电子邮箱 要改的
// yonghuEntity.setNewMoney(data.get(0)); //余额 要改的
// yonghuEntity.setCreateTime(date);//时间yonghuList.add(yonghuEntity);//把要查询是否重复的字段放入map中//账户if(seachFields.containsKey(username)){ListString username seachFields.get(username);username.add(data.get(0));//要改的}else{ListString username new ArrayList();username.add(data.get(0));//要改的seachFields.put(username,username);}//用户手机号if(seachFields.containsKey(yonghuPhone)){ListString yonghuPhone seachFields.get(yonghuPhone);yonghuPhone.add(data.get(0));//要改的}else{ListString yonghuPhone new ArrayList();yonghuPhone.add(data.get(0));//要改的seachFields.put(yonghuPhone,yonghuPhone);}//用户身份证号if(seachFields.containsKey(yonghuIdNumber)){ListString yonghuIdNumber seachFields.get(yonghuIdNumber);yonghuIdNumber.add(data.get(0));//要改的}else{ListString yonghuIdNumber new ArrayList();yonghuIdNumber.add(data.get(0));//要改的seachFields.put(yonghuIdNumber,yonghuIdNumber);}}//查询是否重复//账户ListYonghuEntity yonghuEntities_username yonghuService.selectList(new EntityWrapperYonghuEntity().in(username, seachFields.get(username)));if(yonghuEntities_username.size() 0 ){ArrayListString repeatFields new ArrayList();for(YonghuEntity s:yonghuEntities_username){repeatFields.add(s.getUsername());}return R.error(511,数据库的该表中的 [账户] 字段已经存在 存在数据为:repeatFields.toString());}//用户手机号ListYonghuEntity yonghuEntities_yonghuPhone yonghuService.selectList(new EntityWrapperYonghuEntity().in(yonghu_phone, seachFields.get(yonghuPhone)));if(yonghuEntities_yonghuPhone.size() 0 ){ArrayListString repeatFields new ArrayList();for(YonghuEntity s:yonghuEntities_yonghuPhone){repeatFields.add(s.getYonghuPhone());}return R.error(511,数据库的该表中的 [用户手机号] 字段已经存在 存在数据为:repeatFields.toString());}//用户身份证号ListYonghuEntity yonghuEntities_yonghuIdNumber yonghuService.selectList(new EntityWrapperYonghuEntity().in(yonghu_id_number, seachFields.get(yonghuIdNumber)));if(yonghuEntities_yonghuIdNumber.size() 0 ){ArrayListString repeatFields new ArrayList();for(YonghuEntity s:yonghuEntities_yonghuIdNumber){repeatFields.add(s.getYonghuIdNumber());}return R.error(511,数据库的该表中的 [用户身份证号] 字段已经存在 存在数据为:repeatFields.toString());}yonghuService.insertBatch(yonghuList);return R.ok();}}}}catch (Exception e){e.printStackTrace();return R.error(511,批量插入数据异常请联系管理员);}}/*** 登录*/IgnoreAuthRequestMapping(value /login)public R login(String username, String password, String captcha, HttpServletRequest request) {YonghuEntity yonghu yonghuService.selectOne(new EntityWrapperYonghuEntity().eq(username, username));if(yonghunull || !yonghu.getPassword().equals(password))return R.error(账号或密码不正确);String token tokenService.generateToken(yonghu.getId(),username, yonghu, 用户);R r R.ok();r.put(token, token);r.put(role,用户);r.put(username,yonghu.getYonghuName());r.put(tableName,yonghu);r.put(userId,yonghu.getId());return r;}/*** 注册*/IgnoreAuthPostMapping(value /register)public R register(RequestBody YonghuEntity yonghu, HttpServletRequest request) {
// ValidatorUtils.validateEntity(user);WrapperYonghuEntity queryWrapper new EntityWrapperYonghuEntity().eq(username, yonghu.getUsername()).or().eq(yonghu_phone, yonghu.getYonghuPhone()).or().eq(yonghu_id_number, yonghu.getYonghuIdNumber());YonghuEntity yonghuEntity yonghuService.selectOne(queryWrapper);if(yonghuEntity ! null)return R.error(账户或者用户手机号或者用户身份证号已经被使用);yonghu.setNewMoney(0.0);yonghu.setCreateTime(new Date());yonghuService.insert(yonghu);return R.ok();}/*** 重置密码*/GetMapping(value /resetPassword)public R resetPassword(Integer id, HttpServletRequest request) {YonghuEntity yonghu yonghuService.selectById(id);yonghu.setPassword(123456);yonghuService.updateById(yonghu);return R.ok();}/*** 忘记密码*/IgnoreAuthRequestMapping(value /resetPass)public R resetPass(String username, HttpServletRequest request) {YonghuEntity yonghu yonghuService.selectOne(new EntityWrapperYonghuEntity().eq(username, username));if(yonghu!null){yonghu.setPassword(123456);boolean b yonghuService.updateById(yonghu);if(!b){return R.error();}return R.ok();}else{return R.error(账号不存在);}}/*** 获取用户的session用户信息*/RequestMapping(/session)public R getCurrYonghu(HttpServletRequest request){Integer id (Integer)request.getSession().getAttribute(userId);YonghuEntity yonghu yonghuService.selectById(id);if(yonghu !null){//entity转viewYonghuView view new YonghuView();BeanUtils.copyProperties( yonghu , view );//把实体数据重构到view中//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put(data, view);}else {return R.error(511,查不到数据);}}/*** 退出*/GetMapping(value logout)public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok(退出成功);}/*** 前端列表*/IgnoreAuthRequestMapping(/list)public R list(RequestParam MapString, Object params, HttpServletRequest request){logger.debug(list方法:,,Controller:{},,params:{},this.getClass().getName(),JSONObject.toJSONString(params));CommonUtil.checkMap(params);PageUtils page yonghuService.queryPage(params);//字典表数据转换ListYonghuView list (ListYonghuView)page.getList();for(YonghuView c:list)dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段return R.ok().put(data, page);}/*** 前端详情*/RequestMapping(/detail/{id})public R detail(PathVariable(id) Long id, HttpServletRequest request){logger.debug(detail方法:,,Controller:{},,id:{},this.getClass().getName(),id);YonghuEntity yonghu yonghuService.selectById(id);if(yonghu !null){//entity转viewYonghuView view new YonghuView();BeanUtils.copyProperties( yonghu , view );//把实体数据重构到view中//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put(data, view);}else {return R.error(511,查不到数据);}}/*** 前端保存*/RequestMapping(/add)public R add(RequestBody YonghuEntity yonghu, HttpServletRequest request){logger.debug(add方法:,,Controller:{},,yonghu:{},this.getClass().getName(),yonghu.toString());WrapperYonghuEntity queryWrapper new EntityWrapperYonghuEntity().eq(username, yonghu.getUsername()).or().eq(yonghu_phone, yonghu.getYonghuPhone()).or().eq(yonghu_id_number, yonghu.getYonghuIdNumber());logger.info(sql语句:queryWrapper.getSqlSegment());YonghuEntity yonghuEntity yonghuService.selectOne(queryWrapper);if(yonghuEntitynull){yonghu.setCreateTime(new Date());yonghu.setPassword(123456);yonghuService.insert(yonghu);return R.ok();}else {return R.error(511,账户或者用户手机号或者用户身份证号已经被使用);}}}
DictionaryServiceImpl.java
package com.service.impl;import com.utils.StringUtil;
import com.service.DictionaryService;
import com.utils.ClazzDiff;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.util.*;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import com.utils.PageUtils;
import com.utils.Query;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import com.dao.DictionaryDao;
import com.entity.DictionaryEntity;
import com.service.DictionaryService;
import com.entity.view.DictionaryView;/*** 字典 服务实现类*/
Service(dictionaryService)
Transactional
public class DictionaryServiceImpl extends ServiceImplDictionaryDao, DictionaryEntity implements DictionaryService {Overridepublic PageUtils queryPage(MapString,Object params) {PageDictionaryView page new QueryDictionaryView(params).getPage();page.setRecords(baseMapper.selectListView(page,params));return new PageUtils(page);}/*** 赋值给字典表* param obj view对象*/public void dictionaryConvert(Object obj, HttpServletRequest request) {try {if (obj null) return;//当前view和entity中的所有types的字段ListString fieldNameList new ArrayList();Class tempClass obj.getClass();while (tempClass !null) {Field[] declaredFields tempClass.getDeclaredFields();for (Field f : declaredFields) {f.setAccessible(true);if (f.getType().getName().equals(java.lang.Integer) f.getName().contains(Types)) {fieldNameList.add(f.getName());}}tempClass tempClass.getSuperclass(); //得到父类,然后赋给自己}// 获取监听器中的字典表
// ServletContext servletContext ContextLoader.getCurrentWebApplicationContext().getServletContext();ServletContext servletContext request.getServletContext();MapString, MapInteger, String dictionaryMap (MapString, MapInteger, String) servletContext.getAttribute(dictionaryMap);//通过Types的值给Value字段赋值for (String s : fieldNameList) {Field types null;if(hasField(obj.getClass(),s)){//判断view中有没有这个字段,有就通过反射取出字段types obj.getClass().getDeclaredField(s);//获取Types私有字段}else{//本表中没有这个字段,说明它是父表中的字段,也就是entity中的字段,从entity中取值typesobj.getClass().getSuperclass().getDeclaredField(s);}Field value obj.getClass().getDeclaredField(s.replace(Types, Value));//获取value私有字段//设置权限types.setAccessible(true);value.setAccessible(true);//赋值if (StringUtil.isNotEmpty(String.valueOf(types.get(obj)))) { //types的值不为空int i Integer.parseInt(String.valueOf(types.get(obj)));//type//把s1字符中的所有大写转小写,并在前面加 _char[] chars s.toCharArray();StringBuffer sbf new StringBuffer();for(int b0; b chars.length; b){char ch chars[b];if(ch 90 ch 65){sbf.append(_);ch 32;}sbf.append(ch);}String s2 dictionaryMap.get(sbf.toString()).get(i);value.set(obj, s2);} else {new Exception(字典表赋值出现问题::::value.getName());value.set(obj, );}}} catch (IllegalAccessException e) {e.printStackTrace();} catch (NoSuchFieldException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}/*** 判断本实体有没有这个字段* param c* param fieldName* return*/public boolean hasField(Class c, String fieldName){Field[] fields c.getDeclaredFields();for (Field f : fields) {if (fieldName.equals(f.getName())) {return true;}}return false;}}
list.vue
templatediv classmain-content!-- 列表页 --div v-ifshowFlagel-form :inlinetrue :modelsearchForm classform-contentel-row :gutter20 classslt :style{justifyContent:contents.searchBoxPosition1?flex-start:contents.searchBoxPosition2?center:flex-end}el-form-item label数据类型el-input prefix-iconel-icon-search v-modelsearchForm.indexNameSearch placeholder数据类型 clearable/el-input/el-form-itemel-form-itemel-button iconel-icon-search typesuccess clicksearch()查询/el-button/el-form-item/el-rowel-row classad :style{justifyContent:contents.btnAdAllBoxPosition1?flex-start:contents.btnAdAllBoxPosition2?center:flex-end}el-form-itemel-buttonv-ifisAuth(dictionaryJiaocheChat,新增)typesuccessiconel-icon-plusclickaddOrUpdateHandler()新增/el-buttonel-buttonv-ifisAuth(dictionaryJiaocheChat,删除):disableddataListSelections.length 0typedangericonel-icon-deleteclickdeleteHandler()删除/el-button/el-form-item/el-row/el-formdiv classtable-contentel-table classtables :sizecontents.tableSize :show-headercontents.tableShowHeader:header-row-styleheaderRowStyle :header-cell-styleheaderCellStyle:bordercontents.tableBorder:fitcontents.tableFit:stripecontents.tableStripe:row-stylerowStyle:cell-stylecellStyle:style{width: 100%,fontSize:contents.tableContentFontSize,color:contents.tableContentFontColor}v-ifisAuth(dictionaryJiaocheChat,查看):datadataListv-loadingdataListLoadingselection-changeselectionChangeHandlerel-table-column v-ifcontents.tableSelectiontypeselectionheader-aligncenteraligncenterwidth50/el-table-columnel-table-column label索引 v-ifcontents.tableIndex typeindex width50 /el-table-column :sortablecontents.tableSortable :aligncontents.tableAlignpropcodeIndexheader-aligncenterlabel数据类型编码template slot-scopescope{{scope.row.codeIndex}}/template/el-table-columnel-table-column :sortablecontents.tableSortable :aligncontents.tableAlignpropindexNameheader-aligncenterlabel数据类型名称template slot-scopescope{{scope.row.indexName}}/template/el-table-column!--el-table-column :sortablecontents.tableSortable :aligncontents.tableAlignpropbeizhuheader-aligncenterlabel备注template slot-scopescope{{scope.row.beizhu}}/template/el-table-column--el-table-column width300 :aligncontents.tableAlignheader-aligncenterlabel操作template slot-scopescopeel-button v-ifisAuth(dictionaryJiaocheChat,查看) typesuccess iconel-icon-tickets sizemini clickaddOrUpdateHandler(scope.row.id,info)详情/el-buttonel-button v-ifisAuth(dictionaryJiaocheChat,修改) typeprimary iconel-icon-edit sizemini clickaddOrUpdateHandler(scope.row.id)修改/el-buttonel-button v-ifisAuth(dictionaryJiaocheChat,删除) typedanger iconel-icon-delete sizemini clickdeleteHandler(scope.row.id)删除/el-button/template/el-table-column/el-tableel-paginationclssspages:layoutlayoutssize-changesizeChangeHandlecurrent-changecurrentChangeHandle:current-pagepageIndex:page-sizes[10, 20, 50, 100]:page-sizeNumber(contents.pageEachNum):totaltotalPage:smallcontents.pageStyleclasspagination-content:backgroundcontents.pageBtnBG:style{textAlign:contents.pagePosition1?left:contents.pagePosition2?center:right}/el-pagination/div/div!-- 添加/修改页面 将父组件的search方法传递给子组件--add-or-update v-ifaddOrUpdateFlag :parentthis refaddOrUpdate/add-or-update/div
/template
scriptimport AddOrUpdate from ./add-or-update;import styleJs from ../../../utils/style.js;export default {data() {return {searchForm: {key: },form:{},dataList: [],pageIndex: 1,pageSize: 10,totalPage: 0,dataListLoading: false,dataListSelections: [],showFlag: true,sfshVisiable: false,shForm: {},chartVisiable: false,addOrUpdateFlag:false,contents:null,layouts: ,};},created() {this.contents styleJs.listStyle();this.init();this.getDataList();this.contentStyleChange()},mounted() {},filters: {htmlfilter: function (val) {return val.replace(/[^]*/g).replace(/undefined/g,);}},components: {AddOrUpdate,},methods: {contentStyleChange() {this.contentSearchStyleChange()this.contentBtnAdAllStyleChange()this.contentSearchBtnStyleChange()this.contentTableBtnStyleChange()this.contentPageStyleChange()},contentSearchStyleChange() {this.$nextTick((){document.querySelectorAll(.form-content .slt .el-input__inner).forEach(el{let textAlign leftif(this.contents.inputFontPosition 2) textAlign centerif(this.contents.inputFontPosition 3) textAlign rightel.style.textAlign textAlignel.style.height this.contents.inputHeightel.style.lineHeight this.contents.inputHeightel.style.color this.contents.inputFontColorel.style.fontSize this.contents.inputFontSizeel.style.borderWidth this.contents.inputBorderWidthel.style.borderStyle this.contents.inputBorderStyleel.style.borderColor this.contents.inputBorderColorel.style.borderRadius this.contents.inputBorderRadiusel.style.backgroundColor this.contents.inputBgColor})if(this.contents.inputTitle) {document.querySelectorAll(.form-content .slt .el-form-item__label).forEach(el{el.style.color this.contents.inputTitleColorel.style.fontSize this.contents.inputTitleSizeel.style.lineHeight this.contents.inputHeight})}setTimeout((){document.querySelectorAll(.form-content .slt .el-input__prefix).forEach(el{el.style.color this.contents.inputIconColorel.style.lineHeight this.contents.inputHeight})document.querySelectorAll(.form-content .slt .el-input__suffix).forEach(el{el.style.color this.contents.inputIconColorel.style.lineHeight this.contents.inputHeight})document.querySelectorAll(.form-content .slt .el-input__icon).forEach(el{el.style.lineHeight this.contents.inputHeight})},10)})},// 搜索按钮contentSearchBtnStyleChange() {this.$nextTick((){document.querySelectorAll(.form-content .slt .el-button--success).forEach(el{el.style.height this.contents.searchBtnHeightel.style.color this.contents.searchBtnFontColorel.style.fontSize this.contents.searchBtnFontSizeel.style.borderWidth this.contents.searchBtnBorderWidthel.style.borderStyle this.contents.searchBtnBorderStyleel.style.borderColor this.contents.searchBtnBorderColorel.style.borderRadius this.contents.searchBtnBorderRadiusel.style.backgroundColor this.contents.searchBtnBgColor})})},// 新增、批量删除contentBtnAdAllStyleChange() {this.$nextTick((){document.querySelectorAll(.form-content .ad .el-button--success).forEach(el{el.style.height this.contents.btnAdAllHeightel.style.color this.contents.btnAdAllAddFontColorel.style.fontSize this.contents.btnAdAllFontSizeel.style.borderWidth this.contents.btnAdAllBorderWidthel.style.borderStyle this.contents.btnAdAllBorderStyleel.style.borderColor this.contents.btnAdAllBorderColorel.style.borderRadius this.contents.btnAdAllBorderRadiusel.style.backgroundColor this.contents.btnAdAllAddBgColor})document.querySelectorAll(.form-content .ad .el-button--danger).forEach(el{el.style.height this.contents.btnAdAllHeightel.style.color this.contents.btnAdAllDelFontColorel.style.fontSize this.contents.btnAdAllFontSizeel.style.borderWidth this.contents.btnAdAllBorderWidthel.style.borderStyle this.contents.btnAdAllBorderStyleel.style.borderColor this.contents.btnAdAllBorderColorel.style.borderRadius this.contents.btnAdAllBorderRadiusel.style.backgroundColor this.contents.btnAdAllDelBgColor})document.querySelectorAll(.form-content .ad .el-button--warning).forEach(el{el.style.height this.contents.btnAdAllHeightel.style.color this.contents.btnAdAllWarnFontColorel.style.fontSize this.contents.btnAdAllFontSizeel.style.borderWidth this.contents.btnAdAllBorderWidthel.style.borderStyle this.contents.btnAdAllBorderStyleel.style.borderColor this.contents.btnAdAllBorderColorel.style.borderRadius this.contents.btnAdAllBorderRadiusel.style.backgroundColor this.contents.btnAdAllWarnBgColor})})},// 表格rowStyle({ row, rowIndex}) {if (rowIndex % 2 1) {if(this.contents.tableStripe) {return {color:this.contents.tableStripeFontColor}}} else {return }},cellStyle({ row, rowIndex}){if (rowIndex % 2 1) {if(this.contents.tableStripe) {return {backgroundColor:this.contents.tableStripeBgColor}}} else {return }},headerRowStyle({ row, rowIndex}){return {color: this.contents.tableHeaderFontColor}},headerCellStyle({ row, rowIndex}){return {backgroundColor: this.contents.tableHeaderBgColor}},// 表格按钮contentTableBtnStyleChange(){},// 分页contentPageStyleChange(){let arr []if(this.contents.pageTotal) arr.push(total)if(this.contents.pageSizes) arr.push(sizes)if(this.contents.pagePrevNext){arr.push(prev)if(this.contents.pagePager) arr.push(pager)arr.push(next)}if(this.contents.pageJumper) arr.push(jumper)this.layouts arr.join()this.contents.pageEachNum 10},init () {},search() {this.pageIndex 1;this.getDataList();},// 获取数据列表getDataList() {this.dataListLoading true;let params {page: this.pageIndex,limit: this.pageSize,sort: id,}if(this.searchForm.indexNameSearch! this.searchForm.indexNameSearch!undefined){params[indexName] this.searchForm.indexNameSearch}//本表的params[dicCode] jiaoche_chat_types//编码名字params[dicName] 数据类型,//汉字名字this.$http({url: dictionary/page,method: get,params: params}).then(({ data }) {if (data data.code 0) {this.dataList data.data.list;this.totalPage data.data.total;} else {this.dataList [];this.totalPage 0;}this.dataListLoading false;});},// 每页数sizeChangeHandle(val) {this.pageSize val;this.pageIndex 1;this.getDataList();},// 当前页currentChangeHandle(val) {this.pageIndex val;this.getDataList();},// 多选selectionChangeHandler(val) {this.dataListSelections val;},// 添加/修改addOrUpdateHandler(id,type) {this.showFlag false;this.addOrUpdateFlag true;this.crossAddOrUpdateFlag false;if(type!info){type else;}this.$nextTick(() {this.$refs.addOrUpdate.init(id,type);});},// 删除deleteHandler(id) {var ids id? [Number(id)]: this.dataListSelections.map(item {return Number(item.id);});this.$confirm(确定进行[${id ? 删除 : 批量删除}]操作?, 提示, {confirmButtonText: 确定,cancelButtonText: 取消,type: warning}).then(() {this.$http({url: dictionary/delete,method: post,data: ids}).then(({ data }) {if (data data.code 0) {this.$message({message: 操作成功,type: success,duration: 1500,onClose: () {this.search();}});} else {this.$message.error(data.msg);}});});},}};
/script
style langscss scoped
.slt {margin: 0 !important;display: flex;}.ad {margin: 0 !important;display: flex;}.pages { /deep/ el-pagination__sizes{ /deep/ el-input__inner {height: 22px;line-height: 22px;}}}.el-button.el-button {margin:0;}.tables { /deep/ .el-button--success {height: 40px;color: rgba(23, 109, 71, 1);font-size: 14px;border-width: 4px;border-style: double;border-color: rgba(45, 132, 94, 1);border-radius: 0px;background-color: #fff;} /deep/ .el-button--primary {height: 40px;color: rgba(23, 109, 71, 1);font-size: 14px;border-width: 4px;border-style: double;border-color: rgba(45, 132, 94, 1);border-radius: 0px;background-color: #fff;} /deep/ .el-button--danger {height: 40px;color: rgba(23, 109, 71, 1);font-size: 14px;border-width: 4px;border-style: double;border-color: rgba(45, 132, 94, 1);border-radius: 0px;background-color: #fff;} /deep/ .el-button {margin: 4px;}}.form-content {background: transparent;}.table-content {background: transparent;}.tables /deep/ .el-table__body tr {background-color: rgba(255, 255, 255, 1) !important;color: rgba(58, 58, 58, 1) !important;}.tables /deep/ .el-table__body tr.el-table__row--striped td {background: transparent;}.tables /deep/ .el-table__body tr.el-table__row--striped {background-color: #F5F7FA !important;color: #606266 !important;}.tables /deep/ .el-table__body tr:hovertd {background-color: rgba(234, 234, 234, 0.51) !important;color: #333 !important;}/style
声明 本博客适用于广泛的学术和教育用途包括但不限于个人学习、开发设计产品设计。仅供学习参考旨在为读者提供深入理解和学术研究的材料。