• 第3章业务功能开发(实现显示线索主页面,并查询表单各个下拉框数据)


    客户需求:

    用户进入工作台主页面,点击 线索菜单选项,工作台的工作区跳转到线索菜单页面。

    在跳转到线索菜单页面的同时,查询出各个模态窗口以及条件查询所需要的下拉框数据。

     功能实现

    1.根据客户需求画出实现显示线索主页面,并查询表单各个下拉框数据的UML时序图

    2.为了查询下拉框:所有者的数据

    调用之前的selectAllUsers方法

    userMapper接口

    userMapper.xml文件

    UserService 接口

     

    UserServiceImpl文件

    3.使用mybatis逆向工程生成DicValue实体类以及mapper文件,由于生成的实体类属于系统文件,所以生成文件的目标位置设置为setting

    generatorConfig.xml

    1. generatorConfiguration
    2. PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
    3. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    4. <generatorConfiguration>
    5. <properties resource="generator.properties">properties>
    6. <classPathEntry location="${jdbc.driverLocation}"/>
    7. <context id="default" targetRuntime="MyBatis3">
    8. <commentGenerator>
    9. <property name="suppressDate" value="false"/>
    10. <property name="suppressAllComments" value="false"/>
    11. commentGenerator>
    12. <jdbcConnection
    13. driverClass="${jdbc.driverClass}"
    14. connectionURL="${jdbc.connectionURL}"
    15. userId="${jdbc.userId}"
    16. password="${jdbc.password}">
    17. jdbcConnection>
    18. <javaTypeResolver>
    19. <property name="forceBigDecimals" value="false"/>
    20. javaTypeResolver>
    21. <javaModelGenerator targetPackage="com.it.crm.settings.entity"
    22. targetProject="D:/SSM框架/SSM版CRMTest/crm/src/main/java">
    23. <property name="enableSubPackages" value="false"/>
    24. <property name="constructorBased" value="false"/>
    25. <property name="trimStrings" value="true"/>
    26. <property name="immutable" value="false"/>
    27. javaModelGenerator>
    28. <sqlMapGenerator targetPackage="com.it.crm.settings.mapper"
    29. targetProject="D:/SSM框架/SSM版CRMTest/crm/src/main/java">
    30. <property name="enableSubPackages" value="false"/>
    31. sqlMapGenerator>
    32. <javaClientGenerator targetPackage="com.it.crm.settings.mapper"
    33. targetProject="D:/SSM框架/SSM版CRMTest/crm/src/main/java" type="XMLMAPPER">
    34. <property name="enableSubPackages" value="true"/>
    35. javaClientGenerator>
    36. <table tableName="tbl_dic_value" domainObjectName="DicValue"
    37. enableCountByExample="false" enableUpdateByExample="false"
    38. enableDeleteByExample="false" enableSelectByExample="false"
    39. selectByExampleQueryId="false">
    40. table>
    41. context>
    42. generatorConfiguration>

    4.生成的DicValueMapper接口

    DicValueMapper.xml文件

     DicValueService接口

    1. package com.it.crm.settings.service;
    2. import com.it.crm.settings.entity.DicValue;
    3. import java.util.List;
    4. public interface DicValueService {
    5. List queryDicValueByTypeCode(String typeCode);
    6. }

     DicValueServiceImpl实现类

    1. package com.it.crm.settings.service.impl;
    2. import com.it.crm.settings.entity.DicValue;
    3. import com.it.crm.settings.mapper.DicValueMapper;
    4. import com.it.crm.settings.service.DicValueService;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.stereotype.Service;
    7. import java.util.List;
    8. @Service("dicValueService")
    9. public class DicValueServiceImpl implements DicValueService {
    10. @Autowired
    11. private DicValueMapper dicValueMapper;
    12. @Override
    13. public List queryDicValueByTypeCode(String typeCode) {
    14. return dicValueMapper.selectDicValueByTypeCode(typeCode);
    15. }
    16. }

    5.创建ClueController类,调用刚才展示的两种service方法

    1. package com.it.crm.workbench.web.controller;
    2. import com.it.crm.settings.entity.DicValue;
    3. import com.it.crm.settings.entity.User;
    4. import com.it.crm.settings.service.DicValueService;
    5. import com.it.crm.settings.service.UserService;
    6. import org.springframework.beans.factory.annotation.Autowired;
    7. import org.springframework.stereotype.Controller;
    8. import org.springframework.web.bind.annotation.RequestMapping;
    9. import javax.servlet.http.HttpServletRequest;
    10. import java.util.List;
    11. @Controller
    12. public class ClueController {
    13. @Autowired
    14. private UserService userService;
    15. @Autowired
    16. private DicValueService dicValueService;
    17. @RequestMapping(value = "/workbench/clue/index.do")
    18. public String index(HttpServletRequest request){
    19. //调用service层方法,查询动态数据
    20. List userList = userService.queryAllUsers();
    21. List appellation = dicValueService.queryDicValueByTypeCode("appellation");
    22. List clueState = dicValueService.queryDicValueByTypeCode("clueState");
    23. List source = dicValueService.queryDicValueByTypeCode("source");
    24. //把数据保存到request中
    25. request.setAttribute("userList",userList);
    26. request.setAttribute("appellation",appellation);
    27. request.setAttribute("clueState",clueState);
    28. request.setAttribute("source",source);
    29. //请求转发
    30. return "workbench/clue/index";
    31. }
    32. }

    6.workbench的index.jsp页面,实现点击线索菜单,跳转到线索页面

    1. <ul id="no1" class="nav nav-pills nav-stacked">
    2. <li class="liClass"><a href="workbench/main/index.do" target="workareaFrame"><span class="glyphicon glyphicon-home">span> 工作台a>li>
    3. <li class="liClass"><a href="javascript:void(0);" target="workareaFrame"><span class="glyphicon glyphicon-tag">span> 动态a>li>
    4. <li class="liClass"><a href="javascript:void(0);" target="workareaFrame"><span class="glyphicon glyphicon-time">span> 审批a>li>
    5. <li class="liClass"><a href="javascript:void(0);" target="workareaFrame"><span class="glyphicon glyphicon-user">span> 客户公海a>li>
    6. <li class="liClass"><a href="workbench/activity/index.do" target="workareaFrame"><span class="glyphicon glyphicon-play-circle">span> 市场活动a>li>
    7. <li class="liClass"><a href="workbench/clue/index.do" target="workareaFrame"><span class="glyphicon glyphicon-search">span> 线索(潜在客户)a>li>
    8. <li class="liClass"><a href="customer/index.html" target="workareaFrame"><span class="glyphicon glyphicon-user">span> 客户a>li>
    9. <li class="liClass"><a href="contacts/index.html" target="workareaFrame"><span class="glyphicon glyphicon-earphone">span> 联系人a>li>
    10. <li class="liClass"><a href="transaction/index.html" target="workareaFrame"><span class="glyphicon glyphicon-usd">span> 交易(商机)a>li>
    11. <li class="liClass"><a href="visit/index.html" target="workareaFrame"><span class="glyphicon glyphicon-phone-alt">span> 售后回访a>li>
    12. <li class="liClass"

    7.clue的index.jsp页面,分别用EL表达式和JSTL来循环遍历下拉框数据

    1. <%@page contentType="text/html; charset=UTF-8" language="java" %>
    2. <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    3. <%
    4. String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
    5. %>
    6. <html>
    7. <head>
    8. <meta charset="UTF-8">
    9. <base href="<%=basePath%>">
    10. <link href="jquery/bootstrap_3.3.0/css/bootstrap.min.css" type="text/css" rel="stylesheet" />
    11. <link href="jquery/bootstrap-datetimepicker-master/css/bootstrap-datetimepicker.min.css" type="text/css" rel="stylesheet" />
    12. <script type="text/javascript" src="jquery/jquery-1.11.1-min.js">script>
    13. <script type="text/javascript" src="jquery/bootstrap_3.3.0/js/bootstrap.min.js">script>
    14. <script type="text/javascript" src="jquery/bootstrap-datetimepicker-master/js/bootstrap-datetimepicker.js">script>
    15. <script type="text/javascript" src="jquery/bootstrap-datetimepicker-master/locale/bootstrap-datetimepicker.zh-CN.js">script>
    16. <script type="text/javascript">
    17. $(function(){
    18. });
    19. script>
    20. head>
    21. <body>
    22. <div class="modal fade" id="createClueModal" role="dialog">
    23. <div class="modal-dialog" role="document" style="width: 90%;">
    24. <div class="modal-content">
    25. <div class="modal-header">
    26. <button type="button" class="close" data-dismiss="modal">
    27. <span aria-hidden="true">×span>
    28. button>
    29. <h4 class="modal-title" id="myModalLabel">创建线索h4>
    30. div>
    31. <div class="modal-body">
    32. <form class="form-horizontal" role="form">
    33. <div class="form-group">
    34. <label for="create-clueOwner" class="col-sm-2 control-label">所有者<span style="font-size: 15px; color: red;">*span>label>
    35. <div class="col-sm-10" style="width: 300px;">
    36. <select class="form-control" id="create-clueOwner">
    37. <c:forEach items="${userList}" var="user">
    38. <option value="${user.id}">${user.name}option>
    39. c:forEach>
    40. select>
    41. div>
    42. <label for="create-company" class="col-sm-2 control-label">公司<span style="font-size: 15px; color: red;">*span>label>
    43. <div class="col-sm-10" style="width: 300px;">
    44. <input type="text" class="form-control" id="create-company">
    45. div>
    46. div>
    47. <div class="form-group">
    48. <label for="create-call" class="col-sm-2 control-label">称呼label>
    49. <div class="col-sm-10" style="width: 300px;">
    50. <select class="form-control" id="create-call">
    51. <option>option>
    52. <c:forEach items="${appellation}" var="app">
    53. <option value="${app.id}">${app.value}option>
    54. c:forEach>
    55. select>
    56. div>
    57. <label for="create-surname" class="col-sm-2 control-label">姓名<span style="font-size: 15px; color: red;">*span>label>
    58. <div class="col-sm-10" style="width: 300px;">
    59. <input type="text" class="form-control" id="create-surname">
    60. div>
    61. div>
    62. <div class="form-group">
    63. <label for="create-job" class="col-sm-2 control-label">职位label>
    64. <div class="col-sm-10" style="width: 300px;">
    65. <input type="text" class="form-control" id="create-job">
    66. div>
    67. <label for="create-email" class="col-sm-2 control-label">邮箱label>
    68. <div class="col-sm-10" style="width: 300px;">
    69. <input type="text" class="form-control" id="create-email">
    70. div>
    71. div>
    72. <div class="form-group">
    73. <label for="create-phone" class="col-sm-2 control-label">公司座机label>
    74. <div class="col-sm-10" style="width: 300px;">
    75. <input type="text" class="form-control" id="create-phone">
    76. div>
    77. <label for="create-website" class="col-sm-2 control-label">公司网站label>
    78. <div class="col-sm-10" style="width: 300px;">
    79. <input type="text" class="form-control" id="create-website">
    80. div>
    81. div>
    82. <div class="form-group">
    83. <label for="create-mphone" class="col-sm-2 control-label">手机label>
    84. <div class="col-sm-10" style="width: 300px;">
    85. <input type="text" class="form-control" id="create-mphone">
    86. div>
    87. <label for="create-status" class="col-sm-2 control-label">线索状态label>
    88. <div class="col-sm-10" style="width: 300px;">
    89. <select class="form-control" id="create-status">
    90. <option>option>
    91. <c:forEach items="${clueState}" var="clu">
    92. <option value="${clu.id}">${clu.value}option>
    93. c:forEach>
    94. select>
    95. div>
    96. div>
    97. <div class="form-group">
    98. <label for="create-source" class="col-sm-2 control-label">线索来源label>
    99. <div class="col-sm-10" style="width: 300px;">
    100. <select class="form-control" id="create-source">
    101. <option>option>
    102. <c:forEach items="${source}" var="sou">
    103. <option value="${sou.id}">${sou.value}option>
    104. c:forEach>
    105. select>
    106. div>
    107. div>
    108. <div class="form-group">
    109. <label for="create-describe" class="col-sm-2 control-label">线索描述label>
    110. <div class="col-sm-10" style="width: 81%;">
    111. <textarea class="form-control" rows="3" id="create-describe">textarea>
    112. div>
    113. div>
    114. <div style="height: 1px; width: 103%; background-color: #D5D5D5; left: -13px; position: relative;">div>
    115. <div style="position: relative;top: 15px;">
    116. <div class="form-group">
    117. <label for="create-contactSummary" class="col-sm-2 control-label">联系纪要label>
    118. <div class="col-sm-10" style="width: 81%;">
    119. <textarea class="form-control" rows="3" id="create-contactSummary">textarea>
    120. div>
    121. div>
    122. <div class="form-group">
    123. <label for="create-nextContactTime" class="col-sm-2 control-label">下次联系时间label>
    124. <div class="col-sm-10" style="width: 300px;">
    125. <input type="text" class="form-control" id="create-nextContactTime">
    126. div>
    127. div>
    128. div>
    129. <div style="height: 1px; width: 103%; background-color: #D5D5D5; left: -13px; position: relative; top : 10px;">div>
    130. <div style="position: relative;top: 20px;">
    131. <div class="form-group">
    132. <label for="create-address" class="col-sm-2 control-label">详细地址label>
    133. <div class="col-sm-10" style="width: 81%;">
    134. <textarea class="form-control" rows="1" id="create-address">textarea>
    135. div>
    136. div>
    137. div>
    138. form>
    139. div>
    140. <div class="modal-footer">
    141. <button type="button" class="btn btn-default" data-dismiss="modal">关闭button>
    142. <button type="button" class="btn btn-primary" data-dismiss="modal">保存button>
    143. div>
    144. div>
    145. div>
    146. div>
    147. <div class="modal fade" id="editClueModal" role="dialog">
    148. <div class="modal-dialog" role="document" style="width: 90%;">
    149. <div class="modal-content">
    150. <div class="modal-header">
    151. <button type="button" class="close" data-dismiss="modal">
    152. <span aria-hidden="true">×span>
    153. button>
    154. <h4 class="modal-title">修改线索h4>
    155. div>
    156. <div class="modal-body">
    157. <form class="form-horizontal" role="form">
    158. <div class="form-group">
    159. <label for="edit-clueOwner" class="col-sm-2 control-label">所有者<span style="font-size: 15px; color: red;">*span>label>
    160. <div class="col-sm-10" style="width: 300px;">
    161. <select class="form-control" id="edit-clueOwner">
    162. <c:forEach items="${userList}" var="user">
    163. <option value="${user.id}">${user.name}option>
    164. c:forEach>
    165. select>
    166. div>
    167. <label for="edit-company" class="col-sm-2 control-label">公司<span style="font-size: 15px; color: red;">*span>label>
    168. <div class="col-sm-10" style="width: 300px;">
    169. <input type="text" class="form-control" id="edit-company" value="动力节点">
    170. div>
    171. div>
    172. <div class="form-group">
    173. <label for="edit-call" class="col-sm-2 control-label">称呼label>
    174. <div class="col-sm-10" style="width: 300px;">
    175. <select class="form-control" id="edit-call">
    176. <option>option>
    177. <c:forEach items="${appellation}" var="app">
    178. <option value="${app.id}">${app.value}option>
    179. c:forEach>
    180. select>
    181. div>
    182. <label for="edit-surname" class="col-sm-2 control-label">姓名<span style="font-size: 15px; color: red;">*span>label>
    183. <div class="col-sm-10" style="width: 300px;">
    184. <input type="text" class="form-control" id="edit-surname" value="李四">
    185. div>
    186. div>
    187. <div class="form-group">
    188. <label for="edit-job" class="col-sm-2 control-label">职位label>
    189. <div class="col-sm-10" style="width: 300px;">
    190. <input type="text" class="form-control" id="edit-job" value="CTO">
    191. div>
    192. <label for="edit-email" class="col-sm-2 control-label">邮箱label>
    193. <div class="col-sm-10" style="width: 300px;">
    194. <input type="text" class="form-control" id="edit-email" value="lisi@bjpowernode.com">
    195. div>
    196. div>
    197. <div class="form-group">
    198. <label for="edit-phone" class="col-sm-2 control-label">公司座机label>
    199. <div class="col-sm-10" style="width: 300px;">
    200. <input type="text" class="form-control" id="edit-phone" value="010-84846003">
    201. div>
    202. <label for="edit-website" class="col-sm-2 control-label">公司网站label>
    203. <div class="col-sm-10" style="width: 300px;">
    204. <input type="text" class="form-control" id="edit-website" value="http://www.bjpowernode.com">
    205. div>
    206. div>
    207. <div class="form-group">
    208. <label for="edit-mphone" class="col-sm-2 control-label">手机label>
    209. <div class="col-sm-10" style="width: 300px;">
    210. <input type="text" class="form-control" id="edit-mphone" value="12345678901">
    211. div>
    212. <label for="edit-status" class="col-sm-2 control-label">线索状态label>
    213. <div class="col-sm-10" style="width: 300px;">
    214. <select class="form-control" id="edit-status">
    215. <option>option>
    216. <c:forEach items="${clueState}" var="clu">
    217. <option value="${clu.id}">${clu.value}option>
    218. c:forEach>
    219. select>
    220. div>
    221. div>
    222. <div class="form-group">
    223. <label for="edit-source" class="col-sm-2 control-label">线索来源label>
    224. <div class="col-sm-10" style="width: 300px;">
    225. <select class="form-control" id="edit-source">
    226. <option>option>
    227. <c:forEach items="${source}" var="sou">
    228. <option value="${sou.id}">${sou.value}option>
    229. c:forEach>
    230. select>
    231. div>
    232. div>
    233. <div class="form-group">
    234. <label for="edit-describe" class="col-sm-2 control-label">描述label>
    235. <div class="col-sm-10" style="width: 81%;">
    236. <textarea class="form-control" rows="3" id="edit-describe">这是一条线索的描述信息textarea>
    237. div>
    238. div>
    239. <div style="height: 1px; width: 103%; background-color: #D5D5D5; left: -13px; position: relative;">div>
    240. <div style="position: relative;top: 15px;">
    241. <div class="form-group">
    242. <label for="edit-contactSummary" class="col-sm-2 control-label">联系纪要label>
    243. <div class="col-sm-10" style="width: 81%;">
    244. <textarea class="form-control" rows="3" id="edit-contactSummary">这个线索即将被转换textarea>
    245. div>
    246. div>
    247. <div class="form-group">
    248. <label for="edit-nextContactTime" class="col-sm-2 control-label">下次联系时间label>
    249. <div class="col-sm-10" style="width: 300px;">
    250. <input type="text" class="form-control" id="edit-nextContactTime" value="2017-05-01">
    251. div>
    252. div>
    253. div>
    254. <div style="height: 1px; width: 103%; background-color: #D5D5D5; left: -13px; position: relative; top : 10px;">div>
    255. <div style="position: relative;top: 20px;">
    256. <div class="form-group">
    257. <label for="edit-address" class="col-sm-2 control-label">详细地址label>
    258. <div class="col-sm-10" style="width: 81%;">
    259. <textarea class="form-control" rows="1" id="edit-address">北京大兴区大族企业湾textarea>
    260. div>
    261. div>
    262. div>
    263. form>
    264. div>
    265. <div class="modal-footer">
    266. <button type="button" class="btn btn-default" data-dismiss="modal">关闭button>
    267. <button type="button" class="btn btn-primary" data-dismiss="modal">更新button>
    268. div>
    269. div>
    270. div>
    271. div>
    272. <div>
    273. <div style="position: relative; left: 10px; top: -10px;">
    274. <div class="page-header">
    275. <h3>线索列表h3>
    276. div>
    277. div>
    278. div>
    279. <div style="position: relative; top: -20px; left: 0px; width: 100%; height: 100%;">
    280. <div style="width: 100%; position: absolute;top: 5px; left: 10px;">
    281. <div class="btn-toolbar" role="toolbar" style="height: 80px;">
    282. <form class="form-inline" role="form" style="position: relative;top: 8%; left: 5px;">
    283. <div class="form-group">
    284. <div class="input-group">
    285. <div class="input-group-addon">名称div>
    286. <input class="form-control" type="text">
    287. div>
    288. div>
    289. <div class="form-group">
    290. <div class="input-group">
    291. <div class="input-group-addon">公司div>
    292. <input class="form-control" type="text">
    293. div>
    294. div>
    295. <div class="form-group">
    296. <div class="input-group">
    297. <div class="input-group-addon">公司座机div>
    298. <input class="form-control" type="text">
    299. div>
    300. div>
    301. <div class="form-group">
    302. <div class="input-group">
    303. <div class="input-group-addon">线索来源div>
    304. <select class="form-control">
    305. <option>option>
    306. <c:forEach items="${source}" var="sou">
    307. <option value="${sou.id}">${sou.value}option>
    308. c:forEach>
    309. select>
    310. div>
    311. div>
    312. <br>
    313. <div class="form-group">
    314. <div class="input-group">
    315. <div class="input-group-addon">所有者div>
    316. <input class="form-control" type="text">
    317. div>
    318. div>
    319. <div class="form-group">
    320. <div class="input-group">
    321. <div class="input-group-addon">手机div>
    322. <input class="form-control" type="text">
    323. div>
    324. div>
    325. <div class="form-group">
    326. <div class="input-group">
    327. <div class="input-group-addon">线索状态div>
    328. <select class="form-control">
    329. <option>option>
    330. <c:forEach items="${clueState}" var="clu">
    331. <option value="${clu.id}">${clu.value}option>
    332. c:forEach>
    333. select>
    334. div>
    335. div>
    336. <button type="submit" class="btn btn-default">查询button>
    337. form>
    338. div>
    339. <div class="btn-toolbar" role="toolbar" style="background-color: #F7F7F7; height: 50px; position: relative;top: 40px;">
    340. <div class="btn-group" style="position: relative; top: 18%;">
    341. <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#createClueModal"><span class="glyphicon glyphicon-plus">span> 创建button>
    342. <button type="button" class="btn btn-default" data-toggle="modal" data-target="#editClueModal"><span class="glyphicon glyphicon-pencil">span> 修改button>
    343. <button type="button" class="btn btn-danger"><span class="glyphicon glyphicon-minus">span> 删除button>
    344. div>
    345. div>
    346. <div style="position: relative;top: 50px;">
    347. <table class="table table-hover">
    348. <thead>
    349. <tr style="color: #B3B3B3;">
    350. <td><input type="checkbox" />td>
    351. <td>名称td>
    352. <td>公司td>
    353. <td>公司座机td>
    354. <td>手机td>
    355. <td>线索来源td>
    356. <td>所有者td>
    357. <td>线索状态td>
    358. tr>
    359. thead>
    360. <tbody>
    361. <tr>
    362. <td><input type="checkbox" />td>
    363. <td><a style="text-decoration: none; cursor: pointer;" onclick="window.location.href='detail.html';">李四先生a>td>
    364. <td>动力节点td>
    365. <td>010-84846003td>
    366. <td>12345678901td>
    367. <td>广告td>
    368. <td>zhangsantd>
    369. <td>已联系td>
    370. tr>
    371. <tr class="active">
    372. <td><input type="checkbox" />td>
    373. <td><a style="text-decoration: none; cursor: pointer;" onclick="window.location.href='detail.html';">李四先生a>td>
    374. <td>动力节点td>
    375. <td>010-84846003td>
    376. <td>12345678901td>
    377. <td>广告td>
    378. <td>zhangsantd>
    379. <td>已联系td>
    380. tr>
    381. tbody>
    382. table>
    383. div>
    384. <div style="height: 50px; position: relative;top: 60px;">
    385. <div>
    386. <button type="button" class="btn btn-default" style="cursor: default;"><b>50b>条记录button>
    387. div>
    388. <div class="btn-group" style="position: relative;top: -34px; left: 110px;">
    389. <button type="button" class="btn btn-default" style="cursor: default;">显示button>
    390. <div class="btn-group">
    391. <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
    392. 10
    393. <span class="caret">span>
    394. button>
    395. <ul class="dropdown-menu" role="menu">
    396. <li><a href="#">20a>li>
    397. <li><a href="#">30a>li>
    398. ul>
    399. div>
    400. <button type="button" class="btn btn-default" style="cursor: default;">条/页button>
    401. div>
    402. <div style="position: relative;top: -88px; left: 285px;">
    403. <nav>
    404. <ul class="pagination">
    405. <li class="disabled"><a href="#">首页a>li>
    406. <li class="disabled"><a href="#">上一页a>li>
    407. <li class="active"><a href="#">1a>li>
    408. <li><a href="#">2a>li>
    409. <li><a href="#">3a>li>
    410. <li><a href="#">4a>li>
    411. <li><a href="#">5a>li>
    412. <li><a href="#">下一页a>li>
    413. <li class="disabled"><a href="#">末页a>li>
    414. ul>
    415. nav>
    416. div>
    417. div>
    418. div>
    419. div>
    420. body>
    421. html>

    功能测试

    点击条件查询的线索状态,根据数据库内容查出各种数据

     点击创建,弹出模态窗口,展示各个选项的下拉框,数据从数据库中查询而来,增加了系统后期的数据维护性。

     

     

  • 相关阅读:
    java毕业设计成品基于JavaWeb酒店管理系统开发与设计[包运行成功]
    HTML学生个人网站作业设计:公益专题扫黑除恶(HTML+CSS)
    供应链 | M&SOM论文解读:零售商响应定价能力对供应链韧性的影响
    java面向切面编程AOP案例,记录请求日志
    Lock和synchronized的区别
    ​软考-高级-信息系统项目管理师教程 第四版【第17章-项目干系人管理-思维导图】​
    OSG学习之三:坐标变换
    再思考设计模式
    Go语言学习笔记——单元测试
    使用pytorch将三维图像分块(patches)
  • 原文地址:https://blog.csdn.net/weixin_59334478/article/details/125897030