前端
goodsadmin
<!--<!DOCTYPE html>-->
<!--<html>-->
<!--<meta charset="utf-8">-->
<!-- 商品表 -->
<div style="margin-bottom: 5px"></div>
<!--<link rel="stylesheet" href="layui/css/layui.css">-->
<div class="layui-btn-group demoTable1">
<button class="layui-btn" data-type="add">添加</button>
</div>
<table class="layui-table" id="tbGoods" lay-filter="tbGoods"></table>
<script type="text/html" id="goods_operation">
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
<!-- 大小规格表 -->
<div style="margin-bottom: 5px"></div>
<div class="layui-btn-group demoTable2">
<button class="layui-btn" data-type="add">添加</button>
</div>
<table class="layui-table" id="tbSpecs" lay-filter="tbSpecs"></table>
<script type="text/html" id="specs_operation">
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
<div class="layui-form" lay-filter="uploadform" id="uploadform" style="padding: 20px 30px 0 0;" enctype="multipart/form-data">
<div class="layui-form-item">
<label class="layui-form-label">图片上传</label>
<div class="layui-input-inline">
<input type="file" name="uploadfile">
</div>
</div>
</div>
<!--<script src="layui/layui.js"></script>-->
<script>
var table = null;
var row = null;
layui.use(['table','jquery','layer'], function(){
table = layui.table;
var $ = layui.jquery;
var layer = layui.layer;
table.render({
elem: '#tbGoods'
,url: 'http://localhost:9011/goodsadmin/findAll' //数据接口
,cellMinWidth: 50 // 全局定义常规单元格的最小宽度
,parseData: function (res) {
return {
"code": res.code,
"msg": res.message,
"count": res.count,
"data": res.data
}
}
,cols: [[ //表头
{field: 'id', title: 'ID', align:'center',sort: true, fixed: 'left'}
,{field: 'goodsName', title: '商品名称', align:'center'}
,{field: 'price', title: '价格', align:'center'}
,{field: 'stock', title: '仓库', align:'center'}
,{field: 'specs', title: '大小类型', align:'center'}
,{field: 'businessName', title: '商家名称', align:'center'}
,{title: '操作', align:'center', toolbar: '#goods_operation', fixed: 'right', width: 150}
]]
});
table.render({
elem: '#tbSpecs'
,url: 'http://localhost:9011/specsadmin/findAll' //数据接口
,cellMinWidth: 50 // 全局定义常规单元格的最小宽度
,parseData: function (res) {
return {
"code": res.code,
"msg": res.message,
"count": res.count,
"data": res.data
}
}
,cols: [[ //表头
{field: 'specsId', title: '编号', align:'center',sort: true, fixed: 'left'}
,{field: 'specs', title: '大小类型', align:'center'}
,{title: '操作', align:'center', toolbar: '#goods_operation', fixed: 'right', width: 150}
]]
});
// 监听行内工具条
table.on('tool(tbGoods)', function(obj){
row = obj.data;
if (obj.event === 'edit') {
layer.open({
type: 2
,title: '<span class="layui-icon"> </span>修改商品信息'
,content: './updategoods.html'
,area: ['600px', '500px']
,skin: 'layui-layer-molv' // 弹窗样式
})
} else if (obj.event === 'del') {
layer.confirm('是否真的要删除选中行', function(index){
$.ajax({
url: 'http://localhost:9011/goodsadmin/' + row.id,
type: 'POST',
dataType: 'JSON',
success: function (json) {
if (json.flag === true) {
layer.msg(json.message);
setTimeout("table.reload('tbGoods')", 1000); //设置延时
} else {
layer.msg(json.message);
}
}
})
layer.close(index);
});
}
});
// 监听表格左上方的工具条
active = {
// "添加" 操作的事件
add: function(){
layer.open({
type: 2
,title: '<span class="layui-icon"> </span>添加商品信息'
,content: './addgoods.html'
,area: ['600px', '500px']
,skin: 'layui-layer-molv'
});
}
};
$('.demoTable1 .layui-btn').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
});
</script>
<!--</html>-->
add
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>添加商品信息</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="./layui/css/layui.css">
</head>
<body>
<div class="layui-form" lay-filter="addChance-form" id="addChance-form" style="padding: 20px 30px 0 0;">
<!-- 这是用户登录自动注入的数据-->
<div class="layui-form-item">
<label class="layui-form-label">商品名称</label>
<div class="layui-input-inline">
<input type="text" name="goodsName" lay-verify="required" placeholder="请输入商品名称" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">价格</label>
<div class="layui-input-inline">
<input type="text" name="price" lay-verify="required" placeholder="请输入价格" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">库存</label>
<div class="layui-input-inline">
<input type="text" name="stock" lay-verify="required" placeholder="请输入库存" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">大小类型</label>
<div class="layui-input-inline">
<!-- <input type="text" name="specs" lay-verify="required" placeholder="请输入大小类型" autocomplete="off" class="layui-input">-->
<select>
<option disabled selected>请选择</option>
<option>小型</option>
<option>中型</option>
<option>大型</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">商家名称</label>
<div class="layui-input-inline">
<input type="text" name="businessName" lay-verify="odds" placeholder="请输入商家名称" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="submitAddGoods">提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</div>
<script src="./layui/layui.js"></script>
<script>
layui.use(['form','jquery','layer','element'], function () {
var element = layui.element;
var form = layui.form;
var $ = layui.jquery;
var layer = layui.layer;
// 点击提交按钮的事件,传输数据ajax
form.on('submit(submitAddGoods)', function (data) {
$.ajax({
url: 'http://localhost:9011/goodsadmin/add',
type: 'POST',
dataType: 'JSON',
data: data.field, // 提交的字段
success: function (json) {
if (json.flag === true) {
var refreshTable = function() {
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
parent.layer.close(index); //再执行关闭
parent.table.reload('tbGoods');
}
layer.msg(json.message);
setTimeout(refreshTable, 1000);
} else {
layer.msg(json.message);
}
}
})
return false; //阻止form 默认提交刷新页面的行为
});
});
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title></title>
<link rel="stylesheet" href="layui/css/layui.css">
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
<div class="layui-header">
<div class="layui-logo"></div>
<!-- 头部区域(可配合layui已有的水平导航) -->
<ul class="layui-nav layui-layout-left">
<li class="layui-nav-item"><a href="">控制台</a></li>
<li class="layui-nav-item"><a href="">商品管理</a></li>
<li class="layui-nav-item"><a href="">用户</a></li>
<li class="layui-nav-item">
<a href="javascript:;">其它系统</a>
<dl class="layui-nav-child">
<dd><a href="">邮件管理</a></dd>
<dd><a href="">消息管理</a></dd>
<dd><a href="">授权管理</a></dd>
</dl>
</li>
</ul>
<ul class="layui-nav layui-layout-right">
<li class="layui-nav-item">
<a href="javascript:;">
<img src="http://t.cn/RCzsdCq" class="layui-nav-img">
陈健
</a>
<dl class="layui-nav-child">
<dd><a href="">基本资料</a></dd>
<dd><a href="">安全设置</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a href="">退出</a></li>
</ul>
</div>
<div class="layui-side layui-bg-black">
<div class="layui-side-scroll">
<!-- 左侧导航区域(可配合layui已有的垂直导航) -->
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a class="" href="javascript:;">信息管理</a>
<dl class="layui-nav-child">
<dd><a class="menu" url="goodsadmin.html" href="javascript:;">商品管理</a></dd>
</dl>
</li>
</ul>
</div>
</div>
<div class="layui-body">
<!-- 内容主体区域 -->
<div id="content" style="padding: 15px;">请点击商品管理,查看机试结果</div>
</div>
<div class="layui-footer">
<!-- 底部固定区域 -->
© layui.com - 底部固定区域
</div>
</div>
<script src="layui/layui.js"></script>
<script>
layui.use(['element','jquery'], function(){
var element = layui.element;
var $ = layui.jquery;
// 通过点击对应的菜单,改变内容主体区域
$(".menu").click(function () {
var url = $(this).attr("url");
$.get(url, function (result) {
$("#content").html(result);
})
})
});
</script>
</body>
</html>
update
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>修改商品信息</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="./layui/css/layui.css">
</head>
<body>
<div class="layui-form" lay-filter="formUpdateGoods" id="formUpdateGoods" style="padding: 20px 30px 0 0;">
<input type="hidden" name="id"/>
<div class="layui-form-item">
<label class="layui-form-label">商品名称</label>
<div class="layui-input-inline">
<input type="text" name="goodsName" lay-verify="required" placeholder="请输入商品名称" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">价格</label>
<div class="layui-input-inline">
<input type="text" name="price" lay-verify="required" placeholder="请输入价格" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">库存</label>
<div class="layui-input-inline">
<input type="text" name="stock" lay-verify="required" placeholder="请输入库存" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">大小类型</label>
<div class="layui-input-inline">
<input type="text" name="specs" lay-verify="required" placeholder="请输入大小类型" autocomplete="off" class="layui-input">
<!-- <select>-->
<!-- <option disabled>请选择</option>-->
<!-- </select>-->
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">商家名称</label>
<div class="layui-input-inline">
<input type="text" name="businessName" lay-verify="odds" placeholder="请输入商家名称" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="submitUpdateGoods">保存</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</div>
<script src="./layui/layui.js"></script>
<script>
layui.use(['form','jquery','layer','element'], function () {
var element = layui.element;
var form = layui.form;
var $ = layui.jquery;
var layer = layui.layer;
form.val('formUpdateGoods', {
"id":parent.row.id
,"goodsName": parent.row.goodsName
,"price": parent.row.price
,"stock": parent.row.stock
,"specs": parent.row.specs
,"businessName": parent.row.businessName
,"outline": parent.row.outline
,"details": parent.row.details
});
// 点击保存按钮的事件,传输数据ajax
form.on('submit(submitUpdateGoods)', function (data) {
$.ajax({
url: 'http://localhost:9011/goodsadmin/update',
type: 'POST',
dataType: 'JSON',
data: data.field, // 提交的字段
success: function (json) {
if (json.flag === true) {
var refreshTable = function() {
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
parent.layer.close(index); //再执行关闭
parent.table.reload('tbGoods');
}
layer.msg(json.message);
setTimeout(refreshTable, 1000); // 设置延时
} else {
layer.msg(json.message);
}
}
})
return false; //阻止form 默认提交刷新页面的行为
});
});
</script>
</body>
</html>
自动生成
generatorConfig
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- windows下路径, D:\downloads\xxx.jar-->
<classPathEntry location="G:\jar\mysql-connector-java-5.1.6.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 不再追加xml内容-->
<plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />
<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/crm_system?characterEncoding=utf-8"
userId="root"
password="chenjian123">
</jdbcConnection>
<!-- <javaTypeResolver >-->
<!-- <property name="forceBigDecimals" value="false" />-->
<!-- </javaTypeResolver>-->
<javaModelGenerator targetPackage="com.hqyj.crm.entity" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<!-- <property name="trimStrings" value="true" />-->
</javaModelGenerator>
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER" targetPackage="com.hqyj.crm.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- <table tableName="customer" domainObjectName="Customer" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false"/>-->
<!-- <table tableName="user" domainObjectName="CrmUser" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false"/>-->
<!-- <table tableName="contact" domainObjectName="Contact" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false"/>-->
<table tableName="sale_chance" domainObjectName="SaleChance" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false">
<columnOverride column="creator_id" property="creator" javaType="com.hqyj.crm.entity.CrmUser"/>
<columnOverride column="handler_id" property="handler" javaType="com.hqyj.crm.entity.CrmUser"/>
</table>
<!-- <table tableName=""></table>-->
</context>
</generatorConfiguration>
mapper
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hqyj.crm.mapper.SaleChanceMapper">
<resultMap id="BaseResultMap" type="com.hqyj.crm.entity.SaleChance">
<id column="id" jdbcType="INTEGER" property="id" />
<result column="customer_name" jdbcType="VARCHAR" property="customerName" />
<result column="source" jdbcType="VARCHAR" property="source" />
<result column="contact_name" jdbcType="VARCHAR" property="contactName" />
<result column="contact_phone" jdbcType="VARCHAR" property="contactPhone" />
<result column="success_odds" jdbcType="REAL" property="successOdds" />
<result column="outline" jdbcType="VARCHAR" property="outline" />
<result column="details" jdbcType="VARCHAR" property="details" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="status" jdbcType="INTEGER" property="status" />
<result column="handle_time" jdbcType="TIMESTAMP" property="handleTime" />
<association property="creator" javaType="com.hqyj.crm.entity.CrmUser">
<result column="creatorId" property="id"/>
<result column="creatorName" property="name"/>
</association>
<association property="handler" javaType="com.hqyj.crm.entity.CrmUser">
<result column="handlerId" property="id"/>
<result column="handlerName" property="name"/>
</association>
</resultMap>
<sql id="Base_Column_List">
s.id, s.customer_name, s.source, s.contact_name, s.contact_phone, s.success_odds, s.outline, s.details,
s.creator_id, s.create_time, s.status, s.handler_id, s.handle_time
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from sale_chance
where id = #{id,jdbcType=INTEGER}
</select>
<select id="selectChanceList" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>,
u1.id creatorId,
u1.name creatorName,
u2.id handlerId,
u2.name handlerName
from
user u1
INNER JOIN
sale_chance s
ON
s.creator_id = u1.id
LEFT JOIN
user u2
ON
s.handler_id = u2.id
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
delete from sale_chance
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.hqyj.crm.entity.SaleChance">
insert into sale_chance (id, customer_name, source,
contact_name, contact_phone, success_odds,
outline, details, creator_id,
create_time, status, handler_id,
handle_time)
values (#{id,jdbcType=INTEGER}, #{customerName,jdbcType=VARCHAR}, #{source,jdbcType=VARCHAR},
#{contactName,jdbcType=VARCHAR}, #{contactPhone,jdbcType=VARCHAR}, #{successOdds,jdbcType=REAL},
#{outline,jdbcType=VARCHAR}, #{details,jdbcType=VARCHAR}, #{creator.id,jdbcType=INTEGER},
#{createTime,jdbcType=TIMESTAMP}, #{status,jdbcType=INTEGER}, #{handler.id,jdbcType=INTEGER},
#{handleTime,jdbcType=TIMESTAMP})
</insert>
<insert id="insertSelective" parameterType="com.hqyj.crm.entity.SaleChance">
insert into sale_chance
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="customerName != null">
customer_name,
</if>
<if test="source != null">
source,
</if>
<if test="contactName != null">
contact_name,
</if>
<if test="contactPhone != null">
contact_phone,
</if>
<if test="successOdds != null">
success_odds,
</if>
<if test="outline != null">
outline,
</if>
<if test="details != null">
details,
</if>
<if test="creator != null">
creator_id,
</if>
<if test="createTime != null">
create_time,
</if>
<if test="status != null">
status,
</if>
<if test="handler != null">
handler_id,
</if>
<if test="handleTime != null">
handle_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=INTEGER},
</if>
<if test="customerName != null">
#{customerName,jdbcType=VARCHAR},
</if>
<if test="source != null">
#{source,jdbcType=VARCHAR},
</if>
<if test="contactName != null">
#{contactName,jdbcType=VARCHAR},
</if>
<if test="contactPhone != null">
#{contactPhone,jdbcType=VARCHAR},
</if>
<if test="successOdds != null">
#{successOdds,jdbcType=REAL},
</if>
<if test="outline != null">
#{outline,jdbcType=VARCHAR},
</if>
<if test="details != null">
#{details,jdbcType=VARCHAR},
</if>
<if test="creator != null">
#{creator.id,jdbcType=INTEGER},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
<if test="status != null">
#{status,jdbcType=INTEGER},
</if>
<if test="handler != null">
#{handler.id,jdbcType=INTEGER},
</if>
<if test="handleTime != null">
#{handleTime,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.hqyj.crm.entity.SaleChance">
update sale_chance
<set>
<if test="customerName != null">
customer_name = #{customerName,jdbcType=VARCHAR},
</if>
<if test="source != null">
source = #{source,jdbcType=VARCHAR},
</if>
<if test="contactName != null">
contact_name = #{contactName,jdbcType=VARCHAR},
</if>
<if test="contactPhone != null">
contact_phone = #{contactPhone,jdbcType=VARCHAR},
</if>
<if test="successOdds != null">
success_odds = #{successOdds,jdbcType=REAL},
</if>
<if test="outline != null">
outline = #{outline,jdbcType=VARCHAR},
</if>
<if test="details != null">
details = #{details,jdbcType=VARCHAR},
</if>
<if test="creator != null">
creator_id = #{creator.id,jdbcType=INTEGER},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
<if test="status != null">
status = #{status,jdbcType=INTEGER},
</if>
<if test="handler != null">
handler_id = #{handler.id,jdbcType=INTEGER},
</if>
<if test="handleTime != null">
handle_time = #{handleTime,jdbcType=TIMESTAMP},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.hqyj.crm.entity.SaleChance">
update sale_chance
set customer_name = #{customerName,jdbcType=VARCHAR},
source = #{source,jdbcType=VARCHAR},
contact_name = #{contactName,jdbcType=VARCHAR},
contact_phone = #{contactPhone,jdbcType=VARCHAR},
success_odds = #{successOdds,jdbcType=REAL},
outline = #{outline,jdbcType=VARCHAR},
details = #{details,jdbcType=VARCHAR},
creator_id = #{creator.id,jdbcType=INTEGER},
create_time = #{createTime,jdbcType=TIMESTAMP},
status = #{status,jdbcType=INTEGER},
handler_id = #{handler.id,jdbcType=INTEGER},
handle_time = #{handleTime,jdbcType=TIMESTAMP}
where id = #{id,jdbcType=INTEGER}
</update>
</mapper>