后管:护理记录查询

master
382696293@qq.com 2 years ago
parent c819f0e07b
commit a9b1cfd1b5

@ -1,9 +1,12 @@
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 java.time.LocalTime;
import java.util.Date;
import java.util.List;
/**
* wx_nursing_log
@ -57,9 +60,9 @@ public class WxNursingLog extends BaseEntity {
private String modeName;
/**
*
*
*/
@Excel(name = "护理时长")
@Excel(name = "护理时长")
private LocalTime nursingTime;
/**
@ -78,6 +81,21 @@ public class WxNursingLog extends BaseEntity {
@Excel(name = "状态", readConverterExp = "0=正常,1=停用")
private Long status;
/**
* 使
*/
private String headimg;
private String nickname;
private String mobile;
private String wecomTagListStr;
private String miniProgramTagListStr;
/* 用户注册时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date userMemberCreateTime;
/* 仪器绑定时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date instrumentBindingTime;
public void setId(Long id) {
this.id = id;
}
@ -174,4 +192,60 @@ public class WxNursingLog extends BaseEntity {
public void setInstrumentType(Integer instrumentType) {
this.instrumentType = instrumentType;
}
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 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 getUserMemberCreateTime() {
return userMemberCreateTime;
}
public void setUserMemberCreateTime(Date userMemberCreateTime) {
this.userMemberCreateTime = userMemberCreateTime;
}
public Date getInstrumentBindingTime() {
return instrumentBindingTime;
}
public void setInstrumentBindingTime(Date instrumentBindingTime) {
this.instrumentBindingTime = instrumentBindingTime;
}
}

@ -0,0 +1,178 @@
package com.flossom.common.core.domain.req;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.List;
/**
*
*
* @author flossom
* @date 2024-01-29
*/
public class UserNursingLogReq {
/**
* ','
*/
private String userIdList;
/**
*
*/
private String nickname;
/**
* ','
*/
private String mobile;
/**
*
*/
private String provinceId;
/**
*
*/
private String cityId;
/**
*
*/
private String areaId;
/**
* ID
*/
private List<Long> wecomTagList;
/**
* ID
*/
private List<Long> instrumentIdList;
/**
* ID
*/
private List<Long> miniProgramTagList;
/**
* ID
*/
private List<Long> modeIdList;
/**
*
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private List<LocalDateTime> updateTimeRange;
/**
*
*/
@DateTimeFormat(pattern = "HH:mm:ss")
private List<LocalTime> nursingTimeRange;
public UserNursingLogReq() {
}
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 String getProvinceId() {
return provinceId;
}
public void setProvinceId(String provinceId) {
this.provinceId = provinceId;
}
public String getCityId() {
return cityId;
}
public void setCityId(String cityId) {
this.cityId = cityId;
}
public String getAreaId() {
return areaId;
}
public void setAreaId(String areaId) {
this.areaId = areaId;
}
public List<Long> getWecomTagList() {
return wecomTagList;
}
public void setWecomTagList(List<Long> wecomTagList) {
this.wecomTagList = wecomTagList;
}
public List<Long> getInstrumentIdList() {
return instrumentIdList;
}
public void setInstrumentIdList(List<Long> instrumentIdList) {
this.instrumentIdList = instrumentIdList;
}
public List<Long> getMiniProgramTagList() {
return miniProgramTagList;
}
public void setMiniProgramTagList(List<Long> miniProgramTagList) {
this.miniProgramTagList = miniProgramTagList;
}
public List<Long> getModeIdList() {
return modeIdList;
}
public void setModeIdList(List<Long> modeIdList) {
this.modeIdList = modeIdList;
}
public List<LocalDateTime> getUpdateTimeRange() {
return updateTimeRange;
}
public void setUpdateTimeRange(List<LocalDateTime> updateTimeRange) {
this.updateTimeRange = updateTimeRange;
}
public List<LocalTime> getNursingTimeRange() {
return nursingTimeRange;
}
public void setNursingTimeRange(List<LocalTime> nursingTimeRange) {
this.nursingTimeRange = nursingTimeRange;
}
}

