y595705120 3 年 前
コミット
8af17ccd56

+ 7 - 2
src/App.vue

@@ -13,7 +13,7 @@ export default {
 <style lang="scss">
   body {
     /*background-color: #F7F7F7;*/
-    background: url("http://zjj.sm.gov.cn/images/201610_sm_zjt_topbanner.png") center top no-repeat #F7F7F7;
+    background: url("./assets/images/sm_zjt_topbanner.png") center top no-repeat #F7F7F7;
     font-size: 14px;
   }
   #app {
@@ -67,11 +67,16 @@ export default {
   .logo{ margin-top:61px; float:left;}
   .jsj{ margin-top:63px; float:left; margin-left:50px;}
   .nav{ height:50px; background:#0078c7; margin:0 auto; width:1000px;}
+
+
   .nav ul li{ float:left; line-height:50px;}
+
   .nav ul li a{ padding:0 27px; color:#FFF; display:block; height:50px;}
-  .nav ul li a:hover{ background:#ffa200; text-decoration:none;}
+
+  .nav ul li a:hover{ background:#85BBD2; text-decoration:none;}
 
   .navfirst a{ background:#ffa200; display:block;}
+
   .sousuo{ height:37px; line-height:37px; background:#efefef; border-bottom:1px solid #e7e7e7; width:1000px; margin:0 auto;}
   .sousuo h4{ margin-left:20px;}
 

+ 81 - 82
src/pages/data/data.js

@@ -2,88 +2,87 @@
 
 export default {
 	departs:[
-    {
-      id: 1,
-      value: '局办公室',
-      label: '局办公室'
-    }, {
-      id: 2,
-      value: '财会中心',
-      label: '财会中心'
-    }, {
-      id: 3,
-      value: '党办',
-      label: '党办'
-    }, {
-      id: 4,
-      value: '政策法规科',
-      label: '政策法规科'
-    }, {
-      id: 5,
-      value: '建筑业科',
-      label: '建筑业科'
-    }, {
-      id: 6,
-      value: '项目中心',
-      label: '项目中心'
-    }, {
-      id: 7,
-      value: '房产保障科',
-      label: '房产保障科'
-    }, {
-      id: 8,
-      value: '市房屋交易中心',
-      label: '市房屋交易中心'
-    }, {
-      id: 9,
-      value: '城乡建设科',
-      label: '城乡建设科'
-    }, {
-      id: 10,
-      value: '11消防中心系统',
-      label: '11消防中心系统'
-    }, {
-      id: 11,
-      value: '11造价站系统',
-      label: '11造价站系统'
-    }, {
-      id: 12,
-      value: '11质安站系统',
-      label: '11质安站系统'
-    }, {
-      id: 13,
-      value: '111党办系统',
-      label: '111党办系统'
-    }, {
-      id: 14,
-      value: '财务中心系统',
-      label: '财务中心系统'
-    }, {
-      id: 15,
-      value: '城建科系统',
-      label: '城建科系统'
-    }, {
-      id: 16,
-      value: '法规科系统',
-      label: '法规科系统'
-    }, {
-      id: 17,
-      value: '房屋征收中心系统',
-      label: '房屋征收中心系统'
-    }, {
-      id: 18,
-      value: '交易中心系统',
-      label: '交易中心系统'
-    }, {
-      id: 19,
-      value: '图审系统',
-      label: '图审系统'
-    }, {
-      id: 20,
-      value: '项目中心系统',
-      label: '项目中心系统'
-    }
-  ],
+        {
+            "department_id": "47",
+            "department": "交易中心"
+        },
+        {
+            "department_id": "49",
+            "department": "人事科"
+        },
+        {
+            "department_id": "51",
+            "department": "人才中心"
+        },
+        {
+            "department_id": "53",
+            "department": "住房保障中心"
+        },
+        {
+            "department_id": "55",
+            "department": "党办"
+        },
+        {
+            "department_id": "57",
+            "department": "办公室"
+        },
+        {
+            "department_id": "59",
+            "department": "图审"
+        },
+        {
+            "department_id": "61",
+            "department": "城建科"
+        },
+        {
+            "department_id": "63",
+            "department": "审批科"
+        },
+        {
+            "department_id": "65",
+            "department": "建筑业"
+        },
+        {
+            "department_id": "67",
+            "department": "房产保障科"
+        },
+        {
+            "department_id": "69",
+            "department": "房屋征收中心"
+        },
+        {
+            "department_id": "71",
+            "department": "法规科"
+        },
+        {
+            "department_id": "73",
+            "department": "消防中心"
+        },
+        {
+            "department_id": "75",
+            "department": "燃管站"
+        },
+        {
+            "department_id": "77",
+            "department": "节水站"
+        },
+        {
+            "department_id": "79",
+            "department": "财务中心"
+        },
+        {
+            "department_id": "81",
+            "department": "质安站"
+        },
+        {
+            "department_id": "83",
+            "department": "造价站"
+        },
+        {
+            "department_id": "85",
+            "department": "项目中心"
+        }
+    ],
   filelist:[
     { "value": "文件名1", "address": "部门1" },
     { "value": "文件名2", "address": "部门2" },

+ 6 - 8
src/pages/login/index.vue

@@ -1,11 +1,7 @@
 <template>
-  <div class="rpm-login">
-<!--    <div class="rpm-logo">-->
-<!--      &lt;!&ndash;el-image style="width: 50px; height: 50px" fit="fill" :src="url" /&ndash;&gt;-->
-<!--      <el-avatar style="width: 50px; height: 50px" shape="circle" fit="cover" :src="url" />-->
-<!--      <div class="rpm-logo__title">Rental Property Manage System</div>-->
-<!--    </div>-->
-    <div class="rpm-contact">
+  <div class="rpm-login other-container" style="margin-top: 178px;">
+    <IHeader/>
+    <div class="rpm-contact" >
       <div class="rpm-contact__title">三明市住建系统内业综合平台</div>
       <div class="rpm-contact__item">
         <el-avatar shape="square" size="small" icon="el-icon-message" />
@@ -26,11 +22,13 @@ import SignInForm from './components/SignInForm'
 import SignUpForm from './components/SignUpForm'
 import ForgotPwdForm from './components/ForgotPwdForm'
 import ResetPwdForm from './components/ResetPwdForm'
+import IHeader from "../other/components/IHeader";
+import IFooter from "../other/components/IFooter";
 
 
 export default {
   name: 'Login',
-  components: { SignInForm, SignUpForm, ForgotPwdForm, ResetPwdForm },
+  components: { SignInForm, SignUpForm, ForgotPwdForm, ResetPwdForm,IHeader, IFooter},
   data() {
     return {
       url: logo,

+ 52 - 22
src/pages/other/apply-list.vue

@@ -1,25 +1,47 @@
 <template>
   <div class="other-container" style="margin-top: 178px;">
     <IHeader />
-    <div style="padding-top: 10px;background: #FFF;margin-top:20px;">
+    <div style="background: #FFF;margin-top:20px;">
       <el-card class="box-card">
-        <div slot="header" class="clearfix">
-          <span>{{ selectDepartName }} 法律法规类资料</span>
-          <el-button style="float: right; padding: 3px 0;color: #999;font-size: 12px;" type="text" @click="handleOpenMore(1)">更多></el-button>
-        </div>
-        <div v-for="(o,index) in restaurants" :key="o.id" class="text item">
-          <div style="display: inline-block;width: 100%;"  >
-            <el-link target="_blank" download="下载文件名"  :href="require('@/icons/img/logo-apple.png')" :underline="false">
-              <span class="oneline" >
-                  {{ (index+1)}} 、 {{o.title|filterTitle}}
-              </span>
-            </el-link>
-
-            <!-- <span class="fr" style="color: #b4b4b4;">{{o.createAt }}</span> -->
-            <el-button class="fr" type="text"  @click="applyDoc()"> 审核通过 </el-button>
-            <span style="clear: both;"></span>
-          </div>
+        <div slot="header" class="clearfix" >
+          <span>申请记录</span>
         </div>
+
+        <el-table :data="restaurants"  border stripe>
+          <el-table-column label="序号" min-width="60" prop="id">
+          </el-table-column>
+
+          <el-table-column label="申请人" min-width="60" prop="username">
+          </el-table-column>
+
+          <el-table-column label="申请时间" min-width="60" prop="createAt">
+            <template slot-scope="{row, $index}">
+              <span> {{row.createAt|toDatetime}}</span>
+            </template>
+          </el-table-column>
+
+          <el-table-column label="申请原因" min-width="60" prop="applyInfo">
+          </el-table-column>
+
+          <el-table-column
+            align="center"
+            min-width="80px"
+            label="操作"
+            class-name="small-padding fixed-width"
+          >
+            <template slot-scope="{row, $index}">
+              <el-button
+                type="success"
+                size="small"
+                icon="el-icon-circle-check"
+                @click="applyDoc(row)"
+              >审核</el-button>
+            </template>
+          </el-table-column>
+
+        </el-table>
+
+
         <el-pagination
           :current-page="1"
           :page-size="10"
@@ -31,11 +53,11 @@
       </el-card>
 
     </div>
-    <el-dialog title="申请材料" center :visible.sync="dialogFormVisible"  >
-      <h3> 本材料非公开,需要向对应科室申请</h3>
+    <el-dialog title="[办公室]XX 申请下载资料" center :visible.sync="dialogFormVisible"  >
+      <h3> 【{{form.username}}】需要下载文件 【{{form.title}}】  </h3>
       <div class="dialog-footer" slot="footer">
-        <el-button type="warning" size="medium" style="width: 100px; padding: 10px; margin: 20px;" @click="dialogFormVisible=false">取 消</el-button>
-        <el-button type="primary" size="medium" style="width: 100px; padding: 10px; margin: 20px;" @click="dialogFormVisible=false">确认申请</el-button>
+        <el-button type="warning" size="medium" style="width: 100px; padding: 10px; margin: 20px;" @click="dialogFormVisible=false">拒绝下载</el-button>
+        <el-button type="primary" size="medium" style="width: 100px; padding: 10px; margin: 20px;" @click="dialogFormVisible=false">允许下载</el-button>
       </div>
     </el-dialog>
 
@@ -53,6 +75,8 @@ import glIcon from '@/icons/img/2016smyjj_gl_icon.jpg'
 import data  from '../data/data.js'
 import {getHotArticalList,getArticalList,getApplyArticalList}  from '@/api/article'
 
+import {toDatetime} from '@/utils/date.js'
+
 export default {
   name: 'application',
   components: {
@@ -70,6 +94,7 @@ export default {
       searchDepartId: "",
       restaurants: [],
       state3: '',
+      form:{},
       selectDepartId:1,
       selectDepartName: '',
       category:'',
@@ -86,9 +111,14 @@ export default {
       }else{
         return val
       }
-    }
+    },
+    toDatetime
   },
   methods: {
+    applyDoc( row ){
+      this.dialogFormVisible = true
+      this.form = row
+    },
     getApplyArticalList() {
       getApplyArticalList( {} ).then( res=>{
         this.restaurants = res.data.list

+ 12 - 8
src/pages/other/components/IHeader.vue

@@ -2,21 +2,25 @@
   <div>
     <div class="nav">
       <ul>
-        <li ><a href="/">网站首页</a></li>
-
         <li :class="{'navfirst': isActive('/file-manage')}">
-          <a href="#/file-manage"> 所有科室</a>
+          <a href="#/file-manage"> 网站首页</a>
         </li>
 
-        <li><a href="/xxgk/">公开资料</a></li>
-        <li><a href="/wsbs/">科室资料</a></li>
-        <li><a href="/wsbs/">个人资料</a></li>
+        <li :class="{'navfirst': isActive('/file-search')}">
+          <a href="#/file-search">文件搜索</a>
+        </li>
+
+        <li :class="{'navfirst': isActive('/my-file')}">
+          <a href="#/my-file">我的文件</a>
+        </li>
 
         <li :class="{'navfirst': isActive('/apply-list')}">
-          <a href="#/apply-list"> 申请记录</a>
+          <a href="#/apply-list">审核申请</a>
         </li>
 
-        <li><a href="/wsbs/">收到资料</a></li>
+        <li :class="{'navfirst': isActive('/reply-list')}">
+          <a href="#/reply-list">我的申请</a>
+        </li>
       </ul>
     </div>
     <div class="sousuo">

+ 54 - 32
src/pages/other/file-manage.vue

@@ -6,19 +6,19 @@
         <el-select v-model="searchDepartId" filterable clearable placeholder="关键字搜索部门" @change="handleChangeDepart">
           <el-option
             v-for="item in list"
-            :key="item.value"
-            :label="item.label"
-            :value="item.id"
+            :key="item.department_id"
+            :label="item.department"
+            :value="item.department_id"
           >
           </el-option>
         </el-select>
         <el-menu
-          :default-active="selectDepartId.toString()"
+          :default-active="selectDepartId"
           class="el-menu-vertical-demo"
           @select="handleSelectDepart">
           <template  v-for="(item, index) in list">
-            <el-menu-item :index="item.id.toString()">
-              <span>{{ item.value }}</span>
+            <el-menu-item :index="item.department_id">
+              <span>{{ item.department}}</span>
             </el-menu-item>
           </template>
         </el-menu>
@@ -60,14 +60,21 @@
           </div>
           <div v-for="(o,index) in restaurants.laws" :key="o.id" class="text item">
             <div style="display: inline-block;width: 100%;"  >
-              <el-link target="_blank" download="下载文件名"  :href="require('@/icons/img/logo-apple.png')" :underline="false">
+
+              <el-link target="_blank" :download="o.filename"  :href="'/'+o.filename" :underline="false" v-if="o.isOpen">
                 <span class="oneline" >
-                    {{ (index+1)}} 、 {{o.title|filterTitle}}
+                  【{{o.isOpen?'公':'私'}}】 {{ (index+1)}} 、 {{o.title|filterTitle}}
                 </span>
               </el-link>
 
-              <!-- <span class="fr" style="color: #b4b4b4;">{{o.createAt }}</span> -->
-              <el-button @click="applyDoc()"> 申请材料 </el-button>
+              <span v-else @click="downloadFile(o)"  style="color: #606266;" >
+                 <span class="oneline" >
+                     【{{o.isOpen?'公':'私'}}】 {{ (index+1)}} 、 {{o.title|filterTitle}}
+                 </span>
+              </span>
+
+
+              <span class="fr" style="color: #b4b4b4;">{{o.createAt }}</span>
               <span style="clear: both;"></span>
             </div>
           </div>
@@ -80,12 +87,18 @@
           </div>
           <div v-for="(o,index) in restaurants.mechanism" :key="o.id" class="text item">
             <div style="display: inline-block;width: 100%;">
-              <el-link target="_blank" download="下载文件名"  :href="require('@/icons/img/logo-apple.png')" :underline="false">
+              <el-link target="_blank" :download="o.filename"  :href="'/'+o.filename" :underline="false" v-if="o.isOpen">
                 <span class="oneline" >
-                    {{ (index+1)}} 、 {{o.title|filterTitle}}
+                  【{{o.isOpen?'公':'私'}}】 {{ (index+1)}} 、 {{o.title|filterTitle}}
                 </span>
               </el-link>
 
+              <span v-else @click="downloadFile(o)"  style="color: #606266;" >
+                 <span class="oneline" >
+                     【{{o.isOpen?'公':'私'}}】 {{ (index+1)}} 、 {{o.title|filterTitle}}
+                 </span>
+              </span>
+
               <span class="fr" style="color: #b4b4b4;">{{o.createAt }}</span>
               <span style="clear: both;"></span>
             </div>
@@ -98,13 +111,23 @@
             <span>{{ selectDepartName }} 成果类资料</span>
             <el-button style="float: right; padding: 3px 0;color: #999;font-size: 12px;" type="text" @click="handleOpenMore(3)">更多></el-button>
           </div>
+
           <div v-for="(o,index) in restaurants.result" :key="o.id" class="text item">
             <div style="display: inline-block;width: 100%;">
-              <el-link target="_blank" download="下载文件名"  :href="require('@/icons/img/logo-apple.png')" :underline="false">
+
+              <el-link target="_blank" :download="o.filename"  :href="'/'+o.filename" :underline="false" v-if="o.isOpen">
                 <span class="oneline" >
-                    {{ (index+1)}} 、 {{o.title|filterTitle}}
+                  【{{o.isOpen?'公':'私'}}】 {{ (index+1)}} 、 {{o.title|filterTitle}}
                 </span>
               </el-link>
+
+              <span v-else @click="downloadFile(o)"  style="color: #606266;" >
+                 <span class="oneline" >
+                     【{{o.isOpen?'公':'私'}}】 {{ (index+1)}} 、 {{o.title|filterTitle}}
+                 </span>
+              </span>
+
+
               <span class="fr" style="color: #b4b4b4;">{{o.createAt }}</span>
               <span style="clear: both;"></span>
             </div>
@@ -120,11 +143,17 @@
           </div>
           <div v-for="(o,index) in restaurants.result" :key="o.id" class="text item">
             <div style="display: inline-block;width: 100%;">
-              <el-link target="_blank" :download="o.filename"  :href="'/'+o.filename" :underline="false">
+              <el-link target="_blank" :download="o.filename"  :href="'/'+o.filename" :underline="false" v-if="o.isOpen">
                 <span class="oneline" >
-                    {{ (index+1)}} 、 {{o.title|filterTitle}}
+                  【{{o.isOpen?'公':'私'}}】 {{ (index+1)}} 、 {{o.title|filterTitle}}
                 </span>
               </el-link>
+
+              <span v-else @click="downloadFile(o)"  style="color: #606266;" >
+                 <span class="oneline" >
+                     【{{o.isOpen?'公':'私'}}】 {{ (index+1)}} 、 {{o.title|filterTitle}}
+                 </span>
+              </span>
               <span class="fr" style="color: #b4b4b4;">{{o.createAt }}</span>
               <span style="clear: both;"></span>
             </div>
@@ -141,13 +170,9 @@
         </el-card>
       </div>
 
-
-
-
-
     </div>
     <el-dialog title="申请材料" center :visible.sync="dialogFormVisible"  >
-      <h3> 本材料非公开,需要向对应科室申请</h3>
+      <h3> 【{{form.title}}】非公开,需要向对应科室申请</h3>
       <div class="dialog-footer" slot="footer">
         <el-button type="warning" size="medium" style="width: 100px; padding: 10px; margin: 20px;" @click="dialogFormVisible=false">取 消</el-button>
         <el-button type="primary" size="medium" style="width: 100px; padding: 10px; margin: 20px;" @click="dialogFormVisible=false">确认申请</el-button>
@@ -181,8 +206,9 @@ export default {
       list: data.departs,
       searchDepartId: "",
       restaurants: {},
+      form:{},
       state3: '',
-      selectDepartId:1,
+      selectDepartId:"0",
       selectDepartName: '',
       category:'',
       isShowMore: false
@@ -202,12 +228,7 @@ export default {
   },
   watch: {
     selectDepartId: function(newDepartId, oldDepartId) {
-      let that = this
-      this.list.filter(function(item){
-        if(item.id == newDepartId){
-          that.selectDepartName = item.value
-        }
-      })
+      this.getHotArticalList()
     }
   },
   methods: {
@@ -217,17 +238,18 @@ export default {
       // 调用 callback 返回建议列表的数据
       cb(results);
     },
-    applyDoc(){
-      this.dialogFormVisible = true
-    },
     createFilter(queryString) {
       return (restaurant) => {
         return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
       };
     },
+    downloadFile(o){
+      this.form = o;
+      this.dialogFormVisible = true
+    },
     getHotArticalList() {
       let param = {
-        "department": this.selectDepartName,
+        "departmentId": +this.selectDepartId,
         "category": this.category
       }
       getHotArticalList( param ).then( res=>{

+ 151 - 0
src/pages/other/file-search.vue

@@ -0,0 +1,151 @@
+<template>
+  <div class="other-container" style="margin-top: 178px;">
+    <IHeader />
+    <div style="background: #FFF;margin-top:20px;">
+      <el-card class="box-card">
+        <div slot="header" class="clearfix" >
+          <el-form :inline="true" :model="searchInfo" class="demo-form-inline">
+          	<el-form-item label="搜索文件">
+              <el-input placeholder="" v-model="searchInfo.keyword" clearable></el-input>
+            </el-form-item>
+
+            <el-form-item>
+              <el-button @click="getArticalList" type="primary">搜索</el-button>
+            </el-form-item>
+          </el-form>
+        </div>
+
+        <el-table :data="list"  border stripe>
+          <el-table-column label="序号" min-width="50" prop="id">
+          </el-table-column>
+
+          <el-table-column label="文件标题" min-width="200" prop="title">
+          </el-table-column>
+
+          <el-table-column label="科室" min-width="50" prop="department">
+          </el-table-column>
+
+          <el-table-column label="分类" min-width="50" prop="category">
+          </el-table-column>
+
+
+          <el-table-column
+            align="center"
+            min-width="60"
+            label="操作"
+            class-name="small-padding fixed-width"
+          >
+            <template slot-scope="{row, $index}">
+              <el-button
+                size="small"
+                type="primary"
+                @click="applyDoc(row)"
+              >下载</el-button>
+            </template>
+          </el-table-column>
+
+        </el-table>
+
+
+        <el-pagination
+          :current-page="1"
+          :page-size="10"
+          :page-sizes="[10, 30, 50, 100]"
+          :style="{float:'center',padding:'20px'}"
+          :total="total"
+          layout="total, sizes, prev, pager, next, jumper"
+        ></el-pagination>
+      </el-card>
+    </div>
+  <IFooter />
+  </div>
+</template>
+
+<script>
+import IHeader from "./components/IHeader";
+import IFooter from "./components/IFooter";
+import {getArticalList} from '@/api/article.js'
+
+export default {
+  name: 'application',
+  components: {
+    IHeader,
+    IFooter
+  },
+  data() {
+    return {
+      list: [],
+      id:1,
+      pageSize:10,
+      page:1,
+      searchInfo:{
+        keyword: ''
+      }
+
+    }
+  },
+  mounted(){
+    this.getArticalList()
+  },
+  methods: {
+    getArticalList(){
+      let param = {
+        departmednt_id:this.id,
+        keyword: this.searchInfo.keyword,
+        page: this.page,
+        pageSize: this.pageSize
+      }
+      getArticalList( param ).then( res=>{
+        if( res.code == 200){
+          this.list = res.data.list;
+          this.total = res.data.total;
+        }
+      })
+    }
+
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .el-breadcrumb{
+    display: inline-block;
+    padding-left: 10px;
+  }
+  .box-card{
+    margin-bottom: 20px;
+  }
+  .my-autocomplete {
+    li {
+      line-height: normal;
+      padding: 7px;
+
+      .name {
+        text-overflow: ellipsis;
+        overflow: hidden;
+      }
+      .addr {
+        font-size: 12px;
+        color: #b4b4b4;
+      }
+
+      .highlighted .addr {
+        color: #ddd;
+      }
+    }
+  }
+  .el-card__body .text{
+    margin: 5px 0;
+  }
+
+  .el-card{
+    color: #1890ff;
+  }
+  .el-card__header{
+    padding: 15px 20px;
+  }
+  .el-menu-vertical-demo:not(.el-menu--collapse) {
+    width: 200px;
+    min-height: 400px;
+  }
+</style>

+ 0 - 269
src/pages/other/my-file-manage.vue

@@ -1,269 +0,0 @@
-<template>
-  <div class="other-container" style="margin-top: 178px;">
-    <IHeader />
-    <div style="padding-top: 10px;background: #FFF;margin-top:20px;">
-      <div style="width: 200px;display:inline-block;">
-        <el-menu
-          :default-active="selectDepartId.toString()"
-          class="el-menu-vertical-demo"
-          @select="handleSelectDepart">
-          <template  v-for="(item, index) in list">
-            <el-menu-item :index="item.id.toString()">
-              <span>{{ item.value }}</span>
-            </el-menu-item>
-          </template>
-        </el-menu>
-      </div>
-      <div style="width: 800px;display:inline-block;padding: 0 20px;vertical-align: top;">
-        <div style="margin: 10px;position:relative;">
-          <i class="el-icon-location"></i>
-          <el-breadcrumb separator-class="el-icon-arrow-right">
-            <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
-            <el-breadcrumb-item>帮助中心</el-breadcrumb-item>
-            <el-breadcrumb-item>我的文件列表</el-breadcrumb-item>
-          </el-breadcrumb>
-          <div style="position:absolute;right: -10px;top:-5px;">
-            <el-autocomplete
-              popper-class="my-autocomplete"
-              v-model="state3"
-              :fetch-suggestions="querySearch"
-              clearable
-              placeholder="搜索文件"
-              size="mini"
-              @select="handleSelectFile">
-              <i
-                class="el-icon-search el-input__icon"
-                slot="suffix"
-              />
-              <template slot-scope="props">
-                <div class="name">{{ props.item.value }}<span class="addr">({{ props.item.address }})</span></div>
-              </template>
-            </el-autocomplete>
-          </div>
-        </div>
-        <el-card class="box-card" v-if="!isShowMore">
-          <div slot="header" class="clearfix">
-            <span>{{ selectDepartName }} 文件分类1</span>
-            <el-button style="float: right; padding: 3px 0;color: #999;font-size: 12px;" type="text" @click="handleOpenMore(1)">更多></el-button>
-          </div>
-          <div v-for="o in 4" :key="o" class="text item">
-            <div style="display: inline-block;width: 100%;">
-              <el-link target="_blank" download="下载文件名" :href="require('@/icons/img/logo-apple.png')" :underline="false">
-                <el-button class="fl" type="text">{{ selectDepartName + ' 文件名文件名' + o }}</el-button>
-              </el-link>
-              <span class="fr" style="color: #b4b4b4;">{{'2021-05-14 08:49:5' + o }}</span>
-              <span style="clear: both;"></span>
-            </div>
-          </div>
-        </el-card>
-        <el-card class="box-card" v-if="!isShowMore">
-          <div slot="header" class="clearfix">
-            <span>{{ selectDepartName }} 文件分类2</span>
-            <el-button style="float: right; padding: 3px 0;color: #999;font-size: 12px;" type="text" @click="handleOpenMore(2)">更多></el-button>
-          </div>
-          <div v-for="o in 4" :key="o" class="text item">
-            <div style="display: inline-block;width: 100%;">
-              <el-link target="_blank" download="下载文件名" :href="require('@/icons/img/logo-apple.png')" :underline="false">
-                <el-button class="fl" type="text">{{ selectDepartName + ' 文件名文件名' + o }}</el-button>
-              </el-link>
-              <span class="fr" style="color: #b4b4b4;">{{'2021-05-14 08:49:5' + o }}</span>
-              <span style="clear: both;"></span>
-            </div>
-          </div>
-        </el-card>
-        <el-card class="box-card" v-if="!isShowMore">
-          <div slot="header" class="clearfix">
-            <span>{{ selectDepartName }} 文件分类3</span>
-            <el-button style="float: right; padding: 3px 0;color: #999;font-size: 12px;" type="text" @click="handleOpenMore(3)">更多></el-button>
-          </div>
-          <div v-for="o in 4" :key="o" class="text item">
-            <div style="display: inline-block;width: 100%;">
-              <el-link target="_blank" download="下载文件名" :href="require('@/icons/img/logo-apple.png')" :underline="false">
-                <el-button class="fl" type="text">{{ selectDepartName + ' 文件名文件名' + o }}</el-button>
-              </el-link>
-              <span class="fr" style="color: #b4b4b4;">{{'2021-05-14 08:49:5' + o }}</span>
-              <span style="clear: both;"></span>
-            </div>
-          </div>
-        </el-card>
-        <el-card class="box-card" v-if="isShowMore">
-          <div slot="header" class="clearfix">
-            <span>{{ selectDepartName }} 文件分类所有文件</span>
-            <el-button style="float: right; padding: 3px 0;color: #999;font-size: 12px;" type="text" @click="handleCloseMore">返回</el-button>
-          </div>
-          <div v-for="o in 20" :key="o" class="text item">
-            <div style="display: inline-block;width: 100%;">
-              <el-link target="_blank" download="下载文件名" :href="require('@/icons/img/logo-apple.png')" :underline="false">
-                <el-button class="fl" type="text">{{ selectDepartName + ' 文件名文件名' + o }}</el-button>
-              </el-link>
-              <span class="fr" style="color: #b4b4b4;">{{'2021-05-14 08:49:5' + o }}</span>
-              <span style="clear: both;"></span>
-            </div>
-          </div>
-        </el-card>
-      </div>
-    </div>
-  <IFooter />
-  </div>
-</template>
-
-<script>
-import IHeader from "./components/IHeader";
-import IFooter from "./components/IFooter";
-import glIcon from '@/icons/img/2016smyjj_gl_icon.jpg'
-const options = [{
-  id: 1,
-  value: '我发布的文件',
-  label: '我发布的文件'
-}, {
-  id: 2,
-  value: '我收藏的文件',
-  label: '我收藏的文件'
-}, {
-  id: 3,
-  value: '最近浏览的文件',
-  label: '最近浏览的文件'
-}, {
-  id: 4,
-  value: '最近下载的文件',
-  label: '最近下载的文件'
-}];
-export default {
-  name: 'application',
-  components: {
-    IHeader,
-    IFooter
-  },
-  data() {
-    return {
-      glIcon: glIcon,
-      list: [],
-      searchDepartId: "",
-      restaurants: [],
-      state3: '',
-      selectDepartId:1,
-      selectDepartName: '1办公室系统',
-      isShowMore: false
-    }
-  },
-  created() {
-    this.list = options
-  },
-  mounted() {
-    this.restaurants = this.loadAll();
-  },
-  watch: {
-    selectDepartId: function(newDepartId, oldDepartId) {
-      let that = this
-      console.log("selectDepartId", newDepartId, oldDepartId)
-      options.filter(function(item){
-        if(item.id == newDepartId){
-          that.selectDepartName = item.value
-        }
-      })
-    }
-  },
-  methods: {
-    querySearch(queryString, cb) {
-      var restaurants = this.restaurants;
-      var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
-      // 调用 callback 返回建议列表的数据
-      cb(results);
-    },
-    createFilter(queryString) {
-      return (restaurant) => {
-        return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
-      };
-    },
-    loadAll() {
-      return [
-        { "value": "文件名1", "address": "部门1" },
-        { "value": "文件名2", "address": "部门2" },
-        { "value": "文件名3", "address": "部门1" },
-        { "value": "文件名4", "address": "部门2" },
-        { "value": "文件名5", "address": "部门1" },
-        { "value": "文件名6", "address": "部门2" },
-        { "value": "文件名7", "address": "部门1" }
-      ];
-    },
-    querySearchAsync(queryString, cb) {
-      var restaurants = this.restaurants;
-      var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants;
-      cb(results);
-    },
-    createStateFilter(queryString) {
-      return (state) => {
-        return (state.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
-      };
-    },
-    handleSelectFile(item) {
-      console.log("handleSelectFile", item);
-    },
-    handleChangeDepart(item){
-      console.log("handleChangeDepart", item);
-      this.selectDepartId = item;
-      // 切换文件列表
-    },
-    handleSelectDepart(key, keyPath) {
-      console.log("handleSelectDepart", key, keyPath);
-      this.selectDepartId = key;
-      // 切换文件列表
-    },
-    handleOpenMore(index){
-      console.log("handleOpenMore", index);
-      this.isShowMore = true;
-    },
-    handleCloseMore(){
-      console.log("handleCloseMore");
-      this.isShowMore = false;
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-  .el-breadcrumb{
-    display: inline-block;
-    padding-left: 10px;
-  }
-  .box-card{
-    margin-bottom: 20px;
-  }
-  .my-autocomplete {
-    li {
-      line-height: normal;
-      padding: 7px;
-
-      .name {
-        text-overflow: ellipsis;
-        overflow: hidden;
-      }
-      .addr {
-        font-size: 12px;
-        color: #b4b4b4;
-      }
-
-      .highlighted .addr {
-        color: #ddd;
-      }
-    }
-  }
-  .el-card__body .text{
-    margin: 5px 0;
-  }
-  .el-button--medium{
-    margin: 0;
-    padding: 0;
-    color: #303133
-  }
-  .el-card{
-    color: #1890ff;
-  }
-  .el-card__header{
-    padding: 15px 20px;
-  }
-  .el-menu-vertical-demo:not(.el-menu--collapse) {
-    width: 200px;
-    min-height: 400px;
-  }
-</style>

+ 194 - 0
src/pages/other/my-file.vue

@@ -0,0 +1,194 @@
+<template>
+  <div class="other-container" style="margin-top: 178px;">
+    <IHeader />
+    <div style="padding-top: 10px;background: #FFF;margin-top:20px;">
+      <div style="width: 200px;display:inline-block;">
+        <el-menu
+          :default-active="selectDepartId"
+          class="el-menu-vertical-demo"
+          style="min-height: 700px;"
+          @select="handleSelectDepart">
+          <template  v-for="(item, index) in options">
+            <el-menu-item :index="item.id.toString()">
+              <span>{{ item.value }}</span>
+            </el-menu-item>
+          </template>
+        </el-menu>
+      </div>
+
+      <div style="width: 800px;display:inline-block;padding: 0 20px;vertical-align: top;">
+        <el-card class="">
+          <div slot="header" class="clearfix">
+            <el-form :inline="true" :model="searchInfo" class="demo-form-inline">
+            	<el-form-item :label="selectDepartName">
+                <el-input placeholder="" v-model="searchInfo.keyword" clearable></el-input>
+              </el-form-item>
+
+              <el-form-item>
+                <el-button @click="getArticalList" type="primary">搜索</el-button>
+              </el-form-item>
+            </el-form>
+
+          </div>
+
+
+          <el-table :data="list"  border stripe>
+            <el-table-column label="序号" width="50" prop="id">
+            </el-table-column>
+
+            <el-table-column label="标题" min-width="200" prop="title">
+            </el-table-column>
+
+            <el-table-column label="发布时间" min-width="60" prop="createAt">
+              <template slot-scope="{row, $index}">
+                <span> {{row.createAt|toDatetime}}</span>
+              </template>
+            </el-table-column>
+          </el-table>
+
+
+          <el-pagination
+            :current-page="1"
+            :page-size="10"
+            :page-sizes="[10, 30, 50, 100]"
+            :style="{float:'center',padding:'20px'}"
+            :total="total"
+            layout="total, sizes, prev, pager, next, jumper"
+          ></el-pagination>
+        </el-card>
+
+      </div>
+    </div>
+  <IFooter />
+  </div>
+</template>
+
+<script>
+import IHeader from "./components/IHeader";
+import IFooter from "./components/IFooter";
+import {getArticalList,getApplyArticalList}  from '@/api/article'
+import {toDatetime} from '@/utils/date.js'
+
+const options = [{
+  id: 1,
+  value: '我发布的文件',
+  label: '我发布的文件'
+}, {
+  id: 2,
+  value: '我收藏的文件',
+  label: '我收藏的文件'
+}, {
+  id: 3,
+  value: '最近浏览的文件',
+  label: '最近浏览的文件'
+}, {
+  id: 4,
+  value: '最近下载的文件',
+  label: '最近下载的文件'
+}];
+
+export default {
+  name: 'application',
+  components: {
+    IHeader,
+    IFooter
+  },
+  data() {
+    return {
+      list: [],
+      total: 0,
+      options:options,
+      pageSize: 10,
+      page:1,
+      searchDepartId: "",
+      restaurants: [],
+      searchInfo:{
+        keyword:''
+      },
+      state3: '',
+      selectDepartId:1,
+      selectDepartName: '我发布的文件',
+      isShowMore: false
+    }
+  },
+  filters:{
+    toDatetime
+  },
+  created() {
+    this.list = options
+  },
+  mounted() {
+    this.getArticalList();
+  },
+  watch: {
+    selectDepartId: function(newDepartId, oldDepartId) {
+      let that = this
+      console.log("selectDepartId", newDepartId, oldDepartId)
+      options.filter(function(item){
+        if(item.id == newDepartId){
+          that.selectDepartName = item.value
+        }
+      })
+    }
+  },
+  methods: {
+    handleSelectDepart(key, keyPath) {
+      console.log("handleSelectDepart", key, keyPath);
+      this.selectDepartId = key;
+      // 切换文件列表
+    },
+    getArticalList(){
+      let param = {page:this.page,pageSize: this.pageSize}
+      getArticalList( param ).then( res=>{
+        if( res.code == 200){
+          this.list = res.data.list
+          this.total = res.data.total
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .el-breadcrumb{
+    display: inline-block;
+    padding-left: 10px;
+  }
+  .box-card{
+    margin-bottom: 20px;
+  }
+  .my-autocomplete {
+    li {
+      line-height: normal;
+      padding: 7px;
+
+      .name {
+        text-overflow: ellipsis;
+        overflow: hidden;
+      }
+      .addr {
+        font-size: 12px;
+        color: #b4b4b4;
+      }
+
+      .highlighted .addr {
+        color: #ddd;
+      }
+    }
+  }
+  .el-card__body .text{
+    margin: 5px 0;
+  }
+
+  .el-card{
+    color: #1890ff;
+  }
+  .el-card__header{
+    padding: 15px 20px;
+  }
+  .el-menu-vertical-demo:not(.el-menu--collapse) {
+    width: 200px;
+    min-height: 400px;
+  }
+</style>

+ 187 - 0
src/pages/other/reply-list.vue

@@ -0,0 +1,187 @@
+<template>
+  <div class="other-container" style="margin-top: 178px;">
+    <IHeader />
+    <div style="background: #FFF;margin-top:20px;">
+      <el-card class="box-card">
+        <div slot="header" class="clearfix" >
+          <span>我的申请</span>
+        </div>
+
+        <el-table :data="restaurants"  border stripe>
+          <el-table-column label="序号" min-width="60" prop="id">
+          </el-table-column>
+
+          <el-table-column label="文件名称" min-width="200" prop="title">
+          </el-table-column>
+
+          <el-table-column label="解压密码" min-width="60" prop="secret">
+            <template v-slot="{row}">
+              <span> {{row.isSend?row.secret:'还未生成'}} </span>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            align="center"
+            min-width="80px"
+            label="操作"
+            class-name="small-padding fixed-width"
+          >
+            <template slot-scope="{row, $index}">
+              <el-button
+              v-if="row.isSend"
+                type="success"
+                size="small"
+                icon="el-icon-circle-check"
+                @click="applyDoc(row)"
+              >下载文件</el-button>
+
+              <el-button
+                v-else
+                type="text"
+                size="small"
+                @click="applyDoc(row)"
+              >等到审核</el-button>
+            </template>
+          </el-table-column>
+
+        </el-table>
+
+
+        <el-pagination
+          :current-page="1"
+          :page-size="10"
+          :page-sizes="[10, 30, 50, 100]"
+          :style="{float:'center',padding:'20px'}"
+          :total="total"
+          layout="total, sizes, prev, pager, next, jumper"
+        ></el-pagination>
+      </el-card>
+
+    </div>
+    <el-dialog title="[办公室]XX 申请下载资料" center :visible.sync="dialogFormVisible"  >
+      <h3> 【{{form.username}}】需要下载文件 【{{form.title}}】  </h3>
+      <div class="dialog-footer" slot="footer">
+        <el-button type="warning" size="medium" style="width: 100px; padding: 10px; margin: 20px;" @click="dialogFormVisible=false">拒绝下载</el-button>
+        <el-button type="primary" size="medium" style="width: 100px; padding: 10px; margin: 20px;" @click="dialogFormVisible=false">允许下载</el-button>
+      </div>
+    </el-dialog>
+    <IFooter />
+
+  </div>
+</template>
+
+<script>
+import IHeader from "./components/IHeader";
+import IFooter from "./components/IFooter";
+import glIcon from '@/icons/img/2016smyjj_gl_icon.jpg'
+import data  from '../data/data.js'
+import {getHotArticalList,getArticalList,getApplyArticalList}  from '@/api/article'
+
+import {toDatetime} from '@/utils/date.js'
+
+export default {
+  name: 'application',
+  components: {
+    IHeader,
+    IFooter
+  },
+  data() {
+    return {
+      dialogFormVisible: false,
+      glIcon: glIcon,
+      list: data.departs,
+      total: 0,
+      page:1,
+      size: 20,
+      searchDepartId: "",
+      restaurants: [],
+      state3: '',
+      form:{},
+      selectDepartId:1,
+      selectDepartName: '',
+      category:'',
+      isShowMore: false
+    }
+  },
+  mounted() {
+    this.getApplyArticalList();
+  },
+  filters:{
+    filterTitle(val){
+      if( val.length > 35) {
+        return val.substr(0,32)+"..."
+      }else{
+        return val
+      }
+    },
+    toDatetime
+  },
+  methods: {
+    applyDoc( row ){
+      this.dialogFormVisible = true
+      this.form = row
+    },
+    getApplyArticalList() {
+      getApplyArticalList( {} ).then( res=>{
+        this.restaurants = res.data.list
+        this.total = res.data.total
+        console.log("getHotArticalList", res)
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .el-breadcrumb{
+    display: inline-block;
+    padding-left: 10px;
+  }
+  .box-card{
+    margin-bottom: 20px;
+  }
+  .my-autocomplete {
+    li {
+      line-height: normal;
+      padding: 7px;
+
+      .name {
+        text-overflow: ellipsis;
+        overflow: hidden;
+      }
+      .addr {
+        font-size: 12px;
+        color: #b4b4b4;
+      }
+
+      .highlighted .addr {
+        color: #ddd;
+      }
+    }
+  }
+  .el-card__body .text{
+    margin: 5px 0;
+  }
+  .el-button--medium{
+    margin: 0;
+    padding: 0;
+    color: #303133
+  }
+  .el-card{
+    color: #1890ff;
+  }
+  .el-card__header{
+    padding: 15px 20px;
+  }
+  .el-menu-vertical-demo:not(.el-menu--collapse) {
+    width: 200px;
+    min-height: 400px;
+  }
+
+  .oneline {
+    line-height: 30px;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+  }
+</style>

+ 12 - 2
src/router/index.js

@@ -76,8 +76,18 @@ export const constantRoutes = [
     hidden: true
   },
   {
-    path: '/my-file-manage',
-    component: () => import('@/pages/other/my-file-manage'),
+    path: '/reply-list',
+    component: () => import('@/pages/other/reply-list'),
+    hidden: true
+  },
+  {
+    path: '/file-search',
+    component: () => import('@/pages/other/file-search'),
+    hidden: true
+  },
+  {
+    path: '/my-file',
+    component: () => import('@/pages/other/my-file'),
     hidden: true
   },
   {

+ 1 - 1
src/settings.js

@@ -1,5 +1,5 @@
 module.exports = {
-  title: 'Rental Manage System',
+  title: '内业资料管理系统',
 
   /**
    * @type {boolean} true | false

+ 1 - 1
src/store/modules/user.js

@@ -79,7 +79,7 @@ const actions = {
   },
 
   // user logout
-  logout({ commit, state, dispatch }) {
+  LoginOut({ commit, state, dispatch }) {
     commit('SET_TOKEN', '')
     commit('SET_ROLES', [])
     removeToken()

+ 63 - 0
src/utils/date.js

@@ -0,0 +1,63 @@
+// 对Date的扩展,将 Date 转化为指定格式的String
+// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
+// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
+// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
+// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
+Date.prototype.Format = function(fmt) {
+    var o = {
+        "M+": this.getMonth() + 1, //月份
+        "d+": this.getDate(), //日
+        "h+": this.getHours(), //小时
+        "m+": this.getMinutes(), //分
+        "s+": this.getSeconds(), //秒
+        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
+        "S": this.getMilliseconds() //毫秒
+    };
+    if (/(y+)/.test(fmt))
+        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
+    for (var k in o)
+        if (new RegExp("(" + k + ")").test(fmt))
+            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
+    return fmt;
+}
+
+export function curDate( ) {
+    var d = new Date().Format("yyyy-MM-dd");
+    return d.toLocaleString();
+}
+
+export function formatTimeToStr(times, pattern) {
+    var d = new Date(times).Format("yyyy-MM-dd hh:mm:ss");
+    if (pattern) {
+        d = new Date(times).Format(pattern);
+    }
+    return d.toLocaleString();
+}
+
+export function toDatetime(times ) {
+	if( !times) return "2020-01-01 00:00:00";
+    if(Number(times)) times = times*1000;
+
+    var d = new Date(times).Format("yyyy-MM-dd hh:mm:ss");
+    return d.toLocaleString();
+}
+
+export function toDate(times ) {
+	if( !times) return "2020-01-01"
+    if(Number(times)) times = times*1000;
+    var d = new Date(times).Format("yyyy-MM-dd");
+    return d.toLocaleString();
+}
+
+export function toDateShow(times ) {
+	if( !times) return "---"
+    if(Number(times)) times = times*1000;
+    var d = new Date(times).Format("yyyy-MM-dd");
+    return d.toLocaleString();
+}
+
+export function getDate( days ) {	
+    var d = new Date();
+    d.setDate(d.getDate() + days);
+    return toDate( d )
+}

+ 1 - 0
src/utils/request.js

@@ -72,6 +72,7 @@ service.interceptors.response.use(
                 message: response.data.msg || decodeURI(response.headers.msg),
                 type: response.headers.msgtype||'error',
             })
+            
             if (response.data.data && response.data.data.reload) {
                 store.commit('user/LoginOut')
             }

+ 3 - 3
vue.config.js

@@ -37,14 +37,14 @@ module.exports = {
       errors: true
     },
     proxy: {
-      '/artical': {
+      '/runtime': {
         target: 'http://localhost:8889',
         changeOrigin: true,
         // pathRewrite: { '^/rental': '' },
       },
 	   '/api': {
-	    target: 'http://localhost:8889',
-	    changeOrigin: true,
+        target: 'http://localhost:8889',
+        changeOrigin: true,
 	    // pathRewrite: { '^/rental': '' },
 	   },
       '/upload': {