lsw пре 2 месеци
родитељ
комит
972471411a

+ 3 - 3
admin-ui/src/views/system/role/index.vue

@@ -25,8 +25,8 @@
     </el-row>
     <el-table :data="roleList" border @selection-change="handleSelectionChange" height="calc(100vh - 273px)">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="角色名称" prop="roleName" align="center" width="220"/>
-      <el-table-column label="角色备注" prop="remark" align="center"/>
+      <el-table-column label="角色名称" prop="roleName" align="center" width="220" />
+      <el-table-column label="角色备注" prop="remark" align="center" />
       <el-table-column label="权限字符" prop="roleKey" align="center" :show-overflow-tooltip="true" width="150" />
       <el-table-column label="状态" align="center" width="120">
         <template slot-scope="scope">
@@ -62,7 +62,7 @@
     <!-- 添加或修改角色配置对话框 -->
     <el-dialog :title="title" :visible.sync="open" :close-on-click-modal="false" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="100px">
-        <el-form-item label="角色名称" prop="roleName"><el-input v-model="form.roleName" placeholder="请输入角色名称" :disabled="form.roleName == '医生'" /></el-form-item>
+        <el-form-item label="角色名称" prop="roleName"><el-input v-model="form.roleName" placeholder="请输入角色名称" :disabled="form.roleName == '医生' || form.roleName == '管理员'" /></el-form-item>
         <el-form-item prop="roleKey">
           <span slot="label">
             <el-tooltip content="控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasRole('admin')`)" placement="top"><i class="el-icon-question"></i></el-tooltip>

+ 2 - 2
admin-ui/src/views/work/follow/record/edit.vue

@@ -75,8 +75,8 @@ export default {
       templateList: [],
       op: [],
       rules: {
-        templateName: [{ required: true, message: '不能为空', trigger: 'blur' }],
-        patientList: [{ required: true, message: '不能为空', trigger: 'blur' }],
+        templateName: [{ required: true, message: '请选择模板', trigger: 'blur' }],
+        patientList: [{ required: true, message: '请选择要发送的患者', trigger: 'blur' }],
         op: [{ required: true, message: '不能为空', trigger: 'blur' }]
       }
     };

+ 12 - 4
admin-ui/src/views/work/follow/record/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" @submit.native.prevent>
-      <el-form-item label="科室" prop="deptId">
+      <el-form-item label="科室" prop="deptId" v-if="user.roleName != '医生'">
         <dtree v-model="queryParams.deptId" @handleQuery="handleQuery" :tree="false"></dtree>
       </el-form-item>
       <el-form-item label="患者姓名" prop="patientName">
@@ -16,11 +16,12 @@
       <el-button type="primary" icon="el-icon-plus" :disabled="ids.length > 0" @click="op('add')" v-hasPermi="['work:record:add', 'work:up:add']">{{ queryParams.type == 0 ? '新增提醒' : '新增回访' }}</el-button>
       <el-button type="primary" icon="el-icon-download" @click="handleExport" v-hasPermi="['work:record:export', 'work:up:add']">导出</el-button>
       <el-button type="danger" icon="el-icon-delete" :disabled="ids.length == 0" @click="del" v-hasPermi="['work:record:remove', 'work:up:remove']">删除{{ ids.length > 0 ? '(' + ids.length + ')' : '' }}</el-button>
+      <el-button size="mini" type="text" icon="el-icon-delete" @click="op('recycle')" v-if="user.roleName == '超级管理员' || user.roleName == '管理员'" style="float: right; margin-top: 10px">回收站</el-button>
     </el-row>
 
     <el-table :data="response.rows" border @selection-change="selects" height="calc(100vh - 270px)">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column :label="queryParams.type == 0 ? '提醒标题' : '模板名称'" align="left" prop="templateName" />
