zhangqiOMG 3 years ago
parent
commit
22ce3a5f0b
29 changed files with 713 additions and 177 deletions
  1. 19 2
      src/App.vue
  2. 1 1
      src/Form/salerPrivatecustomer/add.vue
  3. 1 1
      src/Form/salerPrivatecustomer/edit.vue
  4. 2 1
      src/HDrpManagement/projectStage/modules/stageDetail.vue
  5. 4 4
      src/HManagement/EnterpriseArchives/index.vue
  6. 1 1
      src/HManagement/marketing2/agent/index.vue
  7. 1 1
      src/SDrpManagement/salerPrivatecustomer/detail/customerDetail.vue
  8. 18 23
      src/SDrpManagement/salerPrivatecustomer/detail/index.vue
  9. 6 1
      src/SDrpManagement/salerPrivatecustomer/detail/modules/detailedData.vue
  10. 15 5
      src/SDrpManagement/salerPrivatecustomer/index.vue
  11. 0 0
      src/assets/empty.svg
  12. BIN
      src/assets/wallhaven-od2jem.jpeg
  13. 1 1
      src/components/export_excel/index.vue
  14. 53 0
      src/components/newLayout/index.vue
  15. 106 0
      src/components/newLayout/modules/aside.vue
  16. 172 0
      src/components/newLayout/modules/header.vue
  17. 66 0
      src/components/newLayout/modules/menu.vue
  18. 8 10
      src/components/normal-basic-layout/details/index.vue
  19. 1 1
      src/components/normal-basic-layout/details/modules/followUp/followUp.vue
  20. 25 18
      src/components/normal-basic-layout/details/modules/group/group.vue
  21. 1 1
      src/components/normal-basic-layout/details/modules/group/select_account.vue
  22. 54 21
      src/components/normal-basic-layout/details/modules/tags/tag.vue
  23. 2 1
      src/components/normal-basic-layout/drawerDetail/index.vue
  24. 82 61
      src/components/normal-basic-layout/index.vue
  25. 12 4
      src/components/normal-basic-layout/modules/table.vue
  26. 14 11
      src/router/HManagement.js
  27. 2 1
      src/router/index.js
  28. 27 2
      src/store/index.js
  29. 19 5
      src/style/style.css

+ 19 - 2
src/App.vue

@@ -1,8 +1,25 @@
 <template>
-  <div id="app">
-    <router-view/>
+  <div id="app" class="flex-align-center">
+    <div style="width:calc(100vw - 60px)">
+      <router-view/>
+    </div>
+    <div class="rightBar">
+      
+    </div>
   </div>
 </template>
 
 <style>
+#app{
+  font:16px/1.5 Helvetica Neue,Helvetica,Arial,Microsoft Yahei,Hiragino Sans GB,Heiti SC,WenQuanYi Micro Hei,sans-serif;
+  font-family: "阿里巴巴普惠体 2.0 35 Thin";
+}
+.rightBar{
+  width:60px;
+  height:100vh;
+  /* background:#afc7fb; */
+  /* opacity: .9; */
+  border-left:1px solid #f1f2f3;
+  box-shadow: 0 2px 5px rgb(0 0 0 / 10%);
+}
 </style>

+ 1 - 1
src/Form/salerPrivatecustomer/add.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <el-button size="mini" type="primary" @click="show">新 增</el-button>
+    <el-button size="small" type="primary" @click="show">新 增</el-button>
     <el-dialog title="新 增" :visible.sync="dialogFormVisible" width="900px">
       <div slot="title" style="font-size: 15px">
         新增客户

+ 1 - 1
src/Form/salerPrivatecustomer/edit.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <el-button size="mini" :disabled="data.datastatus === 2" :type="btnType?btnType:'text'"   @click="show" >编 辑</el-button>
-    <el-dialog title="编 辑" :visible.sync="dialogFormVisible" width="600px">
+    <el-dialog title="编 辑" append-to-body :visible.sync="dialogFormVisible" width="600px">
       <div slot="title" style="font-size: 15px">
         编辑客户
       </div>

+ 2 - 1
src/HDrpManagement/projectStage/modules/stageDetail.vue

@@ -8,6 +8,7 @@
       :modal="true"
       :show-close="false"
       :withHeader="false"
+      append-to-body
       size="50%">
       <div class="flex-align-center flex-between container" style="border-bottom:1px solid #f1f2f3">
         <div style="font-size:20px">{{data.stagetempname}}</div>
@@ -16,7 +17,7 @@
           <el-button @click="dialogStageVisible = false" size="small">取 消</el-button>
         </div>
       </div>
-      <div class="container">
+      <div class="container" style="font-size:14px">
         <el-row :gutter="20">
           <el-col :span="9">
             <div>

+ 4 - 4
src/HManagement/EnterpriseArchives/index.vue

@@ -7,16 +7,16 @@
       tableName="EnterpriseArchivesTable" 
       idName="sys_enterpriseid" 
       :apiId="{query:20220920083901,del:20220920084201}"
-      :options="options">
+      :options="options"
+      :detailPath="{
+        path:'/EnterpriseArchivesDetail'
+      }">
       <div slot="custom"></div>
       <template v-slot:tbList="scope">
         <div>
           {{scope.data.column.data[[scope.data.column.columnname]]}}
         </div>
       </template>
-      <template v-slot:tbOpreation="scope">
-        <el-button size="mini" type="text" @click="$router.push({path:'/EnterpriseArchivesDetail',query:{id:scope.data.data.sys_enterpriseid,rowindex:scope.data.data.rowindex}})">详 情</el-button>
-      </template>
     </basicLayout>
   </div>
 </template>

+ 1 - 1
src/HManagement/marketing2/agent/index.vue

@@ -28,7 +28,7 @@
         formPath="marketing2/agent"
         tableName="agentTable" 
         idName="sa_agentsid"
-        detailPath="/agent_detail"
+        :detailPath="{path:'/agent_detail'}"
         :apiId="{query:20221011144903,del:20221011145003}"
         :autoQuery="false"
         :options="options">

+ 1 - 1
src/SDrpManagement/salerPrivatecustomer/detail/customerDetail.vue

