记得上下班打卡 | git大法好,push需谨慎

Commit 676fae04 authored by 张国柄's avatar 张国柄

+模版;

parent 623f4070
package com.liquidnet.client.admin.web.controller.zhengzai.candy;
import com.liquidnet.client.admin.common.annotation.Log;
import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.enums.BusinessType;
import com.liquidnet.client.admin.common.utils.DateUtils;
import com.liquidnet.client.admin.common.utils.ShiroUtils;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponAdminService;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyMgtCouponAdminService;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponBuildParam;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponInfoDto;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponListParam;
import com.liquidnet.service.candy.entity.CandyCoupon;
import com.liquidnet.service.candy.entity.CandyMgtCoupon;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
@Api(tags = "券发放管理")
@Controller
@RequestMapping("candy/coupon3/mgt")
public class CandyMgtCoupon3AdminController extends BaseController {
private final String prefix = "zhengzai/candy/coupon/mgt";
@Autowired
private ICandyMgtCouponAdminService candyMgtCouponAdminService;
@Autowired
private ICandyCouponAdminService candyCouponAdminService;
@RequiresPermissions("candy:coupon3:mgt:view")
@GetMapping()
public String coupon() {
return prefix + "/coupon3";
}
@RequiresPermissions("candy:coupon3:mgt:list")
@PostMapping("list")
@ResponseBody
public TableDataInfo list(CandyMgtCouponListParam listParam) {
listParam.setCouType(3);
startPage();
List<CandyMgtCouponInfoDto> list = candyMgtCouponAdminService.listForMgtCouponInfoDto(listParam);
return getDataTable(list);
}
@GetMapping("add")
public String add() {
return prefix + "/add3";
}
@ApiOperation(value = "新建券")
@RequiresPermissions("candy:coupon3:mgt:add")
@Log(title = "券发放管理", businessType = BusinessType.INSERT)
@PostMapping("add")
@ResponseBody
public AjaxResult addSave(@Validated CandyMgtCouponBuildParam buildParam) {
BigDecimal discount = null, valFace = null, valOver = null, valMinus = null;
Integer couType = buildParam.getCouType(),
validity = buildParam.getValidity(),
redeemValidity = buildParam.getRedeemValidity();
LocalDateTime nowTime = LocalDateTime.now(),
redeemStart = null, redeemStop = null, effectAt, expireAt,
eventAt = LocalDateTime.parse(buildParam.getEventAt(), DateTimeFormatter.ofPattern(DateUtils.YYYY_MM_DD_HH_MM_SS));
switch (couType) {// TODO: 2021/8/20 校验
case 1:// 代金券
valFace = buildParam.getValFace();
break;
case 2:// 满减券
valOver = buildParam.getValOver();
valMinus = buildParam.getValMinus();
break;
case 3:// 兑换券
redeemStart = eventAt.with(LocalTime.MIN);
redeemStop = eventAt.plusDays(redeemValidity).withHour(23).withMinute(59).withSecond(59);
break;
case 4:// 折扣券
discount = buildParam.getDiscount();
break;
default:
logger.warn("Invalid operation[buildParam.couType={}]", couType);
return this.error(AjaxResult.Type.WARN, "券类型无效");
}
effectAt = eventAt.with(LocalTime.MIN);
expireAt = eventAt.plusDays(validity).withHour(23).withMinute(59).withSecond(59);
String eventLimit = null, operator = ShiroUtils.getLoginName();
if (buildParam.getEventType() == 2) {// 指定用户手机号
eventLimit = buildParam.getEventLimit().trim();
// TODO: 2021/8/20 正则校验手机号字符串
if (StringUtils.isEmpty(eventLimit)) {
return this.error(AjaxResult.Type.WARN, "请指定手机号");
}
}
CandyCoupon initCoupon = new CandyCoupon();
initCoupon.setCouponId(IDGenerator.nextMilliId());
initCoupon.setState(1);
initCoupon.setTitle(buildParam.getTitle());
initCoupon.setLabel(buildParam.getLabel());
initCoupon.setNotice(buildParam.getNotice());
initCoupon.setExclusive(0);
initCoupon.setBusiType(buildParam.getBusiType());
initCoupon.setCouType(couType);
initCoupon.setBindType(buildParam.getBindType());
initCoupon.setDiscount(discount);
initCoupon.setValFace(valFace);
initCoupon.setValOver(valOver);
initCoupon.setValMinus(valMinus);
initCoupon.setOverlay(buildParam.getOverlay());
initCoupon.setValidity(validity);
initCoupon.setRedeemValidity(redeemValidity);
initCoupon.setRedeemStart(redeemStart);
initCoupon.setRedeemStop(redeemStop);
initCoupon.setEffectAt(effectAt);
initCoupon.setExpireAt(expireAt);
initCoupon.setOperator(operator);
initCoupon.setCreatedAt(nowTime);
CandyMgtCoupon initMgtCoupon = new CandyMgtCoupon();
initMgtCoupon.setMcouponId(IDGenerator.nextMilliId());
initMgtCoupon.setCouponId(initCoupon.getCouponId());
initMgtCoupon.setState(0);
initMgtCoupon.setEventAmt(buildParam.getEventAmt());
initMgtCoupon.setEventType(buildParam.getEventType());
initMgtCoupon.setEventLimit(eventLimit);
initMgtCoupon.setEventAt(eventAt);
initMgtCoupon.setOperator(operator);
initMgtCoupon.setCreatedAt(nowTime);
candyMgtCouponAdminService.saveMgtCouponInfo(initCoupon, initMgtCoupon);
return toAjax(true);
}
@GetMapping("code/{couponId}")
public String code(@PathVariable("couponId") String couponId, ModelMap mmap) {
mmap.put("couponId", couponId);
return prefix + "/code";
}
@RequiresPermissions("candy:coupon3:mgt:code:list")
@PostMapping("codeList")
@ResponseBody
public TableDataInfo codeList(CandyMgtCouponListParam listParam) {
startPage();
return getDataTable(null);
}
}
package com.liquidnet.client.admin.web.controller.zhengzai.candy;
import com.liquidnet.client.admin.common.annotation.Log;
import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.enums.BusinessType;
import com.liquidnet.client.admin.common.utils.DateUtils;
import com.liquidnet.client.admin.common.utils.ShiroUtils;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponAdminService;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyMgtCouponAdminService;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponBuildParam;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponInfoDto;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponListParam;
import com.liquidnet.service.candy.entity.CandyCoupon;
import com.liquidnet.service.candy.entity.CandyMgtCoupon;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
@Api(tags = "券发放管理")
@Controller
@RequestMapping("candy/coupon4/mgt")
public class CandyMgtCoupon4AdminController extends BaseController {
private final String prefix = "zhengzai/candy/coupon/mgt";
@Autowired
private ICandyMgtCouponAdminService candyMgtCouponAdminService;
@Autowired
private ICandyCouponAdminService candyCouponAdminService;
@RequiresPermissions("candy:coupon4:mgt:view")
@GetMapping()
public String coupon() {
return prefix + "/coupon4";
}
@RequiresPermissions("candy:coupon4:mgt:list")
@PostMapping("list")
@ResponseBody
public TableDataInfo list(CandyMgtCouponListParam listParam) {
listParam.setCouType(4);
startPage();
List<CandyMgtCouponInfoDto> list = candyMgtCouponAdminService.listForMgtCouponInfoDto(listParam);
return getDataTable(list);
}
@GetMapping("add")
public String add() {
return prefix + "/add4";
}
@ApiOperation(value = "新建券")
@RequiresPermissions("candy:coupon4:mgt:add")
@Log(title = "券发放管理", businessType = BusinessType.INSERT)
@PostMapping("add")
@ResponseBody
public AjaxResult addSave(@Validated CandyMgtCouponBuildParam buildParam) {
BigDecimal discount = null, valFace = null, valOver = null, valMinus = null;
Integer couType = buildParam.getCouType(),
validity = buildParam.getValidity(),
redeemValidity = buildParam.getRedeemValidity();
LocalDateTime nowTime = LocalDateTime.now(),
redeemStart = null, redeemStop = null, effectAt, expireAt,
eventAt = LocalDateTime.parse(buildParam.getEventAt(), DateTimeFormatter.ofPattern(DateUtils.YYYY_MM_DD_HH_MM_SS));
switch (couType) {// TODO: 2021/8/20 校验
case 1:// 代金券
valFace = buildParam.getValFace();
break;
case 2:// 满减券
valOver = buildParam.getValOver();
valMinus = buildParam.getValMinus();
break;
case 3:// 兑换券
redeemStart = eventAt.with(LocalTime.MIN);
redeemStop = eventAt.plusDays(redeemValidity).withHour(23).withMinute(59).withSecond(59);
break;
case 4:// 折扣券
discount = buildParam.getDiscount();
break;
default:
logger.warn("Invalid operation[buildParam.couType={}]", couType);
return this.error(AjaxResult.Type.WARN, "券类型无效");
}
effectAt = eventAt.with(LocalTime.MIN);
expireAt = eventAt.plusDays(validity).withHour(23).withMinute(59).withSecond(59);
String eventLimit = null, operator = ShiroUtils.getLoginName();
if (buildParam.getEventType() == 2) {// 指定用户手机号
eventLimit = buildParam.getEventLimit().trim();
// TODO: 2021/8/20 正则校验手机号字符串
if (StringUtils.isEmpty(eventLimit)) {
return this.error(AjaxResult.Type.WARN, "请指定手机号");
}
}
CandyCoupon initCoupon = new CandyCoupon();
initCoupon.setCouponId(IDGenerator.nextMilliId());
initCoupon.setState(1);
initCoupon.setTitle(buildParam.getTitle());
initCoupon.setLabel(buildParam.getLabel());
initCoupon.setNotice(buildParam.getNotice());
initCoupon.setExclusive(0);
initCoupon.setBusiType(buildParam.getBusiType());
initCoupon.setCouType(couType);
initCoupon.setBindType(buildParam.getBindType());
initCoupon.setDiscount(discount);
initCoupon.setValFace(valFace);
initCoupon.setValOver(valOver);
initCoupon.setValMinus(valMinus);
initCoupon.setOverlay(buildParam.getOverlay());
initCoupon.setValidity(validity);
initCoupon.setRedeemValidity(redeemValidity);
initCoupon.setRedeemStart(redeemStart);
initCoupon.setRedeemStop(redeemStop);
initCoupon.setEffectAt(effectAt);
initCoupon.setExpireAt(expireAt);
initCoupon.setOperator(operator);
initCoupon.setCreatedAt(nowTime);
CandyMgtCoupon initMgtCoupon = new CandyMgtCoupon();
initMgtCoupon.setMcouponId(IDGenerator.nextMilliId());
initMgtCoupon.setCouponId(initCoupon.getCouponId());
initMgtCoupon.setState(0);
initMgtCoupon.setEventAmt(buildParam.getEventAmt());
initMgtCoupon.setEventType(buildParam.getEventType());
initMgtCoupon.setEventLimit(eventLimit);
initMgtCoupon.setEventAt(eventAt);
initMgtCoupon.setOperator(operator);
initMgtCoupon.setCreatedAt(nowTime);
candyMgtCouponAdminService.saveMgtCouponInfo(initCoupon, initMgtCoupon);
return toAjax(true);
}
@GetMapping("code/{couponId}")
public String code(@PathVariable("couponId") String couponId, ModelMap mmap) {
mmap.put("couponId", couponId);
return prefix + "/code";
}
@RequiresPermissions("candy:coupon4:mgt:code:list")
@PostMapping("codeList")
@ResponseBody
public TableDataInfo codeList(CandyMgtCouponListParam listParam) {
startPage();
return getDataTable(null);
}
}
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('新增代金券')" />
<th:block th:include="include :: select2-css" />
</head>
<body>
<div class="main-content">
<form id="form-user-add" class="form-horizontal">
<input name="deptId" type="hidden" id="treeId"/>
<h4 class="form-header h4">基本信息</h4>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">用户名称:</label>
<div class="col-sm-8">
<input name="userName" placeholder="请输入用户名称" class="form-control" type="text" maxlength="30" required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">归属部门:</label>
<div class="col-sm-8">
<div class="input-group">
<input name="deptName" onclick="selectDeptTree()" id="treeName" type="text" placeholder="请选择归属部门" class="form-control">
<span class="input-group-addon"><i class="fa fa-search"></i></span>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">手机号码:</label>
<div class="col-sm-8">
<div class="input-group">
<input id="phonenumber" name="phonenumber" placeholder="请输入手机号码" class="form-control" type="text" maxlength="11">
<span class="input-group-addon"><i class="fa fa-mobile"></i></span>
</div>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">邮箱:</label>
<div class="col-sm-8">
<div class="input-group">
<input id="email" name="email" class="form-control email" type="text" maxlength="50" placeholder="请输入邮箱">
<span class="input-group-addon"><i class="fa fa-envelope"></i></span>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">登录账号:</label>
<div class="col-sm-8">
<input id="loginName" name="loginName" placeholder="请输入登录账号" class="form-control" type="text" maxlength="30" required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">登录密码:</label>
<div class="col-sm-8">
<div class="input-group">
<input id="password" name="password" placeholder="请输入登录密码" class="form-control" type="password" th:value="${@config.getKey('sys.user.initPassword')}" required>
<span class="input-group-addon" title="登录密码,鼠标按下显示密码"
onmousedown="$('#password').attr('type','text')"
onmouseup="$('#password').attr('type','password')"><i class="fa fa-key"></i></span>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">用户性别:</label>
<div class="col-sm-8">
<select name="sex" class="form-control m-b" th:with="type=${@dict.getType('sys_user_sex')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">用户状态:</label>
<div class="col-sm-8">
<label class="toggle-switch switch-solid">
<input type="checkbox" id="status" checked>
<span></span>
</label>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label class="col-xs-2 control-label">岗位:</label>
<div class="col-xs-4">
<select id="post" class="form-control select2-multiple" multiple>
<option th:each="post:${posts}" th:value="${post.postId}" th:text="${post.postName}" th:disabled="${post.status == '1'}"></option>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label class="col-xs-2 control-label">角色:</label>
<div class="col-xs-10">
<label th:each="role:${roles}" class="check-box">
<input name="role" type="checkbox" th:value="${role.roleId}" th:text="${role.roleName}" th:disabled="${role.status == '1'}">
</label>
</div>
</div>
</div>
</div>
<h4 class="form-header h4">其他信息</h4>
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label class="col-xs-2 control-label">备注:</label>
<div class="col-xs-10">
<textarea name="remark" maxlength="500" class="form-control" rows="3"></textarea>
</div>
</div>
</div>
</div>
</form>
</div>
<div class="row">
<div class="col-sm-offset-5 col-sm-10">
<button type="button" class="btn btn-sm btn-primary" onclick="submitHandler()"><i class="fa fa-check"></i>保 存</button>&nbsp;
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: select2-js" />
<script>
var prefix = ctx + "system/user";
$("#form-user-add").validate({
onkeyup: false,
rules:{
loginName:{
minlength: 2,
maxlength: 20,
remote: {
url: prefix + "/checkLoginNameUnique",
type: "post",
dataType: "json",
data: {
"loginName": function() {
return $.common.trim($("#loginName").val());
}
},
dataFilter: function(data, type) {
return $.validate.unique(data);
}
}
},
password:{
minlength: 5,
maxlength: 20
},
email:{
email:true,
remote: {
url: prefix + "/checkEmailUnique",
type: "post",
dataType: "json",
data: {
"email": function () {
return $.common.trim($("#email").val());
}
},
dataFilter: function (data, type) {
return $.validate.unique(data);
}
}
},
phonenumber:{
isPhone:true,
remote: {
url: prefix + "/checkPhoneUnique",
type: "post",
dataType: "json",
data: {
"phonenumber": function () {
return $.common.trim($("#phonenumber").val());
}
},
dataFilter: function (data, type) {
return $.validate.unique(data);
}
}
},
},
messages: {
"loginName": {
remote: "用户已经存在"
},
"email": {
remote: "Email已经存在"
},
"phonenumber":{
remote: "手机号码已经存在"
}
},
focusCleanup: true
});
function submitHandler() {
var chrtype = [[${#strings.defaultString(@config.getKey('sys.account.chrtype'), 0)}]];
var password = $("#password").val();
if ($.validate.form() && checkpwd(chrtype, password)) {
var data = $("#form-user-add").serializeArray();
var status = $("input[id='status']").is(':checked') == true ? 0 : 1;
var roleIds = $.form.selectCheckeds("role");
var postIds = $.form.selectSelects("post");
data.push({"name": "status", "value": status});
data.push({"name": "roleIds", "value": roleIds});
data.push({"name": "postIds", "value": postIds});
$.operate.saveTab(prefix + "/add", data);
}
}
/* 用户管理-新增-选择部门树 */
function selectDeptTree() {
var treeId = $("#treeId").val();
var deptId = $.common.isEmpty(treeId) ? "100" : $("#treeId").val();
var url = ctx + "system/dept/selectDeptTree/" + deptId;
var options = {
title: '选择部门',
width: "380",
url: url,
callBack: doSubmit
};
$.modal.openOptions(options);
}
function doSubmit(index, layero){
var tree = layero.find("iframe")[0].contentWindow.$._tree;
var body = layer.getChildFrame('body', index);
$("#treeId").val(body.find('#treeId').val());
$("#treeName").val(body.find('#treeName').val());
layer.close(index);
}
$(function() {
$('#post').select2({
placeholder: "请选择岗位",
allowClear: true
});
})
</script>
</body>
</html>
\ No newline at end of file
add1.html<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('新增满减券')" />
<th:block th:include="include :: select2-css" />
</head>
<body>
<div class="main-content">
<form id="form-user-add" class="form-horizontal">
<input name="deptId" type="hidden" id="treeId"/>
<h4 class="form-header h4">基本信息</h4>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">用户名称:</label>
<div class="col-sm-8">
<input name="userName" placeholder="请输入用户名称" class="form-control" type="text" maxlength="30" required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">归属部门:</label>
<div class="col-sm-8">
<div class="input-group">
<input name="deptName" onclick="selectDeptTree()" id="treeName" type="text" placeholder="请选择归属部门" class="form-control">
<span class="input-group-addon"><i class="fa fa-search"></i></span>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">手机号码:</label>
<div class="col-sm-8">
<div class="input-group">
<input id="phonenumber" name="phonenumber" placeholder="请输入手机号码" class="form-control" type="text" maxlength="11">
<span class="input-group-addon"><i class="fa fa-mobile"></i></span>
</div>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">邮箱:</label>
<div class="col-sm-8">
<div class="input-group">
<input id="email" name="email" class="form-control email" type="text" maxlength="50" placeholder="请输入邮箱">
<span class="input-group-addon"><i class="fa fa-envelope"></i></span>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">登录账号:</label>
<div class="col-sm-8">
<input id="loginName" name="loginName" placeholder="请输入登录账号" class="form-control" type="text" maxlength="30" required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">登录密码:</label>
<div class="col-sm-8">
<div class="input-group">
<input id="password" name="password" placeholder="请输入登录密码" class="form-control" type="password" th:value="${@config.getKey('sys.user.initPassword')}" required>
<span class="input-group-addon" title="登录密码,鼠标按下显示密码"
onmousedown="$('#password').attr('type','text')"
onmouseup="$('#password').attr('type','password')"><i class="fa fa-key"></i></span>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">用户性别:</label>
<div class="col-sm-8">
<select name="sex" class="form-control m-b" th:with="type=${@dict.getType('sys_user_sex')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">用户状态:</label>
<div class="col-sm-8">
<label class="toggle-switch switch-solid">
<input type="checkbox" id="status" checked>
<span></span>
</label>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label class="col-xs-2 control-label">岗位:</label>
<div class="col-xs-4">
<select id="post" class="form-control select2-multiple" multiple>
<option th:each="post:${posts}" th:value="${post.postId}" th:text="${post.postName}" th:disabled="${post.status == '1'}"></option>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label class="col-xs-2 control-label">角色:</label>
<div class="col-xs-10">
<label th:each="role:${roles}" class="check-box">
<input name="role" type="checkbox" th:value="${role.roleId}" th:text="${role.roleName}" th:disabled="${role.status == '1'}">
</label>
</div>
</div>
</div>
</div>
<h4 class="form-header h4">其他信息</h4>
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label class="col-xs-2 control-label">备注:</label>
<div class="col-xs-10">
<textarea name="remark" maxlength="500" class="form-control" rows="3"></textarea>
</div>
</div>
</div>
</div>
</form>
</div>
<div class="row">
<div class="col-sm-offset-5 col-sm-10">
<button type="button" class="btn btn-sm btn-primary" onclick="submitHandler()"><i class="fa fa-check"></i>保 存</button>&nbsp;
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: select2-js" />
<script>
var prefix = ctx + "system/user";
$("#form-user-add").validate({
onkeyup: false,
rules:{
loginName:{
minlength: 2,
maxlength: 20,
remote: {
url: prefix + "/checkLoginNameUnique",
type: "post",
dataType: "json",
data: {
"loginName": function() {
return $.common.trim($("#loginName").val());
}
},
dataFilter: function(data, type) {
return $.validate.unique(data);
}
}
},
password:{
minlength: 5,
maxlength: 20
},
email:{
email:true,
remote: {
url: prefix + "/checkEmailUnique",
type: "post",
dataType: "json",
data: {
"email": function () {
return $.common.trim($("#email").val());
}
},
dataFilter: function (data, type) {
return $.validate.unique(data);
}
}
},
phonenumber:{
isPhone:true,
remote: {
url: prefix + "/checkPhoneUnique",
type: "post",
dataType: "json",
data: {
"phonenumber": function () {
return $.common.trim($("#phonenumber").val());
}
},
dataFilter: function (data, type) {
return $.validate.unique(data);
}
}
},
},
messages: {
"loginName": {
remote: "用户已经存在"
},
"email": {
remote: "Email已经存在"
},
"phonenumber":{
remote: "手机号码已经存在"
}
},
focusCleanup: true
});
function submitHandler() {
var chrtype = [[${#strings.defaultString(@config.getKey('sys.account.chrtype'), 0)}]];
var password = $("#password").val();
if ($.validate.form() && checkpwd(chrtype, password)) {
var data = $("#form-user-add").serializeArray();
var status = $("input[id='status']").is(':checked') == true ? 0 : 1;
var roleIds = $.form.selectCheckeds("role");
var postIds = $.form.selectSelects("post");
data.push({"name": "status", "value": status});
data.push({"name": "roleIds", "value": roleIds});
data.push({"name": "postIds", "value": postIds});
$.operate.saveTab(prefix + "/add", data);
}
}
/* 用户管理-新增-选择部门树 */
function selectDeptTree() {
var treeId = $("#treeId").val();
var deptId = $.common.isEmpty(treeId) ? "100" : $("#treeId").val();
var url = ctx + "system/dept/selectDeptTree/" + deptId;
var options = {
title: '选择部门',
width: "380",
url: url,
callBack: doSubmit
};
$.modal.openOptions(options);
}
function doSubmit(index, layero){
var tree = layero.find("iframe")[0].contentWindow.$._tree;
var body = layer.getChildFrame('body', index);
$("#treeId").val(body.find('#treeId').val());
$("#treeName").val(body.find('#treeName').val());
layer.close(index);
}
$(function() {
$('#post').select2({
placeholder: "请选择岗位",
allowClear: true
});
})
</script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('新增兑换券')" />
<th:block th:include="include :: select2-css" />
</head>
<body>
<div class="main-content">
<form id="form-user-add" class="form-horizontal">
<input name="deptId" type="hidden" id="treeId"/>
<h4 class="form-header h4">基本信息</h4>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">用户名称:</label>
<div class="col-sm-8">
<input name="userName" placeholder="请输入用户名称" class="form-control" type="text" maxlength="30" required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">归属部门:</label>
<div class="col-sm-8">
<div class="input-group">
<input name="deptName" onclick="selectDeptTree()" id="treeName" type="text" placeholder="请选择归属部门" class="form-control">
<span class="input-group-addon"><i class="fa fa-search"></i></span>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">手机号码:</label>
<div class="col-sm-8">
<div class="input-group">
<input id="phonenumber" name="phonenumber" placeholder="请输入手机号码" class="form-control" type="text" maxlength="11">
<span class="input-group-addon"><i class="fa fa-mobile"></i></span>
</div>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">邮箱:</label>
<div class="col-sm-8">
<div class="input-group">
<input id="email" name="email" class="form-control email" type="text" maxlength="50" placeholder="请输入邮箱">
<span class="input-group-addon"><i class="fa fa-envelope"></i></span>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">登录账号:</label>
<div class="col-sm-8">
<input id="loginName" name="loginName" placeholder="请输入登录账号" class="form-control" type="text" maxlength="30" required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">登录密码:</label>
<div class="col-sm-8">
<div class="input-group">
<input id="password" name="password" placeholder="请输入登录密码" class="form-control" type="password" th:value="${@config.getKey('sys.user.initPassword')}" required>
<span class="input-group-addon" title="登录密码,鼠标按下显示密码"
onmousedown="$('#password').attr('type','text')"
onmouseup="$('#password').attr('type','password')"><i class="fa fa-key"></i></span>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">用户性别:</label>
<div class="col-sm-8">
<select name="sex" class="form-control m-b" th:with="type=${@dict.getType('sys_user_sex')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">用户状态:</label>
<div class="col-sm-8">
<label class="toggle-switch switch-solid">
<input type="checkbox" id="status" checked>
<span></span>
</label>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label class="col-xs-2 control-label">岗位:</label>
<div class="col-xs-4">
<select id="post" class="form-control select2-multiple" multiple>
<option th:each="post:${posts}" th:value="${post.postId}" th:text="${post.postName}" th:disabled="${post.status == '1'}"></option>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label class="col-xs-2 control-label">角色:</label>
<div class="col-xs-10">
<label th:each="role:${roles}" class="check-box">
<input name="role" type="checkbox" th:value="${role.roleId}" th:text="${role.roleName}" th:disabled="${role.status == '1'}">
</label>
</div>
</div>
</div>
</div>
<h4 class="form-header h4">其他信息</h4>
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label class="col-xs-2 control-label">备注:</label>
<div class="col-xs-10">
<textarea name="remark" maxlength="500" class="form-control" rows="3"></textarea>
</div>
</div>
</div>
</div>
</form>
</div>
<div class="row">
<div class="col-sm-offset-5 col-sm-10">
<button type="button" class="btn btn-sm btn-primary" onclick="submitHandler()"><i class="fa fa-check"></i>保 存</button>&nbsp;
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: select2-js" />
<script>
var prefix = ctx + "system/user";
$("#form-user-add").validate({
onkeyup: false,
rules:{
loginName:{
minlength: 2,
maxlength: 20,
remote: {
url: prefix + "/checkLoginNameUnique",
type: "post",
dataType: "json",
data: {
"loginName": function() {
return $.common.trim($("#loginName").val());
}
},
dataFilter: function(data, type) {
return $.validate.unique(data);
}
}
},
password:{
minlength: 5,
maxlength: 20
},
email:{
email:true,
remote: {
url: prefix + "/checkEmailUnique",
type: "post",
dataType: "json",
data: {
"email": function () {
return $.common.trim($("#email").val());
}
},
dataFilter: function (data, type) {
return $.validate.unique(data);
}
}
},
phonenumber:{
isPhone:true,
remote: {
url: prefix + "/checkPhoneUnique",
type: "post",
dataType: "json",
data: {
"phonenumber": function () {
return $.common.trim($("#phonenumber").val());
}
},
dataFilter: function (data, type) {
return $.validate.unique(data);
}
}
},
},
messages: {
"loginName": {
remote: "用户已经存在"
},
"email": {
remote: "Email已经存在"
},
"phonenumber":{
remote: "手机号码已经存在"
}
},
focusCleanup: true
});
function submitHandler() {
var chrtype = [[${#strings.defaultString(@config.getKey('sys.account.chrtype'), 0)}]];
var password = $("#password").val();
if ($.validate.form() && checkpwd(chrtype, password)) {
var data = $("#form-user-add").serializeArray();
var status = $("input[id='status']").is(':checked') == true ? 0 : 1;
var roleIds = $.form.selectCheckeds("role");
var postIds = $.form.selectSelects("post");
data.push({"name": "status", "value": status});
data.push({"name": "roleIds", "value": roleIds});
data.push({"name": "postIds", "value": postIds});
$.operate.saveTab(prefix + "/add", data);
}
}
/* 用户管理-新增-选择部门树 */
function selectDeptTree() {
var treeId = $("#treeId").val();
var deptId = $.common.isEmpty(treeId) ? "100" : $("#treeId").val();
var url = ctx + "system/dept/selectDeptTree/" + deptId;
var options = {
title: '选择部门',
width: "380",
url: url,
callBack: doSubmit
};
$.modal.openOptions(options);
}
function doSubmit(index, layero){
var tree = layero.find("iframe")[0].contentWindow.$._tree;
var body = layer.getChildFrame('body', index);
$("#treeId").val(body.find('#treeId').val());
$("#treeName").val(body.find('#treeName').val());
layer.close(index);
}
$(function() {
$('#post').select2({
placeholder: "请选择岗位",
allowClear: true
});
})
</script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('新增折扣券')" />
<th:block th:include="include :: select2-css" />
</head>
<body>
<div class="main-content">
<form id="form-user-add" class="form-horizontal">
<input name="deptId" type="hidden" id="treeId"/>
<h4 class="form-header h4">基本信息</h4>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">用户名称:</label>
<div class="col-sm-8">
<input name="userName" placeholder="请输入用户名称" class="form-control" type="text" maxlength="30" required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">归属部门:</label>
<div class="col-sm-8">
<div class="input-group">
<input name="deptName" onclick="selectDeptTree()" id="treeName" type="text" placeholder="请选择归属部门" class="form-control">
<span class="input-group-addon"><i class="fa fa-search"></i></span>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">手机号码:</label>
<div class="col-sm-8">
<div class="input-group">
<input id="phonenumber" name="phonenumber" placeholder="请输入手机号码" class="form-control" type="text" maxlength="11">
<span class="input-group-addon"><i class="fa fa-mobile"></i></span>
</div>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">邮箱:</label>
<div class="col-sm-8">
<div class="input-group">
<input id="email" name="email" class="form-control email" type="text" maxlength="50" placeholder="请输入邮箱">
<span class="input-group-addon"><i class="fa fa-envelope"></i></span>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">登录账号:</label>
<div class="col-sm-8">
<input id="loginName" name="loginName" placeholder="请输入登录账号" class="form-control" type="text" maxlength="30" required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">登录密码:</label>
<div class="col-sm-8">
<div class="input-group">
<input id="password" name="password" placeholder="请输入登录密码" class="form-control" type="password" th:value="${@config.getKey('sys.user.initPassword')}" required>
<span class="input-group-addon" title="登录密码,鼠标按下显示密码"
onmousedown="$('#password').attr('type','text')"
onmouseup="$('#password').attr('type','password')"><i class="fa fa-key"></i></span>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">用户性别:</label>
<div class="col-sm-8">
<select name="sex" class="form-control m-b" th:with="type=${@dict.getType('sys_user_sex')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">用户状态:</label>
<div class="col-sm-8">
<label class="toggle-switch switch-solid">
<input type="checkbox" id="status" checked>
<span></span>
</label>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label class="col-xs-2 control-label">岗位:</label>
<div class="col-xs-4">
<select id="post" class="form-control select2-multiple" multiple>
<option th:each="post:${posts}" th:value="${post.postId}" th:text="${post.postName}" th:disabled="${post.status == '1'}"></option>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label class="col-xs-2 control-label">角色:</label>
<div class="col-xs-10">
<label th:each="role:${roles}" class="check-box">
<input name="role" type="checkbox" th:value="${role.roleId}" th:text="${role.roleName}" th:disabled="${role.status == '1'}">
</label>
</div>
</div>
</div>
</div>
<h4 class="form-header h4">其他信息</h4>
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label class="col-xs-2 control-label">备注:</label>
<div class="col-xs-10">
<textarea name="remark" maxlength="500" class="form-control" rows="3"></textarea>
</div>
</div>
</div>
</div>
</form>
</div>
<div class="row">
<div class="col-sm-offset-5 col-sm-10">
<button type="button" class="btn btn-sm btn-primary" onclick="submitHandler()"><i class="fa fa-check"></i>保 存</button>&nbsp;
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: select2-js" />
<script>
var prefix = ctx + "system/user";
$("#form-user-add").validate({
onkeyup: false,
rules:{
loginName:{
minlength: 2,
maxlength: 20,
remote: {
url: prefix + "/checkLoginNameUnique",
type: "post",
dataType: "json",
data: {
"loginName": function() {
return $.common.trim($("#loginName").val());
}
},
dataFilter: function(data, type) {
return $.validate.unique(data);
}
}
},
password:{
minlength: 5,
maxlength: 20
},
email:{
email:true,
remote: {
url: prefix + "/checkEmailUnique",
type: "post",
dataType: "json",
data: {
"email": function () {
return $.common.trim($("#email").val());
}
},
dataFilter: function (data, type) {
return $.validate.unique(data);
}
}
},
phonenumber:{
isPhone:true,
remote: {
url: prefix + "/checkPhoneUnique",
type: "post",
dataType: "json",
data: {
"phonenumber": function () {
return $.common.trim($("#phonenumber").val());
}
},
dataFilter: function (data, type) {
return $.validate.unique(data);
}
}
},
},
messages: {
"loginName": {
remote: "用户已经存在"
},
"email": {
remote: "Email已经存在"
},
"phonenumber":{
remote: "手机号码已经存在"
}
},
focusCleanup: true
});
function submitHandler() {
var chrtype = [[${#strings.defaultString(@config.getKey('sys.account.chrtype'), 0)}]];
var password = $("#password").val();
if ($.validate.form() && checkpwd(chrtype, password)) {
var data = $("#form-user-add").serializeArray();
var status = $("input[id='status']").is(':checked') == true ? 0 : 1;
var roleIds = $.form.selectCheckeds("role");
var postIds = $.form.selectSelects("post");
data.push({"name": "status", "value": status});
data.push({"name": "roleIds", "value": roleIds});
data.push({"name": "postIds", "value": postIds});
$.operate.saveTab(prefix + "/add", data);
}
}
/* 用户管理-新增-选择部门树 */
function selectDeptTree() {
var treeId = $("#treeId").val();
var deptId = $.common.isEmpty(treeId) ? "100" : $("#treeId").val();
var url = ctx + "system/dept/selectDeptTree/" + deptId;
var options = {
title: '选择部门',
width: "380",
url: url,
callBack: doSubmit
};
$.modal.openOptions(options);
}
function doSubmit(index, layero){
var tree = layero.find("iframe")[0].contentWindow.$._tree;
var body = layer.getChildFrame('body', index);
$("#treeId").val(body.find('#treeId').val());
$("#treeName").val(body.find('#treeName').val());
layer.close(index);
}
$(function() {
$('#post').select2({
placeholder: "请选择岗位",
allowClear: true
});
})
</script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('代金券')" />
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="coupon-form">
<div class="select-list">
<ul>
<input type="text" name="couType" value="2" hidden="hidden"/>
<li>
<input type="text" name="keyword" placeholder="搜索"/>
</li>
<li>
类型:<select name="bindType" th:with="type=${@dict.getType('zhengzai_coupon_bind_type')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
适用范围:<select name="busiType" th:with="type=${@dict.getType('zhengzai_coupon_busi_type')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
</form>
</div>
<div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="candy:coupon:mgt:add">
<i class="fa fa-plus"></i> 新增
</a>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer" />
<script th:inline="javascript">
var couponCodeListFlag = [[${@permission.hasPermi('system:role:edit')}]];
var prefix = ctx + "candy/coupon2/mgt";
$(function() {
var options = {
url: prefix + "/list",
createUrl: prefix + "/add",
// updateUrl: prefix + "/edit/{id}",
// removeUrl: prefix + "/remove",
// exportUrl: prefix + "/export",
sortName: "createdAt",
modalName: "发放记录",
columns: [{
checkbox: true
},
{
field: 'valFace',
title: '金额'
},
{
field: 'eventAmt',
title: '数量',
},
{
field: 'bindType',
title: '类型',
sortable: true
},
{
field: 'busiType',
title: '适用范围',
sortable: true
},
{
field: 'title',
title: '标题',
},
{
field: 'notice',
title: '描述',
},
{
field: 'operator',
title: '创建人',
},
{
field: 'createdAt',
title: '生成时间',
sortable: true
},
{
field: 'expireAt',
title: '失效时间',
sortable: true
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push("<a class='btn btn-default btn-xs " + couponCodeListFlag + "' href='javascript:void(0)' onclick='authUser(" + row.roleId + ")'><i class='fa fa-user'></i></a>");
return actions.join('');
}
}]
};
$.table.init(options);
});
/* 券码列表 */
function couponCodeList(couponId) {
var url = prefix + '/code/' + couponId;
$.modal.openTab("查看码列表", url);
}
</script>
</body>
</html>
\ No newline at end of file
coupon1.html<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('代金券')" />
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="coupon-form">
<div class="select-list">
<ul>
<input type="text" name="couType" value="3" hidden="hidden"/>
<li>
<input type="text" name="keyword" placeholder="搜索"/>
</li>
<li>
类型:<select name="bindType" th:with="type=${@dict.getType('zhengzai_coupon_bind_type')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
适用范围:<select name="busiType" th:with="type=${@dict.getType('zhengzai_coupon_busi_type')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
</form>
</div>
<div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="candy:coupon:mgt:add">
<i class="fa fa-plus"></i> 新增
</a>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer" />
<script th:inline="javascript">
var couponCodeListFlag = [[${@permission.hasPermi('system:role:edit')}]];
var prefix = ctx + "candy/coupon3/mgt";
$(function() {
var options = {
url: prefix + "/list",
createUrl: prefix + "/add",
// updateUrl: prefix + "/edit/{id}",
// removeUrl: prefix + "/remove",
// exportUrl: prefix + "/export",
sortName: "createdAt",
modalName: "发放记录",
columns: [{
checkbox: true
},
{
field: 'valFace',
title: '金额'
},
{
field: 'eventAmt',
title: '数量',
},
{
field: 'bindType',
title: '类型',
sortable: true
},
{
field: 'busiType',
title: '适用范围',
sortable: true
},
{
field: 'title',
title: '标题',
},
{
field: 'notice',
title: '描述',
},
{
field: 'operator',
title: '创建人',
},
{
field: 'createdAt',
title: '生成时间',
sortable: true
},
{
field: 'expireAt',
title: '失效时间',
sortable: true
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push("<a class='btn btn-default btn-xs " + couponCodeListFlag + "' href='javascript:void(0)' onclick='authUser(" + row.roleId + ")'><i class='fa fa-user'></i></a>");
return actions.join('');
}
}]
};
$.table.init(options);
});
/* 券码列表 */
function couponCodeList(couponId) {
var url = prefix + '/code/' + couponId;
$.modal.openTab("查看码列表", url);
}
</script>
</body>
</html>
\ No newline at end of file
coupon1.html<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('代金券')" />
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="coupon-form">
<div class="select-list">
<ul>
<input type="text" name="couType" value="4" hidden="hidden"/>
<li>
<input type="text" name="keyword" placeholder="搜索"/>
</li>
<li>
类型:<select name="bindType" th:with="type=${@dict.getType('zhengzai_coupon_bind_type')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
适用范围:<select name="busiType" th:with="type=${@dict.getType('zhengzai_coupon_busi_type')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
</form>
</div>
<div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="candy:coupon:mgt:add">
<i class="fa fa-plus"></i> 新增
</a>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer" />
<script th:inline="javascript">
var couponCodeListFlag = [[${@permission.hasPermi('system:role:edit')}]];
var prefix = ctx + "candy/coupon4/mgt";
$(function() {
var options = {
url: prefix + "/list",
createUrl: prefix + "/add",
// updateUrl: prefix + "/edit/{id}",
// removeUrl: prefix + "/remove",
// exportUrl: prefix + "/export",
sortName: "createdAt",
modalName: "发放记录",
columns: [{
checkbox: true
},
{
field: 'valFace',
title: '金额'
},
{
field: 'eventAmt',
title: '数量',
},
{
field: 'bindType',
title: '类型',
sortable: true
},
{
field: 'busiType',
title: '适用范围',
sortable: true
},
{
field: 'title',
title: '标题',
},
{
field: 'notice',
title: '描述',
},
{
field: 'operator',
title: '创建人',
},
{
field: 'createdAt',
title: '生成时间',
sortable: true
},
{
field: 'expireAt',
title: '失效时间',
sortable: true
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push("<a class='btn btn-default btn-xs " + couponCodeListFlag + "' href='javascript:void(0)' onclick='authUser(" + row.roleId + ")'><i class='fa fa-user'></i></a>");
return actions.join('');
}
}]
};
$.table.init(options);
});
/* 券码列表 */
function couponCodeList(couponId) {
var url = prefix + '/code/' + couponId;
$.modal.openTab("查看码列表", url);
}
</script>
</body>
</html>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment