From b2ca05f7007f588f4d2b8eacb6ceb5535d1570aa Mon Sep 17 00:00:00 2001
From: 小小儁爺 <1694218219@qq.com>
Date: 星期五, 17 四月 2026 11:25:14 +0800
Subject: [PATCH] 1.看板发布2.报工记录功能发布
---
src/permission.js | 2
src/views/kanbanManager/jghjcj_back.vue | 287 ++++++
src/views/statistic/reportList.vue | 653 ++++++++++++++
src/views/kanbanManager/zpcj_back.vue | 285 ++++++
src/views/kanbanManager/jghjcj2.vue | 287 ++++++
src/router/index.js | 8
src/api/ReportManager.js | 18
src/views/kanbanManager/jghjcj.vue | 564 ++++++++----
src/views/kanbanManager/zpcj.vue | 559 ++++++++----
9 files changed, 2,294 insertions(+), 369 deletions(-)
diff --git a/src/api/ReportManager.js b/src/api/ReportManager.js
index 27c0066..aa93227 100644
--- a/src/api/ReportManager.js
+++ b/src/api/ReportManager.js
@@ -186,3 +186,21 @@
params: data
})
}
+
+// 鎶ュ伐璁板綍鍒楄〃鏁版嵁鏌ヨ
+export function MesOrderStepReportSearch(data) {
+ return request({
+ url: 'ReportManager/MesOrderStepReportSearch',
+ method: 'get',
+ params: data
+ })
+}
+
+// 鎶ュ伐璁板綍鍒楄〃鏁版嵁瀵煎嚭
+export function MesOrderStepReportExcelSearch(data) {
+ return request({
+ url: 'ReportManager/MesOrderStepReportExcelSearch',
+ method: 'get',
+ params: data
+ })
+}
diff --git a/src/permission.js b/src/permission.js
index b61e3a9..917b13d 100644
--- a/src/permission.js
+++ b/src/permission.js
@@ -9,7 +9,7 @@
NProgress.configure({ showSpinner: false }) // NProgress Configuration
-const whiteList = ['/login', '/zhkb', '/zpcj', '/jghjcj', '/ckgl'] // no redirect whitelist
+const whiteList = ['/login', '/zhkb', '/zpcj', '/jghjcj', '/jghjcj2', '/ckgl'] // no redirect whitelist
router.beforeEach(async(to, from, next) => {
// start progress bar
diff --git a/src/router/index.js b/src/router/index.js
index ef55f11..55361ab 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -48,6 +48,10 @@
component: () => import('@/views/kanbanManager/jghjcj'),
hidden: true
}, {
+ path: '/jghjcj2',
+ component: () => import('@/views/kanbanManager/jghjcj2'),
+ hidden: true
+ }, {
path: '/ckgl',
component: () => import('@/views/kanbanManager/ckgl'),
hidden: true
@@ -523,9 +527,9 @@
{
path: 'reportList',
name: 'ReportList',
- code: '1040',
+ code: '0700',
component: () => import('@/views/statistic/reportList'),
- meta: { code: '1040', title: '鎶ュ伐璁板綍', icon: '', keepAlive: true }
+ meta: { code: '0700', title: '鎶ュ伐璁板綍', icon: '', keepAlive: true }
},
{
path: 'monthReport',
diff --git a/src/views/kanbanManager/jghjcj.vue b/src/views/kanbanManager/jghjcj.vue
index 6f48418..773f02a 100644
--- a/src/views/kanbanManager/jghjcj.vue
+++ b/src/views/kanbanManager/jghjcj.vue
@@ -9,7 +9,7 @@
<span>娴欐睙闃块瞾鍏嬪仴韬櫒鏉愭湁闄愬叕鍙�</span>
</div>
- <div class="kb_headTime kb_header_text" style="top: 35px;left: 772px">
+ <div class="kb_headTime kb_header_text" style="top: 35px;left: 768px">
<span>閲戝伐鐒婃帴杞﹂棿鏁板瓧鍖栫湅鏉�</span>
</div>
@@ -17,55 +17,134 @@
<span>{{ headTime }}</span>
</div>
</div>
-
<div
style=" padding:5px 20px 20px 20px;z-index:2;height: 940px;flex-direction: column;justify-content: space-between;"
>
<!-- 涓婅竟-->
<div style="display: flex;justify-content: space-between">
- <div style="width:100%">
- <div class="smallTitle">
- <svg-icon icon-class="cxjg" class="svg_class" />
- 鐢熶骇淇℃伅
- </div>
-
- <div style="height: 450px">
- <dv-border-box-12>
- <dv-scroll-board
- ref="scrollBoardTop"
- :config="configTableTop"
- style="width: 99%;height: 430px;margin:0 auto;padding-top: 13px;"
- />
- </dv-border-box-12>
- </div>
-
- </div>
- </div>
-
- <!-- 涓嬭竟-->
- <div style="display: flex;justify-content: space-between;margin-top: 15px;">
- <div style="width: 1000px;">
+ <div style="width: 925px;">
<div class="smallTitle">
<svg-icon icon-class="blcs" class="svg_class" />
- 璐ㄩ噺涓嶈壇(杩戜竴鍛�)
+ 閲囪喘璁㈠崟(鏈�/瀛�)
</div>
+ <div
+ class="lineContent horn"
+ style="height: 450px;display: flex;flex-direction: column;justify-content: space-between"
+ >
+ <div style="height: 180px;padding: 10px;display: flex;justify-content: space-between">
- <div style="height: 380px;">
- <dv-border-box-12>
- <div id="cjzl03" class="flex_c_c" style="width: 100%;height:100%" />
- </dv-border-box-12>
+ <div v-for="i in LeftTopData01" :key="i.Quarter" class="flex_c_s">
+ <div class="all_block03 flex_c_s">
+ <div class="flex_c_c all_block04">{{ i.Quarter }}</div>
+ <div class="" style="display: flex;justify-content:space-between">
+ <div class="all_block04 flex_c_c" style="width: 49% ">浠诲姟鏁�</div>
+ <div class="all_block04 flex_c_c" style="width: 49% ">{{ i.quantity }}</div>
+ </div>
+ <div class="" style="display: flex;justify-content:space-between">
+ <div class="all_block04 flex_c_c" style="width: 49% ">鍏ュ簱鏁�</div>
+ <div class="all_block04 flex_c_c" style="width: 49% ">{{ i.ouquantity }}</div>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ <div style="height: 260px;">
+ <div id="all02_1" class="flex_c_c" style="width: 100%;height:100%;" />
+ </div>
</div>
-
</div>
- <div style="width: 850px;">
+ <div style="width: 925px;">
+ <div class="smallTitle">
+ <svg-icon icon-class="cggz" class="svg_class" />
+ 閿�鍞鍗�(鏈�/瀛�)
+ </div>
+ <div
+ class="lineContent horn"
+ style="height: 450px;display: flex;flex-direction: column;justify-content: space-between"
+ >
+ <div style="height: 180px;padding: 10px;display: flex;justify-content: space-between">
+
+ <div v-for="i in RightTopData01" :key="i.Quarter" class="flex_c_s">
+ <div class="all_block03 flex_c_s">
+ <div class="flex_c_c all_block04">{{ i.Quarter }}</div>
+ <div class="" style="display: flex;justify-content:space-between">
+ <div class="all_block04 flex_c_c" style="width: 49% ">浠诲姟鏁�</div>
+ <div class="all_block04 flex_c_c" style="width: 49% ">{{ i.quantity }}</div>
+ </div>
+ <div class="" style="display: flex;justify-content:space-between">
+ <div class="all_block04 flex_c_c" style="width: 49% ">鍑哄簱鏁�</div>
+ <div class="all_block04 flex_c_c" style="width: 49% ">{{ i.ouquantity }}</div>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ <div style="height: 260px;">
+ <div id="all02" class="flex_c_c" style="width: 100%;height:100%;" />
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- 涓嬭竟-->
+ <div style="display: flex;justify-content: space-between;margin-top: 15px;">
+ <div style="width: 925px;">
+ <div class="smallTitle">
+ <svg-icon icon-class="cxjg" class="svg_class" />
+ 鐢熶骇瀹屽伐(褰撴湀)
+ </div>
+ <div
+ class="lineContent horn"
+ style="height: 380px;display: flex;flex-direction: column;justify-content: space-between"
+ >
+ <div
+ style="padding: 10px;
+ display: flex;justify-content: flex-start;
+ flex-wrap: wrap;"
+ >
+ <div v-for="i in LeftBottomData01" :key="i.wkshp_code" style="margin:0 18px" class="flex_c_s">
+ <div class="all_block01 flex_c_s">
+ <div class="flex_c_c all_block02" style="">{{ i.wkshp_name }}</div>
+ <div class="" style="display: flex;justify-content:space-between">
+ <div class="all_block02 flex_c_c" style="width: 49% ">浠诲姟鏁�</div>
+ <div class="all_block02 flex_c_c" style="width: 49% ">{{ i.plan_qty }}</div>
+ </div>
+ <div class="" style="display: flex;justify-content:space-between">
+ <div class="all_block02 flex_c_c" style="width: 49% ">瀹屽伐鏁�</div>
+ <div class="all_block02 flex_c_c" style="width: 49% ">{{ i.good_qty }}</div>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ <!-- <div style="height: 260px;">-->
+ <!-- <div id="all01" class="flex_c_c" style="width: 100%;height:100%;" />-->
+ <!-- </div>-->
+ </div>
+ </div>
+ <div style="width: 925px;">
<div class="smallTitle">
<svg-icon icon-class="ckkc" class="svg_class" />
- 涓嶈壇缁熻(杩戜竴鏈�)
+ 浠撳簱搴撳瓨
</div>
- <div style="height: 380px;">
- <dv-border-box-12>
- <div id="cjzl04" class="flex_c_c" style="width: 100%;height:100%" />
- </dv-border-box-12>
+ <div class="lineContent horn" style="height: 380px;display: flex;justify-content: space-between">
+ <div style="display: flex;justify-content: center;position: relative">
+ <div class="kb_center_block_children all_block05">
+ <div style="font-size: 24px;">{{ parseFloat(RightBottom.Y) }}</div>
+ <div class="box02" />
+ <div>鍘熸潗鏂�</div>
+ </div>
+ <!-- <div class="kb_center_block_children all_block06">-->
+ <!-- <div style="font-size: 24px;">{{ parseFloat(RightBottom.B) }}</div>-->
+ <!-- <div class="box02" />-->
+ <!-- <div>鍗婃垚鍝�</div>-->
+ <!-- </div>-->
+ <div class="kb_center_block_children all_block07">
+ <div style="font-size: 24px;">{{ parseFloat(RightBottom.C) }}</div>
+ <div class="box02" />
+ <div>浜ф垚鍝�</div>
+ </div>
+
+ </div>
</div>
</div>
</div>
@@ -76,11 +155,9 @@
<script>
import './kbCommon.css'
-import { loadEcharts, cjzl04, cjzl03_2, cjzl03 } from '@/utils/myEcharts'
+import { loadEcharts, all02, all03 } from '@/utils/myEcharts'
import {
- WorkShopProduceBottomLeftData,
- WorkShopProduceBottomRightData,
- WorkShopProduceTopData
+ WorkShopCompreLeftBottom, WorkShopCompreLeftTop, WorkShopCompreRightBottom, WorkShopCompreRightTop
} from '@/api/kanbanManager'
export default {
@@ -88,152 +165,164 @@
data() {
return {
headTime: '',
+ tableDataRightTop: [],
- cjzl03_xData: [],
- cjzl03_yData: [],
- RightBottom: [],
+ LeftTopData01: [],
+ LeftTopData02: [],
- configTableTop: {
- headerBGC: 'rgba(38, 68 ,139, 0.2)', // 琛ㄥご鑳屾櫙鑹�
- oddRowBGC: 'transparent', // 濂囨暟琛岃儗鏅壊
- evenRowBGC: 'transparent', // 鍋舵暟琛岃儗鏅壊
- headerHeight: 45,
- waitTime: 3000,
- rowNum: 8,
+ RightTopData01: [],
+ RightTopData02: [],
- header: [
- '<span style="color:#09d8f2;">宸ュ崟鍙�</span>',
- '<span style="color:#09d8f2;">浜у搧缂栫爜</span>',
- '<span style="color:#09d8f2;">浜у搧鍚嶇О</span>',
- '<span style="color:#09d8f2;">浜у搧瑙勬牸</span>',
- '<span style="color:#09d8f2;">浠诲姟鏁伴噺</span>',
- '<span style="color:#09d8f2;">鍚堟牸鏁伴噺</span>',
- '<span style="color:#09d8f2;">涓嶈壇鏁伴噺</span>',
+ LeftBottomData01: [],
+ LeftBottomData02: [],
- '<span style="color:#09d8f2;">宸ュ簭椤哄簭</span>',
- '<span style="color:#09d8f2;">宸ュ簭缂栫爜</span>',
- '<span style="color:#09d8f2;">宸ュ簭鍚嶇О</span>',
- '<span style="color:#09d8f2;">瀹屾垚杩涘害(%)</span>'
- ],
- // '<span style="color:#09d8f2;">宸ュ簾鏁伴噺</span>',
- // '<span style="color:#09d8f2;">鏂欏簾鏁伴噺</span>',
- data: [
- // ['<span style="color:#37a2da;">琛�1鍒�1</span>', '琛�1鍒�2', '琛�1鍒�3'],
- ],
- // index: true, , 130, 130
- columnWidth: [200, 140, 350, 350, 130, 130, 130, 130, 130, 130, 130],
- align: ['center', 'center', 'center', 'center', 'center', 'center', 'center', 'center', 'center', 'center', 'center']
- // carousel: 'page'
- }
+ RightBottom: {}
}
},
created() {
setInterval(this.getNowTime, 1000)
- // 涓ゅ皬鏃剁湅鏉垮埛鏂颁竴娆�
+ // // 涓ゅ皬鏃剁湅鏉垮埛鏂颁竴娆�
setInterval(() => {
window.location.reload()
}, 1000 * 60 * 120)
},
- async mounted() {
- await this.getWorkShopProduceTopData()
- setInterval(() => {
- this.getWorkShopProduceTopData()
- }, 10 * 1000)
- await this.getWorkShopProduceBottomLeftData()
- setInterval(() => {
- this.getWorkShopProduceBottomLeftData()
- }, 20 * 1000)
- await this.getWorkShopProduceBottomRightData()
- setInterval(() => {
- this.getWorkShopProduceBottomRightData()
- }, 30 * 1000)
+ mounted() {
+ this.getAllApi()
},
methods: {
- async getWorkShopProduceTopData() {
- WorkShopProduceTopData({ wkshopcode: '02,03' }).then(res => {
- const flag = this.compareArrays(this.configTableTop.data, res.data)
- if (!flag) {
- this.configTableTop.data = res.data.map(i =>
- [
- i.wo_code,
- i.partcode,
- i.partname,
- i.partspec ? i.partspec : '/',
- i.plan_qty,
- i.good_qty,
- `<span style="color: red;">${i.ng_qty}</span>`,
- i.seq,
- i.step_code,
- i.step_name,
- parseFloat(i.schedule.toFixed(2))
- ]
- )
- // `<span style="color: red;">${i.laborbad_qty}</span>`,
- // `<span style="color: red;">${i.materielbad_qty}</span>`,
- this.$refs['scrollBoardTop'].updateRows(this.configTableTop.data)
- }
+ async getAllApi() {
+ // 宸︿笂 閲囪喘璁㈠崟
+ const res2 = await WorkShopCompreLeftBottom()
+ res2.data.BottomLeftTop.forEach(i => {
+ this.LeftTopData01.push({
+ Quarter: i.Quarter,
+ quantity: i.quantity,
+ ouquantity: i.ouquantity
+ })
})
- },
- async getWorkShopProduceBottomLeftData() {
- const temp = [
- // { code: '101', name: '鍙戞场杞﹂棿' },
- // { code: '102', name: '鎸ゅ嚭杞﹂棿' },
- // { code: '103', name: '鍖呰杞﹂棿' },
- // { code: '001', name: '娴嬭瘯杞﹂棿' }
+ res2.data.BottomLeftBottom.forEach(i => {
+ this.LeftTopData02.push({
+ Month: i.Month + '鏈�',
+ quantity: i.quantity,
+ ouquantity: i.ouquantity
+ })
+ })
+ loadEcharts('all02_1', all02(this.LeftTopData02, '姣忔湀閲囪喘鏁伴噺/鍏ュ簱鏁伴噺'))
+ setInterval(() => {
+ this.LeftTopData01 = []
+ this.LeftTopData02 = []
+ WorkShopCompreLeftBottom().then(res2 => {
+ res2.data.BottomLeftTop.forEach(i => {
+ this.LeftTopData01.push({
+ Quarter: i.Quarter,
+ quantity: i.quantity,
+ ouquantity: i.ouquantity
+ })
+ })
+ res2.data.BottomLeftBottom.forEach(i => {
+ this.LeftTopData02.push({
+ Month: i.Month + '鏈�',
+ quantity: i.quantity,
+ ouquantity: i.ouquantity
+ })
+ })
+ loadEcharts('all02_1', all02(this.LeftTopData02, '姣忔湀閲囪喘鏁伴噺/鍏ュ簱鏁伴噺'))
+ })
+ }, 1000 * 35)
- // { code: '01', name: '閲戝伐杞﹂棿' },
- // { code: '02', name: '閾濅慨' },
- // { code: '03', name: '鍙伴捇' },
- // { code: '04', name: '鍠锋紗' },
- // { code: '05', name: '缁勮鎴愬搧' }
+ // 鍙充笂 閿�鍞鍗�
+ const res3 = await WorkShopCompreRightTop()
+ res3.data.RightTop.forEach(i => {
+ this.RightTopData01.push({
+ Quarter: i.Quarter,
+ quantity: i.quantity,
+ ouquantity: i.ouquantity
+ })
+ })
+ res3.data.RightBottom.forEach(i => {
+ this.RightTopData02.push({
+ Month: i.Month + '鏈�',
+ quantity: i.quantity,
+ ouquantity: i.ouquantity
+ })
+ })
+ loadEcharts('all02', all02(this.RightTopData02, '姣忔湀璁㈠崟鏁伴噺/鍑哄簱鏁伴噺'))
+ setInterval(() => {
+ WorkShopCompreRightTop().then(res3 => {
+ this.RightTopData01 = []
+ this.RightTopData02 = []
+ res3.data.RightTop.forEach(i => {
+ this.RightTopData01.push({
+ Quarter: i.Quarter,
+ quantity: i.quantity,
+ ouquantity: i.ouquantity
+ })
+ })
+ res3.data.RightBottom.forEach(i => {
+ this.RightTopData02.push({
+ Month: i.Month + '鏈�',
+ quantity: i.quantity,
+ ouquantity: i.ouquantity
+ })
+ })
+ loadEcharts('all02', all02(this.RightTopData02, '姣忔湀璁㈠崟鏁伴噺/鍑哄簱鏁伴噺'))
+ })
+ }, 1000 * 40)
- { code: '02', name: '閲戝伐杞﹂棿' },
- { code: '03', name: '鐒婃帴杞﹂棿' }
+ const temp2 = [
+ { wkshp_code: '02', wkshp_name: '閲戝伐杞﹂棿' },
+ { wkshp_code: '03', wkshp_name: '鐒婃帴杞﹂棿' }
]
- const res4 = await WorkShopProduceBottomLeftData({ wkshopcode: temp.map(i => i.code).join(',') })
- // this.cjzl03_xData = res4.data['101,001'].map(i => i.click_date)
- // this.cjzl03_yData = res4.data['101,001'].map(i => i.count)
-
- const a = res4.data['004'].map(i => i.click_date) // echarts妯潗鏍�
- const b = temp.map(i => i.name)// legendData鍊�
- const c = [
- // res4.data['01'].map(i => i.count),
- // res4.data['02'].map(i => i.count),
- // res4.data['03'].map(i => i.count),
- // res4.data['04'].map(i => i.count),
- // res4.data['05'].map(i => i.count)
- res4.data['004'].map(i => i.count)
- ]// 绾靛潗鏍囧��
-
- loadEcharts('cjzl03', cjzl03(a, b, c))
- },
-
- async getWorkShopProduceBottomRightData() {
- const temp = [
- // { code: '101', name: '鍙戞场杞﹂棿' },
- // { code: '102', name: '鎸ゅ嚭杞﹂棿' },
- // { code: '103', name: '鍖呰杞﹂棿' },
- // { code: '001', name: '娴嬭瘯杞﹂棿' }
-
- // { code: '01', name: '閲戝伐杞﹂棿' },
- // { code: '02', name: '閾濅慨' },
- // { code: '03', name: '鍙伴捇' },
- // { code: '04', name: '鍠锋紗' },
- // { code: '05', name: '缁勮鎴愬搧' }
-
- { code: '02', name: '閲戝伐杞﹂棿' },
- { code: '03', name: '鐒婃帴杞﹂棿' }
- ]
- const res5 = await WorkShopProduceBottomRightData({ wkshopcode: temp.map(i => i.code).join(',') })
- this.RightBottom = res5.data
- if (this.RightBottom.length > 0) {
- loadEcharts('cjzl04', cjzl04(this.RightBottom.map(i => i.name), this.RightBottom.map(i => i.cont)))
+ // 宸︿笅 鐢熶骇璁㈠崟
+ const res4 = await WorkShopCompreLeftTop({ wkshopcode: temp2.map(i => i.wkshp_code).join(',') })
+ for (const res4Key in res4.data.LeftTop) {
+ const data = {
+ good_qty: 0,
+ plan_qty: 0,
+ wkshp_code: '',
+ wkshp_name: ''
+ }
+ data.good_qty = res4.data.LeftTop[res4Key][0].good_qty
+ data.plan_qty = res4.data.LeftTop[res4Key][0].plan_qty
+ data.wkshp_code = res4.data.LeftTop[res4Key][0].wkshp_code
+ data.wkshp_name = temp2.find(i => i.wkshp_code === data.wkshp_code).wkshp_name
+ this.LeftBottomData01.push(data)
}
- },
+ setInterval(() => {
+ WorkShopCompreLeftTop({ wkshopcode: temp2.map(i => i.wkshp_code).join(',') }).then(res2 => {
+ this.LeftBottomData01 = []
+ this.LeftBottomData02 = []
+ for (const res4Key in res4.data.LeftTop) {
+ const data = {
+ good_qty: 0,
+ plan_qty: 0,
+ wkshp_code: '',
+ wkshp_name: ''
+ }
+
+ data.good_qty = res2.data.LeftTop[res4Key][0].good_qty
+ data.plan_qty = res2.data.LeftTop[res4Key][0].plan_qty
+ data.wkshp_code = res2.data.LeftTop[res4Key][0].wkshp_code
+ data.wkshp_name = temp2.find(i => i.wkshp_code === data.wkshp_code).wkshp_name
+ this.LeftBottomData01.push(data)
+ }
+ })
+ }, 1000 * 30)
+
+ // 鍙充笅 浠撳簱搴撳瓨
+ const res5 = await WorkShopCompreRightBottom()
+ this.RightBottom = res5.data
+
+ setInterval(() => {
+ WorkShopCompreRightBottom().then(res5 => {
+ this.RightBottom = res5.data
+ })
+ }, 1000 * 60)
+ },
// 鑾峰彇褰撳墠鏃堕棿
getNowTime() {
const dt = new Date()
@@ -250,23 +339,25 @@
this.headTime = `${y}-${m}-${d} ${hh}:${mm}:${ss} ${week}`
},
-
- // 涓や釜鏁扮粍鍋氬姣�
- compareArrays(arr1, arr2) {
- const set1 = new Set(arr1)
- const set2 = new Set(arr2)
-
- if (set1.size !== set2.size) {
- return false
+ headerCellStyle() {
+ return {
+ backgroundColor: 'transparent ',
+ padding: '10px 0',
+ textAlign: 'center',
+ color: '#07acc2',
+ border: 'none',
+ fontSize: '20px'
}
-
- for (const value of set1) {
- if (!set2.has(value)) {
- return false
- }
+ },
+ cellStyle() {
+ return {
+ padding: '7px 0',
+ textAlign: 'center',
+ backgroundColor: 'transparent ',
+ color: '#c7e7ff',
+ border: 'none',
+ fontSize: '20px'
}
-
- return true
}
}
@@ -275,13 +366,120 @@
</script>
<style lang="scss" scoped>
-
-::v-deep .header-item {
- font-size: 16px !important;
+$main_color: #09d8f2;
+$color01: #00FFFF;
+.tableData {
+ background: transparent;
}
-::v-deep .row-item {
- font-size: 16px !important;
+.el-table::before {
+ height: 0;
}
+.el-table__empty-text {
+ color: $main_color;
+}
+
+.tableDataCell {
+ ::v-deep .cell {
+ padding: 0 2px;
+ }
+}
+
+::v-deep .el-table__body-wrapper::-webkit-scrollbar {
+ /* width: 0;瀹藉害涓�0鏆楄棌 */
+ width: 0;
+ background: transparent;
+}
+
+::v-deep .el-table th,
+::v-deep .el-table tr,
+::v-deep .el-table td {
+ background-color: transparent;
+}
+
+.all_block01 {
+ width: 187px;
+ height: 180px;
+}
+
+.all_block02 {
+ width: 100%;
+ height: 49px;
+ background: rgba(9, 216, 242, 0.1);
+}
+
+.all_block03 {
+ width: 199px;
+ height: 180px;
+}
+
+.all_block04 {
+ width: 100%;
+ height: 49px;
+ background: rgba(9, 216, 242, 0.1);
+}
+
+.kb_center_block_children {
+ height: 180px;
+ //border: 1px solid $kbBorderColor;
+ width: 240px;
+ display: flex;
+ z-index: 2;
+ justify-content: space-around;
+ align-items: center;
+ flex-direction: column;
+ margin: 10px;
+ font-size: 22px;
+
+ .box02 {
+ background: url("../../assets/images/box02.png") no-repeat;
+ transform: scale(1.5);
+ width: 145px;
+ height: 84px;
+
+ }
+}
+
+.all_block05 {
+ position: absolute;
+ animation: upDown 3s ease-in-out infinite;
+ left: 170px;
+}
+
+//.all_block06 {
+// position: absolute;
+// animation: upDown2 3s ease-in-out infinite;
+// left: 320px;
+//}
+
+.all_block07 {
+ position: absolute;
+ animation: upDown2 3s ease-in-out infinite;
+ left: 470px;
+}
+
+@keyframes upDown {
+ 0% {
+ top: 50px;
+ }
+ 50% {
+ top: 100px;
+ }
+ 100% {
+ top: 50px;
+ }
+}
+
+@keyframes upDown2 {
+ 0% {
+ top: 100px;
+ }
+ 50% {
+ top: 50px;
+ }
+ 100% {
+ top: 100px;
+ }
+}
</style>
diff --git a/src/views/kanbanManager/jghjcj2.vue b/src/views/kanbanManager/jghjcj2.vue
new file mode 100644
index 0000000..57c6f25
--- /dev/null
+++ b/src/views/kanbanManager/jghjcj2.vue
@@ -0,0 +1,287 @@
+<template>
+ <div>
+ <div class="kb_dashboard" style="display:flex;flex-direction: column;justify-content: space-between">
+
+ <div class="kb_backgroundCustom" />
+
+ <div class="kb_header">
+ <div class="kb_headTime" style="top: 35px;left: 20px">
+ <span>娴欐睙闃块瞾鍏嬪仴韬櫒鏉愭湁闄愬叕鍙�</span>
+ </div>
+
+ <div class="kb_headTime kb_header_text" style="top: 35px;left: 772px">
+ <span>閲戝伐鐒婃帴杞﹂棿鏁板瓧鍖栫湅鏉�</span>
+ </div>
+
+ <div class="kb_headTime" style="top: 35px;right: 25px">
+ <span>{{ headTime }}</span>
+ </div>
+ </div>
+
+ <div
+ style=" padding:5px 20px 20px 20px;z-index:2;height: 940px;flex-direction: column;justify-content: space-between;"
+ >
+ <!-- 涓婅竟-->
+ <div style="display: flex;justify-content: space-between">
+ <div style="width:100%">
+ <div class="smallTitle">
+ <svg-icon icon-class="cxjg" class="svg_class" />
+ 鐢熶骇淇℃伅
+ </div>
+
+ <div style="height: 450px">
+ <dv-border-box-12>
+ <dv-scroll-board
+ ref="scrollBoardTop"
+ :config="configTableTop"
+ style="width: 99%;height: 430px;margin:0 auto;padding-top: 13px;"
+ />
+ </dv-border-box-12>
+ </div>
+
+ </div>
+ </div>
+
+ <!-- 涓嬭竟-->
+ <div style="display: flex;justify-content: space-between;margin-top: 15px;">
+ <div style="width: 1000px;">
+ <div class="smallTitle">
+ <svg-icon icon-class="blcs" class="svg_class" />
+ 璐ㄩ噺涓嶈壇(杩戜竴鍛�)
+ </div>
+
+ <div style="height: 380px;">
+ <dv-border-box-12>
+ <div id="cjzl03" class="flex_c_c" style="width: 100%;height:100%" />
+ </dv-border-box-12>
+ </div>
+
+ </div>
+ <div style="width: 850px;">
+ <div class="smallTitle">
+ <svg-icon icon-class="ckkc" class="svg_class" />
+ 涓嶈壇缁熻(杩戜竴鏈�)
+ </div>
+ <div style="height: 380px;">
+ <dv-border-box-12>
+ <div id="cjzl04" class="flex_c_c" style="width: 100%;height:100%" />
+ </dv-border-box-12>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import './kbCommon.css'
+import { loadEcharts, cjzl04, cjzl03_2, cjzl03 } from '@/utils/myEcharts'
+import {
+ WorkShopProduceBottomLeftData,
+ WorkShopProduceBottomRightData,
+ WorkShopProduceTopData
+} from '@/api/kanbanManager'
+
+export default {
+ name: 'Cjsc',
+ data() {
+ return {
+ headTime: '',
+
+ cjzl03_xData: [],
+ cjzl03_yData: [],
+ RightBottom: [],
+
+ configTableTop: {
+ headerBGC: 'rgba(38, 68 ,139, 0.2)', // 琛ㄥご鑳屾櫙鑹�
+ oddRowBGC: 'transparent', // 濂囨暟琛岃儗鏅壊
+ evenRowBGC: 'transparent', // 鍋舵暟琛岃儗鏅壊
+ headerHeight: 45,
+ waitTime: 3000,
+ rowNum: 8,
+
+ header: [
+ '<span style="color:#09d8f2;">宸ュ崟鍙�</span>',
+ '<span style="color:#09d8f2;">浜у搧缂栫爜</span>',
+ '<span style="color:#09d8f2;">浜у搧鍚嶇О</span>',
+ '<span style="color:#09d8f2;">浜у搧瑙勬牸</span>',
+ '<span style="color:#09d8f2;">浠诲姟鏁伴噺</span>',
+ '<span style="color:#09d8f2;">鍚堟牸鏁伴噺</span>',
+ '<span style="color:#09d8f2;">涓嶈壇鏁伴噺</span>',
+
+ '<span style="color:#09d8f2;">宸ュ簭椤哄簭</span>',
+ '<span style="color:#09d8f2;">宸ュ簭缂栫爜</span>',
+ '<span style="color:#09d8f2;">宸ュ簭鍚嶇О</span>',
+ '<span style="color:#09d8f2;">瀹屾垚杩涘害(%)</span>'
+ ],
+ // '<span style="color:#09d8f2;">宸ュ簾鏁伴噺</span>',
+ // '<span style="color:#09d8f2;">鏂欏簾鏁伴噺</span>',
+ data: [
+ // ['<span style="color:#37a2da;">琛�1鍒�1</span>', '琛�1鍒�2', '琛�1鍒�3'],
+ ],
+ // index: true, , 130, 130
+ columnWidth: [200, 140, 350, 350, 130, 130, 130, 130, 130, 130, 130],
+ align: ['center', 'center', 'center', 'center', 'center', 'center', 'center', 'center', 'center', 'center', 'center']
+ // carousel: 'page'
+ }
+
+ }
+ },
+ created() {
+ setInterval(this.getNowTime, 1000)
+
+ // 涓ゅ皬鏃剁湅鏉垮埛鏂颁竴娆�
+ setInterval(() => {
+ window.location.reload()
+ }, 1000 * 60 * 120)
+ },
+ async mounted() {
+ await this.getWorkShopProduceTopData()
+ setInterval(() => {
+ this.getWorkShopProduceTopData()
+ }, 10 * 1000)
+ await this.getWorkShopProduceBottomLeftData()
+ setInterval(() => {
+ this.getWorkShopProduceBottomLeftData()
+ }, 20 * 1000)
+ await this.getWorkShopProduceBottomRightData()
+ setInterval(() => {
+ this.getWorkShopProduceBottomRightData()
+ }, 30 * 1000)
+ },
+ methods: {
+ async getWorkShopProduceTopData() {
+ WorkShopProduceTopData({ wkshopcode: '02,03' }).then(res => {
+ const flag = this.compareArrays(this.configTableTop.data, res.data)
+ if (!flag) {
+ this.configTableTop.data = res.data.map(i =>
+ [
+ i.wo_code,
+ i.partcode,
+ i.partname,
+ i.partspec ? i.partspec : '/',
+ i.plan_qty,
+ i.good_qty,
+ `<span style="color: red;">${i.ng_qty}</span>`,
+ i.seq,
+ i.step_code,
+ i.step_name,
+ parseFloat(i.schedule.toFixed(2))
+ ]
+ )
+ // `<span style="color: red;">${i.laborbad_qty}</span>`,
+ // `<span style="color: red;">${i.materielbad_qty}</span>`,
+ this.$refs['scrollBoardTop'].updateRows(this.configTableTop.data)
+ }
+ })
+ },
+ async getWorkShopProduceBottomLeftData() {
+ const temp = [
+ // { code: '101', name: '鍙戞场杞﹂棿' },
+ // { code: '102', name: '鎸ゅ嚭杞﹂棿' },
+ // { code: '103', name: '鍖呰杞﹂棿' },
+ // { code: '001', name: '娴嬭瘯杞﹂棿' }
+
+ // { code: '01', name: '閲戝伐杞﹂棿' },
+ // { code: '02', name: '閾濅慨' },
+ // { code: '03', name: '鍙伴捇' },
+ // { code: '04', name: '鍠锋紗' },
+ // { code: '05', name: '缁勮鎴愬搧' }
+
+ { code: '02', name: '閲戝伐杞﹂棿' },
+ { code: '03', name: '鐒婃帴杞﹂棿' }
+ ]
+
+ const res4 = await WorkShopProduceBottomLeftData({ wkshopcode: temp.map(i => i.code).join(',') })
+ // this.cjzl03_xData = res4.data['101,001'].map(i => i.click_date)
+ // this.cjzl03_yData = res4.data['101,001'].map(i => i.count)
+
+ const a = res4.data['03'].map(i => i.click_date) // echarts妯潗鏍�
+ const b = temp.map(i => i.name)// legendData鍊�
+ const c = [
+ // res4.data['01'].map(i => i.count),
+ // res4.data['02'].map(i => i.count),
+ // res4.data['03'].map(i => i.count),
+ res4.data['02'].map(i => i.count),
+ res4.data['03'].map(i => i.count)
+ // res4.data['004'].map(i => i.count)
+ ]// 绾靛潗鏍囧��
+
+ loadEcharts('cjzl03', cjzl03(a, b, c))
+ },
+
+ async getWorkShopProduceBottomRightData() {
+ const temp = [
+ // { code: '101', name: '鍙戞场杞﹂棿' },
+ // { code: '102', name: '鎸ゅ嚭杞﹂棿' },
+ // { code: '103', name: '鍖呰杞﹂棿' },
+ // { code: '001', name: '娴嬭瘯杞﹂棿' }
+
+ // { code: '01', name: '閲戝伐杞﹂棿' },
+ // { code: '02', name: '閾濅慨' },
+ // { code: '03', name: '鍙伴捇' },
+ // { code: '04', name: '鍠锋紗' },
+ // { code: '05', name: '缁勮鎴愬搧' }
+
+ { code: '02', name: '閲戝伐杞﹂棿' },
+ { code: '03', name: '鐒婃帴杞﹂棿' }
+ ]
+ const res5 = await WorkShopProduceBottomRightData({ wkshopcode: temp.map(i => i.code).join(',') })
+ this.RightBottom = res5.data
+ if (this.RightBottom.length > 0) {
+ loadEcharts('cjzl04', cjzl04(this.RightBottom.map(i => i.name), this.RightBottom.map(i => i.cont)))
+ }
+ },
+
+ // 鑾峰彇褰撳墠鏃堕棿
+ getNowTime() {
+ const dt = new Date()
+ const wk = dt.getDay()
+ const y = dt.getFullYear()
+ const m = (dt.getMonth() + 1 + '').padStart(2, '0')
+ const d = (dt.getDate() + '').padStart(2, '0')
+
+ const hh = (dt.getHours() + '').padStart(2, '0')
+ const mm = (dt.getMinutes() + '').padStart(2, '0')
+ const ss = (dt.getSeconds() + '').padStart(2, '0')
+ const weeks = ['鏄熸湡鏃�', '鏄熸湡涓�', '鏄熸湡浜�', '鏄熸湡涓�', '鏄熸湡鍥�', '鏄熸湡浜�', '鏄熸湡鍏�']
+ const week = weeks[wk]
+
+ this.headTime = `${y}-${m}-${d} ${hh}:${mm}:${ss} ${week}`
+ },
+
+ // 涓や釜鏁扮粍鍋氬姣�
+ compareArrays(arr1, arr2) {
+ const set1 = new Set(arr1)
+ const set2 = new Set(arr2)
+
+ if (set1.size !== set2.size) {
+ return false
+ }
+
+ for (const value of set1) {
+ if (!set2.has(value)) {
+ return false
+ }
+ }
+
+ return true
+ }
+
+ }
+
+}
+</script>
+
+<style lang="scss" scoped>
+
+::v-deep .header-item {
+ font-size: 16px !important;
+}
+
+::v-deep .row-item {
+ font-size: 16px !important;
+}
+
+</style>
diff --git a/src/views/kanbanManager/jghjcj_back.vue b/src/views/kanbanManager/jghjcj_back.vue
new file mode 100644
index 0000000..6f48418
--- /dev/null
+++ b/src/views/kanbanManager/jghjcj_back.vue
@@ -0,0 +1,287 @@
+<template>
+ <div>
+ <div class="kb_dashboard" style="display:flex;flex-direction: column;justify-content: space-between">
+
+ <div class="kb_backgroundCustom" />
+
+ <div class="kb_header">
+ <div class="kb_headTime" style="top: 35px;left: 20px">
+ <span>娴欐睙闃块瞾鍏嬪仴韬櫒鏉愭湁闄愬叕鍙�</span>
+ </div>
+
+ <div class="kb_headTime kb_header_text" style="top: 35px;left: 772px">
+ <span>閲戝伐鐒婃帴杞﹂棿鏁板瓧鍖栫湅鏉�</span>
+ </div>
+
+ <div class="kb_headTime" style="top: 35px;right: 25px">
+ <span>{{ headTime }}</span>
+ </div>
+ </div>
+
+ <div
+ style=" padding:5px 20px 20px 20px;z-index:2;height: 940px;flex-direction: column;justify-content: space-between;"
+ >
+ <!-- 涓婅竟-->
+ <div style="display: flex;justify-content: space-between">
+ <div style="width:100%">
+ <div class="smallTitle">
+ <svg-icon icon-class="cxjg" class="svg_class" />
+ 鐢熶骇淇℃伅
+ </div>
+
+ <div style="height: 450px">
+ <dv-border-box-12>
+ <dv-scroll-board
+ ref="scrollBoardTop"
+ :config="configTableTop"
+ style="width: 99%;height: 430px;margin:0 auto;padding-top: 13px;"
+ />
+ </dv-border-box-12>
+ </div>
+
+ </div>
+ </div>
+
+ <!-- 涓嬭竟-->
+ <div style="display: flex;justify-content: space-between;margin-top: 15px;">
+ <div style="width: 1000px;">
+ <div class="smallTitle">
+ <svg-icon icon-class="blcs" class="svg_class" />
+ 璐ㄩ噺涓嶈壇(杩戜竴鍛�)
+ </div>
+
+ <div style="height: 380px;">
+ <dv-border-box-12>
+ <div id="cjzl03" class="flex_c_c" style="width: 100%;height:100%" />
+ </dv-border-box-12>
+ </div>
+
+ </div>
+ <div style="width: 850px;">
+ <div class="smallTitle">
+ <svg-icon icon-class="ckkc" class="svg_class" />
+ 涓嶈壇缁熻(杩戜竴鏈�)
+ </div>
+ <div style="height: 380px;">
+ <dv-border-box-12>
+ <div id="cjzl04" class="flex_c_c" style="width: 100%;height:100%" />
+ </dv-border-box-12>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import './kbCommon.css'
+import { loadEcharts, cjzl04, cjzl03_2, cjzl03 } from '@/utils/myEcharts'
+import {
+ WorkShopProduceBottomLeftData,
+ WorkShopProduceBottomRightData,
+ WorkShopProduceTopData
+} from '@/api/kanbanManager'
+
+export default {
+ name: 'Cjsc',
+ data() {
+ return {
+ headTime: '',
+
+ cjzl03_xData: [],
+ cjzl03_yData: [],
+ RightBottom: [],
+
+ configTableTop: {
+ headerBGC: 'rgba(38, 68 ,139, 0.2)', // 琛ㄥご鑳屾櫙鑹�
+ oddRowBGC: 'transparent', // 濂囨暟琛岃儗鏅壊
+ evenRowBGC: 'transparent', // 鍋舵暟琛岃儗鏅壊
+ headerHeight: 45,
+ waitTime: 3000,
+ rowNum: 8,
+
+ header: [
+ '<span style="color:#09d8f2;">宸ュ崟鍙�</span>',
+ '<span style="color:#09d8f2;">浜у搧缂栫爜</span>',
+ '<span style="color:#09d8f2;">浜у搧鍚嶇О</span>',
+ '<span style="color:#09d8f2;">浜у搧瑙勬牸</span>',
+ '<span style="color:#09d8f2;">浠诲姟鏁伴噺</span>',
+ '<span style="color:#09d8f2;">鍚堟牸鏁伴噺</span>',
+ '<span style="color:#09d8f2;">涓嶈壇鏁伴噺</span>',
+
+ '<span style="color:#09d8f2;">宸ュ簭椤哄簭</span>',
+ '<span style="color:#09d8f2;">宸ュ簭缂栫爜</span>',
+ '<span style="color:#09d8f2;">宸ュ簭鍚嶇О</span>',
+ '<span style="color:#09d8f2;">瀹屾垚杩涘害(%)</span>'
+ ],
+ // '<span style="color:#09d8f2;">宸ュ簾鏁伴噺</span>',
+ // '<span style="color:#09d8f2;">鏂欏簾鏁伴噺</span>',
+ data: [
+ // ['<span style="color:#37a2da;">琛�1鍒�1</span>', '琛�1鍒�2', '琛�1鍒�3'],
+ ],
+ // index: true, , 130, 130
+ columnWidth: [200, 140, 350, 350, 130, 130, 130, 130, 130, 130, 130],
+ align: ['center', 'center', 'center', 'center', 'center', 'center', 'center', 'center', 'center', 'center', 'center']
+ // carousel: 'page'
+ }
+
+ }
+ },
+ created() {
+ setInterval(this.getNowTime, 1000)
+
+ // 涓ゅ皬鏃剁湅鏉垮埛鏂颁竴娆�
+ setInterval(() => {
+ window.location.reload()
+ }, 1000 * 60 * 120)
+ },
+ async mounted() {
+ await this.getWorkShopProduceTopData()
+ setInterval(() => {
+ this.getWorkShopProduceTopData()
+ }, 10 * 1000)
+ await this.getWorkShopProduceBottomLeftData()
+ setInterval(() => {
+ this.getWorkShopProduceBottomLeftData()
+ }, 20 * 1000)
+ await this.getWorkShopProduceBottomRightData()
+ setInterval(() => {
+ this.getWorkShopProduceBottomRightData()
+ }, 30 * 1000)
+ },
+ methods: {
+ async getWorkShopProduceTopData() {
+ WorkShopProduceTopData({ wkshopcode: '02,03' }).then(res => {
+ const flag = this.compareArrays(this.configTableTop.data, res.data)
+ if (!flag) {
+ this.configTableTop.data = res.data.map(i =>
+ [
+ i.wo_code,
+ i.partcode,
+ i.partname,
+ i.partspec ? i.partspec : '/',
+ i.plan_qty,
+ i.good_qty,
+ `<span style="color: red;">${i.ng_qty}</span>`,
+ i.seq,
+ i.step_code,
+ i.step_name,
+ parseFloat(i.schedule.toFixed(2))
+ ]
+ )
+ // `<span style="color: red;">${i.laborbad_qty}</span>`,
+ // `<span style="color: red;">${i.materielbad_qty}</span>`,
+ this.$refs['scrollBoardTop'].updateRows(this.configTableTop.data)
+ }
+ })
+ },
+ async getWorkShopProduceBottomLeftData() {
+ const temp = [
+ // { code: '101', name: '鍙戞场杞﹂棿' },
+ // { code: '102', name: '鎸ゅ嚭杞﹂棿' },
+ // { code: '103', name: '鍖呰杞﹂棿' },
+ // { code: '001', name: '娴嬭瘯杞﹂棿' }
+
+ // { code: '01', name: '閲戝伐杞﹂棿' },
+ // { code: '02', name: '閾濅慨' },
+ // { code: '03', name: '鍙伴捇' },
+ // { code: '04', name: '鍠锋紗' },
+ // { code: '05', name: '缁勮鎴愬搧' }
+
+ { code: '02', name: '閲戝伐杞﹂棿' },
+ { code: '03', name: '鐒婃帴杞﹂棿' }
+ ]
+
+ const res4 = await WorkShopProduceBottomLeftData({ wkshopcode: temp.map(i => i.code).join(',') })
+ // this.cjzl03_xData = res4.data['101,001'].map(i => i.click_date)
+ // this.cjzl03_yData = res4.data['101,001'].map(i => i.count)
+
+ const a = res4.data['004'].map(i => i.click_date) // echarts妯潗鏍�
+ const b = temp.map(i => i.name)// legendData鍊�
+ const c = [
+ // res4.data['01'].map(i => i.count),
+ // res4.data['02'].map(i => i.count),
+ // res4.data['03'].map(i => i.count),
+ // res4.data['04'].map(i => i.count),
+ // res4.data['05'].map(i => i.count)
+ res4.data['004'].map(i => i.count)
+ ]// 绾靛潗鏍囧��
+
+ loadEcharts('cjzl03', cjzl03(a, b, c))
+ },
+
+ async getWorkShopProduceBottomRightData() {
+ const temp = [
+ // { code: '101', name: '鍙戞场杞﹂棿' },
+ // { code: '102', name: '鎸ゅ嚭杞﹂棿' },
+ // { code: '103', name: '鍖呰杞﹂棿' },
+ // { code: '001', name: '娴嬭瘯杞﹂棿' }
+
+ // { code: '01', name: '閲戝伐杞﹂棿' },
+ // { code: '02', name: '閾濅慨' },
+ // { code: '03', name: '鍙伴捇' },
+ // { code: '04', name: '鍠锋紗' },
+ // { code: '05', name: '缁勮鎴愬搧' }
+
+ { code: '02', name: '閲戝伐杞﹂棿' },
+ { code: '03', name: '鐒婃帴杞﹂棿' }
+ ]
+ const res5 = await WorkShopProduceBottomRightData({ wkshopcode: temp.map(i => i.code).join(',') })
+ this.RightBottom = res5.data
+ if (this.RightBottom.length > 0) {
+ loadEcharts('cjzl04', cjzl04(this.RightBottom.map(i => i.name), this.RightBottom.map(i => i.cont)))
+ }
+ },
+
+ // 鑾峰彇褰撳墠鏃堕棿
+ getNowTime() {
+ const dt = new Date()
+ const wk = dt.getDay()
+ const y = dt.getFullYear()
+ const m = (dt.getMonth() + 1 + '').padStart(2, '0')
+ const d = (dt.getDate() + '').padStart(2, '0')
+
+ const hh = (dt.getHours() + '').padStart(2, '0')
+ const mm = (dt.getMinutes() + '').padStart(2, '0')
+ const ss = (dt.getSeconds() + '').padStart(2, '0')
+ const weeks = ['鏄熸湡鏃�', '鏄熸湡涓�', '鏄熸湡浜�', '鏄熸湡涓�', '鏄熸湡鍥�', '鏄熸湡浜�', '鏄熸湡鍏�']
+ const week = weeks[wk]
+
+ this.headTime = `${y}-${m}-${d} ${hh}:${mm}:${ss} ${week}`
+ },
+
+ // 涓や釜鏁扮粍鍋氬姣�
+ compareArrays(arr1, arr2) {
+ const set1 = new Set(arr1)
+ const set2 = new Set(arr2)
+
+ if (set1.size !== set2.size) {
+ return false
+ }
+
+ for (const value of set1) {
+ if (!set2.has(value)) {
+ return false
+ }
+ }
+
+ return true
+ }
+
+ }
+
+}
+</script>
+
+<style lang="scss" scoped>
+
+::v-deep .header-item {
+ font-size: 16px !important;
+}
+
+::v-deep .row-item {
+ font-size: 16px !important;
+}
+
+</style>
diff --git a/src/views/kanbanManager/zpcj.vue b/src/views/kanbanManager/zpcj.vue
index 8e20b9d..7d18b1b 100644
--- a/src/views/kanbanManager/zpcj.vue
+++ b/src/views/kanbanManager/zpcj.vue
@@ -17,55 +17,134 @@
<span>{{ headTime }}</span>
</div>
</div>
-
<div
style=" padding:5px 20px 20px 20px;z-index:2;height: 940px;flex-direction: column;justify-content: space-between;"
>
<!-- 涓婅竟-->
<div style="display: flex;justify-content: space-between">
- <div style="width:100%">
- <div class="smallTitle">
- <svg-icon icon-class="cxjg" class="svg_class" />
- 鐢熶骇淇℃伅
- </div>
-
- <div style="height: 450px">
- <dv-border-box-12>
- <dv-scroll-board
- ref="scrollBoardTop"
- :config="configTableTop"
- style="width: 99%;height: 430px;margin:0 auto;padding-top: 13px;"
- />
- </dv-border-box-12>
- </div>
-
- </div>
- </div>
-
- <!-- 涓嬭竟-->
- <div style="display: flex;justify-content: space-between;margin-top: 15px;">
- <div style="width: 1000px;">
+ <div style="width: 925px;">
<div class="smallTitle">
<svg-icon icon-class="blcs" class="svg_class" />
- 璐ㄩ噺涓嶈壇(杩戜竴鍛�)
+ 閲囪喘璁㈠崟(鏈�/瀛�)
</div>
+ <div
+ class="lineContent horn"
+ style="height: 450px;display: flex;flex-direction: column;justify-content: space-between"
+ >
+ <div style="height: 180px;padding: 10px;display: flex;justify-content: space-between">
- <div style="height: 380px;">
- <dv-border-box-12>
- <div id="cjzl03" class="flex_c_c" style="width: 100%;height:100%" />
- </dv-border-box-12>
+ <div v-for="i in LeftTopData01" :key="i.Quarter" class="flex_c_s">
+ <div class="all_block03 flex_c_s">
+ <div class="flex_c_c all_block04">{{ i.Quarter }}</div>
+ <div class="" style="display: flex;justify-content:space-between">
+ <div class="all_block04 flex_c_c" style="width: 49% ">浠诲姟鏁�</div>
+ <div class="all_block04 flex_c_c" style="width: 49% ">{{ i.quantity }}</div>
+ </div>
+ <div class="" style="display: flex;justify-content:space-between">
+ <div class="all_block04 flex_c_c" style="width: 49% ">鍏ュ簱鏁�</div>
+ <div class="all_block04 flex_c_c" style="width: 49% ">{{ i.ouquantity }}</div>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ <div style="height: 260px;">
+ <div id="all02_1" class="flex_c_c" style="width: 100%;height:100%;" />
+ </div>
</div>
-
</div>
- <div style="width: 850px;">
+ <div style="width: 925px;">
+ <div class="smallTitle">
+ <svg-icon icon-class="cggz" class="svg_class" />
+ 閿�鍞鍗�(鏈�/瀛�)
+ </div>
+ <div
+ class="lineContent horn"
+ style="height: 450px;display: flex;flex-direction: column;justify-content: space-between"
+ >
+ <div style="height: 180px;padding: 10px;display: flex;justify-content: space-between">
+
+ <div v-for="i in RightTopData01" :key="i.Quarter" class="flex_c_s">
+ <div class="all_block03 flex_c_s">
+ <div class="flex_c_c all_block04">{{ i.Quarter }}</div>
+ <div class="" style="display: flex;justify-content:space-between">
+ <div class="all_block04 flex_c_c" style="width: 49% ">浠诲姟鏁�</div>
+ <div class="all_block04 flex_c_c" style="width: 49% ">{{ i.quantity }}</div>
+ </div>
+ <div class="" style="display: flex;justify-content:space-between">
+ <div class="all_block04 flex_c_c" style="width: 49% ">鍑哄簱鏁�</div>
+ <div class="all_block04 flex_c_c" style="width: 49% ">{{ i.ouquantity }}</div>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ <div style="height: 260px;">
+ <div id="all02" class="flex_c_c" style="width: 100%;height:100%;" />
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- 涓嬭竟-->
+ <div style="display: flex;justify-content: space-between;margin-top: 15px;">
+ <div style="width: 925px;">
+ <div class="smallTitle">
+ <svg-icon icon-class="cxjg" class="svg_class" />
+ 鐢熶骇瀹屽伐(褰撴湀)
+ </div>
+ <div
+ class="lineContent horn"
+ style="height: 380px;display: flex;flex-direction: column;justify-content: space-between"
+ >
+ <div
+ style="padding: 10px;
+ display: flex;justify-content: flex-start;
+ flex-wrap: wrap;"
+ >
+ <div v-for="i in LeftBottomData01" :key="i.wkshp_code" style="margin:0 18px" class="flex_c_s">
+ <div class="all_block01 flex_c_s">
+ <div class="flex_c_c all_block02" style="">{{ i.wkshp_name }}</div>
+ <div class="" style="display: flex;justify-content:space-between">
+ <div class="all_block02 flex_c_c" style="width: 49% ">浠诲姟鏁�</div>
+ <div class="all_block02 flex_c_c" style="width: 49% ">{{ i.plan_qty }}</div>
+ </div>
+ <div class="" style="display: flex;justify-content:space-between">
+ <div class="all_block02 flex_c_c" style="width: 49% ">瀹屽伐鏁�</div>
+ <div class="all_block02 flex_c_c" style="width: 49% ">{{ i.good_qty }}</div>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ <!-- <div style="height: 260px;">-->
+ <!-- <div id="all01" class="flex_c_c" style="width: 100%;height:100%;" />-->
+ <!-- </div>-->
+ </div>
+ </div>
+ <div style="width: 925px;">
<div class="smallTitle">
<svg-icon icon-class="ckkc" class="svg_class" />
- 涓嶈壇缁熻(杩戜竴鏈�)
+ 浠撳簱搴撳瓨
</div>
- <div style="height: 380px;">
- <dv-border-box-12>
- <div id="cjzl04" class="flex_c_c" style="width: 100%;height:100%" />
- </dv-border-box-12>
+ <div class="lineContent horn" style="height: 380px;display: flex;justify-content: space-between">
+ <div style="display: flex;justify-content: center;position: relative">
+ <div class="kb_center_block_children all_block05">
+ <div style="font-size: 24px;">{{ parseFloat(RightBottom.Y) }}</div>
+ <div class="box02" />
+ <div>鍘熸潗鏂�</div>
+ </div>
+ <!-- <div class="kb_center_block_children all_block06">-->
+ <!-- <div style="font-size: 24px;">{{ parseFloat(RightBottom.B) }}</div>-->
+ <!-- <div class="box02" />-->
+ <!-- <div>鍗婃垚鍝�</div>-->
+ <!-- </div>-->
+ <div class="kb_center_block_children all_block07">
+ <div style="font-size: 24px;">{{ parseFloat(RightBottom.C) }}</div>
+ <div class="box02" />
+ <div>浜ф垚鍝�</div>
+ </div>
+
+ </div>
</div>
</div>
</div>
@@ -76,11 +155,9 @@
<script>
import './kbCommon.css'
-import { loadEcharts, cjzl04, cjzl03_2, cjzl03 } from '@/utils/myEcharts'
+import { loadEcharts, all02, all03 } from '@/utils/myEcharts'
import {
- WorkShopProduceBottomLeftData,
- WorkShopProduceBottomRightData,
- WorkShopProduceTopData
+ WorkShopCompreLeftBottom, WorkShopCompreLeftTop, WorkShopCompreRightBottom, WorkShopCompreRightTop
} from '@/api/kanbanManager'
export default {
@@ -88,150 +165,163 @@
data() {
return {
headTime: '',
+ tableDataRightTop: [],
- cjzl03_xData: [],
- cjzl03_yData: [],
- RightBottom: [],
+ LeftTopData01: [],
+ LeftTopData02: [],
- configTableTop: {
- headerBGC: 'rgba(38, 68 ,139, 0.2)', // 琛ㄥご鑳屾櫙鑹�
- oddRowBGC: 'transparent', // 濂囨暟琛岃儗鏅壊
- evenRowBGC: 'transparent', // 鍋舵暟琛岃儗鏅壊
- headerHeight: 45,
- waitTime: 3000,
- rowNum: 8,
+ RightTopData01: [],
+ RightTopData02: [],
- header: [
- '<span style="color:#09d8f2;">宸ュ崟鍙�</span>',
- '<span style="color:#09d8f2;">浜у搧缂栫爜</span>',
- '<span style="color:#09d8f2;">浜у搧鍚嶇О</span>',
- '<span style="color:#09d8f2;">浜у搧瑙勬牸</span>',
- '<span style="color:#09d8f2;">浠诲姟鏁伴噺</span>',
- '<span style="color:#09d8f2;">鍚堟牸鏁伴噺</span>',
- '<span style="color:#09d8f2;">涓嶈壇鏁伴噺</span>',
+ LeftBottomData01: [],
+ LeftBottomData02: [],
- '<span style="color:#09d8f2;">宸ュ簭椤哄簭</span>',
- '<span style="color:#09d8f2;">宸ュ簭缂栫爜</span>',
- '<span style="color:#09d8f2;">宸ュ簭鍚嶇О</span>',
- '<span style="color:#09d8f2;">瀹屾垚杩涘害(%)</span>'
- ],
- // '<span style="color:#09d8f2;">宸ュ簾鏁伴噺</span>',
- // '<span style="color:#09d8f2;">鏂欏簾鏁伴噺</span>',
- data: [
- // ['<span style="color:#37a2da;">琛�1鍒�1</span>', '琛�1鍒�2', '琛�1鍒�3'],
- ],
- // index: true, , 130, 130
- columnWidth: [200, 140, 350, 350, 130, 130, 130, 130, 130, 130, 130],
- align: ['center', 'center', 'center', 'center', 'center', 'center', 'center', 'center', 'center', 'center', 'center']
- // carousel: 'page'
- }
+ RightBottom: {}
}
},
created() {
setInterval(this.getNowTime, 1000)
- // 涓ゅ皬鏃剁湅鏉垮埛鏂颁竴娆�
+ // // 涓ゅ皬鏃剁湅鏉垮埛鏂颁竴娆�
setInterval(() => {
window.location.reload()
}, 1000 * 60 * 120)
},
- async mounted() {
- await this.getWorkShopProduceTopData()
- setInterval(() => {
- this.getWorkShopProduceTopData()
- }, 10 * 1000)
- await this.getWorkShopProduceBottomLeftData()
- setInterval(() => {
- this.getWorkShopProduceBottomLeftData()
- }, 20 * 1000)
- await this.getWorkShopProduceBottomRightData()
- setInterval(() => {
- this.getWorkShopProduceBottomRightData()
- }, 30 * 1000)
+ mounted() {
+ this.getAllApi()
},
methods: {
- async getWorkShopProduceTopData() {
- WorkShopProduceTopData({ wkshopcode: '004' }).then(res => {
- const flag = this.compareArrays(this.configTableTop.data, res.data)
- if (!flag) {
- this.configTableTop.data = res.data.map(i =>
- [
- i.wo_code,
- i.partcode,
- i.partname,
- i.partspec ? i.partspec : '/',
- i.plan_qty,
- i.good_qty,
- `<span style="color: red;">${i.ng_qty}</span>`,
- i.seq,
- i.step_code,
- i.step_name,
- parseFloat(i.schedule.toFixed(2))
- ]
- )
- // `<span style="color: red;">${i.laborbad_qty}</span>`,
- // `<span style="color: red;">${i.materielbad_qty}</span>`,
- this.$refs['scrollBoardTop'].updateRows(this.configTableTop.data)
- }
+ async getAllApi() {
+ // 宸︿笂 閲囪喘璁㈠崟
+ const res2 = await WorkShopCompreLeftBottom()
+ res2.data.BottomLeftTop.forEach(i => {
+ this.LeftTopData01.push({
+ Quarter: i.Quarter,
+ quantity: i.quantity,
+ ouquantity: i.ouquantity
+ })
})
- },
- async getWorkShopProduceBottomLeftData() {
- const temp = [
- // { code: '101', name: '鍙戞场杞﹂棿' },
- // { code: '102', name: '鎸ゅ嚭杞﹂棿' },
- // { code: '103', name: '鍖呰杞﹂棿' },
- // { code: '001', name: '娴嬭瘯杞﹂棿' }
+ res2.data.BottomLeftBottom.forEach(i => {
+ this.LeftTopData02.push({
+ Month: i.Month + '鏈�',
+ quantity: i.quantity,
+ ouquantity: i.ouquantity
+ })
+ })
+ loadEcharts('all02_1', all02(this.LeftTopData02, '姣忔湀閲囪喘鏁伴噺/鍏ュ簱鏁伴噺'))
+ setInterval(() => {
+ this.LeftTopData01 = []
+ this.LeftTopData02 = []
+ WorkShopCompreLeftBottom().then(res2 => {
+ res2.data.BottomLeftTop.forEach(i => {
+ this.LeftTopData01.push({
+ Quarter: i.Quarter,
+ quantity: i.quantity,
+ ouquantity: i.ouquantity
+ })
+ })
+ res2.data.BottomLeftBottom.forEach(i => {
+ this.LeftTopData02.push({
+ Month: i.Month + '鏈�',
+ quantity: i.quantity,
+ ouquantity: i.ouquantity
+ })
+ })
+ loadEcharts('all02_1', all02(this.LeftTopData02, '姣忔湀閲囪喘鏁伴噺/鍏ュ簱鏁伴噺'))
+ })
+ }, 1000 * 35)
- // { code: '01', name: '閲戝伐杞﹂棿' },
- // { code: '02', name: '閾濅慨' },
- // { code: '03', name: '鍙伴捇' },
- // { code: '04', name: '鍠锋紗' },
- // { code: '05', name: '缁勮鎴愬搧' }
+ // 鍙充笂 閿�鍞鍗�
+ const res3 = await WorkShopCompreRightTop()
+ res3.data.RightTop.forEach(i => {
+ this.RightTopData01.push({
+ Quarter: i.Quarter,
+ quantity: i.quantity,
+ ouquantity: i.ouquantity
+ })
+ })
+ res3.data.RightBottom.forEach(i => {
+ this.RightTopData02.push({
+ Month: i.Month + '鏈�',
+ quantity: i.quantity,
+ ouquantity: i.ouquantity
+ })
+ })
+ loadEcharts('all02', all02(this.RightTopData02, '姣忔湀璁㈠崟鏁伴噺/鍑哄簱鏁伴噺'))
+ setInterval(() => {
+ WorkShopCompreRightTop().then(res3 => {
+ this.RightTopData01 = []
+ this.RightTopData02 = []
+ res3.data.RightTop.forEach(i => {
+ this.RightTopData01.push({
+ Quarter: i.Quarter,
+ quantity: i.quantity,
+ ouquantity: i.ouquantity
+ })
+ })
+ res3.data.RightBottom.forEach(i => {
+ this.RightTopData02.push({
+ Month: i.Month + '鏈�',
+ quantity: i.quantity,
+ ouquantity: i.ouquantity
+ })
+ })
+ loadEcharts('all02', all02(this.RightTopData02, '姣忔湀璁㈠崟鏁伴噺/鍑哄簱鏁伴噺'))
+ })
+ }, 1000 * 40)
- { code: '004', name: '瑁呴厤杞﹂棿' }
+ const temp2 = [
+ { wkshp_code: '004', wkshp_name: '瑁呴厤杞﹂棿' }
]
- const res4 = await WorkShopProduceBottomLeftData({ wkshopcode: temp.map(i => i.code).join(',') })
- // this.cjzl03_xData = res4.data['101,001'].map(i => i.click_date)
- // this.cjzl03_yData = res4.data['101,001'].map(i => i.count)
-
- const a = res4.data['004'].map(i => i.click_date) // echarts妯潗鏍�
- const b = temp.map(i => i.name)// legendData鍊�
- const c = [
- // res4.data['01'].map(i => i.count),
- // res4.data['02'].map(i => i.count),
- // res4.data['03'].map(i => i.count),
- // res4.data['04'].map(i => i.count),
- // res4.data['05'].map(i => i.count)
- res4.data['004'].map(i => i.count)
- ]// 绾靛潗鏍囧��
-
- loadEcharts('cjzl03', cjzl03(a, b, c))
- },
-
- async getWorkShopProduceBottomRightData() {
- const temp = [
- // { code: '101', name: '鍙戞场杞﹂棿' },
- // { code: '102', name: '鎸ゅ嚭杞﹂棿' },
- // { code: '103', name: '鍖呰杞﹂棿' },
- // { code: '001', name: '娴嬭瘯杞﹂棿' }
-
- // { code: '01', name: '閲戝伐杞﹂棿' },
- // { code: '02', name: '閾濅慨' },
- // { code: '03', name: '鍙伴捇' },
- // { code: '04', name: '鍠锋紗' },
- // { code: '05', name: '缁勮鎴愬搧' }
-
- { code: '004', name: '瑁呴厤杞﹂棿' }
- ]
- const res5 = await WorkShopProduceBottomRightData({ wkshopcode: temp.map(i => i.code).join(',') })
- this.RightBottom = res5.data
- if (this.RightBottom.length > 0) {
- loadEcharts('cjzl04', cjzl04(this.RightBottom.map(i => i.name), this.RightBottom.map(i => i.cont)))
+ // 宸︿笅 鐢熶骇璁㈠崟
+ const res4 = await WorkShopCompreLeftTop({ wkshopcode: temp2.map(i => i.wkshp_code).join(',') })
+ for (const res4Key in res4.data.LeftTop) {
+ const data = {
+ good_qty: 0,
+ plan_qty: 0,
+ wkshp_code: '',
+ wkshp_name: ''
+ }
+ data.good_qty = res4.data.LeftTop[res4Key][0].good_qty
+ data.plan_qty = res4.data.LeftTop[res4Key][0].plan_qty
+ data.wkshp_code = res4.data.LeftTop[res4Key][0].wkshp_code
+ data.wkshp_name = temp2.find(i => i.wkshp_code === data.wkshp_code).wkshp_name
+ this.LeftBottomData01.push(data)
}
- },
+ setInterval(() => {
+ WorkShopCompreLeftTop({ wkshopcode: temp2.map(i => i.wkshp_code).join(',') }).then(res2 => {
+ this.LeftBottomData01 = []
+ this.LeftBottomData02 = []
+ for (const res4Key in res4.data.LeftTop) {
+ const data = {
+ good_qty: 0,
+ plan_qty: 0,
+ wkshp_code: '',
+ wkshp_name: ''
+ }
+
+ data.good_qty = res2.data.LeftTop[res4Key][0].good_qty
+ data.plan_qty = res2.data.LeftTop[res4Key][0].plan_qty
+ data.wkshp_code = res2.data.LeftTop[res4Key][0].wkshp_code
+ data.wkshp_name = temp2.find(i => i.wkshp_code === data.wkshp_code).wkshp_name
+ this.LeftBottomData01.push(data)
+ }
+ })
+ }, 1000 * 30)
+
+ // 鍙充笅 浠撳簱搴撳瓨
+ const res5 = await WorkShopCompreRightBottom()
+ this.RightBottom = res5.data
+
+ setInterval(() => {
+ WorkShopCompreRightBottom().then(res5 => {
+ this.RightBottom = res5.data
+ })
+ }, 1000 * 60)
+ },
// 鑾峰彇褰撳墠鏃堕棿
getNowTime() {
const dt = new Date()
@@ -248,23 +338,25 @@
this.headTime = `${y}-${m}-${d} ${hh}:${mm}:${ss} ${week}`
},
-
- // 涓や釜鏁扮粍鍋氬姣�
- compareArrays(arr1, arr2) {
- const set1 = new Set(arr1)
- const set2 = new Set(arr2)
-
- if (set1.size !== set2.size) {
- return false
+ headerCellStyle() {
+ return {
+ backgroundColor: 'transparent ',
+ padding: '10px 0',
+ textAlign: 'center',
+ color: '#07acc2',
+ border: 'none',
+ fontSize: '20px'
}
-
- for (const value of set1) {
- if (!set2.has(value)) {
- return false
- }
+ },
+ cellStyle() {
+ return {
+ padding: '7px 0',
+ textAlign: 'center',
+ backgroundColor: 'transparent ',
+ color: '#c7e7ff',
+ border: 'none',
+ fontSize: '20px'
}
-
- return true
}
}
@@ -273,13 +365,120 @@
</script>
<style lang="scss" scoped>
-
-::v-deep .header-item {
- font-size: 16px !important;
+$main_color: #09d8f2;
+$color01: #00FFFF;
+.tableData {
+ background: transparent;
}
-::v-deep .row-item {
- font-size: 16px !important;
+.el-table::before {
+ height: 0;
}
+.el-table__empty-text {
+ color: $main_color;
+}
+
+.tableDataCell {
+ ::v-deep .cell {
+ padding: 0 2px;
+ }
+}
+
+::v-deep .el-table__body-wrapper::-webkit-scrollbar {
+ /* width: 0;瀹藉害涓�0鏆楄棌 */
+ width: 0;
+ background: transparent;
+}
+
+::v-deep .el-table th,
+::v-deep .el-table tr,
+::v-deep .el-table td {
+ background-color: transparent;
+}
+
+.all_block01 {
+ width: 187px;
+ height: 180px;
+}
+
+.all_block02 {
+ width: 100%;
+ height: 49px;
+ background: rgba(9, 216, 242, 0.1);
+}
+
+.all_block03 {
+ width: 199px;
+ height: 180px;
+}
+
+.all_block04 {
+ width: 100%;
+ height: 49px;
+ background: rgba(9, 216, 242, 0.1);
+}
+
+.kb_center_block_children {
+ height: 180px;
+ //border: 1px solid $kbBorderColor;
+ width: 240px;
+ display: flex;
+ z-index: 2;
+ justify-content: space-around;
+ align-items: center;
+ flex-direction: column;
+ margin: 10px;
+ font-size: 22px;
+
+ .box02 {
+ background: url("../../assets/images/box02.png") no-repeat;
+ transform: scale(1.5);
+ width: 145px;
+ height: 84px;
+
+ }
+}
+
+.all_block05 {
+ position: absolute;
+ animation: upDown 3s ease-in-out infinite;
+ left: 170px;
+}
+
+//.all_block06 {
+// position: absolute;
+// animation: upDown2 3s ease-in-out infinite;
+// left: 320px;
+//}
+
+.all_block07 {
+ position: absolute;
+ animation: upDown2 3s ease-in-out infinite;
+ left: 470px;
+}
+
+@keyframes upDown {
+ 0% {
+ top: 50px;
+ }
+ 50% {
+ top: 100px;
+ }
+ 100% {
+ top: 50px;
+ }
+}
+
+@keyframes upDown2 {
+ 0% {
+ top: 100px;
+ }
+ 50% {
+ top: 50px;
+ }
+ 100% {
+ top: 100px;
+ }
+}
</style>
diff --git a/src/views/kanbanManager/zpcj_back.vue b/src/views/kanbanManager/zpcj_back.vue
new file mode 100644
index 0000000..8e20b9d
--- /dev/null
+++ b/src/views/kanbanManager/zpcj_back.vue
@@ -0,0 +1,285 @@
+<template>
+ <div>
+ <div class="kb_dashboard" style="display:flex;flex-direction: column;justify-content: space-between">
+
+ <div class="kb_backgroundCustom" />
+
+ <div class="kb_header">
+ <div class="kb_headTime" style="top: 35px;left: 20px">
+ <span>娴欐睙闃块瞾鍏嬪仴韬櫒鏉愭湁闄愬叕鍙�</span>
+ </div>
+
+ <div class="kb_headTime kb_header_text" style="top: 35px;left: 800px">
+ <span>瑁呴厤杞﹂棿鏁板瓧鍖栫湅鏉�</span>
+ </div>
+
+ <div class="kb_headTime" style="top: 35px;right: 25px">
+ <span>{{ headTime }}</span>
+ </div>
+ </div>
+
+ <div
+ style=" padding:5px 20px 20px 20px;z-index:2;height: 940px;flex-direction: column;justify-content: space-between;"
+ >
+ <!-- 涓婅竟-->
+ <div style="display: flex;justify-content: space-between">
+ <div style="width:100%">
+ <div class="smallTitle">
+ <svg-icon icon-class="cxjg" class="svg_class" />
+ 鐢熶骇淇℃伅
+ </div>
+
+ <div style="height: 450px">
+ <dv-border-box-12>
+ <dv-scroll-board
+ ref="scrollBoardTop"
+ :config="configTableTop"
+ style="width: 99%;height: 430px;margin:0 auto;padding-top: 13px;"
+ />
+ </dv-border-box-12>
+ </div>
+
+ </div>
+ </div>
+
+ <!-- 涓嬭竟-->
+ <div style="display: flex;justify-content: space-between;margin-top: 15px;">
+ <div style="width: 1000px;">
+ <div class="smallTitle">
+ <svg-icon icon-class="blcs" class="svg_class" />
+ 璐ㄩ噺涓嶈壇(杩戜竴鍛�)
+ </div>
+
+ <div style="height: 380px;">
+ <dv-border-box-12>
+ <div id="cjzl03" class="flex_c_c" style="width: 100%;height:100%" />
+ </dv-border-box-12>
+ </div>
+
+ </div>
+ <div style="width: 850px;">
+ <div class="smallTitle">
+ <svg-icon icon-class="ckkc" class="svg_class" />
+ 涓嶈壇缁熻(杩戜竴鏈�)
+ </div>
+ <div style="height: 380px;">
+ <dv-border-box-12>
+ <div id="cjzl04" class="flex_c_c" style="width: 100%;height:100%" />
+ </dv-border-box-12>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import './kbCommon.css'
+import { loadEcharts, cjzl04, cjzl03_2, cjzl03 } from '@/utils/myEcharts'
+import {
+ WorkShopProduceBottomLeftData,
+ WorkShopProduceBottomRightData,
+ WorkShopProduceTopData
+} from '@/api/kanbanManager'
+
+export default {
+ name: 'Cjsc',
+ data() {
+ return {
+ headTime: '',
+
+ cjzl03_xData: [],
+ cjzl03_yData: [],
+ RightBottom: [],
+
+ configTableTop: {
+ headerBGC: 'rgba(38, 68 ,139, 0.2)', // 琛ㄥご鑳屾櫙鑹�
+ oddRowBGC: 'transparent', // 濂囨暟琛岃儗鏅壊
+ evenRowBGC: 'transparent', // 鍋舵暟琛岃儗鏅壊
+ headerHeight: 45,
+ waitTime: 3000,
+ rowNum: 8,
+
+ header: [
+ '<span style="color:#09d8f2;">宸ュ崟鍙�</span>',
+ '<span style="color:#09d8f2;">浜у搧缂栫爜</span>',
+ '<span style="color:#09d8f2;">浜у搧鍚嶇О</span>',
+ '<span style="color:#09d8f2;">浜у搧瑙勬牸</span>',
+ '<span style="color:#09d8f2;">浠诲姟鏁伴噺</span>',
+ '<span style="color:#09d8f2;">鍚堟牸鏁伴噺</span>',
+ '<span style="color:#09d8f2;">涓嶈壇鏁伴噺</span>',
+
+ '<span style="color:#09d8f2;">宸ュ簭椤哄簭</span>',
+ '<span style="color:#09d8f2;">宸ュ簭缂栫爜</span>',
+ '<span style="color:#09d8f2;">宸ュ簭鍚嶇О</span>',
+ '<span style="color:#09d8f2;">瀹屾垚杩涘害(%)</span>'
+ ],
+ // '<span style="color:#09d8f2;">宸ュ簾鏁伴噺</span>',
+ // '<span style="color:#09d8f2;">鏂欏簾鏁伴噺</span>',
+ data: [
+ // ['<span style="color:#37a2da;">琛�1鍒�1</span>', '琛�1鍒�2', '琛�1鍒�3'],
+ ],
+ // index: true, , 130, 130
+ columnWidth: [200, 140, 350, 350, 130, 130, 130, 130, 130, 130, 130],
+ align: ['center', 'center', 'center', 'center', 'center', 'center', 'center', 'center', 'center', 'center', 'center']
+ // carousel: 'page'
+ }
+
+ }
+ },
+ created() {
+ setInterval(this.getNowTime, 1000)
+
+ // 涓ゅ皬鏃剁湅鏉垮埛鏂颁竴娆�
+ setInterval(() => {
+ window.location.reload()
+ }, 1000 * 60 * 120)
+ },
+ async mounted() {
+ await this.getWorkShopProduceTopData()
+ setInterval(() => {
+ this.getWorkShopProduceTopData()
+ }, 10 * 1000)
+ await this.getWorkShopProduceBottomLeftData()
+ setInterval(() => {
+ this.getWorkShopProduceBottomLeftData()
+ }, 20 * 1000)
+ await this.getWorkShopProduceBottomRightData()
+ setInterval(() => {
+ this.getWorkShopProduceBottomRightData()
+ }, 30 * 1000)
+ },
+ methods: {
+ async getWorkShopProduceTopData() {
+ WorkShopProduceTopData({ wkshopcode: '004' }).then(res => {
+ const flag = this.compareArrays(this.configTableTop.data, res.data)
+ if (!flag) {
+ this.configTableTop.data = res.data.map(i =>
+ [
+ i.wo_code,
+ i.partcode,
+ i.partname,
+ i.partspec ? i.partspec : '/',
+ i.plan_qty,
+ i.good_qty,
+ `<span style="color: red;">${i.ng_qty}</span>`,
+ i.seq,
+ i.step_code,
+ i.step_name,
+ parseFloat(i.schedule.toFixed(2))
+ ]
+ )
+ // `<span style="color: red;">${i.laborbad_qty}</span>`,
+ // `<span style="color: red;">${i.materielbad_qty}</span>`,
+ this.$refs['scrollBoardTop'].updateRows(this.configTableTop.data)
+ }
+ })
+ },
+ async getWorkShopProduceBottomLeftData() {
+ const temp = [
+ // { code: '101', name: '鍙戞场杞﹂棿' },
+ // { code: '102', name: '鎸ゅ嚭杞﹂棿' },
+ // { code: '103', name: '鍖呰杞﹂棿' },
+ // { code: '001', name: '娴嬭瘯杞﹂棿' }
+
+ // { code: '01', name: '閲戝伐杞﹂棿' },
+ // { code: '02', name: '閾濅慨' },
+ // { code: '03', name: '鍙伴捇' },
+ // { code: '04', name: '鍠锋紗' },
+ // { code: '05', name: '缁勮鎴愬搧' }
+
+ { code: '004', name: '瑁呴厤杞﹂棿' }
+ ]
+
+ const res4 = await WorkShopProduceBottomLeftData({ wkshopcode: temp.map(i => i.code).join(',') })
+ // this.cjzl03_xData = res4.data['101,001'].map(i => i.click_date)
+ // this.cjzl03_yData = res4.data['101,001'].map(i => i.count)
+
+ const a = res4.data['004'].map(i => i.click_date) // echarts妯潗鏍�
+ const b = temp.map(i => i.name)// legendData鍊�
+ const c = [
+ // res4.data['01'].map(i => i.count),
+ // res4.data['02'].map(i => i.count),
+ // res4.data['03'].map(i => i.count),
+ // res4.data['04'].map(i => i.count),
+ // res4.data['05'].map(i => i.count)
+ res4.data['004'].map(i => i.count)
+ ]// 绾靛潗鏍囧��
+
+ loadEcharts('cjzl03', cjzl03(a, b, c))
+ },
+
+ async getWorkShopProduceBottomRightData() {
+ const temp = [
+ // { code: '101', name: '鍙戞场杞﹂棿' },
+ // { code: '102', name: '鎸ゅ嚭杞﹂棿' },
+ // { code: '103', name: '鍖呰杞﹂棿' },
+ // { code: '001', name: '娴嬭瘯杞﹂棿' }
+
+ // { code: '01', name: '閲戝伐杞﹂棿' },
+ // { code: '02', name: '閾濅慨' },
+ // { code: '03', name: '鍙伴捇' },
+ // { code: '04', name: '鍠锋紗' },
+ // { code: '05', name: '缁勮鎴愬搧' }
+
+ { code: '004', name: '瑁呴厤杞﹂棿' }
+ ]
+ const res5 = await WorkShopProduceBottomRightData({ wkshopcode: temp.map(i => i.code).join(',') })
+ this.RightBottom = res5.data
+ if (this.RightBottom.length > 0) {
+ loadEcharts('cjzl04', cjzl04(this.RightBottom.map(i => i.name), this.RightBottom.map(i => i.cont)))
+ }
+ },
+
+ // 鑾峰彇褰撳墠鏃堕棿
+ getNowTime() {
+ const dt = new Date()
+ const wk = dt.getDay()
+ const y = dt.getFullYear()
+ const m = (dt.getMonth() + 1 + '').padStart(2, '0')
+ const d = (dt.getDate() + '').padStart(2, '0')
+
+ const hh = (dt.getHours() + '').padStart(2, '0')
+ const mm = (dt.getMinutes() + '').padStart(2, '0')
+ const ss = (dt.getSeconds() + '').padStart(2, '0')
+ const weeks = ['鏄熸湡鏃�', '鏄熸湡涓�', '鏄熸湡浜�', '鏄熸湡涓�', '鏄熸湡鍥�', '鏄熸湡浜�', '鏄熸湡鍏�']
+ const week = weeks[wk]
+
+ this.headTime = `${y}-${m}-${d} ${hh}:${mm}:${ss} ${week}`
+ },
+
+ // 涓や釜鏁扮粍鍋氬姣�
+ compareArrays(arr1, arr2) {
+ const set1 = new Set(arr1)
+ const set2 = new Set(arr2)
+
+ if (set1.size !== set2.size) {
+ return false
+ }
+
+ for (const value of set1) {
+ if (!set2.has(value)) {
+ return false
+ }
+ }
+
+ return true
+ }
+
+ }
+
+}
+</script>
+
+<style lang="scss" scoped>
+
+::v-deep .header-item {
+ font-size: 16px !important;
+}
+
+::v-deep .row-item {
+ font-size: 16px !important;
+}
+
+</style>
diff --git a/src/views/statistic/reportList.vue b/src/views/statistic/reportList.vue
index 1792657..8df2db0 100644
--- a/src/views/statistic/reportList.vue
+++ b/src/views/statistic/reportList.vue
@@ -1,11 +1,658 @@
-<template />
+<template>
+ <div>
+ <div class="body" :style="{height:mainHeight+'px'}">
+ <div class="bodyTopButtonGroup">
+ <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+ </div>
+
+ <div class="bodyTopFormGroup">
+ <el-form
+ ref="form"
+ :model="form"
+ label-width="100px"
+ inline
+ style="display: flex;"
+ >
+ <div class="elForm">
+ <el-form-item label="杞﹂棿鍚嶇О" style=" display: flex;">
+ <el-select
+ v-model="form.wkshopcode"
+ filterable
+ :popper-append-to-body="false"
+ style="width: 200px"
+ placeholder="璇烽�夋嫨"
+ >
+ <el-option
+ v-for="item in wkshopcodeArr"
+ :key="item.torg_code"
+ :label="item.torg_name"
+ :value="item.torg_code"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="宸ュ崟缂栧彿" style=" display: flex;">
+ <el-input v-model="form.wocode" placeholder="璇疯緭鍏�" style="width: 200px" />
+ </el-form-item>
+ <el-form-item label="浜у搧缂栫爜" style=" display: flex;">
+ <el-input v-model="form.partnumber" placeholder="璇疯緭鍏�" style="width: 200px" />
+ </el-form-item>
+ <el-form-item label="浜у搧鍚嶇О" style=" display: flex;">
+ <el-input v-model="form.partname" style="width: 200px" placeholder="璇疯緭鍏�" />
+ </el-form-item>
+ <el-form-item v-show="isExpandForm" label="瑙勬牸鍨嬪彿" style=" display: flex;">
+ <el-input v-model="form.partspec" style="width: 200px" placeholder="璇疯緭鍏�" />
+ </el-form-item>
+ <el-form-item v-show="isExpandForm" label="宸ュ簭鍚嶇О" style=" display: flex;">
+ <el-input v-model="form.stepname" style="width: 200px" placeholder="璇疯緭鍏�" />
+ </el-form-item>
+ <el-form-item v-show="isExpandForm" label="鎶ュ伐璁惧" style=" display: flex;">
+ <el-select
+ v-model="form.eqpcode"
+ filterable
+ :popper-append-to-body="false"
+ style="width: 200px"
+ placeholder="璇烽�夋嫨"
+ >
+ <el-option
+ v-for="item in eqpArr"
+ :key="item.code"
+ :label="item.name"
+ :value="item.code"
+ />
+ </el-select>
+ <!-- <el-input v-model="form.eqpcode" style="width: 200px" placeholder="璇疯緭鍏�" />-->
+ </el-form-item>
+ <el-form-item v-show="isExpandForm" label="鎶ュ伐浜哄憳" style=" display: flex;">
+ <el-input v-model="form.reportuser" style="width: 200px" placeholder="璇疯緭鍏�" />
+ </el-form-item>
+ <el-form-item v-show="isExpandForm" label="鎶ュ伐鏃堕棿" style="display: flex;align-items: center">
+ <el-date-picker
+ v-model="form.reportdate"
+ type="daterange"
+ range-separator="~"
+ class="timeMini"
+ size="mini"
+ style="width: 200px;display: flex;line-height: 34px;height: 34px;"
+ :clearable="false"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ />
+ <!-- font-size: 14px!important;-->
+ <!-- :picker-options="expireTimeOption"-->
+
+ </el-form-item>
+ </div>
+ <div
+ class="bodySearchReset"
+ :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+ >
+ <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+ <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+ </div>
+ </el-form>
+ <div
+ class="bodyTopFormExpand"
+ >
+ <svg-icon
+ v-show="mouseHoverType==='mouseout'"
+ style="cursor: pointer"
+ :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+ @mouseenter="mouseHoverType=$event.type"
+ />
+ <svg-icon
+ v-show="mouseHoverType==='mouseenter'"
+ style="cursor: pointer"
+ :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+ @click="isExpandForm=!isExpandForm"
+ @mouseout="mouseHoverType=$event.type"
+ />
+ </div>
+ </div>
+
+ <div class="elTableDiv">
+ <el-table
+ ref="tableDataRef"
+ class="tableFixed"
+ :data="tableData"
+ :height="isExpandForm?tableHeight:(tableHeight+80)+'px'"
+ border
+ :row-class-name="tableRowClassName"
+ :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+80)+'px',}"
+ highlight-current-row
+ :header-cell-style="this.$headerCellStyle"
+ :cell-style="this.$cellStyle"
+ @sort-change="sortChange"
+ >
+ <el-table-column
+ prop="rowNum"
+ width="50"
+ fixed
+ label="搴忓彿"
+ />
+ <el-table-column
+ prop="wo_code"
+ label="鎶ュ伐宸ュ崟"
+ sortable="custom"
+ min-width="160"
+ show-overflow-tooltip
+ />
+ <el-table-column
+ prop="partnumber"
+ label="浜у搧缂栫爜"
+ show-overflow-tooltip
+ sortable="custom"
+ min-width="110"
+ />
+ <el-table-column
+ prop="partname"
+ label="浜у搧鍚嶇О"
+ sortable="custom"
+ show-overflow-tooltip
+ min-width="110"
+ />
+ <el-table-column
+ prop="wkshp_name"
+ label="杞﹂棿鍚嶇О"
+ sortable="custom"
+ show-overflow-tooltip
+ min-width="110"
+ />
+ <el-table-column
+ prop="task_qty"
+ label="浠诲姟鏁伴噺"
+ sortable="custom"
+ show-overflow-tooltip
+ min-width="110"
+ />
+ <!-- <el-table-column-->
+ <!-- prop="wkshp_name"-->
+ <!-- label="杞﹂棿鍚嶇О"-->
+ <!-- show-overflow-tooltip-->
+ <!-- sortable="custom"-->
+ <!-- min-width="110"-->
+ <!-- />-->
+ <!-- <el-table-column-->
+ <!-- prop="eqp_name"-->
+ <!-- label="璁惧鍚嶇О"-->
+ <!-- sortable="custom"-->
+ <!-- show-overflow-tooltip-->
+ <!-- min-width="110"-->
+ <!-- />-->
+ <el-table-column
+ prop="stepname"
+ label="宸ュ簭鍚嶇О"
+ show-overflow-tooltip
+ sortable="custom"
+ min-width="110"
+ />
+ <!-- <el-table-column-->
+ <!-- prop="step_price"-->
+ <!-- label="宸ュ簭鍗曚环"-->
+ <!-- show-overflow-tooltip-->
+ <!-- sortable="custom"-->
+ <!-- min-width="110"-->
+ <!-- />-->
+ <el-table-column
+ prop="steptype"
+ label="宸ュ簭绫诲瀷"
+ show-overflow-tooltip
+ sortable="custom"
+ min-width="110"
+ >
+ <template slot-scope="{row}">
+ {{ row.steptype === 'Z' ? '鑷埗' : '澶栧崗' }}
+ </template>
+ </el-table-column>
+ <el-table-column
+ prop="wx_name"
+ label="璁惧/渚涘簲鍟�"
+ show-overflow-tooltip
+ sortable="custom"
+ min-width="125"
+ >
+ <template slot-scope="{row}">
+ {{ row.steptype === 'Z' ?(row.eqp_name?row.eqp_name:'/'): row.wx_name }}
+ </template>
+ </el-table-column>
+ <el-table-column
+ prop="usergroup_name"
+ label="鎶ュ伐鐝粍"
+ show-overflow-tooltip
+ min-width="110"
+ sortable="custom"
+ >
+ <template slot-scope="{row}">
+ {{ row.usergroup_name ? row.usergroup_name : '/' }}
+ </template>
+ </el-table-column>
+ <el-table-column
+ prop="usercode"
+ label="浜哄憳缂栫爜"
+ show-overflow-tooltip
+ min-width="110"
+ sortable="custom"
+ />
+ <el-table-column
+ prop="username"
+ label="鎶ュ伐浜哄憳"
+ show-overflow-tooltip
+ min-width="110"
+ sortable="custom"
+ />
+ <el-table-column
+ prop="report_qty"
+ label="鍚堟牸鏁伴噺"
+ show-overflow-tooltip
+ sortable="custom"
+ min-width="110"
+ />
+ <el-table-column
+ prop="ng_qty"
+ label="涓嶈壇鏁伴噺"
+ show-overflow-tooltip
+ min-width="110"
+ sortable="custom"
+ />
+ <el-table-column
+ prop="laborbad_qty"
+ label="宸ュ簾鏁伴噺"
+ min-width="110"
+ show-overflow-tooltip
+ sortable="custom"
+ />
+ <el-table-column
+ prop="materielbad_qty"
+ label="鏂欏簾鏁伴噺"
+ show-overflow-tooltip
+ min-width="110"
+ sortable="custom"
+ />
+ <el-table-column
+ prop="report_date"
+ label="鎶ュ伐鏃堕棿"
+ min-width="160"
+ show-overflow-tooltip
+ sortable="custom"
+ />
+
+ </el-table>
+ </div>
+ <!--鍒嗛〉-->
+ <pagination
+ :total="total"
+ :page.sync="form.page"
+ :limit.sync="form.rows"
+ align="right"
+ layout="total,prev, pager, next,sizes"
+ popper-class="select_bottom"
+ @pagination="getMesOrderStepReportSearch"
+ />
+ </div>
+
+ <el-dialog
+ v-el-drag-dialog
+ :title="operation==='add'?'鏂板':'浜哄憳鏄庣粏'"
+ :visible.sync="dialogVisible"
+ width="800px"
+ :close-on-click-modal="false"
+ top="15vh"
+ @closed="handleClose"
+ @close="handleClose"
+ >
+ <div style="height: 300px;width: 100%;background-color: aliceblue;padding:20px">
+ <el-tag
+ v-for="tag in tagArr"
+ :key="tag.name"
+ type="success"
+ style="margin-right: 15px;min-width: 80px;text-align: center"
+ >
+ {{ tag }}
+ </el-tag>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <div class="footerButton">
+ <el-button v-waves @click="dialogVisible=false">杩� 鍥�</el-button>
+ <!-- <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>-->
+ <!-- <el-button v-waves type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+ </div>
+ </span>
+ </el-dialog>
+
+ <!--瀵煎叆缁勪欢-->
+ <import-picker
+ ref="importPickerFunc"
+ class="importPickerClass"
+ :shows.sync="shows"
+ :title="title_value"
+ :colos="colos"
+ :code="code"
+ />
+
+ </div>
+</template>
<script>
+import Pagination from '@/components/Pagination'
+import { getCookie } from '@/utils/auth'
+import ImportPicker from '@/components/ImportPicker'
+import { handleDatetime, validateCode } from '@/utils/global'
+import {
+ GroupSalaryReportSearchUser, MesOrderStepReportExcelSearch, MesOrderStepReportSearch
+} from '@/api/ReportManager'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import { EqpPermissions, PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
+
export default {
- name: 'ReportList'
+ name: 'Zzjg',
+ components: {
+ Pagination, ImportPicker
+ },
+ directives: { elDragDialog, waves },
+ data() {
+ return {
+ mouseHoverType: 'mouseout',
+ isExpandForm: false,
+ mainHeight: 0,
+ tableHeight: 0,
+ form: {
+ wkshopcode: '',
+ wocode: '', // 宸ュ崟缂栧彿
+ partnumber: '', // 浜у搧缂栫爜
+ partname: '', // 浜у搧鍚嶇О
+ partspec: '', // 瑙勬牸鍨嬪彿
+ stepname: '', // 宸ュ簭鍚嶇О
+ style: '', // 鎿嶄綔绫诲瀷
+ eqpcode: '', // 缂洪櫡鍚嶇О
+ reportuser: '', // 鎿嶄綔浜哄憳
+ reportdate: '', // 鎿嶄綔鏃堕棿
+ prop: 'report_date', // 鎺掑簭瀛楁
+ order: 'desc', // 鎺掑簭瀛楁
+ page: 1, // 绗嚑椤�
+ rows: 20 // 姣忛〉澶氬皯鏉�
+ },
+ styleArr: [
+ { code: 'B', name: '鎶ュ伐' },
+ { code: 'S', name: '鏀舵枡' }
+ ],
+ // groupArr: [],
+ wkshopcodeArr: [],
+ total: 10,
+ tableData: [],
+ dialogVisible: false,
+ tagArr: [], //
+ dialogForm: {
+ OrgType: '',
+ OrgCode: '',
+ OrgName: '',
+ SupUnit: ''// 涓婄骇鍗曚綅
+ },
+ operation: '',
+ dialogFormRules: {
+ OrgType: [
+ { required: true, message: '璇疯緭鍏ラ�夋嫨绫诲瀷', trigger: ['blur', 'change'] }
+ ],
+ OrgCode: [
+ { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+ ],
+ OrgName: [
+ { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
+ ]
+
+ },
+ eqpArr: [],
+
+ title_value: '鏁版嵁瀵煎叆 / 鐐规閮ㄤ綅',
+ code: '4',
+ shows: false
+
+ }
+ },
+ watch: {
+ shows() {
+ if (!this.shows) {
+ this.getMesOrderStepReportSearch()
+ }
+ }
+ },
+ created() {
+ this.handleRequest()
+ },
+ mounted() {
+ window.addEventListener('resize', this.getHeight)
+ this.getHeight()
+ },
+ methods: {
+ handleRequest() {
+ this.getMesOrderStepReportSearch().then(res => {
+ if (res.code === '200') {
+ this.getPrentOrganizationNoCompany()
+ this.getEqpPermissions()
+ }
+ })
+ },
+ async getEqpPermissions() {
+ const { data: res4 } = await EqpPermissions() // 璁惧
+ this.eqpArr = res4
+ },
+
+ async getPrentOrganizationNoCompany() {
+ const { data: res } = await PrentOrganizationNoCompany()
+ this.wkshopcodeArr = res
+ },
+ async getMesOrderStepReportSearch() {
+ let tempDate = this.form.reportdate
+ if (tempDate.length > 0) {
+ tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+ }
+ const data = {
+ wkshopcode: this.form.wkshopcode,
+ wocode: this.form.wocode,
+ partnumber: this.form.partnumber,
+ partname: this.form.partname,
+ partspec: this.form.partspec,
+ stepname: this.form.stepname,
+ eqpcode: this.form.eqpcode,
+ reportuser: this.form.reportuser,
+ reportdate: tempDate,
+ prop: this.form.prop,
+ order: this.form.order,
+ page: this.form.page,
+ rows: this.form.rows
+ }
+
+ const res = await MesOrderStepReportSearch(data)
+ this.tableData = res.data
+ this.total = res.count
+
+ return { code: res.code }
+ },
+
+ // async getMesOrderStepReportSelectUserGroup() {
+ // const { data: res } = await MesOrderStepReportSelectUserGroup()
+ // this.groupArr = res
+ // },
+ // 鎺掑簭鏀瑰彉鏃�
+ sortChange({ column, prop, order }) {
+ if (order === 'descending') {
+ order = 'desc'
+ } else if (order === 'ascending') {
+ order = 'asc'
+ } else {
+ order = 'desc'
+ }
+ this.form.order = order
+ this.form.prop = prop
+ this.getMesOrderStepReportSearch()
+ },
+ async download() {
+ let tempDate = this.form.reportdate
+ if (tempDate.length > 0) {
+ tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+ }
+
+ const data = {
+ wkshopcode: this.form.wkshopcode,
+ wocode: this.form.wocode,
+ partnumber: this.form.partnumber,
+ partname: this.form.partname,
+ partspec: this.form.partspec,
+ stepname: this.form.stepname,
+ eqpcode: this.form.eqpcode,
+ reportuser: this.form.reportuser,
+ reportdate: tempDate
+ }
+
+ const { data: res } = await MesOrderStepReportExcelSearch(data)
+ window.location.href = res
+ },
+ // 鏌ヨ
+ search() {
+ this.getMesOrderStepReportSearch()
+ },
+ // 瀵煎叆鎸夐挳
+ upload() {
+ this.shows = true
+ this.$refs.importPickerFunc.newDataFunc()
+ },
+ colos() {
+ this.shows = false
+ },
+ // 閲嶇疆
+ reset() {
+ this.form.wkshopcode = ''
+ this.form.wocode = ''
+ this.form.partnumber = ''
+ this.form.partname = ''
+ this.form.partspec = ''
+ this.form.stepname = ''
+ this.form.eqpcode = ''
+ this.form.reportuser = ''
+ this.form.reportdate = ''
+ this.getMesOrderStepReportSearch()
+ },
+
+ // 鏂板鎸夐挳
+ add(operation) {
+ this.operation = operation
+ this.dialogVisible = true
+ },
+ // 淇敼鎸夐挳
+ async edit(operation, row) {
+ this.operation = operation
+ this.dialogVisible = true
+
+ const res = await GroupSalaryReportSearchUser({ id: row.id })
+ this.tagArr = res.data.map(r => r.reportuser)
+ // this.tagArr = ['妤兼潕淇�', '寮犱笁', '鏉庡洓']
+ // this.$nextTick(() => {
+ // this.dialogForm.OrgCode = row.org_code
+ // this.dialogForm.OrgName = row.org_name
+ // this.dialogForm.SupUnit = row.parent_id
+ // })
+ },
+ // 鍒犻櫎鎸夐挳
+ async del(row) {
+ // this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+ // confirmButtonText: '纭畾',
+ // cancelButtonText: '鍙栨秷',
+ // type: 'warning'
+ // }).then(() => {
+ // DeleteOrganization({ orgid: row.code }).then(res => {
+ // if (res.code === '200') {
+ // this.$message.success('鍒犻櫎鎴愬姛!')
+ // if (this.form.page > 1 && this.tableData.length === 1) {
+ // this.form.page--
+ // }
+ // this.getMesOrderStepReportSearch()
+ // }
+ // })
+ // }).catch(() => {
+ // this.$message.info('宸插彇娑堝垹闄�')
+ // })
+ },
+ // 瀵硅瘽妗嗗叧闂簨浠�
+ handleClose() {
+ this.dialogForm.OrgType = ''
+ this.dialogForm.OrgCode = ''
+ this.dialogForm.OrgName = ''
+ this.dialogForm.SupUnit = ''
+ this.$refs.dialogForm.clearValidate()
+ },
+ // 瀵硅瘽妗嗗彇娑�
+ dialogVisibleCancel() {
+ this.dialogVisible = false
+ },
+ // 瀵硅瘽妗嗙‘璁�
+ dialogVisibleConfirm() {
+ this.$refs.dialogForm.validate(valid => {
+ if (valid) {
+ const data = {
+ OrganCode: this.dialogForm.OrgCode,
+ OrganName: this.dialogForm.OrgName,
+ OperType: this.operation === 'add' ? 'Add' : 'Update',
+ Operator: getCookie('admin')
+ }
+ // AddUpdateOrganization(data).then(res => {
+ // if (res.code === '200') {
+ // this.$message.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+ // this.dialogVisible = false
+ // this.getMesOrderStepReportSearch()
+ // } else {
+ // this.$message.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+ // }
+ // })
+ }
+ })
+ },
+ // 鑾峰彇椤甸潰楂樺害
+ getHeight() {
+ this.$nextTick(() => {
+ this.mainHeight = window.innerHeight - 85
+ this.tableHeight = this.mainHeight - 295
+
+ this.$refs.tableDataRef.doLayout()
+ })
+ },
+ tableRowClassName({ row, rowIndex }) {
+ return 'custom-row'
+ }
+ }
}
</script>
-<style scoped>
+<style scoped lang="scss">
+::v-deep .el-select__caret {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+::v-deep .el-range__icon {
+ line-height: 28px !important;
+}
+
+::v-deep .el-range-separator {
+ line-height: 28px !important;
+}
+
+::v-deep .el-range-input {
+ font-size: 14px;
+}
+
+::v-deep .el-range-separator {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+::v-deep .el-progress-bar__innerText{
+ display: none !important;
+}
+</style>
+<style>
+
+.el-table .custom-row {
+ background: #f8f8fa;
+}
</style>
--
Gitblit v1.9.3