From 970e7190df84fe6060c9c74532c5d7b3a0e45627 Mon Sep 17 00:00:00 2001
From: lzhe <181968431@qq.com>
Date: 星期日, 28 四月 2024 00:07:53 +0800
Subject: [PATCH] 1
---
src/views/mdc/status-record.vue | 11 +
src/views/mdc/components/recordChartsByWorkstation.vue | 7
src/views/mdc/components/analysisA.vue | 101 ++++++++++++
src/views/mdc/time-analysis.vue | 323 ++++++++++++++++++++++++++++++++++++++-
4 files changed, 422 insertions(+), 20 deletions(-)
diff --git a/src/views/mdc/components/analysisA.vue b/src/views/mdc/components/analysisA.vue
new file mode 100644
index 0000000..e4f8cf0
--- /dev/null
+++ b/src/views/mdc/components/analysisA.vue
@@ -0,0 +1,101 @@
+<template>
+ <div id="analysisA">
+ <div class="demo-collapse">
+ <el-collapse accordion>
+ <el-collapse-item v-for="(item,index) in setTitle" :name="index + 1">
+ <template #title>
+ <el-icon size="16" color="#3b8e8e"><Memo /></el-icon>
+ <span class="collr-title">鐝{{index + 1}}</span>
+ <el-button size="small">{{item.indexName}}</el-button>
+ </template>
+ <div>
+ BAI
+ </div>
+ </el-collapse-item>
+ </el-collapse>
+ </div>
+ <div class="paginationwork">
+ <el-pagination layout="prev, pager, next" @current-change="recordChange" :total="total" :default-page-size="6"/>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as ElementPlusIconsVue from '@element-plus/icons-vue'
+let icons = []
+for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
+ icons.push(key)
+}
+import moment from 'moment';
+import * as echarts from 'echarts';
+export default {
+ components: {
+ ...ElementPlusIconsVue
+ },
+ props: ['setDataA','setTitle'],
+ watch: {
+ setDataA(val) {
+ this.current = "1";
+ alert(1)
+ //this.getCharts();
+ }
+ },
+ data() {
+ return {
+ titleList: [],
+ current: "1",
+ size: "10",
+ total: "0"
+ }
+ },
+ mounted() {
+ alert(4)
+ },
+ methods: {
+ recordChange() {
+
+ },
+ getDataChartsA(index) {
+ var obj = {
+ enums: "SHIFT",
+ groupCategory: 1,
+ groupType: "group_workstation",
+ ids: [],
+ month: moment(this.date).get('month') + 1,
+ queryTime: this.date,
+ shiftIndex: index,
+ type: 0,
+ week: moment(this.date).get('week'),
+ year: moment(this.date).get('year')
+ }
+ this.$HTTP.post(`/api/blade-mdc/time-used-analysis/work-stations?current=${this.current}&size=${this.size}`,obj).then(res=> {
+ if(res.code == 200) {
+ this.setChartsA = res.data;
+ }
+ })
+ },
+ }
+}
+</script>
+
+<style scoped>
+.demo-collapse {
+
+}
+.collr-title {
+ margin-left:8px;
+ margin-right: 8px;
+ font-weight: bold;
+}
+.demo-collapse /deep/ .el-collapse-item__header {
+ background-color: #d8e8e8;
+ margin: 8px;
+ height: 32px;
+ padding-left: 16px;
+ border-radius: 4px;
+}
+.demo-collapse /deep/ .el-collapse-item__content {
+ margin: 8px;
+ padding-left: 16px;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/mdc/components/recordChartsByWorkstation.vue b/src/views/mdc/components/recordChartsByWorkstation.vue
index 12753cc..61090a3 100644
--- a/src/views/mdc/components/recordChartsByWorkstation.vue
+++ b/src/views/mdc/components/recordChartsByWorkstation.vue
@@ -1,6 +1,6 @@
<template>
<div id="recordworkParse">
- <div id="recordwork" style="height:500px;"></div>
+ <div id="recordwork" style="height:400px;"></div>
<div class="paginationwork">
<el-pagination layout="prev, pager, next" @current-change="recordChange" :total="total" :default-page-size="6"/>
</div>
@@ -121,7 +121,7 @@
grid: {
top: 10,
left: 100,
- bottom: 130,
+ bottom: 30,
right: 30
},
xAxis: {
@@ -203,8 +203,7 @@
text-align: right;
display: flex;
justify-content: end;
- margin-top: -60px;
+ margin-top: 20px;
position: relative;
- z-index: 99;
}
</style>
\ No newline at end of file
diff --git a/src/views/mdc/status-record.vue b/src/views/mdc/status-record.vue
index c86ba48..c46efb7 100644
--- a/src/views/mdc/status-record.vue
+++ b/src/views/mdc/status-record.vue
@@ -54,7 +54,7 @@
<div>鏆傛棤鏁版嵁</div>
</div>
</div>
- <div>
+ <div v-if="!isshowempty">
<el-button-group>
<el-button @click="changeTabGongwei(item)" :type="btnGongweiListActive == item.id ? 'primary' : ''" v-for="item in btnGongweiList" :key="item.id" size="small">{{item.name }}</el-button>
</el-button-group>
@@ -90,7 +90,6 @@
import recordChartsByWorkstation from './components/recordChartsByWorkstation.vue';
export default {
components: {
- time: "",
MYTree,
recordChartsByDate,
recordChartsByWorkstation,
@@ -336,7 +335,10 @@
z-index: 99;
}
.MYTree {
- height: calc(100% - 200px);
+ height: 600px;
+ }
+ .MYTree-content {
+ height: 100%;
overflow: hidden;
overflow-y: auto;
}
@@ -419,4 +421,7 @@
color: #3b8e8e;
cursor: pointer;
}
+ .aposcope-right /deep/ .el-tabs__content {
+ overflow: visible;
+ }
</style>
\ No newline at end of file
diff --git a/src/views/mdc/time-analysis.vue b/src/views/mdc/time-analysis.vue
index 9599f57..5de5429 100644
--- a/src/views/mdc/time-analysis.vue
+++ b/src/views/mdc/time-analysis.vue
@@ -1,24 +1,321 @@
<!--
- * @Date: 2024-04-09 22:11:21
- * @LastEditors: Sneed
- * @LastEditTime: 2024-04-13 22:15:56
- * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/mdc/time-analysis.vue
- 鐢ㄦ椂鍒嗘瀽
+ * @Author: lzhe lzhe@example.com
+ * @Date: 2024-04-26 09:36:18
+ * @LastEditors: lzhe lzhe@example.com
+ * @LastEditTime: 2024-04-26 18:07:52
+ * @FilePath: /smart-web/src/views/mdc/status-record.vue
+ * @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
- <el-main>
- <el-card shadow="never">
- 鏁堢巼鍒嗘瀽
- </el-card>
- </el-main>
+ <div class="aposcope-main">
+ <div class="aposcope-left">
+ <div class="left-title">鏌ヨ鏉′欢</div>
+ <div class="left-title-col">鏃ユ湡</div>
+ <el-date-picker v-model="time" type="daterange" :shortcuts="shortcuts" range-separator="-" size="small" style="width: 100%;" value-format="YYYY-MM-DD"/>
+ <div class="left-title-col">宸ヤ綅</div>
+ <el-button-group >
+ <el-button @click="changeLeftTab(item)" :type="btnLeftctive == item.id ? 'primary' : ''" v-for="item in btnLeftList" :key="item.id" size="small">{{item.title }}</el-button>
+ </el-button-group>
+ <div class="MYTree">
+ <MYTree v-if="btnLeftctive == '1'" getAll v-model="treeChecked" show-checkbox class="MYTree-content"></MYTree>
+ <el-tree v-if="btnLeftctive == '2'" :data="tree2" :expand-on-click-node="false" default-expand-all show-checkbox :props="{label: 'name', children: 'children'}" class="treeActive" @check-change="treeListNode" />
+ </div>
+ <div class="footer">
+ <el-button @click="query" type="primary">鏌ヨ</el-button>
+ <el-button @click="exportData">瀵煎嚭</el-button>
+ </div>
+ </div>
+ <div class="aposcope-right">
+ <el-tabs tab-position="top" v-model="activeName" type="card" @tab-change="tabChange">
+ <el-tab-pane label="鎸夌彮娆$粺璁�" name="shift">
+ <el-button-group>
+ <el-button @click="changeTab(item)" :type="btnListActive == item.id ? 'primary' : ''" v-for="item in btnList" :key="item.id" size="small">{{item.title }}</el-button>
+ </el-button-group>
+ <div class="fact-analysis-realtim" v-if="setTitle.length == 0">
+ <div class="wimi-empty" v-if="isshowempty" style="background-color: rgb(255, 255, 255);">
+ <div class="wimi-empty-img" style="width: 150px; height: 150px;">
+ <img src="./quesheng.bd026700.png" style="height: auto; width: 100%;">
+ </div>
+ <div class="empty-description">
+ <div>鏆傛棤鏁版嵁</div>
+ </div>
+ </div>
+ </div>
+ <analysis-a :setDataA="setDataA" v-if="setTitle.length != 0"></analysis-a>
+ </el-tab-pane>
+ <el-tab-pane label="鎸夋椂闂村懆鏈熺粺璁�" name="time">
+ <div class="fact-analysis-realtim">
+ <div class="wimi-empty" v-if="isshowempty" style="background-color: rgb(255, 255, 255);">
+ <div class="wimi-empty-img" style="width: 150px; height: 150px;">
+ <img src="./quesheng.bd026700.png" style="height: auto; width: 100%;">
+ </div>
+ <div class="empty-description">
+ <div>鏆傛棤鏁版嵁</div>
+ </div>
+ </div>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+ </div>
</template>
<script>
- export default {
+import moment from 'moment';
+import MYTree from './MYTree.vue';
+import analysisA from './components/analysisA.vue';
+export default {
+ components: {
+ MYTree,analysisA
+ },
+ data() {
+ return {
+ setDataA: {},
+ setTitle: [],
+ date: "",
+ setChartsA: {},
+ btnListActive: "",
+ tree2: [],
+ btnList: [],
+ btnLeftList: [{title: "鎸夊伐浣嶇粺璁�",id:"1"},{title: "鎸夊伐浣嶇粍缁熻",id:"2"}],
+ btnLeftctive: "1",
+ isshowempty: true,
+ shortcuts: [
+ {
+ text: '鏈�杩�3澶�',
+ value: () => {
+ const end = new Date()
+ const start = new Date()
+ start.setDate(start.getDate() - 3)
+ return [start, end]
+ },
+ },
+ {
+ text: '鏈�杩�7澶�',
+ value: () => {
+ const end = new Date()
+ const start = new Date()
+ start.setMonth(start.getDate() - 7)
+ return [start, end]
+ },
+ },
+ {
+ text: '鏈�杩戜竴涓湀',
+ value: () => {
+ const end = new Date()
+ const start = new Date()
+ start.setMonth(start.getMonth() - 1)
+ return [start, end]
+ },
+ },
+ ],
+ activeName: 'shift',
+ time: [],
+ workstationId: "",
+ treeChecked: []
+ }
+ },
+ created() {
+ },
+ mounted() {
+ this.init();
+ this.getTree2List(); //鎸夊伐浣嶇粺璁℃爲
+ this.getDataA();
+ },
+ methods: {
+ getDataA() {
+ var ids = [];
+ this.treeChecked.forEach(item=> {
+ ids.push(item.id);
+ })
+ var obj = {
+ ids: ids,
+ localDate: this.date,
+ type: 0
+ }
+ this.$HTTP.post(`/api/blade-mdc/time-used-analysis/workstation/shiftName`,obj).then(res=> {
+ if(res.code == 200) {
+ this.setTitle = res.data.shiftDetails;
+ }
+ })
+ },
+ getTree2List() { //鎸夊伐浣嶇粍缁熻
+ this.$HTTP.get(`/api/blade-cps/group/tree?groupCategory=1&groupType=group_workstation`).then(res=> {
+ if(res.code == 200) {
+ this.tree2 = res.data;
+ }
+ })
+ },
+ treeListNode(data) {
+
+ },
+ changeLeftTab(item) {
+ this.btnLeftctive = item.id;
+ },
+ tabChange(val) {
+ if(val == "time") { //鎸夌彮娆$粺璁�
+
+ }else if(val == "shift") { //鎸夋椂闂村懆鏈熺粺璁�
+
+ }
+ },
+ exportData() { //瀵煎嚭
+ var obj = {
+ endTime: this.time[1],
+ startTime: this.time[0],
+ workstationInfoList: this.workstationInfoList
+ }
+ this.$HTTP.post(`/api/blade-mdc/status-record/excel/export`,obj).then(res=> {
+ if(res.code == 200) {
+ window.open(res.data.link);
+ }
+ })
+ },
+ changeTab(item) {
+ this.btnListActive = item.id;
+ this.date = item.id;
+ this.getDataA();
+ },
+ getTime(data) {
+ this.$HTTP.post('/api/blade-mdc/efficiency-analysis/interval', {
+ ...data
+ }).then(res => {
+ if (res.code === 200) {
+ var today = moment().format('YYYY-MM-DD');
+ var yesterday = moment().subtract(1, 'days').format('YYYY-MM-DD');
+ res.data.forEach(item=> {
+ if(item.title == today) {
+ item.title = "浠婂ぉ";
+ }
+ if(item.title == yesterday) {
+ item.title = "鏄ㄥぉ";
+ }
+ })
+ this.btnList = res.data.reverse();
+ this.btnListActive = res?.data?.[0]?.id
+ }
+ })
+ },
+ init() {
+ this.time = [moment().subtract(2, 'days').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')];
+ this.getTime({endDate: this.time[1],startDate: this.time[0],statisticalMethod: 'SHIFT'}); //鏃ユ湡sort
+ this.date = this.time[1];
+ },
+ query() {
+ this.getTime({endDate: this.time[1],startDate: this.time[0],statisticalMethod: 'SHIFT'});
+ var ids = [];
+ this.treeChecked.forEach(item=> {
+ ids.push(item.id)
+ })
+ this.setDataA = {
+ ids: ids,
+ localDate: this.time[1]
+ }
+ }
}
+}
</script>
-<style lang="scss" scoped>
-
+<style scoped>
+ .aposcope-main {
+ display: flex;
+ min-height: 100%;
+ margin: 8px;
+ }
+ .aposcope-left {
+ position: relative;
+ width: 240px;
+ margin-right: 8px;
+ padding: 4px;
+ height: 100%;
+ background-color: #fff;
+ border-radius: 2px;
+ overflow: hidden;
+ }
+ .aposcope-right {
+ flex: 1;
+ padding: 8px;
+ background-color: #fff;
+ }
+ .left-title {
+ font-size: 16px;
+ text-align: center;
+ height: 38px;
+ line-height: 38px;
+ border-bottom: 1px solid #e2e2e2;
+ background-color: #409eff;
+ color: #fff;
+ border-radius: 2px 2px 0 0;
+ }
+ .left-title-col {
+ margin-bottom: 8px;
+ font-size: 14px;
+ margin-top: 8px;
+ }
+ .footer {
+ padding: 0px 32px;
+ border-radius: 0 0 2px 2px;
+ background: #fff;
+ box-shadow: -1px 0 3px rgba(92, 92, 92, .16);
+ height: 48px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ padding: 0 10px;
+ box-sizing: border-box;
+ z-index: 99;
+ }
+ .MYTree {
+ margin-top:12px;
+ height: 600px;
+ }
+ .MYTree-content {
+ height: 100%;
+ overflow: hidden;
+ overflow-y: auto;
+ }
+ .status {
+ display: flex;
+ align-items: start;
+ flex-direction: column;
+ justify-content: start;
+ margin: 20px 0 8px;
+ position: relative;
+ width: 100%;
+ font-size: 16px;
+ cursor: pointer;
+ }
+ .fact-analysis-realtim {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+ align-content: flex-start;
+ box-sizing: border-box;
+ background: #fff;
+ height: 500px;
+ }
+ .wimi-empty {
+ height: 100%;
+ width: 100%;
+ display: flex;
+ border-radius: 2px;
+ flex-direction: column;
+ flex-wrap: nowrap;
+ align-content: center;
+ justify-content: center;
+ align-items: center;
+ }
+ .empty-description {
+ margin-bottom: 20px;
+ font-size: 14px;
+ color: #5e6d82;
+ margin-top: -16px;
+ line-height: 28px;
+ }
</style>
\ No newline at end of file
--
Gitblit v1.9.3