crm day03 创建市场活动

news2024/9/21 22:53:01

页面切割

div切割,ifram显示
在这里插入图片描述如何分割的呢,在主页面上打开iframe

$(function(){ //页面加载时
	window.open("workbench/main/index.do","workareaFrame");
})

注意所有在WEB-INF的页面都会收到保护,因此到达此目录下的页面必须全部通过Controller请求进行跳转页面。
而静态资源不在WEB-INF目录下在,在webapp根目录下的,前端页面不写/,后端页面写/。

模态窗口

模态窗口默认是隐藏的,看不见。
模态窗口本质上就是一个页面上的div,通过设置z-index大小来实现
使用到了bootstrap
模态窗口的显示与隐藏
方式1 通过data-toggle=“modal” (数据开关,一点就隐藏,一点就显示) data-target=“模态窗口的标识id”
方式2 通过js函数控制 ,由bootstarpt框架支持
选择器.modal("show");显示选中的模态框口
选择器.modal("hide");关闭选中的模态窗口
方式1和方式2只能存一个。
方式3 通过标签的属性data-dismiss=“modal”;添加了dismiss属性的标签点击会自动关闭该标签所在的窗口。

下拉列表选项,动态获取所有者

下拉列表选项显示的是用户名,但是下拉列表实际上存储的是用户的ID,因为用户名称可能重复,但是用户ID不可能重复。
为了保证用户ID不重复,我们自定义了UUID这个工具类

public class UUIDUtil {
    public static String getUUID(){
        return UUID.randomUUID().toString().replaceAll("-","");
    }
}

为了动态获取,我们需要连接数据库查询用户表中的数据,将数据库表中的数据动态显示到前端页面,查询的是多组,userlist,因此我们在前端遍历的时候需要用到jstl标签库中的内容,使用

<select class="form-control" id="edit-marketActivityOwner">
	 <c:forEach items="${userList}" var="u">
	 <option value="${u.id}">${u.name}</option>
	 </c:forEach>
</select>

取值为id,显示为用户名。

在那里获取这个userList,什么时候查询,收集信息呢?
一次请求通常包括 HTTP 请求和响应两个部分。
创建,修改都会弹出模态窗口,但是这个模态窗口是div,始终在原页面的请求页面中,只有点击了保存或者更新按钮后,才会出现新的请求,因此获取的userList可以保存到原页面的请求域中。
在跳转到原页面的时候,就获取userList。

流程图

在这里插入图片描述

创建活动的时候看着数据库中的表,看活动表需要哪些参数,比如前端传过来的有所有者,名称,成本,日期,描述,但是没有活动id,没有活动的创建者和创建时间,因此在传过来之后,我们需要在Controller请求中给其他没有赋值的属性赋值,活动ID由UUID工具类来创建唯一不重复的ID,创建时间是当前时间,活动的创建者是当前登录的用户,在登录的时候我们利用Session保存了当前登录的用户,因此我们需要穿一个Session获取当前用户的ID。

表单验证-正则表达式

先获取参数,再进行表单验证
正则表达式

var regExp=/^(([1-9]\d*)|0)$/;   //满足正则表达式的变量值
			if(!regExp.test(cost)){   //.test()验证是否满足正则表达式。
				alert("成本只能为非负整数");
				return;
			}

正则看文档。

日历插件

当我们要写一个与业务逻辑无关的代码,而且这个代码很麻烦的时候,我们可以选用插件来完成该代码的实现。
比如 数据库的日期是有格式的,我们不能让用户随便填写日期,因此我们可以选择用日历插件的形式,让用户自己选日期,填写的内容以字符串的形式输出。
所以我们要在日期的标签内设置只可读,readonly

<input type="text" class="form-control mydate" id="create-startTime" readonly>

网上插件一大堆,我们选择选一个好看的、与页面风格相近的插件。
如何使用插件?
在页面中使用插件之前,我们必须先创建一个测试jsp来测试插件,没问题后再在我们的工作页面中使用。
使用插件的三大步骤:
1、导入与插件有关的包
html,js,css->放到jquery里面
下载开发包,拷贝到项目webapp目录下,把开发包引入到jsp文件中:<link> <script>

