y595705120 3 年之前
父节点
当前提交
a1c8d4a40e

+ 26 - 0
src/api/article.js

@@ -39,6 +39,14 @@ export const getMyArticalList = (data) => {
         data
     })
 }
+export const getDeleteArticalList = (data) => {
+    return service({
+        url: "/api/artical/getDeleteArticalList",
+        method: 'post',
+        data
+    })
+}
+
 
 export const getEditArticalList = (data) => {
     return service({
@@ -121,6 +129,14 @@ export const getArticalInfo = (data) => {
     })
 }
 
+export const getDeleteArticalInfo = (data) => {
+    return service({
+        url: "/api/artical/getDeleteArticalInfo",
+        method: 'post',
+        data
+    })
+}
+
 
 export const likeArtical = (data) => {
     return service({
@@ -220,3 +236,13 @@ export const deleteArtical = (data) => {
         data
     })
 }
+
+export const cleanArtical = (data) => {
+    return service({
+        url: "/api/artical/cleanArtical",
+        method: 'post',
+        data
+    })
+}
+
+

+ 1 - 1
src/assets/css/main.css

@@ -64,7 +64,7 @@
 
 .el-popover{
   margin-top:-52px;
-  margin-left: -30px;
+  margin-left: -60px;
 }
 
 

+ 20 - 1
src/pages/data/data.js

@@ -6,6 +6,7 @@ import {
   getPublishArticalList,
   getConfirmArticalList,
   getManageArticalList,
+  getDeleteArticalList,
   getEditArticalList
 } from '@/api/article'
 
@@ -72,6 +73,8 @@ export default {
       value: '我经办文件',
       label: '我经办文件',
       isLeader: 1,
+      _edit:true,
+      _delete: true,
       listApi: getEditArticalList
     },
     {
@@ -79,6 +82,8 @@ export default {
       value: '我上传的文件',
       label: '我上传的文件',
       isLeader: 1,
+      _edit:true,
+      _delete: true,
       listApi: getMyArticalList
     },
     {
@@ -86,30 +91,44 @@ export default {
       value: '我审核的文件',
       label: '我审核的文件',
       isLeader: 2,
+      _confirm:true,
       listApi: getConfirmArticalList
     },
     {
       id: "3",
       value: '我发布的文件',
       label: '我发布的文件',
-      isLeader: 3,
+      _publish:true,
+      action:['publish'],
       listApi: getPublishArticalList
     },
    {
     id: "4",
     value: '我收藏的文件',
     label: '我收藏的文件',
+    _info:true,
     listApi: getArticalLikeList
   }, {
     id: "5",
     value: '最近浏览的文件',
     label: '最近浏览的文件',
+    _info:true,
     listApi: getViewArticalList
   }, {
     id: "6",
     value: '最近下载的文件',
     label: '最近下载的文件',
+    _info:true,
     listApi: getDownloadArticalList
+  },
+  {
+    id: "7",
+    value: '删除的文件',
+    label: '删除的文件',
+    isLeader: 1,
+    _recover:true,
+    _clean: true,
+    listApi: getDeleteArticalList
   }
   ]
 }

+ 56 - 0
src/pages/other/components/IDepartment.vue

@@ -0,0 +1,56 @@
+<template>
+  <div style="margin-top: -30px;padding: 10px;">
+      <el-button type="text" @click="setValueNull()" > 选择所有部门 </el-button>
+      <div>
+        <h1 align="center"> 机关各科室 </h1>
+        <el-row>
+          <el-col :span="8" v-for="item in userDepartments"  v-if="item.menuId==0">
+            <el-button  type="text" @click="selectDepartment(item)"  >
+              {{ item.department}}
+            </el-button>
+          </el-col>
+        </el-row>
+      </div>
+      <div>
+        <h1 align="center"> 局属各单位 </h1>
+        <el-row>
+          <el-col :span="8" v-for="item in userDepartments"  v-if="item.menuId==1">
+            <el-button  type="text" @click="selectDepartment(item)" >
+              {{ item.department}}
+            </el-button>
+          </el-col>
+        </el-row>
+      </div>
+  </div>
+</template>
+<script>
+  import {  mapGetters } from "vuex";
+
+export default {
+  name: "dropSelect",
+  data() {
+    return {
+    };
+  },
+  computed: {
+    ...mapGetters("user", ["userDepartments"])
+  },
+  methods: {
+    setValueNull() {
+      this.$emit("select", { departmentId: 0, department: "" });
+    },
+    selectDepartment(item){
+      this.$emit("select", item );
+    }
+
+  },
+};
+</script>
+<style>
+.el-scrollbar {
+  display: block !important;
+}
+.el-select {
+  display: inline;
+}
+</style>

+ 21 - 19
src/pages/other/file-add.vue

@@ -62,22 +62,13 @@
              <!-- <el-input class="ipt-select" type="textarea" v-model="info.brief"></el-input> -->
          </el-form-item>
 
-         <el-form-item label="上传附件"  prop="filename" v-if="info.articalId==0">
-            <upload-file  placeholder="上传文档"  @rmImage="info.filename=''"  @onFinish="onUpload"/>
-         </el-form-item>
-
           <el-form-item label="">
               <el-button type="primary" @click="onSubmit" class="btn-md">
                 提交文件
               </el-button>
 
               <el-button type="primary" @click="preview(info.filename )" v-if="info.articalId>0" class="btn-md">
-                预览附件
-              </el-button>
-
-
-              <el-button type="primary" @click="gotoDetail(info )" v-if="info.articalId>0" class="btn-md">
-                查看文件
+                下载附件
               </el-button>
 
           </el-form-item>
@@ -93,7 +84,7 @@
   import Tinymce from "@/components/Tinymce/index.vue";
   import data  from '../data/data.js'
   import {mapGetters } from 'vuex'
-  import {addArtical,getArticalInfo, editArtical} from '@/api/article.js'
+  import {addArtical,getArticalInfo, editArtical, getDeleteArticalInfo} from '@/api/article.js'
   import { authDB } from '@/db'
   export default {
     name: 'application',
@@ -103,6 +94,7 @@
         loading:false,
         isLike: 0,
         articalId:0,
+        recover: false,
         dropDownValue:'',
         showDepartments:[],
         categorys:data.categorys,
@@ -141,8 +133,9 @@
     },
     created(){
       this.articalId = +this.$route.query.articalId;
-      if( this.articalId){
-        this.loadArtical(  this.articalId )
+      this.recover = this.$route.query.recover;
+      if( this.articalId ){
+        this.loadArtical(  this.articalId, this.recover )
       }
       this.initShowDepartment()
 
@@ -162,8 +155,9 @@
         let {filename} = this.info;
         this.info.brief = `<p><iframe src="${data.preview}${filename}" style="width:100%;height:800px"></iframe></p>`;
       },
-      loadArtical( articalId ){
-         getArticalInfo({articalId}).then(res => {
+      loadArtical( articalId, recover ){
+        let myapi = recover?getDeleteArticalInfo:getArticalInfo;
+        myapi({articalId}).then(res => {
            if (res.code == 200) {
               this.info = res.data.info;
               this.isLeader=res.data.isLeader
@@ -172,6 +166,13 @@
                 this.$router.push( {path: '/file-info', query})
                 return;
               }
+              if( recover) {
+                this.info.isOpen = 1;
+                this.info.status = 1;
+                this.info.downloadCount = 0;
+                this.info.viewCount = 0
+                this.info.articalId = 0;
+              }
               this.initShowDepartment()
            }
          })
@@ -194,10 +195,9 @@
           beforeClose: (action, instance, done) => {
             if (action === 'confirm') {
               that.$router.back()
-              // push({path:'/my-file'});
-
               done();
             }else{
+              that.recover = false;
               done();
             }
           }
@@ -213,11 +213,13 @@
         this.$router.push( {path: '/file-info', query})
       },
       onSubmit(){
+        let recover = this.recover;
         this.$refs["elForm"].validate((valid) => {
           if (!valid) return;
           let {articalId, category,brief, title, isOpen,filename,bucket } = this.info;
-
-          if( !articalId){
+          // 恢复等于新增文件
+          if( recover)  articalId = 0;
+          if(  !articalId ){
             addArtical( this.info ).then(res=>{
               if( res.code == 200){
                 this.showFinish()

+ 2 - 2
src/pages/other/file-info.vue

@@ -18,9 +18,9 @@
         <div>
           <el-row>
             <div class="fr mt10">
-              <el-button  size="small" v-if="isLeader==2 && info.status==1 &&info.isOpen<2"
+              <el-button  type="primary" style="font-size: 15px;"  v-if="isLeader==2 && info.status==1 &&info.isOpen<2"
                       @click="dialogConfirm=true">审核</el-button>
-              <el-button  size="small"  v-if="isLeader==3 && info.status==2 &&info.isOpen<2"
+              <el-button  type="success"  style="font-size: 15px;" v-if="isLeader==3 && info.status==2 &&info.isOpen<2"
                       @click="dialogPublish=true">发布</el-button>
 
 

+ 18 - 16
src/pages/other/file-search.vue

@@ -7,15 +7,13 @@
 
           <el-col :span="5">
             <el-form-item label="部门">
-              <el-select v-model="searchInfo.department" collapse-tags placeholder="请选择" style="width: 160px;" @clear="selectDepartment({})"
-                clearable>
-                <div class="el-input" style="width:90%;margin-left:5%;">
-                  <input type="text" placeholder="请输入" class="el-input__inner" v-model="dropDownValue">
-                </div>
-                <el-option v-for="(item,index) in userDepartments" :value="item.departmentId" @click.native="selectDepartment(item)"
-                  :key="index" :label="item.department"></el-option>
-              </el-select>
-
+              <el-input
+              	 type="text"
+              	 placeholder="点击选择模块"
+              	 v-model="searchInfo.department"
+                 clearable
+              	 @click.native="dialogFormVisible=true"
+              />
             </el-form-item>
 
 
@@ -54,15 +52,10 @@
 
       <div class="p10">
         <el-table :data="list" border stripe :row-style="{'height':'75px'}">
-          <el-table-column label="序号" min-width="50" prop="articalId">
-            <template v-slot="{row}">
-              <span> 【{{openMap[row.isOpen]}}】{{row.articalId}}</span>
-            </template>
-          </el-table-column>
 
           <el-table-column label="文件标题" min-width="200" prop="title">
             <template slot-scope="{row}">
-              <span class="link-title" @click="applyDoc(row)"> {{row.title}}</span>
+              <span class="link-title" @click="applyDoc(row)">【{{openMap[row.isOpen]}}{{row.articalId}}】{{row.title}}</span>
             </template>
           </el-table-column>
 
@@ -101,12 +94,17 @@
           :page-sizes="[10, 30, 50, 100]" :style="{float:'center',padding:'20px'}" :total="total" layout="total, sizes, prev, pager, next, jumper"></el-pagination>
       </div>
     </div>
+
+    <el-dialog center :visible.sync="dialogFormVisible" width="650px">
+      <IDepartment @select="selectDepartment"></IDepartment>
+    </el-dialog>
   </div>
 </template>
 
 <script>
   import IHeader from "./components/IHeader";
   import IFooter from "./components/IFooter";
+  import IDepartment from "./components/IDepartment";
   import data from '../data/data.js'
   import {
     getArticalList,
@@ -120,13 +118,15 @@
     name: 'application',
     components: {
       IHeader,
-      IFooter
+      IFooter,
+      IDepartment
     },
     data() {
       return {
         list: [],
         departmentId: 0,
         pageSize: 10,
+        dialogFormVisible: false,
         page: 1,
         total: 0,
         dropDownValue: '',
@@ -200,6 +200,8 @@
         this.departmentId = +item.departmentId || 0
         this.page = 1
         localStorage.setItem("@departmentId", this.departmentId)
+        this.searchInfo.department = item.department||''
+        this.dialogFormVisible = false
         this.getArticalList()
       },
       deleteArtical(row) {

+ 44 - 24
src/pages/other/my-file.vue

@@ -34,24 +34,24 @@
 
 
           <el-table :data="list"  border stripe :row-style="{'height':'75px'}">
-
-            <el-table-column label="序号" width="95"  prop="articalId" align="center">
-              <template v-slot="{row}">
-                <span> 【{{openMap[row.isOpen]}}】{{row.articalId}}</span>
-              </template>
-            </el-table-column>
-
-
             <el-table-column label="标题" min-width="180" prop="title">
               <template slot-scope="{row}">
                 <el-input  v-if="row._edit" v-model="row.title" type="text"></el-input>
-                <span v-else class="link-title" @click="gotoDetail(row)"> {{row.title}}</span>
+                <span v-else class="link-title" @click="gotoDetail(row)">
+                【{{openMap[row.isOpen]}}{{row.articalId}}】{{row.title}}
+                </span>
               </template>
             </el-table-column>
 
             <el-table-column label="部门" width="110" prop="department" align="center">
             </el-table-column>
 
+            <el-table-column label="状态" width="90" prop="status" align="center">
+              <template v-slot="{row}">
+                <span>{{statusMap[row.status]}}</span>
+              </template>
+            </el-table-column>
+
 
            <el-table-column label="时间" width="100" prop="createAt" align="center">
               <template slot-scope="{row}">
@@ -59,30 +59,35 @@
               </template>
             </el-table-column>
 
-            <el-table-column label="操作" width="150" align="center">
+            <el-table-column label="操作" width="130" align="center">
               <template v-slot="{row, $index}">
-                <el-button  type="text"  @click="cancelEdit(row)" v-if="row._edit"> 取消 </el-button>
-                <el-button  type="text" style="color: green;" @click="confirmEdit(row)" v-if="row._edit"> 确认 </el-button>
-
-
-                <el-button  type="text" @click="initEdit(row)" v-if="!row._edit &&isLeader==1"> 改标题 </el-button>
 
                 <!-- look -->
-                <el-button  type="text" @click="editFile(row)" v-if="!row._edit && isLeader>0">编辑</el-button>
-
-                <!-- delete -->
+                <el-button  v-if="isLeader>0 && selectItem._edit"  type="text" @click="editFile(row)" >编辑</el-button>
+                <el-button  v-if="selectItem._info"  type="text"   @click="gotoDetail(row)" >详情</el-button>
+                <el-button  v-if="selectItem._recover"  type="text"   @click="recoverDetail(row)" >恢复</el-button>
 
-                <el-button v-if="!row._edit &&isLeader>0 " type="text" style="color:darkorange"  @click="row._delete=true" >删除</el-button>
 
-                <el-button v-else type="text"  @click="gotoDetail(row)" >详情</el-button>
-
-                <el-popover placement="top" width="150"  v-model="row._delete"  :style="{'margin-top': $index>0?'0px':'-60px'}">
+                <el-button  v-if="isLeader>0 && selectItem._edit" type="text" style="color:darkorange"  @click="row._delete=true">删除</el-button>
+                <!--  -->
+                <el-popover placement="top" width="150"  v-model="row._delete" >
                   <p>你是否确认删除?</p>
                   <div style="text-align: right; top: 0">
                     <el-button size="mini" type="text" @click="row._delete = false">取消</el-button>
                     <el-button type="primary" size="mini" @click="deleteArtical(row)">确定</el-button>
                   </div>
                 </el-popover>
+
+                <!-- 清空 -->
+                <el-button  v-if="isLeader>0 && selectItem._clean"  type="text" style="color:darkorange;margin-left:10px"  @click="row._clean=true">清空</el-button>
+                <el-popover placement="top" width="150"  v-model="row._clean" >
+                  <p>你是否确认清空?</p>
+                  <div style="text-align: right; top: 0">
+                    <el-button size="mini" type="text" @click="row._clean = false">取消</el-button>
+                    <el-button type="primary" size="mini" @click="cleanArtical(row, $index)">确定</el-button>
+                  </div>
+                </el-popover>
+
               </template>
             </el-table-column>
 
@@ -109,7 +114,7 @@
 <script>
 import IHeader from "./components/IHeader";
 import IFooter from "./components/IFooter";
-import {getArticalList,getApplyArticalList, deleteArtical}  from '@/api/article'
+import {getArticalList,getApplyArticalList, deleteArtical, cleanArtical}  from '@/api/article'
 import {getEditArticalList,downloadFile, editArticalTitle}  from '@/api/article'
 import {download} from '@/utils/download.js'
 import {toDatetime, toDate} from '@/utils/date.js'
@@ -133,6 +138,7 @@ export default {
       list: [],
       total: 0,
       options:data.myfiles,
+      statusMap: data.statusMap,
       pageSize: 10,
       page:1,
       searchDepartId: "",
@@ -142,6 +148,7 @@ export default {
       searchInfo:{
         keyword:''
       },
+      selectItem:{},
       state3: '',
       selectId:"0",
       selectName: '我经办文件',
@@ -184,6 +191,13 @@ export default {
         }
       })
     },
+    cleanArtical( row, index ){
+      cleanArtical( {articalId: row.articalId}).then(res=>{
+        if( res.code == 200){
+          this.list.splice( index, 1 )
+        }
+      })
+    },
     cancelEdit(row) {
     	row = Object.assign(row, row.temp);
     	row._edit = false;
@@ -215,17 +229,22 @@ export default {
       let query = {articalId: row.articalId}
       this.$router.push( {path, query})
     },
+    recoverDetail(row){
+      let path = "/file-add"
+      let query = {articalId: row.articalId, "recover": true}
+      this.$router.push( {path, query})
+    },
     doLogout(){
       this.logout().then( res=>{
         console.log("logout")
       })
     },
     selectTag( item ) {
-      console.log("select", item)
       this.selectId = item.id;
       this.listApi = item.listApi,
       this.isLeader = item.isLeader||0;
       this.selectName = item.value
+      this.selectItem = item;
       this.getArticalList()
       // 切换文件列表
     },
@@ -246,6 +265,7 @@ export default {
           this.list = list.map( item => {
             item._delete = false;
             item._edit = false;
+            item._clean = false;
             return item
            });
           this.total = res.data.total||0

+ 2 - 2
vue.config.js

@@ -1,8 +1,8 @@
 'use strict'
 const path = require('path')
 const defaultSettings = require('./src/settings.js')
-const HOST = "http://smoa.ndjsxh.cn:8888"
-// const HOST = "http://localhost:8000"
+// const HOST = "http://smoa.ndjsxh.cn:8888"
+const HOST = "http://localhost:8000"
 function resolve(dir) {
   return path.join(__dirname, dir)
 }