Compare commits
No commits in common. "e9538744c3fd2c45852ac6a73443f92b5134d594" and "f1bbdf82e5969316dc5cbb191c70a48809708d9f" have entirely different histories.
e9538744c3
...
f1bbdf82e5
6
.env.dev
6
.env.dev
@ -1,7 +1,7 @@
|
|||||||
###
|
###
|
||||||
# @Author: Do not edit
|
# @Author: Do not edit
|
||||||
# @Date: 2023-08-29 09:40:39
|
# @Date: 2023-08-29 09:40:39
|
||||||
# @LastEditTime: 2023-09-15 14:38:26
|
# @LastEditTime: 2023-09-11 15:55:29
|
||||||
# @LastEditors: DY
|
# @LastEditors: DY
|
||||||
# @Description:
|
# @Description:
|
||||||
###
|
###
|
||||||
@ -12,10 +12,10 @@ ENV = 'development'
|
|||||||
VUE_APP_TITLE = 芋道管理系统
|
VUE_APP_TITLE = 芋道管理系统
|
||||||
|
|
||||||
# 芋道管理系统/开发环境
|
# 芋道管理系统/开发环境
|
||||||
# VUE_APP_BASE_API = 'http://192.168.1.49:48080'
|
VUE_APP_BASE_API = 'http://192.168.1.49:48080'
|
||||||
# VUE_APP_BASE_API = 'http://192.168.1.8:48080'
|
# VUE_APP_BASE_API = 'http://192.168.1.8:48080'
|
||||||
# VUE_APP_BASE_API = 'http://192.168.0.33:48080'
|
# VUE_APP_BASE_API = 'http://192.168.0.33:48080'
|
||||||
VUE_APP_BASE_API = 'http://192.168.1.188:48080'
|
# VUE_APP_BASE_API = 'http://192.168.1.188:48080'
|
||||||
|
|
||||||
# 路由懒加载
|
# 路由懒加载
|
||||||
VUE_CLI_BABEL_TRANSPILE_MODULES = true
|
VUE_CLI_BABEL_TRANSPILE_MODULES = true
|
||||||
|
@ -8,9 +8,7 @@ VUE_APP_TITLE = 芋道管理系统
|
|||||||
VUE_APP_BASE_API = '/prod-api'
|
VUE_APP_BASE_API = '/prod-api'
|
||||||
|
|
||||||
# 根据服务器或域名修改
|
# 根据服务器或域名修改
|
||||||
# PUBLIC_PATH = 'http://my-pi.com:8888/yudao-admin/'
|
PUBLIC_PATH = 'http://my-pi.com:8888/yudao-admin/'
|
||||||
PUBLIC_PATH = 'http://192.168.0.33:8888/'
|
|
||||||
|
|
||||||
# 二级部署路径
|
# 二级部署路径
|
||||||
VUE_APP_APP_NAME ='yudao-admin'
|
VUE_APP_APP_NAME ='yudao-admin'
|
||||||
|
|
||||||
|
@ -55,10 +55,8 @@
|
|||||||
"file-saver": "^2.0.5",
|
"file-saver": "^2.0.5",
|
||||||
"fuse.js": "6.6.2",
|
"fuse.js": "6.6.2",
|
||||||
"highlight.js": "9.18.5",
|
"highlight.js": "9.18.5",
|
||||||
"html2canvas": "^1.4.1",
|
|
||||||
"js-beautify": "1.13.0",
|
"js-beautify": "1.13.0",
|
||||||
"jsencrypt": "3.3.1",
|
"jsencrypt": "3.3.1",
|
||||||
"jspdf": "^2.5.1",
|
|
||||||
"min-dash": "3.5.2",
|
"min-dash": "3.5.2",
|
||||||
"mockjs": "^1.1.0",
|
"mockjs": "^1.1.0",
|
||||||
"moment": "^2.29.4",
|
"moment": "^2.29.4",
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Author: zhp
|
|
||||||
* @Date: 2023-09-12 14:07:04
|
|
||||||
* @LastEditTime: 2023-09-13 09:53:45
|
|
||||||
* @LastEditors: zhp
|
|
||||||
* @Description:
|
|
||||||
*/
|
|
||||||
import request from '@/utils/request'
|
|
||||||
|
|
||||||
export function getYieldAnalysisPageData(data) {
|
|
||||||
return request({
|
|
||||||
url: '/analysis/production-analysis/getOutput',
|
|
||||||
method: 'post',
|
|
||||||
data: data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getCT(data) {
|
|
||||||
return request({
|
|
||||||
url: '/analysis/production-analysis/getCT',
|
|
||||||
method: 'post',
|
|
||||||
data: data
|
|
||||||
})
|
|
||||||
}
|
|
@ -1,10 +1,3 @@
|
|||||||
/*
|
|
||||||
* @Author: zhp
|
|
||||||
* @Date: 2023-08-28 14:29:51
|
|
||||||
* @LastEditTime: 2023-08-31 14:33:46
|
|
||||||
* @LastEditors: zhp
|
|
||||||
* @Description:
|
|
||||||
*/
|
|
||||||
import request from '@/utils/request'
|
import request from '@/utils/request'
|
||||||
|
|
||||||
// 创建产线工段
|
// 创建产线工段
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Author: Do not edit
|
|
||||||
* @Date: 2023-09-12 09:44:53
|
|
||||||
* @LastEditTime: 2023-09-13 16:11:41
|
|
||||||
* @LastEditors: DY
|
|
||||||
* @Description:
|
|
||||||
*/
|
|
||||||
import request from '@/utils/request'
|
|
||||||
|
|
||||||
// 获得工厂分页
|
|
||||||
export function getPdlAutoReport(data) {
|
|
||||||
return request({
|
|
||||||
url: '/monitoring/production-monitor/getPdlAutoReport',
|
|
||||||
method: 'post',
|
|
||||||
data: data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得所有工厂产线列表
|
|
||||||
export function getPdList() {
|
|
||||||
return request({
|
|
||||||
url: '/base/production-line/listAll',
|
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Author: Do not edit
|
|
||||||
* @Date: 2023-09-12 09:44:53
|
|
||||||
* @LastEditTime: 2023-09-14 10:25:46
|
|
||||||
* @LastEditors: DY
|
|
||||||
* @Description:
|
|
||||||
*/
|
|
||||||
import request from '@/utils/request'
|
|
||||||
|
|
||||||
// 获得产线统计数据查询
|
|
||||||
export function getPdlDataSearch(data) {
|
|
||||||
return request({
|
|
||||||
url: '/monitoring/production-monitor/getPdlDataSearch',
|
|
||||||
method: 'post',
|
|
||||||
data: data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得所有工厂产线列表
|
|
||||||
export function getPdList() {
|
|
||||||
return request({
|
|
||||||
url: '/base/production-line/listAll',
|
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Author: Do not edit
|
|
||||||
* @Date: 2023-09-12 09:44:53
|
|
||||||
* @LastEditTime: 2023-09-15 14:12:26
|
|
||||||
* @LastEditors: DY
|
|
||||||
* @Description:
|
|
||||||
*/
|
|
||||||
import request from '@/utils/request'
|
|
||||||
|
|
||||||
// 获得近24小时产线生产数据
|
|
||||||
export function getPdlDataOneDay(data) {
|
|
||||||
return request({
|
|
||||||
url: '/monitoring/production-monitor/getPdlDataOneDay',
|
|
||||||
method: 'post',
|
|
||||||
data: data
|
|
||||||
})
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Author: zhp
|
|
||||||
* @Date: 2023-09-12 14:07:04
|
|
||||||
* @LastEditTime: 2023-09-13 09:46:44
|
|
||||||
* @LastEditors: zhp
|
|
||||||
* @Description:
|
|
||||||
*/
|
|
||||||
import request from '@/utils/request'
|
|
||||||
|
|
||||||
export function getSectionDataSearch(data) {
|
|
||||||
return request({
|
|
||||||
url: '/monitoring/production-monitor/getSectionDataSearch',
|
|
||||||
method: 'post',
|
|
||||||
data: data
|
|
||||||
})
|
|
||||||
}
|
|
@ -1,33 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Author: Do not edit
|
|
||||||
* @Date: 2023-09-12 09:44:53
|
|
||||||
* @LastEditTime: 2023-09-14 14:01:12
|
|
||||||
* @LastEditors: DY
|
|
||||||
* @Description:
|
|
||||||
*/
|
|
||||||
import request from '@/utils/request'
|
|
||||||
|
|
||||||
// 获得工段自动统计数据查询
|
|
||||||
export function getSectionAutoReport(data) {
|
|
||||||
return request({
|
|
||||||
url: '/monitoring/production-monitor/getSectionAutoReport',
|
|
||||||
method: 'post',
|
|
||||||
data: data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得所有工厂产线列表
|
|
||||||
export function getPdList() {
|
|
||||||
return request({
|
|
||||||
url: '/base/production-line/listAll',
|
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得所有产线工段列表
|
|
||||||
export function getWorkshopSectionList() {
|
|
||||||
return request({
|
|
||||||
url: '/base/workshop-section/listAll',
|
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
}
|
|
@ -1 +1 @@
|
|||||||
<svg t="1627279997305" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11904" width="40" height="40"><path d="M938.7008 669.525333L938.7008 249.412267c0-90.555733-73.5232-164.078933-164.1472-164.078933L249.378133 85.333333c-90.555733 0-164.078933 73.48906699-164.078933 164.078933l0 525.2096c0 90.555733 73.454933 164.078933 164.07893301 164.078933l525.20959999 0c80.725333 0 147.8656-58.368 161.553067-135.099733-43.52-18.8416-232.106667-100.283733-330.376533-147.182933-74.786133 90.589867-153.088 144.930133-271.121067 144.930133s-196.81279999-72.704-187.357867-161.655467c6.2464-58.402133 46.2848-153.9072 220.296533-137.5232 91.682133 8.6016 133.666133 25.736533 208.418133 50.414933 19.3536-35.4304 35.4304-74.513067 47.616-116.0192L292.0448 436.565333l0-32.8704 164.0448 0 0-58.9824L256 344.712533l1e-8-36.181333 200.12373299 0L456.123733 223.3344c0 0 1.809067-13.312 16.520533-13.31200001l82.056533 1e-8 0 98.474667 213.333333 0 0 36.181333-213.333333 1e-8 0 58.98239999 174.045867 0c-16.00853301 65.1264-40.277333 124.962133-70.690133 177.220267C708.608 599.176533 938.7008 669.525333 938.7008 669.525333L938.7008 669.525333 938.7008 669.525333 938.7008 669.525333zM321.57013299 744.994133c-124.7232 0-144.452267-78.7456-137.83039999-111.65013299 6.5536-32.733867 42.666667-75.502933 112.0256-75.50293301 79.6672 0 151.04 20.445867 236.714667 62.088533C472.302933 698.333867 398.370133 744.994133 321.57013299 744.994133L321.57013299 744.994133 321.57013299 744.994133zM321.57013299 744.994133" fill="#1296db" p-id="11905"></path></svg>
|
<svg t="1627279997305" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11904" width="40" height="40"><path d="M938.7008 669.525333L938.7008 249.412267c0-90.555733-73.5232-164.078933-164.1472-164.078933L249.378133 85.333333c-90.555733 0-164.078933 73.48906699-164.078933 164.078933l0 525.2096c0 90.555733 73.454933 164.078933 164.07893301 164.078933l525.20959999 0c80.725333 0 147.8656-58.368 161.553067-135.099733-43.52-18.8416-232.106667-100.283733-330.376533-147.182933-74.786133 90.589867-153.088 144.930133-271.121067 144.930133s-196.81279999-72.704-187.357867-161.655467c6.2464-58.402133 46.2848-153.9072 220.296533-137.5232 91.682133 8.6016 133.666133 25.736533 208.418133 50.414933 19.3536-35.4304 35.4304-74.513067 47.616-116.0192L292.0448 436.565333l0-32.8704 164.0448 0 0-58.9824L256 344.712533l1e-8-36.181333 200.12373299 0L456.123733 223.3344c0 0 1.809067-13.312 16.520533-13.31200001l82.056533 1e-8 0 98.474667 213.333333 0 0 36.181333-213.333333 1e-8 0 58.98239999 174.045867 0c-16.00853301 65.1264-40.277333 124.962133-70.690133 177.220267C708.608 599.176533 938.7008 669.525333 938.7008 669.525333L938.7008 669.525333 938.7008 669.525333 938.7008 669.525333zM321.57013299 744.994133c-124.7232 0-144.452267-78.7456-137.83039999-111.65013299 6.5536-32.733867 42.666667-75.502933 112.0256-75.50293301 79.6672 0 151.04 20.445867 236.714667 62.088533C472.302933 698.333867 398.370133 744.994133 321.57013299 744.994133L321.57013299 744.994133 321.57013299 744.994133zM321.57013299 744.994133" fill="#1296db" p-id="11905"></path></svg>
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
@ -247,7 +247,7 @@ Router.prototype.push = function push(location) {
|
|||||||
|
|
||||||
export default new Router({
|
export default new Router({
|
||||||
base: process.env.VUE_APP_APP_NAME ? process.env.VUE_APP_APP_NAME : "/",
|
base: process.env.VUE_APP_APP_NAME ? process.env.VUE_APP_APP_NAME : "/",
|
||||||
mode: 'hash', // 去掉url中的#
|
mode: 'history', // 去掉url中的#
|
||||||
scrollBehavior: () => ({y: 0}),
|
scrollBehavior: () => ({y: 0}),
|
||||||
routes: constantRoutes
|
routes: constantRoutes
|
||||||
})
|
})
|
||||||
|
@ -1,219 +0,0 @@
|
|||||||
<!--
|
|
||||||
filename: dialogForm.vue
|
|
||||||
author: liubin
|
|
||||||
date: 2023-09-11 15:55:13
|
|
||||||
description: DialogForm for equipmentBindSection only
|
|
||||||
-->
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<el-form
|
|
||||||
ref="form"
|
|
||||||
:model="dataForm"
|
|
||||||
label-width="100px"
|
|
||||||
v-loading="formLoading">
|
|
||||||
<el-row :gutter="20">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item
|
|
||||||
label="产线"
|
|
||||||
prop="productionLineId"
|
|
||||||
:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
|
|
||||||
<el-select
|
|
||||||
v-model="dataForm.productionLineId"
|
|
||||||
placeholder="请选择产线"
|
|
||||||
@change="handleProductlineChange">
|
|
||||||
<el-option
|
|
||||||
v-for="opt in productionLineList"
|
|
||||||
:key="opt.value"
|
|
||||||
:label="opt.label"
|
|
||||||
:value="opt.value" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item
|
|
||||||
label="工段"
|
|
||||||
prop="workshopSectionId"
|
|
||||||
:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
|
|
||||||
<el-select
|
|
||||||
v-model="dataForm.workshopSectionId"
|
|
||||||
placeholder="请选择工段"
|
|
||||||
@change="$emit('update', dataForm)">
|
|
||||||
<el-option
|
|
||||||
v-for="opt in worksectionList"
|
|
||||||
:key="opt.value"
|
|
||||||
:label="opt.label"
|
|
||||||
:value="opt.value" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row :gutter="20">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item
|
|
||||||
label="设备"
|
|
||||||
prop="equipmentId"
|
|
||||||
:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
|
|
||||||
<el-select
|
|
||||||
v-model="dataForm.equipmentId"
|
|
||||||
placeholder="请选择设备"
|
|
||||||
@change="$emit('update', dataForm)">
|
|
||||||
<el-option
|
|
||||||
v-for="opt in equipmentList"
|
|
||||||
:key="opt.value"
|
|
||||||
:label="opt.label"
|
|
||||||
:value="opt.value" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="工段排序" prop="sort">
|
|
||||||
<el-input
|
|
||||||
v-model="dataForm.sort"
|
|
||||||
@change="$emit('update', dataForm)"
|
|
||||||
placeholder="请输入工段排序" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row :gutter="20">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="产线数据类型" prop="lineDataType">
|
|
||||||
<el-select
|
|
||||||
v-model="dataForm.lineDataType"
|
|
||||||
placeholder="请选择产线数据类型"
|
|
||||||
@change="$emit('update', dataForm)">
|
|
||||||
<el-option
|
|
||||||
v-for="opt in [
|
|
||||||
{ label: '无类型', value: 0 },
|
|
||||||
{ label: '进口统计', value: 1 },
|
|
||||||
{ label: '出口统计', value: 2 },
|
|
||||||
]"
|
|
||||||
:key="opt.value"
|
|
||||||
:label="opt.label"
|
|
||||||
:value="opt.value" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="工段数据类型" prop="sectionDataType">
|
|
||||||
<el-select
|
|
||||||
v-model="dataForm.sectionDataType"
|
|
||||||
placeholder="请选择工段数据类型"
|
|
||||||
@change="$emit('update', dataForm)">
|
|
||||||
<el-option
|
|
||||||
v-for="opt in [
|
|
||||||
{ label: '无类型', value: 0 },
|
|
||||||
{ label: '进口统计', value: 1 },
|
|
||||||
{ label: '出口统计', value: 2 },
|
|
||||||
]"
|
|
||||||
:key="opt.value"
|
|
||||||
:label="opt.label"
|
|
||||||
:value="opt.value" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</el-form>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
name: 'DialogForm',
|
|
||||||
model: {
|
|
||||||
prop: 'dataForm',
|
|
||||||
event: 'update',
|
|
||||||
},
|
|
||||||
emits: ['update'],
|
|
||||||
components: {},
|
|
||||||
props: {
|
|
||||||
dataForm: {
|
|
||||||
type: Object,
|
|
||||||
default: () => ({}),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
formLoading: true,
|
|
||||||
productionLineList: [],
|
|
||||||
equipmentList: [],
|
|
||||||
worksectionList: [],
|
|
||||||
dataFormCache: null,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
Promise.all([this.getProductLineList(), this.getEquipmentList()]).then(
|
|
||||||
() => {
|
|
||||||
this.formLoading = false;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
'dataForm.productionLineId': {
|
|
||||||
handler: async function (plId) {
|
|
||||||
if (plId) await this.getWorksectionList(plId);
|
|
||||||
},
|
|
||||||
immediate: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
/** 模拟透传 ref */
|
|
||||||
validate(cb) {
|
|
||||||
return this.$refs.form.validate(cb);
|
|
||||||
},
|
|
||||||
resetFields(args) {
|
|
||||||
return this.$refs.form.resetFields(args);
|
|
||||||
},
|
|
||||||
async handleProductlineChange(id) {
|
|
||||||
await this.getWorksectionList(id);
|
|
||||||
this.dataForm.workshopSectionId = null;
|
|
||||||
this.$emit('update', this.dataForm);
|
|
||||||
},
|
|
||||||
// getCode
|
|
||||||
async getCode(url) {
|
|
||||||
const response = await this.$axios(url);
|
|
||||||
return response.data;
|
|
||||||
},
|
|
||||||
// 获取产线列表
|
|
||||||
async getProductLineList() {
|
|
||||||
const response = await this.$axios('/base/production-line/listAll');
|
|
||||||
this.productionLineList = response.data.map((item) => ({
|
|
||||||
label: item.name,
|
|
||||||
value: item.id,
|
|
||||||
}));
|
|
||||||
},
|
|
||||||
// 获取设备列表
|
|
||||||
async getEquipmentList() {
|
|
||||||
const response = await this.$axios(
|
|
||||||
'/base/equipment/page?pageNo=1&pageSize=100'
|
|
||||||
);
|
|
||||||
this.equipmentList = response.data.list.map((item) => ({
|
|
||||||
label: item.name,
|
|
||||||
value: item.id,
|
|
||||||
}));
|
|
||||||
},
|
|
||||||
// 获取工段列表
|
|
||||||
async getWorksectionList(plId) {
|
|
||||||
const response = await this.$axios(
|
|
||||||
'/base/workshop-section/listByParentId',
|
|
||||||
{
|
|
||||||
params: {
|
|
||||||
id: plId,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
);
|
|
||||||
this.worksectionList = response.data.map((item) => ({
|
|
||||||
label: item.name,
|
|
||||||
value: item.id,
|
|
||||||
}));
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.el-date-editor,
|
|
||||||
.el-select {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -37,7 +37,7 @@
|
|||||||
@close="cancel"
|
@close="cancel"
|
||||||
@cancel="cancel"
|
@cancel="cancel"
|
||||||
@confirm="submitForm">
|
@confirm="submitForm">
|
||||||
<DialogForm v-if="open" ref="form" v-model="form" :rows="rows" />
|
<DialogForm v-if="open" ref="form" :dataForm="form" :rows="rows" />
|
||||||
</base-dialog>
|
</base-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -53,10 +53,10 @@ import {
|
|||||||
} from '@/api/base/equipmentBindSection';
|
} from '@/api/base/equipmentBindSection';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import basicPageMixin from '@/mixins/lb/basicPageMixin';
|
import basicPageMixin from '@/mixins/lb/basicPageMixin';
|
||||||
import DialogForm from './dialogForm.vue';
|
|
||||||
export default {
|
export default {
|
||||||
name: 'EquipmentBindSection',
|
name: 'EquipmentBindSection',
|
||||||
components: { DialogForm },
|
components: {},
|
||||||
mixins: [basicPageMixin],
|
mixins: [basicPageMixin],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -181,8 +181,8 @@ export default {
|
|||||||
select: true,
|
select: true,
|
||||||
label: '工段',
|
label: '工段',
|
||||||
url: '/base/workshop-section/listByParentId', // 根据产线获取
|
url: '/base/workshop-section/listByParentId', // 根据产线获取
|
||||||
// depends: '__product_line', // 依赖产线获取数据
|
// depends: '__product_line', // 依赖产线获取数据
|
||||||
depends: 'productionLineId',
|
depends: 'productionLineId',
|
||||||
prop: 'workshopSectionId',
|
prop: 'workshopSectionId',
|
||||||
rules: [{ required: true, message: '不能为空', trigger: 'blur' }],
|
rules: [{ required: true, message: '不能为空', trigger: 'blur' }],
|
||||||
},
|
},
|
||||||
|
@ -1,13 +1,6 @@
|
|||||||
/*
|
|
||||||
* @Author: zhp
|
|
||||||
* @Date: 2023-09-11 16:18:44
|
|
||||||
* @LastEditTime: 2023-09-12 14:25:01
|
|
||||||
* @LastEditors: zhp
|
|
||||||
* @Description:
|
|
||||||
*/
|
|
||||||
import Mock from 'mockjs';
|
import Mock from 'mockjs';
|
||||||
|
|
||||||
const baseURL = 'http://192.168.1.188:48080/admin-api';
|
const baseURL = 'http://192.168.1.49:48080/admin-api';
|
||||||
|
|
||||||
Mock.setup({
|
Mock.setup({
|
||||||
timeout: 200,
|
timeout: 200,
|
||||||
|
@ -1,93 +0,0 @@
|
|||||||
<!--
|
|
||||||
* @Author: zhp
|
|
||||||
* @Date: 2023-09-13 09:02:25
|
|
||||||
* @LastEditTime: 2023-09-13 10:33:20
|
|
||||||
* @LastEditors: zhp
|
|
||||||
* @Description:
|
|
||||||
-->
|
|
||||||
<template>
|
|
||||||
<div :class="className" :style="{height:height,width:width}" />
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import * as echarts from 'echarts'
|
|
||||||
require('echarts/theme/macarons') // echarts theme
|
|
||||||
// import resize from './mixins/resize'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
// mixins: [resize],
|
|
||||||
props: {
|
|
||||||
className: {
|
|
||||||
type: String,
|
|
||||||
default: 'chart'
|
|
||||||
},
|
|
||||||
width: {
|
|
||||||
type: String,
|
|
||||||
default: '100%'
|
|
||||||
},
|
|
||||||
height: {
|
|
||||||
type: String,
|
|
||||||
default: '350px'
|
|
||||||
},
|
|
||||||
// autoResize: {
|
|
||||||
// type: Boolean,
|
|
||||||
// default: true
|
|
||||||
// }
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
chart: null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// watch: {
|
|
||||||
// chartData: {
|
|
||||||
// deep: true,
|
|
||||||
// handler(val) {
|
|
||||||
// this.setOptions(val)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
mounted() {
|
|
||||||
// this.$nextTick(() => {
|
|
||||||
// this.initChart()
|
|
||||||
// })
|
|
||||||
},
|
|
||||||
// beforeDestroy() {
|
|
||||||
// if (!this.chart) {
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
// this.chart.dispose()
|
|
||||||
// this.chart = null
|
|
||||||
// },
|
|
||||||
methods: {
|
|
||||||
initChart(xData, yData,lineName) {
|
|
||||||
console.log(xData,yData);
|
|
||||||
this.chart = echarts.init(this.$el, 'macarons')
|
|
||||||
this.setOptions(xData, yData, lineName)
|
|
||||||
},
|
|
||||||
setOptions(xData, yData, lineName) {
|
|
||||||
let seriesData = []
|
|
||||||
lineName.forEach((item,index) => {
|
|
||||||
seriesData.push({
|
|
||||||
name: item,
|
|
||||||
data: yData[index],
|
|
||||||
type: 'line',
|
|
||||||
})
|
|
||||||
})
|
|
||||||
this.chart.setOption({
|
|
||||||
xAxis: {
|
|
||||||
type: 'category',
|
|
||||||
data: xData
|
|
||||||
},
|
|
||||||
legend: {
|
|
||||||
data:lineName
|
|
||||||
},
|
|
||||||
yAxis: {
|
|
||||||
type: 'value'
|
|
||||||
},
|
|
||||||
series: seriesData
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
@ -1,200 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="app-container">
|
|
||||||
<search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
|
|
||||||
<base-table v-loading="dataListLoading" :table-props="tableProps" :table-data="tableData" />
|
|
||||||
<line-chart ref="lineChart" />
|
|
||||||
<!-- <pagination
|
|
||||||
:limit.sync="listQuery.pageSize"
|
|
||||||
:page.sync="listQuery.pageNo"
|
|
||||||
:total="listQuery.total"
|
|
||||||
@pagination="getDataList" /> -->
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
// import basicPage from '../../mixins/basic-page';
|
|
||||||
import { parseTime } from '../../mixins/code-filter';
|
|
||||||
import { getCT } from '@/api/core/analysis/index';
|
|
||||||
import { getProductionLinePage } from '@/api/core/base/productionLine';
|
|
||||||
import lineChart from '../LineChart'
|
|
||||||
// import { getWorkshopSectionPage } from '@/api/core/base/workshopSection';
|
|
||||||
|
|
||||||
// const tableProps = [
|
|
||||||
// // {
|
|
||||||
// // prop: 'lineName',
|
|
||||||
// // label: '产线',
|
|
||||||
// // align: 'center',
|
|
||||||
// // },
|
|
||||||
// // {
|
|
||||||
// // prop: 'sum',
|
|
||||||
// // label: '合计',
|
|
||||||
// // align: 'center',
|
|
||||||
// // },
|
|
||||||
// // {
|
|
||||||
// // prop: 'dynamicValue',
|
|
||||||
// // label: 'dynamicName',
|
|
||||||
// // align: 'center',
|
|
||||||
// // children:[
|
|
||||||
|
|
||||||
// // ]
|
|
||||||
// // }
|
|
||||||
// ];
|
|
||||||
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
lineChart,
|
|
||||||
},
|
|
||||||
// mixins: [basicPage],
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
urlOptions: {
|
|
||||||
getDataListURL: getCT,
|
|
||||||
},
|
|
||||||
tableProps: [],
|
|
||||||
dataListLoading: false,
|
|
||||||
tableData: [],
|
|
||||||
listQuery: {
|
|
||||||
// time: ''
|
|
||||||
endTime: undefined,
|
|
||||||
lineId:undefined,
|
|
||||||
startTime:undefined
|
|
||||||
},
|
|
||||||
xData: [],
|
|
||||||
yData: [],
|
|
||||||
optionArrUrl: [getProductionLinePage],
|
|
||||||
formConfig: [
|
|
||||||
{
|
|
||||||
type: 'select',
|
|
||||||
label: '产线',
|
|
||||||
selectOptions: [],
|
|
||||||
param: 'lineIds',
|
|
||||||
defaultSelect: '',
|
|
||||||
multiple: true,
|
|
||||||
filterable: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'datePicker',
|
|
||||||
label: '时间',
|
|
||||||
dateType: 'datetime',
|
|
||||||
format: 'yyyy-MM-dd',
|
|
||||||
valueFormat: 'yyyy-MM-dd HH:mm:ss',
|
|
||||||
rangeSeparator: '-',
|
|
||||||
startPlaceholder: '开始时间',
|
|
||||||
endPlaceholder: '结束时间',
|
|
||||||
param: 'time',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'button',
|
|
||||||
btnName: '搜索',
|
|
||||||
name: 'search',
|
|
||||||
color: 'primary',
|
|
||||||
}
|
|
||||||
],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.getArr();
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
getArr() {
|
|
||||||
const params = {
|
|
||||||
page: 1,
|
|
||||||
limit: 500,
|
|
||||||
};
|
|
||||||
this.optionArrUrl.forEach((item, index) => {
|
|
||||||
item(params).then((response) => {
|
|
||||||
this.formConfig[index].selectOptions = response.data.list
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
getData() {
|
|
||||||
this.listQuery.lineId = '1672847052717821953'
|
|
||||||
this.listQuery.startTime = '1693497600000';
|
|
||||||
this.listQuery.endTime = '1693843200000';
|
|
||||||
this.urlOptions.getDataListURL(this.listQuery).then(res => {
|
|
||||||
console.log(res)
|
|
||||||
let arr = [
|
|
||||||
{
|
|
||||||
prop: 'sectionName',
|
|
||||||
label: '工段',
|
|
||||||
align: 'center',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
prop: 'equName',
|
|
||||||
label: '设备',
|
|
||||||
align: 'center',
|
|
||||||
},
|
|
||||||
]
|
|
||||||
let eqArr= []
|
|
||||||
res.data.data.forEach((ele, index) => {
|
|
||||||
console.log(ele);
|
|
||||||
eqArr.push(ele.equName)
|
|
||||||
})
|
|
||||||
console.log(eqArr)
|
|
||||||
// console.log(res.data.nameData.slice(1))
|
|
||||||
res.data.nameData.forEach(item => {
|
|
||||||
if (eqArr[0] === item.parentId) {
|
|
||||||
const props = {
|
|
||||||
'prop': item.name,
|
|
||||||
'label': item.name,
|
|
||||||
'align': 'center'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
arr[2].children.push(props)
|
|
||||||
})
|
|
||||||
let obj = {
|
|
||||||
lineName: res.data.data[0].lineName,
|
|
||||||
sum: res.data.data[0].sum,
|
|
||||||
}
|
|
||||||
res.data.data[0].data[0].children.forEach((item, index) => {
|
|
||||||
console.log(item)
|
|
||||||
// let data = 'data' + Number(index+1)
|
|
||||||
obj['' + item.dynamicName + ''] = item.dynamicValue
|
|
||||||
})
|
|
||||||
this.tableData = [obj]
|
|
||||||
console.log(this.tableData)
|
|
||||||
console.log(arr)
|
|
||||||
this.tableProps = arr
|
|
||||||
let xData = []
|
|
||||||
|
|
||||||
res.data.nameData.forEach(item => {
|
|
||||||
xData.push(item.name)
|
|
||||||
// arr[2].children.push(props)
|
|
||||||
})
|
|
||||||
let yData = []
|
|
||||||
res.data.data[0].data[0].children.forEach((item, index) => {
|
|
||||||
// console.log(item)
|
|
||||||
yData.push(item.dynamicValue)
|
|
||||||
// let data = 'data' + Number(index+1)
|
|
||||||
// obj['' + item.dynamicName + ''] = item.dynamicValue
|
|
||||||
})
|
|
||||||
console.log(this.yData)
|
|
||||||
this.$refs.lineChart.initChart(xData, yData)
|
|
||||||
// this.total = response.data.total;
|
|
||||||
// this.dataListLoading = false;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
buttonClick(val) {
|
|
||||||
// console.log(val)
|
|
||||||
switch (val.btnName) {
|
|
||||||
case 'search':
|
|
||||||
// this.listQuery.pageNo = 1;
|
|
||||||
// this.listQuery.pageSize = 10;
|
|
||||||
this.getData()
|
|
||||||
break;
|
|
||||||
case 'reset':
|
|
||||||
this.$refs.searchBarForm.resetForm();
|
|
||||||
this.listQuery = {
|
|
||||||
pageSize: 10,
|
|
||||||
pageNo: 1,
|
|
||||||
total: 1,
|
|
||||||
};
|
|
||||||
this.getDataList();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
console.log(val);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
|
@ -1,223 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="app-container">
|
|
||||||
<search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
|
|
||||||
<base-table v-loading="dataListLoading" :table-props="tableProps" :table-data="tableData" />
|
|
||||||
<line-chart ref="lineChart" />
|
|
||||||
<!-- <pagination
|
|
||||||
:limit.sync="listQuery.pageSize"
|
|
||||||
:page.sync="listQuery.pageNo"
|
|
||||||
:total="listQuery.total"
|
|
||||||
@pagination="getDataList" /> -->
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
// import basicPage from '../../mixins/basic-page';
|
|
||||||
import { parseTime } from '../../mixins/code-filter';
|
|
||||||
import { getYieldAnalysisPageData } from '@/api/core/analysis/index';
|
|
||||||
import { getProductionLinePage } from '@/api/core/base/productionLine';
|
|
||||||
import lineChart from '../LineChart'
|
|
||||||
// import { getWorkshopSectionPage } from '@/api/core/base/workshopSection';
|
|
||||||
|
|
||||||
// const tableProps = [
|
|
||||||
// // {
|
|
||||||
// // prop: 'lineName',
|
|
||||||
// // label: '产线',
|
|
||||||
// // align: 'center',
|
|
||||||
// // },
|
|
||||||
// // {
|
|
||||||
// // prop: 'sum',
|
|
||||||
// // label: '合计',
|
|
||||||
// // align: 'center',
|
|
||||||
// // },
|
|
||||||
// // {
|
|
||||||
// // prop: 'dynamicValue',
|
|
||||||
// // label: 'dynamicName',
|
|
||||||
// // align: 'center',
|
|
||||||
// // children:[
|
|
||||||
|
|
||||||
// // ]
|
|
||||||
// // }
|
|
||||||
// ];
|
|
||||||
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
lineChart,
|
|
||||||
},
|
|
||||||
// mixins: [basicPage],
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
urlOptions: {
|
|
||||||
getDataListURL: getYieldAnalysisPageData,
|
|
||||||
},
|
|
||||||
tableProps:[],
|
|
||||||
dataListLoading:false,
|
|
||||||
tableData: [],
|
|
||||||
listQuery: {
|
|
||||||
lineIds: [],
|
|
||||||
time: ''
|
|
||||||
},
|
|
||||||
xData: [],
|
|
||||||
yData:[],
|
|
||||||
optionArrUrl: [getProductionLinePage ],
|
|
||||||
formConfig: [
|
|
||||||
{
|
|
||||||
type: 'select',
|
|
||||||
label: '产线',
|
|
||||||
selectOptions: [],
|
|
||||||
param: 'lineIds',
|
|
||||||
defaultSelect: '',
|
|
||||||
multiple:true,
|
|
||||||
filterable: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'datePicker',
|
|
||||||
label: '时间',
|
|
||||||
dateType: 'datetime',
|
|
||||||
format: 'yyyy-MM-dd',
|
|
||||||
valueFormat: 'yyyy-MM-dd HH:mm:ss',
|
|
||||||
rangeSeparator: '-',
|
|
||||||
startPlaceholder: '开始时间',
|
|
||||||
endPlaceholder: '结束时间',
|
|
||||||
param: 'time',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'button',
|
|
||||||
btnName: '搜索',
|
|
||||||
name: 'search',
|
|
||||||
color: 'primary',
|
|
||||||
}
|
|
||||||
],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.getArr();
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
getArr() {
|
|
||||||
const params = {
|
|
||||||
page: 1,
|
|
||||||
limit: 500,
|
|
||||||
};
|
|
||||||
this.optionArrUrl.forEach((item, index) => {
|
|
||||||
item(params).then((response) => {
|
|
||||||
this.formConfig[index].selectOptions = response.data.list
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
getData() {
|
|
||||||
// this.listQuery.lineIds = ['1672847052717821953']
|
|
||||||
// this.listQuery.productId = val.productId;
|
|
||||||
// this.listQuery.time = '1694486098000';
|
|
||||||
this.urlOptions.getDataListURL(this.listQuery).then(res => {
|
|
||||||
let arr = [
|
|
||||||
{
|
|
||||||
prop: 'lineName',
|
|
||||||
label: '产线',
|
|
||||||
align: 'center',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
prop: 'sum',
|
|
||||||
label: '合计',
|
|
||||||
align: 'center',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
prop: res.data.nameData[0].name,
|
|
||||||
label: res.data.nameData[0].name,
|
|
||||||
align: 'center',
|
|
||||||
children:[
|
|
||||||
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
console.log(res.data.nameData.slice(1))
|
|
||||||
res.data.nameData.slice(1).forEach(item => {
|
|
||||||
const props = {
|
|
||||||
'prop': item.name,
|
|
||||||
'label': item.name,
|
|
||||||
'align': 'center'
|
|
||||||
}
|
|
||||||
arr[2].children.push(props)
|
|
||||||
})
|
|
||||||
let tableDataArr =[]
|
|
||||||
res.data.data.forEach(item => {
|
|
||||||
let obj = {}
|
|
||||||
obj.lineName= item.lineName,
|
|
||||||
obj.sum= item.sum,
|
|
||||||
item.data.forEach((ele, index) => {
|
|
||||||
// console.log(ele)
|
|
||||||
ele.children.forEach((e) => {
|
|
||||||
console.log(e.dynamicName)
|
|
||||||
obj['' + e.dynamicName + ''] = e.dynamicValue
|
|
||||||
console.log(obj['' + e.dynamicName + '']);
|
|
||||||
})
|
|
||||||
})
|
|
||||||
tableDataArr.push(obj)
|
|
||||||
});
|
|
||||||
this.tableData = tableDataArr
|
|
||||||
console.log(this.tableData)
|
|
||||||
console.log(arr)
|
|
||||||
this.tableProps = arr
|
|
||||||
let xData = []
|
|
||||||
|
|
||||||
res.data.nameData.slice(1).forEach(item => {
|
|
||||||
xData.push(item.name)
|
|
||||||
// arr[2].children.push(props)
|
|
||||||
})
|
|
||||||
let yAllData = []
|
|
||||||
let lineName = []
|
|
||||||
res.data.data.forEach(item => {
|
|
||||||
let yData = []
|
|
||||||
lineName.push(item.lineName)
|
|
||||||
// let obj = {}
|
|
||||||
// obj.lineName = item.lineName,
|
|
||||||
// obj.sum = item.sum,
|
|
||||||
item.data.forEach((ele, index) => {
|
|
||||||
// console.log(ele)
|
|
||||||
ele.children.forEach((e) => {
|
|
||||||
// let yData = []
|
|
||||||
yData.push(e.dynamicValue)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
yAllData.push(yData)
|
|
||||||
});
|
|
||||||
console.log(lineName)
|
|
||||||
// res.data.data[0].data[0].children.forEach((item, index) => {
|
|
||||||
// // console.log(item)
|
|
||||||
// yData.push(item.dynamicValue)
|
|
||||||
// // let data = 'data' + Number(index+1)
|
|
||||||
// // obj['' + item.dynamicName + ''] = item.dynamicValue
|
|
||||||
// })
|
|
||||||
// console.log(this.yData)
|
|
||||||
this.$refs.lineChart.initChart(xData, yAllData, lineName)
|
|
||||||
// this.total = response.data.total;
|
|
||||||
// this.dataListLoading = false;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
buttonClick(val) {
|
|
||||||
// console.log(val)
|
|
||||||
switch (val.btnName) {
|
|
||||||
case 'search':
|
|
||||||
this.listQuery.lineIds = val.lineIds ? val.lineIds :undefined
|
|
||||||
// this.listQuery.productId = val.productId;
|
|
||||||
this.listQuery.time = val.time ? new Date(val.time).getTime() : undefined
|
|
||||||
// this.listQuery.pageNo = 1;
|
|
||||||
// this.listQuery.pageSize = 10;
|
|
||||||
this.getData()
|
|
||||||
break;
|
|
||||||
case 'reset':
|
|
||||||
this.$refs.searchBarForm.resetForm();
|
|
||||||
this.listQuery = {
|
|
||||||
pageSize: 10,
|
|
||||||
pageNo: 1,
|
|
||||||
total: 1,
|
|
||||||
};
|
|
||||||
this.getDataList();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
console.log(val);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
|
@ -195,7 +195,7 @@ export default {
|
|||||||
switch (val.btnName) {
|
switch (val.btnName) {
|
||||||
case 'search':
|
case 'search':
|
||||||
this.listQuery.pageNo = 1;
|
this.listQuery.pageNo = 1;
|
||||||
this.listQuery.pageSize = 10;.7
|
this.listQuery.pageSize = 10;
|
||||||
this.listQuery.name = val.name;
|
this.listQuery.name = val.name;
|
||||||
this.getDataList();
|
this.getDataList();
|
||||||
break;
|
break;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* @Date: 2020-12-29 16:49:28
|
* @Date: 2020-12-29 16:49:28
|
||||||
* @LastEditors: DY
|
* @LastEditors: zwq
|
||||||
* @LastEditTime: 2023-09-12 11:13:34
|
* @LastEditTime: 2023-08-01 11:10:04
|
||||||
* @FilePath: \basic-admin\src\filters\basicData\index.js
|
* @FilePath: \basic-admin\src\filters\basicData\index.js
|
||||||
* @Description:
|
* @Description:
|
||||||
*/
|
*/
|
||||||
@ -13,11 +13,6 @@ const table = {
|
|||||||
2: '停止',
|
2: '停止',
|
||||||
3: '未知',
|
3: '未知',
|
||||||
},
|
},
|
||||||
reportType: {
|
|
||||||
1: '日',
|
|
||||||
2: '周',
|
|
||||||
3: '月'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 日期格式化
|
// 日期格式化
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Author: Do not edit
|
* @Author: Do not edit
|
||||||
* @Date: 2023-08-29 14:59:29
|
* @Date: 2023-08-29 14:59:29
|
||||||
* @LastEditTime: 2023-09-15 11:19:34
|
* @LastEditTime: 2023-09-11 15:52:20
|
||||||
* @LastEditors: DY
|
* @LastEditors: DY
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
@ -32,104 +32,100 @@
|
|||||||
:limit.sync="listQuery.pageSize"
|
:limit.sync="listQuery.pageSize"
|
||||||
:page.sync="listQuery.pageNo"
|
:page.sync="listQuery.pageNo"
|
||||||
:total="listQuery.total"
|
:total="listQuery.total"
|
||||||
@pagination="getDataList"
|
@pagination="getDataList" />
|
||||||
/>
|
<!-- <div>
|
||||||
<!-- <div v-show="false" ref="pdf">
|
<el-button @click="down()">1111</el-button>
|
||||||
<base-table
|
<el-table :data="tableData1" stripe style="width: 100%">
|
||||||
v-loading="dataListLoading"
|
<el-table-column prop="date" label="日期" width="180" />
|
||||||
:table-props="tableProps"
|
<el-table-column prop="name" label="姓名" />
|
||||||
:page="listQuery.pageNo"
|
<el-table-column prop="address" label="地址" />
|
||||||
:limit="listQuery.pageSize"
|
|
||||||
:table-data="selectedList"
|
|
||||||
/>
|
|
||||||
</div> -->
|
|
||||||
<div ref="pdf" v-show="false">
|
|
||||||
<el-table :data="selectedList" stripe border="true" style="width: 100%">
|
|
||||||
<el-table-column prop="reportType" label="报表类型" />
|
|
||||||
<el-table-column prop="reportStartTime" label="统计开始时间" />
|
|
||||||
<el-table-column prop="reportEndTime" label="统计结束时间" />
|
|
||||||
<el-table-column prop="proLineName" label="产线名称" />
|
|
||||||
<el-table-column prop="inputNum" label="投入数量/片" />
|
|
||||||
<el-table-column prop="outputNum" label="产出数量/片" />
|
|
||||||
<el-table-column prop="outputArea" label="产出面积/㎡" />
|
|
||||||
<el-table-column prop="lossArea" label="损耗面积/㎡" />
|
|
||||||
<el-table-column prop="lossRatio" label="损耗比例%" />
|
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div> -->
|
||||||
<el-dialog
|
|
||||||
title="提示"
|
|
||||||
:visible.sync="dialogVisible"
|
|
||||||
width="30%"
|
|
||||||
:before-close="handleClose">
|
|
||||||
<el-button type="primary" @click="exportXlsx">xlsx</el-button>
|
|
||||||
<el-button type="success" @click="exportPdf">pdf</el-button>
|
|
||||||
<span slot="footer" class="dialog-footer">
|
|
||||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
|
||||||
<el-button type="primary" @click="dialogVisible = false">确 定</el-button>
|
|
||||||
</span>
|
|
||||||
</el-dialog>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { parseTime } from '../../mixins/code-filter';
|
import { parseTime } from '../../mixins/code-filter';
|
||||||
import { getPdlAutoReport, getPdList } from '@/api/core/monitoring/auto'
|
import {
|
||||||
import jsPDF from 'jspdf'
|
getFactoryPage,
|
||||||
import html2canvas from 'html2canvas'
|
exportFactoryExcel,
|
||||||
// import codeFilter from '../../mixins/code-filter'
|
} from '@/api/core/base/factory';
|
||||||
import * as XLSX from 'xlsx'
|
import * as XLSX from 'xlsx'
|
||||||
import FileSaver from 'file-saver'
|
import FileSaver from 'file-saver'
|
||||||
|
|
||||||
const tableProps = [
|
const tableData1 = [
|
||||||
{
|
{
|
||||||
prop: 'reportType',
|
date: '2016-05-03',
|
||||||
label: '报表类型',
|
name: 'fom',
|
||||||
align: 'center'
|
address: 'No'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'reportStartTime',
|
date: '2016-05-02',
|
||||||
|
name: 'fom',
|
||||||
|
address: '189'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: '2016-0225-03',
|
||||||
|
name: 'fom',
|
||||||
|
address: 'Ndddo'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: '2016-04445-02',
|
||||||
|
name: 'fom',
|
||||||
|
address: '18edd9'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: 'code',
|
||||||
|
label: '报表类型',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'createTime',
|
||||||
label: '统计开始时间',
|
label: '统计开始时间',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
filter: parseTime,
|
filter: parseTime,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'reportEndTime',
|
prop: 'createTime3',
|
||||||
label: '统计结束时间',
|
label: '统计结束时间',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
filter: parseTime,
|
filter: parseTime,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'proLineName',
|
prop: 'name',
|
||||||
label: '产线名称',
|
label: '产线名称',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'inputNum',
|
prop: 'address',
|
||||||
label: '投入数量/片',
|
label: '投入数量/片',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'outputNum',
|
prop: 'remark44',
|
||||||
label: '产出数量/片',
|
label: '产出数量/片',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'outputArea',
|
prop: 'remark23',
|
||||||
label: '产出面积/㎡',
|
label: '产出面积/㎡',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'lossNum',
|
prop: 'remark145',
|
||||||
label: '损耗数量/片',
|
label: '损耗数量/片',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'lossArea',
|
prop: 'remark22',
|
||||||
label: '损耗面积/㎡',
|
label: '损耗面积/㎡',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'lossRatio',
|
prop: 'remark1',
|
||||||
label: '损耗比例%',
|
label: '损耗比例%',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
}
|
}
|
||||||
@ -139,8 +135,16 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
urlOptions: {
|
urlOptions: {
|
||||||
getDataListURL: getPdlAutoReport
|
getDataListURL: getFactoryPage,
|
||||||
|
exportURL: exportFactoryExcel,
|
||||||
},
|
},
|
||||||
|
urlOptions: {
|
||||||
|
getDataListURL: '',
|
||||||
|
deleteURL: '',
|
||||||
|
statusUrl: '',
|
||||||
|
exportURL: ''
|
||||||
|
},
|
||||||
|
tableData1,
|
||||||
listQuery: {
|
listQuery: {
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
@ -148,12 +152,10 @@ export default {
|
|||||||
},
|
},
|
||||||
exportLoading: false,
|
exportLoading: false,
|
||||||
dataListLoading: false,
|
dataListLoading: false,
|
||||||
dialogVisible: false,
|
|
||||||
addOrEditTitle: '',
|
addOrEditTitle: '',
|
||||||
addOrUpdateVisible: false,
|
addOrUpdateVisible: false,
|
||||||
tableProps,
|
tableProps,
|
||||||
tableBtn: [],
|
tableBtn: [],
|
||||||
selectedList: [],
|
|
||||||
// tableBtn: [
|
// tableBtn: [
|
||||||
// this.$auth.hasPermi(`base:factory:update`)
|
// this.$auth.hasPermi(`base:factory:update`)
|
||||||
// ? {
|
// ? {
|
||||||
@ -179,21 +181,8 @@ export default {
|
|||||||
{
|
{
|
||||||
type: 'select',
|
type: 'select',
|
||||||
label: '报表类型',
|
label: '报表类型',
|
||||||
selectOptions: [
|
selectOptions: [],
|
||||||
{
|
param: 'name',
|
||||||
id: 1,
|
|
||||||
name: '日'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 2,
|
|
||||||
name: '周'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 3,
|
|
||||||
name: '月'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
param: 'reportType',
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'datePicker',
|
type: 'datePicker',
|
||||||
@ -227,63 +216,16 @@ export default {
|
|||||||
],
|
],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {},
|
||||||
this.getDataList()
|
|
||||||
this.getPdLineList()
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
exportPdf() {
|
|
||||||
this.pdf()
|
|
||||||
this.dialogVisible = false
|
|
||||||
},
|
|
||||||
exportXlsx() {
|
|
||||||
this.down()
|
|
||||||
this.dialogVisible = false
|
|
||||||
},
|
|
||||||
imgDownload() {
|
|
||||||
let that = this
|
|
||||||
let img = this.$refs['pdf']
|
|
||||||
// 图片高度
|
|
||||||
var w = parseInt(window.getComputedStyle(img).width)
|
|
||||||
// 图片宽度
|
|
||||||
var h = parseInt(window.getComputedStyle(img).height)
|
|
||||||
// 滚轮置顶,避免留白
|
|
||||||
window.pageYOffset = 0
|
|
||||||
html2canvas(img).then(function(canvas) {
|
|
||||||
|
|
||||||
})
|
|
||||||
},
|
|
||||||
pdf() {
|
|
||||||
// console.log('打印看看[df]')
|
|
||||||
// const pdf = new jsPDF()
|
|
||||||
// const content = this.$refs.pdf.innerHTML
|
|
||||||
// console.log('打印看看', content)
|
|
||||||
// pdf.text(content, 15, 15)
|
|
||||||
// // pdf.text('Hello world!', 10, 10)
|
|
||||||
// pdf.save('test.pdf')
|
|
||||||
// console.log('打印看看', pdf)
|
|
||||||
const printWindow = window.open('', '_blank')
|
|
||||||
const temp = this.$refs.pdf.innerHTML
|
|
||||||
console.log(temp)
|
|
||||||
printWindow.document.body.innerHTML = temp
|
|
||||||
printWindow.focus()
|
|
||||||
// printWindow.document.writeln(this.$refs.pdf.innerHTML)
|
|
||||||
printWindow.document.close()
|
|
||||||
printWindow.print()
|
|
||||||
},
|
|
||||||
handleClose(done) {
|
|
||||||
this.$confirm('确认关闭?')
|
|
||||||
.then(_ => {
|
|
||||||
done();
|
|
||||||
})
|
|
||||||
.catch(_ => {});
|
|
||||||
},
|
|
||||||
down() {
|
down() {
|
||||||
//选中导出时可更改此处数组 选中的数组
|
//选中导出时可更改此处数组
|
||||||
|
const selectedData = this.tableData1.slice(0, 2)
|
||||||
|
console.log('你好', selectedData, this.tableData1)
|
||||||
//构建导出的表格数据
|
//构建导出的表格数据
|
||||||
const exportData = [
|
const exportData = [
|
||||||
{reportType: '报表类型', reportStartTime: '统计开始时间', reportEndTime: '统计结束时间', proLineName: '产线名称', inputNum: '投入数量/片', outputNum: '产出数量/片', outputArea: '产出面积/㎡', lossNum: '损耗数量/片', lossArea: '损耗面积/㎡', lossRatio: '损耗比例%' },
|
{date: '日期', name: '姓名', address: '地址'},
|
||||||
...this.selectedList
|
...selectedData
|
||||||
]
|
]
|
||||||
//注意表格上绑定id, 获取dom元素
|
//注意表格上绑定id, 获取dom元素
|
||||||
const worksheet = XLSX.utils.json_to_sheet(exportData, { skipHeader: true })
|
const worksheet = XLSX.utils.json_to_sheet(exportData, { skipHeader: true })
|
||||||
@ -291,7 +233,7 @@ export default {
|
|||||||
XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1")
|
XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1")
|
||||||
const workbookOutput = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' })
|
const workbookOutput = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' })
|
||||||
try {
|
try {
|
||||||
FileSaver.saveAs(new Blob([workbookOutput], { type: 'application/octet-stream' }), '产线统计自动报表.xlsx')
|
FileSaver.saveAs(new Blob([workbookOutput], { type: 'application/octet-stream' }), 'hihi.xlsx')
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e)
|
console.log(e)
|
||||||
}
|
}
|
||||||
@ -299,22 +241,14 @@ export default {
|
|||||||
selectChange(val) {
|
selectChange(val) {
|
||||||
console.log(val)
|
console.log(val)
|
||||||
this.selectedList = val
|
this.selectedList = val
|
||||||
console.log('勾选数据', this.selectedList)
|
|
||||||
},
|
},
|
||||||
getPdLineList() {
|
|
||||||
getPdList().then((res) => {
|
|
||||||
this.formConfig[0].selectOptions = res.data || []
|
|
||||||
})
|
|
||||||
},
|
|
||||||
buttonClick(val) {
|
buttonClick(val) {
|
||||||
switch (val.btnName) {
|
switch (val.btnName) {
|
||||||
case 'search':
|
case 'search':
|
||||||
this.listQuery.pageNo = 1;
|
this.listQuery.pageNo = 1;
|
||||||
this.listQuery.pageSize = 10;
|
this.listQuery.pageSize = 10;
|
||||||
this.listQuery.lineId = val.line ? val.line : undefined;
|
this.listQuery.name = val.name;
|
||||||
this.listQuery.reportType = val.reportType ? val.reportType : undefined;
|
this.listQuery.code = val.code;
|
||||||
this.listQuery.reportStartTime = [new Date(val.timeVal[0]).getTime()];
|
|
||||||
this.listQuery.reportEndTime = [new Date(val.timeVal[1]).getTime()];
|
|
||||||
this.getDataList();
|
this.getDataList();
|
||||||
break;
|
break;
|
||||||
case 'export':
|
case 'export':
|
||||||
@ -328,10 +262,7 @@ export default {
|
|||||||
getDataList() {
|
getDataList() {
|
||||||
this.dataListLoading = true;
|
this.dataListLoading = true;
|
||||||
this.urlOptions.getDataListURL(this.listQuery).then(response => {
|
this.urlOptions.getDataListURL(this.listQuery).then(response => {
|
||||||
this.tableData = response.data.list.map(item => {
|
this.tableData = response.data.list;
|
||||||
item.reportType = item.reportType === 1 ? '日' : item.reportType === 2 ? '周' : '月'
|
|
||||||
return item
|
|
||||||
});
|
|
||||||
this.total = response.data.total;
|
this.total = response.data.total;
|
||||||
this.dataListLoading = false;
|
this.dataListLoading = false;
|
||||||
});
|
});
|
||||||
@ -348,15 +279,17 @@ export default {
|
|||||||
this.getDataList();
|
this.getDataList();
|
||||||
},
|
},
|
||||||
handleExport() {
|
handleExport() {
|
||||||
if (this.selectedList.length === 0) {
|
// 处理查询参数
|
||||||
this.selectedList = this.tableData
|
let params = { ...this.queryParams };
|
||||||
}
|
params.pageNo = undefined;
|
||||||
this.dialogVisible = true
|
params.pageSize = undefined;
|
||||||
// this.$modal.confirm('是否确认导出所选数据项?').then(() => {
|
this.$modal.confirm('是否确认导出所有数据项?').then(() => {
|
||||||
// this.exportLoading = true;
|
this.exportLoading = true;
|
||||||
// // this.down()
|
return this.urlOptions.exportURL(params);
|
||||||
// this.pdf()
|
}).then(response => {
|
||||||
// }).catch(() => { });
|
this.$download.excel(response, '工厂.xls');
|
||||||
|
this.exportLoading = false;
|
||||||
|
}).catch(() => { });
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Author: Do not edit
|
* @Author: Do not edit
|
||||||
* @Date: 2023-08-29 14:59:29
|
* @Date: 2023-08-29 14:59:29
|
||||||
* @LastEditTime: 2023-09-14 10:51:20
|
* @LastEditTime: 2023-08-31 15:15:31
|
||||||
* @LastEditors: DY
|
* @LastEditors: DY
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
@ -37,36 +37,46 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getPdlDataSearch, getPdList } from '@/api/core/monitoring/data'
|
import {
|
||||||
|
getFactoryPage,
|
||||||
|
exportFactoryExcel,
|
||||||
|
} from '@/api/core/base/factory';
|
||||||
|
|
||||||
const tableProps = [
|
const tableProps = [
|
||||||
{
|
{
|
||||||
prop: 'proLineName',
|
prop: 'name',
|
||||||
label: '产线名称'
|
label: '产线名称',
|
||||||
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'inputNum',
|
prop: 'address',
|
||||||
label: '投入数量/片'
|
label: '投入数量/片',
|
||||||
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'outputNum',
|
prop: 'remark44',
|
||||||
label: '产出数量/片'
|
label: '产出数量/片',
|
||||||
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'outputArea',
|
prop: 'remark23',
|
||||||
label: '产出面积/㎡'
|
label: '产出面积/㎡',
|
||||||
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'lossNum',
|
prop: 'remark145',
|
||||||
label: '损耗数量/片'
|
label: '损耗数量/片',
|
||||||
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'lossArea',
|
prop: 'remark22',
|
||||||
label: '损耗面积/㎡'
|
label: '损耗面积/㎡',
|
||||||
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'lossRate',
|
prop: 'remark1',
|
||||||
label: '损耗比例%'
|
label: '损耗比例%',
|
||||||
|
align: 'center',
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -74,14 +84,20 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
urlOptions: {
|
urlOptions: {
|
||||||
getDataListURL: getPdlDataSearch
|
getDataListURL: getFactoryPage,
|
||||||
|
exportURL: exportFactoryExcel,
|
||||||
},
|
},
|
||||||
|
urlOptions: {
|
||||||
|
getDataListURL: '',
|
||||||
|
deleteURL: '',
|
||||||
|
statusUrl: '',
|
||||||
|
exportURL: ''
|
||||||
|
},
|
||||||
tableData: [],
|
tableData: [],
|
||||||
listQuery: {
|
listQuery: {
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
total: 1,
|
total: 1,
|
||||||
proLineId: undefined
|
|
||||||
},
|
},
|
||||||
exportLoading: false,
|
exportLoading: false,
|
||||||
dataListLoading: false,
|
dataListLoading: false,
|
||||||
@ -129,16 +145,8 @@ export default {
|
|||||||
],
|
],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {},
|
||||||
this.getDataList()
|
|
||||||
this.getPdLineList()
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
getPdLineList() {
|
|
||||||
getPdList().then((res) => {
|
|
||||||
this.formConfig[0].selectOptions = res.data || []
|
|
||||||
})
|
|
||||||
},
|
|
||||||
selectChange(val) {
|
selectChange(val) {
|
||||||
console.log(val)
|
console.log(val)
|
||||||
this.selectedList = val
|
this.selectedList = val
|
||||||
@ -148,9 +156,8 @@ export default {
|
|||||||
case 'search':
|
case 'search':
|
||||||
this.listQuery.pageNo = 1;
|
this.listQuery.pageNo = 1;
|
||||||
this.listQuery.pageSize = 10;
|
this.listQuery.pageSize = 10;
|
||||||
this.listQuery.proLineId = val.line ? val.line : undefined;
|
this.listQuery.name = val.name;
|
||||||
this.listQuery.startTime = val.timeVal ? new Date(val.timeVal[0]).getTime() : undefined;
|
this.listQuery.code = val.code;
|
||||||
this.listQuery.endTime = val.timeVal ? new Date(val.timeVal[1]).getTime() : undefined;
|
|
||||||
this.getDataList();
|
this.getDataList();
|
||||||
break;
|
break;
|
||||||
case 'export':
|
case 'export':
|
||||||
@ -164,7 +171,7 @@ export default {
|
|||||||
getDataList() {
|
getDataList() {
|
||||||
this.dataListLoading = true;
|
this.dataListLoading = true;
|
||||||
this.urlOptions.getDataListURL(this.listQuery).then(response => {
|
this.urlOptions.getDataListURL(this.listQuery).then(response => {
|
||||||
this.tableData = response.data;
|
this.tableData = response.data.list;
|
||||||
this.total = response.data.total;
|
this.total = response.data.total;
|
||||||
this.dataListLoading = false;
|
this.dataListLoading = false;
|
||||||
});
|
});
|
||||||
@ -182,16 +189,16 @@ export default {
|
|||||||
},
|
},
|
||||||
handleExport() {
|
handleExport() {
|
||||||
// 处理查询参数
|
// 处理查询参数
|
||||||
// let params = { ...this.queryParams };
|
let params = { ...this.queryParams };
|
||||||
// params.pageNo = undefined;
|
params.pageNo = undefined;
|
||||||
// params.pageSize = undefined;
|
params.pageSize = undefined;
|
||||||
// this.$modal.confirm('是否确认导出所有数据项?').then(() => {
|
this.$modal.confirm('是否确认导出所有数据项?').then(() => {
|
||||||
// this.exportLoading = true;
|
this.exportLoading = true;
|
||||||
// return this.urlOptions.exportURL(params);
|
return this.urlOptions.exportURL(params);
|
||||||
// }).then(response => {
|
}).then(response => {
|
||||||
// this.$download.excel(response, '工厂.xls');
|
this.$download.excel(response, '工厂.xls');
|
||||||
// this.exportLoading = false;
|
this.exportLoading = false;
|
||||||
// }).catch(() => { });
|
}).catch(() => { });
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -1,189 +0,0 @@
|
|||||||
<!--
|
|
||||||
filename: index.vue
|
|
||||||
author: liubin
|
|
||||||
date: 2023-08-04 14:44:58
|
|
||||||
description: 设备24小时生产记录
|
|
||||||
-->
|
|
||||||
<template>
|
|
||||||
<div class="app-container">
|
|
||||||
<SearchBar
|
|
||||||
:formConfigs="[{ label: '设备近24小时产线生产数据', type: 'title' }]"
|
|
||||||
ref="search-bar" />
|
|
||||||
<el-skeleton v-if="initing" :rows="6" animated />
|
|
||||||
<base-table
|
|
||||||
v-else
|
|
||||||
:span-method="mergeColumnHandler"
|
|
||||||
:table-props="tableProps"
|
|
||||||
:table-data="list"
|
|
||||||
@emitFun="handleEmitFun"></base-table>
|
|
||||||
<!-- :page="queryParams.pageNo"
|
|
||||||
:limit="queryParams.pageSize" -->
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { getPdlDataOneDay } from '@/api/core/monitoring/data24'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'productionLineData24',
|
|
||||||
components: {},
|
|
||||||
props: {},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
urlOptions: {
|
|
||||||
getDataListURL: getPdlDataOneDay
|
|
||||||
},
|
|
||||||
initing: false,
|
|
||||||
queryParams: {
|
|
||||||
pageNo: 1,
|
|
||||||
pageSize: 10,
|
|
||||||
},
|
|
||||||
list: [],
|
|
||||||
tableProps: [],
|
|
||||||
spanInfo: {},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
computed: {},
|
|
||||||
mounted() {
|
|
||||||
this.getList();
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
/** 构建tableProps - 依据第一个元素所提供的信息 */
|
|
||||||
buildProps(item) {
|
|
||||||
const {
|
|
||||||
data: [{ hourData }],
|
|
||||||
} = item;
|
|
||||||
|
|
||||||
const props = [
|
|
||||||
{ prop: 'productLine', label: '产线', align: 'center' },
|
|
||||||
{ prop: 'specification', label: '规格', align: 'center' },
|
|
||||||
{ prop: 'equipmentName', label: '设备', align: 'center' },
|
|
||||||
{ prop: 'totalQuantity', label: '生产总数', align: 'center' },
|
|
||||||
];
|
|
||||||
|
|
||||||
for (const key of Object.keys(hourData).sort()) {
|
|
||||||
const subprop = {
|
|
||||||
label: key,
|
|
||||||
align: 'center',
|
|
||||||
children: [
|
|
||||||
{ prop: key + '__in', label: '进数据', align: 'center' },
|
|
||||||
{ prop: key + '__out', label: '出数据', align: 'center' },
|
|
||||||
{ prop: key + '__nok', label: '报废数据', align: 'center' },
|
|
||||||
{
|
|
||||||
prop: key + '__ratio',
|
|
||||||
label: '报废率',
|
|
||||||
align: 'center',
|
|
||||||
filter: (val) => (val != null ? val + ' %' : '-'),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
props.push(subprop);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.tableProps = props;
|
|
||||||
console.log('打印tableProps', this.tableProps)
|
|
||||||
},
|
|
||||||
|
|
||||||
/** 把 list 里的数据转换成 tableProps 对应的格式 */
|
|
||||||
convertList(list) {
|
|
||||||
this.list.splice(0);
|
|
||||||
let rowIndex = 0;
|
|
||||||
for (const line of list) {
|
|
||||||
const { productLine, specification, data } = line;
|
|
||||||
|
|
||||||
// 设置span的行数
|
|
||||||
this.spanInfo[rowIndex] = data.length;
|
|
||||||
for (const equipment of data) {
|
|
||||||
const { equipmentName, totalQuantity } = equipment;
|
|
||||||
let row = {
|
|
||||||
productLine,
|
|
||||||
specification: specification.join('、'),
|
|
||||||
equipmentName,
|
|
||||||
totalQuantity,
|
|
||||||
};
|
|
||||||
rowIndex += 1;
|
|
||||||
for (const [key, hourData] of Object.entries(equipment.hourData)) {
|
|
||||||
const { inQuantity, outQuantity, nokQuantity, scrapRatio } =
|
|
||||||
hourData;
|
|
||||||
row[key + '__in'] = inQuantity;
|
|
||||||
row[key + '__out'] = outQuantity;
|
|
||||||
row[key + '__nok'] = nokQuantity;
|
|
||||||
row[key + '__ratio'] = scrapRatio;
|
|
||||||
}
|
|
||||||
this.list.push(row);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
buildData(data) {
|
|
||||||
this.convertList(data);
|
|
||||||
},
|
|
||||||
|
|
||||||
/** 合并table列的规则 */
|
|
||||||
mergeColumnHandler({ row, column, rowIndex, columnIndex }) {
|
|
||||||
if (columnIndex == 0 || columnIndex == 1) {
|
|
||||||
if (this.spanInfo[rowIndex]) {
|
|
||||||
return [
|
|
||||||
this.spanInfo[rowIndex], // row span
|
|
||||||
1, // col span
|
|
||||||
];
|
|
||||||
} else {
|
|
||||||
return [0, 0];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
async getList() {
|
|
||||||
this.urlOptions.getDataListURL().then(res => {
|
|
||||||
console.log('看看数据', res)
|
|
||||||
})
|
|
||||||
// const { data } = await this.$axios({
|
|
||||||
// url: '/monitoring/equipment-monitor/recent-24-hours',
|
|
||||||
// method: 'get',
|
|
||||||
// });
|
|
||||||
|
|
||||||
// // const data = this.res.data;
|
|
||||||
// // console.log('recent-24', data);
|
|
||||||
|
|
||||||
// this.initing = true;
|
|
||||||
// this.buildProps(data[0]);
|
|
||||||
// this.buildData(data);
|
|
||||||
// this.queryParams.pageSize = this.list.length;
|
|
||||||
|
|
||||||
// setTimeout(() => {
|
|
||||||
// this.initing = false;
|
|
||||||
// }, 1000);
|
|
||||||
},
|
|
||||||
|
|
||||||
handleEmitFun(payload) {
|
|
||||||
console.log('payload', payload);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
::-webkit-scrollbar {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre {
|
|
||||||
margin: 10px;
|
|
||||||
background: #f6f8faf6;
|
|
||||||
border: 1px solid #e1e4e8;
|
|
||||||
padding: 12px;
|
|
||||||
border-radius: 12px;
|
|
||||||
position: fixed;
|
|
||||||
// top: 15vh;
|
|
||||||
top: 10vh;
|
|
||||||
left: 0;
|
|
||||||
max-height: 80vh;
|
|
||||||
overflow-y: auto;
|
|
||||||
z-index: 100000;
|
|
||||||
box-shadow: 0 0 32px 12px #0001;
|
|
||||||
}
|
|
||||||
|
|
||||||
code {
|
|
||||||
font-family: 'IntelOne Mono', 'Ubuntu', 'Courier New', Courier, monospace;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,7 +1,7 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Author: Do not edit
|
* @Author: Do not edit
|
||||||
* @Date: 2023-08-29 14:59:29
|
* @Date: 2023-08-29 14:59:29
|
||||||
* @LastEditTime: 2023-09-15 13:51:55
|
* @LastEditTime: 2023-08-31 15:31:40
|
||||||
* @LastEditors: DY
|
* @LastEditors: DY
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
@ -9,7 +9,6 @@
|
|||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<search-bar
|
<search-bar
|
||||||
:formConfigs="formConfig"
|
:formConfigs="formConfig"
|
||||||
:isFold="true"
|
|
||||||
ref="searchBarForm"
|
ref="searchBarForm"
|
||||||
@headBtnClick="buttonClick" />
|
@headBtnClick="buttonClick" />
|
||||||
<base-table
|
<base-table
|
||||||
@ -39,54 +38,68 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { parseTime } from '../../mixins/code-filter';
|
import { parseTime } from '../../mixins/code-filter';
|
||||||
import { getWorkshopSectionList, getPdList, getSectionAutoReport } from '@/api/core/monitoring/sectionStatistics'
|
import {
|
||||||
|
getFactoryPage,
|
||||||
|
exportFactoryExcel,
|
||||||
|
} from '@/api/core/base/factory';
|
||||||
|
|
||||||
const tableProps = [
|
const tableProps = [
|
||||||
{
|
{
|
||||||
prop: 'reportType',
|
prop: 'code',
|
||||||
label: '产线类型'
|
label: '产线类型',
|
||||||
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'reportStartTime',
|
prop: 'createTime',
|
||||||
label: '统计开始时间',
|
label: '统计开始时间',
|
||||||
|
align: 'center',
|
||||||
filter: parseTime,
|
filter: parseTime,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'reportEndTime',
|
prop: 'createTime3',
|
||||||
label: '统计结束时间',
|
label: '统计结束时间',
|
||||||
|
align: 'center',
|
||||||
filter: parseTime,
|
filter: parseTime,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'lineName',
|
prop: 'name',
|
||||||
label: '产线名称'
|
label: '产线名称',
|
||||||
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'sectionName',
|
prop: 'name1',
|
||||||
label: '工段名称'
|
label: '工段名称',
|
||||||
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'inputNum',
|
prop: 'address',
|
||||||
label: '投入数量/片'
|
label: '投入数量/片',
|
||||||
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'outputNum',
|
prop: 'remark44',
|
||||||
label: '产出数量/片'
|
label: '产出数量/片',
|
||||||
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'outputArea',
|
prop: 'remark23',
|
||||||
label: '产出面积/㎡'
|
label: '产出面积/㎡',
|
||||||
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'lossNum',
|
prop: 'remark145',
|
||||||
label: '损耗数量/片'
|
label: '损耗数量/片',
|
||||||
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'lossArea',
|
prop: 'remark22',
|
||||||
label: '损耗面积/㎡'
|
label: '损耗面积/㎡',
|
||||||
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'lossRatio',
|
prop: 'remark1',
|
||||||
label: '损耗比例%'
|
label: '损耗比例%',
|
||||||
|
align: 'center',
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -94,8 +107,15 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
urlOptions: {
|
urlOptions: {
|
||||||
getDataListURL: getSectionAutoReport
|
getDataListURL: getFactoryPage,
|
||||||
|
exportURL: exportFactoryExcel,
|
||||||
},
|
},
|
||||||
|
urlOptions: {
|
||||||
|
getDataListURL: '',
|
||||||
|
deleteURL: '',
|
||||||
|
statusUrl: '',
|
||||||
|
exportURL: ''
|
||||||
|
},
|
||||||
tableData: [],
|
tableData: [],
|
||||||
listQuery: {
|
listQuery: {
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
@ -125,21 +145,8 @@ export default {
|
|||||||
{
|
{
|
||||||
type: 'select',
|
type: 'select',
|
||||||
label: '报表类型',
|
label: '报表类型',
|
||||||
selectOptions: [
|
selectOptions: [],
|
||||||
{
|
param: 'name',
|
||||||
id: 1,
|
|
||||||
name: '日'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 2,
|
|
||||||
name: '周'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 3,
|
|
||||||
name: '月'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
param: 'reportType',
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'datePicker',
|
type: 'datePicker',
|
||||||
@ -151,7 +158,8 @@ export default {
|
|||||||
startPlaceholder: '开始时间',
|
startPlaceholder: '开始时间',
|
||||||
endPlaceholder: '结束时间',
|
endPlaceholder: '结束时间',
|
||||||
param: 'timeVal',
|
param: 'timeVal',
|
||||||
defaultSelect: []
|
defaultSelect: [],
|
||||||
|
width: 350
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'button',
|
type: 'button',
|
||||||
@ -172,20 +180,8 @@ export default {
|
|||||||
],
|
],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {},
|
||||||
this.getDataList()
|
|
||||||
this.getPdLineList()
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
getPdLineList() {
|
|
||||||
getPdList().then((res) => {
|
|
||||||
this.formConfig[0].selectOptions = res.data || []
|
|
||||||
})
|
|
||||||
// 获取工段list
|
|
||||||
getWorkshopSectionList().then((res) => {
|
|
||||||
this.formConfig[1].selectOptions = res.data || []
|
|
||||||
})
|
|
||||||
},
|
|
||||||
selectChange(val) {
|
selectChange(val) {
|
||||||
console.log(val)
|
console.log(val)
|
||||||
this.selectedList = val
|
this.selectedList = val
|
||||||
@ -195,11 +191,8 @@ export default {
|
|||||||
case 'search':
|
case 'search':
|
||||||
this.listQuery.pageNo = 1;
|
this.listQuery.pageNo = 1;
|
||||||
this.listQuery.pageSize = 10;
|
this.listQuery.pageSize = 10;
|
||||||
this.listQuery.lineId = val.line ? val.line : undefined;
|
this.listQuery.name = val.name;
|
||||||
this.listQuery.sectionId = val.section ? val.section : undefined;
|
this.listQuery.code = val.code;
|
||||||
this.listQuery.reportType = val.reportType ? val.reportType : undefined;
|
|
||||||
this.listQuery.reportStartTime = [new Date(val.timeVal[0]).getTime()];
|
|
||||||
this.listQuery.reportEndTime = [new Date(val.timeVal[1]).getTime()];
|
|
||||||
this.getDataList();
|
this.getDataList();
|
||||||
break;
|
break;
|
||||||
case 'export':
|
case 'export':
|
||||||
@ -213,10 +206,7 @@ export default {
|
|||||||
getDataList() {
|
getDataList() {
|
||||||
this.dataListLoading = true;
|
this.dataListLoading = true;
|
||||||
this.urlOptions.getDataListURL(this.listQuery).then(response => {
|
this.urlOptions.getDataListURL(this.listQuery).then(response => {
|
||||||
this.tableData = response.data.list.map(item => {
|
this.tableData = response.data.list;
|
||||||
item.reportType = item.reportType === 1 ? '日' : item.reportType === 2 ? '周' : '月'
|
|
||||||
return item
|
|
||||||
});
|
|
||||||
this.total = response.data.total;
|
this.total = response.data.total;
|
||||||
this.dataListLoading = false;
|
this.dataListLoading = false;
|
||||||
});
|
});
|
||||||
|
@ -1,179 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="app-container">
|
|
||||||
<search-bar
|
|
||||||
:formConfigs="formConfig"
|
|
||||||
ref="searchBarForm"
|
|
||||||
@headBtnClick="buttonClick" />
|
|
||||||
<base-table
|
|
||||||
v-loading="dataListLoading"
|
|
||||||
:table-props="tableProps"
|
|
||||||
:table-data="tableData" />
|
|
||||||
<!-- <pagination
|
|
||||||
:limit.sync="listQuery.pageSize"
|
|
||||||
:page.sync="listQuery.pageNo"
|
|
||||||
:total="listQuery.total"
|
|
||||||
@pagination="getDataList" /> -->
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
// import basicPage from '../../mixins/basic-page';
|
|
||||||
import { parseTime } from '../../mixins/code-filter';
|
|
||||||
import { getSectionDataSearch } from '@/api/core/monitoring';
|
|
||||||
import { getProductionLinePage } from '@/api/core/base/productionLine';
|
|
||||||
import { getWorkshopSectionPage } from '@/api/core/base/workshopSection';
|
|
||||||
|
|
||||||
const tableProps = [
|
|
||||||
{
|
|
||||||
prop: 'proLineName',
|
|
||||||
label: '产线名称',
|
|
||||||
align: 'center',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
prop: 'sectionName',
|
|
||||||
label: '工段名称',
|
|
||||||
align: 'center',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
prop: 'inputNum',
|
|
||||||
label: '进片数量/片',
|
|
||||||
align: 'center',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
prop: 'outputNum',
|
|
||||||
label: '出片数量/片',
|
|
||||||
align: 'center',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
prop: 'lossNum',
|
|
||||||
label: '损耗数量/片',
|
|
||||||
align: 'center',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
prop: 'lossArea',
|
|
||||||
label: '损耗面积/m²',
|
|
||||||
align: 'center',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
prop: 'lossRate',
|
|
||||||
label: '损耗比例/%',
|
|
||||||
align: 'center',
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
export default {
|
|
||||||
// mixins: [basicPage],
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
urlOptions: {
|
|
||||||
getDataListURL: getSectionDataSearch,
|
|
||||||
},
|
|
||||||
tableProps,
|
|
||||||
tableData: [],
|
|
||||||
listQuery: {
|
|
||||||
proLineId:undefined,
|
|
||||||
sectionId: undefined,
|
|
||||||
startTime: undefined,
|
|
||||||
endTime: undefined,
|
|
||||||
},
|
|
||||||
optionArrUrl: [getProductionLinePage, getWorkshopSectionPage],
|
|
||||||
formConfig: [
|
|
||||||
{
|
|
||||||
type: 'select',
|
|
||||||
label: '产线',
|
|
||||||
selectOptions: [],
|
|
||||||
param: 'proLineId',
|
|
||||||
defaultSelect: '',
|
|
||||||
filterable: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'select',
|
|
||||||
label: '工段',
|
|
||||||
selectOptions: [],
|
|
||||||
param: 'sectionId',
|
|
||||||
defaultSelect: '',
|
|
||||||
filterable: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'datePicker',
|
|
||||||
label: '时间',
|
|
||||||
dateType: 'daterange',
|
|
||||||
format: 'yyyy-MM-dd',
|
|
||||||
valueFormat: 'yyyy-MM-dd HH:mm:ss',
|
|
||||||
rangeSeparator: '-',
|
|
||||||
startPlaceholder: '开始时间',
|
|
||||||
endPlaceholder: '结束时间',
|
|
||||||
param: 'timeSlot',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'button',
|
|
||||||
btnName: '搜索',
|
|
||||||
name: 'search',
|
|
||||||
color: 'primary',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'button',
|
|
||||||
btnName: '导出',
|
|
||||||
name: 'export',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.getArr();
|
|
||||||
this.getDataList()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
getArr() {
|
|
||||||
const params = {
|
|
||||||
page: 1,
|
|
||||||
limit: 500,
|
|
||||||
};
|
|
||||||
this.optionArrUrl.forEach((item, index) => {
|
|
||||||
item(params).then((response) => {
|
|
||||||
this.formConfig[index].selectOptions = response.data.list;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
getDataList() {
|
|
||||||
// this.listQuery.proLineId = '1672847052717821953';
|
|
||||||
// this.listQuery.startTime = '1690626657000'
|
|
||||||
// this.listQuery.endTime = '1693564257000'
|
|
||||||
this.urlOptions.getDataListURL(this.listQuery).then(res => {
|
|
||||||
this.tableData = res.data
|
|
||||||
// this.total = response.data.total;
|
|
||||||
this.dataListLoading = false;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
buttonClick(val) {
|
|
||||||
console.log(val)
|
|
||||||
switch (val.btnName) {
|
|
||||||
case 'search':
|
|
||||||
console.log(val.timeSlot);
|
|
||||||
|
|
||||||
// this.listQuery.pageNo = 1;
|
|
||||||
// this.listQuery.pageSize = 10;
|
|
||||||
this.listQuery.proLineId = val.proLineId ? val.proLineId : undefined
|
|
||||||
this.listQuery.sectionId = val.sectionId ? val.sectionId : undefined
|
|
||||||
this.listQuery.startTime = val.timeSlot ? new Date(val.timeSlot[0]).getTime() : undefined
|
|
||||||
this.listQuery.endTime = val.timeSlot ? new Date(val.timeSlot[1]).getTime() : undefined
|
|
||||||
this.getDataList();
|
|
||||||
break;
|
|
||||||
case 'reset':
|
|
||||||
this.$refs.searchBarForm.resetForm();
|
|
||||||
this.listQuery = {
|
|
||||||
pageSize: 10,
|
|
||||||
pageNo: 1,
|
|
||||||
total: 1,
|
|
||||||
};
|
|
||||||
this.getDataList();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
console.log(val);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
|
@ -12,7 +12,31 @@
|
|||||||
ref="search-bar"
|
ref="search-bar"
|
||||||
@headBtnClick="handleSearchBarBtnClick" />
|
@headBtnClick="handleSearchBarBtnClick" />
|
||||||
|
|
||||||
<div v-if="tableList.length" class="tables">
|
<!-- <base-table
|
||||||
|
:table-props="[
|
||||||
|
{ type: 'index', label: '序号' },
|
||||||
|
{ prop: 'name', label: '设备名称', align: 'center' },
|
||||||
|
{ prop: 'code', label: '设备代码', align: 'center' },
|
||||||
|
{ prop: 'time', label: '时间', align: 'center' },
|
||||||
|
]"
|
||||||
|
:table-data="[
|
||||||
|
{ index: 1, name: '1', code: 'c1', time: '2021-08-31 09:14:19' },
|
||||||
|
{ index: 2, name: '2', code: 'c2', time: '2021-08-31 09:14:19' },
|
||||||
|
{ index: 3, name: '3', code: 'c3', time: '2021-08-31 09:14:19' },
|
||||||
|
{ index: 4, name: '4', code: 'c4', time: '2021-08-31 09:14:19' },
|
||||||
|
{ index: 5, name: '5', code: 'c5', time: '2021-08-31 09:14:19' },
|
||||||
|
]"
|
||||||
|
:span-method="
|
||||||
|
({ rowIndex, columnIndex }) => {
|
||||||
|
if (rowIndex == 1 && columnIndex == 0) {
|
||||||
|
return [1, 3];
|
||||||
|
}
|
||||||
|
return [1, 1];
|
||||||
|
}
|
||||||
|
"
|
||||||
|
@emitFun="(val) => handleEmitFun(table, val)"></base-table> -->
|
||||||
|
|
||||||
|
<div class="tables">
|
||||||
<div class="custom-table" v-for="table in tableList" :key="table.key">
|
<div class="custom-table" v-for="table in tableList" :key="table.key">
|
||||||
<!-- {{ JSON.stringify(spanMethod) }} -->
|
<!-- {{ JSON.stringify(spanMethod) }} -->
|
||||||
<base-table
|
<base-table
|
||||||
@ -34,14 +58,16 @@
|
|||||||
getListFor(table, { page, limit, current })
|
getListFor(table, { page, limit, current })
|
||||||
" />
|
" />
|
||||||
</div>
|
</div>
|
||||||
|
<!-- v-show="table.dataManager?.total > 0"
|
||||||
|
:total="table.dataManager?.total || 0" -->
|
||||||
|
<!-- @size-change="($event) => handleSizeChange(table, $event)" -->
|
||||||
</div>
|
</div>
|
||||||
<div v-else style="margin-top: 20px; color: #c7c7c7; text-align: center;">暂无数据</div>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import LocalDataManager from './utils/local-data-manager';
|
import LocalDataManager from './utils/local-data-manager';
|
||||||
// import response from './response';
|
import response from './response';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@ -97,14 +123,14 @@ export default {
|
|||||||
time: [new Date(aWeekAgo), new Date(today)],
|
time: [new Date(aWeekAgo), new Date(today)],
|
||||||
},
|
},
|
||||||
tableList: [
|
tableList: [
|
||||||
// {
|
{
|
||||||
// key: 'base-table__key__1',
|
key: 'base-table__key__1',
|
||||||
// tableProps: [],
|
tableProps: [],
|
||||||
// list: [],
|
list: [],
|
||||||
// pageNo: 1,
|
pageNo: 1,
|
||||||
// pageSize: 3,
|
pageSize: 3,
|
||||||
// total: 0,
|
total: 0,
|
||||||
// },
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@ -126,7 +152,7 @@ export default {
|
|||||||
if (this.name)
|
if (this.name)
|
||||||
this.$set(this.searchBarFormConfig[1], 'defaultSelect', this.name);
|
this.$set(this.searchBarFormConfig[1], 'defaultSelect', this.name);
|
||||||
|
|
||||||
// this.handleResponse();
|
this.handleResponse();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
buildProps(table) {
|
buildProps(table) {
|
||||||
@ -173,9 +199,11 @@ export default {
|
|||||||
return { props, firstLineData };
|
return { props, firstLineData };
|
||||||
},
|
},
|
||||||
|
|
||||||
handleResponse(response) {
|
handleResponse() {
|
||||||
const { code, data } = response;
|
const { code, data } = response;
|
||||||
if (code == 0) {
|
if (code == 0) {
|
||||||
|
console.log('response', code, data);
|
||||||
|
|
||||||
// 处理一个表格
|
// 处理一个表格
|
||||||
data.forEach((table, index) => {
|
data.forEach((table, index) => {
|
||||||
console.log('handle index:', index, table);
|
console.log('handle index:', index, table);
|
||||||
@ -192,28 +220,26 @@ export default {
|
|||||||
|
|
||||||
// 处理某一表格的各个行
|
// 处理某一表格的各个行
|
||||||
const { data } = table;
|
const { data } = table;
|
||||||
if (data) {
|
data.forEach((row, idx) => {
|
||||||
data.forEach((row, idx) => {
|
const listItem = {
|
||||||
const listItem = {
|
index: idx + 1,
|
||||||
index: idx + 1,
|
time: moment(+row.time).format('YYYY-MM-DD HH:mm:ss'),
|
||||||
time: moment(+row.time).format('YYYY-MM-DD HH:mm:ss'),
|
plcCode: row.plcCode,
|
||||||
plcCode: row.plcCode,
|
};
|
||||||
};
|
row.data.forEach((column) => {
|
||||||
row.data.forEach((column) => {
|
listItem[column.dynamicName] = column.dynamicValue;
|
||||||
listItem[column.dynamicName] = column.dynamicValue;
|
|
||||||
});
|
|
||||||
this.tableList[index].list.push(listItem);
|
|
||||||
this.tableList[index].total++;
|
|
||||||
});
|
});
|
||||||
|
this.tableList[index].list.push(listItem);
|
||||||
|
this.tableList[index].total++;
|
||||||
|
});
|
||||||
|
|
||||||
// 处理分页
|
// 处理分页
|
||||||
const { pageNo, pageSize, list } = this.tableList[index];
|
const { pageNo, pageSize, list } = this.tableList[index];
|
||||||
this.tableList[index].dataManager = new LocalDataManager(
|
this.tableList[index].dataManager = new LocalDataManager(
|
||||||
list,
|
list,
|
||||||
pageNo,
|
pageNo,
|
||||||
pageSize
|
pageSize
|
||||||
);
|
);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -229,13 +255,12 @@ export default {
|
|||||||
|
|
||||||
/** 查询 */
|
/** 查询 */
|
||||||
async handleQuery() {
|
async handleQuery() {
|
||||||
this.handleResponse(
|
const { data } = this.$axios({
|
||||||
await this.$axios({
|
url: '/monitoring/equipment-monitor/runLog',
|
||||||
url: '/monitoring/equipment-monitor/runLog',
|
method: 'get',
|
||||||
method: 'get',
|
params: this.queryParams,
|
||||||
params: this.queryParams,
|
});
|
||||||
})
|
console.log('data', data);
|
||||||
);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
async handleSearchBarBtnClick({ btnName, timeVal }) {
|
async handleSearchBarBtnClick({ btnName, timeVal }) {
|
||||||
|
58
yarn.lock
58
yarn.lock
@ -1859,11 +1859,6 @@ address@^1.1.2:
|
|||||||
resolved "https://registry.npmmirror.com/address/-/address-1.2.1.tgz"
|
resolved "https://registry.npmmirror.com/address/-/address-1.2.1.tgz"
|
||||||
integrity sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==
|
integrity sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==
|
||||||
|
|
||||||
adler-32@~1.3.0:
|
|
||||||
version "1.3.1"
|
|
||||||
resolved "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz#1dbf0b36dda0012189a32b3679061932df1821e2"
|
|
||||||
integrity sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==
|
|
||||||
|
|
||||||
aes-decrypter@1.0.3:
|
aes-decrypter@1.0.3:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.npmmirror.com/aes-decrypter/-/aes-decrypter-1.0.3.tgz"
|
resolved "https://registry.npmmirror.com/aes-decrypter/-/aes-decrypter-1.0.3.tgz"
|
||||||
@ -2744,14 +2739,6 @@ caseless@~0.12.0:
|
|||||||
resolved "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz"
|
resolved "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz"
|
||||||
integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==
|
integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==
|
||||||
|
|
||||||
cfb@~1.2.1:
|
|
||||||
version "1.2.2"
|
|
||||||
resolved "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz#94e687628c700e5155436dac05f74e08df23bc44"
|
|
||||||
integrity sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==
|
|
||||||
dependencies:
|
|
||||||
adler-32 "~1.3.0"
|
|
||||||
crc-32 "~1.2.0"
|
|
||||||
|
|
||||||
chalk@2.3.0:
|
chalk@2.3.0:
|
||||||
version "2.3.0"
|
version "2.3.0"
|
||||||
resolved "https://registry.npmmirror.com/chalk/-/chalk-2.3.0.tgz"
|
resolved "https://registry.npmmirror.com/chalk/-/chalk-2.3.0.tgz"
|
||||||
@ -3012,11 +2999,6 @@ code-brick-zj@^1.0.2:
|
|||||||
resolved "https://registry.npmmirror.com/code-brick-zj/-/code-brick-zj-1.0.2.tgz#f9f5fa97faa65262e887a3a15014827ac95b1fea"
|
resolved "https://registry.npmmirror.com/code-brick-zj/-/code-brick-zj-1.0.2.tgz#f9f5fa97faa65262e887a3a15014827ac95b1fea"
|
||||||
integrity sha512-V8XwYqXjIPMfPCaZMja4I2MJPT45EEnzRmTL1Ps6aMsmUQ/PhZ48OwUvddBFNqNZeVV13aPm1b5K1c3ogfad8Q==
|
integrity sha512-V8XwYqXjIPMfPCaZMja4I2MJPT45EEnzRmTL1Ps6aMsmUQ/PhZ48OwUvddBFNqNZeVV13aPm1b5K1c3ogfad8Q==
|
||||||
|
|
||||||
codepage@~1.15.0:
|
|
||||||
version "1.15.0"
|
|
||||||
resolved "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz#2e00519024b39424ec66eeb3ec07227e692618ab"
|
|
||||||
integrity sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==
|
|
||||||
|
|
||||||
collection-visit@^1.0.0:
|
collection-visit@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz"
|
resolved "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz"
|
||||||
@ -3342,11 +3324,6 @@ cosmiconfig@^5.0.0:
|
|||||||
js-yaml "^3.13.1"
|
js-yaml "^3.13.1"
|
||||||
parse-json "^4.0.0"
|
parse-json "^4.0.0"
|
||||||
|
|
||||||
crc-32@~1.2.0, crc-32@~1.2.1:
|
|
||||||
version "1.2.2"
|
|
||||||
resolved "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff"
|
|
||||||
integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==
|
|
||||||
|
|
||||||
create-ecdh@^4.0.0:
|
create-ecdh@^4.0.0:
|
||||||
version "4.0.4"
|
version "4.0.4"
|
||||||
resolved "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz"
|
resolved "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz"
|
||||||
@ -4872,11 +4849,6 @@ forwarded@0.2.0:
|
|||||||
resolved "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz"
|
resolved "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz"
|
||||||
integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
|
integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
|
||||||
|
|
||||||
frac@~1.1.2:
|
|
||||||
version "1.1.2"
|
|
||||||
resolved "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz#3d74f7f6478c88a1b5020306d747dc6313c74d0b"
|
|
||||||
integrity sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==
|
|
||||||
|
|
||||||
fragment-cache@^0.2.1:
|
fragment-cache@^0.2.1:
|
||||||
version "0.2.1"
|
version "0.2.1"
|
||||||
resolved "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz"
|
resolved "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz"
|
||||||
@ -9159,13 +9131,6 @@ sprintf-js@~1.0.2:
|
|||||||
resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz"
|
resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz"
|
||||||
integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
|
integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
|
||||||
|
|
||||||
ssf@~0.11.2:
|
|
||||||
version "0.11.2"
|
|
||||||
resolved "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz#0b99698b237548d088fc43cdf2b70c1a7512c06c"
|
|
||||||
integrity sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==
|
|
||||||
dependencies:
|
|
||||||
frac "~1.1.2"
|
|
||||||
|
|
||||||
sshpk@^1.7.0:
|
sshpk@^1.7.0:
|
||||||
version "1.17.0"
|
version "1.17.0"
|
||||||
resolved "https://registry.npmmirror.com/sshpk/-/sshpk-1.17.0.tgz"
|
resolved "https://registry.npmmirror.com/sshpk/-/sshpk-1.17.0.tgz"
|
||||||
@ -10496,21 +10461,11 @@ which@^2.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
isexe "^2.0.0"
|
isexe "^2.0.0"
|
||||||
|
|
||||||
wmf@~1.0.1:
|
|
||||||
version "1.0.2"
|
|
||||||
resolved "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz#7d19d621071a08c2bdc6b7e688a9c435298cc2da"
|
|
||||||
integrity sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==
|
|
||||||
|
|
||||||
word-wrap@^1.2.3:
|
word-wrap@^1.2.3:
|
||||||
version "1.2.3"
|
version "1.2.3"
|
||||||
resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz"
|
resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz"
|
||||||
integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
|
integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
|
||||||
|
|
||||||
word@~0.3.0:
|
|
||||||
version "0.3.0"
|
|
||||||
resolved "https://registry.npmmirror.com/word/-/word-0.3.0.tgz#8542157e4f8e849f4a363a288992d47612db9961"
|
|
||||||
integrity sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==
|
|
||||||
|
|
||||||
worker-farm@^1.7.0:
|
worker-farm@^1.7.0:
|
||||||
version "1.7.0"
|
version "1.7.0"
|
||||||
resolved "https://registry.npmmirror.com/worker-farm/-/worker-farm-1.7.0.tgz"
|
resolved "https://registry.npmmirror.com/worker-farm/-/worker-farm-1.7.0.tgz"
|
||||||
@ -10567,19 +10522,6 @@ xhr@2.4.0:
|
|||||||
parse-headers "^2.0.0"
|
parse-headers "^2.0.0"
|
||||||
xtend "^4.0.0"
|
xtend "^4.0.0"
|
||||||
|
|
||||||
xlsx@^0.18.5:
|
|
||||||
version "0.18.5"
|
|
||||||
resolved "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz#16711b9113c848076b8a177022799ad356eba7d0"
|
|
||||||
integrity sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==
|
|
||||||
dependencies:
|
|
||||||
adler-32 "~1.3.0"
|
|
||||||
cfb "~1.2.1"
|
|
||||||
codepage "~1.15.0"
|
|
||||||
crc-32 "~1.2.1"
|
|
||||||
ssf "~0.11.2"
|
|
||||||
wmf "~1.0.1"
|
|
||||||
word "~0.3.0"
|
|
||||||
|
|
||||||
xml-js@1.6.11:
|
xml-js@1.6.11:
|
||||||
version "1.6.11"
|
version "1.6.11"
|
||||||
resolved "https://registry.npmmirror.com/xml-js/-/xml-js-1.6.11.tgz"
|
resolved "https://registry.npmmirror.com/xml-js/-/xml-js-1.6.11.tgz"
|
||||||
|
Loading…
Reference in New Issue
Block a user