瀏覽代碼

处理文件分享相关

wukai 2 年之前
父節點
當前提交
a59372a51a
共有 22 個文件被更改,包括 957 次插入446 次删除
  1. 46 20
      lzga-modules/lzga-doc/src/main/java/com/jjt/doc/controller/DocShareAccepterController.java
  2. 14 20
      lzga-modules/lzga-doc/src/main/java/com/jjt/doc/controller/DocShareController.java
  3. 3 0
      lzga-modules/lzga-doc/src/main/java/com/jjt/doc/domain/DocInfoDir.java
  4. 17 13
      lzga-modules/lzga-doc/src/main/java/com/jjt/doc/domain/DocShare.java
  5. 108 21
      lzga-modules/lzga-doc/src/main/java/com/jjt/doc/domain/DocShareAccepter.java
  6. 3 0
      lzga-modules/lzga-doc/src/main/java/com/jjt/doc/domain/DocTagRela.java
  7. 24 16
      lzga-modules/lzga-doc/src/main/java/com/jjt/doc/mapper/DocShareAccepterMapper.java
  8. 7 7
      lzga-modules/lzga-doc/src/main/java/com/jjt/doc/mapper/DocShareMapper.java
  9. 40 16
      lzga-modules/lzga-doc/src/main/java/com/jjt/doc/service/IDocShareAccepterService.java
  10. 7 7
      lzga-modules/lzga-doc/src/main/java/com/jjt/doc/service/IDocShareService.java
  11. 60 21
      lzga-modules/lzga-doc/src/main/java/com/jjt/doc/service/impl/DocShareAccepterServiceImpl.java
  12. 27 21
      lzga-modules/lzga-doc/src/main/java/com/jjt/doc/service/impl/DocShareServiceImpl.java
  13. 75 26
      lzga-modules/lzga-doc/src/main/resources/mapper/doc/DocShareAccepterMapper.xml
  14. 18 15
      lzga-modules/lzga-doc/src/main/resources/mapper/doc/DocShareMapper.xml
  15. 28 0
      lzga-modules/lzga-doc/src/test/java/Test.java
  16. 4 4
      lzga-ui/src/api/doc/share.js
  17. 50 4
      lzga-ui/src/api/doc/shareAccepter.js
  18. 28 15
      lzga-ui/src/router/index.js
  19. 6 3
      lzga-ui/src/views/doc/info/index.vue
  20. 59 22
      lzga-ui/src/views/doc/share/index.vue
  21. 203 195
      lzga-ui/src/views/doc/shareAccepter/index.vue
  22. 130 0
      lzga-ui/src/views/doc/shareAccepter/selectUser.vue

+ 46 - 20
lzga-modules/lzga-doc/src/main/java/com/jjt/doc/controller/DocShareAccepterController.java

@@ -4,6 +4,8 @@ import java.util.List;
 import java.io.IOException;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+
+import com.jjt.doc.domain.DocGroupUser;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
@@ -24,24 +26,53 @@ import com.jjt.common.core.web.page.TableDataInfo;
 
 /**
  * 文档分享接收人Controller
- * 
+ *
  * @author wukai
- * @date 2023-03-27
+ * @date 2023-04-26
  */
 @RestController
 @RequestMapping("/shareAccepter")
