Merge pull request 'dashboard' (#38) from gtz into develop
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				continuous-integration/drone/push Build is passing
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	continuous-integration/drone/push Build is passing
				
			Reviewed-on: #38
This commit is contained in:
		@@ -97,7 +97,7 @@
 | 
			
		||||
    "@vue/test-utils": "1.0.0-beta.29",
 | 
			
		||||
    "autoprefixer": "^9.5.1",
 | 
			
		||||
    "babel-core": "7.0.0-bridge.0",
 | 
			
		||||
    "babel-eslint": "10.0.1",
 | 
			
		||||
    "babel-eslint": "^8.2.2",
 | 
			
		||||
    "babel-jest": "23.6.0",
 | 
			
		||||
    "chalk": "2.4.2",
 | 
			
		||||
    "chokidar": "2.1.5",
 | 
			
		||||
 
 | 
			
		||||
@@ -254,8 +254,8 @@ export default {
 | 
			
		||||
  },
 | 
			
		||||
  routerTitle: {
 | 
			
		||||
    dashboard: {
 | 
			
		||||
      zh: '仪表盘',
 | 
			
		||||
      en: 'Dashboard'
 | 
			
		||||
      zh: '首页',
 | 
			
		||||
      en: 'Home'
 | 
			
		||||
    },
 | 
			
		||||
    basic: {
 | 
			
		||||
      zh: '系统管理',
 | 
			
		||||
 
 | 
			
		||||
@@ -57,19 +57,19 @@ export const constantRoutes = [
 | 
			
		||||
    component: () => import('@/views/login/index'),
 | 
			
		||||
    hidden: true
 | 
			
		||||
  },
 | 
			
		||||
  // {
 | 
			
		||||
  //   path: '/',
 | 
			
		||||
  //   component: Layout,
 | 
			
		||||
  //   redirect: '/dashboard',
 | 
			
		||||
  //   children: [
 | 
			
		||||
  //     {
 | 
			
		||||
  //       path: 'dashboard',
 | 
			
		||||
  //       component: () => import('@/views/dashboard/index'),
 | 
			
		||||
  //       name: 'Dashboard',
 | 
			
		||||
  //       meta: { title: routerTitle.dashboard?.[language] || routerTitle.dashboard.en, icon: 'form', iconPart: 'dashboard', affix: true, required: true, requireToken: true }
 | 
			
		||||
  //     }
 | 
			
		||||
  //   ]
 | 
			
		||||
  // },
 | 
			
		||||
  {
 | 
			
		||||
    path: '/',
 | 
			
		||||
    component: Layout,
 | 
			
		||||
    redirect: '/dashboard',
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: 'dashboard',
 | 
			
		||||
        component: () => import('@/views/dashboard/index'),
 | 
			
		||||
        name: 'Dashboard',
 | 
			
		||||
        meta: { title: routerTitle.dashboard?.[language] || routerTitle.dashboard.en, icon: 'form', iconPart: 'dashboard', affix: true, required: true, requireToken: true }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
  // {
 | 
			
		||||
  //   path: '/',
 | 
			
		||||
  //   component: () => import('@/views/ChoicePart'),
 | 
			
		||||
 
 | 
			
		||||
@@ -198,3 +198,40 @@ aside {
 | 
			
		||||
.el-dialog__wrapper {
 | 
			
		||||
  backdrop-filter: blur(5px);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
::-webkit-scrollbar {
 | 
			
		||||
  width: 8px;
 | 
			
		||||
  height: 8px;
 | 
			
		||||
  background-color: transparent;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
::-webkit-scrollbar-track-piece {
 | 
			
		||||
  background-color:rgba(144,147,153,0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
::-webkit-scrollbar-corner {
 | 
			
		||||
  background-color:rgba(144,147,153,0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
::-webkit-scrollbar-track {
 | 
			
		||||
  width: 6px;
 | 
			
		||||
  background: rgba(144,147,153,0);
 | 
			
		||||
  -webkit-border-radius: 2em;
 | 
			
		||||
  -moz-border-radius: 2em;
 | 
			
		||||
  border-radius: 2em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
::-webkit-scrollbar-thumb {
 | 
			
		||||
  background-color: rgba(144,147,153,.5);
 | 
			
		||||
  background-clip: padding-box;
 | 
			
		||||
  min-height: 28px;
 | 
			
		||||
  -webkit-border-radius: 2em;
 | 
			
		||||
  -moz-border-radius: 2em;
 | 
			
		||||
  border-radius: 2em;
 | 
			
		||||
  transition: background-color .3s;
 | 
			
		||||
  cursor: pointer;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
::-webkit-scrollbar-thumb:hover {
 | 
			
		||||
  background-color: rgba(144,147,153,.3);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,15 +1,180 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: gtz
 | 
			
		||||
 * @Date: 2022-03-03 09:16:10
 | 
			
		||||
 * @LastEditors: gtz
 | 
			
		||||
 * @LastEditTime: 2022-03-07 19:47:15
 | 
			
		||||
 * @Description: file content
 | 
			
		||||
 * @FilePath: \mt-ck-wms-ui\src\views\dashboard\index.vue
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="dashboard-container">
 | 
			
		||||
    <!-- <component :is="currentRole" /> -->
 | 
			
		||||
    <admin-dashboard />
 | 
			
		||||
    <el-card class="dashboard-main">
 | 
			
		||||
      <el-row class="dashboard-title">
 | 
			
		||||
        <div class="dashboard-header-line" />
 | 
			
		||||
        <div class="dashboard-header-title">WMS库存信息</div>
 | 
			
		||||
      </el-row>
 | 
			
		||||
      <el-row class="dashboard-legend">
 | 
			
		||||
        <div v-for="item in cassetteStatusList" :key="'cassette' + item.id" class="dashboard-legend-cassette">
 | 
			
		||||
          <div class="dashboard-legend-cassette-cricle" :style="{background: item.color}" />
 | 
			
		||||
          {{ item.name }}
 | 
			
		||||
        </div>
 | 
			
		||||
        |
 | 
			
		||||
        <div v-for="item in portAttributeList" :key="'port' + item.id" class="dashboard-legend-port" :style="{background: item.color}">
 | 
			
		||||
          {{ item.name }}
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="dashboard-legend-search">
 | 
			
		||||
          <el-select v-model="current" size="mini" placeholder="请选择库存范围" @change="handleChange">
 | 
			
		||||
            <el-option v-for="item in totalPage" :key="'select' + item" :label="'第' + item + '页'" :value="item" />
 | 
			
		||||
          </el-select>
 | 
			
		||||
        </div>
 | 
			
		||||
      </el-row>
 | 
			
		||||
      <el-row v-if="current * 80 < shelfList[0].rowList[0].portList.length" class="dashboard-layout" :gutter="20">
 | 
			
		||||
        <el-col v-for="item in 4" :key="'shelfbox' + item" class="dashboard-layout-shelf-box" :span="6">
 | 
			
		||||
          <el-row>
 | 
			
		||||
            <el-col v-for="i in shelfList" :key="item + 'shelf' + i.id" :span="12" class="dashboard-layout-shelf">
 | 
			
		||||
              <el-row>
 | 
			
		||||
                <el-col v-for="z in i.rowList" :key="item + 'shelf' + i + 'row' + z.id" :span="12" class="dashboard-layout-row">
 | 
			
		||||
                  <div v-for="x in 20" :key="item + 'shelf' + i + 'row' + z + 'item' + x" class="dashboard-layout-item" :style="{background: portAttributeObj[z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].attribute], cursor: z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].attribute === 3 ? 'not-allowed' : 'pointer'}">
 | 
			
		||||
                    <div v-if="z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].attribute !== 3" class="dashboard-layout-item-cricle" :style="{background: cassetteStatusObj[z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].cassetteList[0].status]}" />
 | 
			
		||||
                    {{ z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].name }}
 | 
			
		||||
                  </div>
 | 
			
		||||
                </el-col>
 | 
			
		||||
              </el-row>
 | 
			
		||||
            </el-col>
 | 
			
		||||
          </el-row>
 | 
			
		||||
        </el-col>
 | 
			
		||||
      </el-row>
 | 
			
		||||
      <el-row v-else class="dashboard-layout" :gutter="20">
 | 
			
		||||
        <el-col v-for="item in Math.ceil((shelfList[0].rowList[0].portList.length - (current - 1) * 80) / 20)" :key="'shelfbox' + item" class="dashboard-layout-shelf-box" :span="6">
 | 
			
		||||
          <el-row>
 | 
			
		||||
            <el-col v-for="i in shelfList" :key="item + 'shelf' + i.id" :span="12" class="dashboard-layout-shelf">
 | 
			
		||||
              <el-row v-if="item < Math.ceil((shelfList[0].rowList[0].portList.length - (current - 1) * 80) / 20)">
 | 
			
		||||
                <el-col v-for="z in i.rowList" :key="item + 'shelf' + i + 'row' + z.id" :span="12" class="dashboard-layout-row">
 | 
			
		||||
                  <div v-for="x in 20" :key="item + 'shelf' + i + 'row' + z + 'item' + x" class="dashboard-layout-item" :style="{background: portAttributeObj[z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].attribute], cursor: z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].attribute === 3 ? 'not-allowed' : 'pointer'}">
 | 
			
		||||
                    <div v-if="z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].attribute !== 3" class="dashboard-layout-item-cricle" :style="{background: cassetteStatusObj[z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].cassetteList[0].status]}" />
 | 
			
		||||
                    {{ z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].name }}
 | 
			
		||||
                  </div>
 | 
			
		||||
                </el-col>
 | 
			
		||||
              </el-row>
 | 
			
		||||
              <el-row v-else>
 | 
			
		||||
                <el-col v-for="z in i.rowList" :key="item + 'shelf' + i + 'row' + z.id" :span="12" class="dashboard-layout-row">
 | 
			
		||||
                  <div v-for="x in shelfList[0].rowList[0].portList.length - (item - 1) * 20 - (current - 1) * 80" :key="item + 'shelf' + i + 'row' + z + 'item' + x" class="dashboard-layout-item" :style="{background: portAttributeObj[z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].attribute], cursor: z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].attribute === 3 ? 'not-allowed' : 'pointer'}">
 | 
			
		||||
                    <div v-if="z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].attribute !== 3" class="dashboard-layout-item-cricle" :style="{background: cassetteStatusObj[z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].cassetteList[0].status]}" />
 | 
			
		||||
                    {{ z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].name }}
 | 
			
		||||
                  </div>
 | 
			
		||||
                </el-col>
 | 
			
		||||
              </el-row>
 | 
			
		||||
            </el-col>
 | 
			
		||||
          </el-row>
 | 
			
		||||
        </el-col>
 | 
			
		||||
      </el-row>
 | 
			
		||||
    </el-card>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import AdminDashboard from './admin'
 | 
			
		||||
import testdata from './testdata'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'Dashboard',
 | 
			
		||||
  components: { AdminDashboard }
 | 
			
		||||
  data() {
 | 
			
		||||
    return testdata
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
    console.log(this.shelfList)
 | 
			
		||||
    this.totalPage = Math.ceil(this.shelfList[0].rowList[0].portList.length / 80)
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    handleChange(v) {
 | 
			
		||||
      console.log(v)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.dashboard-container {
 | 
			
		||||
  background: #F2F4F9;
 | 
			
		||||
  min-height: calc(100vh - 134px);
 | 
			
		||||
  overflow-x: scroll;
 | 
			
		||||
  padding: 0 16px;
 | 
			
		||||
  padding-top: 24px;
 | 
			
		||||
  .dashboard-main {
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    min-width: 1380px;
 | 
			
		||||
    background-color: #fff;
 | 
			
		||||
    border-radius: 8px;
 | 
			
		||||
    min-height: calc(100vh - 186px);
 | 
			
		||||
    .dashboard-title {
 | 
			
		||||
      .dashboard-header-line{
 | 
			
		||||
        display: inline-block;
 | 
			
		||||
        width: 4px;
 | 
			
		||||
        height: 16px;
 | 
			
		||||
        background: #0B58FF;
 | 
			
		||||
        border-radius: 1px;
 | 
			
		||||
        position: relative;
 | 
			
		||||
        top: 2px;
 | 
			
		||||
        margin-right: 4px;
 | 
			
		||||
      }
 | 
			
		||||
      .dashboard-header-title{
 | 
			
		||||
        display: inline-block;
 | 
			
		||||
        font-size: 16px;
 | 
			
		||||
        font-family: PingFangSC-Regular, PingFang SC;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
        color: #000000;
 | 
			
		||||
        line-height: 16px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    .dashboard-legend {
 | 
			
		||||
      margin-top: 20px;
 | 
			
		||||
      .dashboard-legend-cassette {
 | 
			
		||||
        display: inline-block;
 | 
			
		||||
        margin-right: 24px;
 | 
			
		||||
        .dashboard-legend-cassette-cricle {
 | 
			
		||||
          display: inline-block;
 | 
			
		||||
          width: 12px;
 | 
			
		||||
          height: 12px;
 | 
			
		||||
          border-radius: 6px;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      .dashboard-legend-port {
 | 
			
		||||
        display: inline-block;
 | 
			
		||||
        height: 24px;
 | 
			
		||||
        line-height: 24px;
 | 
			
		||||
        border-radius: 4px;
 | 
			
		||||
        padding: 0 16px;
 | 
			
		||||
        margin-left: 24px;
 | 
			
		||||
      }
 | 
			
		||||
      .dashboard-legend-search {
 | 
			
		||||
        float: right;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    .dashboard-layout {
 | 
			
		||||
      margin: 20px 0;
 | 
			
		||||
      .dashboard-layout-shelf-box {
 | 
			
		||||
        .dashboard-layout-shelf {
 | 
			
		||||
          padding: 0 8px;
 | 
			
		||||
          .dashboard-layout-row {
 | 
			
		||||
            padding: 0 1px;
 | 
			
		||||
            .dashboard-layout-item {
 | 
			
		||||
              width: 100%;
 | 
			
		||||
              text-align: center;
 | 
			
		||||
              height: 32px;
 | 
			
		||||
              line-height: 32px;
 | 
			
		||||
              box-shadow: 0px 3px 6px 0px rgba(166, 174, 190, 0.8);
 | 
			
		||||
              border-radius: 2px 4px 4px 2px;
 | 
			
		||||
              margin-bottom: 8px;
 | 
			
		||||
              .dashboard-layout-item-cricle{
 | 
			
		||||
                display: inline-block;
 | 
			
		||||
                width: 12px;
 | 
			
		||||
                height: 12px;
 | 
			
		||||
                border-radius: 6px;
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2953
									
								
								src/views/dashboard/testdata.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2953
									
								
								src/views/dashboard/testdata.js
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user