1
0
Ver Fonte

feat:推送随访

lsw há 8 meses atrás
pai
commit
2b502b10ab

+ 23 - 3
admin-ui/src/components/dtree.vue

@@ -1,9 +1,12 @@
 <template>
   <div>
-    <div class="head-container" style="margin-top: -7px"><el-input v-model="deptName" placeholder="请输入科室名称" clearable prefix-icon="el-icon-search" style="margin-bottom: 10px" /></div>
-    <div class="head-container" style="height: calc(100vh - 203px); overflow-y: auto">
-      <el-tree :data="deptOptions" :props="defaultProps" :current-node-key="value" :expand-on-click-node="false" :default-expanded-keys="idArr" :filter-node-method="filterNode" ref="tree" node-key="id" highlight-current @node-click="handleNodeClick" />
+    <div v-if="tree">
+      <div class="head-container" style="margin-top: -7px"><el-input v-model="deptName" placeholder="请输入科室名称" clearable prefix-icon="el-icon-search" style="margin-bottom: 10px" /></div>
+      <div class="head-container" style="height: calc(100vh - 203px); overflow-y: auto">
+        <el-tree :data="deptOptions" :props="defaultProps" :current-node-key="value" :expand-on-click-node="false" :default-expanded-keys="idArr" :filter-node-method="filterNode" ref="tree" node-key="id" highlight-current @node-click="handleNodeClick" />
+      </div>
     </div>
+    <el-cascader v-else ref="cascader" v-model="deptId" :options="deptOptions" :props="{ value: 'id', label: 'label', checkStrictly: true }" :show-all-levels="false" @change="handleChange"></el-cascader>
   </div>
 </template>
 