2、创建一个容器来放插件
插件运行的结果放在容器<input type="text" />或者<div>中 ,readonly 不改可提交 disable 不改不能提交,为了不让用户自己输入,我们设置容器只能选不能改。

3、当容器加载完成之后($(function(){})),对容器调用工具函数

开源代码的厉害就是我们可以修改源代码。比如让不支持中文的代码支持简体中文

注意导入包的先后顺序,比如该日期插件,现有js,再有bootstrap,再有bs_pagination
测试jsp的内容

<%@page contentType="text/html; charset=utf-8" language="java" %>
<% String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + "/" + request.getContextPath() + "/";%>
<html>
<!--  JQUERY -->
<script type="text/javascript" src="jquery/jquery-1.11.1-min.js"></script>

<!--  BOOTSTRAP -->
<link rel="stylesheet" type="text/css" href="jquery/bootstrap_3.3.0/css/bootstrap.min.css">
<script type="text/javascript" src="jquery/bootstrap_3.3.0/js/bootstrap.min.js"></script>

<!--  PAGINATION plugin -->
<link rel="stylesheet" type="text/css" href="jquery/bs_pagination-master/css/jquery.bs_pagination.min.css">
<script type="text/javascript" src="jquery/bs_pagination-master/js/jquery.bs_pagination.min.js"></script>
<script type="text/javascript" src="jquery/bs_pagination-master/localization/en.js"></script>
<title>演示bs_pagination插件的使用</title>
<script type="text/javascript">
    $(function() {
        $("#demo_pag1").bs_pagination({
            currentPage:1,//当前页号,相当于pageNo

            rowsPerPage:10,//每页显示条数,相当于pageSize
            totalRows:100,//总条数
            totalPages: 10,  //总页数,必填参数.

            visiblePageLinks:5,//最多可以显示的卡片数

            showGoToPage:true,//是否显示"跳转到"部分,默认true--显示
            showRowsPerPage:true,//是否显示"每页显示条数"部分。默认true--显示
            showRowsInfo:true,//是否显示记录的信息,默认true--显示

        });

    });
</script>
</head>
<body>
<!--  Just create a div and give it an ID -->

<div id="demo_pag1"></div>
<h2>演示bs_pagaination插件</h2>
</body>
</html>

测试成功

在 多个标签中有共性的代码的时候,使用类选择器,找到他们的共性类。

在原页面使用,在开始日期和结束日期的标签内定义一个公共class,在js中选择并添加日期选择器。