@ -0,0 +1,100 @@
package com.flossom.common.core.domain.req;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.List;
/**
*
*
* @author flossom
* @date 2024-01-29
*/
public class UserNursingLogVm {
/**
* ','
*/
private List<Long> userIdList;
/**
* ID
*/
private List<Long> instrumentIdList;
/**
* ID
*/
private List<Long> miniProgramTagList;
/**
* ID
*/
private List<Long> modeIdList;
/**
*
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private List<LocalDateTime> updateTimeRange;
/**
*
*/
@DateTimeFormat(pattern = "HH:mm:ss")
private List<LocalTime> nursingTimeRange;
public UserNursingLogVm() {
}
public List<Long> getUserIdList() {
return userIdList;
}
public void setUserIdList(List<Long> userIdList) {
this.userIdList = userIdList;
}
public List<Long> getInstrumentIdList() {
return instrumentIdList;
}
public void setInstrumentIdList(List<Long> instrumentIdList) {
this.instrumentIdList = instrumentIdList;
}
public List<Long> getMiniProgramTagList() {
return miniProgramTagList;
}
public void setMiniProgramTagList(List<Long> miniProgramTagList) {
this.miniProgramTagList = miniProgramTagList;
}
public List<Long> getModeIdList() {
return modeIdList;
}
public void setModeIdList(List<Long> modeIdList) {
this.modeIdList = modeIdList;
}
public List<LocalDateTime> getUpdateTimeRange() {
return updateTimeRange;
}
public void setUpdateTimeRange(List<LocalDateTime> updateTimeRange) {
this.updateTimeRange = updateTimeRange;
}
public List<LocalTime> getNursingTimeRange() {
return nursingTimeRange;
}
public void setNursingTimeRange(List<LocalTime> nursingTimeRange) {
this.nursingTimeRange = nursingTimeRange;
}
}

