瀏覽代碼

页面初始化提交

wangkang3 4 年之前
父節點
當前提交
7bbf8eb6a8
共有 27 個文件被更改,包括 1969 次插入242 次删除
  1. 1 0
      ebc-middle-platform/src/components/loginer.vue
  2. 43 0
      ebc-middle-platform/src/modules/attendance/attendance.scss
  3. 138 0
      ebc-middle-platform/src/modules/attendance/attendance.vue
  4. 36 0
      ebc-middle-platform/src/modules/attendance/track.scss
  5. 115 0
      ebc-middle-platform/src/modules/attendance/track.vue
  6. 0 0
      ebc-middle-platform/src/modules/authorization/menu-authorization.scss
  7. 109 0
      ebc-middle-platform/src/modules/authorization/menu-authorization.vue
  8. 0 0
      ebc-middle-platform/src/modules/authorization/role-authorization.vue
  9. 3 0
      ebc-middle-platform/src/modules/call-help/current.vue
  10. 64 0
      ebc-middle-platform/src/modules/call-help/history.scss
  11. 164 0
      ebc-middle-platform/src/modules/call-help/history.vue
  12. 3 0
      ebc-middle-platform/src/modules/orientation/orientation.vue
  13. 42 0
      ebc-middle-platform/src/modules/system-management/equipment-management.scss
  14. 144 0
      ebc-middle-platform/src/modules/system-management/equipment-management.vue
  15. 42 0
      ebc-middle-platform/src/modules/system-management/map-mark.scss
  16. 113 0
      ebc-middle-platform/src/modules/system-management/map-mark.vue
  17. 42 0
      ebc-middle-platform/src/modules/system-management/menu-management.scss
  18. 153 0
      ebc-middle-platform/src/modules/system-management/menu-management.vue
  19. 42 0
      ebc-middle-platform/src/modules/system-management/role-management.scss
  20. 133 0
      ebc-middle-platform/src/modules/system-management/role-management.vue
  21. 86 0
      ebc-middle-platform/src/modules/system-management/terminal-management.scss
  22. 153 0
      ebc-middle-platform/src/modules/system-management/terminal-management.vue
  23. 42 0
      ebc-middle-platform/src/modules/system-management/user-management.scss
  24. 156 0
      ebc-middle-platform/src/modules/system-management/user-management.vue
  25. 3 2
      ebc-middle-platform/src/modules/tags-nav/store.js
  26. 1 1
      ebc-middle-platform/src/router.js
  27. 141 239
      ebc-middle-platform/src/routes.js

+ 1 - 0
ebc-middle-platform/src/components/loginer.vue

@ -101,6 +101,7 @@ export default {
101 101
    })
102 102
  },
