From 2ad86d79453946ad7f6a3d84a3442e62b4fff0c3 Mon Sep 17 00:00:00 2001 From: zhanglipeng <chinazhanglipeng@qq.com> Date: Tue, 9 Mar 2021 11:44:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=88=E8=B4=B9=E9=A1=B9=E7=9B=AE=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=E5=92=8C=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-ui/src/views/benyi/customer/index.vue | 289 ++++++++++-------- .../security/service/SysLoginService.java | 13 +- .../web/controller/BaseController.java | 40 ++- 3 files changed, 193 insertions(+), 149 deletions(-) diff --git a/ruoyi-ui/src/views/benyi/customer/index.vue b/ruoyi-ui/src/views/benyi/customer/index.vue index 4d447c64f..3d95560f3 100644 --- a/ruoyi-ui/src/views/benyi/customer/index.vue +++ b/ruoyi-ui/src/views/benyi/customer/index.vue @@ -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> \ No newline at end of file +</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> \ No newline at end of file diff --git a/ruoyi/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java b/ruoyi/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java index 159ac873d..081bc4cd8 100644 --- a/ruoyi/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java +++ b/ruoyi/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java @@ -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) { } } diff --git a/ruoyi/src/main/java/com/ruoyi/framework/web/controller/BaseController.java b/ruoyi/src/main/java/com/ruoyi/framework/web/controller/BaseController.java index 69c186f5f..38ee9ccbc 100644 --- a/ruoyi/src/main/java/com/ruoyi/framework/web/controller/BaseController.java +++ b/ruoyi/src/main/java/com/ruoyi/framework/web/controller/BaseController.java @@ -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(); } }