+      <el-table-column label="模板名称" align="left" prop="templateName" />
       <el-table-column label="患者姓名" align="center" prop="patientName" width="100" />
       <el-table-column label="住院号" align="center" prop="blh" width="120" />
       <el-table-column :label="queryParams.type == 0 ? '提醒状态' : '随访状态'" align="center" prop="state" width="100">
@@ -43,7 +44,7 @@
         <template slot-scope="scope">
           <el-button size="mini" type="text" icon="el-icon-view" @click="op('detail', scope.row)" v-hasPermi="['work:record:list', 'work:up:list']">查看</el-button>
           <el-button size="mini" type="text" icon="el-icon-edit" @click="op('edit', scope.row)" v-hasPermi="['work:record:edit', 'work:up:edit']" v-if="scope.row.state != 1">编辑</el-button>
-          <el-button size="mini" type="text" icon="el-icon-delete" @click="del(scope.row)" v-hasPermi="['work:record:remove', 'work:up:remove']" v-if="scope.row.state != 1">删除</el-button>
+          <el-button size="mini" type="text" icon="el-icon-delete" @click="del(scope.row)" v-hasPermi="['work:record:remove', 'work:up:remove']" v-if="scope.row.state != 1 || user.roleName == '超级管理员' || user.roleName == '管理员'">删除</el-button>
         </template>
       </el-table-column>
       <template slot="empty">
@@ -57,15 +58,18 @@
 <script>
 import edit from './edit';
 import detail from './detail';