$(function(){
		//日历插件
		$(".mydate").datetimepicker({
			language:'ch-ZN',
			format:'yyyy-mm-dd',
			minView:'month',
			initialDate:new Date(),//初始化显示的日期
			autoclose:true,//设置选择完日期或者时间之后,日否自动关闭日历
			todayBtn:true,//设置是否显示"今天"按钮,默认是false
			clearBtn:true//设置是否显示"清空"按钮,默认是false
		});

<input type="text" class="form-control mydate" id="edit-startTime" value="2020-10-10">
<input type="text" class="form-control mydate" id="edit-endTime" value="2020-10-20">

创建完市场活动清空创建表单中的数据

点击保存之后,如果成功了,模态窗口会关闭,但是关闭仅仅代表隐藏了模态窗口,当我们再次点击创建按钮的时候显示的是之前写好创建表单,影响了我们第二次创建,因此我们在第二次创建也就是点击创建按钮的时候需要清空之前创建的表单数据。
如果清空之前创建的表单数据?
获取表单的dom对象,dom对象有一个reset函数可以清空表单
选择器.get(0).reset();

$("#createActivityForm").get(0).reset();

如何获取表单的dom对象?
选择器.get(0)
选择器[0]

创建完成后刷新市场列表,涉及到分页查询的内容。
详情见下一章详解。

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

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

相关文章

不得不的创建型模式-建造者模式

目录 建造者模式是什么 下面是一个简单的示例代码&#xff0c;演示了如何使用建造者模式来构建一个复杂对象&#xff1a; 面试中可能遇到的问题及回答&#xff1a; 建造者模式是什么 建造者模式是一种创建型模式&#xff0c;它的目的是将复杂对象的构造过程分离成多个简单的…

你知道项目进度控制和跟踪的目的是什么吗?

项目进度控制和跟踪的目的是&#xff1a; 增强项目进度的透明度&#xff0c;当项目进展与项目计划出现偏差时&#xff0c;可以及时采取适当的措施。 1、计划是项目监控的有效手段 项目控制的手段是根据计划对项目的各项活动进行监控&#xff0c;项目经理可以使用甘特图来制…

界面控件DevExtreme使用指南 - 折叠组件快速入门(二)

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合&#xff0c;使您可以利用现代Web开发堆栈&#xff08;包括React&#xff0c;Angular&#xff0c;ASP.NET Core&#xff0c;jQuery&#xff0c;Knockout等&#xff09;构建交互式的Web应用程序&#xff0c;该套件附带功能齐…

微信小程序nodejs+python+php+springboot+vue 微型整容医美挂号预约app系统

(a) 管理员&#xff1b;管理员使用本系统涉到的功能主要有首页、个人中心、用户管理、体检预约管理、项目预约、系统管理等功能 (b) 用户&#xff1b;用户进入app可以实现首页、美容产品、我的等&#xff0c;在我的页面可以对在线预约、体检预约、项目预约等功能进行操作 本基于…

Unity之OpenXR+XR Interaction Toolkit实现 UI交互

一.前言 在VR中我们经常会和一些3D的UI进行交互&#xff0c;今天我们就来说一下如何实现OpenXRXRInteraction Toolkit和UI的交互。 二.准备工作 有了前两篇的配置介绍,我们就不在详细说明这些了&#xff0c;大家自行复习 Unity之OpenXRXR Interaction Toolkit接入Pico VR一体…

钉钉用一条斜杠,金山系用一张表格,做了华为一直想做的事

阿里的“新钉钉”又一次站在风口上 一场疫情导致数万企业停工的同时&#xff0c;却让阿里的钉钉、腾讯会议&#xff0c;还有字节跳动的飞书等在线协同办公产品火得一塌糊涂。 今天&#xff0c;OpenAI公司的一个chatGPT,让阿里、百度等各大互联网巨头扎堆发布大模型产品。 回顾…

如何在Web上实现激光点云数据在线浏览和展示?

无人机激光雷达测量是一项综合性较强的应用系统&#xff0c;具有数据精度高、层次细节丰富、全天候作业等优势&#xff0c;能够精确测量三维现实世界&#xff0c;为各个行业提供了丰富有效的数据信息。但无人机激光雷达测量产生的点云数据需要占用大量的存储空间&#xff0c;甚…

Gantt图和PERT图的相关知识

1、Gantt 图 Gantt图以时间为基准描述项目任务&#xff0c;可以清晰的描述每个任务从何时开始&#xff0c;到何时结束&#xff0c;以及每个任务的并行关系&#xff0c;但是不能反映项目各任务之间的依赖关系&#xff0c;也无法确定整个任务的关键所在。 2、PERT图 计划评审…

Canvas实现动态绘制圆周效果(沿圆周运动的圆的绘制)

步骤实现&#xff1a; 首先&#xff0c;创建一个 HTML 画布和一个 JavaScript 动画函数。 在画布上绘制一个圆。 定义一个变量来表示圆心的坐标和半径。 进行动画循环以更新圆心坐标&#xff0c;使其沿外圆周运动。 使用三角函数&#xff08;如 sin 和 cos&#xff09;来计…

前端代码版本管理规范

Git 是目前最流行的源代码管理工具。为规范开发&#xff0c;保持代码提交记录以及 git分支结构清晰&#xff0c;方便后续维护&#xff0c;总结了如下规范。 分支约定 ├── master # 生产分支 ├── release # 测试分支├── develop # 开发分支…

学系统集成项目管理工程师(中项)系列11b_沟通管理(下)

1. 沟通过程的有效性 1.1. 效果 1.1.1. 在适当的时间、适当的方式、信息被准确的发送给适当的沟通参与方&#xff08;信息的接收方&#xff09;&#xff0c;并且能够被正确的理解&#xff0c;最终参与方能够正确的采取行动 1.2. 效率 1.2.1. 强调的是及时提供所需的信息 2…

两数之和hash

给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回…

基于opencv-python的深度学习模块案例

目录 图像分类 目标检测 人脸检测 姿态估计 车辆检测 一、图像分类 图像分类是基于深度学习的计算机视觉任务中最简单、也是最基础的一类&#xff0c;它其中用到的CNN特征提取技术也是目标检测、目标分割等视觉任务的基础。 具体到图像分类任务而言&#xff0c;其具体流…

Springcloud----Feign

在上一个案列中Springcloud-注册中心 使用的交互是利用RestTemplate发起远程调用的代码,Feign是Springcloud整合的声明式组件, Feign Feign和RestTemplate都是用于在Java中实现RESTful API调用的工具&#xff0c;但它们之间有一些区别和优缺点。 区别 Feign是一个声明式HTTP…

夜天之书 #82 Web API 简介

Application Programming Interface (API) 即应用程序接口。顾名思义&#xff0c;它是开发者访问应用程序的接口。 例如&#xff0c;你可以通过以下命令查询 GitHub 上特定代码仓库的元数据信息&#xff1a; curl https://api.github.com/repos/apache/pulsar GitHub 会返回以下…

Springboot——导入用户地址簿相关功能代码

目录 一、导入用户地址簿相关功能代码 1.1 需求分析 1.2 数据库对应的表 1.3 实体类 1.4 控制层 二、菜品展示 2.1 修改列表接口 2.2 设置对应接口查询套餐信息 三、购物车 3.1 购物车数据模型 3.2 代码开发 3.2.1 实体类 3.2.2 添加购物车 3.2.3 查看购物车 3.2.4 清空购…

clickhouse 为什么快?

文章目录 [TOC](文章目录) 前言一、什么是列式数据库&#xff1f;为什么要用列式数据库,优点是什么? 二、clickhouse入门1. 个人猜想2. 使用clickhouse引入依赖yml配置扫描mapper 2.生成相应代码,执行测试用例查询结果 总结 前言 例如&#xff1a;随着人工智能的不断发展&…

还在玩传统终端,不妨来试试全新 AI 终端 Warp

壹 ❀ 引 最近一段时间&#xff0c;AI领域如同雨后春笋般开始猛烈生长&#xff0c;processon&#xff0c;sentry&#xff0c;一些日常使用的工具都在积极接入AI&#xff0c;那么正好借着AI的风头&#xff0c;今天给大家推荐一款非常不错的智能终端 warp&#xff08;目前仅限ma…

Servlet配置与高效部署

作出网页后端的核心目标就是 , 基于 tomcat 编程进行网站后端的开发 , 肯定需要对 http 协议进行一系列操作 , 幸运的是 tomcat 已经把这些 http 相关的底层操作封装好了(监听端口 , 接收连接 , 读取请求 , 解析请求 , 构造请求对象等一系列操作) , 只需调用 tomcat 为我们提供…

VMware虚拟机安装Linux教程(Windows版)

VMware虚拟机安装Linux教程&#xff08;Windows版&#xff09; 第一步、安装 VM &#x1f4e2;&#x1f4e2;&#xff1a;VMware下载以及Linux系统镜像需要的小伙伴可以私信我&#xff0c;也可以去官网上下载&#xff0c;文章中不能涉及安装包啥的&#xff0c;不然显示侵权&a…