@@ -145,7 +145,7 @@ export default {
         },
         {
           label:'负责人',
-          value:this.mainData.leader[0].name
+          value:this.mainData.leader[0]?this.mainData.leader[0].name:""
         },
         {
           label:'最近跟近时间',

+ 18 - 23
src/SDrpManagement/salerPrivatecustomer/detail/index.vue

@@ -13,7 +13,6 @@
         @pageChange="pageChange"
         @onEditSuccess="queryMainData($route.query.id)">
       <div slot="tags">
-        <tagPanl slot="tags" :data="tags" :id="mainData.sa_customersid" @onSuccess="queryMainData"></tagPanl>
         <!-- 使用此插槽可不传[tags] -->
         <!-- :tabs="['经销商团队','代理区域','营销类别','账户余额']" -->
 <!--        <tagPanl slot="tags" :data="tags" :id="mainData.sa_customersid" @onSuccess="queryMainData"/>-->
@@ -33,7 +32,7 @@
             <transaction_status v-if="tool.checkAuth($route.name,'transaction')" :id="mainData.sa_customersid" @onshow="onSuccess" @shareSuccess="onSuccess"></transaction_status>
           </div>
           <div class="normal-margin" v-show="mainData.datastatus === 0">
-            <lock v-if="tool.checkAuth($route.name,'lock')"  :id="mainData.sa_customersid" @onshow="onSuccess"></lock>
+            <lock v-if="tool.checkAuth($route.name,'lock')"   :id="mainData.sa_customersid" @onshow="onSuccess"></lock>
           </div>
           <div class="normal-margin" v-show="mainData.datastatus === 2">
             <unlock v-if="tool.checkAuth($route.name,'unlock')" :id="mainData.sa_customersid" @onshow="onSuccess"></unlock>
@@ -41,8 +40,8 @@
           <div class="normal-margin">
             <share v-if="tool.checkAuth($route.name,'share') && mainData.poolname === ''" :id="mainData.sa_customersid" @onshow="onSuccess" @shareSuccess="onSuccess"></share>
           </div>
-          <div class="normal-margin">
-            <send_back v-if="tool.checkAuth($route.name,'back')" :id="mainData.sa_customersid" @onshow="onSuccess" @backSuccess="onSuccess"></send_back>
+          <div class="normal-margin" >
+              <send_back v-if="tool.checkAuth($route.name,'back') "  :data="mainData" @onshow="onSuccess" @backSuccess="onSuccess"></send_back>
           </div>
           <div class="normal-margin" v-show="mainData.datastatus !== 1">
             <to_void v-if="tool.checkAuth($route.name,'toVoid')" :id="mainData.sa_customersid" @onshow="onSuccess" @toVoidSuccess="onSuccess"></to_void>
@@ -51,13 +50,13 @@
         </el-popover>
       </div>
       <div slot="slot0" >
-        <detailed :data="this.$route.query.id"></detailed>
+        <detailed ref="detailed"></detailed>
       </div>
-      <div slot="slot1" class="container normal-panel">
-        <contacts :data="this.$route.query.data"></contacts>
+      <div slot="slot1" class="container normal-panel"  >
+        <contacts :data="mainData"  @onSuccess="onSuccess" v-if="flag"></contacts>
       </div>
       <div slot="slot2" class="container normal-panel">
-        <address_manage :data="this.$route.query.data"></address_manage>
+        <address_manage :data="mainData"  v-if="flag"></address_manage>
       </div>
     </basicDetails>
   </div>
@@ -67,7 +66,7 @@
 import detailed from './modules/detailedData'
 import contacts from './modules/contacts/list'
 import address_manage from './modules/addressManage/list'
-import transactionUser from "./modules/operation/transactionUser";
+import transactionUser from "./modules/operation/transactionUser"
 import lock from './modules/operation/lock'
 import unlock from './modules/operation/unlock'
 import share from './modules/operation/share'
@@ -89,13 +88,14 @@ export default {
         userid:''
       },
       users:[],
+      flag:false
     }
   },
   components:{
     detailed,
     contacts,
-    address_manage
-    ,transactionUser,
+    address_manage,
+    transactionUser,
     lock,
     unlock,
     share,
@@ -114,9 +114,9 @@ export default {
       this.mainData = res.data
       this.$refs['details'].param.content.type = this.$route.query.tabIndex
       this.$refs['details'].param.content.isExport = false
-      this.$refs['details'].param.content.sa_customersid = [this.mainData.sa_customersid]
       this.changeDataStructure()
-      this.queryTags(this.mainData.sa_customersid)
+      this.$refs.detailed.detailedList(this.mainData)
+      this.flag = true
     },
     show(){
       this.visible = false
@@ -145,7 +145,7 @@ export default {
         },
         {
           label:'负责人',
-          value:this.mainData.leadername
+          value:this.mainData.leader[0]?this.mainData.leader[0].name:""
         },
         {
           label:'最近跟近时间',
@@ -158,8 +158,10 @@ export default {
       ]
     },
     // 监听切换数据,上一页,下一页
-    pageChange (id,rowindex) {
-      this.$router.replace({path:'/customerDetail',query:{id:id,rowindex:rowindex}})
+    pageChange (id,rowindex,tabIndex) {
+      this.flag = false
+      tabIndex = this.$route.query.tabIndex
+      this.$router.replace({path:'/customerDetail',query:{id:id,rowindex:rowindex,tabIndex:tabIndex}})
       this.queryMainData(id)
     },
     async queryTags(id){
@@ -183,13 +185,6 @@ export default {
   },
   created() {
     this.tool.checkAuth(this.$route.name,'update')?'':this.$router.go(-1)
-    /*this.tool.checkAuth(this.$route.name,'toVoid')?'':this.$router.go(-1)*/
-    // this.tool.checkAuth(this.$route.name,'responsible')?'':this.$router.go(-1)
-    // this.tool.checkAuth(this.$route.name,'transaction')?'':this.$router.go(-1)
-    // this.tool.checkAuth(this.$route.name,'lock')?'':this.$router.go(-1)
-    // this.tool.checkAuth(this.$route.name,'unlock')?'':this.$router.go(-1)
-    // this.tool.checkAuth(this.$route.name,'share')?'':this.$router.go(-1)
-    // this.tool.checkAuth(this.$route.name,'back')?'':this.$router.go(-1)
   }
 }
 </script>

+ 6 - 1
src/SDrpManagement/salerPrivatecustomer/detail/modules/detailedData.vue

@@ -2,7 +2,7 @@
   <div class="container normal-panel">
     <div class="container normal-panel">
       <el-descriptions title="基本信息">
-        <el-descriptions-item label="客户名称">{{ basic.enterprisename?basic.enterprisename:"--" }}</el-descriptions-item>
+        <el-descriptions-item label-class-name="my-label" label="客户名称">{{ basic.enterprisename?basic.enterprisename:"--" }}</el-descriptions-item>
         <el-descriptions-item label="客户编号">{{ basic.sa_customersid?basic.sa_customersid:"--" }}</el-descriptions-item>
         <el-descriptions-item label="企业简称">{{ basic.abbreviation?basic.abbreviation:"--"}}</el-descriptions-item>
         <el-descriptions-item label="客户类型">{{ basic.type?basic.type:"--" }}</el-descriptions-item>
@@ -84,6 +84,11 @@ export default {
 }
 </script>
 
+<style>
+
+</style>
 <style scoped>
 
+.my-label {
+  }
 </style>

+ 15 - 5
src/SDrpManagement/salerPrivatecustomer/index.vue

@@ -9,8 +9,8 @@
       :options="options"
       :autoQuery="false"
       :detailPath="{path:'/customerDetail',param:{tabIndex:tabIndex}}">
-        <template v-slot:titleRight="scope">
-          <el-divider direction="vertical"></el-divider>
+        <template #custom>
+          <!-- <el-divider direction="vertical"></el-divider>
           <el-dropdown size="medium" @command="handleCommand">
           <span class="el-dropdown-link">
             {{editableTabsValue}}<i class="el-icon-arrow-down el-icon--right"></i>
@@ -18,7 +18,16 @@
             <el-dropdown-menu slot="dropdown">
               <el-dropdown-item v-for="(item,index) in editableTabs" :key="index" :command="item">{{item.title}}</el-dropdown-item>
             </el-dropdown-menu>
-          </el-dropdown>
+          </el-dropdown> -->
+          <el-select v-model="value" size="small" placeholder="请选择">
+            <el-option
+              @click.native="handleCommand(item)"
+              v-for="item in editableTabs"
+              :key="item.index"
+              :label="item.title"
+              :value="item.name">
+            </el-option>
+          </el-select>
         </template>
         <template v-slot:tbList="scope">
           <div v-if="scope.data.column.columnname === 'isleader'">
@@ -37,9 +46,9 @@
             {{scope.data.column.data[[scope.data.column.columnname]]}}
           </div>
         </template>
-        <template v-slot:tbOpreation="scope">
+        <!-- <template v-slot:tbOpreation="scope">
           <el-button size="mini" type="text" @click="$router.push({path:'/customerDetail',query:{id:scope.data.data.sa_customersid,rowindex:scope.data.data.rowindex,tabIndex:tabIndex}})">详 情</el-button>
-        </template>
+        </template> -->
       </basicLayout>
   </div>
 </template>
@@ -49,6 +58,7 @@ export default {
   name: "index",
   data() {
     return {
+      value:'0',
       editableTabsValue: "全部",
       editableTabs: [{
         title: '全部',

File diff suppressed because it is too large
+ 0 - 0
src/assets/empty.svg


BIN
src/assets/wallhaven-od2jem.jpeg


+ 1 - 1
src/components/export_excel/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <el-button type="success" size="small" icon="el-icon-download" @click="submit()">导 出</el-button>
+    <el-button type="primary" size="small" @click="submit()" plain>导 出</el-button>
   </div>
 </template>
 

+ 53 - 0
src/components/newLayout/index.vue

@@ -0,0 +1,53 @@
+<template>
+  <div>
+    <div class="flex-align-stretch">
+      <asideTemp style="width:200px;height:100vh;" @getModules="getModules"></asideTemp>
+      <div style="flex:1;" class="body__panel">
+        <headeTemp></headeTemp>
+        <div>
+          <menuTemp class="sticky" ref="menu"></menuTemp>
+          <router-view></router-view>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import headeTemp from './modules/header.vue'
+import asideTemp from './modules/aside.vue'
+import menuTemp from './modules/menu.vue'
+
+export default {
+  components:{
+    headeTemp,
+    asideTemp,
+    menuTemp
+  },
+  data () {
+    return {
+
+    }
+  },
+  methods:{
+    getModules (mod,type) {
+      this.$refs['menu'].setModules(mod,type)
+    }
+  }
+}
+
+</script>
+<style>
+.el-menu{
+  border-right:0
+}
+</style>
+<style scoped>
+.body__panel{
+  height: 100vh;
+  overflow-y: scroll;
+}
+.sticky {
+  position: sticky;
+}
+</style>

+ 106 - 0
src/components/newLayout/modules/aside.vue

@@ -0,0 +1,106 @@
+<template>
+  <div class="aside__panel">
+    <div class="logo">管理平台</div>
+    <el-menu
+      style="background:none"
+      text-color="#fff"
+      active-text-color="#fff"
+      class="el-menu-vertical-demo">
+      <el-menu-item :index="String(item.systemid)" v-for="item in systemList" :key="item.index" @click="handelMenuClick(item,'system')">
+        <span slot="title">{{item.systemname}}</span>
+      </el-menu-item>
+    </el-menu>
+    <div style="padding:0 16px">
+      <el-divider></el-divider>
+    </div>
+    <el-menu
+      style="background:none"
+      text-color="#fff"
+      active-text-color="#fff"
+      class="el-menu-vertical-demo">
+      <el-menu-item :index="String(index)" v-for="(item,index) in menuApp" :key="index" @click="handelMenuAppClick(item,'app')">
+        <div class="flex-align-center flex-between menuItem">
+          <span slot="title">{{item.systemappname}}</span>
+          <i class="el-icon-error menuIconClose" @click.stop="deleteMenuApp(item)"></i>
+        </div>
+      </el-menu-item>
+    </el-menu>
+  </div>
+</template>
+
+<script>
+import {mapGetters} from 'vuex'
+
+export default {
+  data () {
+    return {
+      systemList:[],
+      active:"0"
+    }
+  },
+  computed:{
+    ...mapGetters({
+      menuApp:'menuApp'
+    })
+  },
+  methods:{
+    handelMenuClick (item,type) {
+      this.active = String(item.systemid)
+      this.$emit('getModules',item.modules,type)
+    },
+    handelMenuAppClick (app,type) {
+      let system = JSON.parse(sessionStorage.getItem('module_info'))
+      let mod = system.filter(e=>{return e.systemid === app.systemid})[0].modules.filter(e=>{return e.systemmoduleid === app.systemmoduleid})[0]
+      let clickApp = mod.apps.filter(e=>{return e.systemappid === app.systemappid})
+      sessionStorage.setItem('active_modules',JSON.stringify(mod))
+
+      this.$emit('getModules',system.filter(e=>{return e.systemid === app.systemid})[0].modules,type)
+
+      this.$store.dispatch('setActiveApp',clickApp[0])
+      
+      this.$router.push({path:clickApp[0].path})
+    },
+    async deleteMenuApp (item) {
+      const res = await this.$api.requested({
+        "classname": "sysmanage.develop.userauthforweb.userauth",
+        "method": "delete_usershortcuts",
+        "content": {
+          "systemappid":item.systemappid
+        }
+      })
+      this.$store.dispatch('setAppMenu')
+    }
+  },
+  mounted () {
+    this.systemList = JSON.parse(sessionStorage.getItem('module_info'))
+    this.$store.dispatch('setAppMenu')
+  }
+}
+
+</script>
+<style>
+.aside__panel .el-menu-item{
+  height: 40px;
+  line-height: 40px;
+}
+.el-menu-item:focus, .el-menu-item:hover{
+  background: none;
+}
+</style>
+<style scoped>
+.logo{
+  width: calc(200px);
+  height: 50px;
+  line-height: 50px;
+  color:#fff;
+  padding-left: 20px;
+  /* border-right: 1px solid #f1f2f3; */
+}
+.menuIconClose{
+  display: none;
+  color:#fff
+}
+.menuItem:hover .menuIconClose{
+  display: block;
+}
+</style>

+ 172 - 0
src/components/newLayout/modules/header.vue

@@ -0,0 +1,172 @@
+<template>
+<div class="flex">
+  <div class="flex-align-center">
+    <el-popover
+        placement="top"
+        width="400">
+        <div class="app-flex flex-between">
+          <p class="appLink" v-for="app in menuApp" :key="app.index">{{app.systemappname}}</p>
+        </div>
+        <div slot="reference" class="search_panel">
+          <input placeholder="输入搜索内容"/>
+          <i class="el-icon-search"></i>
+        </div>
+      </el-popover>
+    
+    <div class="weather">
+      <p>今日天气:{{weather.daily?weather.daily[0].dayText:""}}</p>
+      <p>{{weather.daily?weather.daily[0].low:""}}℃~{{weather.daily?weather.daily[0].high:""}}℃</p>
+    </div>
+  </div>
+  <div class="right-operation">
+    <el-dropdown>
+      <span class="el-dropdown-link">
+        <div class="flex">
+          {{siteinfo.enterprisename}}<i class="el-icon-arrow-down el-icon--right"></i>
+        </div>
+      </span>
+      <el-dropdown-menu slot="dropdown">
+        <el-dropdown-item @click.native="$router.replace({path:'/user_center'})">个人中心</el-dropdown-item>
+        <el-dropdown-item v-if="canChangeSite" @click.native="$router.replace({path:'/accounts'})">切换账号</el-dropdown-item>
+        <el-dropdown-item divided @click.native="loginOut()">退出登录</el-dropdown-item>
+      </el-dropdown-menu>
+    </el-dropdown>
+  </div>
+</div>
+</template>
+
+<script>
+import {mapGetters} from 'vuex'
+import axios from 'axios'
+export default {
+  data () {
+    return {
+      accountInfo:{},
+      url:"http://weather.cma.cn/api/weather/view?stationid=",
+      weather:{}
+    }
+  },
+  computed:{
+    ...mapGetters({
+      siteinfo:'siteinfo',
+      menuApp:'menuApp'
+    }),
+    canChangeSite () {
+      let accounts = JSON.parse(sessionStorage.getItem('account_list'))
+      if (accounts.length > 1) return true
+    }
+  },
+  methods:{
+    async getWeather () {
+      const res = await axios.get(this.url)
+      console.log(res)
+      this.weather = res.data.data
+    },
+    siteInfos () {
+      this.$store.dispatch('querySiteInfo',{
+        "classname": "webmanage.site.site",
+        "method": "querySite",
+        "content": {}
+      })
+    },
+    loginOut () {
+      this.$confirm('是否要退出当前账号?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        this.$router.push('/')
+        sessionStorage.clear()
+        // location.reload(true);
+      }).catch((err) => {
+        console.log(err)
+        this.$message({
+          type: 'info',
+          message: '已取消'
+        });          
+      });
+      
+    },
+    changeAccount () {
+      this.$router.push('/accounts')
+    }
+  },
+  mounted () {
+    this.siteInfos()
+    this.getWeather()
+    this.accountInfo = JSON.parse(sessionStorage.getItem('active_account'))
+  },
+}
+
+</script>
+<style>
+.el-header{
+  height: 50px !important;
+}
+.search_panel{
+  position: relative;
+}
+.search_panel i{
+  position: absolute;
+  right:0px;
+  height: 30px;
+  width: 30px;
+  text-align: center;
+  line-height: 30px;
+  color:#333
+}
+.search_panel input{
+  background: none;
+  height: 30px;
+  line-height: 30px;
+  width: 400px;
+  padding: 0 30px 0 10px;
+  border: 1px solid #f1f2f3;
+  border-radius: 5px;
+  outline: none;
+}
+.search_panel input::placeholder{
+  color:#fff;
+} 
+.search_panel input:focus{
+  background: #fff;
+}
+.search_panel input:focus::placeholder{
+  color:#333;
+} 
+</style>
+<style scoped>
+.flex{
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  background: none;
+  color:#fff
+}
+.logo{
+}
+.right-operation{
+  padding: 0 20px;
+}
+.search_panel{
+  margin: 16px 0;
+}
+.weather{
+  font-size: 14px;
+  margin-left:16px;
+  color:#f1f2f3
+}
+.appLink{
+  padding:2px 5px;
+  border:1px solid #f1f2f3;
+  border-radius: 5px;
+  margin-bottom: 10px;
+  cursor: pointer;
+}
+.app-flex{
+  display: flex;
+  align-items: center;
+  flex-wrap: wrap;
+  font-size: 12px;
+}
+</style>

+ 66 - 0
src/components/newLayout/modules/menu.vue

@@ -0,0 +1,66 @@
+<template>
+  <div class="menu_panel">
+    <el-menu router :default-active="activeIndex" text-color="#333" class="el-menu-demo shadow" mode="horizontal">
+      <el-submenu v-show="hasMoreApp(mod)" v-for="(mod,index) in modules" :key="mod.index" :index="String(index)">
+        <template slot="title"><b>{{mod.systemmodulename}}</b></template>
+        <el-menu-item :index="app.path" v-for="(app) in mod.apps" :key="app.index" @click="setActiveModules(mod,app)">{{app.meta.title}}</el-menu-item>
+      </el-submenu>
+      <el-menu-item v-show="!hasMoreApp(mod)" :index="mod.path" v-for="mod in modules" :key="mod.index" @click="setActiveModules(mod,mod.apps[0])"><b>{{mod.systemmodulename}}</b></el-menu-item>
+    </el-menu>
+  </div>
+</template>
+
+<script>
+export default {
+  data () {
+    return {
+      activeIndex:'0',
+      modules:[]
+    }
+  },
+  methods:{
+    setModules (mod,type) {
+      this.modules = mod
+      if (type === 'system') {
+        this.setActiveModules(mod[0],mod[0].apps[0])
+        let inactivePath = mod[0].apps[0].path
+        this.$router.replace({path:inactivePath})
+      }
+    },
+    hasMoreApp (mod) {
+      if (mod.apps.length > 1) {
+        return true
+      } else {
+        mod.path = mod.apps[0].path
+        return false
+      }
+    },
+    setActiveModules (mod,app) {
+      this.$store.dispatch('setActiveApp',app)
+      sessionStorage.setItem('active_modules',JSON.stringify(mod))
+    },
+    setDefaultData (mod) {
+      let system = JSON.parse(sessionStorage.getItem('module_info'))
+      this.setModules(system[0].modules)
+    }
+  },
+  mounted () {
+    this.setDefaultData()
+  }
+}
+
+</script>
+<style>
+</style>
+<style scoped>
+.shadow{
+   box-shadow: 0 2px 5px rgb(0 0 0 / 10%);
+   transform: translate3d(0,-2px,0);
+   border-radius: 10px;
+   border:none;
+   overflow: hidden;
+}
+.menu_panel{
+  padding: 0px 16px 0 0px;
+}
+</style>

+ 8 - 10
src/components/normal-basic-layout/details/index.vue

@@ -2,9 +2,9 @@
   <div>
     <div class="container normal-panel sticky">
       <div class="flex-align-center flex-between normal-margin">
-        <div>
-          <p class="appname inline-16">{{routerName}}</p>
-          <p class="normal-title inline-16">{{titleText}}</p>
+        <div class="flex-align-center" style="flex:1 0 auto">
+          <p style="font-size:30px;font-weight:300">{{titleText?titleText:'##'}}</p>
+          &nbsp;<tagTemp style="flex:1" ref="tag" :onwertable="idname.slice(0, this.idname.length - 2)" @onSuccess="onSuccess"></tagTemp>
         </div>
         <div class="flex-align-center">
           <cpEdit v-if="tool.checkAuth($route.name,'update')" :formPath="formPath" :data="editData" btnType="default" @onAddSuccess="onSuccess"></cpEdit>
@@ -17,15 +17,13 @@
           </div>
         </div>
       </div>
-      <tagTemp ref="tag" :onwertable="idname.slice(0, this.idname.length - 2)" @onSuccess="onSuccess"></tagTemp>
-      <!-- <group :ownertable="idname"></group> -->
     </div>
     <div style="box-sizing: border-box;padding:20px">
       <el-row :gutter="20">
-        <el-col :span="18">
+        <el-col :span="19">
           <div class="container normal-panel normal-margin">
-            <el-descriptions title="基本信息" :column="4">
-              <el-descriptions-item v-for="item in mainAreaData" :key="item.index" :label="item.label">{{item.value?item.value:'--'}}</el-descriptions-item>
+            <el-descriptions title="基本信息" :column="4" size="mini">
+              <el-descriptions-item label-class-name="my-label" content-class-name="my-content" v-for="item in mainAreaData" :key="item.index" :label="item.label">{{item.value?item.value:'--'}}</el-descriptions-item>
             </el-descriptions>
           </div>
           <tabTemp :tabs="tabs" :editData="editData" :idname="idname">
@@ -35,9 +33,9 @@
           </tabTemp>
           <slot name="custom"></slot>
         </el-col>
-        <el-col :span="6">
-          <!-- <group :ownertable="idname"></group> -->
+        <el-col :span="5">
           <follow-up :ownertable="idname"></follow-up>
+          <group :ownertable="idname"></group>
         </el-col>
         
       </el-row>

+ 1 - 1
src/components/normal-basic-layout/details/modules/followUp/followUp.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="normal-panel follow__panel">
+  <div class="normal-panel follow__panel normal-margin">
     <div class="container flex-align-center flex-between">
       <p>跟进动态</p>
       <addLog :ownertable="ownertable" @onSuccess="queryLogs"></addLog>

+ 25 - 18
src/components/normal-basic-layout/details/modules/group/group.vue

@@ -1,25 +1,32 @@
 <template>
-<div class="flex-align-center">
-  <p class="detail__head__label">团队:</p>
+<div class="container normal-panel">
   <div  v-for="item in list" :key="item.index" class="normal-panel">
-    <div class="flex-align-center flex-between">
-      <p>{{item.teamname}}</p>
+    <el-divider content-position="left">负责人</el-divider>
+    <div>
+      <div class="flex-align-center" v-if="men.isleader === 1" v-for="men in item.team" :key="men.index">
+        <div class="avatar inline-16" :class="men.isleader === 1?'leader':''" >{{men.name.substr(0, 1)}}
+          <span class="avatar__model">
+            <i style="margin-right:5px" class="el-icon-user" @click="setLeader(men)"></i>
+            <i class="el-icon-delete" @click="deleteGroupAccount(men)"></i>
+          </span>
+        </div>
+        <p>{{men.name}}</p>
+      </div>
     </div>
+    <accountDialog style="text-align:right" :ownertable="ownertable" @onSuccess="queryGroup"></accountDialog>
+    <el-divider content-position="left">团队</el-divider>
     <div>
-      <el-tag style="margin-right:10px" size="mini" :type="men.isleader === 1?'warning':'primary'" effect="dark" v-for="men in item.team" :key="men.index" >
-        {{men.name}}
-      </el-tag>
-      <!-- <el-tooltip v-for="men in item.team" :key="men.index" effect="dark" :content="men.name" placement="top-start">
-        <p class="avatar inline-16" :class="men.isleader === 1?'leader':''" >{{men.name.substr(0, 1)}}
+      <div v-if="men.isleader === 0" v-for="men in item.team" :key="men.index">
+        <div class="avatar inline-16"  :class="men.isleader === 1?'leader':''" >{{men.name.substr(0, 1)}}
           <span class="avatar__model">
             <i style="margin-right:5px" class="el-icon-user" @click="setLeader(men)"></i>
             <i class="el-icon-delete" @click="deleteGroupAccount(men)"></i>
           </span>
-        </p>
-      </el-tooltip> -->
+        </div>
+      </div>
     </div>
+    <accountDialog style="text-align:right" :ownertable="ownertable" @onSuccess="queryGroup"></accountDialog>
   </div>
-  <accountDialog :ownertable="ownertable" @onSuccess="queryGroup"></accountDialog>
 </div>
 </template>
 
@@ -91,12 +98,12 @@ export default {
 <style scoped>
 .avatar{
   position: relative;
-  height:50px;
-  width: 50px;
-  margin-bottom: 10px;
+  height:40px;
+  width: 40px;
+  margin-bottom: 5px;
   border-radius: 100%;
   text-align: center;
-  line-height: 50px;
+  line-height: 40px;
   color:#fff;
   font-weight: 500;
   background: #3874F6;
@@ -107,8 +114,8 @@ export default {
   position: absolute;
   left:0;
   top:0;
-  height:50px;
-  width: 50px;
+  height:40px;
+  width: 40px;
   border-radius: 100%;
   background: rgba(0,0,0,0.5);
   z-index: 999;

+ 1 - 1
src/components/normal-basic-layout/details/modules/group/select_account.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <el-button type="text" size="mini" icon="el-icon-edit" @click="onShow(dialogTableVisible = true)">添 加</el-button>
+    <el-button style="color:#999" type="text" size="mini" @click="onShow(dialogTableVisible = true)">变 更</el-button>
     <el-dialog title="选择团队人员" append-to-body :visible.sync="dialogTableVisible" width="600px">
       <el-form size="small" inline label-position="left" label-width="50px" :model="search">
         <el-form-item label="搜索">

+ 54 - 21
src/components/normal-basic-layout/details/modules/tags/tag.vue

@@ -1,7 +1,27 @@
 <template>
   <div>
-    <p class="detail__head__label">标签展示:</p>
-    <el-tag style="margin-right:10px" v-for="item in option" :key="item.rowindex" size="mini" :type="hasTas(item)?'primary':'info'" :effect="hasTas(item)?'dark':'plain'" @click.native="addTag(item)">{{item.tag}}</el-tag>
+    <!-- <p class="detail__head__label">标签展示:</p> -->
+    <div v-if="showTag">
+      <el-tag style="margin-right:10px" v-for="item in datatag" :key="item.rowindex" size="small" type="primary" effect="dark">{{item}}</el-tag>
+      <el-button type="text" size="mini" @click="showTag = false">+新标签</el-button>
+    </div>
+    <el-select
+      v-else
+      style="width:50%;"
+      v-model="datatag"
+      multiple
+      placeholder="请选择文章标签"
+      size="mini"
+      @visible-change="addTag">
+      <el-option
+        v-for="item in option"
+        :key="item.index"
+        :label="item.tag"
+        :value="item.tag"
+        @click.native="setMutextag(item)"
+        :disabled="hasDisabledTag(item)">
+      </el-option>
+    </el-select>
   </div>
 </template>
 
@@ -11,7 +31,9 @@ export default {
   data () {
     return {
       datatag:[],
-      option:[]
+      option:[],
+      mutextag:[],
+      showTag:true
     }
   },
   methods:{
@@ -23,30 +45,41 @@ export default {
           "ownerid":this.$route.query.id
         }
       })
+
       this.option = res.data.option
       this.datatag = res.data.datatag
+
+      this.datatag.length > 0?this.option.forEach(e=>{
+        this.setMutextag(e)
+      }):''
     },
-    async addTag (item) {
-      console.log(item.tag,this.datatag)
-      if (this.hasTas(item)) {
-        this.datatag = this.datatag.filter(e=>{
-          return e !== item.tag
+    async addTag (val) {
+      if (val === false) {
+        this.showTag = true
+        const res  = await this.$api.requested({
+          "id": 20220929090901,
+          "content": {
+            "ownertable":this.onwertable,
+            "ownerid":this.$route.query.id,
+            "datatag":this.datatag
+          }
         })
-      } else {
-        this.datatag.push(item.tag)
+        res.code === 1?this.queryTag():''
       }
-      const res  = await this.$api.requested({
-        "id": 20220929090901,
-        "content": {
-          "ownertable":this.onwertable,
-          "ownerid":this.$route.query.id,
-          "datatag":this.datatag
-        }
-      })
-      res.code === 1?this.queryTag():''
     },
-    hasTas (item) {
-      let _isSame =  this.datatag.some(tag=>tag === item.tag)
+    setMutextag (item) {
+       let _isSame = this.datatag.some(tag=>item.tag === tag)
+       if (_isSame) {
+          this.mutextag = this.mutextag.concat(item.mutextag)
+       } else {
+        let a = new Set(this.mutextag);
+        let b = new Set(item.mutextag); 
+        this.mutextag = Array.from(new Set([...a].filter(x => !b.has(x))))
+       }
+    },
+    hasDisabledTag (item) {
+      let arr = this.datatag.length === 0?[]:this.mutextag
+      let _isSame = arr.some(tag=>item.tag === tag)
       return _isSame
     }
   },

+ 2 - 1
src/components/normal-basic-layout/drawerDetail/index.vue

@@ -6,7 +6,8 @@
       :visible.sync="drawer"
       :with-header="false"
       direction="rtl"
-      size="90%">
+      size="90%"
+      append-to-body>
       <div class="detail__panel">
         <router-view v-if = "drawer"/>
       </div>

+ 82 - 61
src/components/normal-basic-layout/index.vue

@@ -1,70 +1,67 @@
 <template>
-  <div class="container">
-    <div class="layout-header-panel container normal-panel">
-      <div class="flex-align-center flex-between">
-        <div class="normal-margin flex-align-center">
-          <p>{{routerName}}</p>
-          <slot name="titleRight"></slot>
-        </div>
-        <div class="normal-margin">
-          <cpAdd v-if="tool.checkAuth($route.name,'insert')" :formPath="formPath" @onAddSuccess="listData(param.content.pageNumber = 1)"></cpAdd>
-          <el-button-group class="inline-16">
-            <el-button v-if="tool.checkAuth($route.name,'delete')" type="default" :disabled="selection.length === 0" size="mini" icon="el-icon-delete" @click="deleteData">删 除</el-button>
-          </el-button-group>
-          <el-popover
-            placement="bottom"
-            width="160">
-            <div class="flex-align-center flex-between">
-              <el-button size="small" type="info" icon="el-icon-upload" block>导 入</el-button>
+  <div class="basic__layout__panel">
+    <div class="radius">
+      <div class="layout-header-panel container normal-panel">
+        <div class="flex-align-center flex-between">
+          <div class="normal-margin flex-align-center">
+            <p style="font-size:30px;font-weight:300">{{routerName}}&nbsp;<i @click="addToAsideBar" style="color:#999" class="el-icon-star-off"></i></p>
+            <el-divider direction="vertical"></el-divider>
+            <div class="flex-align-center">
+              <cpAdd v-if="tool.checkAuth($route.name,'insert')" :formPath="formPath" @onAddSuccess="listData(param.content.pageNumber = 1)"></cpAdd>
+              <el-button-group v-if="tool.checkAuth($route.name,'delete')" class="inline-16">
+                <el-button type="default" :disabled="selection.length === 0" size="small" @click="deleteData">删 除</el-button>
+              </el-button-group>
+              <el-button class="inline-16" size="small" type="primary" plain>导 入</el-button>
               <excel :tablecols="layout" :param="param" :total="total" :excelTitle="routerName"></excel>
             </div>
-            <el-button size="mini" slot="reference" icon="el-icon-more"></el-button>
-          </el-popover>
-        </div>
-      </div>
-      <div class="flex-align-center flex-between">
-        <div class="flex-align-center">
-          <el-input placeholder="请输入内容" v-model="param.content.where.condition" @keyup.native.enter="listData(param.content.pageNumber = 1)" @clear="listData(param.content.pageNumber = 1)" style="width:300px" size="mini" class="input-with-select" clearable>
-            <el-button slot="append" icon="el-icon-search" @click="listData(param.content.pageNumber = 1)">查 询</el-button>
-          </el-input>&nbsp;
-          <slot name="custom"></slot>
+            <slot name="titleRight"></slot>
+          </div>
+          <div class="normal-margin">
+            <setColumn :layout="layout" @changeColumn="changeColumn"></setColumn>
+            <setFixed :data="tableLayout" @onFixedClick="onFixedClick"></setFixed>
+            <i class="el-icon-refresh" @click="listData(param.content.pageNumber = 1,param.content.where.condition = '')"></i>
+          </div>
         </div>
-        <div>
-          <setColumn :layout="layout" @changeColumn="changeColumn"></setColumn>
-          <setFixed :data="tableLayout" @onFixedClick="onFixedClick"></setFixed>
-          <i class="el-icon-refresh" @click="listData(param.content.pageNumber = 1,param.content.where.condition = '')"></i>
+        <div class="flex-align-center flex-between">
+          <div class="flex-align-center">
+            <el-input placeholder="请输入内容" suffix-icon="el-icon-search" v-model="param.content.where.condition" @keyup.native.enter="listData(param.content.pageNumber = 1)" @clear="listData(param.content.pageNumber = 1)" style="width:200px" size="small" class="input-with-select inline-16" clearable>
+              <!-- <el-button slot="append" icon="el-icon-search" @click="listData(param.content.pageNumber = 1)">查 询</el-button> -->
+            </el-input>
+            <slot name="custom"></slot>
+          </div>
         </div>
       </div>
-    </div>
-    <tableComponent ref="table" v-if="refreshTable" :layout="tableLayout" :tableName="tableName" :custom="true" :data="list" :fixRightData="fixRightData" :fixLeftData="fixLeftData" @checkboxCallBack="checkboxCallBack">
-      <template v-slot:customcol="scope">
-        <slot :data="scope" name="tbList"></slot>
-      </template>
-      <template v-slot:opreation="scope">
-        <cpEdit v-if="tool.checkAuth($route.name,'update')" :data="scope.data" btnType="text" :formPath="formPath" @onAddSuccess="listData(param.content.pageNumber = 1)"></cpEdit>
-        <drawerTemp v-if="detailPath" :data="scope.data" :detailPath="detailPath" :idName="idName"></drawerTemp>
-        <slot :data="scope" name="tbOpreation"></slot>
-      </template>
-    </tableComponent>
-    <div class="container normal-panel" style="text-align:right">
-      <el-pagination
-        background
-        small
-        @size-change="handleSizeChange"
-        @current-change="handleCurrentChange"
-        :current-page="currentPage"
-        :page-size="param.content.pageSize"
-        :page-sizes="[20, 50, 100, 200]"
-        layout="total,sizes, prev, pager, next, jumper"
-        :total="total">
-      </el-pagination>
+      <div class="normal-panel" style="padding:0 16px">
+        <tableComponent ref="table" v-if="refreshTable" :layout="tableLayout" :tableName="tableName" :custom="true" :data="list" :fixRightData="fixRightData" :fixLeftData="fixLeftData" @checkboxCallBack="checkboxCallBack">
+          <template v-slot:customcol="scope">
+            <slot :data="scope" name="tbList"></slot>
+          </template>
+          <template v-slot:opreation="scope">
+            <!-- <cpEdit v-if="tool.checkAuth($route.name,'update')" :data="scope.data" btnType="text" :formPath="formPath" @onAddSuccess="listData(param.content.pageNumber = 1)"></cpEdit> -->
+            <drawerTemp v-if="detailPath" :data="scope.data" :detailPath="detailPath" :idName="idName"></drawerTemp>
+            <slot :data="scope" name="tbOpreation"></slot>
+          </template>
+        </tableComponent>
+      </div>
+      <div class="container normal-panel" style="text-align:right">
+        <el-pagination
+          background
+          small
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page="currentPage"
+          :page-size="param.content.pageSize"
+          :page-sizes="[20, 50, 100, 200]"
+          layout="total,sizes, prev, pager, next, jumper"
+          :total="total">
+        </el-pagination>
+      </div>
     </div>
   </div>
 </template>
 
 <script>
-import excel from '@/components/export_excel/index.vue'
-
+import {mapGetters} from 'vuex'
 export default {
   props:['tableName','idName','tableData','apiId','formPath','options','autoQuery','detailPath'],
   components:{
@@ -74,8 +71,12 @@ export default {
     cpEdit: () => import('./modules/cpEdit'),
     setFixed: () => import('./modules/setFixed'),
     drawerTemp:() =>  import('./drawerDetail/index'),
-
-    excel
+    excel:() =>  import('@/components/export_excel/index.vue'),
+  },
+  computed:{
+    ...mapGetters({
+      acitveApp:'acitveApp'
+    })
   },
   data () {
     return {
@@ -92,7 +93,7 @@ export default {
         }
       },
       layout:[],
-      fixRightData:[],
+      fixRightData:['operation'],
       fixLeftData:[],
       tableLayout:[],
       selection:[],
@@ -175,13 +176,25 @@ export default {
       this.fixLeftData = left
       this.$refs['table'].checkFixed()
     },
+    // 筛选列
     changeColumn (arr) {
       this.tableLayout = arr
       this.refreshTable= false
       setTimeout(() => {
         this.refreshTable= true
       }, 0);
-    }
+    },
+    // 创建快捷应用
+    async addToAsideBar () {
+      const res = await this.$api.requested({
+        "classname": "sysmanage.develop.userauthforweb.userauth",
+        "method": "create_usershortcuts",
+        "content": {
+          "systemappid":this.acitveApp.systemappid
+        }
+      })
+      this.$store.dispatch('setAppMenu')
+    },
   },
   mounted () {
     this.autoQuery === false?'':this.listData()
@@ -204,5 +217,13 @@ export default {
 }
 </style>
 <style scoped>
-
+.radius{
+  border-radius:10px;
+  overflow: hidden;
+  box-shadow: 0 2px 5px rgb(0 0 0 / 10%);
+  transform: translate3d(0,-2px,0);
+}
+.basic__layout__panel{
+  padding: 16px 16px 16px 0;
+}
 </style>

+ 12 - 4
src/components/normal-basic-layout/modules/table.vue

@@ -1,12 +1,16 @@
 <template>
   <div>
-    <el-table stripe ref="tables" :row-class-name="tableClassName" v-loading="loading" highlight-current-row :data="data" :header-cell-style="{background:'#EEEEEE',color:'#333'}" size="mini" @row-click="rowClick" height="calc(100vh - 297px)" style="width:100%;" @selection-change="handleSelectionChange"  border>
+    <el-table stripe ref="tables" :row-class-name="tableClassName" v-loading="loading" highlight-current-row :data="data" :header-cell-style="{background:'#EEEEEE',color:'#333'}" size="mini" @row-click="rowClick" height="calc(100vh - 327px)" style="width:100%;" @selection-change="handleSelectionChange"  border>
+      <div slot="empty">
+        <el-empty :image="require('../../../assets/empty.svg')" :image-size="250">
+        </el-empty>
+      </div>
       <el-table-column
         type="selection"
         width="45" 
         @handleSelectionChange="handleSelectionChange">
       </el-table-column>
-      <el-table-column v-for="col in layout" :key="col.tablecolid" :prop="col.columnname" :label="col.title" :width="col.width ? col.width : 0" :min-width="col.width ? col.width : 0" :fixed="checkFixed(col.columnname)">
+      <el-table-column  v-for="col in layout" :key="col.tablecolid" :prop="col.columnname" :label="col.title" :width="col.width ? col.width : 0" :min-width="col.width ? col.width : 0" :fixed="checkFixed(col.columnname)">
         <template slot-scope="scope">
           <slot v-if="col.columnname !== 'operation'" name="customcol" :column="{data:scope.row,columnname:col.columnname}"></slot>
           <slot v-if="col.columnname === 'operation'" name="opreation" :data="scope.row"></slot>
@@ -47,8 +51,12 @@ export default {
       this.$emit('checkboxCallBack',val)      
     },
     checkFixed (columnname) {
-      let isRight = this.fixRightData.some(item=>item.columnname === columnname)
-      let isLeft = this.fixLeftData.some(item=>item.columnname === columnname)
+      let isRight = this.fixRightData.some(item=>item === columnname)
+      let isLeft = this.fixLeftData.some(item=>item === columnname)
+      if (columnname === 'operation'){
+        console.log(columnname,this.fixRightData,isRight)
+      }
+      
       if (isRight) return 'right'
       if (isLeft) return 'left'
     }

+ 14 - 11
src/router/HManagement.js

@@ -151,18 +151,21 @@ const HManagement = [
       ast_nav: true,
       keeproute: true
     },
-    component: () => import(/* webpackChunkName: "about" */ '@/HManagement/EnterpriseArchives/index.vue')
-  },
-  {
-    path: '/EnterpriseArchivesDetail',
-    name: 'EnterpriseArchives',
-    meta: {
-      title: '企业档案详情',
-      ast_nav:true,
-      keeproute:true
-    },
-    component: () => import(/* webpackChunkName: "about" */ '@/HManagement/EnterpriseArchives/modules/details.vue')
+    component: () => import(/* webpackChunkName: "about" */ '@/HManagement/EnterpriseArchives/index.vue'),
+    children:[
+      {
+        path: '/EnterpriseArchivesDetail',
+        name: 'EnterpriseArchives',
+        meta: {
+          title: '企业档案详情',
+          ast_nav:true,
+          keeproute:true
+        },
+        component: () => import(/* webpackChunkName: "about" */ '@/HManagement/EnterpriseArchives/modules/details.vue')
+      }
+    ]
   },
+  
   {
     path: '/notice_mag_list',
     name: 'noticemag',

+ 2 - 1
src/router/index.js

@@ -30,7 +30,8 @@ let routes = [
   {
     path: '/main',
     name: 'main',
-    component: () => import(/* webpackChunkName: "about" */ '@/components/layout/index.vue'),
+    // component: () => import(/* webpackChunkName: "about" */ '@/components/layout/index.vue'),
+    component: () => import(/* webpackChunkName: "about" */ '@/components/newLayout/index.vue'),
     redirect: '/home',
     children: [
       {

+ 27 - 2
src/store/index.js

@@ -17,7 +17,9 @@ export default new Vuex.Store({
     shortcutlist:[],
     active_modules:{},
     checks:[],
-    dataToForm:{}
+    dataToForm:{},
+    acitveApp:{},
+    menuApp:[]
   },
   getters: {
     siteinfo:state => state.siteinfo,
@@ -28,7 +30,9 @@ export default new Vuex.Store({
     shortcutlist:state => state.shortcutlist,
     active_modules:state => state.active_modules,
     checks:state => state.checks,
-    dataToForm:state => state.dataToForm
+    dataToForm:state => state.dataToForm,
+    acitveApp:state => state.acitveApp,
+    menuApp:state => state.menuApp,
   },
   mutations: {
     setSiteInfo(state,res) {
@@ -58,6 +62,12 @@ export default new Vuex.Store({
     sendDataToForm (state,data) {
       state.dataToForm = data
     },
+    setActiveApp (state,app) {
+      state.acitveApp = app
+    },
+    setAppMenu (state,data) {
+      state.menuApp = data
+    },
   },
   actions: {
     // 系统选项分类查询
@@ -130,6 +140,17 @@ export default new Vuex.Store({
       })
       commit('setUsershortcuts',arr)
     },
+    // 设置应用快捷栏 
+    async setAppMenu ({commit}, param) {
+      const res = await api.requested({
+        "classname": "sysmanage.develop.userauthforweb.userauth",
+        "method": "query_usershortcuts",
+        "content": {
+          "shortcuttype":"systemapp"
+        }
+      })
+      commit('setAppMenu',res.data)
+    },
     // 查询标签数据
     async queryTagList ({commit}, param) {
       return new Promise(async (reslove,reject)=>{
@@ -160,6 +181,10 @@ export default new Vuex.Store({
     sendDataToForm ({commit}, data) {
       commit('sendDataToForm',data)
     },
+    // 设置活动中的应用
+    setActiveApp ({commit}, app) {
+      commit('setActiveApp',app)
+    },
   },
   modules: {
   },

+ 19 - 5
src/style/style.css

@@ -2,14 +2,19 @@
   margin:0;
   padding: 0;
 }
+/* CDN 服务仅供平台体验和调试使用,平台不承诺服务的稳定性,企业客户需下载字体包自行发布使用并做好备份。 */
+@font-face {
+  font-family: "阿里巴巴普惠体 2.0 35 Thin";font-weight: 250;src: url("//at.alicdn.com/wf/webfont/HB6yVW1i0ADP/IUVK5X2zYVPbI6oplagJ1.woff2") format("woff2"),
+  url("//at.alicdn.com/wf/webfont/HB6yVW1i0ADP/oengschXIq68YqRU8lkf4.woff") format("woff");
+  font-display: swap;
+}
 body{
-  /* font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif, Helvetica,Arial,"Microsoft Yahei","Hiragino Sans GB","Heiti SC","WenQuanYi Micro Hei",sans-serif;
-  font-size: 16px; */
-  font:16px/1.5 Helvetica Neue,Helvetica,Arial,Microsoft Yahei,Hiragino Sans GB,Heiti SC,WenQuanYi Micro Hei,sans-serif;
   color: #333333;
-  background-color: #FAFAFA;
-  /* min-width: 1200px; */
+  background: url("../assets/wallhaven-od2jem.jpeg") no-repeat;
+  background-size: cover;
+
 }
+
 input[type=number] {
   -moz-appearance:textfield;
 }
@@ -149,3 +154,12 @@ ul{
   color:#fff !important;
   border-radius:3px
 }
+
+.my-label{
+  font-size: 14px;
+  color:rgb(163, 163, 163) !important;
+}
+.my-content{
+  font-size: 14px;
+  color:#666 !important;
+}

Some files were not shown because too many files changed in this diff