Răsfoiți Sursa

文档管理

2213980799@qq.com 1 an în urmă
părinte
comite
52289976a2

+ 51 - 0
src/api/businessCode/index.js

@@ -0,0 +1,51 @@
+import request from '@/utils/request';
+
+
+// 获取编码树
+export async function selectTreeList(data) {
+  const res = await request.post(`/main/business_code_category/selectTreeList`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+// 获取右侧列表
+export async function listParentId(data) {
+  const res = await request.post(`/main/business_code_category/listPageParentId`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+// 获取右侧码段列表
+export async function pageSegment(data) {
+  const res = await request.post(`/main/business_code_manage/page`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+
+// 生成编码
+export async function getCode(id) {
+  const res = await request.get(`/main/business_code_category/applyForCode/`+id);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+// /**
+//  * 检查编码是否存在
+//  * @param code 编码
+//  */
+// export async function checkCode(code) {
+//   const res = await request.get('/main/codemanage/getByCode/' + code);
+//   if (res.data.code == 0) {
+//     return res.data.data;
+//   }
+//   return Promise.reject(new Error(res.data.message));
+// }
+
+

+ 45 - 0
src/api/doc-manage/index.js

@@ -171,10 +171,55 @@ export async function releasePage(data) {
 }
 
 
+/*
+* 回收文档
+* @data data
+*/
+export async function receiveSave(data) {
+  const res = await request.post('/fm/recycle_management/save', data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
 
+export async function receivePage(data) {
+  const res = await request.post('/fm/recycle_management/page', data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+export async function recyclePage(data) {
+  const res = await request.post('/fm/recycle_management/recyclePage', data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
 
 
+/**
+ * 签收
+ */
+export async function signFor(data) {
+  const res = await request.post(`/fm/release_management/signFor`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
 
+/**
+ * 签收
+ */
+export async function allSignFor(data) {
+  const res = await request.get(`/fm/release_management/allSignFor`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
 
 
 

+ 40 - 14
src/views/doc/components/file-edit.vue

@@ -11,6 +11,17 @@
   >
     <el-form ref="form" :model="form" :rules="rules" label-width="82px">
       <el-row :gutter="15">
+        <el-col :span="24">
+          <el-form-item label="编码" prop="code">
+            <el-input v-model="form.code" placeholder="请申请编码" disabled>
+              <template slot="append">
+                <el-link :underline="false" @click.native="getCodeOpen"
+                  >申请编码
+                </el-link></template
+              >
+            </el-input>
+          </el-form-item>
+        </el-col>
         <el-col :span="24">
           <el-form-item label="文档类型" prop="type">
             <DictSelection
@@ -19,14 +30,14 @@
             ></DictSelection>
           </el-form-item>
         </el-col>
-        <el-col :span="24">
+        <!-- <el-col :span="24">
           <el-form-item label="上传方式" prop="SCFS">
             <el-radio-group v-model="SCFS">
               <el-radio :label="1">手动上传</el-radio>
               <el-radio :label="2">选择模板</el-radio>
             </el-radio-group>
           </el-form-item>
-        </el-col>
+        </el-col> -->
         <el-col :span="24">
           <el-form-item label="文档名称" prop="name">
             <el-input
@@ -38,13 +49,12 @@
         <el-col :span="24">
           <el-form-item label="文档" prop="storagePath">
             <fileUpload
-              class="aaa"
               v-model="form.storagePath"
               module="main"
-              :showLib="false"
               :limit="1"
               @fileChange="fileChange"
             />
+            <!-- <el-button type="primary"> 选择模板 </el-button> -->
           </el-form-item>
         </el-col>
         <el-col :span="24">
@@ -80,6 +90,7 @@
         确认
       </el-button>
     </template>
+    <getCode ref="getCode" @success="success"></getCode>
   </ele-modal>
 </template>
 
@@ -92,13 +103,14 @@ import {
 } from '@/api/doc-manage';
 import FileUpload from '@/components/upload/fileUpload1.vue';
 import { setFolderList } from '../util.js';
+import getCode from './getCode.vue';
 
 export default {
-  components: { FileUpload },
+  components: { FileUpload, getCode },
   props: {
     // 上级id
     parentId: [Number, String],
-    lcyStatus:''
+    lcyStatus: ''
   },
   data() {
     const defaultForm = {
@@ -114,13 +126,18 @@ export default {
       id: ''
     };
     return {
-      SCFS: 1,
-      folderList:[],
+      rules: {
+        name: [{ required: true, message: '请输入', trigger: 'blur' }],
+        code: [{ required: true, message: '请输入', trigger: 'blur' }],
+        directoryId: [{ required: true, message: '请选择', trigger: 'blur' }],
+        storagePath: [{ required: true, message: '请选择', trigger: 'blur' }]
+      },
+      folderList: [],
       defaultForm,
+      code: '',
       // 表单数据
       form: { ...defaultForm },
-      // 表单验证规则
-      rules: {},
+
       // 提交状态
       loading: false,
       showEditFlag: false,
@@ -136,7 +153,7 @@ export default {
   },
   created() {},
   methods: {
-    async open(type, row,folderList) {
+    async open(type, row, folderList) {
       this.title = type === 'edit' ? '编辑' : '新增';
       this.showEditFlag = true;
       this.type = type;
@@ -146,13 +163,22 @@ export default {
         this.form = await fileGetByIdAPI(row.id);
         this.form.type = this.form.type + '';
       }
-      this.folderList=JSON.parse(JSON.stringify(folderList))
+      this.folderList = JSON.parse(JSON.stringify(folderList));
       setFolderList(this.folderList); //权限过滤
-
+    },
+    getCodeOpen() {
+      this.$refs.getCode.open();
     },
     fileChange(file) {
       this.form.name = file.name.replace(/\.[^/.]+$/, '');
     },
+    success(code) {
+      this.code = code;
+      this.$nextTick(()=>{
+        this.$set(this.form, 'code', code);
+
+      })
+    },
     /* 保存编辑 */
     save() {
       let issue_ = false;
@@ -170,7 +196,7 @@ export default {
           data.checkOutTime = null;
           issue_ = await this.issue();
         }
-        data.lcyStatus=this.lcyStatus
+        data.lcyStatus = this.lcyStatus;
         // console.log(issue_, 'issue_');
         // return;
         this.loading = true;

+ 39 - 11
src/views/doc/components/file-table-list.vue

@@ -7,6 +7,7 @@
       :datasource="datasource"
       height="calc(30vh)"
       tool-class="ele-toolbar-form"
+      
       :needPage="false"
       row-key="id"
       :current.sync="current"
@@ -79,7 +80,7 @@
           :disabled="selection.length > 1"
           v-if="
             isPower(current, 'checkEnter', selection) &&
-            current.checkOutStatus == 1 &&
+            current?.checkOutStatus == 1 &&
             lcyStatus == 1
           "
         >
@@ -91,7 +92,7 @@
           :disabled="selection.length > 1"
           v-if="
             isPower(current, 'checkOut', selection) &&
-            !current.checkOutStatus &&
+            !current?.checkOutStatus &&
             lcyStatus == 1 &&
             pageName != 'personal' &&
             pageName != 'template'
@@ -102,7 +103,7 @@
         <el-button
           type="primary"
           :disabled="selection.length > 1"
-          v-if="current?.id"
+          v-if="current?.id||selection.length>0"
         >
           发起流程
         </el-button>
@@ -110,6 +111,7 @@
         <el-button
           type="primary"
           v-if="isPower(current, 'download', selection)"
+          @click.native="getFile()"
         >
           下载
         </el-button>
@@ -253,19 +255,23 @@
         v-if="
           isPower(current) &&
           !isCheckOut(current) &&
-          lcyStatus == 1 &&
           pageName != 'personal' &&
           pageName != 'template'
         "
       >
-        <Power @powerSave="powerSave" ref="PowerRef" />
+        <Power style="" @powerSave="powerSave" ref="PowerRef" />
       </el-tab-pane>
       <el-tab-pane label="操作日志"
         ><Action :parentId="current?.id"
       /></el-tab-pane>
     </el-tabs>
     <!-- 编辑弹窗 -->
-    <file-edit ref="fileEditRef" :parentId="parentData?.id" @done="reload" :lcyStatus="lcyStatus" />
+    <file-edit
+      ref="fileEditRef"
+      :parentId="parentData?.id"
+      @done="reload"
+      :lcyStatus="lcyStatus"
+    />
     <ele-modal
       width="500px"
       :visible.sync="showEditFlag"
@@ -289,7 +295,7 @@ import Issue from './issue.vue';
 import Action from './action.vue';
 import Change from './change.vue';
 import { isPower, isCheckOut } from '../util.js';
-
+import { getFile } from '@/api/system/file/index.js';
 import {
   fileDeleteAPI,
   filePageAPI,
@@ -337,7 +343,7 @@ export default {
       isPower,
       isCheckOut,
       selection: [],
-      current: { id: '' },
+      current: {  },
       fileUrl: '',
       // 表格列配置
       columns: [
@@ -347,7 +353,9 @@ export default {
           columnKey: 'selection',
           align: 'center',
           selectable: (row, index) => {
-            return !this.disabledTableList.map(item=>item.id).includes(row.id);
+            return !this.disabledTableList
+              .map((item) => item.id)
+              .includes(row.id);
           }
         },
         {
@@ -466,7 +474,6 @@ export default {
       ],
       // 是否显示编辑弹窗
       showEditFlag: false,
-      current: null
     };
   },
   created() {},
@@ -490,7 +497,8 @@ export default {
     },
     rowClick(row) {
       let url = sessionStorage.filePath + row.storagePath[0].storePath;
-      this.fileUrl = 'http://192.168.1.124:8012/onlinePreview?url=' + btoa(url);
+      this.fileUrl =
+        'http://aiot.zoomwin.com.cn:51001/kkfile/onlinePreview?url' + btoa(url);
       this.$nextTick(() => {
         this.$refs.PowerRef &&
           this.$refs.PowerRef.setTableList(row.userAuthority);
@@ -550,7 +558,27 @@ export default {
     },
     done() {
       this.$refs.table.reRenderTable();
+      this.selection=[]
+      
+    },
+    //下载
+    getFile() {
+      if(this.selection.length>0){
+        this.selection.forEach(item=>{
+        getFile({ objectName: item.storagePath[0].storePath }, item.storagePath[0].name);
+      })
+      }else{
+        getFile({ objectName: this.current.storagePath[0].storePath }, this.current.storagePath[0].name);
+      }
+      
+      
     },
+    // selectionChange( selection){
+    //   console.log( selection,' selection')
+    //   let data=selection[selection.length-1]
+    //   this.current=data||this.current
+    //   this.rowClick(this.current)
+    // },
     /* 删除 */
     remove(row) {
       if (isCheckOut(this.current)) {

+ 177 - 0
src/views/doc/components/getCode.vue

@@ -0,0 +1,177 @@
+<!-- 用户编辑弹窗 -->
+<template>
+  <ele-modal
+    width="500px"
+    :visible.sync="showEditFlag"
+    :close-on-click-modal="false"
+    custom-class="ele-dialog-form"
+    append-to-body
+    @close="cancel"
+    title="申请编码"
+  >
+    <el-form ref="form" :model="form" :rules="rules" label-width="82px">
+      <el-row :gutter="15">
+        <el-col :span="24">
+          <el-form-item label="编码分类" prop="type">
+            <ele-tree-select
+              clearable
+              :data="list"
+              v-model="form.type"
+              placeholder="请选择"
+              default-expand-all
+              labelKey="name"
+              childrenKey="sonDirectoryList"
+              valueKey="id"
+              @change="typeChange"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="编码方案" prop="type1">
+            <el-select
+              v-model="form.type1"
+              placeholder="请选择"
+              style="width: 100%"
+              @change="type1Change"
+            >
+              <el-option
+                v-for="item in options"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="编码预览" prop="code">
+            <el-input v-model="form.code" disabled></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+    <headerTitle title="编码码段"></headerTitle>
+    <template v-slot:footer>
+      <el-button @click="cancel">取消</el-button>
+      <el-button type="primary" @click="save"> 确认 </el-button>
+    </template>
+  </ele-modal>
+</template>
+
+<script>
+import {
+  selectTreeList,
+  listParentId,
+  pageSegment,
+  getCode
+} from '@/api/businessCode';
+import headerTitle from '@/components/header-title/index.vue';
+
+export default {
+  data() {
+    return {
+      rules: {
+        type: [{ required: true, message: '请选择', trigger: 'blur' }],
+        type1: [{ required: true, message: '请选择', trigger: 'blur' }],
+        code: [{ required: true, message: '请申请', trigger: 'blur' }]
+      },
+      list: [],
+      options: [],
+      // 表单数据
+      form: {
+        type: '',
+        code: '',
+        type1: ''
+      },
+
+      showEditFlag: false
+    };
+  },
+  computed: {
+    // 是否开启响应式布局
+    styleResponsive() {
+      return this.$store.state.theme.styleResponsive;
+    }
+  },
+  components: {
+    headerTitle
+  },
+  created() {},
+  methods: {
+    async open() {
+      this.list = await selectTreeList();
+      this.setTree(this.list);
+      this.showEditFlag = true;
+    },
+    setTree(data) {
+      data.forEach((item) => {
+        item.sonDirectoryList = item.sonDirectoryList.filter(
+          (item) => item.type == 1
+        );
+        if (item.sonDirectoryList.length > 0) {
+          this.setTree(item.sonDirectoryList);
+        }
+      });
+    },
+    async typeChange(val) {
+      let data = await listParentId({
+        pageNum: 1,
+        size: 100,
+        parentId: val
+      });
+      this.options = data.list.filter((item) => item.type == 2);
+      this.form.type1 = '';
+    },
+    async type1Change(val) {
+      this.form.code = await getCode(val);
+      // let data = await pageSegment({
+      //   pageNum: 1,
+      //   size: 100,
+      //   businessCodeCategoryId: val
+      // });
+      // data.list.map((item) =>{
+      //   console.log(item,'dsds')
+      // });
+      // console.log(code, 'ds');
+      // this.options = data.list.map((item) => item.type == 2);
+    },
+    /* 保存编辑 */
+    save() {
+      this.$emit('success', this.form.code);
+      this.cancel();
+    },
+
+    cancel() {
+      this.form.type = '';
+      this.form.code = '';
+      this.showEditFlag = false;
+    }
+  }
+};
+</script>
+<style scoped lang="scss">
+.aaa {
+  width: 100%;
+
+  ::v-deep .upload-demo {
+    width: 100%;
+
+    .el-upload--text {
+      width: 100%;
+
+      button {
+        width: 100%;
+        background: #ffffff;
+        border: 1px solid #dbdbdb;
+        border-radius: 5px;
+      }
+    }
+
+    .el-upload-list {
+      transform: translate(10px, -39px);
+      position: absolute;
+    }
+  }
+}
+</style>

+ 19 - 11
src/views/doc/components/main.vue

@@ -8,9 +8,9 @@
       >
         <div>
           <!-- 操作按钮 -->
-          <!-- <ele-toolbar class="ele-toolbar-actions">
+          <ele-toolbar class="ele-toolbar-actions">
             <div style="margin: 5px 0">
-              <el-button
+              <!-- <el-button
                 size="small"
                 type="primary"
                 icon="el-icon-plus"
@@ -38,19 +38,21 @@
                 @click="remove"
               >
                 删除
-              </el-button>
+              </el-button> -->
             </div>
-          </ele-toolbar> -->
+          </ele-toolbar>
           <div class="ele-border-lighter sys-organization-list">
             <el-tree
               ref="tree"
               :data="data"
               highlight-current
+              :draggable="true"
               node-key="id"
               :props="{ label: 'name', children: 'sonDirectoryList' }"
               :expand-on-click-node="false"
               :default-expand-all="true"
               @node-click="onNodeClick"
+              :allow-drop="allowDrop"
             >
               <span
                 class="custom-tree-node"
@@ -149,7 +151,6 @@
 </template>
 
 <script>
-
 //
 import fileTableList from '@/views/doc/components/file-table-list.vue';
 import folderEdit from '@/views/doc/components/folder-edit.vue';
@@ -170,13 +171,15 @@ export default {
   name: 'SystemOrganization',
   components: { fileTableList, folderEdit, ElementTreeLine, Power },
   props: {
-    fileType: '',//0:公共文档 1:个人文档 2:文档模板
-    lcyStatus: '',//1:文档工作区 2:文档归档区 3:文档发布区 4:文档废止区
+    fileType: '', //0:公共文档 1:个人文档 2:文档模板
+    lcyStatus: '', //1:文档工作区 2:文档归档区 3:文档发布区 4:文档废止区
     pageName: '', //页面名称
-    isPop: { //是否弹出
+    isPop: {
+      //是否弹出
       default: false
     },
-    disabledTableList: { //已选择列表
+    disabledTableList: {
+      //已选择列表
       default: () => []
     }
   },
@@ -256,9 +259,14 @@ export default {
         this.current = null;
       }
     },
+    allowDrop(draggingNode, dropNode, type) {
+      //拖拽限制
+      return dropNode.parent.id == draggingNode.parent.id && type != 'inner';
+    },
     clicka() {
       this.visible = false;
     },
+
     onRightClick(data) {
       this.rightData = data;
       this.visible = true;
@@ -329,7 +337,7 @@ export default {
 
 <style lang="scss" scoped>
 .sys-organization-list {
-  height: calc(100vh - 264px);
+  height: calc(100vh - 180px);
   box-sizing: border-box;
   border-width: 1px;
   border-style: solid;
@@ -337,7 +345,7 @@ export default {
 }
 
 .sys-organization-list :deep(.el-tree-node__content) {
-  height: 40px;
+  height: 30px;
 
   & > .el-tree-node__expand-icon {
     margin-left: 10px;

+ 1 - 0
src/views/doc/components/power/add.vue

@@ -184,4 +184,5 @@ export default {
 :deep(.el-checkbox__input.is-disabled .el-checkbox__inner){
   background-color: #f3f3f3;
 }
+
 </style>

+ 16 - 3
src/views/doc/components/power/index.vue

@@ -5,7 +5,7 @@
       ref="table"
       :columns="columns"
       :datasource="tableList"
-      height="calc(70vh - 339px)"
+      :height="height"
       tool-class="ele-toolbar-form"
       cache-key="systemOrgUserTable"
       :needPage="false"
@@ -25,6 +25,7 @@
           icon="el-icon-plus"
           class="ele-btn-icon"
           @click="openEdit()"
+          v-if="isAdd"
         >
           添加
         </el-button>
@@ -82,8 +83,14 @@ export default {
         { name: 'print', label: '打印' }
       ]
     },
-    isSave:{
-      default:true
+    isSave: {
+      default: true
+    },
+    isAdd: {
+      default: true
+    },
+    height:{
+      default:'calc(70vh - 339px)'
     }
   },
 
@@ -176,3 +183,9 @@ export default {
   }
 };
 </script>
+<style scoped lang="scss">
+:deep(.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner) {
+  background-color: var(--color-primary);
+  border-color: var(--color-primary);
+}
+</style>

+ 0 - 13
src/views/doc/doc_classify/components/addOrEditDialog.vue

@@ -1,13 +0,0 @@
-<script>
-export default {
-  name: "addOrEditDialog"
-}
-</script>
-
-<template>
-
-</template>
-
-<style scoped lang="scss">
-
-</style>

+ 0 - 168
src/views/doc/doc_classify/components/searchIndex.vue

@@ -1,168 +0,0 @@
-<!-- 搜索表单 -->
-<template>
-  <el-form
-    label-width="100px"
-    class="ele-form-search"
-    @keyup.enter.native="search"
-    @submit.native.prevent
-  >
-    <el-row :gutter="15">
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="需求类型:" prop="sourceCode">
-          <DictSelection
-            dictName="需求来源类型"
-            clearable
-            v-model="params.sourceType"
-            @itemChange="chaengSource"
-          >
-          </DictSelection>
-        </el-form-item>
-      </el-col>
-
-      <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="需求部门名称:" prop="requireDeptName">
-          <el-input
-            clearable
-            placeholder="请输入"
-            v-model.trim="params.requireDeptName"
-          ></el-input>
-        </el-form-item>
-      </el-col> -->
-
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="需求部门:" prop="requireDeptName">
-          <el-input
-            clearable
-            placeholder="请输入"
-            v-model.trim="params.requireDeptName"
-          ></el-input>
-        </el-form-item>
-      </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="需求名称:" prop="requirementName">
-          <el-input
-            clearable
-            placeholder="请输入"
-            v-model.trim="params.requirementName"
-          ></el-input>
-        </el-form-item>
-      </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="完成日期:" prop="finishDateStart">
-          <el-date-picker
-            v-model="finishDate"
-            @change="changeDate"
-            style="width: 100%"
-            type="daterange"
-            value-format="yyyy-MM-dd"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
-          >
-          </el-date-picker>
-        </el-form-item>
-      </el-col>
-    </el-row>
-    <el-row :gutter="15">
-
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="创建时间:" prop="createTimeStart">
-          <el-date-picker
-            style="width: 100%"
-            v-model="createTime"
-            @change="changeCreateTime"
-            type="datetimerange"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            start-placeholder="开始时间"
-            end-placeholder="结束时间"
-            :default-time="['00:00:00', '23:59:59']"
-          >
-          </el-date-picker>
-        </el-form-item>
-      </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="组织机构:">
-          <auth-selection v-model="params.deptIds" style="width: 100%"></auth-selection>
-        </el-form-item>
-      </el-col>
-      <el-col style="display: flex;justify-content: end" v-bind="styleResponsive ? { lg: 12, md: 12 } : { span: 12 }">
-        <div class="ele-form-actions">
-          <el-button
-            type="primary"
-            icon="el-icon-search"
-            class="ele-btn-icon"
-            @click="search"
-          >
-            查询
-          </el-button>
-          <el-button @click="reset">重置</el-button>
-        </div>
-      </el-col>
-    </el-row>
-  </el-form>
-</template>
-<script>
-  export default {
-    data() {
-      // 默认表单数据
-      const defaultParams = {
-        finishDateStart: '',
-        finishDateEnd: '',
-        createTimeStart: '',
-        createTimeEnd: '',
-        sourceTypeName: '',
-        requirementName: '',
-        sourceType: ''
-      };
-      return {
-        finishDate: [],
-        createTime: [],
-        defaultParams,
-        // 表单数据
-        params: { ...defaultParams }
-      };
-    },
-    computed: {
-      // 是否开启响应式布局
-      styleResponsive() {
-        return this.$store.state.theme.styleResponsive;
-      }
-    },
-    methods: {
-      //选择需求来源类型
-      chaengSource(data) {
-        this.params.sourceTypeName = data?.dictValue;
-      },
-      //选择时间
-      changeDate(e) {
-        this.finishDate = e;
-      },
-      //选择时间
-      changeCreateTime(e) {
-        this.createTime = e;
-      },
-      /* 搜索 */
-      search() {
-        const [finishDateStart, finishDateEnd] = this.finishDate;
-        const [createTimeStart, createTimeEnd] = this.createTime;
-        this.params = Object.assign({}, this.params, {
-          finishDateStart,
-          finishDateEnd,
-          createTimeStart,
-          createTimeEnd
-        });
-        this.$emit('search', {
-          ...this.params
-        });
-      },
-      /*  重置 */
-      reset() {
-        this.finishDate = [];
-        this.createTime = [];
-        this.params = { ...this.defaultParams };
-        this.search();
-      }
-    }
-  };
-</script>
-<style scoped lang="scss">
-</style>

+ 0 - 313
src/views/doc/doc_classify/index.vue

@@ -1,313 +0,0 @@
-<template>
-  <div class="ele-body">
-    <el-card shadow="never" v-loading="loading">
-      <div class="ele-border-lighter form-content" v-loading="loading">
-        <search-index @search="reload"></search-index>
-        <div style="margin-bottom: 10px">
-          <el-button
-            size="small"
-            type="primary"
-            icon="el-icon-plus"
-            class="ele-btn-icon"
-            @click="openEdit('add', {})"
-          >
-            新建
-          </el-button>
-        </div>
-        <el-table
-          :data="tableList"
-          style="width: 100%;margin-bottom: 20px;"
-          height="calc(100vh - 375px)"
-          row-key="id"
-          border
-          default-expand-all
-          :tree-props="{children: 'sonPurchasePlanList', hasChildren: 'hasChildren'}">
-          <el-table-column
-            prop=""
-            type="index"
-            label="序号"
-            :width="60"
-            :showOverflowTooltip="true"
-            align="center">
-          </el-table-column>
-          <el-table-column
-            prop="FLMC"
-            label="分类名称"
-            :minWidth="160"
-            :showOverflowTooltip="true"
-            align="center">
-
-          </el-table-column>
-
-          <el-table-column
-            prop="createTime"
-            label="创建时间"
-            :minWidth="160"
-            :showOverflowTooltip="true"
-            align="center">
-          </el-table-column>
-          <el-table-column
-            prop="status"
-            label="状态"
-            :minWidth="80"
-            :showOverflowTooltip="true"
-            align="center">
-            <template slot-scope="{ row }">
-              {{ getStatus(row.status) }}
-            </template>
-          </el-table-column>
-          <el-table-column
-            prop=""
-            label="操作"
-            :minWidth="200"
-            :resizable="false"
-
-            align="center">
-            <template slot-scope="{ row }">
-              <el-link
-                type="primary"
-                :underline="false"
-                icon="el-icon-edit"
-                v-if="[0, 3].includes(row.status)&&!row.isCut"
-                @click="openEdit('edit', row)"
-              >
-                修改
-              </el-link>
-              <el-link
-                type="primary"
-                :underline="false"
-                icon="el-icon-edit"
-                v-if="[2].includes(row.status)&&!row.isCut"
-                @click="handleSplit(row)"
-              >
-                拆分
-              </el-link>
-              <el-link
-                type="primary"
-                :underline="false"
-                v-if="[2].includes(row.status)&&(!row.isCut||(row.parentId&&row.parentId!=0))"
-                icon="el-icon-plus"
-                @click="addInquiry('add', row)"
-              >
-                生成核价单
-              </el-link>
-              <el-popconfirm
-                class="ele-action"
-                title="确定要删除此信息吗?"
-                v-if="[0, 3].includes(row.status)&&!row.isCut"
-                @confirm="remove([row.id])"
-              >
-                <template v-slot:reference>
-                  <el-link type="danger" :underline="false" icon="el-icon-delete">
-                    删除
-                  </el-link>
-                </template>
-              </el-popconfirm>
-            </template>
-          </el-table-column>
-
-
-        </el-table>
-        <el-pagination
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-          :current-page="pageNum"
-          :page-sizes="[10, 20, 30, 40,50,100]"
-          :page-size="pageSize"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="total">
-        </el-pagination>
-      </div>
-    </el-card>
-    <!-- 多选删除弹窗 -->
-    <!-- <pop-modal
-      :visible.sync="delVisible"
-      content="是否确定删除?"
-      @done="commitBtn"
-    /> -->
-
-  </div>
-</template>
-
-<script>
-
-import searchIndex from "./components/searchIndex.vue";
-
-export default {
-
-  components: {
-    searchIndex,
-  },
-  data() {
-    return {
-      pageSize: 10,
-      pageNum: 1,
-      where: {},
-      total: 0,
-      selection: [], //单选中集合
-      tableList: [], //单选中集合
-      delVisible: false, //批量删除弹框状态
-      loading: false, // 加载状态
-      splitDialogFlag: false, // 加载状态
-
-    };
-  },
-  computed: {
-    columns() {
-      return [
-        {
-          width: 45,
-          type: 'selection',
-          columnKey: 'selection',
-          align: 'center'
-        },
-        {
-          columnKey: 'index',
-          label: '序号',
-          type: 'index',
-          width: 55,
-          align: 'center',
-          showOverflowTooltip: true,
-          fixed: 'left'
-        },
-        {
-          prop: '',
-          slot: '',
-          label: '分类名称',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 200
-        },
-        {
-          prop: 'createTime',
-          label: '创建时间',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 180
-        },
-        {
-          prop: 'status',
-          label: '状态',
-          align: 'center',
-          slot: 'status',
-          showOverflowTooltip: true,
-          minWidth: 120
-        },
-        // {
-        //   prop: 'remark',
-        //   label: '备注',
-        //   align: 'center',
-        //   showOverflowTooltip: true,
-        //   minWidth: 170
-        // },
-        {
-          columnKey: 'action',
-          label: '操作',
-          width: 230,
-          align: 'center',
-          resizable: false,
-          slot: 'action',
-          showOverflowTooltip: true,
-          fixed: 'right'
-        }
-      ]
-    },
-  },
-  created() {
-    //this.datasource();
-  },
-  methods: {
-    /* 表格数据源 */
-    async datasource(pageNum = this.pageNum, pageSize = this.pageSize, where=this.where) {
-      const row = await getTableList({
-        pageNum: pageNum,
-        size: pageSize,
-        ...where
-      });
-      this.tableList = row.list
-      this.total = row.count
-    },
-    handleSizeChange(val) {
-      this.pageSize = val
-      this.datasource()
-    },
-    handleCurrentChange(val) {
-      this.pageNum = val
-      this.datasource()
-    },
-    /* 刷新表格 */
-    reload(where) {
-      this.where = where
-      this.pageNum = 1
-      this.datasource(this.pageNum, this.pageSize, this.where)
-
-    },
-
-    //批量删除
-    allDelBtn() {
-      if (this.selection.length === 0) return;
-      let flag = this.selection.some(item => [1, 2].includes(item.status))
-      if (flag) return this.$message.warning('抱歉已审核、审核中的数据不能删除,请检查')
-      this.delVisible = true;
-    },
-
-    //删除接口
-    remove(delData) {
-      deleteInformation(delData).then((res) => {
-        this.$message.success('删除成功!');
-        this.reload();
-      });
-    },
-
-    //删除弹框确定
-    commitBtn() {
-      const dataId = this.selection.map((v) => v.id);
-      this.remove(dataId);
-    },
-  }
-};
-</script>
-
-<style lang="scss" scoped>
-:deep(.el-link--inner) {
-  margin-left: 0px !important;
-}
-
-.sys-organization-list {
-  height: calc(100vh - 264px);
-  box-sizing: border-box;
-  border-width: 1px;
-  border-style: solid;
-  overflow: auto;
-}
-
-.sys-organization-list :deep(.el-tree-node__content) {
-  height: 40px;
-
-  & > .el-tree-node__expand-icon {
-    margin-left: 10px;
-  }
-}
-
-::v-deep .el-pager li.active {
-  color: #ffffff;
-  background: #1890ff;
-  border-radius: 50%;
-  cursor: default;
-}
-
-::v-deep .el-pager li {
-  padding: 0 4px;
-  background: var(--color-white);
-  vertical-align: top;
-  display: inline-block;
-  font-size: 13px;
-  min-width: 28px;
-  height: 28px;
-  line-height: 28px;
-  cursor: pointer;
-  box-sizing: border-box;
-  text-align: center;
-  margin: 0;
-}
-</style>

+ 118 - 12
src/views/doc/issue_doc/components/edit.vue

@@ -9,7 +9,28 @@
     @close="cancel"
     :title="title"
   >
-    <el-form ref="form" :model="form" :rules="rules" label-width="82px">
+    <div class="switch" v-if="type == 'view'" style="margin-bottom: 10px">
+      <div class="switch_left">
+        <ul>
+          <li
+            v-for="item in tabOptions"
+            :key="item.key"
+            :class="{ active: activeComp == item.key }"
+            @click="activeComp = item.key"
+          >
+            {{ item.name }}
+          </li>
+        </ul>
+      </div>
+    </div>
+    <el-form
+      ref="form"
+      :model="form"
+      :rules="rules"
+      label-width="82px"
+      :disabled="type == 'view'"
+      v-show="activeComp == '发布信息'"
+    >
       <el-row :gutter="15">
         <el-col :span="6">
           <el-form-item label="主题" prop="name">
@@ -120,11 +141,26 @@
         </el-col>
         <el-col :span="24">
           <el-form-item label="通知用户" prop="storagePath">
-            <power :powerArr="powerArr" :isSave="false" ref="powerRef" />
+            <power
+              height="200px"
+              :powerArr="powerArr"
+              :isSave="false"
+              ref="powerRef"
+            />
           </el-form-item>
         </el-col>
       </el-row>
     </el-form>
+    <ele-pro-table
+      v-show="activeComp == '签收记录'"
+      ref="table"
+      :columns="signColumns"
+      :datasource="form.userAuthority"
+      tool-class="ele-toolbar-form"
+      cache-key="systemOrgUserTable"
+      :needPage="false"
+    >
+    </ele-pro-table>
     <template v-slot:footer>
       <el-button @click="cancel">取消</el-button>
       <el-button type="primary" :loading="loading" @click="save">
@@ -150,7 +186,12 @@
       ></Main>
       <template v-slot:footer>
         <el-button @click="mainCancel">取消</el-button>
-        <el-button type="primary" :loading="loading" @click="getTableList">
+        <el-button
+          type="primary"
+          :loading="loading"
+          @click="getTableList"
+          v-if="type != 'view'"
+        >
           确认
         </el-button>
       </template>
@@ -164,8 +205,8 @@ import power from '@/views/doc/components/power/index.vue';
 import Main from '@/views/doc/components/main.vue';
 const defaultForm = {
   name: '', //名称
-  fileList: [{}], //文档集合json
-  userAuthority: [{}], //用户权限集合json
+  fileList: [], //文档集合json
+  userAuthority: [], //用户权限集合json
   releaseTime: '', //发布时间
   failureTime: '', //失效时间
   isAuthority: '', //是否回收权限 0 1
@@ -177,10 +218,20 @@ export default {
   data() {
     return {
       // 表单数据
+      activeComp: '发布信息',
+      tabOptions: [
+        { key: '发布信息', name: '发布信息' },
+        { key: '签收记录', name: '签收记录' },
+        { key: '工作流', name: '工作流' }
+      ],
       form: { ...defaultForm },
       tableList: [],
       // 表单验证规则
-      rules: {},
+      rules: {
+        name: [{ required: true, message: '请输入', trigger: 'blur' }],
+        releaseTime: [{ required: true, message: '请选择', trigger: 'blur' }],
+        failureTime: [{ required: true, message: '请选择', trigger: 'blur' }]
+      },
       // 提交状态
       loading: false,
       title: '',
@@ -279,6 +330,47 @@ export default {
           fixed: 'right'
         }
       ],
+      signColumns: [
+        {
+          columnKey: 'index',
+          type: 'index',
+          label: '序号',
+          width: 55,
+          align: 'center',
+          showOverflowTooltip: true,
+          fixed: 'left'
+        },
+
+        {
+          align: 'center',
+          prop: 'deptName',
+          label: '部门',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
+        {
+          align: 'center',
+          prop: 'name',
+          label: '姓名',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
+        {
+          align: 'center',
+          prop: 'signFor',
+          label: '姓名',
+          showOverflowTooltip: true,
+          formatter: (_row, _column, cellValue) => {
+            return cellValue == 1 ? '是' : '否';
+          }
+        },
+        {
+          align: 'center',
+          prop: 'signForTime',
+          label: '签收时间',
+          showOverflowTooltip: true
+        }
+      ],
       powerArr: [
         { name: 'visible', label: '可见' },
         { name: 'check', label: '查看' },
@@ -298,8 +390,14 @@ export default {
   created() {},
   methods: {
     open(type, row) {
-      console.log(type, 'type');
-      this.title = type == 'add' ? '新增' : type == 'edit' ? '编辑' : '详情';
+      this.title =
+        type == 'add'
+          ? '新增'
+          : type == 'edit'
+          ? '编辑'
+          : type == 'power'
+          ? '回收权限'
+          : '详情';
       this.type = type;
       if (this.type != 'add') {
         this.form = row;
@@ -316,13 +414,21 @@ export default {
         if (!valid) {
           return false;
         }
-
+        this.form.fileList = this.tableList;
+        this.form.userAuthority = this.$refs.powerRef.getTableList();
+        if (this.tableList.length == 0) {
+          this.$message.error('请选择发布文档');
+          return;
+        }
+        if (this.userAuthority.length == 0) {
+          this.$message.error('请选择通知用户');
+          return;
+        }
         this.loading = true;
         if (this.type == 'add') {
           delete this.form.id;
         }
-        this.form.fileList = this.tableList;
-        this.form.userAuthority = this.$refs.powerRef.getTableList();
+
         let URL = this.type == 'add' ? sendSave : sendUpdate;
         URL(this.form)
           .then((msg) => {
@@ -348,7 +454,7 @@ export default {
       this.tableList = this.tableList.filter((item) => item.id != row.id);
     },
     getTableList() {
-      this.tableList = this.$refs.mainRef.getTableList();
+      this.tableList.push(...this.$refs.mainRef.getTableList());
       this.mainCancel();
     }
   }

+ 351 - 0
src/views/doc/sendReceive/receive/components/edit.vue

@@ -0,0 +1,351 @@
+<!-- 用户编辑弹窗 -->
+<template>
+  <ele-modal
+    width="70%"
+    :visible.sync="showEditFlag"
+    :close-on-click-modal="false"
+    custom-class="ele-dialog-form"
+    append-to-body
+    @close="cancel"
+    :title="title"
+  >
+
+  <div class="switch" v-if="type == 'view'" style="margin-bottom: 10px">
+      <div class="switch_left">
+        <ul>
+          <li
+            v-for="item in tabOptions"
+            :key="item.key"
+            :class="{ active: activeComp == item.key }"
+            @click="activeComp = item.key"
+          >
+            {{ item.name }}
+          </li>
+        </ul>
+      </div>
+    </div>
+
+    <el-form ref="form" :model="form" :rules="rules" label-width="82px" :disabled="type == 'view'">
+      <el-row :gutter="15">
+        <el-col :span="8">
+          <el-form-item label="主题" prop="name">
+            <el-input v-model="form.name" placeholder="请输入主题"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="回收人" prop="recycleUserName">
+            <el-input v-model="form.recycleUserName" disabled></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="回收时间" prop="recycleTime">
+            <el-date-picker
+              v-model="form.recycleTime"
+              type="datetime"
+              placeholder="选择日期时间"
+              format="yyyy-MM-dd HH:mm:ss"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              style="width: 100%"
+            >
+            </el-date-picker>
+            <!-- <el-checkbox
+              style="margin-left: 5px"
+              v-model="form.isTimeRelease"
+              :true-label="1"
+              :false-label="0"
+              >按照发布时间进行计划发布</el-checkbox
+            > -->
+          </el-form-item>
+        </el-col>
+        <!-- <el-col :span="6">
+          <el-form-item label="失效时间" prop="failureTime">
+            <el-date-picker
+              v-model="form.failureTime"
+              type="datetime"
+              placeholder="选择日期时间"
+              format="yyyy-MM-dd HH:mm:ss"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              style="width: 100%"
+            >
+            </el-date-picker>
+          </el-form-item>
+        </el-col> -->
+        <el-col :span="8">
+          <el-form-item label="创建人" prop="createUserName">
+            <el-input v-model="form.createUserName" disabled></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="创建时间" prop="createTime">
+            <el-input v-model="form.createTime" disabled style="width: 100%">
+            </el-input>
+            <!-- <el-checkbox
+              style="margin-left: 5px"
+              v-model="form.isAuthority"
+              :true-label="1"
+              :false-label="0"
+              >到失效时间自动回收权限</el-checkbox
+            > -->
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="回收说明" prop="remark">
+            <el-input v-model="form.remark" type="textarea"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="回收信息" prop="releaseList">
+            <ele-pro-table
+              ref="table"
+              :columns="columns"
+              :datasource="form.releaseList"
+              tool-class="ele-toolbar-form"
+              cache-key="systemOrgUserTable"
+              :needPage="false"
+            >
+              <template v-slot:toolbar>
+                <el-button
+                  size="small"
+                  type="primary"
+                  icon="el-icon-plus"
+                  class="ele-btn-icon"
+                  @click="visible = true"
+                >
+                  添加
+                </el-button>
+              </template>
+              <template v-slot:action="{ row }">
+                <el-popconfirm
+                  class="ele-action"
+                  title="确定要删除此信息吗?"
+                  @confirm="remove(row)"
+                >
+                  <template v-slot:reference>
+                    <el-link
+                      type="danger"
+                      :underline="false"
+                      icon="el-icon-delete"
+                    >
+                      删除
+                    </el-link>
+                  </template>
+                </el-popconfirm>
+              </template>
+            </ele-pro-table>
+          </el-form-item>
+        </el-col>
+        <!-- <el-col :span="24">
+          <el-form-item label="通知用户" prop="storagePath">
+            <power
+              :powerArr="powerArr"
+              :isSave="false"
+              :isAdd="false"
+              ref="powerRef"
+            />
+          </el-form-item>
+        </el-col> -->
+      </el-row>
+    </el-form>
+    <template v-slot:footer>
+      <el-button @click="cancel">取消</el-button>
+      <el-button type="primary" :loading="loading" @click="save" v-if="type != 'view'">
+        确认
+      </el-button>
+    </template>
+    <ele-modal
+      width="70%"
+      :visible.sync="visible"
+      :close-on-click-modal="false"
+      custom-class="ele-dialog-form"
+      append-to-body
+      @close="sendCancel"
+    >
+      <send :isPop="true" :disabledList="form.releaseList" ref="sendRef" v-if="visible"></send>
+      <template v-slot:footer>
+        <el-button @click="sendCancel">取消</el-button>
+        <el-button type="primary" :loading="loading" @click="getTableList" >
+          确认
+        </el-button>
+      </template>
+    </ele-modal>
+  </ele-modal>
+</template>
+  
+  <script>
+import { receiveSave } from '@/api/doc-manage';
+import power from '@/views/doc/components/power/index.vue';
+import send from '@/views/doc/sendReceive/send/send.vue';
+const defaultForm = {
+  name: '',
+  releaseList: [], //回收信息集合
+  recycleTime: '', //回收时间
+  recycleUserId: '', //回收人id
+  recycleUserName: '', //回收人名称
+  remark: '', //描述
+  status: '',
+  type: ''
+};
+export default {
+  components: { power,send },
+
+  data() {
+    return {
+      // 表单数据
+      form: { ...defaultForm },
+      userAuthority: [],
+      // 表单验证规则
+      rules: {
+        name: [{ required: true, message: '请输入', trigger: 'blur' }],
+        recycleTime: [{ required: true, message: '请选择', trigger: 'blur' }],
+      },
+      // 提交状态
+      loading: false,
+      title: '',
+      type: '',
+      showEditFlag: false,
+      visible: false,
+      columns: [
+      {
+          width: 45,
+          type: 'index',
+          columnKey: 'index',
+          align: 'center'
+        },
+
+        {
+          label: '主题',
+          align: 'center',
+          prop: 'name',
+          width: 220,
+          showOverflowTooltip: true
+        },
+
+        // {
+        //   align: 'center',
+        //   label: '是否回收权限',
+        //   prop: 'isAuthority',
+        //   width: 120,
+        //   formatter: (_row, _column, cellValue) => {
+        //     return cellValue == 1 ? '是' : '否';
+        //   }
+        // },
+        {
+          align: 'center',
+          label: '回收权限时间',
+          prop: 'isAuthorityTime',
+          width: 180,
+          showOverflowTooltip: true
+        },
+        {
+          align: 'center',
+          label: '失效时间',
+          prop: 'failureTime',
+          width: 180,
+          showOverflowTooltip: true
+        },
+
+        {
+          prop: 'userAuthority',
+          label: '通知用户',
+          align: 'center',
+          formatter: (_row, _column, cellValue) => {
+            return cellValue.map((item) => item.name).toString();
+          }
+        },
+        {
+          align: 'center',
+          label: '发布人',
+          prop: 'releaseUserName',
+          width: 180
+        },
+
+        {
+          prop: 'releaseTime',
+          align: 'center',
+          label: '发布时间',
+          width: 180
+        },
+       
+        {
+          columnKey: 'action',
+          label: '操作',
+          width: 200,
+          align: 'center',
+          resizable: false,
+          slot: 'action',
+          showOverflowTooltip: true,
+          fixed: 'right'
+        }
+      ],
+      powerArr: [
+        // { name: 'visible', label: '可见' },
+        // { name: 'check', label: '查看' },
+        // { name: 'browse', label: '浏览' },
+        // { name: 'download', label: '下载' },
+        // { name: 'print', label: '打印' }
+      ]
+    };
+  },
+  computed: {
+    // 是否开启响应式布局
+    styleResponsive() {
+      return this.$store.state.theme.styleResponsive;
+    }
+  },
+  created() {},
+  methods: {
+    open(type, row) {
+      this.title = type == 'add' ? '新增' : '详情';
+      this.type = type;
+      if (this.type != 'add') {
+        this.form = row;
+      }else{
+        if(row){
+          this.form.releaseList=row
+        }
+      }
+      this.showEditFlag = true;
+    },
+    save() {
+      this.$refs.form.validate((valid) => {
+        if (!valid) {
+          return false;
+        }
+        if (this.releaseList.length == 0) {
+          this.$message.error('请选择回收信息');
+          return;
+        }
+  
+        this.loading = true;
+        receiveSave(this.form)
+          .then((msg) => {
+            this.loading = false;
+            this.$emit('done');
+            this.cancel();
+          })
+          .catch((e) => {
+            this.loading = false;
+          });
+      });
+    },
+    cancel() {
+      this.form = { ...defaultForm };
+      this.showEditFlag = false;
+    },
+    sendCancel() {
+      this.visible = false;
+    },
+    remove(row) {
+      this.form.releaseList = this.form.releaseList.filter((item) => item.id != row.id);
+    },
+
+    getTableList() {
+      this.form.releaseList.push(...this.$refs.sendRef.getTableList())
+      this.sendCancel();
+    }
+  }
+};
+</script>
+  <style scoped lang="scss">
+</style>
+  

+ 17 - 28
src/views/doc/sendReceive/receive/myReceive.vue

@@ -24,10 +24,7 @@ import search from './components/search.vue';
 import { mapGetters } from 'vuex';
 import dictMixins from '@/mixins/dictMixins';
 import {
-  recycleBinPage,
-  getDocTreeListAPI,
-  revoke,
-  recycleDeleteAPI
+  recyclePage,
 } from '@/api/doc-manage';
 export default {
   mixins: [dictMixins],
@@ -49,20 +46,20 @@ export default {
           label: '主题',
           align: 'center',
           prop: 'name',
+          slot: 'name',
           showOverflowTooltip: true
         },
 
         {
           align: 'center',
           label: '描述',
-          prop: 'isAuthority',
+          prop: 'remark',
           showOverflowTooltip: true
-      
         },
         {
           align: 'center',
           label: '回收时间',
-          prop: 'isAuthorityTime',
+          prop: 'recycleTime',
           width: 180,
           showOverflowTooltip: true
         },
@@ -70,30 +67,29 @@ export default {
         {
           align: 'center',
           label: '回收人',
-          prop: 'releaseUserName',
+          prop: 'recycleUserName',
           width: 180
         },
 
         {
-          prop: 'releaseTime',
+          prop: 'createTime',
           align: 'center',
           label: '创建时间',
           width: 180
         },
-        {
-          align: 'center',
-          label: '状态',
-          prop: 'status',
-          width: 100,
-          formatter: (_row, _column, cellValue) => {
-            return cellValue == 1 ? '已发布' : '未发布';
-          }
-        },
+        // {
+        //   align: 'center',
+        //   label: '状态',
+        //   prop: 'status',
+        //   width: 100,
+        //   formatter: (_row, _column, cellValue) => {
+        //     return cellValue == 1 ? '已发布' : '未发布';
+        //   }
+        // }
       ]
     };
   },
   created() {
-    this.getDocTreeListAPI();
   },
   computed: {
     ...mapGetters(['user'])
@@ -102,16 +98,9 @@ export default {
     openEdit(type, row) {
       this.$refs.editRef.open(type, row);
     },
-    async getDocTreeListAPI() {
-      let query = {
-        type: 0,
-        currentUserId: this.user.info.userId
-      };
-      this.folderList = await getDocTreeListAPI(query);
-      console.log(this.folderList);
-    },
+
     datasource({ page, where, limit }) {
-      return recycleBinPage({
+      return recyclePage({
         ...where,
         pageNum: page,
         size: limit

+ 27 - 26
src/views/doc/sendReceive/receive/receive.vue

@@ -17,7 +17,15 @@
         >
           新建
         </el-button>
-    
+      </template>
+      <template v-slot:name="{ row }">
+        <el-link
+          type="primary"
+          :underline="false"
+          @click="openEdit('view', row)"
+        >
+          {{ row.name }}
+        </el-link>
       </template>
       <!-- 操作列 -->
       <!-- <template v-slot:action="{ row }">
@@ -43,15 +51,10 @@
 </template>
 <script>
 import search from './components/search.vue';
-import edit from '@/views/doc/issue_doc/components/edit.vue';
+import edit from './components/edit.vue';
 import { mapGetters } from 'vuex';
 import dictMixins from '@/mixins/dictMixins';
-import {
-  sendPage,
-  getDocTreeListAPI,
-  revoke,
-  recycleDeleteAPI
-} from '@/api/doc-manage';
+import { receivePage, revoke, recycleDeleteAPI } from '@/api/doc-manage';
 export default {
   mixins: [dictMixins],
   components: {
@@ -79,20 +82,20 @@ export default {
           label: '主题',
           align: 'center',
           prop: 'name',
+          slot: 'name',
           showOverflowTooltip: true
         },
 
         {
           align: 'center',
           label: '描述',
-          prop: 'isAuthority',
+          prop: 'remark',
           showOverflowTooltip: true
-      
         },
         {
           align: 'center',
           label: '回收时间',
-          prop: 'isAuthorityTime',
+          prop: 'recycleTime',
           width: 180,
           showOverflowTooltip: true
         },
@@ -100,25 +103,25 @@ export default {
         {
           align: 'center',
           label: '回收人',
-          prop: 'releaseUserName',
+          prop: 'recycleUserName',
           width: 180
         },
 
         {
-          prop: 'releaseTime',
+          prop: 'createTime',
           align: 'center',
           label: '创建时间',
           width: 180
         },
-        {
-          align: 'center',
-          label: '状态',
-          prop: 'status',
-          width: 100,
-          formatter: (_row, _column, cellValue) => {
-            return cellValue == 1 ? '已发布' : '未发布';
-          }
-        },
+        // {
+        //   align: 'center',
+        //   label: '状态',
+        //   prop: 'status',
+        //   width: 100,
+        //   formatter: (_row, _column, cellValue) => {
+        //     return cellValue == 1 ? '已发布' : '未发布';
+        //   }
+        // }
         // {
         //   columnKey: 'action',
         //   label: '操作',
@@ -130,9 +133,7 @@ export default {
       ]
     };
   },
-  created() {
-    this.getDocTreeListAPI();
-  },
+  created() {},
   computed: {
     ...mapGetters(['user'])
   },
@@ -142,7 +143,7 @@ export default {
     },
 
     datasource({ page, where, limit }) {
-      return sendPage({
+      return receivePage({
         ...where,
         pageNum: page,
         size: limit

+ 42 - 16
src/views/doc/sendReceive/send/mySend.vue

@@ -9,10 +9,15 @@
     >
       <!-- 表头工具栏 -->
       <template v-slot:toolbar>
-        <el-button type="primary" class="ele-btn-icon" @click="openEdit('add')">
+        <el-button
+          type="primary"
+          :disabled="selection.length == 0"
+          class="ele-btn-icon"
+          @click="signFor()"
+        >
           签收
         </el-button>
-        <el-button type="primary" class="ele-btn-icon" @click="openEdit('add')">
+        <el-button type="primary" class="ele-btn-icon" @click="allSignFor()">
           一键签收
         </el-button>
       </template>
@@ -23,9 +28,7 @@
 import search from './components/search.vue';
 import { mapGetters } from 'vuex';
 import dictMixins from '@/mixins/dictMixins';
-import {
-  releasePage
-} from '@/api/doc-manage';
+import { releasePage, signFor,allSignFor } from '@/api/doc-manage';
 export default {
   mixins: [dictMixins],
   components: {
@@ -39,7 +42,13 @@ export default {
           width: 45,
           type: 'selection',
           columnKey: 'selection',
-          align: 'center'
+          align: 'center',
+          selectable: (row, index) => {
+            let data = row.userAuthority.find(
+              (item) => item.id == this.user.info.userId
+            );
+            return data.signFor != 1;
+          }
         },
         {
           width: 45,
@@ -57,9 +66,15 @@ export default {
         {
           align: 'center',
           label: '我已签收',
-          prop: 'directoryId',
+          prop: 'userAuthority',
+          formatter: (_row, _column, cellValue) => {
+            let data = cellValue.find(
+              (item) => item.id == this.user.info.userId
+            );
+            return data.signFor == 1 ? '是' : '否';
+          }
         },
-  
+
         {
           align: 'center',
           label: '是否回收权限',
@@ -96,19 +111,15 @@ export default {
           align: 'center',
           label: '发布时间',
           width: 180
-        },
-     
+        }
       ]
     };
   },
-  created() {
-  },
+  created() {},
   computed: {
     ...mapGetters(['user'])
   },
   methods: {
-
-
     datasource({ page, where, limit }) {
       return releasePage({
         ...where,
@@ -122,8 +133,23 @@ export default {
         page: 1
       });
     },
-
-
+    signFor() {
+      let ids = this.selection.map((item) => item.id);
+      signFor(ids)
+        .then((message) => {
+          this.$message.success(message);
+          this.done();
+        })
+        .catch((e) => {});
+    },
+    allSignFor() {
+      allSignFor()
+        .then((message) => {
+          this.$message.success(message);
+          this.done();
+        })
+        .catch((e) => {});
+    },
 
     done() {
       this.$refs.search.search();

+ 47 - 16
src/views/doc/sendReceive/send/send.vue

@@ -8,7 +8,7 @@
       :datasource="datasource"
     >
       <!-- 表头工具栏 -->
-      <template v-slot:toolbar>
+      <template v-slot:toolbar  v-if="!isPop">
         <el-button
           type="primary"
           icon="el-icon-plus"
@@ -20,13 +20,30 @@
         <el-button type="primary" class="ele-btn-icon" @click="openEdit('add')">
           发布
         </el-button>
-        <el-button type="primary" class="ele-btn-icon" @click="openEdit('add')">
+        <el-button type="primary" class="ele-btn-icon"    @click="receive">
           回收
         </el-button>
+        <el-button type="primary" class="ele-btn-icon" :disabled="selection.length>1"   @click="openEdit('power')">
+          回收权限
+        </el-button>
+      </template>
+      <template v-slot:name="{ row }" >
+        <el-link
+          type="primary"
+          :underline="false"
+          @click="openEdit('view', row)"
+        >
+          {{row.name}}
+        </el-link>
       </template>
       <!-- 操作列 -->
-      <template v-slot:action="{ row }">
-        <el-link type="primary" :underline="false" icon="el-icon-edit" @click="openEdit('edit',row)">
+      <template v-slot:action="{ row }" v-if="!isPop">
+        <el-link
+          type="primary"
+          :underline="false"
+          icon="el-icon-edit"
+          @click="openEdit('edit', row)"
+        >
           编辑
         </el-link>
 
@@ -44,24 +61,30 @@
       </template>
     </ele-pro-table>
     <edit ref="editRef" @done="done"></edit>
+    <receiveEdit ref="receiveEditRef" @done="done"></receiveEdit>
   </div>
 </template>
 <script>
 import search from './components/search.vue';
 import edit from '@/views/doc/issue_doc/components/edit.vue';
+import receiveEdit from '@/views/doc/sendReceive/receive/components/edit.vue';
 import { mapGetters } from 'vuex';
 import dictMixins from '@/mixins/dictMixins';
-import {
-  sendPage,
-  getDocTreeListAPI,
-  revoke,
-  recycleDeleteAPI
-} from '@/api/doc-manage';
+import { sendPage, recycleDeleteAPI } from '@/api/doc-manage';
 export default {
   mixins: [dictMixins],
   components: {
     search,
-    edit
+    edit,receiveEdit
+  },
+  props: {
+    isPop:{
+      default:false
+    },
+    disabledList: {
+      //已选择列表
+      default: () => []
+    }
   },
   data() {
     return {
@@ -71,7 +94,10 @@ export default {
           width: 45,
           type: 'selection',
           columnKey: 'selection',
-          align: 'center'
+          align: 'center',
+          selectable: (row, index) => {
+            return !this.disabledList.map(item=>item.id).includes(row.id);
+          }
         },
         {
           width: 45,
@@ -85,6 +111,7 @@ export default {
           align: 'center',
           prop: 'name',
           width: 220,
+          slot:'name',
           showOverflowTooltip: true
         },
 
@@ -117,7 +144,7 @@ export default {
           label: '通知用户',
           align: 'center',
           formatter: (_row, _column, cellValue) => {
-            return cellValue.map(item=>item.name).toString()
+            return cellValue.map((item) => item.name).toString();
           }
         },
         {
@@ -153,9 +180,7 @@ export default {
       ]
     };
   },
-  created() {
-    this.getDocTreeListAPI();
-  },
+  created() {},
   computed: {
     ...mapGetters(['user'])
   },
@@ -189,6 +214,12 @@ export default {
 
     done() {
       this.$refs.search.search();
+    },
+    receive(){
+      this.$refs.receiveEditRef.open('add',JSON.parse(JSON.stringify(this.selection)));
+    },
+    getTableList(){
+      return JSON.parse(JSON.stringify(this.selection))
     }
   }
 };

+ 7 - 4
src/views/doc/util.js

@@ -1,11 +1,14 @@
 import store from '@/store';
 const userId = store.state.user.info.userId
 export function isPower(data = {}, power, selection = []) {
-
-    if (!data?.id) {
+     if(power=='download'){
+console.log(!data?.id&&selection.length==0)
+     }
+    if (!data?.id&&selection.length==0) {
         return false
+        
     }
-    if (power == 'checkEnter' && data.checkOutUserId != userId) { //检入特殊处理
+    if (power == 'checkEnter' && data?.checkOutUserId != userId) { //检入特殊处理
         return false
     }
     if (selection.length > 0) { //多选情况处理
@@ -45,7 +48,7 @@ export function isPower(data = {}, power, selection = []) {
     }
 }
 export function isCheckOut(data = {}) { //检出判断
-    if (data.checkOutStatus == 1 && data.checkOutUserId != userId) {
+    if (data?.checkOutStatus == 1 && data?.checkOutUserId != userId) {
         return true
     }
 }