Bladeren bron

模块功能完成2022-6-26

codeMan 3 jaren geleden
bovenliggende
commit
6a9afa91f5
39 gewijzigde bestanden met toevoegingen van 585 en 588 verwijderingen
  1. 14 6
      src/SManagement/archives/components/FileList.vue
  2. 3 0
      src/SManagement/archives_ad/components/Edit.vue
  3. 0 1
      src/SManagement/archives_ad/components/list.vue
  4. 12 11
      src/SManagement/archives_ad/index.vue
  5. 0 139
      src/SManagement/archives_admag/components/detail.vue
  6. 0 169
      src/SManagement/archives_admag/components/list.vue
  7. 9 4
      src/SManagement/archives_admag/index.vue
  8. 2 2
      src/SManagement/archives_upload/components/Set.vue
  9. 19 3
      src/SManagement/archives_upload/components/save.vue
  10. 33 11
      src/SManagement/archives_upload/components/upload.vue
  11. 20 16
      src/SManagement/archives_upload/index.vue
  12. 1 0
      src/SManagement/notice/compoents/list.vue
  13. 3 1
      src/SManagement/notice/notice_detail/NoticeDetail.vue
  14. 26 17
      src/SManagement/submitedit_details/components/SubmiteditAction.vue
  15. 37 9
      src/SManagement/submitedit_details/components/SubmiteditItemInfo.vue
  16. 1 1
      src/SManagement/submitedit_one/components/list.vue
  17. 0 0
      src/SManagement/user/role-edit/RoleEdit.vue
  18. 3 3
      src/SManagement/user/role-manage/RoleManage.vue
  19. 0 0
      src/SManagement/user/role-manage/components/RoleItem.vue
  20. 0 0
      src/SManagement/user/role-manage/components/removeRole.vue
  21. 4 4
      src/SManagement/user/team-manage/TeamManage.vue
  22. 2 1
      src/SManagement/user/team-manage/components/AddUser.vue
  23. 0 0
      src/SManagement/user/team-manage/components/RemoveTeam.vue
  24. 0 0
      src/SManagement/user/team-manage/components/TeamItem.vue
  25. 29 50
      src/SManagement/user/user-info/UserInfo.vue
  26. 28 0
      src/SManagement/user/user-info/components/NameEdit.vue
  27. 8 4
      src/SManagement/user/user-info/components/PassEdit.vue
  28. 8 5
      src/SManagement/user/user-info/components/PhoneEdit.vue
  29. 149 0
      src/SManagement/user/user-info/components/baseInfo.vue
  30. 53 0
      src/SManagement/user/user-info/components/wxBind.vue
  31. 11 0
      src/SManagement/user/user-info/components/wxPanl.vue
  32. 0 102
      src/SManagement/users/modules/NameEdit.vue
  33. 1 8
      src/components/layout/index.vue
  34. 3 7
      src/components/layout/modules/aside.vue
  35. 6 9
      src/components/search/index.vue
  36. 0 1
      src/main.js
  37. 22 4
      src/router/SManagement.js
  38. 77 0
      src/utils/weapp-jwt.js
  39. 1 0
      src/views/homePage/index.vue

+ 14 - 6
src/SManagement/archives/components/FileList.vue