@@ -11,6 +14,10 @@
 export default {
   name: 'dtree',
   props: {
+    tree: {
+      type: Boolean,
+      default: true
+    },
     value: {
       type: Number
     },
@@ -22,6 +29,7 @@ export default {
   data() {
     return {
       loading: true,
+      deptId: this.$store.state.user.deptId,
       deptName: undefined,
       deptOptions: [],
       idArr: [100],
@@ -32,12 +40,16 @@ export default {
     };
   },
   watch: {
+    value(val) {
+      this.deptId = val;
+    },
     // 根据名称筛选
     deptName(val) {
       this.$refs.tree.filter(val);
     }
   },
   mounted() {
+    console.log("asd:"+this.$store.state.user.deptId);
     this.ajax({ url: '/system/user/deptTree' }).then((response) => {
       this.deptOptions = response.data;
     });
@@ -52,6 +64,14 @@ export default {
     handleNodeClick(data) {
       this.$emit('input', data.id);
       this.$emit('handleQuery');
+    },
+    //选择
+    handleChange(value) {
+      if (value.length > 0) {
+        this.$refs.cascader.dropDownVisible = false;
+        this.$emit('input', value[value.length - 1]);
+        this.$emit('handleQuery');
+      }
     }
   }
 };

+ 18 - 1
admin-ui/src/store/modules/user.js

@@ -27,9 +27,18 @@ const user = {
     SET_nickName: (state, nickName) => {
       state.nickName = nickName
     },
+    roleName: (state, roleName) => {
+      state.roleName = roleName
+    },
     deptNameStr: (state, deptNameStr) => {
       state.deptNameStr = deptNameStr
     },
+    deptId: (state, deptId) => {
+      state.deptId = deptId
+    },
+    phone: (state, phone) => {
+      state.phone = phone
+    },
     SET_ROLES: (state, roles) => {
       state.roles = roles
     },
@@ -70,7 +79,15 @@ const user = {
           }
           commit('SET_NAME', user.userName)
           commit('SET_nickName', user.nickName)
-          commit('deptNameStr', user.deptNameStr)
+          commit('deptId', user.deptId);
+          commit('phone', user.phonenumber);
+          if(user.dept){
+            commit('deptNameStr', user.dept.deptName||'')
+            commit('deptId', user.dept.deptId);
+          }
+          if(user.roles&&user.roles.length>0){
+             commit('roleName', user.roles[0].roleName);
+          }
           commit('SET_ID', user.userId)
           commit('SET_AVATAR', avatar)
           resolve(res)

+ 1 - 1
admin-ui/src/views/system/user/profile/index.vue

@@ -25,7 +25,7 @@
               </li>
               <li class="list-group-item" v-if="!user.companyId">
                 所属部门
-                <div class="pull-right" v-if="user.dept">{{ user.dept.deptName }} / {{ postGroup }}</div>
+                <div class="pull-right" v-if="user.dept">{{ user.dept.deptName }}</div>
               </li>
               <li class="list-group-item">
                 所属角色

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

@@ -1,44 +1,34 @@
 <template>
   <div class="cmain">
-      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
-        <el-form-item label="问题模板id" prop="templateId">
-          <el-input v-model="form.templateId" placeholder="请输入问题模板id" clearable/>
-        </el-form-item>
-        <el-form-item label="患者id" prop="userId">
-          <el-input v-model="form.userId" placeholder="请输入患者id" clearable/>
-        </el-form-item>
-        <el-form-item label="状态" prop="state">
-          <el-input v-model="form.state" placeholder="请输入状态" clearable/>
-        </el-form-item>
-        <el-form-item label="医生id" prop="doctorId">
-          <el-input v-model="form.doctorId" placeholder="请输入医生id" clearable/>
-        </el-form-item>
-        <el-form-item label="创建人" prop="createBy">
-          <el-input v-model="form.createBy" placeholder="请输入创建人" clearable/>
-        </el-form-item>
-        <el-form-item label="创建时间" prop="createTime">
-          <el-date-picker clearable
-            v-model="form.createTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择创建时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="更新人" prop="updateBy">
-          <el-input v-model="form.updateBy" placeholder="请输入更新人" clearable/>
-        </el-form-item>
-        <el-form-item label="更新时间" prop="updateTime">
-          <el-date-picker clearable
-            v-model="form.updateTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择更新时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="部门ID" prop="deptId">
-          <el-input v-model="form.deptId" placeholder="请输入部门ID" clearable/>
-        </el-form-item>
-      </el-form>
+    <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+      <el-form-item label="问题模板id" prop="templateId">
+        <el-input v-model="form.templateId" placeholder="请输入问题模板id" clearable />
+      </el-form-item>
+      <el-form-item label="患者id" prop="userId">
+        <el-input v-model="form.userId" placeholder="请输入患者id" clearable />
+      </el-form-item>
+      <el-form-item label="状态" prop="state">
+        <el-input v-model="form.state" placeholder="请输入状态" clearable />
+      </el-form-item>
+      <el-form-item label="医生id" prop="doctorId">
+        <el-input v-model="form.doctorId" placeholder="请输入医生id" clearable />
+      </el-form-item>
+      <el-form-item label="创建人" prop="createBy">
+        <el-input v-model="form.createBy" placeholder="请输入创建人" clearable />
+      </el-form-item>
+      <el-form-item label="创建时间" prop="createTime">
+        <el-date-picker clearable v-model="form.createTime" type="date" value-format="yyyy-MM-dd" placeholder="请选择创建时间"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="更新人" prop="updateBy">
+        <el-input v-model="form.updateBy" placeholder="请输入更新人" clearable />
+      </el-form-item>
+      <el-form-item label="更新时间" prop="updateTime">
+        <el-date-picker clearable v-model="form.updateTime" type="date" value-format="yyyy-MM-dd" placeholder="请选择更新时间"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="部门ID" prop="deptId">
+        <el-input v-model="form.deptId" placeholder="请输入部门ID" clearable />
+      </el-form-item>
+    </el-form>
     <div class="mfooter">
       <el-button type="primary" @click="submitForm">确 定</el-button>
       <el-button @click="$layer.close(layerid)">取 消</el-button>
@@ -51,33 +41,32 @@ export default {
   data() {
     return {
       form: {},
-      rules: {
-      }
+      rules: {}
     };
   },
   mounted() {
     if (this.param.id) {
-      this.ajax({ url: '/work/record/detail/' + this.param.id }).then(response => {
+      this.ajax({ url: '/work/record/detail/' + this.param.id }).then((response) => {
         this.form = response.data;
       });
     }
   },
   methods: {
     submitForm() {
-      this.$refs["form"].validate(valid => {
+      this.$refs['form'].validate((valid) => {
         if (valid) {
           if (this.form.id) {
-              this.ajax({method: 'post',url: '/work/record/edit', data: this.form }).then(response => {
-                  this.$modal.msgSuccess("修改成功");
-                  this.$layer.close(this.layerid);
-                  this.$parent.getList();
-              });
+            this.ajax({ method: 'post', url: '/work/record/edit', data: this.form }).then((response) => {
+              this.$modal.msgSuccess('修改成功');
+              this.$layer.close(this.layerid);
+              this.$parent.getList();
+            });
           } else {
-              this.ajax({method: 'post',url: '/work/record/add', data: this.form }).then(response => {
-                  this.$modal.msgSuccess("新增成功");
-                  this.$layer.close(this.layerid);
-                  this.$parent.getList();
-               });
+            this.ajax({ method: 'post', url: '/work/record/add', data: this.form }).then((response) => {
+              this.$modal.msgSuccess('新增成功');
+              this.$layer.close(this.layerid);
+              this.$parent.getList();
+            });
           }
         }
       });

+ 4 - 3
admin-ui/src/views/work/follow/template/index.vue

@@ -1,6 +1,9 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" @submit.native.prevent>
+      <el-form-item label="科室" prop="deptId">
+        <dtree v-model="queryParams.deptId" @handleQuery="handleQuery" :tree="false"></dtree>
+      </el-form-item>
       <el-form-item label="标题" prop="title">
         <el-input v-model="queryParams.title" placeholder="请输入标题" @keyup.enter.native="handleQuery" clearable class="inp" />
       </el-form-item>
@@ -30,7 +33,7 @@
       </el-table-column>
       <el-table-column label="创建人" align="center" prop="createBy" width="130" />
       <el-table-column label="创建时间" align="center" prop="createTime" width="160" />
-      <el-table-column label="所属科室" align="center" prop="deptName" width="130" />
+      <el-table-column label="所属科室" align="center" prop="deptName" width="160" />
       <el-table-column label="操作" align="center" width="200">
         <template slot-scope="scope">
           <el-button size="mini" type="text" icon="el-icon-edit" @click="op('edit', scope.row)" v-hasPermi="['work:template:edit']">修改</el-button>
@@ -54,9 +57,7 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        userId: null,
         title: null,
-        content: null,
         state: null,
         deptId: null,
         orderByColumn: 'id', //排序字段

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

@@ -1,17 +1,17 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" @submit.native.prevent>
+      <el-form-item label="科室" prop="deptId">
+        <dtree v-model="queryParams.deptId" @handleQuery="handleQuery" :tree="false"></dtree>
+      </el-form-item>
       <el-form-item label="标题" prop="title">
         <el-input v-model="queryParams.title" placeholder="请输入标题" @keyup.enter.native="handleQuery" clearable />
       </el-form-item>
-      <el-form-item label="分类" prop="title">
+      <el-form-item label="分类" prop="type">
         <el-select v-model="queryParams.type" placeholder="请选择分类" class="se" clearable>
           <el-option v-for="dict in dict.type.knowledge_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="创建日期">
-        <el-date-picker v-model="dateRange" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
-      </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>
@@ -62,7 +62,7 @@ export default {
         pageSize: 10,
         type: null,
         title: null,
-        deptId: null,
+        deptId: this.$store.state.user.deptId,
         orderByColumn: 'id', //排序字段
         isAsc: 'desc' //排序方式
       }

+ 0 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java

@@ -245,7 +245,6 @@ public class SysUserController extends BaseController {
     /**
      * 获取部门树列表
      */
-    @PreAuthorize("@ss.hasPermi('system:user:list')")
     @GetMapping("/deptTree")
     public AjaxResult deptTree(SysDept dept) {
         return AjaxResult.success(deptService.selectDeptTreeList(dept));

+ 31 - 5
ruoyi-admin/src/main/java/com/ruoyi/web/work/controller/FollowRecordController.java

@@ -6,7 +6,11 @@ import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.web.work.domain.FollowRecord;
+import com.ruoyi.web.work.domain.FollowTemplate;
+import com.ruoyi.web.work.domain.Visit;
 import com.ruoyi.web.work.service.IFollowRecordService;
+import com.ruoyi.web.work.service.IFollowTemplateService;
+import com.ruoyi.web.work.service.IVisitService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -16,6 +20,7 @@ import java.util.List;
 
 /**
  * 回访记录
+ *
  * @author lsw
  * @date 2024-07-18
  */
@@ -25,9 +30,15 @@ public class FollowRecordController extends BaseController {
     @Autowired
     private IFollowRecordService followRecordService;
 
+    @Autowired
+    private IVisitService visitService;
+
+    @Autowired
+    private IFollowTemplateService followTemplateService;
+
     @PreAuthorize("@ss.hasPermi('work:record:list')")
     @GetMapping("/list")
-    public TableDataInfo list(FollowRecord followRecord){
+    public TableDataInfo list(FollowRecord followRecord) {
         startPage();
         List<FollowRecord> list = followRecordService.selectList(followRecord);
         return getDataTable(list);
@@ -35,28 +46,43 @@ public class FollowRecordController extends BaseController {
 
     @PreAuthorize("@ss.hasPermi('work:record:query')")
     @GetMapping(value = "/detail/{id}")
-    public AjaxResult detail(@PathVariable("id") Long id){
+    public AjaxResult detail(@PathVariable("id") Long id) {
         return AjaxResult.success(followRecordService.getById(id));
     }
 
+    @PreAuthorize("@ss.hasPermi('work:record:list')")
+    @GetMapping("/visit/list")
+    public TableDataInfo visitList() {
+        startPage();
+        List<Visit> list = visitService.selectList(new Visit().setDoctorCode(getLoginUser().getUsername()));
+        return getDataTable(list);
+    }
+
+    @PreAuthorize("@ss.hasPermi('work:record:list')")
+    @GetMapping("/template/list")
+    public AjaxResult templateList(FollowTemplate followTemplate) {
+        List<FollowTemplate> list = followTemplateService.selectList(followTemplate);
+        return AjaxResult.success(list);
+    }
+
     @PreAuthorize("@ss.hasPermi('work:record:add')")
     @Log(title = "回访记录", businessType = BusinessType.INSERT)
     @PostMapping("/add")
-    public AjaxResult add(@RequestBody FollowRecord followRecord){
+    public AjaxResult add(@RequestBody FollowRecord followRecord) {
         return toAjax(followRecordService.save(followRecord));
     }
 
     @PreAuthorize("@ss.hasPermi('work:record:edit')")
     @Log(title = "回访记录", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
-    public AjaxResult edit(@RequestBody FollowRecord followRecord){
+    public AjaxResult edit(@RequestBody FollowRecord followRecord) {
         return toAjax(followRecordService.updateById(followRecord));
     }
 
     @PreAuthorize("@ss.hasPermi('work:record:remove')")
     @Log(title = "回访记录", businessType = BusinessType.DELETE)
     @GetMapping("/remove/{ids}")
-    public AjaxResult remove(@PathVariable Long[] ids){
+    public AjaxResult remove(@PathVariable Long[] ids) {
         return toAjax(followRecordService.removeByIds(Arrays.asList(ids)));
     }
 }

+ 8 - 5
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/impl/FollowTemplateServiceImpl.java

@@ -1,12 +1,14 @@
 package com.ruoyi.web.work.service.impl;
 
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.ruoyi.web.work.mapper.FollowTemplateMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.annotation.DataScope;
 import com.ruoyi.web.work.domain.FollowTemplate;
+import com.ruoyi.web.work.mapper.FollowTemplateMapper;
 import com.ruoyi.web.work.service.IFollowTemplateService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * @author lsw
@@ -17,6 +19,7 @@ public class FollowTemplateServiceImpl extends ServiceImpl<FollowTemplateMapper,
     @Autowired
     private FollowTemplateMapper followTemplateMapper;
 
+    @DataScope(deptAlias = "k")
     @Override
     public List<FollowTemplate> selectList(FollowTemplate followTemplate) {
         return followTemplateMapper.selectList(followTemplate);

+ 5 - 3
ruoyi-admin/src/main/resources/mapper/work/FollowTemplateMapper.xml

@@ -11,12 +11,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         FROM
         tb_follow_template k
         LEFT JOIN sys_dept d ON d.dept_id = k.dept_id
-        <where>
+        WHERE 1=1
             <if test="userId != null "> and k.user_id = #{userId}</if>
-            <if test="title != null  and title != ''"> and k.title = #{title}</if>
+            <if test="title != null  and title != ''"> and k.title like concat('%', #{title}, '%')</if>
             <if test="state != null "> and k.state = #{state}</if>
             <if test="deptId != null "> and k.dept_id = #{deptId}</if>
-        </where>
+            <if test="deptId != null and deptId != 0">AND (k.dept_id = #{deptId} OR k.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) ))</if>
+            <!-- 数据范围过滤 -->
+            ${params.dataScope}
     </select>
 
 </mapper>