打卡记录

master
382696293@qq.com 2 years ago
parent b11a409446
commit ccf2a20cf5

@ -0,0 +1,116 @@
package com.flossom.common.core.domain.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.flossom.common.core.annotation.Excel;
import com.flossom.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
import java.util.List;
/**
* WxMemberClockLog
*
* @author flossom
* @date 2024-01-29
*/
public class WxMemberClockLog {
/**
*
*/
private Integer clockNum;
private String headimg;
private String nickname;
private Long userId;
private String mobile;
private String wecomTagListStr;
private String miniProgramTagListStr;
/* 用户注册时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date memberRegisterDate;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date lastClockTime;
public Integer getClockNum() {
return clockNum;
}
public void setClockNum(Integer clockNum) {
this.clockNum = clockNum;
}
public String getHeadimg() {
return headimg;
}
public void setHeadimg(String headimg) {
this.headimg = headimg;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getWecomTagListStr() {
return wecomTagListStr;
}
public void setWecomTagListStr(String wecomTagListStr) {
this.wecomTagListStr = wecomTagListStr;
}
public String getMiniProgramTagListStr() {
return miniProgramTagListStr;
}
public void setMiniProgramTagListStr(String miniProgramTagListStr) {
this.miniProgramTagListStr = miniProgramTagListStr;
}
public Date getMemberRegisterDate() {
return memberRegisterDate;
}
public void setMemberRegisterDate(Date memberRegisterDate) {
this.memberRegisterDate = memberRegisterDate;
}
public Date getLastClockTime() {
return lastClockTime;
}
public void setLastClockTime(Date lastClockTime) {
this.lastClockTime = lastClockTime;
}
}

@ -0,0 +1,155 @@
package com.flossom.common.core.domain.req;
import java.util.Date;
import java.util.List;
/**
*
*
* @author flossom
* @date 2024-01-29
*/
public class UserClockLogReq {
/**
* ','
*/
private String userIdList;
/**
*
*/
private String nickname;
/**
* ','
*/
private String mobile;
/**
* ID
*/
private List<Long> wecomTagList;
/**
* ID
*/
private List<Long> miniProgramTagList;
/**
*
*/
private List<Date> memberRegisterDateRange;
/**
*
*/
private List<Date> clockDateRange;
/**
*
*/
private List<Date> clockLastDateRange;
/**
*
*/
private Integer clockNumStart;
private Integer clockNumEnd;
private List<Long> queryUserIdList;
public UserClockLogReq() {
}
public String getUserIdList() {
return userIdList;
}
public void setUserIdList(String userIdList) {
this.userIdList = userIdList;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public List<Long> getWecomTagList() {
return wecomTagList;
}
public void setWecomTagList(List<Long> wecomTagList) {
this.wecomTagList = wecomTagList;
}
public List<Long> getMiniProgramTagList() {
return miniProgramTagList;
}
public void setMiniProgramTagList(List<Long> miniProgramTagList) {
this.miniProgramTagList = miniProgramTagList;
}
public List<Date> getMemberRegisterDateRange() {
return memberRegisterDateRange;
}
public void setMemberRegisterDateRange(List<Date> memberRegisterDateRange) {
this.memberRegisterDateRange = memberRegisterDateRange;
}
public List<Date> getClockDateRange() {
return clockDateRange;
}
public void setClockDateRange(List<Date> clockDateRange) {
this.clockDateRange = clockDateRange;
}
public List<Date> getClockLastDateRange() {
return clockLastDateRange;
}
public void setClockLastDateRange(List<Date> clockLastDateRange) {
this.clockLastDateRange = clockLastDateRange;
}
public List<Long> getQueryUserIdList() {
return queryUserIdList;
}
public void setQueryUserIdList(List<Long> queryUserIdList) {
this.queryUserIdList = queryUserIdList;
}
public Integer getClockNumStart() {
return clockNumStart;
}
public void setClockNumStart(Integer clockNumStart) {
this.clockNumStart = clockNumStart;
}
public Integer getClockNumEnd() {
return clockNumEnd;
}
public void setClockNumEnd(Integer clockNumEnd) {
this.clockNumEnd = clockNumEnd;
}
}

@ -1,6 +1,8 @@
package com.flossom.common.core.mapper;
import com.flossom.common.core.domain.entity.WxClockLog;
import com.flossom.common.core.domain.entity.WxMemberClockLog;
import com.flossom.common.core.domain.req.UserClockLogReq;
import com.flossom.common.core.domain.ret.WxClockLogRet;
import java.util.List;
@ -63,4 +65,6 @@ public interface WxClockLogMapper {
Integer selectCountByUserId(WxClockLog queryClockLog);
List<WxClockLogRet> selectWxClockImgRetList(WxClockLog queryClockLog);
List<WxMemberClockLog> selectMemberClockLogList(UserClockLogReq userClockLogReq);
}

@ -29,6 +29,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateTime" column="update_time" />
</resultMap>
<resultMap type="WxMemberClockLog" id="wxMemberClockLog">
<result property="userId" column="user_id" />
<result property="lastClockTime" column="last_clock_time"/>
<result property="clockNum" column="clock_num" />
</resultMap>
<sql id="selectWxClockLogVo">
select id, user_id, instrument_id, instrument_name, clock_content, status, create_by, create_time, update_by, update_time from wx_clock_log
</sql>
@ -83,6 +89,47 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
order by create_time desc
</select>
<select id="selectMemberClockLogList" parameterType="userClockLogReq" resultMap="wxMemberClockLog">
SELECT
user_id,
MAX( update_time ) AS last_clock_time,
count( 1 ) AS clock_num
FROM
wx_clock_log
<where>
<if test="clockDateRange != null and clockDateRange.size > 0">
and update_time &gt;= #{clockDateRange[0]}
</if>
<if test="clockDateRange != null and clockDateRange.size > 0">
and update_time &lt;= #{clockDateRange[1]}
</if>
</where>
GROUP BY
user_id
<trim prefix="having" prefixOverrides="and">
<if test="queryUserIdList != null and queryUserIdList.size > 0">
and user_id in
<foreach item="item" collection="queryUserIdList" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="clockLastDateRange != null and clockLastDateRange.size > 0">
and last_clock_time &gt;= #{clockLastDateRange[0]}
</if>
<if test="clockLastDateRange != null and clockLastDateRange.size > 0">
and last_clock_time &lt;= #{clockLastDateRange[1]}
</if>
<if test="clockNumStart != null">
and clock_num &gt;= #{clockNumStart}
</if>
<if test="clockNumEnd != null">
and clock_num &lt;= #{clockNumEnd}
</if>
</trim>
ORDER BY
last_clock_time DESC
</select>
<insert id="insertWxClockLog" parameterType="WxClockLog" useGeneratedKeys="true" keyProperty="id">
<selectKey keyProperty="id" resultType="Long" order="AFTER">
SELECT LAST_INSERT_ID()

@ -1,10 +1,10 @@
package com.flossom.system.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.flossom.common.core.domain.entity.WxClockLog;
import com.flossom.common.core.utils.poi.ExcelUtil;
import com.flossom.common.core.domain.entity.WxMemberClockLog;
import com.flossom.common.core.domain.req.UserClockLogReq;
import com.flossom.common.core.web.controller.BaseController;
import com.flossom.common.core.web.domain.AjaxResult;
import com.flossom.common.core.web.page.TableDataInfo;
@ -40,23 +40,22 @@ public class WxClockLogController extends BaseController {
*/
@RequiresPermissions("system:clockLog:list")
@GetMapping("/list")
public TableDataInfo list(WxClockLog wxClockLog) {
startPage();
List<WxClockLog> list = wxClockLogService.selectWxClockLogList(wxClockLog);
public TableDataInfo list(UserClockLogReq userClockLogReq) {
List<WxMemberClockLog> list = wxClockLogService.selectWxClockLogList(userClockLogReq);
return getDataTable(list);
}
/**
*
*/
@RequiresPermissions("system:clockLog:export")
@Log(title = "用户打卡", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, WxClockLog wxClockLog) {
List<WxClockLog> list = wxClockLogService.selectWxClockLogList(wxClockLog);
ExcelUtil<WxClockLog> util = new ExcelUtil<WxClockLog>(WxClockLog.class);
util.exportExcel(response, list, "用户打卡数据");
}
// @RequiresPermissions("system:clockLog:export")
// @Log(title = "用户打卡", businessType = BusinessType.EXPORT)
// @PostMapping("/export")
// public void export(HttpServletResponse response, WxClockLog wxClockLog) {
// List<WxClockLog> list = wxClockLogService.selectWxClockLogList(wxClockLog);
// ExcelUtil<WxClockLog> util = new ExcelUtil<WxClockLog>(WxClockLog.class);
// util.exportExcel(response, list, "用户打卡数据");
// }
/**
*

@ -1,6 +1,8 @@
package com.flossom.system.service;
import com.flossom.common.core.domain.entity.WxClockLog;
import com.flossom.common.core.domain.entity.WxMemberClockLog;
import com.flossom.common.core.domain.req.UserClockLogReq;
import java.util.List;
@ -24,10 +26,10 @@ public interface IWxClockLogService {
/**
*
*
* @param wxClockLog
* @param userClockLogReq
* @return
*/
public List<WxClockLog> selectWxClockLogList(WxClockLog wxClockLog);
public List<WxMemberClockLog> selectWxClockLogList(UserClockLogReq userClockLogReq);
/**
*

@ -1,10 +1,21 @@
package com.flossom.system.service.impl;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import com.flossom.common.core.domain.entity.WxClockLog;
import com.flossom.common.core.domain.entity.WxMemberClockLog;
import com.flossom.common.core.domain.entity.WxUserMember;
import com.flossom.common.core.domain.entity.WxUserTag;
import com.flossom.common.core.domain.req.UserClockLogReq;
import com.flossom.common.core.domain.req.WxUserMemberVm;
import com.flossom.common.core.enums.TagTypeStatusEnum;
import com.flossom.common.core.mapper.WxClockLogMapper;
import com.flossom.common.core.mapper.WxUserMemberMapper;
import com.flossom.common.core.mapper.WxUserTagMapper;
import com.flossom.common.core.utils.DateUtils;
import com.flossom.common.core.utils.PageUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.flossom.system.service.IWxClockLogService;
@ -21,6 +32,15 @@ public class WxClockLogServiceImpl implements IWxClockLogService {
@Autowired
private WxClockLogMapper wxClockLogMapper;
@Autowired
private WxUserMemberMapper wxUserMemberMapper;
@Autowired
private WxUserTagMapper wxUserTagMapper;
/**
*
*
@ -35,12 +55,66 @@ public class WxClockLogServiceImpl implements IWxClockLogService {
/**
*
*
* @param wxClockLog
* @param userClockLogReq
* @return
*/
@Override
public List<WxClockLog> selectWxClockLogList(WxClockLog wxClockLog) {
return wxClockLogMapper.selectWxClockLogList(wxClockLog);
public List<WxMemberClockLog> selectWxClockLogList(UserClockLogReq userClockLogReq) {
// 查询条件
WxUserMemberVm wxUserMemberVm = new WxUserMemberVm();
if (!(userClockLogReq.getUserIdList() == null && userClockLogReq.getNickname() == null
&& userClockLogReq.getMobile() == null && userClockLogReq.getMemberRegisterDateRange() == null
&& userClockLogReq.getWecomTagList() == null && userClockLogReq.getMiniProgramTagList() == null)) {
wxUserMemberVm.setId(userClockLogReq.getUserIdList());
wxUserMemberVm.setNickname(userClockLogReq.getNickname());
wxUserMemberVm.setMobile(userClockLogReq.getMobile());
if (userClockLogReq.getWecomTagList() != null && userClockLogReq.getWecomTagList().size() > 0) {
wxUserMemberVm.setWecomTags(userClockLogReq.getWecomTagList().stream().map(Long::intValue).collect(Collectors.toList()));
wxUserMemberVm.setWecomTagNum(userClockLogReq.getWecomTagList().size());
}
if (userClockLogReq.getMiniProgramTagList() != null && userClockLogReq.getMiniProgramTagList().size() > 0) {
wxUserMemberVm.setMiniProgramTags(userClockLogReq.getMiniProgramTagList().stream().map(Long::intValue).collect(Collectors.toList()));
wxUserMemberVm.setMiniProgramTagNum(userClockLogReq.getMiniProgramTagList().size());
}
if (userClockLogReq.getMemberRegisterDateRange() != null && userClockLogReq.getMemberRegisterDateRange().size() > 0) {
wxUserMemberVm.getParams().put("beginTime", userClockLogReq.getMemberRegisterDateRange().get(0));
wxUserMemberVm.getParams().put("endTime", userClockLogReq.getMemberRegisterDateRange().get(1));
}
List<WxUserMember> wxUserMemberList = wxUserMemberMapper.selectWxUserMemberListByVm(wxUserMemberVm);
if (wxUserMemberList != null && wxUserMemberList.size() > 0) {
userClockLogReq.setQueryUserIdList(wxUserMemberList.stream().map(WxUserMember::getId).collect(Collectors.toList()));
} else {
userClockLogReq.setQueryUserIdList(Arrays.asList(0L));
}
}
PageUtils.startPage();
List<WxMemberClockLog> wxClockLogList = wxClockLogMapper.selectMemberClockLogList(userClockLogReq);
wxClockLogList.forEach(wxMemberClockLog -> {
WxUserMember wxUserMember = wxUserMemberMapper.selectWxUserMemberById(wxMemberClockLog.getUserId());
if (wxUserMember != null) {
// 用户信息
wxMemberClockLog.setHeadimg(wxUserMember.getHeadimg());
wxMemberClockLog.setMobile(wxUserMember.getMobile());
wxMemberClockLog.setNickname(wxUserMember.getNickname());
wxMemberClockLog.setMemberRegisterDate(wxUserMember.getCreateTime());
// 查询标签
WxUserTag wxUserTag = new WxUserTag();
wxUserTag.setUserId(wxUserMember.getId());
wxUserTag.setType(TagTypeStatusEnum.MINI_PROGRAM.getCode());
List<WxUserTag> miniProgramTagList = wxUserTagMapper.selectWxUserTagList(wxUserTag);
if (miniProgramTagList != null && miniProgramTagList.size() > 0) {
wxMemberClockLog.setMiniProgramTagListStr(miniProgramTagList.stream().map(WxUserTag::getTagName).collect(Collectors.joining(",")));
}
wxUserTag.setType(TagTypeStatusEnum.ENTERPRISE_WECHAT.getCode());
List<WxUserTag> wecomTagList = wxUserTagMapper.selectWxUserTagList(wxUserTag);
if (wecomTagList != null && wecomTagList.size() > 0) {
wxMemberClockLog.setWecomTagListStr(wecomTagList.stream().map(WxUserTag::getTagName).collect(Collectors.joining(",")));
}
}
});
return wxClockLogList;
}
/**

@ -75,9 +75,11 @@ public class WxNursingLogServiceImpl implements IWxNursingLogService {
wxUserMemberVm.setAreaId(userNursingLogReq.getAreaId());
if (userNursingLogReq.getWecomTagList() != null && userNursingLogReq.getWecomTagList().size() > 0) {
wxUserMemberVm.setWecomTags(userNursingLogReq.getWecomTagList().stream().map(Long::intValue).collect(Collectors.toList()));
wxUserMemberVm.setWecomTagNum(userNursingLogReq.getWecomTagList().size());
}
if (userNursingLogReq.getMiniProgramTagList() != null && userNursingLogReq.getMiniProgramTagList().size() > 0) {
wxUserMemberVm.setMiniProgramTags(userNursingLogReq.getMiniProgramTagList().stream().map(Long::intValue).collect(Collectors.toList()));
wxUserMemberVm.setMiniProgramTagNum(userNursingLogReq.getMiniProgramTagList().size());
}
List<WxUserMember> wxUserMemberList = wxUserMemberMapper.selectWxUserMemberListByVm(wxUserMemberVm);

@ -3,204 +3,175 @@
<el-collapse accordion style="margin-bottom: 10px" v-model="activeNames">
<el-collapse-item name="search">
<template slot="title">
<div class="margin-top" style="border-left: solid 2px #419eff;padding-left: 10px;font-size: 18px !important;color: #000;">
<div class="margin-top"
style="border-left: solid 2px #419eff;padding-left: 10px;font-size: 18px !important;color: #000;">
搜索
</div>
</template>
<div style="margin-top: 10px">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<div style="display: flex">
<el-popover
placement="top-start"
width="200"
trigger="click"
content="手机号码和用户编号,满足其中之一内容即可"
>
<el-form-item label="用户编号" prop="id" slot="reference">
<el-input
v-model="queryParams.id"
placeholder="搜索多个请用英文逗号隔开"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-popover>
<el-form-item label="会员昵称" prop="userId">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="100px">
<el-popover
placement="top-start"
width="200"
trigger="click"
content="手机号码和用户编号,满足其中之一内容即可"
>
<el-form-item label="用户编号" prop="userIdList" slot="reference">
<el-input
v-model="queryParams.userIdList"
placeholder="搜索多个请用英文逗号隔开"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-popover>
<el-form-item label="会员昵称" prop="nickname">
<el-input
v-model="queryParams.nickname"
placeholder="请输入单个会员昵称搜索"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-popover
placement="top-start"
trigger="click"
content="手机号码和用户编号,满足其中之一内容即可"
>
<el-form-item label="手机号码" prop="mobile" slot="reference">
<el-input
v-model="queryParams.userId"
placeholder="请输入单个会员昵称搜索"
v-model="queryParams.mobile"
placeholder="搜索多个请用英文逗号隔开"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-popover
placement="top-start"
trigger="click"
content="手机号码和用户编号,满足其中之一内容即可"
</el-popover>
<el-form-item label="打卡时间" prop="clockDateRange">
<el-date-picker
style="width: 360px"
v-model="queryParams.clockDateRange"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
value-format="yyyy-MM-dd HH:mm:ss"
end-placeholder="结束日期"
align="right"
>
</el-date-picker>
</el-form-item>
<el-form-item label="用户注册时间" prop="memberRegisterDateRange">
<el-date-picker
style="width: 360px"
v-model="queryParams.memberRegisterDateRange"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
value-format="yyyy-MM-dd HH:mm:ss"
end-placeholder="结束日期"
align="right"
>
</el-date-picker>
</el-form-item>
<el-form-item label="最新打卡时间" prop="clockLastDateRange">
<el-date-picker
style="width: 360px"
v-model="queryParams.clockLastDateRange"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
value-format="yyyy-MM-dd HH:mm:ss"
end-placeholder="结束日期"
align="right"
>
</el-date-picker>
</el-form-item>
<el-popover
placement="top-start"
width="200"
trigger="click"
content="外部标签和小程序标签,同时满足所选内容"
>
<el-form-item
label="外部标签"
prop="wecomTags"
slot="reference"
>
<el-form-item label="手机号码" prop="mobile" slot="reference">
<el-input
v-model="queryParams.mobile"
placeholder="搜索多个请用英文逗号隔开"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-popover>
<el-form-item label="仪器名称" prop="source">
<el-select
v-model="queryParams.instrumentIdArray"
placeholder="请选择类型"
v-model="queryParams.wecomTagList"
multiple
:style="{ width: '100%' }"
clearable
placeholder="请选择"
>
<el-option
v-for="item in instrumentList"
:key="item.id"
:label="item.name"
:value="item.id">
v-for="item in wecomTags"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
</div>
<div style="display: flex">
<el-form-item label="打卡时间" prop="startTime">
<el-date-picker clearable
v-model="queryParams.startTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm"
placeholder="请选择操作开始时间">
</el-date-picker>
</el-form-item>
<el-form-item prop="endTime">
<el-date-picker clearable
v-model="queryParams.endTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm"
placeholder="请选择操作结束时间">
</el-date-picker>
</el-form-item>
<el-form-item label="用户注册时间" prop="startTime">
<el-date-picker clearable
v-model="queryParams.startTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm"
placeholder="请选择操作开始时间">
</el-date-picker>
</el-form-item>
<el-form-item prop="endTime">
<el-date-picker clearable
v-model="queryParams.endTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm"
placeholder="请选择操作结束时间">
</el-date-picker>
</el-form-item>
<el-form-item label="最新打卡时间" prop="startTime">
<el-date-picker clearable
v-model="queryParams.startTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm"
placeholder="请选择操作开始时间">
</el-date-picker>
</el-form-item>
<el-form-item prop="endTime">
<el-date-picker clearable
v-model="queryParams.endTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm"
placeholder="请选择操作结束时间">
</el-date-picker>
</el-form-item>
</div>
<div style="display: flex">
<el-popover
placement="top-start"
width="200"
trigger="click"
content="外部标签和小程序标签,同时满足所选内容"
>
<el-form-item
label="外部标签"
prop="wecomTags"
slot="reference"
>
<el-select
v-model="queryParams.wecomTags"
multiple
placeholder="请选择"
>
<el-option
v-for="item in wecomTags"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-popover>
<el-popover
placement="top-start"
width="200"
trigger="click"
content="外部标签和小程序标签,同时满足所选内容"
</el-popover>
<el-popover
placement="top-start"
width="200"
trigger="click"
content="外部标签和小程序标签,同时满足所选内容"
>
<el-form-item
label="小程序标签"
prop="miniProgramTags"
slot="reference"
>
<el-form-item
label="小程序标签"
prop="miniProgramTags"
slot="reference"
<el-select
v-model="queryParams.miniProgramTagList"
multiple
placeholder="请选择"
>
<el-select
v-model="queryParams.miniProgramTags"
multiple
placeholder="请选择"
<el-option
v-for="item in miniProgramTags"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-option
v-for="item in miniProgramTags"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-popover>
<el-form-item label="打卡范围" prop="credit">
<el-input-number
:min="0"
:precision="0"
v-model="queryParams.creditStart"
@keyup.enter.native="handleQuery"
></el-input-number>
<el-input-number
:min="0"
:precision="0"
v-model="queryParams.creditEnd"
@keyup.enter.native="handleQuery"
></el-input-number>
<el-button icon="el-icon-close" circle ></el-button>
</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-option>
</el-select>
</el-form-item>
</div>
</el-popover>
<el-form-item label="打卡范围" prop="clockNumStart">
<el-input-number
:min="0"
:precision="0"
v-model="queryParams.clockNumStart"
@keyup.enter.native="handleQuery"
></el-input-number>
<el-input-number
:min="0"
:precision="0"
v-model="queryParams.clockNumEnd"
@keyup.enter.native="handleQuery"
></el-input-number>
<el-button icon="el-icon-close" circle @click="clearClockNum"></el-button>
</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>
</div>
</el-collapse-item>
@ -258,19 +229,21 @@
<el-table v-loading="loading" :data="clockLogList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="头像" align="center" prop="userId" />
<el-table-column label="会员昵称" align="center" prop="userId" />
<el-table-column label="用户编号" align="center" prop="userId" />
<el-table-column label="手机号码" align="center" prop="userId" />
<el-table-column label="仪器名称" align="center" prop="userId" />
<el-table-column label="打卡记录" align="center" prop="userId" />
<el-table-column label="打卡天数" align="center" prop="instrumentId" />
<el-table-column label="最新打卡时间" align="center" prop="instrumentName" />
<el-table-column label="小程序标签" align="center" prop="clockContent" />
<el-table-column label="外部标签" align="center" prop="clockContent" />
<el-table-column label="用户注册时间" align="center" prop="clockContent" />
<el-table-column label="状态" align="center" prop="status" />
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="头像" align="center">
<template slot-scope="scope">
<el-avatar shape="circle" :size="50" :src="scope.row.headimg"/>
</template>
</el-table-column>
<el-table-column label="会员昵称" align="center" prop="nickname"/>
<el-table-column label="用户编号" align="center" prop="userId"/>
<el-table-column label="手机号码" align="center" prop="mobile"/>
<el-table-column label="打卡记录" align="center" prop="clockNum"/>
<el-table-column label="打卡天数" align="center" prop="clockNum"/>
<el-table-column label="最新打卡时间" align="center" prop="lastClockTime"/>
<el-table-column label="小程序标签" align="center" prop="miniProgramTagListStr"/>
<el-table-column label="外部标签" align="center" prop="wecomTagListStr"/>
<el-table-column label="用户注册时间" align="center" prop="memberRegisterDate"/>
</el-table>
<pagination
@ -284,12 +257,13 @@
</template>
<script>
import { listClockLog, getClockLog, delClockLog, addClockLog, updateClockLog } from "@/api/system/clockLog";
import {listClockLog, getClockLog, delClockLog, addClockLog, updateClockLog} from "@/api/system/clockLog";
import {listInstrument} from "@/api/system/instrument";
import {
getMiniProgramTags,
getWecomTags,
} from '@/api/system/member'
export default {
name: "ClockLog",
data() {
@ -325,17 +299,21 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
userId: null,
instrumentId: null,
instrumentName: null,
clockContent: null,
status: null,
userIdList: null,
nickname: null,
mobile: null,
wecomTagList: null,
miniProgramTagList: null,
memberRegisterDateRange: null,
clockDateRange: null,
clockLastDateRange: null,
clockNumStart: undefined,
clockNumEnd: undefined,
},
//
form: {},
//
rules: {
}
rules: {}
};
},
created() {
@ -344,7 +322,7 @@ export default {
this.getTag();
},
methods: {
getTag(){
getTag() {
//
getMiniProgramTags().then((Response) => {
this.miniProgramTags = Response.data
@ -354,7 +332,7 @@ export default {
this.wecomTags = Response.data
})
},
queryInstrument(){
queryInstrument() {
listInstrument({}).then(response => {
this.instrumentList = response.rows;
});
@ -376,17 +354,18 @@ export default {
//
reset() {
this.form = {
id: null,
headimg: null,
nickname: null,
userId: null,
instrumentId: null,
instrumentName: null,
clockContent: null,
status: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null
mobile: null,
clockNum: null,
lastClockTime: null,
miniProgramTagListStr: null,
wecomTagListStr: null,
memberRegisterDate: null,
};
this.queryParams.clockNumStart = undefined,
this.queryParams.clockNumEnd = undefined,
this.resetForm("form");
},
/** 搜索按钮操作 */
@ -402,7 +381,7 @@ export default {
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
@ -444,19 +423,25 @@ export default {
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除用户打卡编号为"' + ids + '"的数据项?').then(function() {
this.$modal.confirm('是否确认删除用户打卡编号为"' + ids + '"的数据项?').then(function () {
return delClockLog(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
}).catch(() => {
});
},
/** 导出按钮操作 */
handleExport() {
this.download('system/clockLog/export', {
...this.queryParams
}, `clockLog_${new Date().getTime()}.xlsx`)
},
clearClockNum() {
this.queryParams.clockNumStart = undefined;
this.queryParams.clockNumEnd = undefined;
}
}
};
</script>

Loading…
Cancel
Save