消费项目排序和样式

This commit is contained in:
zhanglipeng 2021-03-09 11:44:57 +08:00
parent 43203ff88d
commit 2ad86d7945
3 changed files with 193 additions and 149 deletions
ruoyi-ui/src/views/benyi/customer
ruoyi/src/main/java/com/ruoyi/framework
security/service
web/controller

@ -1,127 +1,139 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
:inline="true"
label-width="88px"
>
<el-form-item label="客户姓名" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入姓名"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="联系电话" prop="lxdh">
<el-input
v-model="queryParams.lxdh"
placeholder="请输入联系电话"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="幼儿园名称" prop="schoolname">
<el-input
v-model="queryParams.schoolname"
placeholder="请输入幼儿园名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="所在省" prop="sheng">
<el-input
v-model="queryParams.sheng"
placeholder="请输入所在省"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="客户来源" prop="khly">
<el-select v-model="queryParams.khly" placeholder="请选择客户来源">
<el-option
v-for="dict in lyOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="客户身份" prop="sflx">
<el-select v-model="queryParams.sflx" placeholder="请选择客户身份">
<el-option
v-for="dict in gxOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
<el-form :model="queryParams" ref="queryForm" label-width="70px">
<el-row :gutter="10">
<el-col :xs="24" :ms="12" :md="5">
<el-form-item label="客户姓名" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入姓名"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-col>
<el-col :xs="24" :ms="12" :md="5">
<el-form-item label="联系电话" prop="lxdh">
<el-input
v-model="queryParams.lxdh"
placeholder="请输入联系电话"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-col>
<el-col :xs="24" :ms="12" :md="5">
<el-form-item label="园所名称" prop="schoolname">
<el-input
v-model="queryParams.schoolname"
placeholder="请输入园所名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-col>
<el-col :xs="24" :ms="12" :md="5">
<el-form-item label="所在省" prop="sheng">
<el-input
v-model="queryParams.sheng"
placeholder="请输入所在省"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-col>
<el-col :xs="24" :ms="12" :md="5">
<el-form-item label="客户来源" prop="khly">
<el-select v-model="queryParams.khly" placeholder="请选择客户来源">
<el-option
v-for="dict in lyOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :xs="24" :ms="12" :md="5">
<el-form-item label="客户身份" prop="sflx">
<el-select v-model="queryParams.sflx" placeholder="请选择客户身份">
<el-option
v-for="dict in gxOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :xs="24" :ms="12" :md="4">
<el-form-item class="no-margin">
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['benyi:customer:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['benyi:customer:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['benyi:customer:remove']"
>删除</el-button
>
</el-col>
</el-row>
<div class="mb8 btn-list">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['benyi:customer:add']"
>新增</el-button
>
<el-button
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['benyi:customer:edit']"
>修改</el-button
>
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['benyi:customer:remove']"
>删除</el-button
>
</div>
<el-table
v-loading="loading"
border
:data="customerList"
@selection-change="handleSelectionChange"
@sort-change="sortChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="客户姓名" align="center" prop="name" />
<el-table-column label="幼儿园名称" align="center" prop="schoolname" />
<el-table-column fixed label="客户姓名" align="center" prop="name" />
<el-table-column
label="幼儿园人数"
fixed
label="园所名称"
align="center"
prop="schoolname"
/>
<el-table-column
label="园所人数"
width="100"
align="center"
prop="rs"
sortable="rs"
@ -141,11 +153,23 @@
<el-table-column label="联系电话" align="center" prop="lxdh" />
<el-table-column label="微信号" align="center" prop="wx" />
<el-table-column label="抖音号" align="center" prop="dy" />
<el-table-column label="其他联系方式" align="center" prop="qt" />
<el-table-column label="其他联系方式" width="100" align="center" prop="qt" />
<el-table-column label="所在省" align="center" prop="sheng" />
<el-table-column label="所在市" align="center" prop="shi" />
<el-table-column label="消费项目" align="center" prop="xfxm" sortable="xfxm" />
<el-table-column label="消费价值" align="center" prop="xfjz" sortable="xfjz" />
<el-table-column
label="消费项目"
align="center"
prop="xfxm"
width="110"
sortable="xfxm"
/>
<el-table-column
label="消费价值"
width="110"
align="center"
prop="xfjz"
sortable="xfjz"
/>
<el-table-column
label="录入人"
align="center"
@ -154,11 +178,13 @@
/>
<el-table-column label="录入时间" align="center" prop="createTime" />
<el-table-column label="过保时间" align="center" prop="gbtime" />
<el-table-column label="转换跟进" align="center" prop="zhgj" />
<el-table-column label="转换跟进" show-overflow-tooltip align="center" prop="zhgj" />
<el-table-column
fixed="right"
label="操作"
align="center"
class-name="small-padding fixed-width"
width="60"
class-name="small-padding fixed-width edit-btns"
>
<template slot-scope="scope">
<el-button
@ -199,18 +225,18 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="幼儿园名称" prop="schoolname">
<el-form-item label="名称" prop="schoolname">
<el-input
v-model="form.schoolname"
placeholder="请输入幼儿园名称"
placeholder="请输入名称"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="幼儿园人数" prop="rs">
<el-form-item label="人数" prop="rs">
<el-input-number
v-model="form.rs"
placeholder="请输入幼儿园人数"
placeholder="请输入人数"
/>
</el-form-item>
</el-col>
@ -402,10 +428,10 @@ export default {
{ required: true, message: "客户姓名不能为空", trigger: "blur" },
],
schoolname: [
{ required: true, message: "幼儿园名称不能为空", trigger: "blur" },
{ required: true, message: "名称不能为空", trigger: "blur" },
],
lxdh: [
{ required: true, message: "幼儿园名称不能为空", trigger: "blur" },
{ required: true, message: "联系电话不能为空", trigger: "blur" },
],
sheng: [
{
@ -629,4 +655,21 @@ export default {
},
},
};
</script>
</script>
<style lang="scss" scoped>
.el-select {
width: 100%;
}
.my-date-picker {
width: 100%;
}
.edit-btns {
.el-button {
display: block;
margin: 0 auto;
}
}
.no-margin ::v-deep.el-form-item__content {
margin: 0 !important;
}
</style>

@ -82,15 +82,18 @@ public class SysLoginService {
Collection<String> keys = redisCache.keys(Constants.LOGIN_TOKEN_KEY + "*");
List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
for (String key : keys) {
LoginUser user = redisCache.getCacheObject(key);
if (StringUtils.isNotEmpty(username) && StringUtils.isNotNull(user.getUser())) {
if (StringUtils.equals(username, user.getUsername())) {
//存在已经登录用户抛出异常
try {
LoginUser user = redisCache.getCacheObject(key);
if (StringUtils.isNotEmpty(username) && StringUtils.isNotNull(user.getUser())) {
if (StringUtils.equals(username, user.getUsername())) {
//存在已经登录用户抛出异常
// CustomException alreadyLoginExcep = new CustomException("该账号已在别处登陆", HttpStatus.ALREADY_LOGIN);
// alreadyLoginExcep.setObj(username);
// throw alreadyLoginExcep;
redisCache.deleteObject(key);
redisCache.deleteObject(key);
}
}
} catch (Exception e) {
}
}

@ -24,15 +24,13 @@ import com.ruoyi.framework.web.page.TableSupport;
/**
* web层通用数据处理
*
*
* @author ruoyi
*/
public class BaseController
{
public class BaseController {
protected final Logger logger = LoggerFactory.getLogger(BaseController.class);
public static String getUUID32()
{
public static String getUUID32() {
return UUID.randomUUID().toString().replace("-", "").toLowerCase();
}
@ -40,14 +38,11 @@ public class BaseController
* 将前台传递过来的日期格式的字符串自动转化为Date类型
*/
@InitBinder
public void initBinder(WebDataBinder binder)
{
public void initBinder(WebDataBinder binder) {
// Date 类型转换
binder.registerCustomEditor(Date.class, new PropertyEditorSupport()
{
binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
@Override
public void setAsText(String text)
{
public void setAsText(String text) {
setValue(DateUtils.parseDate(text));
}
});
@ -56,14 +51,19 @@ public class BaseController
/**
* 设置请求分页数据
*/
protected void startPage()
{
protected void startPage() {
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize))
{
if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) {
String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
// System.out.println("order:" + orderBy);
//特殊情况处理 汉字排序
if (orderBy.equals("xfxm asc")) {
orderBy = "CONVERT(xfxm USING gbk) asc";
} else if (orderBy.equals("xfxm desc")) {
orderBy = "CONVERT(xfxm USING gbk) desc";
}
PageHelper.startPage(pageNum, pageSize, orderBy);
}
}
@ -71,9 +71,8 @@ public class BaseController
/**
* 响应请求分页数据
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
protected TableDataInfo getDataTable(List<?> list)
{
@SuppressWarnings({"rawtypes", "unchecked"})
protected TableDataInfo getDataTable(List<?> list) {
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(HttpStatus.SUCCESS);
rspData.setRows(list);
@ -83,12 +82,11 @@ public class BaseController
/**
* 响应返回结果
*
*
* @param rows 影响行数
* @return 操作结果
*/
protected AjaxResult toAjax(int rows)
{
protected AjaxResult toAjax(int rows) {
return rows > 0 ? AjaxResult.success() : AjaxResult.error();
}
}