瀏覽代碼

Home Business Final

caiaa 1 年之前
父節點
當前提交
8820de98c1

+ 1 - 1
src/api/biz.js

@@ -18,7 +18,7 @@ export function fetchMyBizList(data) {
 
 export function pushSaveFavorite(data) {
   return request({
-    url: 'business/save',
+    url: 'business/batchUpdate',
     method: 'post',
     data: data
   })

+ 1 - 1
src/api/system.js

@@ -18,7 +18,7 @@ export function fetchMySystemList(data) {
 
 export function pushSaveFavorite(data) {
   return request({
-    url: 'app/save',
+    url: 'app/batchUpdate',
     method: 'post',
     data: data
   })

+ 1 - 1
src/main.js

@@ -16,7 +16,7 @@ import * as filters from './filters' // global filters
 import '@/icons' // icon
 import '@/permission' // permission control
 
-Vue.use(ElementUI, { size: 'small' })
+Vue.use(ElementUI)
 
 import SSE from 'vue-sse'
 Vue.use(SSE)

+ 1 - 1
src/utils/convert.js

@@ -132,5 +132,5 @@ export function formatDictData(data, code) {
 }
 
 export function hasValidRecords(res) {
-  return isObject(res.data) && isArray(res.data.records)
+  return isObject(res.data) && isArray(res.data.records) && res.data.records.length > 0
 }

+ 3 - 7
src/views/home/Business.vue

@@ -3,14 +3,13 @@
     <el-card>
       <div slot="header" class="clearfix">
         <span>我的业务</span>
-        <el-button style="float: right; padding: 3px 0" type="text" size="medium" @click="showEdit">编辑</el-button>
+        <el-button style="float: right; padding: 3px 0" type="text" @click="showEdit">编辑</el-button>
       </div>
 
       <el-scrollbar class="business-content">
         <el-tabs v-loading="loading" value="all">
           <el-tab-pane label="所有" name="all">
-            <!-- <div v-for="bizType in allBizTypeData" v-if="!isNull(bizData[bizType.value])" :key="bizType.id" class="type-box"> -->
-            <div v-for="bizType in allBizTypeData" :key="bizType.id" class="type-box">
+            <div v-for="bizType in bizTypeData" :key="bizType.id" class="type-box">
               <div class="type-title">{{ bizType.label }}</div>
               <el-button v-for="item in bizData[bizType.value]" :key="item.id" type="test">{{ item.businessName }}</el-button>
             </div>
@@ -68,7 +67,6 @@ export default {
         } else {
           this.allBizTypeData = []
         }
-        this.loading = false
       }).catch(error => {
         console.log(error)
         this.loading = false
@@ -97,13 +95,10 @@ export default {
               if (hasValidRecords(response)) {
                 this.bizData[type.value] = response.data.records
                 this.bizTypeData.push(type)
-              } else {
-                this.bizData[type.value] = []
               }
               resolve()
             }).catch(error => {
               console.log(error)
-              this.loading = false
               this.$message.error({
                 type: 'error',
                 duration: 0,
@@ -150,6 +145,7 @@ export default {
   ::v-deep {
     .el-tabs__header {
       height: 40px;
+      margin-right: 20px;
     }
     .el-tabs__item {
       font-size: 18px !important;

+ 4 - 4
src/views/home/Message.vue

@@ -3,7 +3,7 @@
     <el-card>
       <div slot="header" class="clearfix">
         <span>消息提醒</span>
-        <el-button style="float: right; padding: 3px 0" type="text" size="medium" @click="showList">更多<i class="el-icon-arrow-right" /></el-button>
+        <el-button style="float: right; padding: 3px 0" type="text" @click="showList">更多<i class="el-icon-arrow-right" /></el-button>
       </div>
       <el-tabs v-model="curTab" class="message-content" @tab-click="getTablelist">
         <el-tab-pane :label="'待办('+ messageCount.todo + ')'" name="Todo">
@@ -14,7 +14,7 @@
               <el-radio-button v-for="item in typeData" :key="item.id" :label="item.value">{{ item.label }}</el-radio-button>
             </el-radio-group>
           </div>
-          <el-table v-loading="loading" :data="todoData" :show-header="false" size="medium" :cell-style="cellStyle" height="calc(100% - 30px)">
+          <el-table v-loading="loading" :data="todoData" :show-header="false" :cell-style="cellStyle" height="calc(100% - 30px)">
             <el-table-column width="50">
               <template slot-scope="scope">
                 <el-avatar :size="40" shape="square" class="msg-icon"><svg-icon :icon-class="formatTypeIcon(scope.row.messageType)" /></el-avatar>
@@ -30,7 +30,7 @@
             <el-table-column prop="createUser" width="100" show-overflow-tooltip />
             <el-table-column width="105">
               <template slot-scope="scope">
-                <el-button size="mini" @click="markRead(scope.$index, scope.row)">不再提醒</el-button>
+                <el-button size="small" @click="markRead(scope.$index, scope.row)">不再提醒</el-button>
               </template>
             </el-table-column>
           </el-table>
@@ -43,7 +43,7 @@
               <el-radio-button v-for="item in typeData" :key="item.id" :label="item.value">{{ item.label }}</el-radio-button>
             </el-radio-group>
           </div>
-          <el-table v-loading="loading" :data="doneData" :show-header="false" size="medium" height="calc(100% - 30px)">
+          <el-table v-loading="loading" :data="doneData" :show-header="false" height="calc(100% - 30px)">
             <el-table-column width="50">
               <template slot-scope="scope">
                 <el-avatar :size="40" shape="square" class="msg-icon"><svg-icon :icon-class="formatTypeIcon(scope.row.messageType)" /></el-avatar>

+ 2 - 2
src/views/home/Search.vue

@@ -1,8 +1,8 @@
 <template>
   <div>
     <el-row type="flex" justify="center" class="searh-row">
-      <el-col :span="10"><el-input v-model="searchText" placeholder="请输入搜索内容" size="medium" /></el-col>
-      <el-col :span="2"><el-button type="primary" icon="el-icon-search" size="medium" @click="eagleSearch">智搜</el-button></el-col>
+      <el-col :span="10"><el-input v-model="searchText" placeholder="请输入搜索内容" /></el-col>
+      <el-col :span="2"><el-button type="primary" icon="el-icon-search" @click="eagleSearch">智搜</el-button></el-col>
     </el-row>
   </div>
 </template>

+ 1 - 1
src/views/home/Specification.vue

@@ -12,7 +12,7 @@
               <el-link :underline="false">{{ scope.row.name }}</el-link>
             </template>
           </el-table-column>
-          <el-table-column prop="createDate" width="140" />
+          <el-table-column prop="createDate" width="150" />
         </el-table>
       </el-scrollbar>
     </el-card>

+ 1 - 1
src/views/home/System.vue

@@ -3,7 +3,7 @@
     <el-card>
       <div slot="header" class="clearfix">
         <span>{{ title }}</span>
-        <el-button style="float: right; padding: 3px 0" type="text" size="medium" @click="showEdit">编辑</el-button>
+        <el-button style="float: right; padding: 3px 0" type="text" @click="showEdit">编辑</el-button>
       </div>
       <el-carousel v-loading="loading" class="system-content" :autoplay="false" arrow="never" trigger="click">
         <el-carousel-item v-for="(page, index) in carouselData" :key="'carousel_' + index">

+ 57 - 44
src/views/home/components/BusinessEdit.vue

@@ -3,27 +3,26 @@
     <el-dialog
       v-loading="loading"
       :visible.sync="visible"
-      :close-on-press-escape="false"
+      :close-on-press-escape="true"
       :close-on-click-modal="false"
       :show-close="false"
       append-to-body
       custom-class="home-edit-dialog"
-      title="My"
+      title="我的业务设置"
     >
       <div class="drag-container">
         <div v-loading="allLoading" class="drag-left">
-          <div class="drag-title">list</div>
-          <div class="item-filter">
-            <el-form ref="filterForm" :model="formData" inline size="mini">
-              <el-form-item label="system">
+          <div class="filter-title">业务列表</div>
+          <div class="list-filter">
+            <el-form ref="filterForm" :model="formData" inline size="small">
+              <el-form-item label="应用名称">
                 <el-input v-model="formData.systemName" clearable class="filter-item-input" />
               </el-form-item>
-              <el-form-item label="business">
+              <el-form-item label="业务名称">
                 <el-input v-model="formData.businessName" clearable class="filter-item-input" />
               </el-form-item>
               <el-form-item>
-                <el-button type="primary" @click="searchTable">search</el-button>
-                <!-- <el-button type="danger" @click="resetTable('filterForm')">reset</el-button> -->
+                <el-button type="primary" @click="searchTable">查询</el-button>
               </el-form-item>
             </el-form>
           </div>
@@ -35,6 +34,7 @@
             :move="checkMove"
             :set-data="setData"
             filter=".filtered"
+            handle=".handle-icon"
             class="drag-item-box"
           >
             <div
@@ -42,9 +42,10 @@
               :key="element.id"
               class="drag-item"
               :class="{'filtered': element.isFavorite}"
+              @click="jumpTo(element.url)"
             >
-              <i class="el-icon-plus handle-icon" @click="clickAddItem(index)" />
-              <el-avatar :size="56" :src="element.url" />
+              <i class="el-icon-plus handle-icon" @click.stop="clickAddItem(index)" />
+              <el-avatar :size="56" :src="element.icon" />
               <div class="item-content">
                 <div class="item-name">{{ element.businessName }}</div>
                 <div class="item-system">{{ element.appName }}</div>
@@ -63,8 +64,8 @@
           </div>
         </div>
         <div v-loading="myLoading" class="drag-right">
-          <div class="drag-title">My</div>
-          <div class="item-tip">tip</div>
+          <div class="filter-title">我的业务</div>
+          <div class="filter-tip">提示:可以通过鼠标拖拽进行排序</div>
           <el-scrollbar class="my-scroll-box">
             <draggable
               :list="myBizData"
@@ -75,7 +76,7 @@
             >
               <div v-for="(element, index) in myBizData" :key="element.id" class="drag-item">
                 <i class="el-icon-minus handle-icon" @click="clickRemoveItem(index)" />
-                <el-avatar :size="56" src="https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png" />
+                <el-avatar :size="56" :src="element.icon" />
                 <div class="item-content">
                   <div class="item-name">{{ element.businessName }}</div>
                   <div class="item-system">{{ element.appName }}</div>
@@ -86,8 +87,8 @@
         </div>
       </div>
       <div slot="footer">
-        <el-button @click="close">Cancel</el-button>
-        <el-button type="primary" @click="saveFavorite">Confirm</el-button>
+        <el-button @click="close">取消</el-button>
+        <el-button type="primary" @click="saveFavorite">确定</el-button>
       </div>
     </el-dialog>
   </div>
@@ -102,32 +103,21 @@ export default {
   components: {
     draggable
   },
-  props: {},
   data() {
     return {
       // dialog
       visible: false,
       // table
       current: 1,
-      size: 15,
+      size: 18,
       allBizTotal: 0,
       allBizData: [],
-      myBizData: [
-        { businessName: 'bizleft4', id: 4 },
-        { businessName: 'bizleft5', id: 5 },
-        { businessName: 'bizleft6', id: 6 },
-        { businessName: 'bizleft7', id: 7 }
-      ],
+      myBizData: [],
       // filter
       formData: {
-        systemNumber: '',
         systemName: '',
-        businessName: '',
-        businessNumber: ''
+        businessName: ''
       },
-      // select data
-      systemData: [],
-      businessData: [],
       // others
       loading: false,
       allLoading: false,
@@ -198,7 +188,7 @@ export default {
           type: 'error',
           duration: 0,
           showClose: true,
-          message: error.message
+          message: '获取业务列表出错:' + error.message
         })
       })
     },
@@ -207,7 +197,7 @@ export default {
       this.allLoading = true
       const params = {
         page: 1,
-        size: 50,
+        size: 100,
         params: {
           delFlag: 0
         }
@@ -227,18 +217,26 @@ export default {
           type: 'error',
           duration: 0,
           showClose: true,
-          message: error.message
+          message: '获取我的业务出错:' + error.message
         })
       })
     },
     saveFavorite() {
       this.loading = true
-      pushSaveFavorite(this.myBizData).then(res => {
+      const data = []
+      for (let i = 0; i < this.myBizData.length; i++) {
+        data.push({
+          'appId': this.myBizData[i].appId,
+          'businessId': this.myBizData[i].id,
+          'seq': i + 1
+        })
+      }
+      pushSaveFavorite(data).then(res => {
         this.loading = false
         this.visible = false
         this.$message({
           type: 'success',
-          message: 'Save Successfully!'
+          message: '保存成功!'
         })
       }).catch(error => {
         console.log(error)
@@ -247,7 +245,7 @@ export default {
           type: 'error',
           duration: 0,
           showClose: true,
-          message: error.message
+          message: '保存出错:' + error.message
         })
       })
     },
@@ -263,6 +261,9 @@ export default {
     close() {
       this.visible = false
     },
+    jumpTo(link) {
+      window.open(link, '_blank')
+    },
     clone(item) {
       return { ...item }
     },
@@ -301,19 +302,22 @@ export default {
   .drag-left, .drag-right {
     width: 50%;
     padding: 0 0 20px 20px;
-    max-height: 540px;
   }
 
   .drag-left {
     background-color: #F8F9F9;
     position: relative;
+    max-height: 634px;
 
     .page {
       position: absolute;
       bottom: 0;
       left: 0;
       width: 100%;
-      text-align: center;
+
+      .el-pagination {
+        text-align: center;
+      }
 
       ::v-deep {
         .btn-prev, .btn-next, .el-pager li{
@@ -324,8 +328,10 @@ export default {
   }
 
   .drag-right {
+    max-height: 770px;
+
     .my-scroll-box {
-      // 48 = drag-title + item-tip - drag-right.margin-bottom
+      // 48 = filter-title + filter-tip - drag-right.margin-bottom
       height: calc(100% - 48px);
       margin-top: -2px;
     }
@@ -341,21 +347,28 @@ export default {
     }
   }
 
-  .drag-title {
+  .filter-title {
     font-size: 14px;
+    color: rgba(0,0,0,0.85);
+    font-weight: 550;
     line-height: 2;
     height: 28px;
-    color: rgba(0,0,0,0.85);
   }
 
-  .item-filter, .item-tip {
+  .list-filter, .filter-tip {
     height: 40px;
   }
 
-  .item-tip {
+  .filter-tip {
     font-size: 12px;
-    line-height: 40px;
     color: rgba(0,0,0,0.65);
+    line-height: 40px;
+
+    &::before{
+      content: "*";
+      color: #ff4949;
+      margin-right: 2px;
+    }
   }
 
   .filter-item-input {

+ 20 - 9
src/views/home/components/SystemEdit.vue

@@ -13,7 +13,7 @@
       <div class="drag-container">
         <div v-loading="allLoading" class="drag-left">
           <div class="list-filter">
-            <span class="filter-title">{{ title }}</span>
+            <span class="filter-title">{{ title + '列表' }}</span>
             <el-input v-model="formData.systemName" clearable>
               <el-button slot="append" icon="el-icon-search" @click="searchTable" />
             </el-input>
@@ -36,7 +36,7 @@
               :class="{'filtered': element.isFavorite}"
               @click="jumpTo(element.url)"
             >
-              <i class="el-icon-plus handle-icon" @click="clickAddItem(index)" />
+              <i class="el-icon-plus handle-icon" @click.stop="clickAddItem(index)" />
               <el-avatar :size="56" :src="element.icon" />
               <div class="item-system">{{ element.systemName }}</div>
             </div>
@@ -181,7 +181,7 @@ export default {
           type: 'error',
           duration: 0,
           showClose: true,
-          message: '获取所有应用出错:' + error.message
+          message: `获取${this.title}列表出错:` + error.message
         })
       })
     },
@@ -211,13 +211,20 @@ export default {
           type: 'error',
           duration: 0,
           showClose: true,
-          message: '获取我的应用出错' + error.message
+          message: `获取我的${this.title}出错` + error.message
         })
       })
     },
     saveFavorite() {
       this.loading = true
-      pushSaveFavorite(this.myListData).then(res => {
+      const data = []
+      for (let i = 0; i < this.myListData.length; i++) {
+        data.push({
+          'appId': this.myListData[i].id,
+          'seq': i + 1
+        })
+      }
+      pushSaveFavorite(data).then(res => {
         this.loading = false
         this.visible = false
         this.$message({
@@ -316,6 +323,11 @@ export default {
   .drag-right {
     max-height: 770px;
 
+    .drag-item {
+      cursor: move;
+      cursor: -webkit-grabbing;
+    }
+
     .my-scroll-box {
       // 36 = list-filter - drag-right.margin-bottom
       height: calc(100% - 36px);
@@ -346,7 +358,7 @@ export default {
   }
 
   .filter-title {
-    font-size: 15px;
+    font-size: 14px;
     color: rgba(0,0,0,0.85);
     font-weight: 550;
   }
@@ -380,8 +392,7 @@ export default {
     align-items: center;
     border-radius: 10px;
     position: relative;
-    cursor: move;
-    cursor: -webkit-grabbing;
+    cursor: default;
 
     .handle-icon {
       display: inline-block;
@@ -396,7 +407,7 @@ export default {
     }
 
     &.filtered {
-      cursor: pointer;
+      cursor: default;
 
       .el-icon-plus {
         display: none;