-public class DocShareAccepterController extends BaseController
-{
+public class DocShareAccepterController extends BaseController {
     @Resource
     private IDocShareAccepterService docShareAccepterService;
 
     /**
+     * 查询未分配成员列表
+     */
+    @RequiresPermissions("doc:shareAccepter:list")
+    @GetMapping("/unallocatedList")
+    public TableDataInfo unallocatedList(DocShareAccepter docShareAccepter) {
+        startPage();
+        List<DocShareAccepter> list = docShareAccepterService.selectUnallocatedList(docShareAccepter);
+        return getDataTable(list);
+    }
+
+    /**
+     * 分配分组成员
+     */
+    @RequiresPermissions("doc:shareAccepter:list")
+    @Log(title = "分组成员", businessType = BusinessType.GRANT)
+    @PutMapping("/selectAll")
+    public AjaxResult selectShareUserAll(Long docId, Long[] userIds) {
+        return toAjax(docShareAccepterService.insertShareAccepters(docId, userIds));
+    }
+
+    /**
+     * 批量取消授权用户
+     */
+    @RequiresPermissions("doc:shareAccepter:list")
+    @Log(title = "分组成员", businessType = BusinessType.GRANT)
+    @PutMapping("/cancelAll")
+    public AjaxResult cancelShareUserAll(Long docId, Long[] userIds) {
+        return toAjax(docShareAccepterService.deleteDocShareAccepters(docId, userIds));
+    }
+
+    /**
      * 查询文档分享接收人列表
      */
     @RequiresPermissions("doc:shareAccepter:list")
     @GetMapping("/list")
-    public TableDataInfo list(DocShareAccepter docShareAccepter)
-    {
+    public TableDataInfo list(DocShareAccepter docShareAccepter) {
         startPage();
         List<DocShareAccepter> list = docShareAccepterService.selectDocShareAccepterList(docShareAccepter);
         return getDataTable(list);
@@ -53,8 +84,7 @@ public class DocShareAccepterController extends BaseController
     @RequiresPermissions("doc:shareAccepter:export")
     @Log(title = "文档分享接收人", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, DocShareAccepter docShareAccepter)
-    {
+    public void export(HttpServletResponse response, DocShareAccepter docShareAccepter) {
         List<DocShareAccepter> list = docShareAccepterService.selectDocShareAccepterList(docShareAccepter);
         ExcelUtil<DocShareAccepter> util = new ExcelUtil<DocShareAccepter>(DocShareAccepter.class);
         util.exportExcel(response, list, "文档分享接收人数据");
@@ -64,10 +94,9 @@ public class DocShareAccepterController extends BaseController
      * 获取文档分享接收人详细信息
      */
     @RequiresPermissions("doc:shareAccepter:query")
-    @GetMapping(value = "/{shareId}")
-    public AjaxResult getInfo(@PathVariable("shareId") Long shareId)
-    {
-        return success(docShareAccepterService.selectDocShareAccepterByShareId(shareId));
+    @GetMapping(value = "/{docId}")
+    public AjaxResult getInfo(@PathVariable("docId") Long docId) {
+        return success(docShareAccepterService.selectDocShareAccepterByDocId(docId));
     }
 
     /**
@@ -76,8 +105,7 @@ public class DocShareAccepterController extends BaseController
     @RequiresPermissions("doc:shareAccepter:add")
     @Log(title = "文档分享接收人", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody DocShareAccepter docShareAccepter)
-    {
+    public AjaxResult add(@RequestBody DocShareAccepter docShareAccepter) {
         return toAjax(docShareAccepterService.insertDocShareAccepter(docShareAccepter));
     }
 
@@ -87,8 +115,7 @@ public class DocShareAccepterController extends BaseController
     @RequiresPermissions("doc:shareAccepter:edit")
     @Log(title = "文档分享接收人", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody DocShareAccepter docShareAccepter)
-    {
+    public AjaxResult edit(@RequestBody DocShareAccepter docShareAccepter) {
         return toAjax(docShareAccepterService.updateDocShareAccepter(docShareAccepter));
     }
 
@@ -97,9 +124,8 @@ public class DocShareAccepterController extends BaseController
      */
     @RequiresPermissions("doc:shareAccepter:remove")
     @Log(title = "文档分享接收人", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{shareIds}")
-    public AjaxResult remove(@PathVariable Long[] shareIds)
-    {
-        return toAjax(docShareAccepterService.deleteDocShareAccepterByShareIds(shareIds));
+    @DeleteMapping("/{docIds}")
+    public AjaxResult remove(@PathVariable Long[] docIds) {
+        return toAjax(docShareAccepterService.deleteDocShareAccepterByDocIds(docIds));
     }
 }

+ 14 - 20
lzga-modules/lzga-doc/src/main/java/com/jjt/doc/controller/DocShareController.java

@@ -4,6 +4,7 @@ import java.util.List;
 import java.io.IOException;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
@@ -24,14 +25,13 @@ import com.jjt.common.core.web.page.TableDataInfo;
 
 /**
  * 文档分享Controller
- * 
+ *
  * @author wukai
- * @date 2023-03-27
+ * @date 2023-04-26
  */
 @RestController
 @RequestMapping("/share")
-public class DocShareController extends BaseController
-{
+public class DocShareController extends BaseController {
     @Resource
     private IDocShareService docShareService;
 
@@ -40,8 +40,7 @@ public class DocShareController extends BaseController
      */
     @RequiresPermissions("doc:share:list")
     @GetMapping("/list")
-    public TableDataInfo list(DocShare docShare)
-    {
+    public TableDataInfo list(DocShare docShare) {
         startPage();
         List<DocShare> list = docShareService.selectDocShareList(docShare);
         return getDataTable(list);
@@ -53,8 +52,7 @@ public class DocShareController extends BaseController
     @RequiresPermissions("doc:share:export")
     @Log(title = "文档分享", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, DocShare docShare)
-    {
+    public void export(HttpServletResponse response, DocShare docShare) {
         List<DocShare> list = docShareService.selectDocShareList(docShare);
         ExcelUtil<DocShare> util = new ExcelUtil<DocShare>(DocShare.class);
         util.exportExcel(response, list, "文档分享数据");
@@ -64,10 +62,9 @@ public class DocShareController extends BaseController
      * 获取文档分享详细信息
      */
     @RequiresPermissions("doc:share:query")
-    @GetMapping(value = "/{shareId}")
-    public AjaxResult getInfo(@PathVariable("shareId") Long shareId)
-    {
-        return success(docShareService.selectDocShareByShareId(shareId));
+    @GetMapping(value = "/{docId}")
+    public AjaxResult getInfo(@PathVariable("docId") Long docId) {
+        return success(docShareService.selectDocShareByDocId(docId));
     }
 
     /**
@@ -76,8 +73,7 @@ public class DocShareController extends BaseController
     @RequiresPermissions("doc:share:add")
     @Log(title = "文档分享", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody DocShare docShare)
-    {
+    public AjaxResult add(@RequestBody DocShare docShare) {
         return toAjax(docShareService.insertDocShare(docShare));
     }
 
@@ -87,8 +83,7 @@ public class DocShareController extends BaseController
     @RequiresPermissions("doc:share:edit")
     @Log(title = "文档分享", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody DocShare docShare)
-    {
+    public AjaxResult edit(@RequestBody DocShare docShare) {
         return toAjax(docShareService.updateDocShare(docShare));
     }
 
@@ -97,9 +92,8 @@ public class DocShareController extends BaseController
      */
     @RequiresPermissions("doc:share:remove")
     @Log(title = "文档分享", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{shareIds}")
-    public AjaxResult remove(@PathVariable Long[] shareIds)
-    {
-        return toAjax(docShareService.deleteDocShareByShareIds(shareIds));
+    @DeleteMapping("/{docIds}")
+    public AjaxResult remove(@PathVariable Long[] docIds) {
+        return toAjax(docShareService.deleteDocShareByDocIds(docIds));
     }
 }

+ 3 - 0
lzga-modules/lzga-doc/src/main/java/com/jjt/doc/domain/DocInfoDir.java

@@ -1,5 +1,7 @@
 package com.jjt.doc.domain;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.jjt.common.core.annotation.Excel;
@@ -17,6 +19,7 @@ public class DocInfoDir extends BaseEntity {
     /**
      * 文档ID
      */
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long docId;
 
     /**

+ 17 - 13
lzga-modules/lzga-doc/src/main/java/com/jjt/doc/domain/DocShare.java

@@ -1,5 +1,7 @@
 package com.jjt.doc.domain;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.jjt.common.core.annotation.Excel;
@@ -9,19 +11,21 @@ import com.jjt.common.core.web.domain.BaseEntity;
  * 文档分享对象 doc_share
  * 
  * @author wukai
- * @date 2023-03-27
+ * @date 2023-04-26
  */
 public class DocShare extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
 
-    /** 共享ID */
-    private Long shareId;
-
     /** 文档ID */
     @Excel(name = "文档ID")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long docId;
 
+    /** 文档年份 */
+    @Excel(name = "文档年份")
+    private Long docYear;
+
     /** 是否机密;1.机密  非1.一般 */
     @Excel(name = "是否机密;1.机密  非1.一般")
     private String isSecret;
@@ -34,23 +38,23 @@ public class DocShare extends BaseEntity
     @Excel(name = "逻辑删除标志;1/非1")
     private String isDel;
 
-    public void setShareId(Long shareId) 
+    public void setDocId(Long docId) 
     {
-        this.shareId = shareId;
+        this.docId = docId;
     }
 
-    public Long getShareId() 
+    public Long getDocId() 
     {
-        return shareId;
+        return docId;
     }
-    public void setDocId(Long docId) 
+    public void setDocYear(Long docYear) 
     {
-        this.docId = docId;
+        this.docYear = docYear;
     }
 
-    public Long getDocId() 
+    public Long getDocYear() 
     {
-        return docId;
+        return docYear;
     }
     public void setIsSecret(String isSecret) 
     {
@@ -83,8 +87,8 @@ public class DocShare extends BaseEntity
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("shareId", getShareId())
             .append("docId", getDocId())
+            .append("docYear", getDocYear())
             .append("isSecret", getIsSecret())
             .append("onlyOneTime", getOnlyOneTime())
             .append("createBy", getCreateBy())

+ 108 - 21
lzga-modules/lzga-doc/src/main/java/com/jjt/doc/domain/DocShareAccepter.java

@@ -1,5 +1,8 @@
 package com.jjt.doc.domain;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.jjt.common.core.annotation.Excel;
@@ -7,44 +10,128 @@ import com.jjt.common.core.web.domain.BaseEntity;
 
 /**
  * 文档分享接收人对象 doc_share_accepter
- * 
+ *
  * @author wukai
- * @date 2023-03-27
+ * @date 2023-04-26
  */
-public class DocShareAccepter extends BaseEntity
-{
+public class DocShareAccepter extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
-    /** 共享ID */
-    private Long shareId;
+    /**
+     * 文档ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long docId;
 
-    /** 用户ID */
+    /**
+     * 用户ID
+     */
     private Long userId;
 
-    public void setShareId(Long shareId) 
-    {
-        this.shareId = shareId;
+    /**
+     * 用户姓名
+     */
+    @TableField(exist = false)
+    private String userName;
+    /**
+     * 部门ID
+     */
+    @TableField(exist = false)
+    private Long deptId;
+
+    /**
+     * 用户昵称
+     */
+    @TableField(exist = false)
+    private String nickName;
+
+    /**
+     * 用户邮箱
+     */
+    @TableField(exist = false)
+    private String email;
+
+    /**
+     * 手机号码
+     */
+    @TableField(exist = false)
+    private String phonenumber;
+
+    /**
+     * 帐号状态(0正常 1停用)
+     */
+    @TableField(exist = false)
+    private String status;
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public Long getDeptId() {
+        return deptId;
+    }
+
+    public void setDeptId(Long deptId) {
+        this.deptId = deptId;
+    }
+
+    public String getNickName() {
+        return nickName;
+    }
+
+    public void setNickName(String nickName) {
+        this.nickName = nickName;
     }
 
-    public Long getShareId() 
-    {
-        return shareId;
+    public String getEmail() {
+        return email;
     }
-    public void setUserId(Long userId) 
-    {
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getPhonenumber() {
+        return phonenumber;
+    }
+
+    public void setPhonenumber(String phonenumber) {
+        this.phonenumber = phonenumber;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public void setDocId(Long docId) {
+        this.docId = docId;
+    }
+
+    public Long getDocId() {
+        return docId;
+    }
+
+    public void setUserId(Long userId) {
         this.userId = userId;
     }
 
-    public Long getUserId() 
-    {
+    public Long getUserId() {
         return userId;
     }
 
     @Override
     public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("shareId", getShareId())
-            .append("userId", getUserId())
-            .toString();
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("docId", getDocId())
+                .append("userId", getUserId())
+                .toString();
     }
 }

+ 3 - 0
lzga-modules/lzga-doc/src/main/java/com/jjt/doc/domain/DocTagRela.java

@@ -1,5 +1,7 @@
 package com.jjt.doc.domain;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.jjt.common.core.annotation.Excel;
@@ -17,6 +19,7 @@ public class DocTagRela extends BaseEntity {
     /**
      * 文档ID
      */
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long docId;
 
     /**

+ 24 - 16
lzga-modules/lzga-doc/src/main/java/com/jjt/doc/mapper/DocShareAccepterMapper.java

@@ -1,27 +1,29 @@
 package com.jjt.doc.mapper;
 
 import java.util.List;
+
+import com.jjt.doc.domain.DocGroupUser;
 import com.jjt.doc.domain.DocShareAccepter;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 文档分享接收人Mapper接口
- * 
+ *
  * @author wukai
- * @date 2023-03-27
+ * @date 2023-04-26
  */
-public interface DocShareAccepterMapper 
-{
+public interface DocShareAccepterMapper {
     /**
      * 查询文档分享接收人
-     * 
-     * @param shareId 文档分享接收人主键
+     *
+     * @param docId 文档分享接收人主键
      * @return 文档分享接收人
      */
-    public DocShareAccepter selectDocShareAccepterByShareId(Long shareId);
+    public DocShareAccepter selectDocShareAccepterByDocId(Long docId);
 
     /**
      * 查询文档分享接收人列表
-     * 
+     *
      * @param docShareAccepter 文档分享接收人
      * @return 文档分享接收人集合
      */
@@ -29,7 +31,7 @@ public interface DocShareAccepterMapper
 
     /**
      * 新增文档分享接收人
-     * 
+     *
      * @param docShareAccepter 文档分享接收人
      * @return 结果
      */
@@ -37,7 +39,7 @@ public interface DocShareAccepterMapper
 
     /**
      * 修改文档分享接收人
-     * 
+     *
      * @param docShareAccepter 文档分享接收人
      * @return 结果
      */
@@ -45,17 +47,23 @@ public interface DocShareAccepterMapper
 
     /**
      * 删除文档分享接收人
-     * 
-     * @param shareId 文档分享接收人主键
+     *
+     * @param docId 文档分享接收人主键
      * @return 结果
      */
-    public int deleteDocShareAccepterByShareId(Long shareId);
+    public int deleteDocShareAccepterByDocId(Long docId);
 
     /**
      * 批量删除文档分享接收人
-     * 
-     * @param shareIds 需要删除的数据主键集合
+     *
+     * @param docIds 需要删除的数据主键集合
      * @return 结果
      */
-    public int deleteDocShareAccepterByShareIds(Long[] shareIds);
+    public int deleteDocShareAccepterByDocIds(Long[] docIds);
+
+    public int deleteDocShareAccepters(@Param("docId") Long docId, @Param("userIds") Long[] userIds);
+
+    public int batchShareAccepters(List<DocShareAccepter> list);
+
+    public List<DocShareAccepter> selectUnallocatedList(DocShareAccepter shareAccepter);
 }

+ 7 - 7
lzga-modules/lzga-doc/src/main/java/com/jjt/doc/mapper/DocShareMapper.java

@@ -7,17 +7,17 @@ import com.jjt.doc.domain.DocShare;
  * 文档分享Mapper接口
  * 
  * @author wukai
- * @date 2023-03-27
+ * @date 2023-04-26
  */
 public interface DocShareMapper 
 {
     /**
      * 查询文档分享
      * 
-     * @param shareId 文档分享主键
+     * @param docId 文档分享主键
      * @return 文档分享
      */
-    public DocShare selectDocShareByShareId(Long shareId);
+    public DocShare selectDocShareByDocId(Long docId);
 
     /**
      * 查询文档分享列表
@@ -46,16 +46,16 @@ public interface DocShareMapper
     /**
      * 删除文档分享
      * 
-     * @param shareId 文档分享主键
+     * @param docId 文档分享主键
      * @return 结果
      */
-    public int deleteDocShareByShareId(Long shareId);
+    public int deleteDocShareByDocId(Long docId);
 
     /**
      * 批量删除文档分享
      * 
-     * @param shareIds 需要删除的数据主键集合
+     * @param docIds 需要删除的数据主键集合
      * @return 结果
      */
-    public int deleteDocShareByShareIds(Long[] shareIds);
+    public int deleteDocShareByDocIds(Long[] docIds);
 }

+ 40 - 16
lzga-modules/lzga-doc/src/main/java/com/jjt/doc/service/IDocShareAccepterService.java

@@ -1,27 +1,27 @@
 package com.jjt.doc.service;
 
 import java.util.List;
+
 import com.jjt.doc.domain.DocShareAccepter;
 
 /**
  * 文档分享接收人Service接口
- * 
+ *
  * @author wukai
- * @date 2023-03-27
+ * @date 2023-04-26
  */
-public interface IDocShareAccepterService 
-{
+public interface IDocShareAccepterService {
     /**
      * 查询文档分享接收人
-     * 
-     * @param shareId 文档分享接收人主键
+     *
+     * @param docId 文档分享接收人主键
      * @return 文档分享接收人
      */
-    public DocShareAccepter selectDocShareAccepterByShareId(Long shareId);
+    public DocShareAccepter selectDocShareAccepterByDocId(Long docId);
 
     /**
      * 查询文档分享接收人列表
-     * 
+     *
      * @param docShareAccepter 文档分享接收人
      * @return 文档分享接收人集合
      */
@@ -29,7 +29,7 @@ public interface IDocShareAccepterService
 
     /**
      * 新增文档分享接收人
-     * 
+     *
      * @param docShareAccepter 文档分享接收人
      * @return 结果
      */
@@ -37,7 +37,7 @@ public interface IDocShareAccepterService
 
     /**
      * 修改文档分享接收人
-     * 
+     *
      * @param docShareAccepter 文档分享接收人
      * @return 结果
      */
@@ -45,17 +45,41 @@ public interface IDocShareAccepterService
 
     /**
      * 批量删除文档分享接收人
-     * 
-     * @param shareIds 需要删除的文档分享接收人主键集合
+     *
+     * @param docIds 需要删除的文档分享接收人主键集合
      * @return 结果
      */
-    public int deleteDocShareAccepterByShareIds(Long[] shareIds);
+    public int deleteDocShareAccepterByDocIds(Long[] docIds);
 
     /**
      * 删除文档分享接收人信息
-     * 
-     * @param shareId 文档分享接收人主键
+     *
+     * @param docId 文档分享接收人主键
      * @return 结果
      */
-    public int deleteDocShareAccepterByShareId(Long shareId);
+    public int deleteDocShareAccepterByDocId(Long docId);
+    /**
+     * 分配人员
+     *
+     * @param docId   文档ID
+     * @param userIds 用户ID列表
+     * @return
+     */
+    int insertShareAccepters(Long docId, Long[] userIds);
+
+    /**
+     * 删除成员
+     *
+     * @param docId   文档ID
+     * @param userIds 用户ID列表
+     * @return
+     */
+    int deleteDocShareAccepters(Long docId, Long[] userIds);
+
+    /**
+     * 查询未分配成员列表
+     *
+     * @param shareAccepter
+     */
+    List<DocShareAccepter> selectUnallocatedList(DocShareAccepter shareAccepter);
 }

+ 7 - 7
lzga-modules/lzga-doc/src/main/java/com/jjt/doc/service/IDocShareService.java

@@ -7,17 +7,17 @@ import com.jjt.doc.domain.DocShare;
  * 文档分享Service接口
  * 
  * @author wukai
- * @date 2023-03-27
+ * @date 2023-04-26
  */
 public interface IDocShareService 
 {
     /**
      * 查询文档分享
      * 
-     * @param shareId 文档分享主键
+     * @param docId 文档分享主键
      * @return 文档分享
      */
-    public DocShare selectDocShareByShareId(Long shareId);
+    public DocShare selectDocShareByDocId(Long docId);
 
     /**
      * 查询文档分享列表
@@ -46,16 +46,16 @@ public interface IDocShareService
     /**
      * 批量删除文档分享
      * 
-     * @param shareIds 需要删除的文档分享主键集合
+     * @param docIds 需要删除的文档分享主键集合
      * @return 结果
      */
-    public int deleteDocShareByShareIds(Long[] shareIds);
+    public int deleteDocShareByDocIds(Long[] docIds);
 
     /**
      * 删除文档分享信息
      * 
-     * @param shareId 文档分享主键
+     * @param docId 文档分享主键
      * @return 结果
      */
-    public int deleteDocShareByShareId(Long shareId);
+    public int deleteDocShareByDocId(Long docId);
 }

+ 60 - 21
lzga-modules/lzga-doc/src/main/java/com/jjt/doc/service/impl/DocShareAccepterServiceImpl.java

@@ -1,34 +1,36 @@
 package com.jjt.doc.service.impl;
 
+import java.util.ArrayList;
 import java.util.List;
+
 import org.springframework.stereotype.Service;
 import com.jjt.doc.mapper.DocShareAccepterMapper;
 import com.jjt.doc.domain.DocShareAccepter;
+
 import javax.annotation.Resource;
+
 import com.jjt.doc.service.IDocShareAccepterService;
 
 /**
  * 文档分享接收人Service业务层处理
  *
  * @author wukai
- * @date 2023-03-27
+ * @date 2023-04-26
  */
 @Service
-public class DocShareAccepterServiceImpl implements IDocShareAccepterService
-{
+public class DocShareAccepterServiceImpl implements IDocShareAccepterService {
     @Resource
     private DocShareAccepterMapper docShareAccepterMapper;
 
     /**
      * 查询文档分享接收人
      *
-     * @param shareId 文档分享接收人主键
+     * @param docId 文档分享接收人主键
      * @return 文档分享接收人
      */
     @Override
-    public DocShareAccepter selectDocShareAccepterByShareId(Long shareId)
-    {
-        return docShareAccepterMapper.selectDocShareAccepterByShareId(shareId);
+    public DocShareAccepter selectDocShareAccepterByDocId(Long docId) {
+        return docShareAccepterMapper.selectDocShareAccepterByDocId(docId);
     }
 
     /**
@@ -38,8 +40,7 @@ public class DocShareAccepterServiceImpl implements IDocShareAccepterService
      * @return 文档分享接收人
      */
     @Override
-    public List<DocShareAccepter> selectDocShareAccepterList(DocShareAccepter docShareAccepter)
-    {
+    public List<DocShareAccepter> selectDocShareAccepterList(DocShareAccepter docShareAccepter) {
         return docShareAccepterMapper.selectDocShareAccepterList(docShareAccepter);
     }
 
@@ -50,8 +51,7 @@ public class DocShareAccepterServiceImpl implements IDocShareAccepterService
      * @return 结果
      */
     @Override
-    public int insertDocShareAccepter(DocShareAccepter docShareAccepter)
-    {
+    public int insertDocShareAccepter(DocShareAccepter docShareAccepter) {
         return docShareAccepterMapper.insertDocShareAccepter(docShareAccepter);
     }
 
@@ -62,32 +62,71 @@ public class DocShareAccepterServiceImpl implements IDocShareAccepterService
      * @return 结果
      */
     @Override
-    public int updateDocShareAccepter(DocShareAccepter docShareAccepter)
-    {
+    public int updateDocShareAccepter(DocShareAccepter docShareAccepter) {
         return docShareAccepterMapper.updateDocShareAccepter(docShareAccepter);
     }
 
     /**
      * 批量删除文档分享接收人
      *
-     * @param shareIds 需要删除的文档分享接收人主键
+     * @param docIds 需要删除的文档分享接收人主键
      * @return 结果
      */
     @Override
-    public int deleteDocShareAccepterByShareIds(Long[] shareIds)
-    {
-        return docShareAccepterMapper.deleteDocShareAccepterByShareIds(shareIds);
+    public int deleteDocShareAccepterByDocIds(Long[] docIds) {
+        return docShareAccepterMapper.deleteDocShareAccepterByDocIds(docIds);
     }
 
     /**
      * 删除文档分享接收人信息
      *
-     * @param shareId 文档分享接收人主键
+     * @param docId 文档分享接收人主键
      * @return 结果
      */
     @Override
-    public int deleteDocShareAccepterByShareId(Long shareId)
-    {
-        return docShareAccepterMapper.deleteDocShareAccepterByShareId(shareId);
+    public int deleteDocShareAccepterByDocId(Long docId) {
+        return docShareAccepterMapper.deleteDocShareAccepterByDocId(docId);
+    }
+
+    /**
+     * 分配人员
+     *
+     * @param docId   文档ID
+     * @param userIds 用户ID列表
+     * @return
+     */
+    @Override
+    public int insertShareAccepters(Long docId, Long[] userIds) {
+        List<DocShareAccepter> list = new ArrayList<>();
+        for (Long userId : userIds) {
+            DocShareAccepter gu = new DocShareAccepter();
+            gu.setUserId(userId);
+            gu.setDocId(docId);
+            list.add(gu);
+        }
+        int r = docShareAccepterMapper.batchShareAccepters(list);
+        return r;
+    }
+
+    /**
+     * 删除分组成员
+     *
+     * @param docId   文档ID
+     * @param userIds 用户ID列表
+     * @return
+     */
+    @Override
+    public int deleteDocShareAccepters(Long docId, Long[] userIds) {
+        return docShareAccepterMapper.deleteDocShareAccepters(docId, userIds);
+    }
+
+    /**
+     * 查询未分配成员列表
+     *
+     * @param shareAccepter
+     */
+    @Override
+    public List<DocShareAccepter> selectUnallocatedList(DocShareAccepter shareAccepter) {
+        return docShareAccepterMapper.selectUnallocatedList(shareAccepter);
     }
 }

+ 27 - 21
lzga-modules/lzga-doc/src/main/java/com/jjt/doc/service/impl/DocShareServiceImpl.java

@@ -1,35 +1,46 @@
 package com.jjt.doc.service.impl;
 
 import java.util.List;
+
 import com.jjt.common.core.utils.DateUtils;
+import com.jjt.doc.domain.DocShareAccepter;
 import org.springframework.stereotype.Service;
 import com.jjt.doc.mapper.DocShareMapper;
 import com.jjt.doc.domain.DocShare;
+
 import javax.annotation.Resource;
+
 import com.jjt.doc.service.IDocShareService;
 
 /**
  * 文档分享Service业务层处理
  *
  * @author wukai
- * @date 2023-03-27
+ * @date 2023-04-26
  */
 @Service
-public class DocShareServiceImpl implements IDocShareService
-{
+public class DocShareServiceImpl implements IDocShareService {
     @Resource
     private DocShareMapper docShareMapper;
 
     /**
      * 查询文档分享
      *
-     * @param shareId 文档分享主键
+     * @param docId 文档分享主键
      * @return 文档分享
      */
     @Override
-    public DocShare selectDocShareByShareId(Long shareId)
-    {
-        return docShareMapper.selectDocShareByShareId(shareId);
+    public DocShare selectDocShareByDocId(Long docId) {
+        DocShare share = docShareMapper.selectDocShareByDocId(docId);
+        //如果未找到,则添加一条记录
+        if (share == null) {
+            share = new DocShare();
+            share.setDocId(docId);
+            share.setIsSecret("0");
+            share.setOnlyOneTime("0");
+            docShareMapper.insertDocShare(share);
+        }
+        return share;
     }
 
     /**
@@ -39,8 +50,7 @@ public class DocShareServiceImpl implements IDocShareService
      * @return 文档分享
      */
     @Override
-    public List<DocShare> selectDocShareList(DocShare docShare)
-    {
+    public List<DocShare> selectDocShareList(DocShare docShare) {
         return docShareMapper.selectDocShareList(docShare);
     }
 
@@ -51,8 +61,7 @@ public class DocShareServiceImpl implements IDocShareService
      * @return 结果
      */
     @Override
-    public int insertDocShare(DocShare docShare)
-    {
+    public int insertDocShare(DocShare docShare) {
         docShare.setCreateTime(DateUtils.getNowDate());
         return docShareMapper.insertDocShare(docShare);
     }
@@ -64,8 +73,7 @@ public class DocShareServiceImpl implements IDocShareService
      * @return 结果
      */
     @Override
-    public int updateDocShare(DocShare docShare)
-    {
+    public int updateDocShare(DocShare docShare) {
         docShare.setUpdateTime(DateUtils.getNowDate());
         return docShareMapper.updateDocShare(docShare);
     }
@@ -73,24 +81,22 @@ public class DocShareServiceImpl implements IDocShareService
     /**
      * 批量删除文档分享
      *
-     * @param shareIds 需要删除的文档分享主键
+     * @param docIds 需要删除的文档分享主键
      * @return 结果
      */
     @Override
-    public int deleteDocShareByShareIds(Long[] shareIds)
-    {
-        return docShareMapper.deleteDocShareByShareIds(shareIds);
+    public int deleteDocShareByDocIds(Long[] docIds) {
+        return docShareMapper.deleteDocShareByDocIds(docIds);
     }
 
     /**
      * 删除文档分享信息
      *
-     * @param shareId 文档分享主键
+     * @param docId 文档分享主键
      * @return 结果
      */
     @Override
-    public int deleteDocShareByShareId(Long shareId)
-    {
-        return docShareMapper.deleteDocShareByShareId(shareId);
+    public int deleteDocShareByDocId(Long docId) {
+        return docShareMapper.deleteDocShareByDocId(docId);
     }
 }

+ 75 - 26
lzga-modules/lzga-doc/src/main/resources/mapper/doc/DocShareAccepterMapper.xml

@@ -1,39 +1,79 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.jjt.doc.mapper.DocShareAccepterMapper">
-    
+
     <resultMap type="DocShareAccepter" id="DocShareAccepterResult">
-        <result property="shareId"    column="SHARE_ID"    />
-        <result property="userId"    column="USER_ID"    />
+        <result property="docId" column="DOC_ID"/>
+        <result property="userId" column="USER_ID"/>
     </resultMap>
 
     <sql id="selectDocShareAccepterVo">
-        select SHARE_ID, USER_ID from doc_share_accepter
+        select DOC_ID, USER_ID
+        from doc_share_accepter
     </sql>
 
-    <select id="selectDocShareAccepterList" parameterType="DocShareAccepter" resultMap="DocShareAccepterResult">
-        <include refid="selectDocShareAccepterVo"/>
-        <where>  
-        </where>
+
+    <select id="selectDocShareAccepterList" parameterType="DocShareAccepter"
+            resultType="com.jjt.doc.domain.DocShareAccepter">
+        select distinct u.user_id,
+                        u.dept_id,
+                        u.user_name,
+                        u.nick_name,
+                        u.email,
+                        u.phonenumber,
+                        u.status
+        from sys_user u,
+             doc_share_accepter du
+        where u.user_id = du.user_id
+          and du.doc_id = #{docId}
+    </select>
+
+    <select id="selectDocShareAccepterByDocId" parameterType="Long" resultType="com.jjt.doc.domain.DocShareAccepter">
+        select distinct u.user_id,
+                        u.dept_id,
+                        u.user_name,
+                        u.nick_name,
+                        u.email,
+                        u.phonenumber,
+                        u.status,
+                        du.doc_id
+        from sys_user u,
+             doc_share_accepter du
+        where u.user_id = du.user_id
+          and du.doc_id = #{docId}
     </select>
-    
-    <select id="selectDocShareAccepterByShareId" parameterType="Long" resultMap="DocShareAccepterResult">
-        <include refid="selectDocShareAccepterVo"/>
-        where SHARE_ID = #{shareId}
+    <select id="selectUnallocatedList" resultType="com.jjt.doc.domain.DocShareAccepter">
+        select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status
+        from sys_user u
+        where u.del_flag = '0' and u.user_id not in (select user_id from doc_share_accepter where doc_id = #{docId})
+        <!--        <if test="userName != null and userName != ''">-->
+        <!--            AND u.user_name like concat('%', #{userName}, '%')-->
+        <!--        </if>-->
+        <!--        <if test="phonenumber != null and phonenumber != ''">-->
+        <!--            AND u.phonenumber like concat('%', #{phonenumber}, '%')-->
+        <!--        </if>-->
+        <!--        &lt;!&ndash; 数据范围过滤 &ndash;&gt;-->
+        <!--        ${params.dataScope}-->
     </select>
-        
+
     <insert id="insertDocShareAccepter" parameterType="DocShareAccepter">
         insert into doc_share_accepter
         <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="shareId != null">SHARE_ID,</if>
+            <if test="docId != null">DOC_ID,</if>
             <if test="userId != null">USER_ID,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="shareId != null">#{shareId},</if>
+            <if test="docId != null">#{docId},</if>
             <if test="userId != null">#{userId},</if>
-         </trim>
+        </trim>
+    </insert>
+    <insert id="batchShareAccepters">
+        insert into doc_share_accepter(user_id, doc_id) values
+        <foreach item="item" index="index" collection="list" separator=",">
+            (#{item.userId},#{item.docId})
+        </foreach>
     </insert>
 
     <update id="updateDocShareAccepter" parameterType="DocShareAccepter">
@@ -41,17 +81,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <trim prefix="SET" suffixOverrides=",">
             <if test="userId != null">USER_ID = #{userId},</if>
         </trim>
-        where SHARE_ID = #{shareId}
+        where DOC_ID = #{docId}
     </update>
 
-    <delete id="deleteDocShareAccepterByShareId" parameterType="Long">
-        delete from doc_share_accepter where SHARE_ID = #{shareId}
+    <delete id="deleteDocShareAccepterByDocId" parameterType="Long">
+        delete
+        from doc_share_accepter
+        where DOC_ID = #{docId}
+    </delete>
+
+    <delete id="deleteDocShareAccepterByDocIds" parameterType="String">
+        delete from doc_share_accepter where DOC_ID in
+        <foreach item="docId" collection="array" open="(" separator="," close=")">
+            #{docId}
+        </foreach>
     </delete>
 
-    <delete id="deleteDocShareAccepterByShareIds" parameterType="String">
-        delete from doc_share_accepter where SHARE_ID in 
-        <foreach item="shareId" collection="array" open="(" separator="," close=")">
-            #{shareId}
+    <delete id="deleteDocShareAccepters">
+        delete from doc_share_accepter where DOC_ID=#{docId} and user_id in
+        <foreach collection="userIds" item="userId" open="(" separator="," close=")">
+            #{userId}
         </foreach>
     </delete>
 </mapper>

+ 18 - 15
lzga-modules/lzga-doc/src/main/resources/mapper/doc/DocShareMapper.xml

@@ -5,8 +5,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 <mapper namespace="com.jjt.doc.mapper.DocShareMapper">
     
     <resultMap type="DocShare" id="DocShareResult">
-        <result property="shareId"    column="SHARE_ID"    />
         <result property="docId"    column="DOC_ID"    />
+        <result property="docYear"    column="DOC_YEAR"    />
         <result property="isSecret"    column="IS_SECRET"    />
         <result property="onlyOneTime"    column="ONLY_ONE_TIME"    />
         <result property="createBy"    column="CREATE_BY"    />
@@ -18,33 +18,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectDocShareVo">
-        select SHARE_ID, DOC_ID, IS_SECRET, ONLY_ONE_TIME, CREATE_BY, CREATE_TIME, UPDATE_BY, UPDATE_TIME, REMARK, IS_DEL from doc_share
+        select DOC_ID, DOC_YEAR, IS_SECRET, ONLY_ONE_TIME, CREATE_BY, CREATE_TIME, UPDATE_BY, UPDATE_TIME, REMARK, IS_DEL from doc_share
     </sql>
 
     <select id="selectDocShareList" parameterType="DocShare" resultMap="DocShareResult">
         <include refid="selectDocShareVo"/>
         <where>  
             <if test="docId != null "> and DOC_ID = #{docId}</if>
+            <if test="docYear != null "> and DOC_YEAR = #{docYear}</if>
             <if test="isSecret != null  and isSecret != ''"> and IS_SECRET = #{isSecret}</if>
             <if test="onlyOneTime != null  and onlyOneTime != ''"> and ONLY_ONE_TIME = #{onlyOneTime}</if>
-            <if test="createBy != null "> and CREATE_BY = #{createBy}</if>
+            <if test="createBy != null  and createBy != ''"> and CREATE_BY = #{createBy}</if>
             <if test="createTime != null "> and CREATE_TIME = #{createTime}</if>
-            <if test="updateBy != null "> and UPDATE_BY = #{updateBy}</if>
+            <if test="updateBy != null  and updateBy != ''"> and UPDATE_BY = #{updateBy}</if>
             <if test="updateTime != null "> and UPDATE_TIME = #{updateTime}</if>
             <if test="remark != null  and remark != ''"> and REMARK = #{remark}</if>
             <if test="isDel != null  and isDel != ''"> and IS_DEL = #{isDel}</if>
         </where>
     </select>
     
-    <select id="selectDocShareByShareId" parameterType="Long" resultMap="DocShareResult">
+    <select id="selectDocShareByDocId" parameterType="Long" resultMap="DocShareResult">
         <include refid="selectDocShareVo"/>
-        where SHARE_ID = #{shareId}
+        where DOC_ID = #{docId}
     </select>
         
-    <insert id="insertDocShare" parameterType="DocShare" useGeneratedKeys="true" keyProperty="shareId">
+    <insert id="insertDocShare" parameterType="DocShare">
         insert into doc_share
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="docId != null">DOC_ID,</if>
+            <if test="docYear != null">DOC_YEAR,</if>
             <if test="isSecret != null">IS_SECRET,</if>
             <if test="onlyOneTime != null">ONLY_ONE_TIME,</if>
             <if test="createBy != null">CREATE_BY,</if>
@@ -56,6 +58,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="docId != null">#{docId},</if>
+            <if test="docYear != null">#{docYear},</if>
             <if test="isSecret != null">#{isSecret},</if>
             <if test="onlyOneTime != null">#{onlyOneTime},</if>
             <if test="createBy != null">#{createBy},</if>
@@ -70,7 +73,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <update id="updateDocShare" parameterType="DocShare">
         update doc_share
         <trim prefix="SET" suffixOverrides=",">
-            <if test="docId != null">DOC_ID = #{docId},</if>
+            <if test="docYear != null">DOC_YEAR = #{docYear},</if>
             <if test="isSecret != null">IS_SECRET = #{isSecret},</if>
             <if test="onlyOneTime != null">ONLY_ONE_TIME = #{onlyOneTime},</if>
             <if test="createBy != null">CREATE_BY = #{createBy},</if>
@@ -80,17 +83,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="remark != null">REMARK = #{remark},</if>
             <if test="isDel != null">IS_DEL = #{isDel},</if>
         </trim>
-        where SHARE_ID = #{shareId}
+        where DOC_ID = #{docId}
     </update>
 
-    <delete id="deleteDocShareByShareId" parameterType="Long">
-        delete from doc_share where SHARE_ID = #{shareId}
+    <delete id="deleteDocShareByDocId" parameterType="Long">
+        delete from doc_share where DOC_ID = #{docId}
     </delete>
 
-    <delete id="deleteDocShareByShareIds" parameterType="String">
-        delete from doc_share where SHARE_ID in 
-        <foreach item="shareId" collection="array" open="(" separator="," close=")">
-            #{shareId}
+    <delete id="deleteDocShareByDocIds" parameterType="String">
+        delete from doc_share where DOC_ID in 
+        <foreach item="docId" collection="array" open="(" separator="," close=")">
+            #{docId}
         </foreach>
     </delete>
 </mapper>

+ 28 - 0
lzga-modules/lzga-doc/src/test/java/Test.java

@@ -0,0 +1,28 @@
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+
+public class Test {
+    public static void main(String[] args) {
+        String result = "";
+        System.out.println("我要开始调用了?");
+        try {
+            String[] params = {"python3", "/opt/lzga/lzga_ocr.py", "/tmp/to.png"};
+            Process process = Runtime.getRuntime().exec(params);
+            BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
+
+            String line = null;
+            while ((line = in.readLine()) != null) {
+                line = in.readLine();
+                System.out.println("返回值:" + line);
+            }
+
+            in.close();
+            int re = process.waitFor();
+            System.out.println("我已经调用完了?");
+            System.out.println("调用状态" + re);
+            System.out.println("我获取到的结果" + result);
+        } catch (Exception e) {
+            System.out.printf("调用python脚本出错" + e.getMessage());
+        }
+    }
+}

+ 4 - 4
lzga-ui/src/api/doc/share.js

@@ -10,9 +10,9 @@ export function listShare(query) {
 }
 
 // 查询文档分享详细
-export function getShare(shareId) {
+export function getShare(docId) {
   return request({
-    url: '/doc/share/' + shareId,
+    url: '/doc/share/' + docId,
     method: 'get'
   })
 }
@@ -36,9 +36,9 @@ export function updateShare(data) {
 }
 
 // 删除文档分享
-export function delShare(shareId) {
+export function delShare(docId) {
   return request({
-    url: '/doc/share/' + shareId,
+    url: '/doc/share/' + docId,
     method: 'delete'
   })
 }

+ 50 - 4
lzga-ui/src/api/doc/shareAccepter.js

@@ -10,9 +10,9 @@ export function listShareAccepter(query) {
 }
 
 // 查询文档分享接收人详细
-export function getShareAccepter(shareId) {
+export function getShareAccepter(docId) {
   return request({
-    url: '/doc/shareAccepter/' + shareId,
+    url: '/doc/shareAccepter/' + docId,
     method: 'get'
   })
 }
@@ -36,9 +36,55 @@ export function updateShareAccepter(data) {
 }
 
 // 删除文档分享接收人
-export function delShareAccepter(shareId) {
+export function delShareAccepter(docId) {
   return request({
-    url: '/doc/shareAccepter/' + shareId,
+    url: '/doc/shareAccepter/' + docId,
     method: 'delete'
   })
 }
+
+// 查询角色已授权用户列表
+export function allocatedUserList(query) {
+  return request({
+    url: '/doc/shareAccepter/allocatedList',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询角色未授权用户列表
+export function unallocatedUserList(query) {
+  return request({
+    url: '/doc/shareAccepter/unallocatedList',
+    method: 'get',
+    params: query
+  })
+}
+
+// 取消用户授权角色
+export function shareUserCancel(data) {
+  return request({
+    url: '/doc/shareAccepter/cancel',
+    method: 'put',
+    data: data
+  })
+}
+
+// 批量取消用户授权角色
+export function shareUserCancelAll(data) {
+  console.log(data);
+  return request({
+    url: '/doc/shareAccepter/cancelAll',
+    method: 'put',
+    params: data
+  })
+}
+
+// 授权用户选择
+export function shareUserSelectAll(data) {
+  return request({
+    url: '/doc/shareAccepter/selectAll',
+    method: 'put',
+    params: data
+  })
+}

+ 28 - 15
lzga-ui/src/router/index.js

@@ -30,14 +30,14 @@ import Layout from '@/layout'
 
 // 公共路由
 export const constantRoutes = [{
-  path: '/redirect',
-  component: Layout,
-  hidden: true,
-  children: [{
-    path: '/redirect/:path(.*)',
-    component: () => import('@/views/redirect')
-  }]
-},
+    path: '/redirect',
+    component: Layout,
+    hidden: true,
+    children: [{
+      path: '/redirect/:path(.*)',
+      component: () => import('@/views/redirect')
+    }]
+  },
   {
     path: '/login',
     component: () => import('@/views/login'),
@@ -93,9 +93,9 @@ export const constantRoutes = [{
     component: () => import('@/views1/HomeView.vue'),
     hidden: true,
     children: [{
-      path: "/home/page",
-      component: () => import('@/views1/Page/PageView.vue')
-    },
+        path: "/home/page",
+        component: () => import('@/views1/Page/PageView.vue')
+      },
       {
         path: "/home/retrieval",
         component: () => import('@/views1/Retrieval/RetrievalView.vue')
@@ -203,8 +203,7 @@ export const constantRoutes = [{
       {
         path: "/home/group/groups",
         component: () => import('@/views1/Group/Groups/GroupsView.vue')
-      }
-      ,
+      },
       {
         path: "/home/group/subgroup",
         component: () => import('@/views1/Group/Subgroup/SubgroupView.vue')
@@ -311,12 +310,26 @@ export const dynamicRoutes = [{
   children: [{
     path: 'user/:groupId(\\d+)',
     component: () => import('@/views/doc/groupUser/index'),
-    name: 'AuthUser',
+    name: 'GroupUser',
     meta: {
       title: '分配成员',
       activeMenu: '/doc/group'
     }
   }]
+}, {
+  path: '/doc/share-user/',
+  component: Layout,
+  hidden: true,
+  permissions: ['doc:groupUser:edit'],
+  children: [{
+    path: 'user/:docId(\\d+)',
+    component: () => import('@/views/doc/shareAccepter/index'),
+    name: 'ShareUser',
+    meta: {
+      title: '分享接收者',
+      activeMenu: '/info'
+    }
+  }]
 }]
 
 // 防止连续点击多次路由报错
@@ -331,4 +344,4 @@ export default new Router({
     y: 0
   }),
   routes: constantRoutes
-})
+})

+ 6 - 3
lzga-ui/src/views/doc/info/index.vue

@@ -235,8 +235,7 @@
       },
       //分享
       handleShare(row) {
-        row.isEdit = false;
-        this.$tab.openPage("文件[" + row.docName + "]预览", '/doc/oo-edit/index/' + row.docId, row);
+        this.$router.push("/doc/share-user/user/" + row.docId);
       },
       /**下载按钮操作*/
       handleDownload(row) {
@@ -312,6 +311,10 @@
       },
       /** 搜索按钮操作 */
       handleQuery() {
+        const para = {
+          tagId: 123
+        }
+        this.queryParams.params = para;
         this.queryParams.pageNum = 1;
         this.getList();
       },
@@ -413,4 +416,4 @@
       }
     }
   };
-</script>
+</script>

+ 59 - 22
lzga-ui/src/views/doc/share/index.vue

@@ -9,21 +9,33 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="是否机密;1.机密  非1.一般" prop="isSecret">
+      <el-form-item label="文档年份" prop="docYear">
         <el-input
-          v-model="queryParams.isSecret"
-          placeholder="请输入是否机密;1.机密  非1.一般"
+          v-model="queryParams.docYear"
+          placeholder="请输入文档年份"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
+      <el-form-item label="是否机密;1.机密  非1.一般" prop="isSecret">
+        <el-select v-model="queryParams.isSecret" placeholder="请选择是否机密;1.机密  非1.一般" clearable>
+          <el-option
+            v-for="dict in dict.type.sys_yes_no"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
       <el-form-item label="是否一次性;1.是 非1.否" prop="onlyOneTime">
-        <el-input
-          v-model="queryParams.onlyOneTime"
-          placeholder="请输入是否一次性;1.是 非1.否"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <el-select v-model="queryParams.onlyOneTime" placeholder="请选择是否一次性;1.是 非1.否" clearable>
+          <el-option
+            v-for="dict in dict.type.sys_yes_no"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
       </el-form-item>
       <el-form-item label="创建人" prop="createBy">
         <el-input
@@ -127,10 +139,18 @@
 
     <el-table v-loading="loading" :data="shareList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="共享ID" align="center" prop="shareId" />
       <el-table-column label="文档ID" align="center" prop="docId" />
-      <el-table-column label="是否机密;1.机密  非1.一般" align="center" prop="isSecret" />
-      <el-table-column label="是否一次性;1.是 非1.否" align="center" prop="onlyOneTime" />
+      <el-table-column label="文档年份" align="center" prop="docYear" />
+      <el-table-column label="是否机密;1.机密  非1.一般" align="center" prop="isSecret">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isSecret"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="是否一次性;1.是 非1.否" align="center" prop="onlyOneTime">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.onlyOneTime"/>
+        </template>
+      </el-table-column>
       <el-table-column label="创建人" align="center" prop="createBy" />
       <el-table-column label="创建时间" align="center" prop="createTime" width="180">
         <template slot-scope="scope">
@@ -179,11 +199,26 @@
         <el-form-item label="文档ID" prop="docId">
           <el-input v-model="form.docId" placeholder="请输入文档ID" />
         </el-form-item>
+        <el-form-item label="文档年份" prop="docYear">
+          <el-input v-model="form.docYear" placeholder="请输入文档年份" />
+        </el-form-item>
         <el-form-item label="是否机密;1.机密  非1.一般" prop="isSecret">
-          <el-input v-model="form.isSecret" placeholder="请输入是否机密;1.机密  非1.一般" />
+          <el-radio-group v-model="form.isSecret">
+            <el-radio
+              v-for="dict in dict.type.sys_yes_no"
+              :key="dict.value"
+              :label="dict.value"
+            >{{dict.label}}</el-radio>
+          </el-radio-group>
         </el-form-item>
         <el-form-item label="是否一次性;1.是 非1.否" prop="onlyOneTime">
-          <el-input v-model="form.onlyOneTime" placeholder="请输入是否一次性;1.是 非1.否" />
+          <el-radio-group v-model="form.onlyOneTime">
+            <el-radio
+              v-for="dict in dict.type.sys_yes_no"
+              :key="dict.value"
+              :label="dict.value"
+            >{{dict.label}}</el-radio>
+          </el-radio-group>
         </el-form-item>
         <el-form-item label="备注" prop="remark">
           <el-input v-model="form.remark" placeholder="请输入备注" />
@@ -205,6 +240,7 @@ import { listShare, getShare, delShare, addShare, updateShare } from "@/api/doc/
 
 export default {
   name: "Share",
+  dicts: ['sys_yes_no'],
   data() {
     return {
       // 遮罩层
@@ -230,6 +266,7 @@ export default {
         pageNum: 1,
         pageSize: 10,
         docId: null,
+        docYear: null,
         isSecret: null,
         onlyOneTime: null,
         createBy: null,
@@ -267,8 +304,8 @@ export default {
     // 表单重置
     reset() {
       this.form = {
-        shareId: null,
         docId: null,
+        docYear: null,
         isSecret: null,
         onlyOneTime: null,
         createBy: null,
@@ -292,7 +329,7 @@ export default {
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.shareId)
+      this.ids = selection.map(item => item.docId)
       this.single = selection.length!==1
       this.multiple = !selection.length
     },
@@ -305,8 +342,8 @@ export default {
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-      const shareId = row.shareId || this.ids
-      getShare(shareId).then(response => {
+      const docId = row.docId || this.ids
+      getShare(docId).then(response => {
         this.form = response.data;
         this.open = true;
         this.title = "修改文档分享";
@@ -316,7 +353,7 @@ export default {
     submitForm() {
       this.$refs["form"].validate(valid => {
         if (valid) {
-          if (this.form.shareId != null) {
+          if (this.form.docId != null) {
             updateShare(this.form).then(response => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
@@ -334,9 +371,9 @@ export default {
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      const shareIds = row.shareId || this.ids;
-      this.$modal.confirm('是否确认删除文档分享编号为"' + shareIds + '"的数据项?').then(function() {
-        return delShare(shareIds);
+      const docIds = row.docId || this.ids;
+      this.$modal.confirm('是否确认删除文档分享编号为"' + docIds + '"的数据项?').then(function() {
+        return delShare(docIds);
       }).then(() => {
         this.getList();
         this.$modal.msgSuccess("删除成功");

+ 203 - 195
lzga-ui/src/views/doc/shareAccepter/index.vue

@@ -1,6 +1,20 @@
 <template>
   <div class="app-container">
+    <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+      <el-form-item label="是否机密" prop="isSecret">
+        <el-switch v-model="form.isSecret" active-value="1" inactive-value="0" @change="shareChange()"> 如果选择机密,则共享用户打开时需要输入自己的用户密码才能查看。</el-switch>
+      </el-form-item>
+      <el-form-item label="阅后即焚" prop="onlyOneTime">
+        <el-switch v-model="form.onlyOneTime" active-value="1" inactive-value="0" @change="shareChange()"> 如果阅后即焚,则共享用户只能打开一次。</el-switch>
+      </el-form-item>
+    </el-form>
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="用户ID" prop="userId">
+        <el-input v-model="queryParams.userId" placeholder="请输入用户ID" clearable @keyup.enter.native="handleQuery" />
+      </el-form-item>
+      <el-form-item label="用户姓名" prop="userName">
+        <el-input v-model="queryParams.userName" placeholder="请输入用户姓名" clearable @keyup.enter.native="handleQuery" />
+      </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>
@@ -9,225 +23,219 @@
 
     <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="['doc:shareAccepter:add']"
-        >新增</el-button>
+        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
+          v-hasPermi="['doc:groupUser: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="['doc:shareAccepter:edit']"
-        >修改</el-button>
+        <el-button type="danger" plain icon="el-icon-circle-close" size="mini" :disabled="multiple"
+          @click="cancelGroupUserAll" v-hasPermi="['doc:groupUser:remove']">删除人员</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['doc:shareAccepter:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['doc:shareAccepter:export']"
-        >导出</el-button>
+        <el-button type="warning" plain icon="el-icon-close" size="mini" @click="handleClose">关闭</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="shareAccepterList" @selection-change="handleSelectionChange">
+    <el-table v-loading="loading" :data="groupUserList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="共享ID" align="center" prop="shareId" />
-      <el-table-column label="用户ID" align="center" prop="userId" />
+      <el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
+      <el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
+      <el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
+      <el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
+      <el-table-column label="状态" align="center" prop="status">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status" />
+        </template>
+      </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['doc:shareAccepter:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['doc:shareAccepter:remove']"
-          >删除</el-button>
+          <el-button size="mini" type="text" icon="el-icon-circle-close" @click="cancelGroupUser(scope.row)"
+            v-hasPermi="['doc:groupUser:remove']">删除人员</el-button>
         </template>
       </el-table-column>
     </el-table>
-    
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :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>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
+    <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
+      @pagination="getList" />
+    <select-user ref="select" :docId="queryParams.docId" @ok="handleQuery" />
   </div>
 </template>
 
 <script>
-import { listShareAccepter, getShareAccepter, delShareAccepter, addShareAccepter, updateShareAccepter } from "@/api/doc/shareAccepter";
+  import {
+    listShareAccepter,
+    getShareAccepter,
+    delShareAccepter,
+    addShareAccepter,
+    updateShareAccepter,
+    shareUserCancelAll
+  } from "@/api/doc/shareAccepter";
 
-export default {
-  name: "ShareAccepter",
-  data() {
-    return {
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 文档分享接收人表格数据
-      shareAccepterList: [],
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-      },
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-      }
-    };
-  },
-  created() {
-    this.getList();
-  },
-  methods: {
-    /** 查询文档分享接收人列表 */
-    getList() {
-      this.loading = true;
-      listShareAccepter(this.queryParams).then(response => {
-        this.shareAccepterList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
+  import {
+    listShare,
+    getShare,
+    delShare,
+    addShare,
+    updateShare
+  } from "@/api/doc/share";
+
+  import selectUser from "./selectUser";
+  export default {
+    name: "GroupUser",
+    dicts: ['sys_yes_no'],
+    components: {
+      selectUser
     },
-    // 表单重置
-    reset() {
-      this.form = {
-        shareId: null,
-        userId: null
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 分组成员表格数据
+        groupUserList: [],
+        // 弹出层标题
+        title: "",
+        // 是否显示弹出层
+        open: false,
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10,
+          userId: null,
+          userName: null
+        },
+        // 表单参数
+        form: {},
+        // 表单校验
+        rules: {}
       };
-      this.resetForm("form");
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.shareId)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加文档分享接收人";
     },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.reset();
-      const shareId = row.shareId || this.ids
-      getShareAccepter(shareId).then(response => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改文档分享接收人";
-      });
-    },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          if (this.form.shareId != null) {
-            updateShareAccepter(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addShareAccepter(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            });
-          }
-        }
-      });
+    created() {
+      const docId = this.$route.params && this.$route.params.docId;
+      if (docId) {
+        this.queryParams.docId = docId;
+        this.getList();
+      }
     },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const shareIds = row.shareId || this.ids;
-      this.$modal.confirm('是否确认删除文档分享接收人编号为"' + shareIds + '"的数据项?').then(function() {
-        return delShareAccepter(shareIds);
-      }).then(() => {
+    methods: {
+      shareChange() {
+        this.form.docId = this.queryParams.docId;
+        updateShare(this.form).then(response => {
+          this.$modal.msgSuccess("修改成功");
+        });
+      },
+      // 返回按钮
+      handleClose() {
+        const obj = {
+          path: "/info"
+        };
+        this.$tab.closeOpenPage(obj);
+      },
+      /** 查询分组成员列表 */
+      getList() {
+        this.loading = true;
+        getShare(this.queryParams.docId).then(response => {
+          this.form.isSecret = response.data.isSecret;
+          this.form.onlyOneTime = response.data.onlyOneTime;
+        });
+
+        listShareAccepter(this.queryParams).then(response => {
+          this.groupUserList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {
+          docId: null,
+          userId: null,
+          userName: null
+        };
+        this.resetForm("form");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
         this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.userId)
+        this.single = selection.length !== 1
+        this.multiple = !selection.length
+      },
+      /** 新增按钮操作 */
+      handleAdd() {
+        this.$refs.select.show();
+      },
+      /** 提交按钮 */
+      submitForm() {
+        this.$refs["form"].validate(valid => {
+          if (valid) {
+            if (this.form.docId != null) {
+              updateGroupUser(this.form).then(response => {
+                this.$modal.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              });
+            } else {
+              addGroupUser(this.form).then(response => {
+                this.$modal.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              });
+            }
+          }
+        });
+      },
+      /** 删除按钮操作 */
+      cancelGroupUserAll(row) {
+        const docId = this.queryParams.docId;
+        const userIds = this.ids.join(",");
+        this.$modal.confirm('是否确认删除选中的分组成员?').then(function() {
+          return shareUserCancelAll({
+            docId: docId,
+            userIds: userIds
+          });
+        }).then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        }).catch(() => {});
+      },
+      /** 删除按钮操作 */
+      cancelGroupUser(row) {
+        const docId = this.queryParams.docId;
+        const userIds = row.userId
+        this.$modal.confirm('是否确认删除分组成员"' + row.userName + '"的数据项?').then(function() {
+          return shareUserCancelAll({
+            docId: docId,
+            userIds: userIds
+          });
+        }).then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        }).catch(() => {});
+      },
     },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('doc/shareAccepter/export', {
-        ...this.queryParams
-      }, `shareAccepter_${new Date().getTime()}.xlsx`)
-    }
-  }
-};
+  };
 </script>

+ 130 - 0
lzga-ui/src/views/doc/shareAccepter/selectUser.vue

@@ -0,0 +1,130 @@
+<template>
+  <!-- 授权用户 -->
+  <el-dialog title="选择用户" :visible.sync="visible" width="800px" top="5vh" append-to-body>
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
+      <el-form-item label="用户名称" prop="userName">
+        <el-input v-model="queryParams.userName" placeholder="请输入用户名称" clearable @keyup.enter.native="handleQuery" />
+      </el-form-item>
+      <el-form-item label="手机号码" prop="phonenumber">
+        <el-input v-model="queryParams.phonenumber" placeholder="请输入手机号码" clearable @keyup.enter.native="handleQuery" />
+      </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>
+    <el-row>
+      <el-table @row-click="clickRow" ref="table" :data="userList" @selection-change="handleSelectionChange"
+        height="260px">
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
+        <el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
+        <el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
+        <el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
+        <el-table-column label="状态" align="center" prop="status">
+          <template slot-scope="scope">
+            <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status" />
+          </template>
+        </el-table-column>
+        <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+          <template slot-scope="scope">
+            <span>{{ parseTime(scope.row.createTime) }}</span>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
+        @pagination="getList" />
+    </el-row>
+    <div slot="footer" class="dialog-footer">
+      <el-button type="primary" @click="handleSelectUser">确 定</el-button>
+      <el-button @click="visible = false">取 消</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+  import {
+    unallocatedUserList,
+    shareUserSelectAll
+  } from "@/api/doc/shareAccepter";
+  export default {
+    dicts: ['sys_normal_disable'],
+    props: {
+      // 角色编号
+      docId: {
+        type: [String]
+      }
+    },
+    data() {
+      return {
+        // 遮罩层
+        visible: false,
+        // 选中数组值
+        userIds: [],
+        // 总条数
+        total: 0,
+        // 未授权用户数据
+        userList: [],
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10,
+          docId: undefined,
+          // userName: undefined,
+          // phonenumber: undefined
+        }
+      };
+    },
+    methods: {
+      // 显示弹框
+      show() {
+        this.queryParams.docId = this.docId;
+        this.getList();
+        this.visible = true;
+      },
+      clickRow(row) {
+        this.$refs.table.toggleRowSelection(row);
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.userIds = selection.map(item => item.userId);
+      },
+      // 查询表数据
+      getList() {
+        unallocatedUserList(this.queryParams).then(res => {
+          this.userList = res.rows;
+          this.total = res.total;
+        });
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      /** 选择授权用户操作 */
+      handleSelectUser() {
+        const docId = this.queryParams.docId;
+        const userIds = this.userIds.join(",");
+        if (userIds == "") {
+          this.$modal.msgError("请选择要分配的用户");
+          return;
+        }
+        shareUserSelectAll({
+          docId: docId,
+          userIds: userIds
+        }).then(res => {
+          this.$modal.msgSuccess(res.msg);
+          if (res.code === 200) {
+            this.visible = false;
+            this.$emit("ok");
+          }
+        });
+      }
+    }
+  };
+</script>