103 103
  mounted () {
104
    console.log(routers)
104 105
    this.setHomeRoute(routers)
105 106
    let userName = localStorage.getItem(KEY_USER_NAME)
106 107
    if (userName) {

+ 43 - 0
ebc-middle-platform/src/modules/attendance/attendance.scss

@ -0,0 +1,43 @@
1
.attendance-container{
2
  width: 97%;
3
  margin: 20px auto;
4
  padding: 20px;
5
  box-sizing: border-box;
6
  .search-container{
7
    width: 100%;
8
    padding: 0 0 20px;
9
    .search-ctn{
10
      width: 100%;
11
      overflow: hidden;
12
      margin: 0;
13
      padding: 0;
14
      position: relative;
15
      display: flex;
16
      >div{
17
        display: flex; 
18
        margin: 0 20px 16px 0;    
19
        line-height: 2;
20
        .input-rule{
21
          flex: 1;
22
          margin:0 0 0 20px;
23
          .dropdown{
24
            width: 100%
25
          }
26
        }
27
      }
28
      .btns button{
29
        margin: 0 2px;
30
      }
31
      .active{
32
        color: #3BC541;
33
        border-color: #3BC541;
34
      }
35
    }
36
  }
37
  .hidden{
38
    display: none;
39
  }
40
  .table-pager{
41
    margin: 20px auto;
42
  }
43
}

+ 138 - 0
ebc-middle-platform/src/modules/attendance/attendance.vue

@ -0,0 +1,138 @@
1
<template>
2
  <div class="attendance-container">
3
    <div class="search-container">
4
      <div class="search-ctn">
5
        <div>
6
          <t-button-group>
7
            <t-button :class="timeType.day?'active':''" color="secondary" @click="changeType('day')">日</t-button>
8
            <t-button :class="timeType.week?'active':''" color="secondary" @click="changeType('week')">月</t-button>
9
            <t-button :class="timeType.month?'active':''" color="secondary" @click="changeType('month')">年</t-button>
10
          </t-button-group>
11
        </div>
12
        <div>
13
          <t-date-picker v-model="singleDateVal" style="width:120px" placeholder="时间" @date-change="onChangeDate"
14
          ></t-date-picker>
15
        </div>
16
        <div>
17
          <div class="label">姓名:</div>
18
          <div class="input-rule">
19
            <t-select v-model="queryCondition.alarmPerson" width="200" placeholder="请输入...">
20
              <t-option>张三</t-option>
21
              <t-option>李四</t-option>
22
            </t-select>
23
          </div>
24
        </div>
25
        <div class="btns">
26
          <t-button color="secondary" class="reset-btn" @click="onReset">重置</t-button>
27
          <t-button color="success" icon="search-outline" @click="onSearch">查询</t-button>
28
          <t-button color="secondary" icon="upload-outline" @click="toExport">导出至Excel</t-button>
29
        </div>
30
      </div>
31
    </div>
32
    <div>
33
      <t-table :data="table.data">
34
        <t-table-column prop="name" label="姓名"></t-table-column>
35
        <t-table-column prop="job" label="职务"></t-table-column>
36
        <t-table-column v-if="timeType.day" prop="time" label="打卡时间"></t-table-column>
37
        <t-table-column v-if="!timeType.day" prop="attendance" label="出勤天数(天)"></t-table-column>
38
        <t-table-column
39
          v-if="!timeType.day"
40
          fixed="right"
41
          label="操作"
42
          width="120"
43
        >
44
          <template slot-scope="scope">
45
            <a href="javascript:void(0)" size="sm" @click="handleClick(scope.row)">详情</a>
46
          </template>
47
        </t-table-column>
48
      </t-table>
49
      <t-pager :total="table.pager.total" :current.sync="table.pager.currentPage"
50
               :page-size.sync="table.pager.size"
51
               :sizer-range="[10,20,50]"
52
               class="px-24 pt-16 float-right"
53
               show-elevator show-sizer
54
               @on-size-change="onSizeChange"
55
               @on-change="onPagerChange">
56
      </t-pager>
57
    </div>
58
  </div>
59
</template>
60
<script>
61
import './attendance.scss'
62
export default {
63
  data() {
64
    return {
65
      timeType: {
66
        day: true,
67
        week: false,
68
        month: false
69
      },
70
      table: {
71
        data: [
72
          {
73
            name: '王小明',
74
            job: '运维人员',
75
            time: '08:18',
76
            attendance: '7'
77
          },
78
          {
79
            name: '王小明',
80
            job: '运维人员',
81
            time: '08:18',
82
            attendance: '7'
83
          },
84
          {
85
            name: '王小明',
86
            job: '运维人员',
87
            time: '08:18',
88
            attendance: '7'
89
          }
90
        ],
91
        pager: {
92
          currentPage: 1,
93
          size: 10,
94
          total: 0
95
        }
96
      },
97
      queryCondition: {
98
        type: '',
99
        alarmPerson: ''
100
      },
101
      singleDateVal: ''
102
    }
103
  },
104
  mounted() {
105
    this.table.data = this.table.data.concat(this.table.data)
106
    this.table.pager.total = this.table.data.length
107
  },
108
  methods: {
109
    changeType(type) {
110
      Object.keys(this.timeType).forEach((value, key) => {
111
        this.timeType[value] = value === type
112
      })
113
    },
114
    onChangeDate(value) {
115
      console.log(value)
116
      this.singleDateVal = value
117
    },
118
    onChange(value) {
119
      console.log('date change:' + value)
120
    },
121
    onReset() {
122
123
    },
124
    onSearch() {
125
126
    },
127
    toExport() {
128
129
    },
130
    onPagerChange(page) {
131
132
    },
133
    onSizeChange(number) {
134
135
    }
136
  }
137
}
138
</script>

+ 36 - 0
ebc-middle-platform/src/modules/attendance/track.scss

@ -0,0 +1,36 @@
1
.track-container{
2
  width: 97%;
3
  margin: 20px auto;
4
  padding: 20px;
5
  box-sizing: border-box;
6
  .search-container{
7
    width: 100%;
8
    padding: 0 0 20px;
9
    .search-ctn{
10
      width: 100%;
11
      overflow: hidden;
12
      margin: 0;
13
      padding: 0;
14
      display: flex;
15
      position: relative;
16
      >div{
17
        display: flex; 
18
        margin: 0 20px 16px 0;    
19
        line-height: 2;
20
        .input-rule{
21
          flex: 1;
22
          margin:0 0 0 20px;
23
          .dropdown{
24
            width: 100%
25
          }
26
        }
27
      }
28
      .btns button{
29
        margin: 0 2px;
30
      }
31
    }
32
  }
33
  .table-pager{
34
    margin: 20px auto;
35
  }
36
}

+ 115 - 0
ebc-middle-platform/src/modules/attendance/track.vue

@ -0,0 +1,115 @@
1
<template>
2
  <div class="track-container">
3
    <div class="search-container">
4
      <div class="search-ctn">
5
        <div>
6
          <div class="input-rule">
7
            <t-date-picker v-model="rangeDate" limit-date="10" type="dateRange" style="width:250px" placeholder="选择时间段" @date-change="onChange"></t-date-picker>
8
          </div>
9
        </div>
10
        <div>
11
          <div class="label">姓名:</div>
12
          <div class="input-rule">
13
            <t-select v-model="queryCondition.alarmPerson" placeholder="请输入...">
14
              <t-option>张三</t-option>
15
              <t-option>李四</t-option>
16
            </t-select>
17
          </div>
18
        </div>
19
        <div class="btns">
20
          <t-button color="secondary" class="reset-btn" @click="onReset">重置</t-button>
21
          <t-button color="success" icon="search-outline" @click="onSearch">查询</t-button>
22
          <t-button color="secondary" icon="upload-outline" @click="toExport">导出至Excel</t-button>
23
        </div>
24
      </div>
25
    </div>
26
    <div>
27
      <t-table :data="table.data">
28
        <t-table-column type="selection" width="70"></t-table-column>
29
        <t-table-column prop="name" label="姓名"></t-table-column>
30
        <t-table-column prop="job" label="职务"></t-table-column>
31
        <t-table-column prop="address" label="位置区域"></t-table-column>
32
        <t-table-column prop="stayTime" label="停留时长(h)"></t-table-column>
33
        <t-table-column prop="entryTime" label="进入时间"></t-table-column>
34
        <t-table-column prop="departureTime" label="离开时间"></t-table-column>
35
      </t-table>
36
      <t-pager :total="table.pager.total" :current.sync="table.pager.currentPage"
37
               :page-size.sync="table.pager.size"
38
               :sizer-range="[20,50,100]"
39
               class="px-24 pt-16 float-right"
40
               show-elevator show-sizer
41
               @on-size-change="onSizeChange"
42
               @on-change="onPagerChange">
43
      </t-pager>
44
    </div>
45
  </div>
46
</template>
47
<script>
48
import './track.scss'
49
export default {
50
  data() {
51
    return {
52
      table: {
53
        data: [
54
          {
55
            name: '王小明',
56
            job: '运维人员',
57
            address: '作业区域1',
58
            stayTime: '10小时39分钟',
59
            entryTime: '2020.7.10 08:21:43',
60
            departureTime: '2020.7.3 11:22:16'
61
          },
62
          {
63
            name: '王小明',
64
            job: '运维人员',
65
            address: '作业区域1',
66
            stayTime: '10小时39分钟',
67
            entryTime: '2020.7.10 08:21:43',
68
            departureTime: '2020.7.3 11:22:16'
69
          },
70
          {
71
            name: '王小明',
72
            job: '运维人员',
73
            address: '作业区域1',
74
            stayTime: '10小时39分钟',
75
            entryTime: '2020.7.10 08:21:43',
76
            departureTime: '2020.7.3 11:22:16'
77
          }
78
        ],
79
        pager: {
80
          currentPage: 1,
81
          size: 5,
82
          total: 0
83
        }
84
      },
85
      queryCondition: {
86
        type: '',
87
        alarmPerson: ''
88
      },
89
      rangeDate: ''
90
    }
91
  },
92
  mounted() {
93
  },
94
  methods: {
95
    onChange(value) {
96
      console.log('date change:' + value)
97
    },
98
    onReset() {
99
100
    },
101
    onSearch() {
102
103
    },
104
    toExport() {
105
106
    },
107
    onPagerChange(page) {
108
109
    },
110
    onSizeChange(number) {
111
112
    }
113
  }
114
}
115
</script>

+ 0 - 0
ebc-middle-platform/src/modules/authorization/menu-authorization.scss


+ 109 - 0
ebc-middle-platform/src/modules/authorization/menu-authorization.vue

@ -0,0 +1,109 @@
1
<template>
2
  <div class="authorization-container" style="display:flex;margin:20px">
3
    <div style="width:400px;border: 1px solid rgba(0, 0, 0, 0.09);margin-right:20px">
4
      <div>
5
        <div>角色列表</div>
6
      </div>
7
      <div style="flex-direction: column;
8
    justify-content: space-between;
9
    height: 100%;padding:0 20px">
10
        <t-table :data="table.data" highlight-current-row @current-change="handleCurrentChange">
11
          <t-table-column prop="name" label="角色名称"></t-table-column>
12
          <t-table-column prop="number" label="角色编码"></t-table-column>
13
        </t-table>
14
        <div>
15
          <t-pager :total="table.pager.total" :current.sync="table.pager.currentPage"
16
                   :page-size.sync="table.pager.size"
17
                   class="px-24 pt-16 float-right"
18
                   show-elevator show-sizer
19
                   @on-size-change="onSizeChange"
20
                   @on-change="onPagerChange">
21
          </t-pager>
22
        </div>
23
      </div>
24
    </div>
25
    <div>
26
      <t-transfer
27
        ref="transfer"
28
        :data="dataTable"
29
        :selected-keys="targetKeysTable"
30
        :operations="['向左移动','向右移动']"
31
        filterable
32
      >
33
        <div slot="listBodyLeft" slot-scope="tableLeft">
34
          <t-tree :multiple="true"
35
                  :with-ancestors="true"
36
                  :node-data="tableLeft"
37
          ></t-tree>
38
        </div>
39
        <div slot="listBodyRight" slot-scope="tableRight">
40
          <t-tree :multiple="true"
41
                  :with-ancestors="true"
42
                  :node-data="tableRight.data"
43
          ></t-tree>
44
        </div>
45
      </t-transfer>
46
    </div>
47
  </div>
48
</template>
49
<script>
50
export default {
51
  data() {
52
    return {
53
      table: {
54
        data: [
55
          {
56
            name: '超级管理员',
57
            number: 'superadmin'
58
          },
59
          {
60
            name: '超级管理员',
61
            number: 'superadmin'
62
          },
63
          {
64
            name: '超级管理员',
65
            number: 'superadmin'
66
          }
67
        ],
68
        pager: {
69
          currentPage: 1,
70
          size: 10,
71
          total: 0
72
        }
73
      },
74
      dataTable: this.getMockData(),
75
      targetKeysTable: []
76
    }
77
  },
78
  methods: {
79
    handleCurrentChange(val) {
80
      this.currentRow = val
81
    },
82
    getMockData: function() {
83
      let mockData = []
84
      for (let i = 0; i <= 20; i++) {
85
        mockData.push({
86
          key: i.toString(),
87
          label: '内容' + i,
88
          description: '描述' + i,
89
          disabled: Math.random() * 3 < 1
90
        })
91
      }
92
      return mockData
93
    },
94
    $_onCheckboxChange(selection) {
95
      let keysArray = []
96
      selection.forEach(item => {
97
        keysArray.push(item.key)
98
      })
99
      this.targetKeysTable = keysArray
100
    },
101
    onPagerChange(page) {
102
103
    },
104
    onSizeChange(number) {
105
106
    }
107
  }
108
}
109
</script>

+ 0 - 0
ebc-middle-platform/src/modules/authorization/role-authorization.vue


+ 3 - 0
ebc-middle-platform/src/modules/call-help/current.vue

@ -0,0 +1,3 @@
1
<template>
2
  <div>实时报警</div>
3
</template>

+ 64 - 0
ebc-middle-platform/src/modules/call-help/history.scss

@ -0,0 +1,64 @@
1
.history-container{
2
  width: 97%;
3
  margin: 20px auto;
4
  padding: 20px;
5
  box-sizing: border-box;
6
  .search-container{
7
    width: 100%;
8
    padding: 0 0 20px;
9
    .search-ctn{
10
      width: 100%;
11
      overflow: hidden;
12
      margin: 0;
13
      padding: 0;
14
      position: relative;
15
      .mod-btns{
16
        position: absolute;
17
        right: 0;
18
        top: 0;
19
        width: 200px;
20
        text-align: right;
21
        cursor: pointer;
22
        overflow: hidden;
23
        .reset-btn{
24
          float: right;
25
          margin: 0 10px;
26
        }
27
        .fold-btn{
28
          float: right;
29
          cursor: pointer;
30
          height: 32px;
31
          line-height: 32px;
32
          i{
33
            position: relative;
34
          }
35
        }
36
        .btn-primary{
37
          float: right;
38
        }
39
      }
40
      li{
41
        width: 23%;
42
        float: left;
43
        display: flex;
44
        list-style-type: none;
45
        margin: 0 20px 16px 0;
46
        .label{
47
          float: left;
48
          line-height: 32px;
49
          min-width: 32px;
50
        }
51
        .input-rule{
52
          flex: 1;
53
          margin:0 0 0 20px;
54
          .dropdown{
55
            width: 100%
56
          }
57
        }
58
      }
59
    }
60
  }
61
  .table-pager{
62
    margin: 20px auto;
63
  }
64
}

+ 164 - 0
ebc-middle-platform/src/modules/call-help/history.vue

@ -0,0 +1,164 @@
1
<template>
2
  <div class="history-container">
3
    <div class="search-container">
4
      <ul class="search-ctn">
5
        <li>
6
          <div class="label">报警类型:</div>
7
          <div class="input-rule">
8
            <t-select v-model="queryCondition.type" placeholder="请输入...">
9
              <t-option>落水告警</t-option>
10
              <t-option>手动告警</t-option>
11
            </t-select>
12
          </div>
13
        </li>
14
        <li>
15
          <div class="label">报警人:</div>
16
          <div class="input-rule">
17
            <t-select v-model="queryCondition.alarmPerson" placeholder="请输入...">
18
              <t-option>张三</t-option>
19
              <t-option>李四</t-option>
20
            </t-select>
21
          </div>
22
        </li>
23
        <li>
24
          <div class="input-rule">
25
            <t-date-picker v-model="rangeDate" limit-date="10" type="dateRange" style="width:250px" placeholder="选择时间段" @date-change="onChange"></t-date-picker>
26
          </div>
27
        </li>
28
        <div class="btns">
29
          <t-button color="secondary" class="reset-btn" @click="onReset">重置</t-button>
30
          <t-button color="success" icon="search-outline" @click="onSearch">查询</t-button>
31
          <t-button color="secondary" icon="upload-outline" @click="toExport">导出至Excel</t-button>
32
        </div>
33
      </ul>
34
    </div>
35
    <div>
36
      <t-table :data="table.data">
37
        <t-table-column type="selection" width="70"></t-table-column>
38
        <t-table-column width="100" prop="name" label="报警人"></t-table-column>
39
        <t-table-column width="100" prop="number" label="终端编号"></t-table-column>
40
        <t-table-column width="100" prop="type" label="报警类型"></t-table-column>
41
        <t-table-column width="200" prop="address" label="报警位置"></t-table-column>
42
        <t-table-column width="150" prop="alarmTime" label="报警时间"></t-table-column>
43
        <t-table-column width="100" prop="rescuePerson" label="救援人"></t-table-column>
44
        <t-table-column width="150" prop="rescueTime" label="救援时间"></t-table-column>
45
        <t-table-column width="150" prop="rescueDuration" label="救援时长"></t-table-column>
46
        <t-table-column
47
          fixed="right"
48
          label="操作"
49
          width="120"
50
        >
51
          <template slot-scope="scope">
52
            <a href="javascript:void(0)" size="sm" @click="handleClick(scope.row)">救援回放</a>
53
            <a href="javascript:void(0)" size="sm" @click="remove(scope.$index)">删除</a>
54
          </template>
55
        </t-table-column>
56
      </t-table>
57
      <t-pager :total="table.pager.total" :current.sync="table.pager.currentPage"
58
               :page-size.sync="table.pager.size"
59
               :sizer-range="[10,20,50]"
60
               class="px-24 pt-16 float-right"
61
               show-elevator show-sizer
62
               @on-size-change="onSizeChange"
63
               @on-change="onPagerChange">
64
      </t-pager>
65
    </div>
66
  </div>
67
</template>
68
<script>
69
import './history.scss'
70
export default {
71
  data() {
72
    return {
73
      table: {
74
        data: [
75
          {
76
            name: '王小明',
77
            number: 'ZDBH0001',
78
            type: '落水告警',
79
            address: '113.445294°E 23.157791°N',
80
            alarmTime: '2020.7.10 08:21:43',
81
            rescuePerson: '海事局A',
82
            rescueTime: '2020.7.3 11:22:16',
83
            rescueDuration: '10小时39分钟'
84
          },
85
          {
86
            name: '王小明',
87
            number: 'ZDBH0001',
88
            type: '落水告警',
89
            address: '113.445294°E 23.157791°N',
90
            alarmTime: '2020.7.10 08:21:43',
91
            rescuePerson: '海事局A',
92
            rescueTime: '2020.7.3 11:22:16',
93
            rescueDuration: '10小时39分钟'
94
          },
95
          {
96
            name: '王小明',
97
            number: 'ZDBH0001',
98
            type: '落水告警',
99
            address: '113.445294°E 23.157791°N',
100
            alarmTime: '2020.7.10 08:21:43',
101
            rescuePerson: '海事局A',
102
            rescueTime: '2020.7.3 11:22:16',
103
            rescueDuration: '10小时39分钟'
104
          },
105
          {
106
            name: '王小明',
107
            number: 'ZDBH0001',
108
            type: '落水告警',
109
            address: '113.445294°E 23.157791°N',
110
            alarmTime: '2020.7.10 08:21:43',
111
            rescuePerson: '海事局A',
112
            rescueTime: '2020.7.3 11:22:16',
113
            rescueDuration: '10小时39分钟'
114
          },
115
          {
116
            name: '王小明',
117
            number: 'ZDBH0001',
118
            type: '落水告警',
119
            address: '113.445294°E 23.157791°N',
120
            alarmTime: '2020.7.10 08:21:43',
121
            rescuePerson: '海事局A',
122
            rescueTime: '2020.7.3 11:22:16',
123
            rescueDuration: '10小时39分钟'
124
          }
125
        ],
126
        pager: {
127
          currentPage: 1,
128
          size: 10,
129
          total: 0
130
        }
131
      },
132
      queryCondition: {
133
        type: '',
134
        alarmPerson: ''
135
      },
136
      rangeDate: ''
137
    }
138
  },
139
  mounted() {
140
    this.table.data = this.table.data.concat(this.table.data)
141
    this.table.pager.total = this.table.data.length
142
  },
143
  methods: {
144
    onChange(value) {
145
      console.log('date change:' + value)
146
    },
147
    onReset() {
148
149
    },
150
    onSearch() {
151
152
    },
153
    toExport() {
154
155
    },
156
    onPagerChange(page) {
157
158
    },
159
    onSizeChange(number) {
160
161
    }
162
  }
163
}
164
</script>

+ 3 - 0
ebc-middle-platform/src/modules/orientation/orientation.vue

@ -0,0 +1,3 @@
1
<template>
2
  <div>人员定位</div>
3
</template>

+ 42 - 0
ebc-middle-platform/src/modules/system-management/equipment-management.scss

@ -0,0 +1,42 @@
1
.track-container{
2
  width: 97%;
3
  margin: 20px auto;
4
  padding: 20px;
5
  box-sizing: border-box;
6
  .search-container{
7
    width: 100%;
8
    padding: 0 0 20px;
9
    .search-ctn{
10
      width: 100%;
11
      overflow: hidden;
12
      margin: 0;
13
      padding: 0;
14
      position: relative;
15
      display: flex;
16
      justify-content: space-between;
17
      >div{
18
        display: flex; 
19
        margin: 0 20px 16px 0;    
20
        line-height: 2;
21
        .label-content{
22
          display: flex; 
23
          margin: 0 20px 16px 0;    
24
          line-height: 2;
25
        }
26
        .input-rule{
27
          flex: 1;
28
          margin:0 0 0 20px;
29
          .dropdown{
30
            width: 100%
31
          }
32
        }
33
      }
34
      .btns button{
35
        margin: 0 2px;
36
      }
37
    }
38
  }
39
  .table-pager{
40
    margin: 20px auto;
41
  }
42
}

+ 144 - 0
ebc-middle-platform/src/modules/system-management/equipment-management.vue

@ -0,0 +1,144 @@
1
<template>
2
  <div class="track-container">
3
    <div class="search-container">
4
      <div class="search-ctn">
5
        <div>
6
          <div class="label-content">
7
            <div class="label">设备类型:</div>
8
            <div class="input-rule">
9
              <t-select v-model="queryCondition.alarmPerson" width="200" placeholder="请输入...">
10
                <t-option>张三</t-option>
11
                <t-option>李四</t-option>
12
              </t-select>
13
            </div>
14
          </div>
15
          <div class="label-content">
16
            <div class="label">设备名称:</div>
17
            <div class="input-rule">
18
              <t-select v-model="queryCondition.alarmPerson" width="200" placeholder="请输入...">
19
                <t-option>张三</t-option>
20
                <t-option>李四</t-option>
21
              </t-select>
22
            </div>
23
          </div>
24
          <div class="label-content">
25
            <div class="label">设备编号:</div>
26
            <div class="input-rule">
27
              <t-select v-model="queryCondition.alarmPerson" width="200" placeholder="请输入...">
28
                <t-option>张三</t-option>
29
                <t-option>李四</t-option>
30
              </t-select>
31
            </div>
32
          </div>
33
          <div class="btns">
34
            <t-button color="secondary" class="reset-btn" @click="onReset">重置</t-button>
35
            <t-button color="success" icon="search-outline" @click="onSearch">查询</t-button>
36
            <t-button color="secondary" icon="upload-outline" @click="toExport">导出至Excel</t-button>
37
            <t-button color="secondary" icon="delete-outline" @click="toExport">删除</t-button>
38
          </div>
39
        </div>
40
        <div class="btns">
41
          <t-button color="success" icon="upload-outline" @click="onReset">导入</t-button>
42
          <t-button color="success" icon="download-outline" @click="onReset">下载模板</t-button>
43
          <t-button color="success" icon="plus-outline" @click="toExport">新增</t-button>
44
        </div>
45
      </div>
46
    </div>
47
    <div>
48
      <t-table :data="table.data">
49
        <t-table-column prop="name" label="设备名称"></t-table-column>
50
        <t-table-column prop="number" label="设备编号"></t-table-column>
51
        <t-table-column prop="type" label="设备类型"></t-table-column>
52
        <t-table-column prop="long" label="经度"></t-table-column>
53
        <t-table-column prop="lat" label="纬度"></t-table-column>
54
        <t-table-column
55
          fixed="right"
56
          label="操作"
57
          width="120"
58
        >
59
          <template slot-scope="scope">
60
            <a href="javascript:void(0)" size="sm" @click="handleClick(scope.row)">编辑</a>
61
            <span class="mod-line">|</span>
62
            <a href="javascript:void(0)" size="sm" @click="remove(scope.$index)">删除</a>
63
          </template>
64
        </t-table-column>
65
      </t-table>
66
      <t-pager :total="table.pager.total" :current.sync="table.pager.currentPage"
67
               :page-size.sync="table.pager.size"
68
               :sizer-range="[10,20,50]"
69
               class="px-24 pt-16 float-right"
70
               show-elevator show-sizer
71
               @on-size-change="onSizeChange"
72
               @on-change="onPagerChange">
73
      </t-pager>
74
    </div>
75
  </div>
76
</template>
77
<script>
78
import './equipment-management.scss'
79
export default {
80
  data() {
81
    return {
82
      table: {
83
        data: [
84
          {
85
            name: '1#风机',
86
            number: 'FJ0001',
87
            type: '风机',
88
            long: '113.445454',
89
            lat: '23.157919'
90
          },
91
          {
92
            name: '1#风机',
93
            number: 'FJ0001',
94
            type: '风机',
95
            long: '113.445454',
96
            lat: '23.157919'
97
          },
98
          {
99
            name: '1#风机',
100
            number: 'FJ0001',
101
            type: '风机',
102
            long: '113.445454',
103
            lat: '23.157919'
104
          }
105
        ],
106
        pager: {
107
          currentPage: 1,
108
          size: 10,
109
          total: 0
110
        }
111
      },
112
      queryCondition: {
113
        type: '',
114
        alarmPerson: ''
115
      },
116
      rangeDate: ''
117
    }
118
  },
119
  mounted() {
120
    this.table.data = this.table.data.concat(this.table.data)
121
    this.table.pager.total = this.table.data.length
122
  },
123
  methods: {
124
    onChange(value) {
125
      console.log('date change:' + value)
126
    },
127
    onReset() {
128
129
    },
130
    onSearch() {
131
132
    },
133
    toExport() {
134
135
    },
136
    onPagerChange(page) {
137
138
    },
139
    onSizeChange(number) {
140
141
    }
142
  }
143
}
144
</script>

+ 42 - 0
ebc-middle-platform/src/modules/system-management/map-mark.scss

@ -0,0 +1,42 @@
1
.track-container{
2
  width: 97%;
3
  margin: 20px auto;
4
  padding: 20px;
5
  box-sizing: border-box;
6
  .search-container{
7
    width: 100%;
8
    padding: 0 0 20px;
9
    .search-ctn{
10
      width: 100%;
11
      overflow: hidden;
12
      margin: 0;
13
      padding: 0;
14
      position: relative;
15
      display: flex;
16
      justify-content: space-between;
17
      >div{
18
        display: flex; 
19
        margin: 0 20px 16px 0;    
20
        line-height: 2;
21
        .label-content{
22
          display: flex; 
23
          margin: 0 20px 16px 0;    
24
          line-height: 2;
25
        }
26
        .input-rule{
27
          flex: 1;
28
          margin:0 0 0 20px;
29
          .dropdown{
30
            width: 100%
31
          }
32
        }
33
      }
34
      .btns button{
35
        margin: 0 2px;
36
      }
37
    }
38
  }
39
  .table-pager{
40
    margin: 20px auto;
41
  }
42
}

+ 113 - 0
ebc-middle-platform/src/modules/system-management/map-mark.vue

@ -0,0 +1,113 @@
1
<template>
2
  <div class="track-container">
3
    <div class="search-container">
4
      <div class="search-ctn">
5
        <div>
6
          <div class="label-content">
7
            <div class="label">标记名称:</div>
8
            <div class="input-rule">
9
              <t-input v-model="queryCondition.userName" placeholder="请输入..."></t-input>
10
            </div>
11
          </div>
12
          <div class="btns">
13
            <t-button color="secondary" class="reset-btn" @click="onReset">重置</t-button>
14
            <t-button color="success" icon="search-outline" @click="onSearch">查询</t-button>
15
            <t-button color="secondary" icon="upload-outline" @click="toExport">导出至Excel</t-button>
16
          </div>
17
        </div>
18
        <div class="btns">
19
          <t-button color="success" icon="plus-outline" @click="onReset">考勤区域</t-button>
20
          <t-button color="success" icon="plus-outline" @click="onReset">作业区域</t-button>
21
          <t-button color="success" icon="plus-outline" @click="onSearch">电子围栏</t-button>
22
          <t-button color="success" icon="plus-outline" @click="toExport">定点</t-button>
23
        </div>
24
      </div>
25
    </div>
26
    <div>
27
      <t-table :data="table.data">
28
        <t-table-column prop="markName" label="标记名称"></t-table-column>
29
        <t-table-column prop="type" label="类型"></t-table-column>
30
        <t-table-column prop="createTime" label="创建时间"></t-table-column>
31
        <t-table-column
32
          fixed="right"
33
          label="操作"
34
          width="120"
35
        >
36
          <template slot-scope="scope">
37
            <a href="javascript:void(0)" size="sm" @click="handleClick(scope.row)">编辑</a>
38
            <span class="mod-line">|</span>
39
            <a href="javascript:void(0)" size="sm" @click="remove(scope.$index)">删除</a>
40
          </template>
41
        </t-table-column>
42
      </t-table>
43
      <t-pager :total="table.pager.total" :current.sync="table.pager.currentPage"
44
               :page-size.sync="table.pager.size"
45
               :sizer-range="[20,50,100]"
46
               class="px-24 pt-16 float-right"
47
               show-elevator show-sizer
48
               @on-size-change="onSizeChange"
49
               @on-change="onPagerChange">
50
      </t-pager>
51
    </div>
52
  </div>
53
</template>
54
<script>
55
import './map-mark.scss'
56
export default {
57
  data() {
58
    return {
59
      table: {
60
        data: [
61
          {
62
            markName: '考勤区域',
63
            type: '考勤区域',
64
            createTime: '2020.7.10 08:21:43'
65
          },
66
          {
67
            markName: '考勤区域',
68
            type: '考勤区域',
69
            createTime: '2020.7.10 08:21:43'
70
          },
71
          {
72
            markName: '考勤区域',
73
            type: '考勤区域',
74
            createTime: '2020.7.10 08:21:43'
75
          }
76
        ],
77
        pager: {
78
          currentPage: 1,
79
          size: 5,
80
          total: 0
81
        }
82
      },
83
      queryCondition: {
84
        type: '',
85
        alarmPerson: ''
86
      },
87
      rangeDate: ''
88
    }
89
  },
90
  mounted() {
91
  },
92
  methods: {
93
    onChange(value) {
94
      console.log('date change:' + value)
95
    },
96
    onReset() {
97
98
    },
99
    onSearch() {
100
101
    },
102
    toExport() {
103
104
    },
105
    onPagerChange(page) {
106
107
    },
108
    onSizeChange(number) {
109
110
    }
111
  }
112
}
113
</script>

+ 42 - 0
ebc-middle-platform/src/modules/system-management/menu-management.scss

@ -0,0 +1,42 @@
1
.track-container{
2
  width: 97%;
3
  margin: 20px auto;
4
  padding: 20px;
5
  box-sizing: border-box;
6
  .search-container{
7
    width: 100%;
8
    padding: 0 0 20px;
9
    .search-ctn{
10
      width: 100%;
11
      overflow: hidden;
12
      margin: 0;
13
      padding: 0;
14
      position: relative;
15
      display: flex;
16
      justify-content: space-between;
17
      >div{
18
        display: flex; 
19
        margin: 0 20px 16px 0;    
20
        line-height: 2;
21
        .label-content{
22
          display: flex; 
23
          margin: 0 20px 16px 0;    
24
          line-height: 2;
25
        }
26
        .input-rule{
27
          flex: 1;
28
          margin:0 0 0 20px;
29
          .dropdown{
30
            width: 100%
31
          }
32
        }
33
      }
34
      .btns button{
35
        margin: 0 2px;
36
      }
37
    }
38
  }
39
  .table-pager{
40
    margin: 20px auto;
41
  }
42
}

+ 153 - 0
ebc-middle-platform/src/modules/system-management/menu-management.vue

@ -0,0 +1,153 @@
1
<template>
2
  <div class="track-container">
3
    <div class="search-container">
4
      <div class="search-ctn">
5
        <div>
6
          <div class="label-content">
7
            <div class="label">角色名称:</div>
8
            <div class="input-rule">
9
              <t-select v-model="queryCondition.alarmPerson" width="200" placeholder="请输入...">
10
                <t-option>张三</t-option>
11
                <t-option>李四</t-option>
12
              </t-select>
13
            </div>
14
          </div>
15
          <div class="label-content">
16
            <div class="label">角色编码:</div>
17
            <div class="input-rule">
18
              <t-select v-model="queryCondition.alarmPerson" width="200" placeholder="请输入...">
19
                <t-option>张三</t-option>
20
                <t-option>李四</t-option>
21
              </t-select>
22
            </div>
23
          </div>
24
          <div class="label-content">
25
            <div class="label">角色类型:</div>
26
            <div class="input-rule">
27
              <t-select v-model="queryCondition.alarmPerson" width="200" placeholder="请输入...">
28
                <t-option>张三</t-option>
29
                <t-option>李四</t-option>
30
              </t-select>
31
            </div>
32
          </div>
33
          <div class="btns">
34
            <t-button color="secondary" class="reset-btn" @click="onReset">重置</t-button>
35
            <t-button color="success" icon="search-outline" @click="onSearch">查询</t-button>
36
            <t-button color="secondary" icon="delete-outline" @click="toExport">删除</t-button>
37
          </div>
38
        </div>
39
        <div class="btns">
40
          <t-button color="success" icon="plus-outline" @click="toExport">新增</t-button>
41
        </div>
42
      </div>
43
    </div>
44
    <div>
45
      <t-table :data="table.data" :default-sort="{prop: 'sort'}">
46
        <t-table-column prop="name" label="菜单名称"></t-table-column>
47
        <t-table-column prop="number" label="菜单编码"></t-table-column>
48
        <t-table-column prop="address" label="菜单地址"></t-table-column>
49
        <t-table-column prop="icon" label="图标">
50
          <template slot-scope="scope">
51
            <t-icon :icon="scope.row.icon"></t-icon>
52
          </template>
53
        </t-table-column>
54
        <t-table-column prop="sort" label="排序"></t-table-column>
55
        <t-table-column prop="state" label="状态">
56
          <template slot-scope="scope">
57
            <t-switch v-model="scope.row.state" size="xs" rounded></t-switch>
58
          </template>
59
        </t-table-column>
60
        <t-table-column
61
          fixed="right"
62
          label="操作"
63
          width="120"
64
        >
65
          <template slot-scope="scope">
66
            <a href="javascript:void(0)" size="sm" @click="handleClick(scope.row)">编辑</a>
67
            <span class="mod-line">|</span>
68
            <a href="javascript:void(0)" size="sm" @click="remove(scope.$index)">删除</a>
69
          </template>
70
        </t-table-column>
71
      </t-table>
72
      <t-pager :total="table.pager.total" :current.sync="table.pager.currentPage"
73
               :page-size.sync="table.pager.size"
74
               :sizer-range="[10,20,50]"
75
               class="px-24 pt-16 float-right"
76
               show-elevator show-sizer
77
               @on-size-change="onSizeChange"
78
               @on-change="onPagerChange">
79
      </t-pager>
80
    </div>
81
  </div>
82
</template>
83
<script>
84
import './menu-management.scss'
85
export default {
86
  data() {
87
    return {
88
      table: {
89
        data: [
90
          {
91
            name: '地图监控',
92
            number: 'mapMonitoring',
93
            address: '/abd/daadd/ddddd',
94
            icon: 'heart-outline',
95
            sort: 1,
96
            state: true
97
          },
98
          {
99
            name: '地图监控',
100
            number: 'mapMonitoring',
101
            address: '/abd/daadd/ddddd',
102
            icon: '',
103
            sort: 2,
104
            state: false
105
          },
106
          {
107
            name: '地图监控',
108
            number: 'mapMonitoring',
109
            address: '/abd/daadd/ddddd',
110
            icon: '',
111
            sort: 0,
112
            state: false
113
          }
114
        ],
115
        pager: {
116
          currentPage: 1,
117
          size: 10,
118
          total: 0
119
        }
120
      },
121
      queryCondition: {
122
        type: '',
123
        alarmPerson: ''
124
      },
125
      rangeDate: ''
126
    }
127
  },
128
  mounted() {
129
    this.table.data = this.table.data.concat(this.table.data)
130
    this.table.pager.total = this.table.data.length
131
  },
132
  methods: {
133
    onChange(value) {
134
      console.log('date change:' + value)
135
    },
136
    onReset() {
137
138
    },
139
    onSearch() {
140
141
    },
142
    toExport() {
143
144
    },
145
    onPagerChange(page) {
146
147
    },
148
    onSizeChange(number) {
149
150
    }
151
  }
152
}
153
</script>

+ 42 - 0
ebc-middle-platform/src/modules/system-management/role-management.scss

@ -0,0 +1,42 @@
1
.track-container{
2
  width: 97%;
3
  margin: 20px auto;
4
  padding: 20px;
5
  box-sizing: border-box;
6
  .search-container{
7
    width: 100%;
8
    padding: 0 0 20px;
9
    .search-ctn{
10
      width: 100%;
11
      overflow: hidden;
12
      margin: 0;
13
      padding: 0;
14
      position: relative;
15
      display: flex;
16
      justify-content: space-between;
17
      >div{
18
        display: flex; 
19
        margin: 0 20px 16px 0;    
20
        line-height: 2;
21
        .label-content{
22
          display: flex; 
23
          margin: 0 20px 16px 0;    
24
          line-height: 2;
25
        }
26
        .input-rule{
27
          flex: 1;
28
          margin:0 0 0 20px;
29
          .dropdown{
30
            width: 100%
31
          }
32
        }
33
      }
34
      .btns button{
35
        margin: 0 2px;
36
      }
37
    }
38
  }
39
  .table-pager{
40
    margin: 20px auto;
41
  }
42
}

+ 133 - 0
ebc-middle-platform/src/modules/system-management/role-management.vue

@ -0,0 +1,133 @@
1
<template>
2
  <div class="track-container">
3
    <div class="search-container">
4
      <div class="search-ctn">
5
        <div>
6
          <div class="label-content">
7
            <div class="label">角色名称:</div>
8
            <div class="input-rule">
9
              <t-select v-model="queryCondition.alarmPerson" width="200" placeholder="请输入...">
10
                <t-option>张三</t-option>
11
                <t-option>李四</t-option>
12
              </t-select>
13
            </div>
14
          </div>
15
          <div class="label-content">
16
            <div class="label">角色编码:</div>
17
            <div class="input-rule">
18
              <t-select v-model="queryCondition.alarmPerson" width="200" placeholder="请输入...">
19
                <t-option>张三</t-option>
20
                <t-option>李四</t-option>
21
              </t-select>
22
            </div>
23
          </div>
24
          <div class="label-content">
25
            <div class="label">角色类型:</div>
26
            <div class="input-rule">
27
              <t-select v-model="queryCondition.alarmPerson" width="200" placeholder="请输入...">
28
                <t-option>张三</t-option>
29
                <t-option>李四</t-option>
30
              </t-select>
31
            </div>
32
          </div>
33
          <div class="btns">
34
            <t-button color="secondary" class="reset-btn" @click="onReset">重置</t-button>
35
            <t-button color="success" icon="search-outline" @click="onSearch">查询</t-button>
36
            <t-button color="secondary" icon="delete-outline" @click="toExport">删除</t-button>
37
          </div>
38
        </div>
39
        <div class="btns">
40
          <t-button color="success" icon="plus-outline" @click="toExport">新增</t-button>
41
        </div>
42
      </div>
43
    </div>
44
    <div>
45
      <t-table :data="table.data">
46
        <t-table-column prop="name" label="角色名称"></t-table-column>
47
        <t-table-column prop="number" label="角色编码"></t-table-column>
48
        <t-table-column prop="type" label="角色类型"></t-table-column>
49
        <t-table-column
50
          fixed="right"
51
          label="操作"
52
          width="120"
53
        >
54
          <template slot-scope="scope">
55
            <a href="javascript:void(0)" size="sm" @click="handleClick(scope.row)">编辑</a>
56
            <span class="mod-line">|</span>
57
            <a href="javascript:void(0)" size="sm" @click="remove(scope.$index)">删除</a>
58
          </template>
59
        </t-table-column>
60
      </t-table>
61
      <t-pager :total="table.pager.total" :current.sync="table.pager.currentPage"
62
               :page-size.sync="table.pager.size"
63
               :sizer-range="[10,20,50]"
64
               class="px-24 pt-16 float-right"
65
               show-elevator show-sizer
66
               @on-size-change="onSizeChange"
67
               @on-change="onPagerChange">
68
      </t-pager>
69
    </div>
70
  </div>
71
</template>
72
<script>
73
import './role-management.scss'
74
export default {
75
  data() {
76
    return {
77
      table: {
78
        data: [
79
          {
80
            name: '超级管理员',
81
            number: 'superadmin',
82
            type: '管理者'
83
          },
84
          {
85
            name: '超级管理员',
86
            number: 'superadmin',
87
            type: '管理者'
88
          },
89
          {
90
            name: '超级管理员',
91
            number: 'superadmin',
92
            type: '管理者'
93
          }
94
        ],
95
        pager: {
96
          currentPage: 1,
97
          size: 10,
98
          total: 0
99
        }
100
      },
101
      queryCondition: {
102
        type: '',
103
        alarmPerson: ''
104
      },
105
      rangeDate: ''
106
    }
107
  },
108
  mounted() {
109
    this.table.data = this.table.data.concat(this.table.data)
110
    this.table.pager.total = this.table.data.length
111
  },
112
  methods: {
113
    onChange(value) {
114
      console.log('date change:' + value)
115
    },
116
    onReset() {
117
118
    },
119
    onSearch() {
120
121
    },
122
    toExport() {
123
124
    },
125
    onPagerChange(page) {
126
127
    },
128
    onSizeChange(number) {
129
130
    }
131
  }
132
}
133
</script>

+ 86 - 0
ebc-middle-platform/src/modules/system-management/terminal-management.scss

@ -0,0 +1,86 @@
1
.teminal-container{
2
  width: 97%;
3
  margin: 20px auto;
4
  padding: 20px;
5
  box-sizing: border-box;
6
  .search-container{
7
    width: 100%;
8
    padding: 0 0 20px;
9
    .search-ctn{
10
      width: 100%;
11
      overflow: hidden;
12
      margin: 0;
13
      padding: 0;
14
      display: flex;
15
      position: relative;
16
      >div{
17
        display: flex; 
18
        margin: 0 20px 16px 0;    
19
        line-height: 2;
20
        .input-rule{
21
          flex: 1;
22
          margin:0 0 0 20px;
23
          .dropdown{
24
            width: 100%
25
          }
26
        }
27
      }
28
      .btns button{
29
        margin: 0 2px;
30
      }
31
      .active{
32
        color: #3BC541;
33
        border-color: #3BC541;
34
      }
35
      .mod-btns{
36
        position: absolute;
37
        right: 0;
38
        top: 0;
39
        width: 250px;
40
        text-align: right;
41
        cursor: pointer;
42
        overflow: hidden;
43
        .reset-btn{
44
          float: right;
45
          margin: 0 10px;
46
        }
47
        .fold-btn{
48
          float: right;
49
          cursor: pointer;
50
          height: 32px;
51
          line-height: 32px;
52
          i{
53
            position: relative;
54
          }
55
        }
56
        .btn-primary{
57
          float: right;
58
        }
59
      }
60
    }
61
  }
62
  .table-pager{
63
    margin: 20px auto;
64
  }
65
  .sos{
66
    color: #F5222D;
67
    width: 50px;
68
    text-align: center;
69
    border-radius: 5px;
70
    background-color: #FEE9EA;
71
  }
72
  .unline{
73
    color: #000000;
74
    width: 50px;
75
    text-align: center;
76
    border-radius: 5px;
77
    background-color: #F3F3F3;
78
  }
79
  .inline{
80
    color: #40C546;
81
    width: 50px;
82
    text-align: center;
83
    border-radius: 5px;
84
    background-color: #E8F8E8;
85
  }
86
}

+ 153 - 0
ebc-middle-platform/src/modules/system-management/terminal-management.vue

@ -0,0 +1,153 @@
1
<template>
2
  <div class="teminal-container">
3
    <div class="search-container">
4
      <div class="search-ctn">
5
        <div>
6
          <div class="input-rule">
7
            <t-button-group>
8
              <t-button :class="relevanceType.all?'active':''" color="secondary" @click="changeType('all')">全部</t-button>
9
              <t-button :class="relevanceType.relevance?'active':''" color="secondary" @click="changeType('relevance')">关联用户</t-button>
10
              <t-button :class="relevanceType.unrelevance?'active':''" color="secondary" @click="changeType('unrelevance')">未关联用户</t-button>
11
            </t-button-group>
12
          </div>
13
        </div>
14
        <div>
15
          <div class="label">终端编号:</div>
16
          <div class="input-rule">
17
            <t-select v-model="queryCondition.alarmPerson" placeholder="请输入终端编号">
18
              <t-option>ZDBH0001</t-option>
19
              <t-option>ZDBH0002</t-option>
20
            </t-select>
21
          </div>
22
        </div>
23
        <div class="btns">
24
          <t-button color="secondary" class="reset-btn" @click="onReset">重置</t-button>
25
          <t-button color="success" icon="search-outline" @click="onSearch">查询</t-button>
26
          <t-button color="secondary" icon="upload-outline" @click="toExport">导出至Excel</t-button>
27
          <t-button color="secondary" icon="unlock-outline" @click="toExport">解绑用户</t-button>
28
          <t-button color="secondary" icon="delete-outline" @click="toExport">删除</t-button>
29
        </div>
30
      </div>
31
    </div>
32
    <div>
33
      <t-table :data="table.data">
34
        <t-table-column type="selection" width="70"></t-table-column>
35
        <t-table-column prop="status" label="通信状态">
36
          <template slot-scope="scope">
37
            <div v-if="scope.row.status==1" class="sos">
38
              <span >SOS</span>
39
            </div>
40
            <div v-if="scope.row.status==2" class="unline">
41
              <span>离线</span>
42
            </div>
43
            <div v-if="scope.row.status==3" class="inline">
44
              <span>在线</span>
45
            </div>
46
          </template>
47
        </t-table-column>
48
        <t-table-column prop="number" label="终端编号"></t-table-column>
49
        <t-table-column prop="relevanceUser" label="关联用户"></t-table-column>
50
        <t-table-column prop="finalPositioningTime" label="最后定位时间"></t-table-column>
51
        <t-table-column prop="remark" label="备注"></t-table-column>
52
        <t-table-column
53
          fixed="right"
54
          label="操作"
55
          width="220"
56
        >
57
          <template slot-scope="scope">
58
            <a href="javascript:void(0)" size="sm" @click="handleClick(scope.row)">关联用户</a>
59
            <a href="javascript:void(0)" size="sm" @click="remove(scope.$index)">解绑用户</a>
60
            <a href="javascript:void(0)" size="sm" @click="handleClick(scope.row)">编辑</a>
61
            <a href="javascript:void(0)" size="sm" @click="remove(scope.$index)">删除</a>
62
          </template>
63
        </t-table-column>
64
      </t-table>
65
      <t-pager :total="table.pager.total" :current.sync="table.pager.currentPage"
66
               :page-size.sync="table.pager.size"
67
               :sizer-range="[10,20,50]"
68
               class="px-24 pt-16 float-right"
69
               show-elevator show-sizer
70
               @on-size-change="onSizeChange"
71
               @on-change="onPagerChange">
72
      </t-pager>
73
    </div>
74
  </div>
75
</template>
76
<script>
77
import './terminal-management.scss'
78
export default {
79
  data() {
80
    return {
81
      relevanceType: {
82
        all: true,
83
        relevance: false,
84
        unrelevance: false
85
      },
86
      table: {
87
        data: [
88
          {
89
            status: 1,
90
            number: 'ZDBH0001',
91
            relevanceUser: '张三',
92
            finalPositioningTime: '2020.7.10 08:21:43',
93
            remark: '无'
94
          },
95
          {
96
            status: 2,
97
            number: 'ZDBH0001',
98
            relevanceUser: '张三',
99
            finalPositioningTime: '2020.7.10 08:21:43',
100
            remark: '无'
101
          },
102
          {
103
            status: 3,
104
            number: 'ZDBH0001',
105
            relevanceUser: '张三',
106
            finalPositioningTime: '2020.7.10 08:21:43',
107
            remark: '无'
108
          }
109
        ],
110
        pager: {
111
          currentPage: 1,
112
          size: 10,
113
          total: 0
114
        }
115
      },
116
      queryCondition: {
117
        type: '',
118
        alarmPerson: ''
119
      },
120
      rangeDate: ''
121
    }
122
  },
123
  mounted() {
124
    this.table.data = this.table.data.concat(this.table.data)
125
    this.table.pager.total = this.table.data.length
126
  },
127
  methods: {
128
    changeType(type) {
129
      Object.keys(this.relevanceType).forEach((value, key) => {
130
        this.relevanceType[value] = value === type
131
      })
132
    },
133
    onChange(value) {
134
      console.log('date change:' + value)
135
    },
136
    onReset() {
137
138
    },
139
    onSearch() {
140
141
    },
142
    toExport() {
143
144
    },
145
    onPagerChange(page) {
146
147
    },
148
    onSizeChange(number) {
149
150
    }
151
  }
152
}
153
</script>

+ 42 - 0
ebc-middle-platform/src/modules/system-management/user-management.scss

@ -0,0 +1,42 @@
1
.track-container{
2
  width: 97%;
3
  margin: 20px auto;
4
  padding: 20px;
5
  box-sizing: border-box;
6
  .search-container{
7
    width: 100%;
8
    padding: 0 0 20px;
9
    .search-ctn{
10
      width: 100%;
11
      overflow: hidden;
12
      margin: 0;
13
      padding: 0;
14
      position: relative;
15
      display: flex;
16
      justify-content: space-between;
17
      >div{
18
        display: flex; 
19
        margin: 0 20px 16px 0;    
20
        line-height: 2;
21
        .label-content{
22
          display: flex; 
23
          margin: 0 20px 16px 0;    
24
          line-height: 2;
25
        }
26
        .input-rule{
27
          flex: 1;
28
          margin:0 0 0 20px;
29
          .dropdown{
30
            width: 100%
31
          }
32
        }
33
      }
34
      .btns button{
35
        margin: 0 2px;
36
      }
37
    }
38
  }
39
  .table-pager{
40
    margin: 20px auto;
41
  }
42
}

+ 156 - 0
ebc-middle-platform/src/modules/system-management/user-management.vue

@ -0,0 +1,156 @@
1
<template>
2
  <div class="track-container">
3
    <div class="search-container">
4
      <div class="search-ctn">
5
        <div>
6
          <div class="label-content">
7
            <div class="label">部门:</div>
8
            <div class="input-rule">
9
              <t-select v-model="queryCondition.alarmPerson" width="200" placeholder="请输入...">
10
                <t-option>张三</t-option>
11
                <t-option>李四</t-option>
12
              </t-select>
13
            </div>
14
          </div>
15
          <div class="label-content">
16
            <div class="label">姓名:</div>
17
            <div class="input-rule">
18
              <t-select v-model="queryCondition.alarmPerson" width="200" placeholder="请输入...">
19
                <t-option>张三</t-option>
20
                <t-option>李四</t-option>
21
              </t-select>
22
            </div>
23
          </div>
24
          <div class="label-content">
25
            <div class="label">员工编号:</div>
26
            <div class="input-rule">
27
              <t-select v-model="queryCondition.alarmPerson" width="200" placeholder="请输入...">
28
                <t-option>张三</t-option>
29
                <t-option>李四</t-option>
30
              </t-select>
31
            </div>
32
          </div>
33
          <div class="btns">
34
            <t-button color="secondary" class="reset-btn" @click="onReset">重置</t-button>
35
            <t-button color="success" icon="search-outline" @click="onSearch">查询</t-button>
36
            <t-button color="secondary" icon="upload-outline" @click="toExport">导出至Excel</t-button>
37
            <t-button color="secondary" icon="delete-outline" @click="toExport">删除</t-button>
38
          </div>
39
        </div>
40
        <div class="btns">
41
          <t-button color="success" icon="upload-outline" @click="onReset">导入</t-button>
42
          <t-button color="success" icon="download-outline" @click="onReset">下载模板</t-button>
43
          <t-button color="success" icon="plus-outline" @click="toExport">新增</t-button>
44
        </div>
45
      </div>
46
    </div>
47
    <div>
48
      <t-table :data="table.data">
49
        <t-table-column prop="name" label="姓名"></t-table-column>
50
        <t-table-column prop="number" label="员工编号"></t-table-column>
51
        <t-table-column prop="relevance" label="关联终端"></t-table-column>
52
        <t-table-column prop="department" label="部门"></t-table-column>
53
        <t-table-column prop="job" label="职务"></t-table-column>
54
        <t-table-column prop="age" label="年龄"></t-table-column>
55
        <t-table-column prop="phone" label="手机"></t-table-column>
56
        <t-table-column
57
          fixed="right"
58
          label="操作"
59
          width="240"
60
        >
61
          <template slot-scope="scope">
62
            <a href="javascript:void(0)" size="sm" @click="handleClick(scope.row)">关联终端</a>
63
            <span class="mod-line">|</span>
64
            <a href="javascript:void(0)" size="sm" @click="remove(scope.$index)">解绑终端</a>
65
            <span class="mod-line">|</span>
66
            <a href="javascript:void(0)" size="sm" @click="handleClick(scope.row)">编辑</a>
67
            <span class="mod-line">|</span>
68
            <a href="javascript:void(0)" size="sm" @click="remove(scope.$index)">删除</a>
69
          </template>
70
        </t-table-column>
71
      </t-table>
72
      <t-pager :total="table.pager.total" :current.sync="table.pager.currentPage"
73
               :page-size.sync="table.pager.size"
74
               :sizer-range="[10,20,50]"
75
               class="px-24 pt-16 float-right"
76
               show-elevator show-sizer
77
               @on-size-change="onSizeChange"
78
               @on-change="onPagerChange">
79
      </t-pager>
80
    </div>
81
  </div>
82
</template>
83
<script>
84
import './user-management.scss'
85
export default {
86
  data() {
87
    return {
88
      table: {
89
        data: [
90
          {
91
            name: '张三',
92
            number: '108373',
93
            relevance: 'ZDBH0001',
94
            department: '设备管理处',
95
            job: '运维人员',
96
            age: 24,
97
            phone: '18888888888'
98
          },
99
          {
100
            name: '张三',
101
            number: '108373',
102
            relevance: 'ZDBH0001',
103
            department: '设备管理处',
104
            job: '运维人员',
105
            age: 24,
106
            phone: '18888888888'
107
          },
108
          {
109
            name: '张三',
110
            number: '108373',
111
            relevance: 'ZDBH0001',
112
            department: '设备管理处',
113
            job: '运维人员',
114
            age: 24,
115
            phone: '18888888888'
116
          }
117
        ],
118
        pager: {
119
          currentPage: 1,
120
          size: 10,
121
          total: 0
122
        }
123
      },
124
      queryCondition: {
125
        type: '',
126
        alarmPerson: ''
127
      },
128
      rangeDate: ''
129
    }
130
  },
131
  mounted() {
132
    this.table.data = this.table.data.concat(this.table.data)
133
    this.table.pager.total = this.table.data.length
134
  },
135
  methods: {
136
    onChange(value) {
137
      console.log('date change:' + value)
138
    },
139
    onReset() {
140
141
    },
142
    onSearch() {
143
144
    },
145
    toExport() {
146
147
    },
148
    onPagerChange(page) {
149
150
    },
151
    onSizeChange(number) {
152
153
    }
154
  }
155
}
156
</script>

+ 3 - 2
ebc-middle-platform/src/modules/tags-nav/store.js

@ -2,7 +2,7 @@ import {
2 2
  routeEqual
3 3
} from '@/util'
4 4
import router from '@/router'
5
const homeName = 'DashboardAnalysis'
5
const homeName = 'orientation'
6 6
7 7
const closePage = (state, route) => {
8 8
  const nextRoute = getNextRoute(state.tagNavList, route)
@ -45,7 +45,7 @@ const getTagNavListFromLocalstorage = () => {
45 45
 * @param {Array} routers 路由列表数组
46 46
 * @description 用于找到路由列表中name为DashboardAnalysis的对象
47 47
 */
48
const getHomeRoute = (routers, homeName = 'DashboardAnalysis') => {
48
const getHomeRoute = (routers, homeName = 'orientation') => {
49 49
  let i = -1
50 50
  let len = routers.length
51 51
  let homeRoute = {}
@ -58,6 +58,7 @@ const getHomeRoute = (routers, homeName = 'DashboardAnalysis') => {
58 58
      if (item.name === homeName) homeRoute = item
59 59
    }
60 60
  }
61
  console.log(homeRoute)
61 62
  return homeRoute
62 63
}
63 64

+ 1 - 1
ebc-middle-platform/src/router.js

@ -40,7 +40,7 @@ router.beforeEach((to, from, next) => {
40 40
  // router.app.$store.commit('setTitle', to.meta.title)
41 41
  if (to.meta.ignoreAuth === true) {
42 42
    if (isLogged === true && to.path === '/login') {
43
      router.replace({ name: 'DashboardAnalysis' })
43
      router.replace({ name: 'orientation' })
44 44
    } else {
45 45
      next()
46 46
    }

+ 141 - 239
ebc-middle-platform/src/routes.js

@ -108,346 +108,248 @@ export default [
108 108
      import(
109 109
        /* webpackChunkName: "welcome" */ './modules/layouts/BasicLayout.vue'
110 110
      ),
111
    redirect: '/dashboard/analysis',
111
    redirect: '/orientation',
112 112
    meta: { title: '首页' },
113 113
    children: [
114
      // dashboard
114
      // 报警救援
115 115
      {
116
        path: '/dashboard',
117
        name: 'dashboard',
116
        path: '/orientation',
118 117
        component: () =>
119 118
          import(
120
            /* webpackChunkName: "welcome" */ './modules/layouts/RouteView.vue'
119
            /* webpackChunkName: "welcome" */ '@/modules/orientation/orientation.vue'
121 120
          ),
122
        redirect: '/dashboard/analysis',
123
        meta: { title: 'Dashboard', icon: 'dashboard-outline' },
124
        children: [
125
          {
126
            path: '/dashboard/analysis',
127
            name: 'DashboardAnalysis',
128
            component: () =>
129
              import(
130
                /* webpackChunkName: "dashboard" */ './modules/ootb/dashboard/analysis.vue'
131
              ),
132
            meta: { title: '分析页', hiddenHeaderContent: true }
133
          },
134
          {
135
            path: '/dashboard/monitor',
136
            name: 'DashboardMonitor',
137
            component: () =>
138
              import(
139
                /* webpackChunkName: "dashboard" */ './modules/ootb/dashboard/monitor.vue'
140
              ),
141
            meta: { title: '监控页', hiddenHeaderContent: true }
142
          },
143
          {
144
            path: '/dashboard/workplace',
145
            name: 'DashboardWorkplace',
146
            component: () =>
147
              import(
148
                /* webpackChunkName: "dashboard" */ './modules/ootb/dashboard/workplace.vue'
149
              ),
150
            meta: { title: '工作台', hiddenHeaderContent: true }
151
          }
152
        ]
121
        name: 'orientation',
122
        meta: { title: '人员定位', keepAlive: true, icon: 'heart-outline', hiddenHeaderContent: true }
153 123
      },
154
      // forms
124
      // 报警救援
155 125
      {
156
        path: '/form',
157
        name: 'form',
126
        path: '/call-help',
158 127
        component: () =>
159 128
          import(
160
            /* webpackChunkName: "form" */ './modules/layouts/RouteView.vue'
129
            /* webpackChunkName: "call-help" */ '@/modules/layouts/RouteView.vue'
161 130
          ),
162
        redirect: '/form/basic-form',
163
        meta: { title: '表单页', icon: 'edit-square-outline' },
131
        name: 'callHelp',
132
        meta: { title: '报警救援', icon: 'heart-outline' },
133
        redirect: '/call-help/current',
164 134
        children: [
165 135
          {
166
            path: '/form/basic-form',
167
            name: 'BasicForm',
168
            component: () =>
169
              import(
170
                /* webpackChunkName: "form" */ './modules/ootb/form/basic-form.vue'
171
              ),
172
            meta: { title: '基础表单', keepAlive: true, desc: '表单页用于向用户收集或验证信息,基础表单常见于数据项较少的表单场景。' }
173
          },
174
          {
175
            path: '/form/step-form',
176
            name: 'StepForm',
136
            path: '/call-help/current',
137
            name: 'CallHelpOne',
177 138
            component: () =>
178 139
              import(
179
                /* webpackChunkName: "form" */ './modules/ootb/form/step-form.vue'
140
                /* webpackChunkName: "call-help" */ '@/modules/call-help/current.vue'
180 141
              ),
181
            meta: { title: '分步表单', keepAlive: true, desc: '将一个冗长或用户不熟悉的表单任务分成多个步骤,指导用户完成。' }
142
            meta: {
143
              title: '实时报警',
144
              hiddenHeaderContent: true,
145
              keepAlive: true
146
            }
182 147
          },
183 148
          {
184
            path: '/form/advanced-form',
185
            name: 'AtepForm',
149
            path: '/call-help/history',
150
            name: 'CallHelpTwo',
186 151
            component: () =>
187 152
              import(
188
                /* webpackChunkName: "form" */ './modules/ootb/form/advanced-form.vue'
153
                /* webpackChunkName: "call-help" */ '@/modules/call-help/history.vue'
189 154
              ),
190
            meta: { title: '高级表单', keepAlive: true, desc: '将一个冗长或用户不熟悉的表单任务分成多个步骤,指导用户完成。' }
155
            meta: {
156
              title: '历史报警',
157
              hiddenHeaderContent: true,
158
              keepAlive: true
159
            }
191 160
          }
192 161
        ]
193 162
      },
194
      // list
163
      // 考勤管理
195 164
      {
196
        path: '/list',
197
        name: 'list',
165
        path: '/attendance',
198 166
        component: () =>
199 167
          import(
200
            /* webpackChunkName: "welcome" */ './modules/layouts/RouteView.vue'
168
            /* webpackChunkName: "attendance" */ '@/modules/layouts/RouteView.vue'
201 169
          ),
202
        redirect: '/list/table-list',
203
        meta: { title: '列表页', icon: 'file-document-outline' },
170
        name: 'attendance',
171
        meta: { title: '报警救援', icon: 'heart-outline' },
172
        redirect: '/attendance/attendance',
204 173
        children: [
205 174
          {
206
            path: '/list/table-list',
207
            name: 'TableList',
175
            path: '/attendance/attendance',
176
            name: 'attendanceWork',
208 177
            component: () =>
209 178
              import(
210
                /* webpackChunkName: "dashboard" */ './modules/ootb/list/table.vue'
179
                /* webpackChunkName: "attendance" */ '@/modules/attendance/attendance.vue'
211 180
              ),
212
            meta: { title: '查询表格' }
181
            meta: {
182
              title: '作业考勤',
183
              hiddenHeaderContent: true,
184
              keepAlive: true
185
            }
213 186
          },
214 187
          {
215
            path: '/list/basic-list',
216
            name: 'BasicList',
217
            // component: () => import(/* webpackChunkName: "dashboard" */ './modules/ootb/dashboard/analysis.vue'),
188
            path: '/attendance/track',
189
            name: 'track',
218 190
            component: () =>
219 191
              import(
220
                /* webpackChunkName: 'basic-list' */ '@/modules/ootb/list/basic.vue'
192
                /* webpackChunkName: "attendance" */ '@/modules/attendance/track.vue'
221 193
              ),
222
            meta: { title: '标准列表' }
223
          },
224
          {
225
            path: '/list/card-list',
226
            name: 'CardList',
227
            component: () => import(/* webpackChunkName: "dashboard" */ './modules/ootb/list/card-list.vue'),
228
            meta: { title: '卡片列表' }
229
          },
230
          {
231
            path: '/list/search',
232
            name: 'SearchList',
233
            // component: () => import('@/views/list/search/SearchLayout'),
234
            redirect: '/list/search/article',
235
            meta: { title: '搜索列表', permission: ['table'] },
236
            children: [
237
              {
238
                path: '/list/search/article',
239
                name: 'SearchArticles',
240
                // component: () => import('../views/list/TableList'),
241
                meta: { title: '搜索列表(文章)', permission: ['table'] }
242
              },
243
              {
244
                path: '/list/search/project',
245
                name: 'SearchProjects',
246
                // component: () => import('../views/list/TableList'),
247
                meta: { title: '搜索列表(项目)', permission: ['table'] }
248
              },
249
              {
250
                path: '/list/search/application',
251
                name: 'SearchApplications',
252
                // component: () => import('../views/list/TableList'),
253
                meta: { title: '搜索列表(应用)', permission: ['table'] }
254
              }
255
            ]
256
          }
257
        ]
258
      },
259
      // profile
260
      {
261
        path: '/profile',
262
        name: 'profile',
263
        component: () =>
264
          import(
265
            /* webpackChunkName: "profile" */ '@/modules/layouts/RouteView.vue'
266
          ),
267
        redirect: '/profile/basic',
268
        meta: { title: '详情页', icon: 'database-outline' },
269
        children: [
270
          {
271
            path: '/profile/basic',
272
            name: 'ProfileBasic',
273
            component: () => import('@/modules/ootb/detail/basic.vue'),
274
            meta: { title: '基础详情页' }
275
          },
276
          {
277
            path: '/profile/advanced',
278
            name: 'ProfileAdvanced',
279
            component: () => import('@/modules/ootb/detail/senior.vue'),
280
            meta: { title: '高级详情页', hiddenHeaderTitle: true }
194
            meta: {
195
              title: '轨迹分析',
196
              hiddenHeaderContent: true,
197
              keepAlive: true
198
            }
281 199
          }
282 200
        ]
283 201
      },
284
      // result
202
      // 系统管理
285 203
      {
286
        path: '/result',
287
        name: 'result',
204
        path: '/system-management',
288 205
        component: () =>
289 206
          import(
290
            /* webpackChunkName: "result" */ '@/modules/layouts/RouteView.vue'
207
            /* webpackChunkName: "system-management" */ '@/modules/layouts/RouteView.vue'
291 208
          ),
292
        // component: PageView,
293
        redirect: '/result/success',
294
        meta: { title: '结果页', icon: 'down-circle-outline' },
209
        name: 'systemManagement',
210
        meta: { title: '系统管理', icon: 'heart-outline' },
211
        redirect: '/system-management/terminal-management',
295 212
        children: [
296 213
          {
297
            path: '/result/success',
298
            name: 'ResultSuccess',
214
            path: '/system-management/terminal-management',
215
            name: 'terminalManagement',
299 216
            component: () =>
300 217
              import(
301
                /* webpackChunkName: "result" */ '@/modules/ootb/result/success.vue'
218
                /* webpackChunkName: "system-management" */ '@/modules/system-management/terminal-management.vue'
302 219
              ),
303
            meta: { title: '成功', hiddenHeaderContent: true }
220
            meta: {
221
              title: '终端管理',
222
              hiddenHeaderContent: true,
223
              keepAlive: true
224
            }
304 225
          },
305 226
          {
306
            path: '/result/fail',
307
            name: 'ResultFail',
227
            path: '/system-management/map-mark',
228
            name: 'mapMark',
308 229
            component: () =>
309 230
              import(
310
                /* webpackChunkName: "result" */ '@/modules/ootb/result/fail.vue'
231
                /* webpackChunkName: "system-management" */ '@/modules/system-management/map-mark.vue'
311 232
              ),
312
            meta: { title: '失败', hiddenHeaderContent: true }
313
          }
314
        ]
315
      },
316
      // Exception
317
      {
318
        path: '/exception',
319
        name: 'exception',
320
        component: () =>
321
          import(
322
            /* webpackChunkName: "welcome" */ './modules/layouts/RouteView.vue'
323
          ),
324
        redirect: '/exception/404',
325
        meta: { title: '异常页', icon: 'alert-outline' },
326
        children: [
233
            meta: {
234
              title: '地图标记',
235
              hiddenHeaderContent: true,
236
              keepAlive: true
237
            }
238
          },
327 239
          {
328
            path: '/exception/403',
329
            name: 'Exception403',
240
            path: '/system-management/equipment-management',
241
            name: 'equipmentManagement',
330 242
            component: () =>
331 243
              import(
332
                /* webpackChunkName: "fail" */ './modules/ootb/exception/403.vue'
244
                /* webpackChunkName: "system-management" */ '@/modules/system-management/equipment-management.vue'
333 245
              ),
334
            meta: { title: '403', hiddenHeaderContent: true }
246
            meta: {
247
              title: '设备管理',
248
              hiddenHeaderContent: true,
249
              keepAlive: true
250
            }
335 251
          },
336 252
          {
337
            path: '/exception/404',
338
            name: 'Exception404',
253
            path: '/system-management/user-management',
254
            name: 'userManagement',
339 255
            component: () =>
340 256
              import(
341
                /* webpackChunkName: "fail" */ './modules/ootb/exception/404.vue'
257
                /* webpackChunkName: "system-management" */ '@/modules/system-management/user-management.vue'
342 258
              ),
343
            meta: { title: '404', hiddenHeaderContent: true }
259
            meta: {
260
              title: '用户管理',
261
              hiddenHeaderContent: true,
262
              keepAlive: true
263
            }
344 264
          },
345 265
          {
346
            path: '/exception/500',
347
            name: 'Exception500',
266
            path: '/system-management/role-management',
267
            name: 'roleManagement',
348 268
            component: () =>
349 269
              import(
350
                /* webpackChunkName: "fail" */ './modules/ootb/exception/500.vue'
270
                /* webpackChunkName: "system-management" */ '@/modules/system-management/role-management.vue'
351 271
              ),
352
            meta: { title: '500', hiddenHeaderContent: true }
272
            meta: {
273
              title: '角色管理',
274
              hiddenHeaderContent: true,
275
              keepAlive: true
276
            }
353 277
          },
354 278
          {
355
            path: '/exception/000',
356
            name: 'Exception000',
279
            path: '/system-management/menu-management',
280
            name: 'menuManagement',
357 281
            component: () =>
358 282
              import(
359
                /* webpackChunkName: "fail" */ './modules/ootb/exception/000.vue'
283
                /* webpackChunkName: "system-management" */ '@/modules/system-management/menu-management.vue'
360 284
              ),
361
            meta: { title: '000', hiddenHeaderContent: true }
362
          }
363
        ]
364
      },
365
      // account
366
      {
367
        path: '/account',
368
        name: 'account',
369
        meta: { title: '个人页', icon: 'user-outline' },
370
        component: () => import(/* webpackChunkName: "account" */ './modules/layouts/RouteView.vue'),
371
        redirect: '/account/center',
372
        children: [
373
          {
374
            path: '/account/center',
375
            name: 'AccountCenter',
376
            component: () => import('./modules/ootb/account/account-center.vue'),
377
            meta: { title: '个人中心', hiddenHeaderContent: true }
378
          },
379
          {
380
            path: '/account/settings',
381
            name: 'AccountSettings',
382
            component: () => import('./modules/ootb/account/account-setting/index.vue'),
383
            meta: { title: '个人设置', keepAlive: true },
384
            children: [
385
              {
386
                path: '/account/person-info',
387
                name: 'personInfo',
388
                component: () => import('./modules/ootb/account/account-setting/person-info.vue'),
389
                meta: { title: '个人资料修改', hiddenHeaderContent: true }
390
              },
391
              {
392
                path: '/account/security-setting',
393
                name: 'securitySetting',
394
                component: () => import('./modules/ootb/account/account-setting/security-setting.vue'),
395
                meta: { title: '安全设置', hiddenHeaderContent: true }
396
              },
397
              {
398
                path: '/account/notice-setting',
399
                name: 'noticeSetting',
400
                component: () => import('./modules/ootb/account/account-setting/notice-setting.vue'),
401
                meta: { title: '通知提醒设置', hiddenHeaderContent: true }
402
              },
403
              {
404
                path: '/account/account-bind',
405
                name: 'accountBind',
406
                component: () => import('./modules/ootb/account/account-setting/account-bind.vue'),
407
                meta: { title: '账号绑定', hiddenHeaderContent: true }
408
              }
409
            ]
285
            meta: {
286
              title: '菜单管理',
287
              hiddenHeaderContent: true,
288
              keepAlive: true
289
            }
410 290
          }
411 291
        ]
412 292
      },
413
      // 特色场景
293
      // 授权管理
414 294
      {
415
        path: '/features',
295
        path: '/authorization',
416 296
        component: () =>
417 297
          import(
418
            /* webpackChunkName: "features" */ '@/modules/layouts/RouteView.vue'
298
            /* webpackChunkName: "authorization" */ '@/modules/layouts/RouteView.vue'
419 299
          ),
420
        name: 'features',
421
        meta: { title: '特色场景', icon: 'heart-outline' },
422
        redirect: '/features/one',
300
        name: 'authorization',
301
        meta: { title: '报警救援', icon: 'heart-outline' },
302
        redirect: '/authorization/menu-authorization',
423 303
        children: [
424 304
          {
425
            path: '/features/one',
426
            name: 'FeaturesOne',
305
            path: '/authorization/menu-authorization',
306
            name: 'menuAuthorization',
427 307
            component: () =>
428 308
              import(
429
                /* webpackChunkName: "featureOne" */ '@/modules/ootb/feature/task.vue'
309
                /* webpackChunkName: "call-help-One" */ '@/modules/authorization/menu-authorization.vue'
430 310
              ),
431 311
            meta: {
432
              title: '看板',
312
              title: '菜单授权',
433 313
              hiddenHeaderContent: true,
434 314
              keepAlive: true
435 315
            }
436 316
          },
437 317
          {
438
            path: '/features/two',
439
            name: 'FeaturesTwo',
318
            path: '/authorization/role-authorization',
319
            name: 'roleAuthorization',
440 320
            component: () =>
441 321
              import(
442
                /* webpackChunkName: "featureTwo" */ '@/modules/ootb/feature/list.vue'
322
                /* webpackChunkName: "call-help-Two" */ '@/modules/authorization/role-authorization.vue'
443 323
              ),
444 324
            meta: {
445
              title: '文章列表',
325
              title: '角色授权',
446 326
              hiddenHeaderContent: true,
447 327
              keepAlive: true
448 328
            }
449 329
          }
450 330
        ]
331
      },
332
      // list
333
      {
334
        path: '/list',
335
        name: 'list',
336
        component: () =>
337
          import(
338
            /* webpackChunkName: "welcome" */ './modules/layouts/RouteView.vue'
339
          ),
340
        redirect: '/list/table-list',
341
        meta: { title: '列表页', icon: 'file-document-outline' },
342
        children: [
343
          {
344
            path: '/list/table-list',
345
            name: 'TableList',
346
            component: () =>
347
              import(
348
                /* webpackChunkName: "dashboard" */ './modules/ootb/list/table.vue'
349
              ),
350
            meta: { title: '查询表格' }
351
          }
352
        ]
451 353
      }
452 354
    ]
453 355
  },