From 496e7e1ddb2f7fbff5759fa59c3a33bec5b9fd9d Mon Sep 17 00:00:00 2001
From: XiaoRuby <3114200645@qq.com>
Date: 星期三, 23 八月 2023 18:03:46 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
src/views/chart/work/index.vue | 210 +++++++++++++++++++++++
src/api/laboratory/role.js | 9 +
src/views/laboratory/role/index.vue | 287 +++++++++++++++----------------
3 files changed, 357 insertions(+), 149 deletions(-)
diff --git a/src/api/laboratory/role.js b/src/api/laboratory/role.js
new file mode 100644
index 0000000..64a2930
--- /dev/null
+++ b/src/api/laboratory/role.js
@@ -0,0 +1,9 @@
+import request from '@/utils/request'
+
+export function getMenusTree(params) {
+ return request({
+ url: '/role-manager/getMenusTree',
+ method: 'get',
+ params
+ })
+ }
\ No newline at end of file
diff --git a/src/views/chart/work/index.vue b/src/views/chart/work/index.vue
index 1b667ad..59b9b32 100644
--- a/src/views/chart/work/index.vue
+++ b/src/views/chart/work/index.vue
@@ -1,13 +1,219 @@
<template>
- <div>宸ヤ綔缁熻鍥�</div>
+ <div class="work-main" style="overflow: scroll;width:100%;height:100vh">
+ <div class="work-head">
+ <el-row :gutter="10">
+ <el-col :span="24">
+ <el-card>
+ <el-form :inline="true" :model="formInline" class="demo-form-inline">
+ <el-form-item>
+ <p><span>*</span>妫�娴嬫棩鏈�:</p>
+ <el-date-picker
+ v-model="dateTime"
+ type="daterange"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡">
+ </el-date-picker>
+ </el-form-item>
+ <el-form-item>
+ <p><span>*</span>妫�楠岀被鍨�:</p>
+ <el-select v-model="formInline.region" placeholder="閲囪喘鍏ュ簱">
+ <el-option label="鍖哄煙涓�" value="shanghai"></el-option>
+ <el-option label="鍖哄煙浜�" value="beijing"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item class="buttons">
+ <el-button>娓呯┖</el-button>
+ <el-button type="primary" @click="onSubmit">鏌ヨ</el-button>
+ </el-form-item>
+ </el-form>
+ </el-card>
+ </el-col>
+ </el-row>
+ </div>
+ <div class="work-center" >
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-card>
+ <p>璐熻矗浜虹粺璁�</p>
+ <div id="leaderStati" style="width:100%;height:400px;"></div>
+ </el-card>
+ </el-col>
+ <el-col :span="12">
+ <el-card>
+ <p>瀹為獙鍛樼粺璁�</p>
+ <div id="testerStati" style="width:100%;height:400px;"></div>
+ </el-card>
+ </el-col>
+ <el-col :span="12">
+ <el-card>
+ <p>璐熻矗浜哄強鏃剁巼</p>
+ <div id="leaderTimly" style="width:100%;height:400px;"></div>
+ </el-card>
+ </el-col>
+ <el-col :span="12">
+ <el-card>
+ <p>瀹為獙鍛樺強鏃剁巼</p>
+ <div id="testerTimly" style="width:100%;height:400px;"></div>
+ </el-card>
+ </el-col>
+ </el-row>
+ </div>
+ <div class="work-foot"></div>
+ </div>
</template>
<script>
+import * as echarts from 'echarts';
export default {
+ data() {
+ return {
+ formInline: {
+ user: '',
+ region: ''
+ },
+ dateTime: '',
+ }
+ },
+ mounted(){
+ this.initLeaderStatiChart('leaderStati');
+ this.initLeaderTimlyChart();
+ this.initLeaderStatiChart('testerStati');
+ this.initTesterTimlyChart();
+ },
+ methods: {
+ onSubmit() {
+ console.log('submit!');
+ },
+ initLeaderStatiChart(id){
+ var chartDom = document.getElementById(id);
+ var myChart = echarts.init(chartDom);
+ var option;
+ let xAxisData = [];
+ let data1 = [];
+ let data2 = [];
+ let data3 = [];
+ let data4 = [];
+ for (let i = 0; i < 10; i++) {
+ xAxisData.push('Class' + i);
+ data1.push(+(Math.random() * 2).toFixed(2));
+ data2.push(+(Math.random() * 5).toFixed(2));
+ data3.push(+(Math.random() + 0.3).toFixed(2));
+ data4.push(+Math.random().toFixed(2));
+ }
+ var emphasisStyle = {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowColor: 'rgba(0,0,0,0.3)'
+ }
+ };
+ option = {
+ legend: {
+ data: ['bar', 'bar2'],
+ left: 'center'
+ },
+ tooltip: {},
+ xAxis: {
+ data: xAxisData,
+ name: '濮撳悕',
+ axisLine: { onZero: true },
+ splitLine: { show: false },
+ splitArea: { show: false }
+ },
+ yAxis: {},
+ grid: {
+ bottom: 100
+ },
+ series: [
+ {
+ name: 'bar',
+ type: 'bar',
+ stack: 'one',
+ emphasis: emphasisStyle,
+ data: data1
+ },
+ {
+ name: 'bar2',
+ type: 'bar',
+ stack: 'one',
+ emphasis: emphasisStyle,
+ data: data2
+ }
+ ]
+ };
+ myChart.on('brushSelected', function (params) {
+ var brushed = [];
+ var brushComponent = params.batch[0];
+ for (var sIdx = 0; sIdx < brushComponent.selected.length; sIdx++) {
+ var rawIndices = brushComponent.selected[sIdx].dataIndex;
+ brushed.push('[Series ' + sIdx + '] ' + rawIndices.join(', '));
+ }
+ myChart.setOption({
+ title: {
+ backgroundColor: '#333',
+ text: 'SELECTED DATA INDICES: \n' + brushed.join('\n'),
+ bottom: 0,
+ right: '10%',
+ width: 100,
+ textStyle: {
+ fontSize: 12,
+ color: '#fff'
+ }
+ }
+ });
+ });
+
+ option && myChart.setOption(option);
+ },
+ initTesterStatiChart(){
+
+ },
+ initLeaderTimlyChart(){
+
+ },
+ initTesterTimlyChart(){
+
+ },
+ }
}
</script>
<style lang="scss" scoped>
-
+ .work-main{
+ width:100%;
+ margin:0;
+ padding: 0;
+ .work-head{
+ width:94%;
+ height:100;
+ margin: 5px 10px;
+ position: fixed;
+ z-index: 10;
+ .demo-form-inline{
+ margin: 0px 10px;
+ p{
+ margin: 0;
+ font-size: 16px;
+ font-weight: bold;
+ span{
+ font-size: 16px;
+ font-weight: bold;
+ color: red;
+ }
+ }
+ .buttons{
+ margin: 40px 0px 0px 900px;
+ }
+ }
+ }
+ .work-center{
+ margin: 0px 0px 5px 10px;
+ padding: 18vh 0px 5px 0px;
+ .el-card{
+ margin: 5px 0px;
+ height:500px;
+ }
+ }
+ }
</style>
diff --git a/src/views/laboratory/role/index.vue b/src/views/laboratory/role/index.vue
index 1c01efc..494b9da 100644
--- a/src/views/laboratory/role/index.vue
+++ b/src/views/laboratory/role/index.vue
@@ -1,140 +1,105 @@
<template>
<div>
- <div class="content-main">
- <div class="top-bar">
- <el-form ref="form" :inline="true" :model="searchData">
- <el-form-item label="瑙掕壊鍚嶇О锛�" class="sermargin">
- <el-input
- v-model="searchData.roleName"
- class="input-form"
- placeholder="璇疯緭鍏ヨ鑹插悕绉�"
- style="width:250px"
- >
- </el-input>
- </el-form-item>
- <el-form-item label="鏉冮檺锛�" class="sermargin">
- <el-input
- v-model="searchData.permission"
- class="input-form"
- placeholder="璇疯緭鍏ユ潈闄�"
- style="width:250px"
- >
- </el-input>
- </el-form-item>
- <el-form-item class="rightBtn">
- <el-button type="primary" @click="search">鏌ヨ</el-button>
- <el-button type="primary" plain @click="reset">閲嶇疆</el-button>
- </el-form-item>
- </el-form>
- <el-form>
- <el-form-item class="rightBtn">
- <el-button type="primary" @click="addRole" icon="el-icon-plus">鏂板鏉冮檺</el-button>
- </el-form-item>
- </el-form>
- </el-form>
- </div>
- <div class="library-table">
- <div class="table-box">
- <el-table
- :max-height="800"
- :cell-style="{textAlign: 'center'}"
- :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}"
- :data="roleTable"
- style="width: 100%"
- >
- <el-table-column
- type="selection"
- min-width="8%"
- />
- <el-table-column
- prop="rolename"
- label="瑙掕壊鍚嶇О"
- min-width="20%"
- />
- <el-table-column
- prop="permission"
- label="鏉冮檺"
- min-width="20%"
- />
- <el-table-column
- prop="create_time"
- label="鍒涘缓鏃堕棿"
- min-width="20%"
- />
- <el-table-column
- prop="update_time"
- label="鏇存柊鏃堕棿"
- min-width="20%"
- />
- <el-table-column
- label="鎿嶄綔"
- min-width="12%"
- >
- <template slot-scope="scope">
- <el-button type="text" size="small" >缂栬緫</el-button>
- <el-button type="text" size="small" >鍒犻櫎</el-button>
- </template>
- </el-table-column>
- </el-table>
- <!-- 鍒嗛〉鍣� -->
- <div class="pagination">
- <el-pagination
- @size-change="handleSizeChange"
- @current-change="handleCurrentChange"
- :current-page="currentPage"
- :page-sizes="[5, 10, 20]"
- :page-size="pageSize"
- layout="total, sizes, prev, pager, next, jumper"
- :total="total">
- </el-pagination>
- </div>
- </div>
- </div>
- </div>
- <el-dialog title="淇敼瀵嗙爜" :visible.sync="dialogTableVisible" width="30%">
- <el-form :model="updateData" ref="updateData" label-position="right" label-width="100px">
- <el-form-item label="鍘熷瘑鐮侊細">
- <el-input style="width: 300px" v-model="updateData.oldPassWord" placeholder="璇疯緭鍏ュ師瀵嗙爜" >
+ <div class="content-main">
+ <div class="top-bar">
+ <el-form ref="form" :inline="true" :model="searchData">
+ <el-form-item label="瑙掕壊鍚嶇О锛�" class="sermargin">
+ <el-input v-model="searchData.roleName" class="input-form" placeholder="璇疯緭鍏ヨ鑹插悕绉�" style="width:250px">
</el-input>
</el-form-item>
- <el-form-item label="鏂板瘑鐮侊細">
- <el-input style="width: 300px" v-model="updateData.newPassWord" placeholder="璇疯緭鍏ユ柊瀵嗙爜">
+ <el-form-item label="鏉冮檺锛�" class="sermargin">
+ <el-input v-model="searchData.permission" class="input-form" placeholder="璇疯緭鍏ユ潈闄�" style="width:250px">
</el-input>
</el-form-item>
- <el-form-item label="纭瀵嗙爜锛�">
- <el-input style="width: 300px" v-model="updateData.confirmPassWord" placeholder="鍐嶆杈撳叆瀵嗙爜">
- </el-input>
+ <el-form-item class="rightBtn">
+ <el-button type="primary">鏌ヨ</el-button>
+ <el-button type="primary" plain>閲嶇疆</el-button>
</el-form-item>
</el-form>
- <span slot="footer" class="dialog-footer">
- <el-button @click="dialogTableVisible = false">鍙� 娑�</el-button>
- <el-button type="primary" @click="changePassword">纭� 瀹�</el-button>
- </span>
- </el-dialog>
+ <el-form>
+ <el-form-item class="rightBtn">
+ <el-button type="primary" @click="addClickRole" icon="el-icon-plus">鏂板瑙掕壊</el-button>
+ </el-form-item>
+ </el-form>
+ </el-form>
+ </div>
+ <div class="library-table">
+ <div class="table-box">
+ <el-table :max-height="800" :cell-style="{ textAlign: 'center' }"
+ :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'center' }"
+ :data="roleTable" style="width: 100%">
+ <el-table-column type="selection" min-width="8%" />
+ <el-table-column prop="rolename" label="瑙掕壊鍚嶇О" min-width="20%" />
+ <el-table-column prop="permission" label="鏉冮檺" min-width="20%" />
+ <el-table-column prop="create_time" label="鍒涘缓鏃堕棿" min-width="20%" />
+ <el-table-column prop="update_time" label="鏇存柊鏃堕棿" min-width="20%" />
+ <el-table-column label="鎿嶄綔" min-width="12%">
+ <template slot-scope="scope">
+ <el-button type="text" size="small">缂栬緫</el-button>
+ <el-button type="text" size="small">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <!-- 鍒嗛〉鍣� -->
+ <div class="pagination">
+ <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
+ :current-page="currentPage" :page-sizes="[5, 10, 20]" :page-size="pageSize"
+ layout="total, sizes, prev, pager, next, jumper" :total="total">
+ </el-pagination>
+ </div>
+ </div>
+ </div>
+ </div>
+ <el-dialog title="鏂板瑙掕壊" :visible.sync="dialogTableVisible" width="60%">
+ <el-form :model="roleAdd" ref="roleAdd" label-position="right" label-width="100px">
+ <el-form-item label="瑙掕壊鍚�:">
+ <el-input style="width: 300px" v-model="roleAdd.roleName" placeholder="璇疯緭鍏ヨ鑹插悕">
+ </el-input>
+ </el-form-item>
+ <el-form-item label="鍔熻兘閫夋嫨:">
+ <el-cascader size="medium " v-model="roleAdd.menuData" :options="menuInfo">
+ <template slot-scope="{ node, data }">
+ <span>{{ data.label }}</span>
+ <span v-if="!node.isLeaf"> ({{ }}) </span>
+ </template>
+ </el-cascader>
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="dialogTableVisible = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="addRole">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
</div>
</template>
<script>
-import { getPlanPageList, getStandingPageList } from '@/api/laboratory/measure'
+import { getMenusTree } from '@/api/laboratory/role'
export default {
data() {
return {
- searchData:{
+ props: { multiple: true },
+ roleAdd: {
+ roleName: null,
+ menuData: null
+ },
+ searchData: {
roleName: '',
permission: ''
},
- roleTable:[{
+ menuInfo: [],
+ roleTable: [{
rolename: '閮ㄩ暱',
permission: 'ROOT',
create_time: '2023-07-04 12:12:12',
update_time: '2023-07-04 12:12:12'
- },{
+ }, {
rolename: '缁勯暱',
permission: '--',
create_time: '2023-07-04 12:12:12',
update_time: '2023-07-04 12:12:12'
}],
- updateData:{
+ updateData: {
oldPassWord: '',
newPassWord: '',
confirmPassWord: ''
@@ -145,13 +110,37 @@
total: 20
}
},
- created(){
-
+ created() {
+
},
methods: {
- addRole(){
+ async addClickRole() {
+ let res = await getMenusTree();
+ this.menuInfo = res.data
+ this.menuInfo.forEach(item => {
+ item.select = false
+ item.add = false
+ item.update = false
+ item.delete = false
+ if (item.children.length == 0) {
+ delete item['children']
+ } else {
+ item.children.forEach(c => {
+ c.select = false
+ c.add = false
+ c.update = false
+ c.delete = false
+ if (c.children.length == 0) {
+ delete c['children']
+ }
+ })
+ }
+ })
this.dialogTableVisible = true
// console.log(this.dialogTableVisible)
+ },
+ addRole() {
+ console.log(this.roleAdd);
},
// search(){},
// reset(){},
@@ -170,44 +159,48 @@
</script>
<style scoped>
+.top-bar {
+ margin: -25px -15px;
+ background: #fff;
+ display: flex;
+ justify-content: space-between;
+ padding: 5px 24px 0px 24px;
-.top-bar{
- margin: -25px -15px;
+ .sermargin {
+ margin-right: 60px;
+ }
+}
+
+.rightBtn {
+ margin-right: 50px
+}
+
+.library-table {
+ background-color: #fff;
+ flex: 1;
+ margin: 0px -15px;
+ margin-top: 40px;
+ display: flex;
+ flex-direction: column;
+
+ .table-box {
+ padding: 10px 20px;
+ margin-top: 0px;
+ flex: 1;
background: #fff;
+ /* padding: 20px 20px 10px 20px; */
display: flex;
- justify-content: space-between;
- padding: 5px 24px 0px 24px;
- .sermargin{
- margin-right: 60px;
+ flex-direction: column;
+
+ .el-table {
+ flex: 1;
}
}
-.rightBtn{
- margin-right: 50px
-}
-.library-table{
- background-color: #fff;
- flex: 1;
- margin: 0px -15px;
- margin-top: 40px;
- display: flex;
- flex-direction: column;
- .table-box{
- padding: 10px 20px;
- margin-top: 0px;
- flex: 1;
- background: #fff;
- /* padding: 20px 20px 10px 20px; */
- display: flex;
- flex-direction: column;
- .el-table {
- flex: 1;
- }
- }
- .pagination{
- display:flex;
- justify-content:end;
- margin-top: 20px
- }
- }
+ .pagination {
+ display: flex;
+ justify-content: end;
+ margin-top: 20px
+ }
+}
</style>
--
Gitblit v1.9.3