@@ -98,7 +98,7 @@ export default {
       if (item.isCollect == 0) {
         this.params.method = "collectAttachment";
         this.params.content.collecttype = "营销物料",
-      this.params.content.attachmentid = item.attachmentid
+        this.params.content.attachmentid = item.attachmentid
       } else {
         this.params.method = "uncollectAttachment";
         this.params.content.attachmentid = item.attachmentid;
@@ -107,11 +107,19 @@ export default {
       this.$api.requested(this.params).then(res => {
         if (res.code == 1) {
           this.$emit("statusChange", id, item);
-          this.$notify({
-            title: "提示",
-            message: "修改成功",
-            type: "success"
-          });
+          if(this.params.method == "collectAttachment") {
+            this.$notify({
+              title: "提示",
+              message: "收藏成功",
+              type: "success"
+            });
+          } else {
+            this.$notify({
+              title: "提示",
+              message: "取消收藏",
+              type: "success"
+            });
+          }
         } else {
           this.$notify({
             title: "提示",

+ 3 - 0
src/SManagement/archives_ad/components/Edit.vue

@@ -16,6 +16,9 @@ export default {
   },
   methods: {
     edit () {
+      console.log(this.fileData.type);
+      
+      window.sessionStorage.setItem('uploadType',this.fileData.type)      
       this.$router.push({
         name: 'upload',
         params: {

+ 0 - 1
src/SManagement/archives_ad/components/list.vue

@@ -49,7 +49,6 @@ export default {
   watch: {
   },
   created () {
-
   },
   methods: {
     //获取封面

+ 12 - 11
src/SManagement/archives_ad/index.vue

@@ -87,12 +87,18 @@ export default {
     getFileList () {
       this.$api.requested(this.params).then(res => {
         this.total = res.total
+        for(let i = 0; i < res.data.length; i++) {
+          let list = this.fileType.fileList(res.data[i].attinfos)
+          if(!list.length) continue;
+          let obj = list.find(item => item.fileType == 'image')
+          if(!obj) continue;
+          res.data[i].cover = this.fileType.getSpecifiedImage(obj)
+          res.data.attinfos = list
+        }
+        console.log(res.data[0].cover);
+        console.log(res.data[0].attinfos);
+        
         this.fileData = res.data
-        this.fileData.forEach((item) => {
-          item.attinfos = this.fileType.fileList(item.attinfos)
-        })
-        console.log(this.fileData);
-
         this.params.content.sort = res.sort
       })
     },
@@ -106,12 +112,7 @@ export default {
     searchActive (result) {
       if (!result) return
       this.params.content.where.condition = result
-      this.$api.requested(this.params).then(res => {
-        this.fileData = res.data
-        this.fileData.forEach((item) => {
-          item.attinfos = this.fileType.fileList(item.attinfos)
-        })
-      })
+      this.getFileList()
     },
     sortTypeChange (name) {
       for (let i = 0; i < this.params.content.sort.length; i++) {

+ 0 - 139
src/SManagement/archives_admag/components/detail.vue

@@ -1,139 +0,0 @@
-<template>
-  <el-drawer title="详情" :visible.sync="isFileInfoPanlShow" :with-header="true">
-    <div class="header">
-      <p class="title">{{currentSelectFile.title}}</p>
-      <div class="detail-info">
-        <span>浏览数:{{currentSelectFile.readcount}}</span>
-        <span>分享数:{{currentSelectFile.sharecount}}</span>
-        <span>拉新数:{{currentSelectFile.newcount}}</span>
-      </div>
-    </div>
-    <div class="content">
-      <p class="title">素材文本</p>
-      <p ref="fwb"></p>
-    </div>
-    <div class="file">
-      <p class="title">附件</p>
-      <div class="file-item" v-for="(item,index) in currentSelectFile.attinfos" :key="index">
-        <img :src="item.url" alt="" v-if="item.fileType == 'image'">
-        <video :src="item.url" controls v-else></video>
-        <file-item :itemStyle="itemStyle" 
-                   :fileData="item"
-                   :isDownLoad="true">
-        </file-item>
-      </div>
-    </div>
-  </el-drawer>
-</template>
-
-
-<script>
-import FileItem from '@/components/file-block/index'
-import fileType from '@/utils/matchingFeilType'
-export default {
-  name: "Drawer",
-  data() {
-    return {
-      isFileInfoPanlShow: false,
-      //itemfile样式
-      itemStyle: {
-          itemWidth:1020,
-          img: {
-            width:64,
-            height:64
-          },
-          title:16,
-          descript: 12
-        },
-    };
-  },
-  filters: {
-    filterFile(val) {
-      return fileType.fileList([val][0])
-    }
-  },
-  props: {
-    currentSelectFile: {
-      default() {
-        return {}
-      }
-    }
-  },
-  components: {
-    FileItem
-  },
-  computed: {},
-  watch: {},
-  created() {
-  },
-  mounted() {
-    setTimeout(() => {
-      this.$refs.fwb.innerHTML = decodeURIComponent(this.currentSelectFile.content)
-    },1000)
-  },
-  methods: {
-    downLoad() {
-      window.open(this.currentSelectFile.url)
-    },
-    //预览
-    seeClick() {
-
-    }
-  }
-};
-</script>
-
-<style scoped>
-*{
-  box-sizing: border-box;
-}
-</style>
-<!--修改elementui样式-->
-<style>
-
-  .el-drawer__header {
-    font-size: 16px;
-    font-family: PingFang SC-Bold, PingFang SC;
-    font-weight: bold;
-    color: #333333;
-  }
-  .el-drawer__body {
-    padding: 30px;
-  }
-  .el-drawer__body .title {
-    font-size: 16px;
-    font-family: PingFang SC-Bold, PingFang SC;
-    font-weight: bold;
-    color: #333333;
-  }
-  .el-drawer {
-    width: 1080px !important;
-  }
-  .header {
-    margin-bottom: 40px;
-  }
-  .title {
-    margin-bottom: 10px;
-  }
-  .header .detail-info {
-    display: flex;
-  }
-  .header .detail-info span {
-    margin-right: 50px;
-    font-size: 14px;
-    font-weight: 400;
-    color: #333333;
-  }
-  .file {
-    margin-top: 40px;
-  }
-  .file .file-item {
-
-  }
-  .file .file-item .img {
-    width: 1020px;
-    height: 428px;
-    background: red;
-    margin-bottom: 10px;
-  }
-</style>

+ 0 - 169
src/SManagement/archives_admag/components/list.vue

@@ -1,169 +0,0 @@
-<template>
-  <div class="list-box" v-if="fileData.length != 0">
-    <div class="list" v-for="(item,index) in fileData" :key="index" @click="itemClick(item)">
-      <div class="top">
-        <img :src="getCover(item)" alt="">
-      </div>
-      <div class="bottom">
-        <p class="title">{{item.title}}</p>
-        <p>浏览数:{{item.readcount}}</p>
-        <p>分享数:{{item.sharecount}}</p>
-        <p>拉新数:12{{item.newcount}}</p>
-        <div class="handle">
-          <span @click.stop="edit(item)">编辑</span>
-          <span @click.stop="dialogVisible = true;currentItem=item">删除</span>
-        </div>
-      </div>
-    </div>
-    <el-dialog title="提示" :visible.sync="dialogVisible" width="30%">
-      <span>这是一段信息</span>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="remove()">确 定</el-button>
-      </span>
-    </el-dialog>
-  </div>
-  <el-empty description="暂无数据" v-else></el-empty>
-</template>
-
-<script>
-export default {
-  name: 'list',
-  data () {
-    return {
-      dialogVisible: false,
-      currentItem:[]
-    };
-  },
-  props: ['fileData'],
-  computed: {
-    
-  },
-  watch: {
-  },
-  created () {
-
-  },
-  methods: {
-    //获取封面
-    getCover(item) {
-      let result = item.attinfos.find(item1 => item1.fileType == 'image')
-      if(result) {
-        return item.attinfos.find(item => item == result).cover        
-      } else {
-        return require('@/assets/video.png')
-      }
-      
-    },
-    itemClick (data) {
-      this.$emit('listItemClick', data)
-    },
-    edit (data) {
-      this.$router.push({
-        name: 'upload',
-        params: {
-          data: JSON.stringify(data)
-        }
-      })
-    },
-    remove () {
-      this.dialogVisible = false
-      let param = {
-        "classname": "webmanage.saletool.sharematerial.sharematerial",
-        "method": "delete",
-        "content": {
-          "sat_sharematerialid": this.currentItem.sat_sharematerialid
-        }
-      }
-      this.$api.requested(param).then(res => {
-        if (res.code == 1) {
-          this.$notify({
-            title: "提示",
-            message: '删除成功',
-            type: 'success'
-          })
-          this.$emit('removeSuccess')
-        } else {
-          this.$notify({
-            title: "提示",
-            message: '删除失败',
-            type: 'error'
-          })
-        }
-      })
-    }
-    
-  },
-};
-</script>
-
-<style scoped>
-* {
-  box-sizing: border-box;
-}
-.list-box {
-  width: 100%;
-  display: flex;
-  flex-wrap: wrap;
-}
-.list-box .list {
-  width: 168px;
-  height: 286px;
-  margin: 0 30px 30px 0;
-  transition: all 0.2s ease-out;
-  cursor: pointer;
-}
-.list-box .list:hover {
-  box-shadow: 0px 3px 6px 1px rgba(0, 0, 0, 0.16);
-}
-.list-box .list .top {
-  width: 100%;
-  height: 120px;
-  border-radius: 4px 4px 0px 0px;
-}
-.list-box .list .top img {
-  width: 100%;
-  height: 100%;
-  border-radius: 4px 4px 0px 0px;
-}
-.list-box .list .bottom {
-  width: 100%;
-  height: 166px;
-  padding: 16px;
-  background: #ffffff;
-  border-radius: 0px 0px 4px 4px;
-  border: 1px solid #cccccc;
-}
-.list-box .list .bottom p:nth-child(1) {
-  font-size: 14px;
-  font-weight: 400;
-  color: #333333;
-  margin-bottom: 10px;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-.list-box .list .bottom p:nth-child(1) ~ p {
-  font-size: 12px;
-  font-weight: 400;
-  color: #999999;
-  margin-bottom: 8px;
-}
-.list-box .list .bottom .handle {
-  display: flex;
-  justify-content: space-around;
-  font-size: 14px;
-  font-weight: 400;
-  color: #3874f6;
-  margin-top: 16px;
-}
-.list-box .list .bottom .handle span {
-  cursor: pointer;
-}
-.el-empty {
-  position: absolute;
-  left: 50%;
-  top: 50%;
-  transform: translate(-50%,-50%);
-}
-</style>

+ 9 - 4
src/SManagement/archives_admag/index.vue

@@ -1,7 +1,9 @@
 <template>
 <div style="height:100%">
   <Header>
-    <save slot="save" type="upload" @btnClick="uploadClick()"></save>
+    <save slot="save" type="upload_image" @btnClick="uploadClick"></save>
+    <save slot="save" type="upload_video" @btnClick="uploadClick"></save>
+    <save slot="save" type="upload_fwb" @btnClick="uploadClick"></save>
   </Header>
   <div class="normal-card">
       <div class="header-panl">
@@ -179,9 +181,10 @@ export default {
       this.params.content.where.condition = ''
       this.getFileList()
     },
-    uploadClick() {
+    uploadClick(type) {
+      window.sessionStorage.setItem('uploadType',type)
       this.$router.push({
-        path:'/upload_archives'
+        path:'/upload_archives',
       })
     },
     pageChange(n) {
@@ -229,7 +232,9 @@ export default {
     width: 180px;
     border-radius: 4px 4px 4px 4px;
     border: 1px solid #3874F6;
-    margin-left: 16px;
+  }
+  /deep/.el-button span {
+    transform: translateX(-5px) !important;
   }
   .el-pagination {
     position: absolute;

+ 2 - 2
src/SManagement/archives_upload/components/Set.vue

@@ -6,10 +6,10 @@
              label-width="90px" 
              label-position="left"
              :rules="rules">
-      <el-form-item label="活动名称" prop="title">
+      <el-form-item label="标题" prop="title">
         <el-input v-model="ruleForm.title" @input="titleChange"></el-input>
       </el-form-item>
-      <el-form-item label="活动区域" prop="category">
+      <el-form-item label="素材分类" prop="category">
         <el-cascader :options="seleteList" 
                      :show-all-levels="false" 
                      v-model="ruleForm.category" 

+ 19 - 3
src/SManagement/archives_upload/components/save.vue

@@ -7,6 +7,18 @@
     <img src="@/assets/upload2.png" alt="">
     上传
   </el-button>
+  <el-button type="primary" size="small" @click="btnClick(1)" v-else-if="type == 'upload_image'">
+    <img src="@/assets/upload2.png" alt="">
+    上传图片
+  </el-button>
+  <el-button type="primary" size="small" @click="btnClick(2)" v-else-if="type == 'upload_video'">
+    <img src="@/assets/upload2.png" alt="">
+    上传视频
+  </el-button>
+  <el-button type="primary" size="small" @click="btnClick(3)" v-else-if="type == 'upload_fwb'">
+    <img src="@/assets/upload2.png" alt="">
+    上传图文
+  </el-button>
 </template>
 
 <script>
@@ -28,19 +40,23 @@ export default {
   watch:{
   },
   methods: {
-    btnClick() {
-      this.$emit('btnClick')
+    btnClick(type) {
+      this.$emit('btnClick',type)
     }
   },
 };
 </script>
 
 <style scoped>
+*{
+  box-sizing: border-box;
+}
   /deep/span {
     display: flex;
     align-items: center;
   }
   img {
-    margin-right: 8px;
+    padding-right: 5px;
   }
+  
 </style>

+ 33 - 11
src/SManagement/archives_upload/components/upload.vue

@@ -67,19 +67,41 @@ export default {
   methods: {
     handleChange (file, filelist) {
       var ext = file.name.substr(file.name.indexOf('.')+1)
-      let type = ['png', 'jpg', 'jpeg', 'bmp', 'gif', 'webp', 'svg', 'tiff','mp4', 'ogg', 'webm']
-      let result = type.some(item => {
-        return item == ext
-      })
-      if(!result && this.classType == 'image') {
-        this.clearFiles()
-        this.$notify({
-          title:'提示',
-          message:'只能上传图片或视频',
-          type:'error'
+      let type = []
+      let result = ''
+      
+      if(this.classType == '1') {
+        console.log(1111);
+        
+        type = ['png', 'jpg', 'jpeg', 'bmp', 'gif', 'webp', 'svg', 'tiff']
+        result = type.some(item => {
+          return item == ext
         })
-        return
+        if(!result) {
+          this.$notify({
+            title:'提示',
+            message:'只能上传图片',
+            type:'warning'
+          })
+          this.clearFiles()
+          return
+        }
+      } else if(this.classType == '2') {
+        type = ['mp4', 'ogg', 'webm']
+        result = type.some(item => {
+          return item == ext
+        })
+        if(!result) {
+          this.$notify({
+            title:'提示',
+            message:'只能上传视频',
+            type:'warning'
+          })
+          this.clearFiles()
+          return
+        }
       }
+
       this.filelist = filelist
       var index = file.raw.name.lastIndexOf(".");
       

+ 20 - 16
src/SManagement/archives_upload/index.vue

@@ -7,8 +7,8 @@
     <!--标题 分类-->
     <Set ref="set"></Set>
     <!--文件列表-->
-    <file-list :attinfos="uploadCacheData.attinfos">
-      <upload slot="upload" @onSuccess="onSuccess" target="archives" classType="image"></upload>
+    <file-list :attinfos="uploadCacheData.attinfos" v-if="uploadType == '1' || uploadType == '2'">
+      <upload slot="upload" @onSuccess="onSuccess" target="archives" :classType="uploadType"></upload>
       <template v-slot:delete="scope">
         <delete1 :data="scope.data"></delete1>
       </template>
@@ -17,7 +17,7 @@
       </template>
     </file-list>
     <!--富文本-->
-    <file-text ref="text">
+    <file-text ref="text" v-if="uploadType == '3'">
       <Editor ref="editor" slot="editor" :content="cacheInfo.content.content" :id="uploadCacheData.sat_sharematerialid">
       </Editor>
     </file-text>
@@ -37,7 +37,7 @@ import delete1 from '@/SManagement/archives_upload/components/delete'
 import download from '@/SManagement/archives_upload/components/download'
 import Editor from '@/components/my-editor/Editor'
 
-
+import {weAtob,weBtoa} from "@/utils/weapp-jwt"
 import removeFile from '@/utils/removeFile'
 export default {
   name: 'index',
@@ -54,13 +54,15 @@ export default {
           "tag": [],
           "canfiledownload": 1,
           "content": "",
-          "sat_sharematerialid": 0
+          "sat_sharematerialid": 0,
+          "type":''
         }
       },
       //上传的初始数据
       uploadCacheData: '',
       //创建素材模板的id
-      create_sat_sharematerialid:0
+      create_sat_sharematerialid: 0,
+      uploadType: window.sessionStorage.getItem('uploadType')
     };
   },
   components: {
@@ -89,8 +91,10 @@ export default {
     //保存
     save () {
       this.$refs.set.$refs.form.validate((val) => {
+        var that = this
         if (val) {
-          this.cacheInfo.content.content = btoa(this.$refs.editor.editor.getHtml())
+          if (this.uploadType == '3') this.cacheInfo.content.content = weBtoa(this.$refs.editor.editor.getHtml())
+          this.cacheInfo.content.type = this.uploadType
           this.$api.requested(this.cacheInfo).then(res => {
             let param = {
               "classname": "webmanage.saletool.sharematerial.sharematerial",
@@ -142,7 +146,7 @@ export default {
         this.cacheInfo.content.title = data.title
         this.cacheInfo.content.sat_sharematerial_classid = data.sat_sharematerial_classid
         this.cacheInfo.content.content = data.content
-        
+
         this.$refs.set.ruleForm.title = data.title
         this.$refs.set.ruleForm.category = data.sat_sharematerial_classid
         this.uploadCacheData.sat_sharematerialid = data.sat_sharematerialid
@@ -179,7 +183,7 @@ export default {
     },
     //退出后对数据进行销毁
     async removeAllData () {
-      if(this.$route.params.data) {
+      if (this.$route.params.data) {
         this.uploadCacheData.status = "新建"
         this.uploadCacheData.sat_sharematerialid = this.create_sat_sharematerialid
       }
@@ -199,13 +203,13 @@ export default {
       }
     },
     //重置所有数据
-    reSetAllData() {
-        this.cacheInfo.content.title = ''
-        this.cacheInfo.content.sat_sharematerial_classid = ''
-        this.$refs.editor.html = ''
-        this.$refs.set.ruleForm.title = ''
-        this.$refs.set.ruleForm.category = ''
-        this.uploadCacheData.attinfos = []
+    reSetAllData () {
+      this.cacheInfo.content.title = ''
+      this.cacheInfo.content.sat_sharematerial_classid = ''
+      this.$refs.editor.html = ''
+      this.$refs.set.ruleForm.title = ''
+      this.$refs.set.ruleForm.category = ''
+      this.uploadCacheData.attinfos = []
     }
   },
 };

+ 1 - 0
src/SManagement/notice/compoents/list.vue

@@ -48,6 +48,7 @@ export default {
   watch:{
   },
   created() {
+
   },
   methods: {
     //通告iten单击事件

+ 3 - 1
src/SManagement/notice/notice_detail/NoticeDetail.vue

@@ -46,6 +46,8 @@
 <script>
 import FileItem from '@/components/file-block/index'
 import FileType from '@/utils/matchingFeilType'
+
+import {weAtob,weBtoa} from "@/utils/weapp-jwt"
 export default {
   name: "NoticeDetail",
   data () {
@@ -103,7 +105,7 @@ export default {
   methods: {
     //解析富文本
     compileFWB () {
-      let con = decodeURIComponent(this.detailData.content);
+      let con = weAtob(this.detailData.content);
       document.getElementById('fwb').innerHTML = con;
     },
     //获取详情数据

+ 26 - 17
src/SManagement/submitedit_details/components/SubmiteditAction.vue

@@ -13,16 +13,18 @@
           v-model="param.content.content">
           </el-input>
       </div>
-      <div class="file-box">
-        <p>提报附件</p>
-          <file-item
-           :isDownLoad="false" 
-          :isDelete="true" 
-          :itemStyle="itemDrawerStyle" 
-          :fileData="upload_panl.attinfos" 
-          @deleteSuccess="deleteSuccess"></file-item>
+      <div class="bottom">
+        <div class="file-box">
+          <p>提报附件</p>
+            <file-item
+            :isDownLoad="false" 
+            :isDelete="true" 
+            :itemStyle="itemDrawerStyle" 
+            :fileData="upload_panl.attinfos" 
+            @deleteSuccess="deleteSuccess"></file-item>
+        </div>
+        <upload target="submit" @onSuccess="onSuccess"></upload>
       </div>
-      <upload target="submit" @onSuccess="onSuccess"></upload>
     </el-drawer>
   </div>
   
@@ -102,7 +104,9 @@ export default {
           }
       }
       this.$api.requested(param).then( res =>{
-        
+        if(res.code != 1) {
+          console.log('提报删除失败');
+        }    
       })
     },
     save() {
@@ -193,25 +197,25 @@ export default {
   /deep/ .el-drawer__header {
     margin-bottom: 0;
   }
-  /deep/ .el-drawer__body {
-    padding: 30px;
-  }
   /deep/ .el-drawer {
     width: 1052px !important;
   }
-  .el-drawer__body .el-button.btn1 {
-    margin-bottom: 30px;
+  .el-drawer__body .btn1 {
+    margin: 20px 0 20px 20px;
     width: 88px;
     height: 36px;
     background: #FA8C16;
   }
+  .el-drawer__body .content {
+    border-bottom: 10px solid #FAFAFA;
+    padding: 0 0 20px 20px;
+  }
   .el-drawer__body .content p:first-child {
     font-size: 16px;
     font-weight: bold;
     color: #333333;
     margin-bottom: 20px;
   }
-
   .el-drawer .file-box p {
     margin: 20px 0 20px 0;
     font-size: 16px;
@@ -227,7 +231,12 @@ export default {
     display: flex;
     margin-top: 20px;
   }
-  .upload .el-button {
+  /deep/.upload .el-button {
     width: 100%;
+    border: 1px solid #3874F6;
+    color: #3874F6;
+  }
+  .bottom {
+    padding: 0 20px;
   }
 </style>

+ 37 - 9
src/SManagement/submitedit_details/components/SubmiteditItemInfo.vue

@@ -5,10 +5,11 @@
       <div class="list" v-if="fileData.length > 0">
         <div class="list-item" @click="itemClick(item)" v-for="(item,index) in fileData" :key="index">
           <div class="decript">{{item.content}}</div>
-          <div class="time">提交时间:{{item.createdate}}</div>
+          <div class="time"><span>提交时间:</span>{{item.createdate}}</div>
           <div class="footer">
-            <p class="submit">附件数:{{item.attinfos.length}}</p>
+            <p class="submit"><span>附件数:</span>{{item.attinfos.length}}</p>
           </div>
+          <span class="back" v-if="item.status == '新建' && item.content">退回</span>
         </div>
       </div>
       <el-empty description="暂无数据" v-else></el-empty>
@@ -23,7 +24,7 @@
           {{currentFile.content}}
         </p>
       </div>
-      <div class="file-box">
+      <div class="file-box" v-if="currentFile.attinfos && currentFile.attinfos.length > 0">
         <p>提报附件</p>
         <div class="file1">
           <file-item :isDownLoad="true" :itemStyle="itemDrawerStyle" :fileData="currentFile.attinfos">
@@ -64,7 +65,10 @@ export default {
   watch: {
   },
   created() {
+    setTimeout(() => {
     console.log(this.fileData);
+
+    },1000)
     
   },
   methods: {
@@ -88,12 +92,13 @@ export default {
 .normal-card {
   height: 100%;
 }
-/deep/ .el-drawer__body {
-  padding: 30px;
-}
 /deep/ .el-drawer {
   width: 550px !important;
 }
+.el-drawer__body .content {
+  padding-left: 20px;
+  border-bottom: 10px solid #FAFAFA;
+}
 .el-drawer__body .content p:first-child {
   font-size: 16px;
   font-weight: bold;
@@ -106,8 +111,14 @@ export default {
   color: #666666;
   margin-bottom: 40px;
 }
+.el-drawer .file-box {
+  padding: 20px 0 0 20px;
+}
 .el-drawer .file-box p {
   margin-bottom: 20px;
+  font-size: 16px;
+  font-weight: bold;
+  color: #333333;
 }
 .title {
   font-size: 14px;
@@ -129,6 +140,7 @@ export default {
   padding: 16px;
   cursor: pointer;
   transition: border 0.1s ease-in-out;
+  position: relative;
 }
 .list .list-item:hover {
   box-shadow: 0px 3px 8px 1px rgba(0, 0, 0, 0.15);
@@ -150,7 +162,7 @@ export default {
   -webkit-line-clamp:2;     
   overflow:hidden;             
   text-overflow:ellipsis;
-  margin-bottom: 15px;
+  margin-bottom: 16px;
 }
 .list .list-item .time {
   font-size: 12px;
@@ -165,8 +177,24 @@ export default {
 .list .list-item .footer .submit {
   font-size: 12px;
   font-weight: 400;
-  color: #999999;
-  
+  color: #999999; 
+}
+.list .list-item .back {
+  width: 42px;
+  height: 24px;
+  border-radius: 2px 2px 2px 2px;
+  border: 1px solid #FF3B30;
+  font-size: 12px;
+  font-weight: 400;
+  color: #FF3B30;
+  line-height: 22px;
+  text-align: center;
+  position: absolute;
+  bottom: 10px;
+  right: 10px;
+}
+.time span,.submit span {
+  margin-right: 10px;
 }
 .pagin {
   display: flex;

+ 1 - 1
src/SManagement/submitedit_one/components/list.vue

@@ -3,7 +3,7 @@
     <div class="list-item" @click="itemClick(item.sat_submiteditmodelid,item.ishistory)" v-for="(item,index) in list" :key="index">
       <div class="header1">
         <div class="handle" :class="item.ishistory == 0 ? 'action' : 'no-action'">
-          进行中
+          {{item.ishistory == 0 ? '进行中' : '已结束'}}
         </div>
         <p class="title">{{item.title}}</p>
       </div>

+ 0 - 0
src/SManagement/users/components/RoleEdit.vue → src/SManagement/user/role-edit/RoleEdit.vue


+ 3 - 3
src/SManagement/users/components/RoleManage.vue → src/SManagement/user/role-manage/RoleManage.vue

@@ -19,8 +19,8 @@
 </template>
 
 <script>
-import RoleItem from '@/SManagement/users/modules/RoleItem'
-import removeRole from '@/SManagement/users/modules/removeRole'
+import RoleItem from '@/SManagement/user/role-manage/components/RoleItem'
+import removeRole from '@/SManagement/user/role-manage/components/removeRole'
 export default {
   name: 'RoleManage',
   data () {
@@ -105,7 +105,7 @@ export default {
   box-sizing: border-box;
 }
 .role {
-  width: 976px;
+  width: 100%;
   min-height: 100%;
   background: #ffffff;
 }

+ 0 - 0
src/SManagement/users/modules/RoleItem.vue → src/SManagement/user/role-manage/components/RoleItem.vue


+ 0 - 0
src/SManagement/users/modules/removeRole.vue → src/SManagement/user/role-manage/components/removeRole.vue


+ 4 - 4
src/SManagement/users/components/TeamManage.vue → src/SManagement/user/team-manage/TeamManage.vue

@@ -20,9 +20,9 @@
 </template>
 
 <script>
-import AddUser from '@/SManagement/users/modules/AddUser'
-import TeamItem from '@/SManagement/users/modules/TeamItem'
-import RemoveTeam from '@/SManagement/users/modules/RemoveTeam'
+import AddUser from '@/SManagement/user/team-manage/components/AddUser'
+import TeamItem from '@/SManagement/user/team-manage/components/TeamItem'
+import RemoveTeam from '@/SManagement/user/team-manage/components/RemoveTeam'
 export default {
   name: 'TeamManage',
   data () {
@@ -81,7 +81,7 @@ export default {
   box-sizing: border-box;
 }
   .tema {
-    width: 976px;
+    width: 100%;
     min-height: 100%;
     background: #ffffff;
     position: relative;

+ 2 - 1
src/SManagement/users/modules/AddUser.vue → src/SManagement/user/team-manage/components/AddUser.vue

@@ -103,9 +103,10 @@ export default {
             "sa_agent_hrid": 0
         }
       }).then( res => {
-        console.log(this.checkList);
+        console.log(res);
         
         this.checkList = res.data
+        console.log(this.checkList);
       })
     },
     //提交

+ 0 - 0
src/SManagement/users/modules/RemoveTeam.vue → src/SManagement/user/team-manage/components/RemoveTeam.vue


+ 0 - 0
src/SManagement/users/modules/TeamItem.vue → src/SManagement/user/team-manage/components/TeamItem.vue


+ 29 - 50
src/SManagement/users/components/UserInfo.vue → src/SManagement/user/user-info/UserInfo.vue

@@ -6,53 +6,15 @@
             <up-load target="avatar" @onSuccess="onSuccess"></up-load>
         </div>
       </div>
-      <div class="info1">
-        <div class="info-item">
-          <div class="left">
-            <p>姓名</p>
-            <p>{{userInfo.name}}</p>
-          </div>
-          <div class="right">
-            <slot name="nameEdit" :data="userInfo"></slot>
-          </div>
-        </div>
-      </div>
-      <div class="info1">
-        <div class="info-item">
-          <div class="left">
-            <p>手机号</p>
-            <p>{{userInfo.phonenumber}}</p>
-          </div>
-          <div class="right">
-            <slot name="phoneEdit" :data="userInfo"></slot>
-          </div>
-        </div>
-      </div>
-      <div class="info1">
-        <div class="info-item">
-          <div class="left">
-            <p>密码</p>
-            <p>********</p>
-          </div>
-          <div class="right">
-            <slot name="passEdit"></slot>
-          </div>
-        </div>
-      </div>
-      <div class="info1">
-        <div class="info-item">
-          <div class="left">
-            <p class="vx">
-              微信
-              <img src="@/assets/vx.png" alt="">
-            </p>
-            <p>未绑定</p>
-          </div>
-          <div class="right">
-            <el-button round @click="bindVx()">绑定</el-button>
-          </div>
-        </div>
-      </div>
+      <base-info :userInfo="userInfo" ref="userInfo">
+          <phone-edit slot="phoneEdit" :userInfo="userInfo" @phoneChange="phoneChange"></phone-edit>
+          <pass-edit slot="passEdit" :userInfo="userInfo"></pass-edit>
+      </base-info>
+
+      <wx-bind>
+        <wx-panl slot="wxBind">111</wx-panl>
+      </wx-bind>
+
       <div class="logout">
         <slot name="logout" :data="userInfo"></slot>
       </div>
@@ -62,6 +24,11 @@
 <script>
 
 import upLoad from '@/SManagement/archives_upload/components/upload'
+import baseInfo from '@/SManagement/user/user-info/components/baseInfo'
+import phoneEdit from '@/SManagement/user/user-info/components/PhoneEdit'
+import passEdit from '@/SManagement/user/user-info/components/PassEdit'
+import wxBind from '@/SManagement/user/user-info/components/wxBind'
+import wxPanl from '@/SManagement/user/user-info/components/wxPanl'
 
 import removeFile from '@/utils/removeFile'
 export default {
@@ -79,7 +46,12 @@ export default {
     };
   },
   components: {
-    upLoad
+    upLoad,
+    baseInfo,
+    phoneEdit,
+    passEdit,
+    wxBind,
+    wxPanl
   },
   computed:{
     getAvatar() {
@@ -137,6 +109,9 @@ export default {
         }
       })
     },
+    phoneChange(phone) {
+      this.$refs.userInfo.ruleForm.phonenumber = phone
+    },
   },
 };
 </script>
@@ -146,7 +121,8 @@ export default {
   box-sizing: border-box;
 }
   .user-info-panl {
-    width: 976px;
+    width: 100%;
+    min-height: 100%;
     background: #ffffff;
     padding: 50px 60px 0 60px;
   }
@@ -155,8 +131,11 @@ export default {
   }
   .user-info-panl .top .avatar {
     display: flex;
-    flex-direction: column;
     align-items: center;
+    margin-bottom: 40px;
+  }
+  .user-info-panl .top .avatar img {
+    margin-right: 20px;
   }
   .user-info-panl .top .avatar img {
     width: 96px;

+ 28 - 0
src/SManagement/user/user-info/components/NameEdit.vue

@@ -0,0 +1,28 @@
+<template>
+
+</template>
+
+<script>
+export default {
+  name: 'NameEdit',
+  data () {
+    return {
+      
+      status:false
+    };
+  },
+  props:[],
+  computed: {
+  },
+  watch: {
+
+  },
+  methods: {
+    
+  },
+};
+</script>
+
+<style scoped>
+
+</style>

+ 8 - 4
src/SManagement/users/modules/PassEdit.vue → src/SManagement/user/user-info/components/PassEdit.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="password">
-    <el-button round @click="dialogVisible=true">编辑</el-button>
+    <span @click="dialogVisible=true">编辑</span>
     <el-dialog title="修改密码" :visible.sync="dialogVisible" :before-close="handleClose">
       <el-form ref="form" :model="form" label-width="80px">
         <el-form-item label="原密码">
@@ -76,7 +76,11 @@ export default {
   height: 422px;
   background: #ffffff;
 }
-.footer .el-button {
-  width: 120px;
-}
+  span {
+    font-size: 14px;
+    font-weight: 400;
+    color: #3874F6;
+    margin-left: 30px;
+    cursor: pointer;
+  }
 </style>

+ 8 - 5
src/SManagement/users/modules/PhoneEdit.vue → src/SManagement/user/user-info/components/PhoneEdit.vue

@@ -1,6 +1,6 @@
 <template>
 <div class="phone">
-  <el-button round @click="dialogVisible=true">编辑</el-button>
+  <span @click="dialogVisible=true">编辑</span>
   <el-dialog
     title="修改手机号"
     :visible.sync="dialogVisible"
@@ -100,7 +100,7 @@ export default {
             message:'修改成功',
             type:'success'
           })
-          this.$parent.userInfo.phonenumber = this.form.phonenumber
+          this.$emit('phoneChange',this.form.phonenumber)
           this.dialogVisible = false
           this.logCode = ''
           this.form.phonenumber = ''
@@ -152,8 +152,11 @@ export default {
   /deep/.el-form-item__content .el-button {
     margin-left: 16px;
   }
-  .footer .el-button {
-    width: 120px;
+  span {
+    font-size: 14px;
+    font-weight: 400;
+    color: #3874F6;
+    margin-left: 30px;
+    cursor: pointer;
   }
-
 </style>

+ 149 - 0
src/SManagement/user/user-info/components/baseInfo.vue

@@ -0,0 +1,149 @@
+<template>
+  <div class="base-info">
+    <p class="title">基本信息</p>
+    <el-form :model="ruleForm" 
+             :rules="rules" 
+             ref="ruleForm" 
+             label-width="104px"
+             label-position="left" 
+             class="demo-ruleForm"
+             :show-message="false">
+      <el-form-item label="姓名:" prop="name" v-focus>
+        <el-input v-model="ruleForm.name" size="small" :placeholder="ruleForm.name" :disabled="status" ref="nameEdit"></el-input>
+        <div class="handle">
+          <span v-if="status" @click="status = false">编辑</span>
+          <span v-else @click="save()">保存</span>
+        </div>
+      </el-form-item>
+      <el-form-item label="手机号:" prop="phonenumber">
+        <el-input v-model="ruleForm.phonenumber" size="small" :placeholder="ruleForm.phonenumber" :disabled="true"></el-input>
+        <slot :data="userInfo" name="phoneEdit"></slot>
+      </el-form-item>
+      <el-form-item label="密码:" prop="pass">
+        <el-input v-model="ruleForm.pass" size="small" placeholder="******" :disabled="true"></el-input>
+        <slot :data="userInfo" name="passEdit"></slot>
+      </el-form-item>
+    </el-form>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'baseInfo',
+  data() {
+    return {
+      edit: {
+        "classname": "common.usercenter.usercenter",
+        "method": "updateUserMsg",
+        "content": {
+          "name":'',
+          "phonenumber":'',
+        }
+      },
+      ruleForm: {
+        name:'',
+        phonenumber:'',
+        pass:'******'
+      },
+      rules: {
+        name:[
+         { required: true, message: '请输入姓名', trigger: 'blur' }
+        ],
+        phonenumber:[
+         { required: true, message: '请输入手机号', trigger: 'blur' }
+        ],
+        pass:[
+         { required: true, message: '请输入密码', trigger: 'blur' }
+        ],
+      },
+      status:true
+    };
+  },
+  directives: {
+    focus: {
+      bind(el,node,vm) {
+        let handle = (e) => {
+          if(!el.contains(e.target)) {
+            vm.context.status = true            
+          }
+        }
+        el.handle = handle
+        document.addEventListener('click',handle)
+      },
+      unbind(el) {
+        document.removeEventListener('click',el.handle)
+      }
+    }
+  },
+  props:['userInfo'],
+  computed:{
+  },
+  watch:{
+    userInfo: {
+      handler(val) {
+        this.ruleForm.name = val.name
+        this.ruleForm.phonenumber = val.phonenumber
+      }
+    },
+    status: {
+      handler(val) {
+        if(!val) {
+          this.$nextTick(() => {
+            this.$refs.nameEdit.focus()
+          })
+        }        
+      }
+    }
+  },
+  methods: {
+    save() {
+      if(this.ruleForm.name == this.userInfo.name) {
+        this.$notify({
+          title:'提示',
+          message:'请输入新的名称',
+          type:'warning'
+        })
+        return
+      }
+      this.userInfo.name = this.ruleForm.name
+      this.status = true
+      this.edit.content.name = this.ruleForm.name
+      this.edit.content.phonenumber = this.ruleForm.phonenumber
+      this.$api.requested(this.edit).then( res => {
+        if(res.code == 1) {
+          this.$notify({
+            title:'提示',
+            message:'名称修改成功',
+            type:'success'
+          })
+        }
+      })
+    }
+  },
+};
+</script>
+
+<style scoped>
+  .base-info {
+    margin-bottom: 60px;
+  }
+  .base-info .title {
+    font-size: 16px;
+    font-weight: bold;
+    color: #333333;
+    margin-bottom: 30px;
+  }
+  .el-input {
+    width: 500px;
+  }
+  /deep/.el-form-item__content {
+    display: flex;
+  }
+  span {
+  font-size: 14px;
+  font-weight: 400;
+  color: #3874F6;
+  margin-left: 30px;
+  cursor: pointer;
+}
+</style>

+ 53 - 0
src/SManagement/user/user-info/components/wxBind.vue

@@ -0,0 +1,53 @@
+<template>
+  <div class="wx">
+    <p class="title">绑定微信</p>
+    <div class="no-bind">
+      <div class="left">
+        <img src="@/assets/vx.png" alt="">
+        <span>未绑定</span>
+      </div>
+      <div class="right">
+        <slot name="wxBind"></slot>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: '',
+  data() {
+    return {
+    };
+  },
+  computed:{
+  },
+  watch:{
+  },
+  methods: {},
+};
+</script>
+
+<style scoped>
+  .wx {
+
+  }
+  .wx .title {
+    font-size: 16px;
+    font-weight: bold;
+    color: #333333;
+    margin-bottom: 30px;
+  }
+  .wx .no-bind {
+    display: flex;
+  }
+  .wx .no-bind img {
+    vertical-align: middle;
+    margin-right: 10px;
+  }
+  .wx .no-bind span {
+    font-size: 14px;
+    font-weight: 400;
+    color: #666666;
+  }
+</style>

+ 11 - 0
src/SManagement/users/modules/VxPanl.vue → src/SManagement/user/user-info/components/wxPanl.vue

@@ -1,4 +1,6 @@
 <template>
+<div class="panl">
+  <span @click="dialogVisible=true">绑定</span>
   <el-dialog
     title="绑定微信"
     :visible.sync="dialogVisible"
@@ -9,6 +11,8 @@
       <p>微信扫码登录</p>
     </div>
   </el-dialog>
+</div>
+  
 </template>
 
 <script>
@@ -83,4 +87,11 @@ export default {
     left: -20px;
     bottom: 5px;
   }
+  span {
+    font-size: 14px;
+    font-weight: 400;
+    color: #3874F6;
+    margin-left: 30px;
+    cursor: pointer;
+  }
 </style>

+ 0 - 102
src/SManagement/users/modules/NameEdit.vue

@@ -1,102 +0,0 @@
-<template>
-  <div class="name" v-if="userInfo">
-    <el-button round @click="dialogVisible=true">编辑</el-button>
-    <el-dialog title="修改名称" :visible.sync="dialogVisible" :before-close="handleClose">
-      <el-form ref="form" label-width="80px">
-        <el-form-item label="姓名">
-          <el-input v-model="edit.content.name" placeholder="请输入"></el-input>
-        </el-form-item>
-      </el-form>
-      <div class="footer">
-        <el-button @click="dialogVisible=false">取消</el-button>
-        <el-button type="primary" @click="nameEdit()">提交</el-button>
-      </div>
-    </el-dialog>
-  </div>
-
-</template>
-
-<script>
-export default {
-  name: 'NameEdit',
-  data () {
-    return {
-      edit: {
-          "classname": "common.usercenter.usercenter",
-          "method": "updateUserMsg",
-          "content": {
-            "name":'',
-            "phonenumber":'',
-          }
-      },
-      dialogVisible: false,
-    };
-  },
-  props:['userInfo'],
-  computed: {
-  },
-  watch: {
-    userInfo: {
-      handler(val) {
-        this.edit.content.name = val.name
-        this.edit.content.phonenumber = val.phonenumber
-      }
-    }
-  },
-  methods: {
-    nameEdit() {
-      if(this.userInfo.name == this.edit.content.name) {
-        this.$notify({
-          title:'提示',
-          message:'请输入新名称',
-          type:'warning'
-        })
-      } else {
-        this.$api.requested(this.edit).then( res => {
-          if(res.code == 1) {
-            this.dialogVisible = false
-            this.$parent.userInfo.name = this.edit.content.name
-          }
-        })
-      }
-    },
-    handleClose () {
-      this.dialogVisible = false
-    }
-  },
-};
-</script>
-
-<style scoped>
-* {
-  box-sizing: border-box;
-}
-/deep/ .el-dialog__title {
-  font-size: 16px;
-  font-weight: bold;
-  color: #333333;
-}
-/deep/.el-dialog__body {
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  padding-bottom: 0;
-}
-/deep/.el-dialog__body .el-form-item {
-  margin-bottom: 30px;
-}
-.el-form {
-  width: 450px;
-}
-/deep/.el-dialog {
-  width: 864px;
-  height: 284px;
-  background: #ffffff;
-}
-/deep/.el-form-item__content {
-  display: flex;
-}
-.footer .el-button {
-  width: 120px;
-}
-</style>

+ 1 - 8
src/components/layout/index.vue

@@ -13,12 +13,8 @@
         </div>
       </div>
       <div class="nav-bottom-item">
-        <div class="item more" @click="moreClick()" :class="{'active': isMoreShow}">
+        <div class="item more" :class="{'active': isMoreShow}">
            <img width="30" src="../../assets/nav_icon/more.svg" alt="">
-           <div class="more-box"  :style="{opacity: isMoreShow ? 1 : 0}" @click="$router.push('/users')">
-            <img src="@/assets/user_icon.png" alt="">
-            个人中心
-           </div>
         </div>
       </div>
     </div>
@@ -78,9 +74,6 @@ export default {
     itemClick(path) {
       this.$router.push(path)
     },
-    moreClick() {
-      this.isMoreShow = !this.isMoreShow
-    }
   }
 }
 

+ 3 - 7
src/components/layout/modules/aside.vue

@@ -1,7 +1,7 @@
 <template>
   <el-menu
     style="height: calc(100vh - 100px);overflow-y:scroll"
-    :default-active="activePath"
+    :default-active="getCurrentPath"
     class="el-menu-vertical-demo"
     @open="handleOpen"
     @close="handleClose"
@@ -25,7 +25,7 @@ export default {
   },
   computed: {
     getCurrentPath() {
-      
+      return window.sessionStorage.getItem('currentPath') ? window.sessionStorage.getItem('currentPath') : this.$route.path
     }
   },
   methods:{
@@ -38,9 +38,7 @@ export default {
       this.activePath = active_modules.apps[0].path
     },
     itemClick(path) {
-      this.$store.commit('changePath',path)
-      console.log(this.$store.state.currentPath);
-      
+      window.sessionStorage.setItem('currentPath',path)
     }
   },
   
@@ -50,8 +48,6 @@ export default {
   },
   watch:{
     $route(){
-      //监听导航高亮时机
-      this.activePath = this.$store.state.currentPath ? this.$store.state.currentPath : this.$route.path
     }
   }
 }

+ 6 - 9
src/components/search/index.vue

@@ -3,12 +3,11 @@
     <span>搜索:</span>
     <el-input
       placeholder="请输入内容"
-      prefix-icon="el-icon-search"
       v-model="search"
       clearable
-      @input="queryClick()"
       @clear="clearData()"
       size="small">
+      <i slot="prefix" class="el-icon-search" @click="queryClick()"></i>
     </el-input>
   </div>
 </template>
@@ -19,7 +18,6 @@ export default {
   data () {
     return {
       search: '',
-      timer:null
     };
   },
   props: {
@@ -31,12 +29,7 @@ export default {
   methods: {
     queryClick() {
       if(!this.search) return
-      if(this.timer) {
-        clearTimeout(this.timer)
-      } 
-      this.timer = setTimeout(() => {
-        this.$emit('searchActive',this.search)
-      },500)
+      this.$emit('searchActive',this.search)
     },
     clearData() {
       this.$emit('clearData')
@@ -59,4 +52,8 @@ export default {
     color: #666666;
     margin-right: 8px;
   }
+  /deep/.el-input__prefix {
+    display: flex;
+    align-items: center;
+  }
 </style>

+ 0 - 1
src/main.js

@@ -10,7 +10,6 @@ import api from './api/api'
 import tool from './utils/tool'
 import FileType from './utils/matchingFeilType'
 import upload from './api/upload'
-
 import './style/style.css'
 import './style/theme/index.css'
 import './style/theme/font-icon/iconfont.css'

+ 22 - 4
src/router/SManagement.js

@@ -97,13 +97,31 @@ component: () => import(/* webpackChunkName: "about" */ '@/SManagement/submitedi
   },
 },
 {
-  path: '/users',
+  path: '/user_center',
   name: 'user',
   meta: {
     title: '个人中心',
-    ast_nav:false
+    ast_nav:true
+  },
+  component: () => import(/* webpackChunkName: "about" */ '@/SManagement/user/user-info/UserInfo')
+},
+{
+  path: '/team_managent',
+  name: 'teamManagent',
+  meta: {
+    title: '团队管理',
+    ast_nav:true
+  },
+  component: () => import(/* webpackChunkName: "about" */ '@/SManagement/user/team-manage/TeamManage')
+},
+{
+  path: '/role_managent',
+  name: 'roleManagent',
+  meta: {
+    title: '角色管理',
+    ast_nav:true
   },
-  component: () => import(/* webpackChunkName: "about" */ '@/SManagement/users/index.vue')
+  component: () => import(/* webpackChunkName: "about" */ '@/SManagement/user/role-manage/RoleManage')
 },
 {
   path: '/role_edit',
@@ -112,7 +130,7 @@ component: () => import(/* webpackChunkName: "about" */ '@/SManagement/submitedi
     title: '角色操作',
     ast_nav:false
   },
-  component: () => import(/* webpackChunkName: "about" */ '@/SManagement/users/components/RoleEdit')
+  component: () => import(/* webpackChunkName: "about" */ '@/SManagement/user/role-edit/RoleEdit')
 }
 ]
 export default SManagement

+ 77 - 0
src/utils/weapp-jwt.js

@@ -0,0 +1,77 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+var b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;
+exports.weBtoa = function (string) {
+    string = String(string);
+    var bitmap, a, b, c, result = "", i = 0, rest = string.length % 3;
+    for (; i < string.length;) {
+        if ((a = string.charCodeAt(i++)) > 255 ||
+            (b = string.charCodeAt(i++)) > 255 ||
+            (c = string.charCodeAt(i++)) > 255)
+            throw new TypeError("Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.");
+        bitmap = (a << 16) | (b << 8) | c;
+        result += b64.charAt(bitmap >> 18 & 63) + b64.charAt(bitmap >> 12 & 63) +
+            b64.charAt(bitmap >> 6 & 63) + b64.charAt(bitmap & 63);
+    }
+    return rest ? result.slice(0, rest - 3) + "===".substring(rest) : result;
+};
+exports.weAtob = function (string) {
+    string = String(string).replace(/[\t\n\f\r ]+/g, "");
+    if (!b64re.test(string))
+        throw new TypeError("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");
+    string += "==".slice(2 - (string.length & 3));
+    var bitmap, result = "", r1, r2, i = 0;
+    for (; i < string.length;) {
+        bitmap = b64.indexOf(string.charAt(i++)) << 18 | b64.indexOf(string.charAt(i++)) << 12 |
+            (r1 = b64.indexOf(string.charAt(i++))) << 6 | (r2 = b64.indexOf(string.charAt(i++)));
+        result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255) :
+            r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255) :
+                String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255);
+    }
+    return result;
+};
+function b64DecodeUnicode(str) {
+    return decodeURIComponent(exports.weAtob(str).replace(/(.)/g, function (p) {
+        var code = p.charCodeAt(0).toString(16).toUpperCase();
+        if (code.length < 2) {
+            code = "0" + code;
+        }
+        return "%" + code;
+    }));
+}
+function base64_url_decode(str) {
+    var output = str.replace(/-/g, "+").replace(/_/g, "/");
+    switch (output.length % 4) {
+        case 0:
+            break;
+        case 2:
+            output += "==";
+            break;
+        case 3:
+            output += "=";
+            break;
+        default:
+            throw "Illegal base64url string!";
+    }
+    try {
+        return b64DecodeUnicode(output);
+    }
+    catch (err) {
+        return exports.weAtob(output);
+    }
+}
+function weappJwtDecode(token, options) {
+    if (typeof token !== "string") {
+        throw ("Invalid token specified");
+    }
+    options = options || {};
+    var pos = options.header === true ? 0 : 1;
+    try {
+        return JSON.parse(base64_url_decode(token.split(".")[pos]));
+    }
+    catch (e) {
+        throw ("Invalid token specified: " + e.message);
+    }
+}
+exports.default = weappJwtDecode;

+ 1 - 0
src/views/homePage/index.vue

@@ -30,6 +30,7 @@ export default {
     redictToModules (item) {
       this.$router.push({path:item.apps[0].path})
       sessionStorage.setItem('active_modules',JSON.stringify(item))
+      window.sessionStorage.setItem('currentPath',item.apps[0].path)
     }
   },
   mounted () {