@ -18,15 +18,15 @@ import java.time.LocalTime;
public class WxNursingLogReq {
/**
* id
* id
*/
@NotNull(message = "请选择设备")
@NotNull(message = "请选择仪器")
private Long instrumentId;
/**
*
*
*/
@NotNull(message = "请选择设备")
@NotNull(message = "请选择仪器")
private String instrumentName;
/**

@ -5,13 +5,9 @@ import com.flossom.common.core.annotation.Excel;
import com.flossom.common.core.domain.entity.WxModeCombineInfo;
import com.flossom.common.core.domain.entity.WxModeOpenSource;
import com.flossom.common.core.domain.entity.WxModeServiceInfo;
import com.flossom.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@ -88,6 +84,12 @@ public class WxModeRet {
@Excel(name = "模式时长", width = 30, dateFormat = "HH:mm:ss")
private LocalTime modeTime;
/**
*
*/
@Excel(name = "模式时长", width = 30)
private String modeTimeStr;
/**
*
*/
@ -330,4 +332,12 @@ public class WxModeRet {
public void setIsNew(Integer isNew) {
this.isNew = isNew;
}
public String getModeTimeStr() {
return modeTimeStr;
}
public void setModeTimeStr(String modeTimeStr) {
this.modeTimeStr = modeTimeStr;
}
}

@ -1,6 +1,7 @@
package com.flossom.common.core.mapper;
import com.flossom.common.core.domain.entity.WxNursingLog;
import com.flossom.common.core.domain.req.UserNursingLogVm;
import java.util.List;
@ -27,6 +28,8 @@ public interface WxNursingLogMapper {
*/
public List<WxNursingLog> selectWxNursingLogList(WxNursingLog wxNursingLog);
public List<WxNursingLog> selectNursingLogListByVm(UserNursingLogVm userNursingLogVm);
/**
*
*

@ -27,7 +27,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectWxNursingLogList" parameterType="WxNursingLog" resultMap="WxNursingLogResult">
<include refid="selectWxNursingLogVo"/>
<where>
<where>
<if test="userId != null "> and user_id = #{userId}</if>
<if test="instrumentId != null "> and instrument_id = #{instrumentId}</if>
<if test="instrumentName != null "> and instrument_name = #{instrumentName}</if>
@ -46,6 +46,43 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
ORDER BY update_time DESC
</select>
<select id="selectNursingLogListByVm" parameterType="UserNursingLogVm" resultMap="WxNursingLogResult">
<include refid="selectWxNursingLogVo"/>
<where>
<if test="userIdList != null ">
and user_id in
<foreach item="item" collection="userIdList" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="instrumentIdList != null ">
and instrument_id in
<foreach item="item" collection="instrumentIdList" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="modeIdList != null ">
and mode_id in
<foreach item="item" collection="modeIdList" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="nursingTimeRange != null and nursingTimeRange.size > 0">
and nursing_time &gt;= #{nursingTimeRange[0]}
</if>
<if test="nursingTimeRange != null and nursingTimeRange.size > 1">
and nursing_time &lt;= #{nursingTimeRange[1]}
</if>
<if test="updateTimeRange != null and updateTimeRange.size > 0">
and update_time &gt;= #{updateTimeRange[0]}
</if>
<if test="updateTimeRange != null and updateTimeRange.size > 1">
and update_time &lt;= #{updateTimeRange[1]}
</if>
</where>
ORDER BY update_time DESC
</select>
<select id="selectWxNursingLogById" parameterType="Long" resultMap="WxNursingLogResult">
<include refid="selectWxNursingLogVo"/>

@ -5,6 +5,7 @@ import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import com.flossom.common.core.domain.entity.WxNursingLog;
import com.flossom.common.core.domain.req.UserNursingLogReq;
import com.flossom.common.core.utils.poi.ExcelUtil;
import com.flossom.common.core.web.controller.BaseController;
import com.flossom.common.core.web.domain.AjaxResult;
@ -41,9 +42,8 @@ public class WxNursingLogController extends BaseController {
*/
@RequiresPermissions("system:nursingLog:list")
@GetMapping("/list")
public TableDataInfo list(WxNursingLog wxNursingLog) {
startPage();
List<WxNursingLog> list = wxNursingLogService.selectWxNursingLogList(wxNursingLog);
public TableDataInfo list(UserNursingLogReq userNursingLogReq) {
List<WxNursingLog> list = wxNursingLogService.selectWxNursingLogList(userNursingLogReq);
return getDataTable(list);
}
@ -53,8 +53,8 @@ public class WxNursingLogController extends BaseController {
@RequiresPermissions("system:nursingLog:export")
@Log(title = "用户护理日志", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, WxNursingLog wxNursingLog) {
List<WxNursingLog> list = wxNursingLogService.selectWxNursingLogList(wxNursingLog);
public void export(HttpServletResponse response, UserNursingLogReq userNursingLogReq) {
List<WxNursingLog> list = wxNursingLogService.selectWxNursingLogList(userNursingLogReq);
ExcelUtil<WxNursingLog> util = new ExcelUtil<WxNursingLog>(WxNursingLog.class);
util.exportExcel(response, list, "用户护理日志数据");
}

@ -2,6 +2,7 @@ package com.flossom.system.service;
import com.flossom.common.core.domain.entity.WxNursingLog;
import com.flossom.common.core.domain.req.UserNursingLogReq;
import java.util.List;
@ -27,7 +28,7 @@ public interface IWxNursingLogService {
* @param wxNursingLog
* @return
*/
public List<WxNursingLog> selectWxNursingLogList(WxNursingLog wxNursingLog);
public List<WxNursingLog> selectWxNursingLogList(UserNursingLogReq wxNursingLog);
/**
*

@ -1,13 +1,27 @@
package com.flossom.system.service.impl;
import com.flossom.common.core.domain.entity.WxNursingLog;
import com.flossom.common.core.domain.entity.WxUserInstrument;
import com.flossom.common.core.domain.entity.WxUserMember;
import com.flossom.common.core.domain.entity.WxUserTag;
import com.flossom.common.core.domain.req.UserNursingLogReq;
import com.flossom.common.core.domain.req.UserNursingLogVm;
import com.flossom.common.core.domain.req.WxUserMemberVm;
import com.flossom.common.core.enums.BindingStatusEnums;
import com.flossom.common.core.enums.TagTypeStatusEnum;
import com.flossom.common.core.mapper.WxNursingLogMapper;
import com.flossom.common.core.mapper.WxUserInstrumentMapper;
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.IWxNursingLogService;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* Service
@ -21,6 +35,15 @@ public class WxNursingLogServiceImpl implements IWxNursingLogService {
@Autowired
private WxNursingLogMapper wxNursingLogMapper;
@Autowired
private WxUserMemberMapper wxUserMemberMapper;
@Autowired
private WxUserTagMapper wxUserTagMapper;
@Autowired
private WxUserInstrumentMapper wxUserInstrumentMapper;
/**
*
*
@ -34,13 +57,79 @@ public class WxNursingLogServiceImpl implements IWxNursingLogService {
/**
*
*
* @param wxNursingLog
* @return
*/
@Override
public List<WxNursingLog> selectWxNursingLogList(WxNursingLog wxNursingLog) {
return wxNursingLogMapper.selectWxNursingLogList(wxNursingLog);
public List<WxNursingLog> selectWxNursingLogList(UserNursingLogReq userNursingLogReq) {
// 查询条件
UserNursingLogVm userNursingLogVm = new UserNursingLogVm();
WxUserMemberVm wxUserMemberVm = new WxUserMemberVm();
if (!(userNursingLogReq.getUserIdList() == null && userNursingLogReq.getNickname() == null
&& userNursingLogReq.getMobile() == null && userNursingLogReq.getProvinceId() == null
&& userNursingLogReq.getCityId() == null && userNursingLogReq.getAreaId() == null
&& userNursingLogReq.getWecomTagList() == null && userNursingLogReq.getMiniProgramTagList() == null)) {
wxUserMemberVm.setId(userNursingLogReq.getUserIdList());
wxUserMemberVm.setNickname(userNursingLogReq.getNickname());
wxUserMemberVm.setMobile(userNursingLogReq.getMobile());
wxUserMemberVm.setProvinceId(userNursingLogReq.getProvinceId());
wxUserMemberVm.setCityId(userNursingLogReq.getCityId());
wxUserMemberVm.setAreaId(userNursingLogReq.getAreaId());
if (userNursingLogReq.getWecomTagList() != null && userNursingLogReq.getWecomTagList().size() > 0) {
wxUserMemberVm.setWecomTags(userNursingLogReq.getWecomTagList().stream().map(Long::intValue).collect(Collectors.toList()));
}
if (userNursingLogReq.getMiniProgramTagList() != null && userNursingLogReq.getMiniProgramTagList().size() > 0) {
wxUserMemberVm.setMiniProgramTags(userNursingLogReq.getMiniProgramTagList().stream().map(Long::intValue).collect(Collectors.toList()));
}
List<WxUserMember> wxUserMemberList = wxUserMemberMapper.selectWxUserMemberListByVm(wxUserMemberVm);
if (wxUserMemberList != null && wxUserMemberList.size() > 0) {
userNursingLogVm.setUserIdList(wxUserMemberList.stream().map(WxUserMember::getId).collect(Collectors.toList()));
} else {
userNursingLogVm.setUserIdList(Arrays.asList(0L));
}
}
userNursingLogVm.setInstrumentIdList(userNursingLogReq.getInstrumentIdList());
userNursingLogVm.setModeIdList(userNursingLogReq.getModeIdList());
userNursingLogVm.setNursingTimeRange(userNursingLogReq.getNursingTimeRange());
userNursingLogVm.setUpdateTimeRange(userNursingLogReq.getUpdateTimeRange());
PageUtils.startPage();
List<WxNursingLog> wxNursingLogList = wxNursingLogMapper.selectNursingLogListByVm(userNursingLogVm);
if (wxNursingLogList != null && wxNursingLogList.size() > 0) {
wxNursingLogList.forEach(wxNursingLog -> {
WxUserMember wxUserMember = wxUserMemberMapper.selectWxUserMemberById(wxNursingLog.getUserId());
if (wxUserMember != null) {
// 用户信息
wxNursingLog.setHeadimg(wxUserMember.getHeadimg());
wxNursingLog.setMobile(wxUserMember.getMobile());
wxNursingLog.setNickname(wxUserMember.getNickname());
wxNursingLog.setUserMemberCreateTime(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) {
wxNursingLog.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) {
wxNursingLog.setWecomTagListStr(wecomTagList.stream().map(WxUserTag::getTagName).collect(Collectors.joining(",")));
}
// 仪器绑定时间
WxUserInstrument query = new WxUserInstrument();
query.setUserId(wxUserMember.getId());
query.setInstrumentId(wxNursingLog.getInstrumentId());
query.setBindingStatus(BindingStatusEnums.BINDED.getCode());
List<WxUserInstrument> wxUserInstrumentList = wxUserInstrumentMapper.selectListByUserIdAndInstrumentId(query);
if (wxUserInstrumentList != null && wxUserInstrumentList.size() == 1) {
WxUserInstrument wxUserInstrument = wxUserInstrumentList.get(0);
wxNursingLog.setInstrumentBindingTime(wxUserInstrument.getUpdateTime());
}
}
});
}
return wxNursingLogList;
}
/**

@ -1,53 +1,82 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="用户id" prop="userId">
<el-popover placement="top-start" width="200" trigger="click" content="手机号码和用户编号,满足其中之一内容即可">
<el-form-item label="用户编号" prop="userIdList" slot="reference">
<el-input style="width: 200px" 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.userId"
placeholder="请输入用户id"
clearable
@keyup.enter.native="handleQuery"
/>
style="width: 200px" v-model="queryParams.nickname" placeholder="请输入单个会员昵称进行搜索" clearable
@keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="设备id" prop="instrumentId">
<el-input
v-model="queryParams.instrumentId"
placeholder="请输入设备id"
clearable
@keyup.enter.native="handleQuery"
/>
<el-popover placement="top-start" width="200" trigger="click" content="手机号码和用户编号,满足其中之一内容即可">
<el-form-item label="手机号码" prop="mobile" slot="reference">
<el-input style="width: 200px" v-model="queryParams.mobile" placeholder="搜索多个请用英文逗号隔开" clearable
@keyup.enter.native="handleQuery"/>
</el-form-item>
</el-popover>
<el-form-item label="省" prop="provinceId">
<el-select style="width: 120px" v-model="queryParams.provinceId" @change="getCityList(queryParams.provinceId)"
placeholder="请选择省" @keyup.enter.native="handleQuery" filterable clearable
@clear="clearOption(1)">
<el-option v-for="item in provinceList" :key="item.id" :label="item.name" :value="item.id"/>
</el-select>
</el-form-item>
<el-form-item label="是否在线1在线2离线" prop="online">
<el-input
v-model="queryParams.online"
placeholder="请输入是否在线1在线2离线"
clearable
@keyup.enter.native="handleQuery"
/>
<el-form-item label="市" prop="cityId">
<el-select style="width: 120px" v-model="queryParams.cityId" @change="getAreaByPid(queryParams.cityId)"
@clear="clearOption(2)" @keyup.enter.native="handleQuery" filterable clearable
placeholder="请选择市">
<el-option v-for="item in cityList" :key="item.id" :label="item.name" :value="item.id"/>
</el-select>
</el-form-item>
<el-form-item label="模式ID" prop="modeId">
<el-input
v-model="queryParams.modeId"
placeholder="请输入模式ID"
clearable
@keyup.enter.native="handleQuery"
/>
<el-form-item label="区" prop="areaId">
<el-select style="width: 120px" v-model="queryParams.areaId" @keyup.enter.native="handleQuery" filterable
clearable placeholder="请选择区">
<el-option v-for="item in areaList" :key="item.id" :label="item.name" :value="item.id"/>
</el-select>
</el-form-item>
<el-popover placement="top-start" width="200" trigger="click" content="外部标签和小程序标签,同时满足所选内容">
<el-form-item label="外部标签" prop="wecomTagList" slot="reference">
<el-select v-model="queryParams.wecomTagList" multiple placeholder="请选择">
<el-option v-for="item in wecomTagList" :key="item.value" :label="item.label" :value="item.value"/>
</el-select>
</el-form-item>
</el-popover>
<el-form-item label="仪器" prop="instrumentIdList">
<el-select v-model="queryParams.instrumentIdList" placeholder="请选择仪器" multiple :style="{ width: '100%' }"
clearable>
<el-option v-for="item in instrumentList" :key="item.id" :label="item.name" :value="item.id"/>
</el-select>
</el-form-item>
<el-popover placement="top-start" width="200" trigger="click" content="外部标签和小程序标签,同时满足所选内容">
<el-form-item label="小程序标签" label-width="100" prop="miniProgramTags" slot="reference">
<el-select v-model="queryParams.miniProgramTagList" multiple placeholder="请选择">
<el-option v-for="item in miniProgramTagList" :key="item.value" :label="item.label" :value="item.value"/>
</el-select>
</el-form-item>
</el-popover>
<el-form-item label="模式" prop="modeIdList">
<el-select v-model="queryParams.modeIdList" placeholder="请选择模式" multiple :style="{ width: '100%' }"
clearable>
<el-option v-for="item in modeList" :key="item.id" :label="item.modeName" :value="item.id"/>
</el-select>
</el-form-item>
<el-form-item label="护理总时长" prop="nursingTime">
<el-date-picker clearable
v-model="queryParams.nursingTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择护理总时长">
<el-form-item label="最新护理时间" prop="updateTimeRange" label-width="150">
<el-date-picker style="width: 360px" v-model="queryParams.updateTimeRange" 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="completionPercentage">
<el-input
v-model="queryParams.completionPercentage"
placeholder="请输入完成度"
clearable
@keyup.enter.native="handleQuery"
/>
<el-form-item label="护理时长范围" prop="nursingTimeRange" label-width="150">
<el-time-picker is-range v-model="queryParams.nursingTimeRange" range-separator=""
start-placeholder="开始时间"
end-placeholder="结束时间" placeholder="请选择护理时长范围" clearable value-format="HH:mm:ss">
</el-time-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
@ -55,86 +84,63 @@
</el-form-item>
</el-form>
<!-- 批量操作下拉选项 -->
<div class="margin-top"
style="border-left: solid 2px #419eff;padding-left: 10px;font-size: 18px;color: #000;margin-bottom: 10px;">批量操作
</div>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['system:nursingLog:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['system:nursingLog:edit']"
>修改</el-button>
<el-select v-model="batchOperateValue" placeholder="批量操作" size="mini" clearable>
<el-option label="批量添加小程序标签" :value="1"></el-option>
<el-option label="全量添加小程序标签" :value="3"></el-option>
<el-option label="导出批量数据" :value="12"></el-option>
<el-option label="导出全量数据" :value="13"></el-option><!-- @click="handleExport" -->
</el-select>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['system:nursingLog:remove']"
>删除</el-button>
<el-button type="primary" plain icon="el-icon-warning" size="mini" @click="batchOperate()"></el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:nursingLog:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"/>
</el-row>
<el-table v-loading="loading" :data="nursingLogList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="${comment}" align="center" prop="id" />
<el-table-column label="用户id" align="center" prop="userId" />
<el-table-column label="设备id" align="center" prop="instrumentId" />
<el-table-column label="设备名称" align="center" prop="instrumentName" />
<el-table-column label="是否在线1在线2离线" align="center" prop="online" />
<el-table-column label="模式ID" align="center" prop="modeId" />
<el-table-column label="模式名称" align="center" prop="modeName" />
<el-table-column label="护理总时长" align="center" prop="nursingTime" width="180">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="序号" align="center" prop="id"/>
<el-table-column label="头像" align="center">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.nursingTime, '{y}-{m}-{d}') }}</span>
<el-avatar shape="circle" :size="50" :src="scope.row.headimg"/>
</template>
</el-table-column>
<el-table-column label="完成度" align="center" prop="completionPercentage" />
<el-table-column label="状态" align="center" prop="status" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<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="instrumentName"/>
<el-table-column label="模式名称" align="center" prop="modeName"/>
<el-table-column label="在线状态" align="center" prop="online">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['system:nursingLog:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['system:nursingLog:remove']"
>删除</el-button>
<span v-show="scope.row.online == 1">线</span>
<span v-show="scope.row.online == 2">线</span>
</template>
</el-table-column>
<el-table-column label="陪伴模式" align="center" prop="xxx"/>
<el-table-column label="创建时间" align="center" min-width="100" prop="createTime"/>
<el-table-column label="护理时长" align="center" prop="nursingTime" width="100" />
<el-table-column label="挡位1" align="center" prop="xxx"/>
<el-table-column label="挡位2" align="center" prop="xxx"/>
<el-table-column label="挡位3" align="center" prop="xxx"/>
<el-table-column label="挡位4" align="center" prop="xxx"/>
<el-table-column label="能量总值" align="center" prop="xxx"/>
<el-table-column label="水分数据1" align="center" prop="xxx"/>
<el-table-column label="水分数据2" align="center" prop="xxx"/>
<el-table-column label="水分数据3" align="center" prop="xxx"/>
<el-table-column label="总护理天数" min-width="100" align="center" prop="xxx"/>
<el-table-column label="本周护理天数" min-width="100" align="center" prop="xxx"/>
<el-table-column label="本月护理天数" min-width="100" align="center" prop="xxx"/>
<el-table-column label="最新护理时间" min-width="100" align="center" prop="updateTime"/>
<el-table-column label="小程序标签" min-width="100" align="center" prop="miniProgramTagListStr"/>
<el-table-column label="外部标签" align="center" prop="wecomTagListStr"/>
<el-table-column label="用户注册时间" min-width="100" align="center" prop="userMemberCreateTime"/>
<el-table-column label="仪器绑定时间" min-width="100" align="center" prop="instrumentBindingTime"/>
</el-table>
<pagination
@ -144,50 +150,13 @@
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改用户护理日志对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="用户id" prop="userId">
<el-input v-model="form.userId" placeholder="请输入用户id" />
</el-form-item>
<el-form-item label="设备id" prop="instrumentId">
<el-input v-model="form.instrumentId" placeholder="请输入设备id" />
</el-form-item>
<el-form-item label="设备名称" prop="instrumentName">
<el-input v-model="form.instrumentName" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="是否在线1在线2离线" prop="online">
<el-input v-model="form.online" placeholder="请输入是否在线1在线2离线" />
</el-form-item>
<el-form-item label="模式ID" prop="modeId">
<el-input v-model="form.modeId" placeholder="请输入模式ID" />
</el-form-item>
<el-form-item label="模式名称" prop="modeName">
<el-input v-model="form.modeName" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="护理总时长" prop="nursingTime">
<el-date-picker clearable
v-model="form.nursingTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择护理总时长">
</el-date-picker>
</el-form-item>
<el-form-item label="完成度" prop="completionPercentage">
<el-input v-model="form.completionPercentage" placeholder="请输入完成度" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listNursingLog, getNursingLog, delNursingLog, addNursingLog, updateNursingLog } from "@/api/system/nursingLog";
import {listNursingLog, getNursingLog, delNursingLog, addNursingLog, updateNursingLog} from "@/api/system/nursingLog";
import {listAllMode, listInstrument} from "@/api/system/instrument";
import {getMiniProgramTags, getRegionByPid, getWecomTags} from "@/api/system/member";
export default {
name: "NursingLog",
@ -215,31 +184,62 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
userId: null,
instrumentId: null,
instrumentName: null,
online: null,
modeId: null,
modeName: null,
nursingTime: null,
completionPercentage: null,
status: null,
userIdList: null,
nickname: null,
mobile: null,
//
provinceId: null,
cityId: null,
areaId: null,
//
wecomTagList: [],
// ID
instrumentIdList: null,
//
miniProgramTagList: [],
//
modeIdList: [],
//
updateTimeRange: null,
//
nursingTimeRange: null,
},
//
provinceList: null,
cityList: null,
areaList: null,
//
wecomTagList: [],
miniProgramTagList: [],
//
modeList: [],
//
instrumentList: [],
//
form: {},
//
rules: {
userId: [
{ required: true, message: "用户id不能为空", trigger: "blur" }
{required: true, message: "用户id不能为空", trigger: "blur"}
],
instrumentId: [
{ required: true, message: "设备id不能为空", trigger: "blur" }
{required: true, message: "设备id不能为空", trigger: "blur"}
],
}
},
};
},
created() {
this.getList();
//
this.queryInstrument();
//
this.getProvinceList();
//
this.getMiniProgramTagList();
this.getWecomTagList();
//
this.getModeList();
},
methods: {
/** 查询用户护理日志列表 */
@ -289,60 +289,85 @@ 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
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加用户护理日志";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getNursingLog(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改用户护理日志";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateNursingLog(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addNursingLog(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除用户护理日志编号为"' + ids + '"的数据项?').then(function() {
return delNursingLog(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('system/nursingLog/export', {
...this.queryParams
}, `nursingLog_${new Date().getTime()}.xlsx`)
},
//
queryInstrument() {
listInstrument({}).then(response => {
this.instrumentList = response.rows;
});
},
// -
getProvinceList() {
getRegionByPid(0).then((Response) => {
this.provinceList = Response.data
})
},
getCityList(pid) {
if (pid == '') {
return
}
this.queryParams.cityId = null
this.queryParams.areaId = null
getRegionByPid(pid).then((Response) => {
this.cityList = Response.data
})
},
getAreaByPid(pid) {
if (pid == '') {
return
}
this.queryParams.areaId = null
getRegionByPid(pid).then((Response) => {
this.areaList = Response.data
})
},
// -
clearOption(option) {
//
if (option == 1) {
this.queryParams.cityId = null
this.queryParams.areaId = null
this.cityList = null
this.areaList = null
}
//
if (option == 2) {
this.queryParams.areaId = null
this.areaList = null
}
},
//
getMiniProgramTagList() {
getMiniProgramTags().then((Response) => {
this.miniProgramTagList = Response.data
})
},
//
getWecomTagList() {
getWecomTags().then((Response) => {
this.wecomTagList = Response.data
})
},
//
getModeList() {
listAllMode().then((response) => {
if (response.code != 200) {
this.$message.error('模式获取失败')
}
this.modeList = response.data
})
}
}
};

Loading…
Cancel
Save