+import recycle from './recycle';
 export default {
   name: 'Record',
   data() {
     return {
+      user: this.$store.state.user,
       queryParams: {
         pageNum: 1,
         pageSize: 10,
         state: null,
         deptId: null,
+        delFlag: 0,
         patientName: null,
         orderByColumn: 'k.id', //排序字段
         isAsc: 'desc' //排序方式
@@ -103,10 +107,14 @@ export default {
       if (tag == 'detail') {
         this.iframe({ obj: detail, param: { id: row.id, detail: true, patientName: row.patientName }, title: '查看详情', width: '35%', height: '85%' });
       }
+      if (tag == 'recycle') {
+        this.iframe({ obj: recycle, param: { type: this.queryParams.type }, title: '回收站', width: '75%', height: '85%' });
+      }
     },
     del(row) {
       this.$confirm('是否确认删除选中数据?', '警告', { type: 'warning' }).then(() => {
-        this.get({ url: '/work/record/remove/' + (row.id || this.ids) }).then((response) => {
+        let ids = row.id ? [row.id] : this.ids;
+        this.ajax({ method: 'post', url: '/work/record/removeOrRevertByIds', data: { ids: ids, op: 1 } }).then((response) => {
           this.$modal.msgSuccess('删除成功');
           this.getList();
         });

+ 109 - 0
admin-ui/src/views/work/follow/record/recycle.vue

@@ -0,0 +1,109 @@
+<template>
+  <div class="cmain">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" @submit.native.prevent>
+      <el-form-item label="科室" prop="deptId" v-if="user.roleName != '医生'">
+        <dtree v-model="queryParams.deptId" @handleQuery="handleQuery" :tree="false"></dtree>
+      </el-form-item>
+      <el-form-item label="患者姓名" prop="patientName">
+        <el-input v-model="queryParams.patientName" placeholder="请输入患者姓名" @keyup.enter.native="handleQuery" clearable class="inp" />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+    <el-row :gutter="10" class="mb8">
+      <el-button type="primary" icon="el-icon-success" :disabled="ids.length == 0" @click="op('revert')" v-hasPermi="['work:record:remove', 'work:up:remove']">还原{{ ids.length > 0 ? '(' + ids.length + ')' : '' }}</el-button>
+      <el-button type="danger" icon="el-icon-delete" :disabled="ids.length == 0" @click="del" v-hasPermi="['work:record:remove', 'work:up:remove']">删除{{ ids.length > 0 ? '(' + ids.length + ')' : '' }}</el-button>
+    </el-row>
+
+    <el-table :data="response.rows" border @selection-change="selects" height="calc(100vh - 270px)">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column :label="queryParams.type == 0 ? '提醒标题' : '模板名称'" align="left" prop="templateName" />
+      <el-table-column label="患者姓名" align="center" prop="patientName" width="100" />
+      <el-table-column label="住院号" align="center" prop="blh" width="120" />
+      <el-table-column label="创建人" align="center" prop="createBy" width="120" />
+      <el-table-column label="创建时间" align="center" prop="createTime" width="160" />
+      <el-table-column label="删除时间" align="center" prop="updateTime" width="160" />
+      <el-table-column label="所属科室" align="center" prop="deptName" width="160" />
+      <el-table-column label="操作" align="center" width="180">
+        <template slot-scope="scope">
+          <el-button size="mini" type="text" icon="el-icon-view" @click="op('detail', scope.row)" v-hasPermi="['work:record:list', 'work:up:list']">查看</el-button>
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="op('revert', scope.row)" v-hasPermi="['work:record:edit', 'work:up:edit']">还原</el-button>
+          <el-button size="mini" type="text" icon="el-icon-delete" @click="del(scope.row)" v-hasPermi="['work:record:remove', 'work:up:remove']">删除</el-button>
+        </template>
+      </el-table-column>
+      <template slot="empty">
+        <el-empty></el-empty>
+      </template>
+    </el-table>
+    <pagination v-if="response.total > 0" :total="response.total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
+  </div>
+</template>
+
+<script>
+import detail from './detail';
+export default {
+  name: 'recycle',
+  data() {
+    return {
+      user: this.$store.state.user,
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        state: null,
+        deptId: null,
+        delFlag: 1,
+        patientName: null,
+        orderByColumn: 'k.id', //排序字段
+        isAsc: 'desc' //排序方式
+      }
+    };
+  },
+  mounted() {
+    this.queryParams.type = this.param.type;
+    this.getList();
+  },
+  methods: {
+    getList() {
+      this.ajax({ url: '/work/record/list', data: this.queryParams }).then((response) => {
+        this.response = response;
+      });
+    },
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    resetQuery() {
+      this.resetForm('queryForm');
+      this.handleQuery();
+    },
+    selects(rows) {
+      this.ids = rows.map((item) => item.id);
+    },
+    op(tag, row = {}) {
+      if (tag == 'detail') {
+        this.iframe({ obj: detail, param: { id: row.id, detail: true, patientName: row.patientName }, title: '查看详情', width: '35%', height: '85%' });
+      }
+      if (tag == 'revert') {
+        this.$confirm('是否确认还原选中数据?', '警告', { type: 'warning' }).then(() => {
+          let ids = row.id ? [row.id] : this.ids;
+          this.ajax({ method: 'post', url: '/work/record/removeOrRevertByIds', data: { ids: ids, op: 0 } }).then((response) => {
+            this.$modal.msgSuccess('还原成功');
+            this.getList();
+            this.$parent.getList();
+          });
+        });
+      }
+    },
+    del(row) {
+      this.$confirm('是否确认删除选中数据? 删除后无法恢复', '警告', { type: 'warning' }).then(() => {
+        this.get({ url: '/work/record/remove/' + (row.id || this.ids) }).then((response) => {
+          this.$modal.msgSuccess('删除成功');
+          this.getList();
+        });
+      });
+    }
+  }
+};
+</script>

+ 9 - 39
admin-ui/src/views/work/knowledge/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" @submit.native.prevent>
-      <el-form-item label="科室" prop="deptId">
+      <el-form-item label="科室" prop="deptId" v-if="user.roleName != '医生'">
         <dtree v-model="queryParams.deptId" @handleQuery="handleQuery" :tree="false"></dtree>
       </el-form-item>
       <el-form-item label="标题" prop="title">
@@ -14,7 +14,7 @@
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
+        <el-button icon="el-icon-refresh" @click="resetQuery">重置{{ isAdmin }}</el-button>
       </el-form-item>
     </el-form>
     <el-row :gutter="10" class="mb8">
@@ -45,26 +45,8 @@
       <el-table-column label="所属科室" align="center" prop="deptName" width="160" />
       <el-table-column label="操作" align="center" width="200">
         <template slot-scope="scope">
-          <el-button
-            v-if="scope.row.userId === currentUserId || isAdmin"
-          size="mini"
-          type="text"
-          icon="el-icon-edit"
-          @click="op('edit', scope.row)"
-          v-hasPermi="['work:knowledge:edit']"
-          >
-          修改
-          </el-button>
-          <el-button
-            v-if="scope.row.userId === currentUserId || isAdmin"
-          size="mini"
-          type="text"
-          icon="el-icon-delete"
-          @click="del(scope.row)"
-          v-hasPermi="['work:knowledge:remove']"
-          >
-          删除
-          </el-button>
+          <el-button v-if="scope.row.userId === currentUserId || isAdmin" size="mini" type="text" icon="el-icon-edit" @click="op('edit', scope.row)" v-hasPermi="['work:knowledge:edit']">修改</el-button>
+          <el-button v-if="scope.row.userId === currentUserId || isAdmin" size="mini" type="text" icon="el-icon-delete" @click="del(scope.row)" v-hasPermi="['work:knowledge:remove']">删除</el-button>
         </template>
       </el-table-column>
 
@@ -78,41 +60,29 @@
 
 <script>
 import edit from './edit';
-import {getInfo} from "@/api/login";
+import { getInfo } from '@/api/login';
 export default {
   dicts: ['knowledge_type'],
   name: 'Knowledge',
   data() {
     return {
+      user: this.$store.state.user,
       queryParams: {
         pageNum: 1,
         pageSize: 10,
         type: null,
         title: null,
         orderByColumn: 'id', //排序字段
-        isAsc: 'desc', //排序方式
+        isAsc: 'desc' //排序方式
       },
-      isAdmin: false,
-      currentUserId:null
+      isAdmin: this.$store.state.user.roleName == '超级管理员' ? true : false,
+      currentUserId: this.$store.state.user.id
     };
   },
   created() {
     this.getList();
   },
-  mounted() {
-    this.fetchCurrentUser(); // 获取当前用户信息
-  },
   methods: {
-    fetchCurrentUser() {
-      getInfo()
-        .then(response => {
-          this.currentUserId = response.user.userId;
-          this.isAdmin = response.user.admin;
-        })
-        .catch(error => {
-          console.error('获取用户信息失败:', error);
-        });
-    },
     getList() {
       if (this.dateRange) {
         this.queryParams.dateBegin = this.dateRange[0];

+ 5 - 0
app/pages/follow/remind.vue

@@ -9,6 +9,8 @@
 				<view class="desc">{{ item.op }}</view>
 				<view class="desc">
 					<text>{{ item.createTime }}</text>
+					<text v-if="item.state == 0" class="state">未读</text>
+					<text v-if="item.state == 1" class="state" style="color: #4581fb">已阅</text>
 					<text class="look">查看详情</text>
 				</view>
 			</view>
@@ -120,6 +122,9 @@ export default {
 			font-size: 13px;
 			padding-top: 10px;
 			color: $font-c;
+			.state {
+				padding-left: 15px;
+			}
 			.look {
 				float: right;
 				margin-top: 0px;

+ 6 - 6
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java

@@ -109,7 +109,7 @@ public class SysRoleController extends BaseController {
         role.setUpdateBy(getUsername());
 
         if (roleService.updateRole(role) > 0) {
-            permissionService.refreshRolePermission(role.getRoleId(),role.getDataScope());
+            permissionService.refreshRolePermission(role.getRoleId(), role.getDataScope());
             return AjaxResult.success();
         }
         return AjaxResult.error("修改角色'" + role.getRoleName() + "'失败,请联系管理员");
@@ -124,9 +124,9 @@ public class SysRoleController extends BaseController {
     public AjaxResult dataScope(@RequestBody SysRole role) {
         roleService.checkRoleAllowed(role);
         roleService.checkRoleDataScope(role.getRoleId());
-        int row=roleService.authDataScope(role);
-        if(row>0){
-            permissionService.refreshRolePermission(role.getRoleId(),role.getDataScope());
+        int row = roleService.authDataScope(role);
+        if (row > 0) {
+            permissionService.refreshRolePermission(role.getRoleId(), role.getDataScope());
         }
         return toAjax(row);
     }
@@ -155,8 +155,8 @@ public class SysRoleController extends BaseController {
     @Log(title = "角色管理", businessType = BusinessType.DELETE)
     @DeleteMapping("/{roleIds}")
     public AjaxResult remove(@PathVariable Long[] roleIds) {
-        if (Arrays.asList(roleIds).contains(4l)) {
-            return AjaxResult.error("不支持删除医生这个角色");
+        if (Arrays.asList(roleIds).contains(4l) || Arrays.asList(roleIds).contains(7l) || Arrays.asList(roleIds).contains(8l)) {
+            return AjaxResult.error("不支持删除医生和科室主任和管理员这个角色");
         }
         int row = roleService.deleteRoleByIds(roleIds);
         if (row > 0) {

+ 4 - 3
ruoyi-admin/src/main/java/com/ruoyi/web/work/controller/FollowRecordController.java

@@ -9,6 +9,7 @@ import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.web.work.domain.FollowRecord;
 import com.ruoyi.web.work.domain.FollowTemplate;
+import com.ruoyi.web.work.domain.dto.RemoveOrRevertDto;
 import com.ruoyi.web.work.domain.dto.VisitDto;
 import com.ruoyi.web.work.domain.vo.VisitVoList;
 import com.ruoyi.web.work.service.IFollowRecordService;
@@ -89,9 +90,9 @@ public class FollowRecordController extends BaseController {
 
     @PreAuthorize("@ss.hasAnyPermi('work:record:remove,work:up:remove')")
     @Log(title = "回访记录", businessType = BusinessType.DELETE)
-    @GetMapping("/removeOrRevertByIds")
-    public AjaxResult removeOrRevertByIds(Long[] ids, int op) {
-        return followRecordService.removeOrRevertByIds(ids, op);
+    @PostMapping("/removeOrRevertByIds")
+    public AjaxResult removeOrRevertByIds(@Validated @RequestBody RemoveOrRevertDto dto) {
+        return followRecordService.removeOrRevertByIds(dto);
     }
 
     @Log(title = "回访记录", businessType = BusinessType.EXPORT)

+ 22 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/dto/RemoveOrRevertDto.java

@@ -0,0 +1,22 @@
+package com.ruoyi.web.work.domain.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+
+@Data
+public class RemoveOrRevertDto {
+
+    @NotNull(message = "不能为空")
+    @Min(value = 0, message = "只能是删除或者还原")
+    @Max(value = 1, message = "只能是删除或者还原")
+    private Integer op;
+
+    @NotNull(message = "ids不能为空")
+    @Size(min = 1, message = "ids不能为空")
+    private Long[] ids;
+
+}

+ 2 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/IFollowRecordService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.web.work.domain.FollowRecord;
 import com.ruoyi.web.work.domain.dto.FollowRecordDto;
+import com.ruoyi.web.work.domain.dto.RemoveOrRevertDto;
 import com.ruoyi.web.work.domain.dto.VisitDto;
 import com.ruoyi.web.work.domain.vo.FollowRecordVoList;
 import com.ruoyi.web.work.domain.vo.VisitVoList;
@@ -79,5 +80,5 @@ public interface IFollowRecordService extends IService<FollowRecord> {
      *
      * @return
      */
-    AjaxResult removeOrRevertByIds(Long[] ids, int op);
+    AjaxResult removeOrRevertByIds(RemoveOrRevertDto dto);
 }

+ 5 - 4
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/impl/FollowRecordServiceImpl.java

@@ -13,6 +13,7 @@ import com.ruoyi.web.work.api.util.AppUtil;
 import com.ruoyi.web.work.domain.FollowRecord;
 import com.ruoyi.web.work.domain.User;
 import com.ruoyi.web.work.domain.dto.FollowRecordDto;
+import com.ruoyi.web.work.domain.dto.RemoveOrRevertDto;
 import com.ruoyi.web.work.domain.dto.VisitDto;
 import com.ruoyi.web.work.domain.vo.FollowRecordVoList;
 import com.ruoyi.web.work.domain.vo.VisitVoList;
@@ -153,16 +154,16 @@ public class FollowRecordServiceImpl extends ServiceImpl<FollowRecordMapper, Fol
     }
 
     @Override
-    public AjaxResult removeOrRevertByIds(Long[] ids, int op) {
+    public AjaxResult removeOrRevertByIds(RemoveOrRevertDto dto) {
         List<FollowRecord> list = new ArrayList();
-        for (Long id : ids) {
+        for (Long id : dto.getIds()) {
             FollowRecord record = new FollowRecord();
             record.setId(id);
-            record.setDelFlag(op);
+            record.setDelFlag(dto.getOp());
             list.add(record);
         }
         if (!updateBatchById(list)) {
-            throw new ServiceException("批量删除失败");
+            throw new ServiceException("批量操作失败");
         }
         return AjaxResult.success();
     }

+ 3 - 4
ruoyi-admin/src/main/resources/mapper/work/FollowRecordMapper.xml

@@ -12,6 +12,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         k.state,
         k.create_time,
         k.create_by,
+        k.update_time,
         k.return_time,
         d.dept_name AS deptName,
         p.blh
@@ -21,6 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN tb_patient p ON p.id=k.patient_id
         WHERE 1=1
             <if test="type != null "> and k.type = #{type}</if>
+            <if test="delFlag != null "> and k.del_flag = #{delFlag}</if>
             <if test="patientName != null  and patientName != ''"> AND k.patient_name like concat('%', #{patientName}, '%')</if>
             <if test="patientId != null "> AND k.patient_id = #{patientId}</if>
             <if test="userId != null "> and k.user_id = #{userId}</if>
@@ -46,15 +48,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN sys_dept d ON d.dept_id = r.dept_id
         LEFT JOIN sys_user u ON u.user_id = r.user_id
         WHERE r.patient_id = #{patientId}
+        AND r.del_flag =0
             <if test="type != null "> AND r.type = #{type}</if>
             <if test="state != null "> AND r.state = #{state}</if>
         ORDER BY r.id DESC
     </select>
 
-    <update id="removeByIds">
-
-    </update>
-
     <select id="selectVisitList" resultType="com.ruoyi.web.work.domain.vo.VisitVoList">
         SELECT
             v.pat_id id,

+ 2 - 2
ruoyi-admin/src/main/resources/mapper/work/UserMapper.xml

@@ -28,8 +28,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectUser" resultType="com.ruoyi.web.work.domain.User">
         SELECT
         u.*,
-        ( SELECT COUNT( d.id ) FROM tb_follow_record d WHERE d.patient_id = u.patient_id AND d.type=0 AND d.state=0) AS remind,/*复诊未读消息*/
-        ( SELECT COUNT( d.id ) FROM tb_follow_record d WHERE d.patient_id = u.patient_id AND d.type=1 AND d.state=0) AS follow /*随访未填消息*/
+        ( SELECT COUNT( d.id ) FROM tb_follow_record d WHERE d.patient_id = u.patient_id AND d.type=0 AND d.state=0 AND d.del_flag =0) AS remind,/*复诊未读消息*/
+        ( SELECT COUNT( d.id ) FROM tb_follow_record d WHERE d.patient_id = u.patient_id AND d.type=1 AND d.state=0 AND d.del_flag =0) AS follow /*随访未填消息*/
         FROM
         tb_user u
         WHERE