projects/mesxc-zhp #161
9
.env.dev
@ -1,8 +1,8 @@
|
|||||||
###
|
###
|
||||||
# @Author: Do not edit
|
# @Author: Do not edit
|
||||||
# @Date: 2023-08-29 09:40:39
|
# @Date: 2023-08-29 09:40:39
|
||||||
# @LastEditTime: 2023-11-21 10:36:47
|
# @LastEditTime: 2023-12-29 08:57:36
|
||||||
# @LastEditors: DY
|
# @LastEditors: zhp
|
||||||
# @Description:
|
# @Description:
|
||||||
###
|
###
|
||||||
# 开发环境配置
|
# 开发环境配置
|
||||||
@ -19,8 +19,9 @@ VUE_APP_BASE_API = 'http://192.168.0.33:48082'
|
|||||||
# VUE_APP_BASE_API = 'http://192.168.1.49:48082'
|
# VUE_APP_BASE_API = 'http://192.168.1.49:48082'
|
||||||
# VUE_APP_BASE_API = 'http://192.168.1.8:48082'
|
# VUE_APP_BASE_API = 'http://192.168.1.8:48082'
|
||||||
# VUE_APP_BASE_API = 'http://192.168.4.159:48080'
|
# VUE_APP_BASE_API = 'http://192.168.4.159:48080'
|
||||||
# VUE_APP_BASE_API = 'http://192.168.1.56:48082'
|
# VUE_APP_BASE_API = 'http://192.168.1.104:48082'
|
||||||
# VUE_APP_BASE_API = 'http://192.168.4.159:48080'
|
# VUE_APP_BASE_API = 'http://192.168.1.62:48082'
|
||||||
|
# VUE_APP_BASE_API = 'http://192.168.1.78:48082'
|
||||||
|
|
||||||
# 积木报表指向地址
|
# 积木报表指向地址
|
||||||
VUE_APP_JIMU_API = 'http://192.168.0.33:48082'
|
VUE_APP_JIMU_API = 'http://192.168.0.33:48082'
|
||||||
|
@ -15,15 +15,14 @@ VUE_APP_TITLE = MES系统
|
|||||||
VUE_APP_BASE_API = '/prod-api'
|
VUE_APP_BASE_API = '/prod-api'
|
||||||
|
|
||||||
# 积木报表指向地址
|
# 积木报表指向地址
|
||||||
VUE_APP_JIMU_API = 'http://192.168.0.33:48082'
|
VUE_APP_JIMU_API = 'http://10.70.2.22:8080'
|
||||||
|
|
||||||
|
|
||||||
# 根据服务器或域名修改
|
# 根据服务器或域名修改
|
||||||
# PUBLIC_PATH = 'http://my-pi.com:8888/yudao-admin/'
|
PUBLIC_PATH = 'http://10.70.2.32'
|
||||||
PUBLIC_PATH = 'http://192.168.0.33:8889/'
|
|
||||||
|
|
||||||
# 二级部署路径
|
# 二级部署路径
|
||||||
VUE_APP_APP_NAME ='yudao-admin'
|
# VUE_APP_APP_NAME ='yudao-admin'
|
||||||
|
|
||||||
# 多租户的开关
|
# 多租户的开关
|
||||||
VUE_APP_TENANT_ENABLE = true
|
VUE_APP_TENANT_ENABLE = true
|
||||||
|
22
.env.stage
@ -1,16 +1,21 @@
|
|||||||
NODE_ENV = production
|
# 生产环境配置
|
||||||
|
ENV = 'production'
|
||||||
|
|
||||||
# 页面标题
|
# 页面标题
|
||||||
VUE_APP_TITLE = 产线监控系统
|
VUE_APP_TITLE = MES系统
|
||||||
|
|
||||||
# 测试环境配置
|
# 芋道管理系统/生产环境
|
||||||
ENV = 'staging'
|
VUE_APP_BASE_API = '/prod-api'
|
||||||
|
|
||||||
# 芋道管理系统/测试环境
|
# 积木报表指向地址
|
||||||
VUE_APP_BASE_API = 'http://api-dashboard.yudao.iocoder.cn'
|
VUE_APP_JIMU_API = 'http://192.168.0.33:48082'
|
||||||
|
|
||||||
# 静态资源地址
|
|
||||||
PUBLIC_PATH = 'http://static.yudao.iocoder.cn/'
|
# 根据服务器或域名修改
|
||||||
|
PUBLIC_PATH = 'http://192.168.0.33:8889/'
|
||||||
|
|
||||||
|
# 二级部署路径
|
||||||
|
# VUE_APP_APP_NAME ='yudao-admin'
|
||||||
|
|
||||||
# 多租户的开关
|
# 多租户的开关
|
||||||
VUE_APP_TENANT_ENABLE = true
|
VUE_APP_TENANT_ENABLE = true
|
||||||
@ -20,4 +25,3 @@ VUE_APP_DOC_ENABLE = false
|
|||||||
|
|
||||||
# 百度统计
|
# 百度统计
|
||||||
VUE_APP_BAIDU_CODE = fadc1bd5db1a1d6f581df60a1807f8ab
|
VUE_APP_BAIDU_CODE = fadc1bd5db1a1d6f581df60a1807f8ab
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* @Author: Do not edit
|
* @Author: Do not edit
|
||||||
* @Date: 2023-10-21 11:50:46
|
* @Date: 2023-10-21 11:50:46
|
||||||
* @LastEditTime: 2023-11-15 15:56:14
|
* @LastEditTime: 2023-12-14 10:57:24
|
||||||
* @LastEditors: DY
|
* @LastEditors: DY
|
||||||
* @Description:
|
* @Description:
|
||||||
*/
|
*/
|
||||||
@ -66,3 +66,30 @@ export function getHotMaterialList(query) {
|
|||||||
params: query
|
params: query
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 创建原料质量检测条目
|
||||||
|
export function createHotMaterialCheck(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-hot-material-check/create',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新原料质量检测条目
|
||||||
|
export function updateHotMaterialCheck(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-hot-material-check/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得质量检测条目列表
|
||||||
|
export function getHotCheckList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-hot-material-check/listByMaterial',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
56
src/api/base/energyQuantityManual.js
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 获得分页数据
|
||||||
|
export function energyQuantityManualPage(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/energy-quantity-manual/page',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建
|
||||||
|
export function energyQuantityManualCreate(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/energy-quantity-manual/create',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新
|
||||||
|
export function energyQuantityManualUpdate(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/energy-quantity-manual/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//获得能源抄表(手动)
|
||||||
|
export function energyQuantityManualGet(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/energy-quantity-manual/get',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//删除
|
||||||
|
export function energyQuantityManualDelete(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/energy-quantity-manual/delete',
|
||||||
|
method: 'delete',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//导出
|
||||||
|
export function energyQuantityManualExport(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/energy-quantity-manual/export-excel',
|
||||||
|
method: 'post',
|
||||||
|
data: data,
|
||||||
|
responseType: 'blob'
|
||||||
|
})
|
||||||
|
}
|
125
src/api/base/qualityHotMaterial.js
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
* @Author: zhp
|
||||||
|
* @Date: 2023-11-06 15:38:12
|
||||||
|
* @LastEditTime: 2023-12-15 15:29:16
|
||||||
|
* @LastEditors: zhp
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 创建质量检测类型基础
|
||||||
|
export function createQualityHotMaterial(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/quality-hot-material/create',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新质量检测类型基础
|
||||||
|
export function updateQualityHotMaterial(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/quality-hot-material/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除质量检测类型基础
|
||||||
|
export function deleteQualityHotMaterial(id) {
|
||||||
|
return request({
|
||||||
|
url: '/base/quality-hot-material/delete?id=' + id,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得质量检测类型基础
|
||||||
|
export function getQualityHotMaterial(id) {
|
||||||
|
return request({
|
||||||
|
url: '/base/quality-hot-material/get?id=' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得质量检测类型基础分页
|
||||||
|
export function getQualityHotMaterialPage(query) {
|
||||||
|
return request({
|
||||||
|
url: 'base/quality-hot-material/page',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出质量检测类型基础 Excel
|
||||||
|
// export function exportQualityScrapTypeExcel(query) {
|
||||||
|
// return request({
|
||||||
|
// url: '/base/quality-scrap-type/export-excel',
|
||||||
|
// method: 'get',
|
||||||
|
// params: query,
|
||||||
|
// responseType: 'blob'
|
||||||
|
// })
|
||||||
|
// }
|
||||||
|
|
||||||
|
export function getCode(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/quality-hot-material/getCode',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export function getHotMaterialAllList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-hot-material/listAll',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getSupplierList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-supplier/listAll',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getWorkerList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-worker/listAll',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getMaterialCheckList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-hot-material-check/listByMaterial',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function createQualityHotMaterialDet(query){
|
||||||
|
return request({
|
||||||
|
url: '/base/quality-hot-material-det/create',
|
||||||
|
method: 'post',
|
||||||
|
data: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function updateQualityHotMaterialDet(query){
|
||||||
|
return request({
|
||||||
|
url: '/base/quality-hot-material-det/listbyfilter',
|
||||||
|
method: 'put',
|
||||||
|
data: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getQualityHotMaterialDetList(query){
|
||||||
|
return request({
|
||||||
|
url: '/base/quality-hot-material-det/listbyfilter',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
@ -1,10 +1,17 @@
|
|||||||
|
/*
|
||||||
|
* @Author: zhp
|
||||||
|
* @Date: 2023-12-04 14:10:37
|
||||||
|
* @LastEditTime: 2023-12-14 10:06:03
|
||||||
|
* @LastEditors: zhp
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
import request from '@/utils/request'
|
import request from '@/utils/request'
|
||||||
|
|
||||||
// 创建安灯按钮16键对应
|
// 创建安灯按钮16键对应
|
||||||
export function createQualityInspectionBoxBtn(data) {
|
export function createQualityInspectionBoxBtn(data) {
|
||||||
return request({
|
return request({
|
||||||
url: '/base/quality-inspection-box-btn/create',
|
url: '/base/quality-inspection-box-btn/updateBatch',
|
||||||
method: 'post',
|
method: 'put',
|
||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -12,7 +19,7 @@ export function createQualityInspectionBoxBtn(data) {
|
|||||||
// 更新安灯按钮16键对应
|
// 更新安灯按钮16键对应
|
||||||
export function updateQualityInspectionBoxBtn(data) {
|
export function updateQualityInspectionBoxBtn(data) {
|
||||||
return request({
|
return request({
|
||||||
url: '/base/quality-inspection-box-btn/update',
|
url: '/base/quality-inspection-box-btn/updateBatch',
|
||||||
method: 'put',
|
method: 'put',
|
||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
@ -37,7 +44,7 @@ export function getQualityInspectionBoxBtn(id) {
|
|||||||
// 获得安灯按钮16键对应分页
|
// 获得安灯按钮16键对应分页
|
||||||
export function getQualityInspectionBoxBtnPage(query) {
|
export function getQualityInspectionBoxBtnPage(query) {
|
||||||
return request({
|
return request({
|
||||||
url: '/base/quality-inspection-box-btn/page',
|
url: '/base/quality-inspection-box-btn/listGroupByLineSection',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: query
|
params: query
|
||||||
})
|
})
|
||||||
@ -52,3 +59,19 @@ export function exportQualityInspectionBoxBtnExcel(query) {
|
|||||||
responseType: 'blob'
|
responseType: 'blob'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getAllDetByTypeList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/quality-scrap-det/scrapMap',
|
||||||
|
method: 'get',
|
||||||
|
params: query,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export function getListByLineSection(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/quality-inspection-box-btn/detListByLineSection',
|
||||||
|
method: 'get',
|
||||||
|
params: query,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* @Author: zhp
|
* @Author: zhp
|
||||||
* @Date: 2023-11-06 15:38:12
|
* @Date: 2023-11-06 15:38:12
|
||||||
* @LastEditTime: 2023-11-06 15:39:39
|
* @LastEditTime: 2023-12-08 09:46:55
|
||||||
* @LastEditors: zhp
|
* @LastEditors: zhp
|
||||||
* @Description:
|
* @Description:
|
||||||
*/
|
*/
|
||||||
@ -67,3 +67,4 @@ export function getCode(query) {
|
|||||||
params: query
|
params: query
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
78
src/api/cost/costEneryAutoReport.js
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
/*
|
||||||
|
* @Author: zwq
|
||||||
|
* @Date: 2023-11-23 14:57:00
|
||||||
|
* @LastEditors: zwq
|
||||||
|
* @LastEditTime: 2023-12-07 09:37:18
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 创建能源自动记录报
|
||||||
|
export function createCostEneryAutoReport(data) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-enery-auto-report/create',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新能源自动记录报
|
||||||
|
export function updateCostEneryAutoReport(data) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-enery-auto-report/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除能源自动记录报
|
||||||
|
export function deleteCostEneryAutoReport(id) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-enery-auto-report/delete?id=' + id,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得能源自动记录报
|
||||||
|
export function getCostEneryAutoReport(id) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-enery-auto-report/get?id=' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得能源自动记录报分页历史
|
||||||
|
export function getCostEneryAutoReportPage(data) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-enery-auto-report/page',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 获得能源查询
|
||||||
|
export function getCostEneryAutoPage(data) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-energy-search/getData',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 导出能源自动记录报 Excel
|
||||||
|
export function exportCostEneryAutoReportExcel(data) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-enery-auto-report/export-excel',
|
||||||
|
method: 'post',
|
||||||
|
data: data,
|
||||||
|
responseType: 'blob'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出能源自动记录报 Excel 查询
|
||||||
|
export function exportCostEneryExcel(data) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-energy-search/export-excel',
|
||||||
|
method: 'post',
|
||||||
|
data: data,
|
||||||
|
responseType: 'blob'
|
||||||
|
})
|
||||||
|
}
|
73
src/api/cost/costMaterialAutoReport.js
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 创建原料成本自动统计报
|
||||||
|
export function createCostMaterialAutoReport(data) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-material-auto-report/create',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新原料成本自动统计报
|
||||||
|
export function updateCostMaterialAutoReport(data) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-material-auto-report/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除原料成本自动统计报
|
||||||
|
export function deleteCostMaterialAutoReport(id) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-material-auto-report/delete?id=' + id,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得原料成本自动统计报
|
||||||
|
export function getCostMaterialAutoReport(id) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-material-auto-report/get?id=' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得原料成本自动统计报分页历史
|
||||||
|
export function getCostMaterialAutoReportPage(data) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-material-auto-report/page',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得原料成本查询
|
||||||
|
export function getCostMaterialSearchPage(data) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-material-search/getData',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出原料成本自动统计报 Excel
|
||||||
|
export function exportCostMaterialAutoReportExcel(data) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-material-auto-report/export-excel',
|
||||||
|
method: 'post',
|
||||||
|
data: data,
|
||||||
|
responseType: 'blob'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出原料成本自动统计报 Excel查询
|
||||||
|
export function exportCostMaterialSearch(data) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-material-search/export-excel',
|
||||||
|
method: 'post',
|
||||||
|
data: data,
|
||||||
|
responseType: 'blob'
|
||||||
|
})
|
||||||
|
}
|
61
src/api/cost/costMaterialSet.js
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* @Author: zwq
|
||||||
|
* @Date: 2023-11-15 09:24:30
|
||||||
|
* @LastEditors: zwq
|
||||||
|
* @LastEditTime: 2023-12-05 14:38:48
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 创建原料价位配置
|
||||||
|
export function createCostMaterialSet(data) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-material-set/create',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新原料价位配置
|
||||||
|
export function updateCostMaterialSet(data) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-material-set/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除原料价位配置
|
||||||
|
export function deleteCostMaterialSet(id) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-material-set/delete?id=' + id,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得原料价位配置
|
||||||
|
export function getCostMaterialSet(id) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-material-set/get?id=' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得原料价位配置分页
|
||||||
|
export function getCostMaterialSetPage(data) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-material-set/page',
|
||||||
|
method: 'POST',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出原料价位配置 Excel
|
||||||
|
export function exportCostMaterialSetExcel(query) {
|
||||||
|
return request({
|
||||||
|
url: '/extend/cost-material-set/export-excel',
|
||||||
|
method: 'get',
|
||||||
|
params: query,
|
||||||
|
responseType: 'blob'
|
||||||
|
})
|
||||||
|
}
|
63
src/api/monitoring/qualityIsra.js
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
/*
|
||||||
|
* @Author: zhp
|
||||||
|
* @Date: 2023-12-08 15:26:59
|
||||||
|
* @LastEditTime: 2023-12-11 15:21:44
|
||||||
|
* @LastEditors: zhp
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
import request from '@/utils/request'
|
||||||
|
export function getQualityIsraPage(query) {
|
||||||
|
return request({
|
||||||
|
url: 'base/quality-isra-statistics/getIsraData',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getQualityIsraDayMap(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/quality-isra-statistics/dayMap',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getQualityIsraWeekMap(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/quality-isra-statistics/weekMap',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getQualityIsraMonthMap(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/quality-isra-statistics/monthMap',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getQualityIsraDayList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/quality-isra-statistics/dayList',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getQualityIsraWeekList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/quality-isra-statistics/weekList',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getQualityIsraMonthList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/quality-isra-statistics/monthList',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* @Author: zhp
|
* @Author: zhp
|
||||||
* @Date: 2023-10-31 10:55:20
|
* @Date: 2023-10-31 10:55:20
|
||||||
* @LastEditTime: 2023-10-31 15:05:30
|
* @LastEditTime: 2023-12-06 14:09:14
|
||||||
* @LastEditors: zhp
|
* @LastEditors: zhp
|
||||||
* @Description:
|
* @Description:
|
||||||
*/
|
*/
|
||||||
@ -33,3 +33,12 @@ export function exportEnergyPlcExcel(query) {
|
|||||||
responseType: 'blob'
|
responseType: 'blob'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getOriginalGlassRetrace(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/original-glass-statistics/originalGlassRetrace',
|
||||||
|
method: 'get',
|
||||||
|
params: query,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
61
src/api/report/glass.js
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Do not edit
|
||||||
|
* @Date: 2023-12-08 10:26:48
|
||||||
|
* @LastEditTime: 2023-12-13 17:16:00
|
||||||
|
* @LastEditors: DY
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 创建原片自动报
|
||||||
|
export function createGlass(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/report-auto-original-glass/create',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批量更新原片自动报
|
||||||
|
export function updateGlass(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/report-auto-original-glass/updatePlus',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 更新原片自动报
|
||||||
|
export function updateGlassRemark(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/report-auto-original-glass/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得原片自动报
|
||||||
|
export function getGlass(id) {
|
||||||
|
return request({
|
||||||
|
url: '/base/report-auto-original-glass/get?id=' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得原片分页
|
||||||
|
export function getGlassPage(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/report-auto-original-glass/listPlus',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出原片自动报 Excel
|
||||||
|
export function exportGlasscExcel(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/report-auto-original-glass/export-excel',
|
||||||
|
method: 'get',
|
||||||
|
params: query,
|
||||||
|
responseType: 'blob'
|
||||||
|
})
|
||||||
|
}
|
57
src/api/report/production.js
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* @Author: zhp
|
||||||
|
* @Date: 2023-12-12 13:49:02
|
||||||
|
* @LastEditTime: 2023-12-14 14:21:43
|
||||||
|
* @LastEditors: zhp
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 获得质量检查信息记录表分页
|
||||||
|
|
||||||
|
export function getProductionDataList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/report-auto-production/listPlus',
|
||||||
|
method: 'get',
|
||||||
|
data: query,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function updateProductionDataList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/report-auto-production/updatePlus',
|
||||||
|
method: 'put',
|
||||||
|
data: query,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export function updateSumProductionDataList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/report-auto-production/update',
|
||||||
|
method: 'put',
|
||||||
|
data: query,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getAutoDeliveDataList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/report-auto-delive/listPlus',
|
||||||
|
method: 'put',
|
||||||
|
data: query,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function updateAutoDeliveDataList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/report-auto-delive/update',
|
||||||
|
method: 'put',
|
||||||
|
data: query,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function updateSumAutoDeliveDataList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/report-auto-delive/updatePlus',
|
||||||
|
method: 'put',
|
||||||
|
data: query,
|
||||||
|
})
|
||||||
|
}
|
92
src/api/safetyEnvironmental/environmental.js
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 获得环保检测指标实时数据
|
||||||
|
export function environmentalCheckRealtime(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/environmental-check/realtime',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得环保检测指标趋势数据
|
||||||
|
export function environmentalCheckRealtimeTrend(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/environmental-check-record/trend',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得环保检测指标分页
|
||||||
|
export function environmentalCheckPage(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/environmental-check/page',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建环保检测指标
|
||||||
|
export function environmentalCheckCreate(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/environmental-check/create',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新环保检测指标
|
||||||
|
export function environmentalCheckUpdate(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/environmental-check/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得环保检测指标
|
||||||
|
export function environmentalCheckGet(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/environmental-check/get',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除环保检测指标
|
||||||
|
export function environmentalCheckDelete(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/environmental-check/delete',
|
||||||
|
method: 'delete',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得环保检测记录分页
|
||||||
|
export function environmentalCheckRecordPage(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/environmental-check-record/page',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出环保检测记录 Excel
|
||||||
|
export function environmentalCheckRecordExport(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/environmental-check-record/export-excel',
|
||||||
|
method: 'post',
|
||||||
|
data: data,
|
||||||
|
responseType: 'blob'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取环保检测指标code
|
||||||
|
export function getEnvironmentalCheckCode(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/environmental-check/getCode',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
14
src/assets/icons/svg/energyMonitoring.svg
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<title>能源监控</title>
|
||||||
|
<g id="mes-看板/驾驶舱" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g id="冷端看板" transform="translate(-685.000000, -149.000000)" fill-rule="nonzero">
|
||||||
|
<g id="编组-26备份-4" transform="translate(661.000000, 127.000000)">
|
||||||
|
<g id="能源监控" transform="translate(24.000000, 22.000000)">
|
||||||
|
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="24" height="24"></rect>
|
||||||
|
<path d="M5.56606392,22 L5.56606392,8.69394435 C5.56606392,8.16339333 5.15113542,7.75513729 4.65294365,7.75513729 L1.91312026,7.75513729 C1.41539106,7.75513729 1,8.20385524 1,8.69394435 L1,22 L5.56606392,22 L5.56606392,22 Z M11.3773759,22 L11.3773759,2.97972358 C11.3773759,2.44871795 10.9624474,2 10.4642557,2 L7.72443229,2 C7.22624054,2 6.81131201,2.44871795 6.81131201,2.97972358 L6.81131201,22 L11.3773759,22 Z M17.188688,22 L17.188688,13.591653 C17.188688,13.061102 16.7737595,12.6123841 16.2755677,12.6123841 L13.5362069,12.6123841 C13.0380151,12.6123841 12.622624,13.061102 12.622624,13.591653 L12.622624,22 L17.188688,22 Z M23,22 L23,8.69394435 C23,8.16339333 22.5850715,7.75513729 22.0868797,7.75513729 L19.3470564,7.75513729 C18.8493272,7.75513729 18.4339361,8.20385524 18.4339361,8.69394435 L18.4339361,22 L23,22 L23,22 Z" id="形状" fill="#59D0E2"></path>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.6 KiB |
14
src/assets/icons/svg/eqAlarm.svg
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<title>报警</title>
|
||||||
|
<g id="新增看板" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g id="深加工看板" transform="translate(-64.000000, -149.000000)" fill-rule="nonzero">
|
||||||
|
<g id="编组-26" transform="translate(40.000000, 127.000000)">
|
||||||
|
<g id="报警" transform="translate(24.000000, 22.000000)">
|
||||||
|
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="24" height="24"></rect>
|
||||||
|
<path d="M20.7657338,18.1387399 L13.9284614,22.3462921 C13.4025174,22.6969215 12.8765734,22.3462921 12.8765734,21.6450334 L12.8765734,11.8274116 C12.8765734,11.6520969 13.0518881,11.3014676 13.2272027,11.1261529 L20.0644751,6.91860067 C20.5904191,6.56797132 21.1163631,6.91860067 21.1163631,7.61985938 L21.1163631,17.6127959 C21.1163631,17.7881106 20.9410485,18.1387399 20.7657338,18.1387399 Z M3.23426622,18.1387399 L10.0715386,22.3462921 C10.5974826,22.6969215 11.1234266,22.3462921 11.1234266,21.6450334 L11.1234266,11.8274116 C11.1234266,11.6520969 10.9481119,11.3014676 10.7727973,11.1261529 L3.93552492,6.91860067 C3.58489557,6.743286 2.88363686,7.09391535 2.88363686,7.61985938 L2.88363686,17.6127959 C2.88363686,17.7881106 3.05895154,18.1387399 3.23426622,18.1387399 Z M11.8246853,1.48384573 L3.93552492,4.46419521 C3.58489557,4.63950989 3.58489557,5.16545392 3.93552492,5.34076859 L11.8246853,10.2495795 C12,10.2495795 12.1753147,10.2495795 12.1753147,10.2495795 L20.2397898,5.34076859 C20.5904191,5.16545392 20.5904191,4.63950989 20.2397898,4.46419521 L12.1753147,1.48384573 C12,1.48384573 12,1.48384573 11.8246853,1.48384573 Z" id="形状" fill="#59D0E2"></path>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.9 KiB |
17
src/assets/icons/svg/eqMonitoring.svg
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="19.7127155px" height="19.7127155px" viewBox="0 0 19.7127155 19.7127155" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<title>设备监控</title>
|
||||||
|
<g id="mes-看板" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g id="深加工看板" transform="translate(-1309.143642, -151.143642)">
|
||||||
|
<g id="编组-26备份-4" transform="translate(1283.000000, 127.000000)">
|
||||||
|
<g id="设备监控" transform="translate(24.000000, 22.000000)">
|
||||||
|
<rect id="矩形" x="0" y="0" width="24" height="24"></rect>
|
||||||
|
<g id="异常" transform="translate(2.143642, 2.143642)" fill-rule="nonzero">
|
||||||
|
<rect id="矩形" fill="#000000" opacity="0" x="0.856357767" y="0.856357767" width="17" height="17"></rect>
|
||||||
|
<path d="M9.85640228,0.000116285784 C7.94997171,-0.0106702658 6.11587607,0.729338602 4.75082135,2.0602014 C3.41793975,3.37801839 2.66584368,5.173105 2.66128994,7.04744966 L2.66128994,16.6671387 L16.9726637,16.6671387 L16.9726637,7.04743041 C16.9710126,5.1705386 16.2144177,3.37320892 14.8732566,2.06018215 C13.5319151,0.748116476 11.7327241,0.00936885323 9.85638303,0.000116285784 L9.85640228,0.000116285784 Z M9.26502002,14.3607842 L9.05803623,9.69875531 L5.52947465,9.69875531 L10.1619113,3.85402838 L10.5561661,7.61911494 L13.9073323,7.73739052 L9.22555602,14.3607842 L9.26502002,14.3607842 Z M4.37471863e-05,18.6383791 C-0.00254075641,18.3517467 0.109484124,18.0759491 0.311244358,17.8723357 C0.513004592,17.6687223 0.787767718,17.5541863 1.07441422,17.5541863 L18.6383903,17.5541863 C18.9225391,17.5577245 19.1943787,17.6707029 19.3973309,17.8696071 C19.5968337,18.0761491 19.7096866,18.3512359 19.7127155,18.6383791 C19.7127155,19.2317112 19.2317269,19.7127155 18.6383903,19.7127155 L1.07441422,19.7127155 C0.481077682,19.7127155 4.37471863e-05,19.2317112 4.37471863e-05,18.6383791 L4.37471863e-05,18.6383791 Z" id="形状" fill="#59D0E2"></path>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.1 KiB |
12
src/assets/icons/svg/fullScreenView.svg
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<title>编组 54</title>
|
||||||
|
<g id="驾驶舱" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g id="运营总览_生产线监控驾驶舱" transform="translate(-1866.000000, -36.000000)">
|
||||||
|
<g id="编组-54" transform="translate(1866.000000, 36.000000)">
|
||||||
|
<rect id="矩形" stroke="#979797" fill="#D8D8D8" opacity="0" x="0.5" y="0.5" width="21" height="21"></rect>
|
||||||
|
<path d="M18.4001211,1 L18.574731,1.00571398 C18.8641421,1.02474925 19.1451559,1.09128771 19.4122178,1.20447947 C19.7221027,1.33395436 19.9991094,1.52058631 20.2392616,1.76073844 C20.4776764,1.99915325 20.6652172,2.27804627 20.7953442,2.58736464 C20.9313506,2.90825642 21,3.24882158 21,3.59987893 L21,3.59987893 L21,18.4001211 L20.994286,18.574731 C20.9752507,18.8641421 20.9087123,19.1451559 20.7955205,19.4122178 C20.6660456,19.7221027 20.4794137,19.9991094 20.2392616,20.2392616 C20.0008468,20.4776764 19.7219537,20.6652172 19.4126354,20.7953442 C19.0917436,20.9313506 18.7511784,21 18.4001211,21 L18.4001211,21 L3.59987893,21 L3.42526905,20.994286 C3.13585794,20.9752507 2.85484405,20.9087123 2.58778224,20.7955205 C2.2778973,20.6660456 2.00089057,20.4794137 1.76073844,20.2392616 C1.52232363,20.0008468 1.33478285,19.7219537 1.20465581,19.4126354 C1.06864936,19.0917436 1,18.7511784 1,18.4001211 L1,18.4001211 L1,3.59987893 L1.00571398,3.42526905 C1.02474925,3.13585794 1.09128771,2.85484405 1.20447947,2.58778224 C1.33395436,2.2778973 1.52058631,2.00089057 1.76073844,1.76073844 C1.99915325,1.52232363 2.27804627,1.33478285 2.58736464,1.20465581 C2.90825642,1.06864936 3.24882158,1 3.59987893,1 L3.59987893,1 L18.4001211,1 Z M18.4001211,2.29539952 L3.59987893,2.29539952 L3.49797651,2.2993263 C2.82542992,2.35136056 2.29539952,2.9140495 2.29539952,3.59987893 L2.29539952,3.59987893 L2.29539952,18.4001211 L2.2993263,18.5020235 C2.35136056,19.1745701 2.9140495,19.7046005 3.59987893,19.7046005 L3.59987893,19.7046005 L18.4001211,19.7046005 L18.5020235,19.7006737 C19.1745701,19.6486394 19.7046005,19.0859505 19.7046005,18.4001211 L19.7046005,18.4001211 L19.7046005,3.59987893 L19.7006737,3.49797651 C19.6486394,2.82542992 19.0859505,2.29539952 18.4001211,2.29539952 L18.4001211,2.29539952 Z M4.56580299,11.8731508 L4.63987359,11.8789244 C4.95620444,11.9219442 5.20096852,12.1943435 5.20096852,12.5208838 L5.20096852,12.5208838 L5.20096852,15.8606113 L8.39814764,12.6634321 L8.45892035,12.6098356 C8.71226443,12.4133149 9.08161636,12.4311804 9.3138681,12.6634321 C9.56547415,12.9150382 9.56547415,13.3275466 9.3138681,13.5791526 L9.3138681,13.5791526 L6.09149511,16.7990315 L9.4155569,16.7990315 L9.49368756,16.8035151 C9.82695229,16.8420028 10.0864105,17.123441 10.081435,17.4601165 C10.0742517,17.8119637 9.78624591,18.094431 9.43371671,18.094431 L9.43371671,18.094431 L4.5691586,18.094431 L4.49163938,18.0899766 C4.16113157,18.051728 3.90556901,17.7718105 3.90556901,17.4308414 L3.90556901,17.4308414 L3.90556901,12.5367736 L3.91007171,12.4587841 C3.94871707,12.1260764 4.23118526,11.8665247 4.56580299,11.8731508 L4.56580299,11.8731508 Z M17.4353814,3.90556901 L17.512257,3.91000958 C17.8400885,3.94813523 18.094431,4.22707005 18.094431,4.56461864 L18.094431,4.56461864 L18.094431,9.46095642 L18.0899283,9.53894589 C18.0512829,9.87165361 17.7688147,10.1312053 17.434197,10.1245792 C17.0828999,10.1173731 16.7990315,9.82850504 16.7990315,9.47684625 L16.7990315,9.47684625 L16.7990315,6.13938874 L13.6018524,9.33656786 L13.5410796,9.39016441 C13.2877356,9.58668512 12.9183836,9.5688196 12.6861319,9.33656786 C12.4345258,9.08496181 12.4345258,8.67245345 12.6861319,8.4208474 L12.6861319,8.4208474 L15.9060108,5.20096852 L12.5821731,5.20096852 L12.5040246,5.19648608 C12.170734,5.1580095 11.9119308,4.876675 11.9185506,4.54071802 C11.9257483,4.18803625 12.2137541,3.90556901 12.5662833,3.90556901 L12.5662833,3.90556901 L17.4353814,3.90556901 Z" id="形状结合" fill="#52FFF1" fill-rule="nonzero" opacity="0.79078311"></path>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.1 KiB |
@ -1 +0,0 @@
|
|||||||
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M38.47 52L52 38.462l-23.648-23.67L43.209 0H.035L0 43.137l14.757-14.865L38.47 52zm74.773 47.726L89.526 76 76 89.536l23.648 23.672L84.795 128h43.174L128 84.863l-14.757 14.863zM89.538 52l23.668-23.648L128 43.207V.038L84.866 0 99.73 14.76 76 38.472 89.538 52zM38.46 76L14.792 99.651 0 84.794v43.173l43.137.033-14.865-14.757L52 89.53 38.46 76z"/></svg>
|
|
Before Width: | Height: | Size: 421 B |
12
src/assets/icons/svg/menuIcon.svg
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<title>制度流程</title>
|
||||||
|
<g id="页面" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g id="栏" transform="translate(-383.000000, -639.000000)" fill="#FFFFFF" fill-rule="nonzero">
|
||||||
|
<g id="制度流程" transform="translate(383.000000, 639.000000)">
|
||||||
|
<rect id="矩形" opacity="0" x="0" y="0" width="24" height="24"></rect>
|
||||||
|
<path d="M4.37117174,17.071929 L2.37885068,17.071929 C2.0028361,17.071929 1.69692899,17.3771995 1.69692899,17.7524526 L1.69692899,19.7475474 C1.69692899,20.1227781 2.00283612,20.428071 2.37885068,20.428071 L4.37117174,20.428071 C4.74718632,20.428071 5.05307101,20.1228005 5.05307101,19.7475474 L5.05307101,17.7524526 C5.05307101,17.3771996 4.74718632,17.071929 4.37117174,17.071929 Z M7.36536289,6.40073051 L21.8846371,6.40073051 C22.2245029,6.40073051 22.5,6.06492662 22.5,5.65073051 C22.5,5.2365344 22.2245029,4.90073051 21.8846371,4.90073051 L7.36536289,4.90073051 C7.02549709,4.90073051 6.75,5.23653442 6.75,5.65073054 C6.75,6.06492665 7.02549711,6.40073051 7.36536289,6.40073051 Z M3.14077284,5.95492436 L2.03265569,4.84248673 C1.8767502,4.68597337 1.62348469,4.6854806 1.46697133,4.84138609 C1.4665023,4.8418533 1.46603442,4.84232168 1.46556772,4.84279121 L1.18448184,5.12557972 C1.0295067,5.28149361 1.02939503,5.5332514 1.1842318,5.6893027 L2.85590574,7.37408916 C3.01150401,7.53090793 3.26476807,7.53189735 3.42158685,7.37629907 C3.42263304,7.37526103 3.42367349,7.3742172 3.42470814,7.37316765 L5.7220224,5.04277966 C5.87599957,4.88658572 5.87547971,4.63552909 5.72085699,4.47997417 L5.4403523,4.19777835 C5.28461275,4.04109986 5.0313479,4.04033871 4.87466942,4.19607825 C4.87370895,4.19703297 4.87275333,4.19799256 4.8718026,4.19895698 L3.14077284,5.95492436 L3.14077284,5.95492436 Z M21.8846371,11.25 L7.36536289,11.25 C7.02549709,11.25 6.75,11.5857972 6.75,11.999985 C6.75,12.4141729 7.02552167,12.75 7.36536289,12.75 L21.8846371,12.75 C22.2245029,12.75 22.5,12.4142028 22.5,11.999985 C22.5,11.5857672 22.2245029,11.25 21.8846371,11.25 Z M21.8846371,17.972656 L7.36536289,17.972656 C7.02549709,17.972656 6.75,18.30843 6.75,18.722656 C6.75,19.1368821 7.02552167,19.472656 7.36536289,19.472656 L21.8846371,19.472656 C22.2245029,19.472656 22.5,19.1368821 22.5,18.722656 C22.5,18.30843 22.2245029,17.972656 21.8846371,17.972656 Z M4.37117174,10.321929 L2.37885068,10.321929 C2.0028361,10.321929 1.69692899,10.6271975 1.69692899,11.0024481 L1.69692899,12.9975519 C1.69692899,13.3727801 2.00283612,13.678071 2.37885068,13.678071 L4.37117174,13.678071 C4.74718632,13.678071 5.05307101,13.3728025 5.05307101,12.9975519 L5.05307101,11.0024481 C5.05307101,10.6271975 4.74718632,10.321929 4.37117174,10.321929 Z" id="形状"></path>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.9 KiB |
1
src/assets/icons/svg/noStandards.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1702606455297" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1590" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><path d="M614.4 59.136l238.592 137.728a204.8 204.8 0 0 1 102.4 177.3568v275.5584a204.8 204.8 0 0 1-102.4 177.3568L614.4 964.864a204.8 204.8 0 0 1-204.8 0l-238.592-137.728a204.8 204.8 0 0 1-102.4-177.3568V374.2208a204.8 204.8 0 0 1 102.4-177.3568L409.6 59.136a204.8 204.8 0 0 1 204.8 0z" fill="#EE1609" p-id="1591"></path><path d="M471.04 261.9904v315.392a40.96 40.96 0 1 0 81.92 0v-315.392a40.96 40.96 0 1 0-81.92 0z" fill="#FFFFFF" p-id="1592"></path><path d="M512 706.56m-51.2 0a51.2 51.2 0 1 0 102.4 0 51.2 51.2 0 1 0-102.4 0Z" fill="#FFFFFF" p-id="1593"></path></svg>
|
After Width: | Height: | Size: 895 B |
14
src/assets/icons/svg/productLine.svg
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<title>库存管理</title>
|
||||||
|
<g id="新增看板" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g id="周转看板" transform="translate(-64.000000, -618.000000)" fill-rule="nonzero">
|
||||||
|
<g id="编组-26备份" transform="translate(40.000000, 596.000000)">
|
||||||
|
<g id="库存管理" transform="translate(24.000000, 22.000000)">
|
||||||
|
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="24" height="24"></rect>
|
||||||
|
<path d="M17.5599807,5.95300863 L17.5599807,7.05052701 L6.39641163,7.05052701 L6.39641163,5.95300863 L5.15061552,5.95300863 C4.59833077,5.95300863 4.15061552,6.40072388 4.15061552,6.95300863 L4.15061552,21.465846 C4.15061552,22.0181307 4.59833077,22.465846 5.15061552,22.465846 L18.8493845,22.465846 C19.4016692,22.465846 19.8493845,22.0181307 19.8493845,21.465846 L19.8493845,6.95300863 C19.8493845,6.40072388 19.4016692,5.95300863 18.8493845,5.95300863 L17.5599807,5.95300863 L17.5599807,5.95300863 Z M6.35280394,9.22062017 L17.516373,9.22062017 L17.516373,11.3240808 L6.35280394,11.3240808 L6.35280394,9.22062017 Z M14.2456217,20.2200499 L6.3962372,20.2200499 L6.3962372,18.0396653 L14.2456217,18.0396653 L14.2456217,20.2200499 Z M17.5709698,15.8758516 L6.40740077,15.8758516 L6.40740077,13.6570923 L17.5709698,13.6570923 L17.5709698,15.8758516 Z M10.7650186,1.53415402 L13.234807,1.53415402 C13.7870917,1.53415402 14.234807,1.98186927 14.234807,2.53415402 L14.234807,4.82653474 L14.234807,4.82653474 L9.76501859,4.82653474 L9.76501859,2.53415402 C9.76501859,1.98186927 10.2127338,1.53415402 10.7650186,1.53415402 Z M16.4807775,4.75814629 L16.4807775,5.95300863 L16.4807775,5.95300863 L7.51922248,5.95300863 L7.51922248,4.75814629 C7.51922248,4.20586154 7.96693773,3.75814629 8.51922248,3.75814629 L15.4807775,3.75814629 C16.0330623,3.75814629 16.4807775,4.20586154 16.4807775,4.75814629 Z" id="形状" fill="#59D0E2"></path>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.1 KiB |
16
src/assets/icons/svg/scrap.svg
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="23.9999981px" height="23.9999981px" viewBox="0 0 23.9999981 23.9999981" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<title>缺陷</title>
|
||||||
|
<g id="mes-看板" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g id="深加工看板" transform="translate(-686.000000, -149.000000)" fill-rule="nonzero">
|
||||||
|
<g id="编组-26备份-2" transform="translate(662.000000, 127.000000)">
|
||||||
|
<g id="编组-24" transform="translate(24.000000, 22.000000)">
|
||||||
|
<g id="缺陷" transform="translate(0.000000, 0.000000)">
|
||||||
|
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="23.9999981" height="23.9999981"></rect>
|
||||||
|
<path d="M20.2321175,10.4550863 L18.9032068,10.4550863 L18.9032068,6.47221732 C18.9010796,5.9702116 18.4935224,5.56438134 17.9915122,5.56438585 L13.108538,5.56438585 L13.108538,3.98437284 C13.1108007,3.21607553 12.8028771,2.47938539 12.2545397,1.94122931 C11.7062023,1.40307324 10.9638711,1.1090093 10.1957511,1.12566955 C8.60430329,1.19855778 7.3587693,2.52279309 7.38340516,4.11571867 L7.38340516,5.56438585 L2.5004309,5.56438585 C1.99842068,5.56438134 1.59086349,5.9702116 1.58870356,6.47221732 L1.58870356,9.53566556 C1.58667583,9.77879788 1.68181868,10.0126808 1.85301841,10.1853314 C2.02421815,10.3579819 2.25728984,10.4550951 2.5004309,10.4550863 L3.01036175,10.4550863 C4.60185595,10.4303757 5.92550348,11.6736467 6.00041086,13.2635692 C6.0149973,14.0317095 5.71894789,14.773225 5.17934105,15.3201042 C4.63973421,15.8669834 3.90224815,16.1729324 3.13398136,16.1686298 L2.5004309,16.1686298 C1.9969159,16.1686298 1.58870356,16.5768093 1.58870356,17.0803243 L1.58870356,21.9632986 C1.58870356,22.4668136 1.9969159,22.8750014 2.5004309,22.8750014 L6.47171061,22.8750014 C6.71382208,22.8760256 6.94631552,22.780304 7.11751574,22.6091037 C7.28871596,22.4379035 7.38443764,22.2054101 7.38340516,21.9632986 L7.38340516,21.5113144 C7.3587693,19.9183889 8.60430329,18.5941536 10.1957511,18.5212653 C10.9638711,18.5046051 11.7062023,18.798669 12.2545397,19.3368251 C12.8028771,19.8749812 13.1108007,20.6116713 13.108538,21.3799686 L13.108538,21.9632986 C13.1075105,22.2047391 13.202703,22.4366433 13.3730659,22.6077311 C13.5434288,22.778819 13.7749267,22.8750014 14.0163694,22.8750014 L17.9915122,22.8750014 C18.4950272,22.8750014 18.9032068,22.4668136 18.9032068,21.9632986 L18.9032068,16.1686298 L20.3596002,16.1686298 C21.127882,16.1719118 21.8649697,15.8649752 22.403851,15.3173671 C22.9427323,14.769759 23.2377892,14.027836 23.2221666,13.259706 C23.1452437,11.6713093 21.8221825,10.4302984 20.2321175,10.4550863 Z" id="路径" fill="#59D0E2"></path>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
1
src/assets/icons/svg/standards.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1702606467176" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1824" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><path d="M622.812817 29.238717l258.222014 146.7694A217.658893 217.658893 0 0 1 991.847648 365.004111v293.666761c0 77.991238-42.226593 150.032365-110.812817 188.995994l-258.222014 146.7694a224.568699 224.568699 0 0 1-221.625634 0l-258.222014-146.7694A217.658893 217.658893 0 0 1 32.152352 658.670872v-293.666761c0-77.991238 42.226593-150.032365 110.812817-188.995994L401.187183 29.238717a224.568699 224.568699 0 0 1 221.625634 0z" fill="#4AA468" p-id="1825"></path><path d="M448.852049 592.899754l-124.120591-140.883269a37.108218 37.108218 0 0 0-56.877941 1.087654 51.631607 51.631607 0 0 0-0.447858 65.067342l151.567877 172.105356c15.355125 17.466454 39.987304 18.042272 55.982226 1.407553l279.39929-290.403797a50.863851 50.863851 0 0 0 12.667978-44.529861 44.84976 44.84976 0 0 0-27.511265-34.67699 36.980259 36.980259 0 0 0-39.859345 10.17277l-250.800371 260.653242z" fill="#FFFFFF" p-id="1826"></path></svg>
|
After Width: | Height: | Size: 1.2 KiB |
10
src/assets/icons/svg/unFullScreenView.svg
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<title>编组 54备份</title>
|
||||||
|
<g id="驾驶舱" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g id="编组-54备份">
|
||||||
|
<rect id="矩形" stroke="#979797" fill="#D8D8D8" opacity="0" x="0.5" y="0.5" width="21" height="21"></rect>
|
||||||
|
<path d="M18.4001211,1 L18.574731,1.00571398 C18.8641421,1.02474925 19.1451559,1.09128771 19.4122178,1.20447947 C19.7221027,1.33395436 19.9991094,1.52058631 20.2392616,1.76073844 C20.4776764,1.99915325 20.6652172,2.27804627 20.7953442,2.58736464 C20.9313506,2.90825642 21,3.24882158 21,3.59987893 L21,3.59987893 L21,18.4001211 L20.994286,18.574731 C20.9752507,18.8641421 20.9087123,19.1451559 20.7955205,19.4122178 C20.6660456,19.7221027 20.4794137,19.9991094 20.2392616,20.2392616 C20.0008468,20.4776764 19.7219537,20.6652172 19.4126354,20.7953442 C19.0917436,20.9313506 18.7511784,21 18.4001211,21 L18.4001211,21 L3.59987893,21 L3.42526905,20.994286 C3.13585794,20.9752507 2.85484405,20.9087123 2.58778224,20.7955205 C2.2778973,20.6660456 2.00089057,20.4794137 1.76073844,20.2392616 C1.52232363,20.0008468 1.33478285,19.7219537 1.20465581,19.4126354 C1.06864936,19.0917436 1,18.7511784 1,18.4001211 L1,18.4001211 L1,3.59987893 L1.00571398,3.42526905 C1.02474925,3.13585794 1.09128771,2.85484405 1.20447947,2.58778224 C1.33395436,2.2778973 1.52058631,2.00089057 1.76073844,1.76073844 C1.99915325,1.52232363 2.27804627,1.33478285 2.58736464,1.20465581 C2.90825642,1.06864936 3.24882158,1 3.59987893,1 L3.59987893,1 L18.4001211,1 Z M18.4001211,2.29539952 L3.59987893,2.29539952 L3.49797651,2.2993263 C2.82542992,2.35136056 2.29539952,2.9140495 2.29539952,3.59987893 L2.29539952,3.59987893 L2.29539952,18.4001211 L2.2993263,18.5020235 C2.35136056,19.1745701 2.9140495,19.7046005 3.59987893,19.7046005 L3.59987893,19.7046005 L18.4001211,19.7046005 L18.5020235,19.7006737 C19.1745701,19.6486394 19.7046005,19.0859505 19.7046005,18.4001211 L19.7046005,18.4001211 L19.7046005,3.59987893 L19.7006737,3.49797651 C19.6486394,2.82542992 19.0859505,2.29539952 18.4001211,2.29539952 L18.4001211,2.29539952 Z M9.43538136,11.905569 L9.512257,11.9100096 C9.84008849,11.9481352 10.094431,12.2270701 10.094431,12.5646186 L10.094431,12.5646186 L10.094431,17.4609564 L10.0899283,17.5389459 C10.0512829,17.8716536 9.76881474,18.1312053 9.43419701,18.1245792 C9.08289988,18.1173731 8.79903148,17.828505 8.79903148,17.4768462 L8.79903148,17.4768462 L8.79903148,14.1393887 L5.60185236,17.3365679 L5.54107965,17.3901644 C5.28773557,17.5866851 4.91838364,17.5688196 4.6861319,17.3365679 C4.43452585,17.0849618 4.43452585,16.6724534 4.6861319,16.4208474 L4.6861319,16.4208474 L7.90601077,13.2009685 L4.58217312,13.2009685 L4.50402457,13.1964861 C4.17073404,13.1580095 3.9119308,12.876675 3.91855064,12.540718 C3.92574827,12.1880363 4.21375409,11.905569 4.56628329,11.905569 L4.56628329,11.905569 L9.43538136,11.905569 Z M12.565803,3.8731508 L12.6398736,3.87892442 C12.9562044,3.92194416 13.2009685,4.19434347 13.2009685,4.52088378 L13.2009685,4.52088378 L13.2009685,7.86061126 L16.3981476,4.66343214 L16.4589204,4.60983559 C16.7122644,4.41331488 17.0816164,4.4311804 17.3138681,4.66343214 C17.5654742,4.91503819 17.5654742,5.32754655 17.3138681,5.5791526 L17.3138681,5.5791526 L14.0914951,8.79903148 L17.4155569,8.79903148 L17.4936876,8.80351509 C17.8269523,8.84200281 18.0864105,9.12344101 18.081435,9.46011654 C18.0742517,9.81196375 17.7862459,10.094431 17.4337167,10.094431 L17.4337167,10.094431 L12.5691586,10.094431 L12.4916394,10.0899766 C12.1611316,10.051728 11.905569,9.77181051 11.905569,9.4308414 L11.905569,9.4308414 L11.905569,4.53677361 L11.9100717,4.45878413 C11.9487171,4.12607641 12.2311853,3.86652471 12.565803,3.8731508 L12.565803,3.8731508 Z" id="形状结合" fill="#52FFF1" fill-rule="nonzero" opacity="0.79078311"></path>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.9 KiB |
BIN
src/assets/images/choicepart/Cost.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
src/assets/images/choicepart/Databoard.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
src/assets/images/choicepart/SafetyEnvironmental.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
src/assets/images/detectionData.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 5.6 KiB |
BIN
src/assets/logo/logo1.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
src/assets/logo/xcac.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
@ -139,7 +139,7 @@ $base1px: 0.15vh; // 1px / 1080px;
|
|||||||
|
|
||||||
.title {
|
.title {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
margin-left: calc(28 * 0.12vh);
|
margin-left: calc(18px * 0.12vh);
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
color: #000;
|
color: #000;
|
||||||
@ -148,8 +148,8 @@ $base1px: 0.15vh; // 1px / 1080px;
|
|||||||
letter-spacing: calc(2 * 0.12vh);
|
letter-spacing: calc(2 * 0.12vh);
|
||||||
|
|
||||||
.cnbm_logo {
|
.cnbm_logo {
|
||||||
height: calc(40 * 0.12vh);
|
height: calc(160 * 0.12vh);
|
||||||
width: calc(40 * 0.12vh);
|
width: calc(182 * 0.12vh);
|
||||||
position: relative;
|
position: relative;
|
||||||
top: calc(8 * 0.12vh);
|
top: calc(8 * 0.12vh);
|
||||||
right: calc(8 * 0.12vh);
|
right: calc(8 * 0.12vh);
|
||||||
|
@ -86,8 +86,8 @@
|
|||||||
</span>
|
</span>
|
||||||
<!-- :file-list="uploadedFileList" -->
|
<!-- :file-list="uploadedFileList" -->
|
||||||
<el-upload
|
<el-upload
|
||||||
class="upload-in-dialog"
|
|
||||||
v-if="col.upload"
|
v-if="col.upload"
|
||||||
|
class="upload-in-dialog"
|
||||||
:key="col.prop + '__el-upload'"
|
:key="col.prop + '__el-upload'"
|
||||||
:action="uploadUrl"
|
:action="uploadUrl"
|
||||||
:headers="uploadHeaders"
|
:headers="uploadHeaders"
|
||||||
@ -101,7 +101,9 @@
|
|||||||
}
|
}
|
||||||
"
|
"
|
||||||
v-bind="col.bind">
|
v-bind="col.bind">
|
||||||
<el-button size="mini" :disabled="col.bind?.disabled || false">
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
:disabled="disabled || col.bind?.disabled || false">
|
||||||
<svg-icon
|
<svg-icon
|
||||||
icon-class="icon-upload"
|
icon-class="icon-upload"
|
||||||
style="color: inherit"></svg-icon>
|
style="color: inherit"></svg-icon>
|
||||||
@ -117,6 +119,7 @@
|
|||||||
v-for="file in form[col.prop]"
|
v-for="file in form[col.prop]"
|
||||||
:file="file"
|
:file="file"
|
||||||
:key="file.fileUrl"
|
:key="file.fileUrl"
|
||||||
|
:disabled="disabled"
|
||||||
@delete="!disabled && handleDeleteFile(file, col.prop)" />
|
@delete="!disabled && handleDeleteFile(file, col.prop)" />
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -143,7 +146,7 @@ function findMaxLabelWidth(rows) {
|
|||||||
if (opt.label.length > max) {
|
if (opt.label.length > max) {
|
||||||
max = opt.label.length;
|
max = opt.label.length;
|
||||||
if (opt.label.includes('(')) {
|
if (opt.label.includes('(')) {
|
||||||
max = max - 3
|
max = max - 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -153,7 +156,7 @@ function findMaxLabelWidth(rows) {
|
|||||||
|
|
||||||
const uploadedFile = {
|
const uploadedFile = {
|
||||||
name: 'UploadedFile',
|
name: 'UploadedFile',
|
||||||
props: ['file'],
|
props: ['file', 'disabled'],
|
||||||
data() {
|
data() {
|
||||||
return {};
|
return {};
|
||||||
},
|
},
|
||||||
@ -198,6 +201,7 @@ const uploadedFile = {
|
|||||||
display: 'inline-block',
|
display: 'inline-block',
|
||||||
}}>
|
}}>
|
||||||
{this.file.fileName}
|
{this.file.fileName}
|
||||||
|
{!this.disabled && (
|
||||||
<el-button
|
<el-button
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-close"
|
icon="el-icon-close"
|
||||||
@ -205,6 +209,7 @@ const uploadedFile = {
|
|||||||
class="dialog__upload_component__close"
|
class="dialog__upload_component__close"
|
||||||
onClick={this.handleDelete}
|
onClick={this.handleDelete}
|
||||||
/>
|
/>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@ -242,7 +247,7 @@ export default {
|
|||||||
size: {
|
size: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '',
|
default: '',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -407,8 +412,26 @@ export default {
|
|||||||
}
|
}
|
||||||
if (!promiseList.length) this.formLoading = false;
|
if (!promiseList.length) this.formLoading = false;
|
||||||
},
|
},
|
||||||
|
|
||||||
// 上传成功的特殊处理
|
// 上传成功的特殊处理
|
||||||
beforeUpload() {},
|
beforeUpload(file) {
|
||||||
|
const checkFileSize = () => {
|
||||||
|
const isLt2M = file.size / 1024 / 1024 < 2;
|
||||||
|
if (!isLt2M) {
|
||||||
|
this.$modal.msgError('上传文件大小不能超过 2MB!');
|
||||||
|
}
|
||||||
|
return isLt2M;
|
||||||
|
};
|
||||||
|
const checkFileType = () => {
|
||||||
|
const isJPG =
|
||||||
|
file.type === 'image/jpeg' ||
|
||||||
|
file.type === 'image/png' ||
|
||||||
|
file.type === 'image/jpg';
|
||||||
|
return isJPG;
|
||||||
|
};
|
||||||
|
return checkFileSize() && checkFileType();
|
||||||
|
},
|
||||||
|
|
||||||
// 上传前的验证规则可通过 bind 属性传入
|
// 上传前的验证规则可通过 bind 属性传入
|
||||||
handleUploadSuccess(response, file, prop) {
|
handleUploadSuccess(response, file, prop) {
|
||||||
console.log('[handleUploadSuccess]', response, file, prop);
|
console.log('[handleUploadSuccess]', response, file, prop);
|
||||||
|
@ -83,7 +83,7 @@ export default {
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
placeholder: '请输入内容',
|
placeholder: '请输入内容',
|
||||||
// readOnly: false,
|
readOnly: true,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@ -123,7 +123,6 @@ export default {
|
|||||||
const editor = this.$refs.editor;
|
const editor = this.$refs.editor;
|
||||||
this.Quill = new Quill(editor, this.options);
|
this.Quill = new Quill(editor, this.options);
|
||||||
// 取消自动聚焦 start
|
// 取消自动聚焦 start
|
||||||
this.Quill?.enable(false);
|
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.Quill?.blur();
|
this.Quill?.blur();
|
||||||
this.Quill?.enable(true);
|
this.Quill?.enable(true);
|
||||||
@ -195,7 +194,7 @@ export default {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style>
|
||||||
.editor-wrapper {
|
.editor-wrapper {
|
||||||
position: relative;
|
position: relative;
|
||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
:headers="headers"
|
:headers="headers"
|
||||||
:file-list="fileList"
|
:file-list="fileList"
|
||||||
:on-preview="handlePictureCardPreview"
|
:on-preview="handlePictureCardPreview"
|
||||||
|
:disabled="disabled"
|
||||||
:class="{hide: this.fileList.length >= this.limit}"
|
:class="{hide: this.fileList.length >= this.limit}"
|
||||||
>
|
>
|
||||||
<i class="el-icon-plus"></i>
|
<i class="el-icon-plus"></i>
|
||||||
@ -44,6 +45,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getAccessToken } from "@/utils/auth";
|
import { getAccessToken } from "@/utils/auth";
|
||||||
|
import { flatten } from 'min-dash';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
@ -67,6 +69,10 @@ export default {
|
|||||||
isShowTip: {
|
isShowTip: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true
|
default: true
|
||||||
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@ -122,14 +128,16 @@ export default {
|
|||||||
// 上传成功回调
|
// 上传成功回调
|
||||||
handleUploadSuccess(res) {
|
handleUploadSuccess(res) {
|
||||||
// edit by 芋道源码
|
// edit by 芋道源码
|
||||||
|
if (res.code !== 500) {
|
||||||
this.uploadList.push({ name: res.data, url: res.data });
|
this.uploadList.push({ name: res.data, url: res.data });
|
||||||
if (this.uploadList.length === this.number) {
|
if (this.uploadList.length === this.number) {
|
||||||
this.fileList = this.fileList.concat(this.uploadList);
|
this.fileList = this.fileList.concat(this.uploadList);
|
||||||
this.uploadList = [];
|
this.uploadList = [];
|
||||||
this.number = 0;
|
this.number = 0;
|
||||||
this.$emit("input", this.listToString(this.fileList));
|
this.$emit("input", this.listToString(this.fileList));
|
||||||
this.$modal.closeLoading();
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
this.$modal.closeLoading();
|
||||||
},
|
},
|
||||||
// 上传前loading加载
|
// 上传前loading加载
|
||||||
handleBeforeUpload(file) {
|
handleBeforeUpload(file) {
|
||||||
|
@ -17,7 +17,9 @@ export default {
|
|||||||
const vnodes = []
|
const vnodes = []
|
||||||
|
|
||||||
if (icon) {
|
if (icon) {
|
||||||
vnodes.push(<svg-icon icon-class={icon}/>)
|
vnodes.push(<svg-icon style="font-size: 18px;margin-right: 10px;vertical-align: middle;" icon-class={icon}/>)
|
||||||
|
} else {
|
||||||
|
vnodes.push(<span style="display: inline-block; width: 10px;"/>)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (title) {
|
if (title) {
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
key="collapse"
|
key="collapse"
|
||||||
class="sidebar-logo-link"
|
class="sidebar-logo-link"
|
||||||
to="/">
|
to="/">
|
||||||
<img v-if="logo" :src="logo" class="sidebar-logo" />
|
<img v-if="logo" :src="logo" class="sidebar-logo-close" />
|
||||||
<h1
|
<h1
|
||||||
v-else
|
v-else
|
||||||
class="sidebar-title"
|
class="sidebar-title"
|
||||||
@ -67,7 +67,7 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
title: '中建材智能化院',
|
title: '许昌安彩新能科技有限公司',
|
||||||
logo: logoImg,
|
logo: logoImg,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@ -98,8 +98,8 @@ export default {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
& .sidebar-logo {
|
& .sidebar-logo {
|
||||||
width: 32px;
|
width: 67px;
|
||||||
height: 40px;
|
height: 24px;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
margin-right: 12px;
|
margin-right: 12px;
|
||||||
}
|
}
|
||||||
@ -108,17 +108,23 @@ export default {
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-weight: 600;
|
font-weight: 500;
|
||||||
line-height: 50px;
|
width: 147px;
|
||||||
font-size: 18px;
|
letter-spacing: 2px;
|
||||||
letter-spacing: 1px;
|
font-size: 10px;
|
||||||
font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
|
font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.collapse {
|
&.collapse {
|
||||||
.sidebar-logo {
|
// .sidebar-logo {
|
||||||
|
// margin-right: 0px;
|
||||||
|
// }
|
||||||
|
.sidebar-logo-close {
|
||||||
|
width: 54px;
|
||||||
|
height: 19px;
|
||||||
|
vertical-align: middle;
|
||||||
margin-right: 0px;
|
margin-right: 0px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,16 +3,16 @@
|
|||||||
<template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
|
<template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
|
||||||
<app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path)">
|
<app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path)">
|
||||||
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
|
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
|
||||||
<item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />
|
<item icon="menuIcon" :title="onlyOneChild.meta.title" />
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
</app-link>
|
</app-link>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
|
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
<item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />
|
<item v-if="item.meta" icon="menuIcon" :title="item.meta.title" />
|
||||||
</template>
|
</template>
|
||||||
<sidebar-item
|
<sidebar-item-sub
|
||||||
v-for="(child, index) in item.children"
|
v-for="(child, index) in item.children"
|
||||||
:key="child.path + index"
|
:key="child.path + index"
|
||||||
:is-nest="true"
|
:is-nest="true"
|
||||||
@ -30,10 +30,11 @@ import { isExternal } from '@/utils/validate'
|
|||||||
import Item from './Item'
|
import Item from './Item'
|
||||||
import AppLink from './Link'
|
import AppLink from './Link'
|
||||||
import FixiOSBug from './FixiOSBug'
|
import FixiOSBug from './FixiOSBug'
|
||||||
|
import SidebarItemSub from './SidebarItemSub'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'SidebarItem',
|
name: 'SidebarItem',
|
||||||
components: { Item, AppLink },
|
components: { Item, AppLink, SidebarItemSub },
|
||||||
mixins: [FixiOSBug],
|
mixins: [FixiOSBug],
|
||||||
props: {
|
props: {
|
||||||
// route object
|
// route object
|
||||||
|
@ -3,16 +3,16 @@
|
|||||||
<template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
|
<template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
|
||||||
<app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path)">
|
<app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path)">
|
||||||
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
|
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
|
||||||
<item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />
|
<item icon="" :title="onlyOneChild.meta.title" />
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
</app-link>
|
</app-link>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
|
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
<item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />
|
<item v-if="item.meta" icon="" :title="item.meta.title" />
|
||||||
</template>
|
</template>
|
||||||
<sidebar-item
|
<sidebar-item-sub
|
||||||
v-for="(child, index) in item.children"
|
v-for="(child, index) in item.children"
|
||||||
:key="child.path + index"
|
:key="child.path + index"
|
||||||
:is-nest="true"
|
:is-nest="true"
|
||||||
@ -32,7 +32,7 @@ import AppLink from './Link'
|
|||||||
import FixiOSBug from './FixiOSBug'
|
import FixiOSBug from './FixiOSBug'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'SidebarItem',
|
name: 'SidebarItemSub',
|
||||||
components: { Item, AppLink },
|
components: { Item, AppLink },
|
||||||
mixins: [FixiOSBug],
|
mixins: [FixiOSBug],
|
||||||
props: {
|
props: {
|
@ -1,71 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div
|
|
||||||
:class="{ 'has-logo': showLogo }"
|
|
||||||
:style="{
|
|
||||||
backgroundColor:
|
|
||||||
settings.sideTheme === 'theme-dark'
|
|
||||||
? variables.menuBackground
|
|
||||||
: variables.menuLightBackground,
|
|
||||||
}">
|
|
||||||
<logo v-if="showLogo" :collapse="isCollapse" />
|
|
||||||
<el-scrollbar :class="settings.sideTheme" wrap-class="scrollbar-wrapper">
|
|
||||||
<el-menu
|
|
||||||
:default-active="activeMenu"
|
|
||||||
:collapse="isCollapse"
|
|
||||||
:background-color="
|
|
||||||
settings.sideTheme === 'theme-dark'
|
|
||||||
? variables.menuBackground
|
|
||||||
: variables.menuLightBackground
|
|
||||||
"
|
|
||||||
:text-color="
|
|
||||||
settings.sideTheme === 'theme-dark'
|
|
||||||
? variables.menuColor
|
|
||||||
: variables.menuLightColor
|
|
||||||
"
|
|
||||||
:unique-opened="true"
|
|
||||||
active-text-color="#fff"
|
|
||||||
:collapse-transition="false"
|
|
||||||
mode="vertical">
|
|
||||||
<!-- 根据 sidebarRouters 路由,生成菜单 -->
|
|
||||||
<sidebar-item
|
|
||||||
v-for="(route, index) in sidebarRouters"
|
|
||||||
:key="route.path + index"
|
|
||||||
:item="route"
|
|
||||||
:base-path="route.path" />
|
|
||||||
</el-menu>
|
|
||||||
</el-scrollbar>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { mapGetters, mapState } from 'vuex';
|
|
||||||
import Logo from './Logo';
|
|
||||||
import SidebarItem from './SidebarItem';
|
|
||||||
import variables from '@/assets/styles/variables.scss';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
components: { SidebarItem, Logo },
|
|
||||||
computed: {
|
|
||||||
...mapState(['settings']),
|
|
||||||
...mapGetters(['sidebarRouters', 'sidebar']),
|
|
||||||
activeMenu() {
|
|
||||||
const route = this.$route;
|
|
||||||
const { meta, path } = route;
|
|
||||||
// if set path, the sidebar will highlight the path you set
|
|
||||||
if (meta.activeMenu) {
|
|
||||||
return meta.activeMenu;
|
|
||||||
}
|
|
||||||
return path;
|
|
||||||
},
|
|
||||||
showLogo() {
|
|
||||||
return this.$store.state.settings.sidebarLogo;
|
|
||||||
},
|
|
||||||
variables() {
|
|
||||||
return variables;
|
|
||||||
},
|
|
||||||
isCollapse() {
|
|
||||||
return !this.sidebar.opened;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
|
@ -28,10 +28,10 @@
|
|||||||
mode="vertical">
|
mode="vertical">
|
||||||
<!-- 根据 sidebarRouters 路由,生成菜单 -->
|
<!-- 根据 sidebarRouters 路由,生成菜单 -->
|
||||||
<sidebar-item
|
<sidebar-item
|
||||||
v-for="(route, index) in routeList"
|
v-for="(route, index) in routeList.children"
|
||||||
:key="route.path + index"
|
:key="route.path + index"
|
||||||
:item="route"
|
:item="route"
|
||||||
:base-path="route.path" />
|
:base-path="routeList.path+ '/'+ route.path" />
|
||||||
</el-menu>
|
</el-menu>
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
</div>
|
</div>
|
||||||
@ -49,9 +49,7 @@ export default {
|
|||||||
...mapState(['settings']),
|
...mapState(['settings']),
|
||||||
...mapGetters(['sidebarRouters', 'sidebar', 'choicepart']),
|
...mapGetters(['sidebarRouters', 'sidebar', 'choicepart']),
|
||||||
routeList() {
|
routeList() {
|
||||||
// return [this.partList[this.choicepart]]
|
return this.sidebarRouters[this.choicepart]
|
||||||
// return [this.sidebarRouters[29]]
|
|
||||||
return [this.sidebarRouters[this.choicepart]]
|
|
||||||
},
|
},
|
||||||
activeMenu() {
|
activeMenu() {
|
||||||
const route = this.$route;
|
const route = this.$route;
|
||||||
|
@ -19,6 +19,9 @@ const getters = {
|
|||||||
sidebarRouters:state => state.permission.sidebarRouters,
|
sidebarRouters:state => state.permission.sidebarRouters,
|
||||||
choicepart: state => state.app.choicepart,
|
choicepart: state => state.app.choicepart,
|
||||||
// 数据字典
|
// 数据字典
|
||||||
dict_datas: state => state.dict.dictDatas
|
dict_datas: state => state.dict.dictDatas,
|
||||||
|
//ws
|
||||||
|
fanFrequencyInfo: state => state.websocket.FanFrequencyInfo,
|
||||||
|
kilnInfo: state => state.websocket.kilnInfo,
|
||||||
}
|
}
|
||||||
export default getters
|
export default getters
|
||||||
|
@ -6,6 +6,7 @@ import tagsView from './modules/tagsView'
|
|||||||
import permission from './modules/permission'
|
import permission from './modules/permission'
|
||||||
import settings from './modules/settings'
|
import settings from './modules/settings'
|
||||||
import dict from './modules/dict'
|
import dict from './modules/dict'
|
||||||
|
import websocket from './modules/websocket'
|
||||||
import getters from './getters'
|
import getters from './getters'
|
||||||
|
|
||||||
Vue.use(Vuex)
|
Vue.use(Vuex)
|
||||||
@ -17,7 +18,8 @@ const store = new Vuex.Store({
|
|||||||
tagsView,
|
tagsView,
|
||||||
permission,
|
permission,
|
||||||
settings,
|
settings,
|
||||||
dict
|
dict,
|
||||||
|
websocket
|
||||||
},
|
},
|
||||||
getters
|
getters
|
||||||
})
|
})
|
||||||
|
26
src/store/modules/websocket.js
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
const state = {
|
||||||
|
fanFrequencyInfo:{},
|
||||||
|
kilnInfo:{}
|
||||||
|
};
|
||||||
|
const mutations = {
|
||||||
|
SET_FANFREQUENCYINFO: (state, fanFrequencyInfo) => {
|
||||||
|
state.fanFrequencyInfo = fanFrequencyInfo
|
||||||
|
},
|
||||||
|
SET_KILNINFO: (state, kilnInfo) => {
|
||||||
|
state.kilnInfo = kilnInfo
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const actions = {
|
||||||
|
setFanFrequencyInfo({ commit }, fanFrequencyInfo) {
|
||||||
|
commit('SET_FANFREQUENCYINFO', fanFrequencyInfo.payload)
|
||||||
|
},
|
||||||
|
setKilnInfo({ commit }, kilnInfo) {
|
||||||
|
commit('SET_KILNINFO', kilnInfo.payload)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state,
|
||||||
|
mutations,
|
||||||
|
actions,
|
||||||
|
}
|
@ -94,16 +94,22 @@ export const DICT_TYPE = {
|
|||||||
OBJECT_TYPE: 'object_type',
|
OBJECT_TYPE: 'object_type',
|
||||||
STATISTIC_TYPE: 'statistic_type',
|
STATISTIC_TYPE: 'statistic_type',
|
||||||
TIME_DIM: 'time_dim',
|
TIME_DIM: 'time_dim',
|
||||||
|
TABLE_NAME: 'table_name',
|
||||||
|
METHOD: 'method',
|
||||||
|
|
||||||
// ============== ORDER - 订单模块 =============
|
// ============== ORDER - 订单模块 =============
|
||||||
ORDER_STATUS: 'order_status',
|
ORDER_STATUS: 'order_status',
|
||||||
ORDER_ORIGIN: 'order_Origin',
|
ORDER_ORIGIN: 'order_Origin',
|
||||||
ORDER_PRIORITY: 'order_priority',
|
ORDER_PRIORITY: 'order_priority',
|
||||||
PACK_SPEC: 'pack_spec',
|
PACK_SPEC: 'pack_spec',
|
||||||
|
WORK_ORDER_STATUS: 'work_order_status',
|
||||||
|
|
||||||
// ============== EQUIPMENT - 设备模块 =============
|
// ============== EQUIPMENT - 设备模块 =============
|
||||||
MAINTAIN_TYPE: 'maintain_type',
|
MAINTAIN_TYPE: 'maintain_type',
|
||||||
FAULT_LEVEL: 'fault-level',
|
FAULT_LEVEL: 'fault-level',
|
||||||
|
|
||||||
|
// ============== ENVIRONMENTAL - 环保模块 =============
|
||||||
|
ENVIRONMENT_CHECK_UNIT: 'environment_check_unit'
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
const baseURL = process.env.VUE_APP_BASE_API
|
const baseURL = process.env.VUE_APP_BASE_API
|
||||||
|
|
||||||
// 日期格式化
|
// 日期格式化(通用)
|
||||||
export function parseTime(time, pattern) {
|
export function parseTime(time, pattern) {
|
||||||
if (arguments.length === 0 || !time) {
|
if (arguments.length === 0 || !time) {
|
||||||
return null
|
return null
|
||||||
@ -48,6 +48,51 @@ export function parseTime(time, pattern) {
|
|||||||
return time_str
|
return time_str
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 日期格式化(仅适用表格)
|
||||||
|
export function parseTimeTable(pattern) {
|
||||||
|
return function(time){
|
||||||
|
if (arguments.length === 0 || !time) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
|
||||||
|
let date
|
||||||
|
if (typeof time === 'object') {
|
||||||
|
date = time
|
||||||
|
} else {
|
||||||
|
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
|
||||||
|
time = parseInt(time)
|
||||||
|
} else if (typeof time === 'string') {
|
||||||
|
time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.\d{3}/gm),'');
|
||||||
|
}
|
||||||
|
if ((typeof time === 'number') && (time.toString().length === 10)) {
|
||||||
|
time = time * 1000
|
||||||
|
}
|
||||||
|
date = new Date(time)
|
||||||
|
}
|
||||||
|
const formatObj = {
|
||||||
|
y: date.getFullYear(),
|
||||||
|
m: date.getMonth() + 1,
|
||||||
|
d: date.getDate(),
|
||||||
|
h: date.getHours(),
|
||||||
|
i: date.getMinutes(),
|
||||||
|
s: date.getSeconds(),
|
||||||
|
a: date.getDay()
|
||||||
|
}
|
||||||
|
const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
|
||||||
|
let value = formatObj[key]
|
||||||
|
// Note: getDay() returns 0 on Sunday
|
||||||
|
if (key === 'a') {
|
||||||
|
return ['日', '一', '二', '三', '四', '五', '六'][value]
|
||||||
|
}
|
||||||
|
if (result.length > 0 && value < 10) {
|
||||||
|
value = '0' + value
|
||||||
|
}
|
||||||
|
return value || 0
|
||||||
|
})
|
||||||
|
return time_str
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 表单重置
|
// 表单重置
|
||||||
export function resetForm(refName) {
|
export function resetForm(refName) {
|
||||||
if (this.$refs[refName]) {
|
if (this.$refs[refName]) {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Date: 2020-12-14 09:07:03
|
* @Date: 2020-12-14 09:07:03
|
||||||
* @LastEditors: zhp
|
* @LastEditors: zhp
|
||||||
* @LastEditTime: 2023-11-14 10:11:09
|
* @LastEditTime: 2023-12-28 09:00:44
|
||||||
* @FilePath: \mt-bus-fe\src\views\OperationalOverview\components\baseTable.vue
|
* @FilePath: \mt-bus-fe\src\views\OperationalOverview\components\baseTable.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
@ -16,9 +16,8 @@
|
|||||||
style="width: 100%; background: transparent"
|
style="width: 100%; background: transparent"
|
||||||
>
|
>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
v-if="page && limit && showIndex"
|
|
||||||
prop="_pageIndex"
|
prop="_pageIndex"
|
||||||
:label="'tableHeader.index' | i18nFilter"
|
label="序号"
|
||||||
:width="70"
|
:width="70"
|
||||||
align="center"
|
align="center"
|
||||||
/>
|
/>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Author: zhp
|
* @Author: zhp
|
||||||
* @Date: 2023-09-21 09:06:28
|
* @Date: 2023-09-21 09:06:28
|
||||||
* @LastEditTime: 2023-10-16 14:20:45
|
* @LastEditTime: 2023-12-27 18:28:45
|
||||||
* @LastEditors: zhp
|
* @LastEditors: zhp
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
@ -60,98 +60,17 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
chart: null,
|
chart: null,
|
||||||
series: []
|
nameList: [],
|
||||||
|
series: [{
|
||||||
|
type: 'bar',
|
||||||
|
data: [],
|
||||||
|
barWidth: 6
|
||||||
|
}]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
console.log('mounted')
|
console.log('mounted')
|
||||||
console.log('borderRadius: ', this.borderRadius)
|
console.log('borderRadius: ', this.borderRadius)
|
||||||
|
|
||||||
this.series = [
|
|
||||||
{
|
|
||||||
name: this.dataList[0].name,
|
|
||||||
type: 'bar',
|
|
||||||
itemStyle: {
|
|
||||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
||||||
{ offset: 0, color: this.dataList[0].topColor },
|
|
||||||
{ offset: 1, color: this.dataList[0].bottomColor }
|
|
||||||
]),
|
|
||||||
barBorderRadius: this.borderRadius
|
|
||||||
},
|
|
||||||
data: this.dataList[0].data,
|
|
||||||
barWidth: 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: this.dataList[1].name,
|
|
||||||
type: 'bar',
|
|
||||||
itemStyle: {
|
|
||||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
||||||
{ offset: 0, color: this.dataList[1].topColor },
|
|
||||||
{ offset: 1, color: this.dataList[1].bottomColor }
|
|
||||||
]),
|
|
||||||
barBorderRadius: this.borderRadius
|
|
||||||
},
|
|
||||||
data: this.dataList[1].data,
|
|
||||||
barWidth: 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: this.dataList[2].name,
|
|
||||||
type: 'bar',
|
|
||||||
itemStyle: {
|
|
||||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
||||||
{ offset: 0, color: this.dataList[2].topColor },
|
|
||||||
{ offset: 1, color: this.dataList[2].bottomColor }
|
|
||||||
]),
|
|
||||||
// borderRadius: [5, 5, 0, 0]
|
|
||||||
barBorderRadius: this.borderRadius
|
|
||||||
},
|
|
||||||
data: this.dataList[2].data,
|
|
||||||
barWidth: 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: this.dataList[3].name,
|
|
||||||
type: 'bar',
|
|
||||||
itemStyle: {
|
|
||||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
||||||
{ offset: 0, color: this.dataList[3].topColor },
|
|
||||||
{ offset: 1, color: this.dataList[3].bottomColor }
|
|
||||||
]),
|
|
||||||
// borderRadius: [5, 5, 0, 0]
|
|
||||||
barBorderRadius: this.borderRadius
|
|
||||||
},
|
|
||||||
data: this.dataList[3].data,
|
|
||||||
barWidth: 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: this.dataList[4].name,
|
|
||||||
type: 'bar',
|
|
||||||
itemStyle: {
|
|
||||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
||||||
{ offset: 0, color: this.dataList[4].topColor },
|
|
||||||
{ offset: 1, color: this.dataList[4].bottomColor }
|
|
||||||
]),
|
|
||||||
// borderRadius: [5, 5, 0, 0]
|
|
||||||
barBorderRadius: this.borderRadius
|
|
||||||
},
|
|
||||||
data: this.dataList[4].data,
|
|
||||||
barWidth: 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: this.dataList[5].name,
|
|
||||||
type: 'bar',
|
|
||||||
itemStyle: {
|
|
||||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
||||||
{ offset: 0, color: this.dataList[5].topColor },
|
|
||||||
{ offset: 1, color: this.dataList[5].bottomColor }
|
|
||||||
]),
|
|
||||||
// borderRadius: [5, 5, 0, 0]
|
|
||||||
barBorderRadius: this.borderRadius
|
|
||||||
},
|
|
||||||
data: this.dataList[5].data,
|
|
||||||
barWidth: 6
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.initChart()
|
this.initChart()
|
||||||
})
|
})
|
||||||
@ -164,8 +83,50 @@ export default {
|
|||||||
this.chart = null
|
this.chart = null
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
initChart() {
|
initChart(nameList, passRateList, outputNumList) {
|
||||||
console.log(1)
|
let series= [
|
||||||
|
{
|
||||||
|
name: '产线产量',
|
||||||
|
type: 'bar',
|
||||||
|
yAxisIndex: 1,
|
||||||
|
itemStyle: {
|
||||||
|
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
||||||
|
{ offset: 0, color: '#9DD5FF' },
|
||||||
|
{ offset: 1, color: '#1295FF' }
|
||||||
|
])
|
||||||
|
// barBorderRadius: this.borderRadius
|
||||||
|
},
|
||||||
|
barWidth: 12,
|
||||||
|
data: outputNumList
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '产线良品率',
|
||||||
|
type: 'line',
|
||||||
|
yAxisIndex: 0,
|
||||||
|
areaStyle: {
|
||||||
|
opacity: 0.8,
|
||||||
|
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
||||||
|
{
|
||||||
|
offset: 0,
|
||||||
|
color: 'rgba(255, 209, 96, 0.18)'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
offset: 1,
|
||||||
|
color: 'rgba(255, 234, 153, 0)'
|
||||||
|
}
|
||||||
|
])
|
||||||
|
},
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: 'rgba(255, 209, 96, 1)', //改变折线点的颜色
|
||||||
|
lineStyle: {
|
||||||
|
color: 'rgba(255, 209, 96, 1)' //改变折线颜色
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: passRateList
|
||||||
|
}
|
||||||
|
]
|
||||||
const colors = ['#5470C6', '#91CC75', '#EE6666']
|
const colors = ['#5470C6', '#91CC75', '#EE6666']
|
||||||
this.chart = echarts.init(document.getElementById(this.id))
|
this.chart = echarts.init(document.getElementById(this.id))
|
||||||
this.chart.setOption({
|
this.chart.setOption({
|
||||||
@ -177,7 +138,12 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
grid: {
|
grid: {
|
||||||
right: '20%'
|
left: "3%",
|
||||||
|
right: "4%",
|
||||||
|
bottom: "3%",
|
||||||
|
width: 'auto',
|
||||||
|
height: "auto",
|
||||||
|
containLabel: true
|
||||||
},
|
},
|
||||||
legend: {
|
legend: {
|
||||||
data: ['产线产量', '产线良品率'],
|
data: ['产线产量', '产线良品率'],
|
||||||
@ -205,7 +171,7 @@ export default {
|
|||||||
color: '#213259'
|
color: '#213259'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data: ['钢一线', '钢二线', '钢三线', '钢四线', '钢五线', '钢六线', '钢七线', '钢八线']
|
data: nameList
|
||||||
},
|
},
|
||||||
// yAxis: {
|
// yAxis: {
|
||||||
|
|
||||||
@ -236,8 +202,7 @@ export default {
|
|||||||
axisLabel: {
|
axisLabel: {
|
||||||
textStyle: {
|
textStyle: {
|
||||||
color: '#ced1d5', // 坐标值得具体的颜色
|
color: '#ced1d5', // 坐标值得具体的颜色
|
||||||
formatter: '{value} 片'
|
formatter: '{value}%'
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
splitLine: {
|
splitLine: {
|
||||||
@ -295,29 +260,7 @@ export default {
|
|||||||
// },
|
// },
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
series: [
|
series: series
|
||||||
{
|
|
||||||
name: '产线产量',
|
|
||||||
type: 'bar',
|
|
||||||
yAxisIndex: 1,
|
|
||||||
itemStyle: {
|
|
||||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
||||||
{ offset: 0, color: '#9DD5FF' },
|
|
||||||
{ offset: 1, color: '#1295FF' }
|
|
||||||
])
|
|
||||||
// barBorderRadius: this.borderRadius
|
|
||||||
},
|
|
||||||
data: [
|
|
||||||
2032, 3032, 1802, 2932, 2322, 2613, 2873, 2561
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '产线良品率',
|
|
||||||
type: 'line',
|
|
||||||
yAxisIndex: 0,
|
|
||||||
data: [98, 97, 94, 97.6, 98.2, 98.2, 97.4, 98.5]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,113 +41,39 @@ export default {
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
nameList: {
|
// nameList: {
|
||||||
type: Array,
|
// type: Array,
|
||||||
default: () => []
|
// default: () => []
|
||||||
},
|
// },
|
||||||
dataList: {
|
// dataList: {
|
||||||
type: Array,
|
// type: Array,
|
||||||
default: () => []
|
// default: () => []
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
chart: null,
|
chart: null,
|
||||||
series: []
|
nameList: [],
|
||||||
|
series: [{
|
||||||
|
type: 'bar',
|
||||||
|
data: [],
|
||||||
|
barWidth: 6
|
||||||
|
|
||||||
|
}]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
console.log('mounted')
|
console.log('mounted')
|
||||||
console.log('borderRadius: ', this.borderRadius)
|
console.log('borderRadius: ', this.borderRadius)
|
||||||
|
// console.log('33333', this.dataList)
|
||||||
this.series = [
|
// let arr = []
|
||||||
{
|
// this.dataList.forEach(ele => {
|
||||||
name: this.dataList[0].name,
|
// console.log(ele);
|
||||||
type: 'bar',
|
// this.series = []
|
||||||
itemStyle: {
|
|
||||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
||||||
{ offset: 0, color: this.dataList[0].topColor },
|
|
||||||
{ offset: 1, color: this.dataList[0].bottomColor }
|
|
||||||
]),
|
|
||||||
barBorderRadius: this.borderRadius
|
|
||||||
},
|
|
||||||
data: this.dataList[0].data,
|
|
||||||
barWidth: 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: this.dataList[1].name,
|
|
||||||
type: 'bar',
|
|
||||||
itemStyle: {
|
|
||||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
||||||
{ offset: 0, color: this.dataList[1].topColor },
|
|
||||||
{ offset: 1, color: this.dataList[1].bottomColor }
|
|
||||||
]),
|
|
||||||
barBorderRadius: this.borderRadius
|
|
||||||
},
|
|
||||||
data: this.dataList[1].data,
|
|
||||||
barWidth: 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: this.dataList[2].name,
|
|
||||||
type: 'bar',
|
|
||||||
itemStyle: {
|
|
||||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
||||||
{ offset: 0, color: this.dataList[2].topColor },
|
|
||||||
{ offset: 1, color: this.dataList[2].bottomColor }
|
|
||||||
]),
|
|
||||||
// borderRadius: [5, 5, 0, 0]
|
|
||||||
barBorderRadius: this.borderRadius
|
|
||||||
},
|
|
||||||
data: this.dataList[2].data,
|
|
||||||
barWidth: 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: this.dataList[3].name,
|
|
||||||
type: 'bar',
|
|
||||||
itemStyle: {
|
|
||||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
||||||
{ offset: 0, color: this.dataList[3].topColor },
|
|
||||||
{ offset: 1, color: this.dataList[3].bottomColor }
|
|
||||||
]),
|
|
||||||
// borderRadius: [5, 5, 0, 0]
|
|
||||||
barBorderRadius: this.borderRadius
|
|
||||||
},
|
|
||||||
data: this.dataList[3].data,
|
|
||||||
barWidth: 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: this.dataList[4].name,
|
|
||||||
type: 'bar',
|
|
||||||
itemStyle: {
|
|
||||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
||||||
{ offset: 0, color: this.dataList[4].topColor },
|
|
||||||
{ offset: 1, color: this.dataList[4].bottomColor }
|
|
||||||
]),
|
|
||||||
// borderRadius: [5, 5, 0, 0]
|
|
||||||
barBorderRadius: this.borderRadius
|
|
||||||
},
|
|
||||||
data: this.dataList[4].data,
|
|
||||||
barWidth: 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: this.dataList[5].name,
|
|
||||||
type: 'bar',
|
|
||||||
itemStyle: {
|
|
||||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
||||||
{ offset: 0, color: this.dataList[5].topColor },
|
|
||||||
{ offset: 1, color: this.dataList[5].bottomColor }
|
|
||||||
]),
|
|
||||||
// borderRadius: [5, 5, 0, 0]
|
|
||||||
barBorderRadius: this.borderRadius
|
|
||||||
},
|
|
||||||
data: this.dataList[5].data,
|
|
||||||
barWidth: 6
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
this.$nextTick(() => {
|
|
||||||
this.initChart()
|
this.initChart()
|
||||||
})
|
// this.$nextTick(() => {
|
||||||
|
// // this.initChart()
|
||||||
|
// })
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
if (!this.chart) {
|
if (!this.chart) {
|
||||||
@ -157,9 +83,20 @@ export default {
|
|||||||
this.chart = null
|
this.chart = null
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
initChart() {
|
initChart(nameList,dataList) {
|
||||||
console.log(1)
|
// console.log(1)
|
||||||
this.chart = echarts.init(document.getElementById(this.id))
|
this.chart = echarts.init(document.getElementById(this.id))
|
||||||
|
if (dataList.length !== 0) {
|
||||||
|
// this.$set(this.series, "data", dataList);
|
||||||
|
this.series = [{
|
||||||
|
type: 'bar',
|
||||||
|
data: dataList,
|
||||||
|
barWidth: 6
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
if (nameList.length !== 0) {
|
||||||
|
this.nameList = nameList
|
||||||
|
}
|
||||||
this.chart.setOption({
|
this.chart.setOption({
|
||||||
tooltip: {
|
tooltip: {
|
||||||
trigger: 'axis',
|
trigger: 'axis',
|
||||||
@ -216,19 +153,19 @@ export default {
|
|||||||
},
|
},
|
||||||
type: 'value'
|
type: 'value'
|
||||||
},
|
},
|
||||||
legend: {
|
// legend: {
|
||||||
itemHeight: 10,
|
// itemHeight: 10,
|
||||||
itemWidth: 10,
|
// itemWidth: 10,
|
||||||
x: 'center', // 可设定图例在左、右、居中
|
// x: 'center', // 可设定图例在左、右、居中
|
||||||
y: 'top', // 可设定图例在上、下、居中
|
// y: 'top', // 可设定图例在上、下、居中
|
||||||
show: this.showLegend,
|
// show: this.showLegend,
|
||||||
data: this.dataList,
|
// data: this.dataList,
|
||||||
right: '1%',
|
// right: '1%',
|
||||||
textStyle: {
|
// textStyle: {
|
||||||
fontSize: 12 * this.beilv,
|
// fontSize: 12 * this.beilv,
|
||||||
color: '#ced1d5'
|
// color: '#ced1d5'
|
||||||
}
|
// }
|
||||||
},
|
// },
|
||||||
series: this.series
|
series: this.series
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
235
src/views/OperationalOverview/components/pileBarChart.vue
Normal file
@ -0,0 +1,235 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: zhp
|
||||||
|
* @Date: 2023-12-27 13:54:52
|
||||||
|
* @LastEditTime: 2023-12-27 19:47:27
|
||||||
|
* @LastEditors: zhp
|
||||||
|
* @Description:
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div :id="id" :class="className" :style="{ height: height + 'px', width: width }" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import * as echarts from 'echarts';
|
||||||
|
import 'echarts/theme/macarons' // echarts theme
|
||||||
|
import resize from './mixins/resize'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'OverviewBar',
|
||||||
|
mixins: [resize],
|
||||||
|
props: {
|
||||||
|
id: {
|
||||||
|
type: String,
|
||||||
|
default: 'linearBarChart'
|
||||||
|
},
|
||||||
|
className: {
|
||||||
|
type: String,
|
||||||
|
default: 'chart'
|
||||||
|
},
|
||||||
|
width: {
|
||||||
|
type: String,
|
||||||
|
default: '100%'
|
||||||
|
},
|
||||||
|
borderRadius: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [9, 9, 0, 0]
|
||||||
|
},
|
||||||
|
beilv: {
|
||||||
|
type: Number,
|
||||||
|
default: 1
|
||||||
|
},
|
||||||
|
height: {
|
||||||
|
type: Number,
|
||||||
|
default: 200
|
||||||
|
},
|
||||||
|
showLegend: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
// nameList: {
|
||||||
|
// type: Array,
|
||||||
|
// default: () => []
|
||||||
|
// },
|
||||||
|
// dataList: {
|
||||||
|
// type: Array,
|
||||||
|
// default: () => []
|
||||||
|
// }
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
chart: null,
|
||||||
|
nameList: [],
|
||||||
|
series: [{
|
||||||
|
type: 'bar',
|
||||||
|
data: [],
|
||||||
|
barWidth: 6
|
||||||
|
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
console.log('mounted')
|
||||||
|
// console.log('borderRadius: ', this.borderRadius)
|
||||||
|
// console.log('33333', this.dataList)
|
||||||
|
// let arr = []
|
||||||
|
// this.dataList.forEach(ele => {
|
||||||
|
// console.log(ele);
|
||||||
|
// this.series = []
|
||||||
|
this.initChart()
|
||||||
|
// this.$nextTick(() => {
|
||||||
|
// // this.initChart()
|
||||||
|
// })
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
if (!this.chart) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.chart.dispose()
|
||||||
|
this.chart = null
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
initChart(nameList, topNameList, nameWasteList, passRateList, wasteList) {
|
||||||
|
// console.log(1)
|
||||||
|
this.chart = echarts.init(document.getElementById(this.id))
|
||||||
|
let series = [{
|
||||||
|
name: '成品面积',
|
||||||
|
type: 'bar',
|
||||||
|
stack: 'total',
|
||||||
|
// label: {
|
||||||
|
// show: true
|
||||||
|
// },
|
||||||
|
emphasis: {
|
||||||
|
focus: 'series'
|
||||||
|
},
|
||||||
|
data: passRateList,
|
||||||
|
itemStyle: {
|
||||||
|
normal: { color: '#2359ec' }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '废片面积',
|
||||||
|
type: 'bar',
|
||||||
|
stack: 'total',
|
||||||
|
// label: {
|
||||||
|
// show: true
|
||||||
|
// },
|
||||||
|
emphasis: {
|
||||||
|
focus: 'series'
|
||||||
|
},
|
||||||
|
barWidth: 12,
|
||||||
|
data: wasteList,
|
||||||
|
itemStyle: {
|
||||||
|
normal: { color: '#745fe4' }
|
||||||
|
}
|
||||||
|
},]
|
||||||
|
// for (i = 0; i < 5; i++) {
|
||||||
|
// series.push({
|
||||||
|
|
||||||
|
// })
|
||||||
|
// }
|
||||||
|
const yAxisDataLeft = topNameList;
|
||||||
|
// const yAxisDataRight = ['服装', '矿产', '服务业', '建筑业', '金融业'];
|
||||||
|
const yAxisDataRight = nameWasteList
|
||||||
|
this.chart.setOption({
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis',
|
||||||
|
axisPointer: {
|
||||||
|
// Use axis to trigger tooltip
|
||||||
|
type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// legend: {},
|
||||||
|
grid: {
|
||||||
|
left: '3%',
|
||||||
|
right: '4%',
|
||||||
|
bottom: '3%',
|
||||||
|
width: 'auto',
|
||||||
|
height: 'auto',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'value',
|
||||||
|
show: false, // 不显示坐标轴线、坐标轴刻度线和坐标轴上的文字
|
||||||
|
axisTick: {
|
||||||
|
show: false // 不显示坐标轴刻度线
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: false, // 不显示坐标轴线
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
show: false, // 不显示坐标轴上的文字
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
show: false // 不显示网格线
|
||||||
|
},
|
||||||
|
},
|
||||||
|
yAxis: [
|
||||||
|
{
|
||||||
|
inverse: true,
|
||||||
|
data: yAxisDataLeft,
|
||||||
|
axisLabel: {
|
||||||
|
show: true,
|
||||||
|
inside: true,
|
||||||
|
textStyle: {
|
||||||
|
color: '#ffffff',
|
||||||
|
fontSize: 12,
|
||||||
|
align: 'left',
|
||||||
|
},
|
||||||
|
formatter: '{value}\n{a|占位}\n{a|占位}',
|
||||||
|
rich: {
|
||||||
|
a: {
|
||||||
|
color: 'transparent',
|
||||||
|
lineHeight: 24,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//offset: 30,
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inverse: false,
|
||||||
|
data: yAxisDataRight,
|
||||||
|
axisLabel: {
|
||||||
|
inside: true,
|
||||||
|
textStyle: {
|
||||||
|
color: '#ffffff',
|
||||||
|
fontSize: 12,
|
||||||
|
align: 'right',
|
||||||
|
},
|
||||||
|
formatter: '{value}\n{a|占位}\n{a|占位}',
|
||||||
|
rich: {
|
||||||
|
a: {
|
||||||
|
color: 'transparent',
|
||||||
|
lineHeight: 24,
|
||||||
|
fontFamily: 'digital'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
offset: 0,
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
series: series
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
@ -2,21 +2,20 @@
|
|||||||
* @Author: zwq
|
* @Author: zwq
|
||||||
* @Date: 2021-07-19 15:18:30
|
* @Date: 2021-07-19 15:18:30
|
||||||
* @LastEditors: zhp
|
* @LastEditors: zhp
|
||||||
* @LastEditTime: 2023-11-23 11:11:35
|
* @LastEditTime: 2023-12-28 10:22:06
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div id="container" ref="container" class="visual-container" :style="styles">
|
<div id="container" ref="container" class="visual-container" :style="styles">
|
||||||
<el-row
|
<el-row class="container-title" :style="{
|
||||||
class="container-title"
|
|
||||||
:style="{
|
|
||||||
height: 88 + 'px',
|
height: 88 + 'px',
|
||||||
lineHeight: 88 + 'px',
|
lineHeight: 88 + 'px',
|
||||||
fontSize: 31 + 'px'
|
fontSize: 31 + 'px'
|
||||||
}"
|
}">
|
||||||
>
|
|
||||||
<img src="../../assets/img/logo.png" style="width:1.1em;position:relative;top:.4em" alt="">
|
<img src="../../assets/img/logo.png" style="width:1.1em;position:relative;top:.4em" alt="">
|
||||||
许昌安彩深加工看板
|
许昌安彩深加工看板
|
||||||
|
<h3 class="unit">单位:河南汇融科技服务有限公司</h3>
|
||||||
|
<h3 class="time">{{ times }}</h3>
|
||||||
<!-- <el-button
|
<!-- <el-button
|
||||||
type="text"
|
type="text"
|
||||||
class="title-button"
|
class="title-button"
|
||||||
@ -30,37 +29,21 @@
|
|||||||
<el-row class="container-main flex-col" type="flex">
|
<el-row class="container-main flex-col" type="flex">
|
||||||
<el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="15" type="flex" class="flex-1">
|
<el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="15" type="flex" class="flex-1">
|
||||||
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8">
|
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8">
|
||||||
<base-container :title="'设备报警'" :title-icon="'5_1'">
|
<base-container :title="'设备报警'" :title-icon="'eqAlarm'">
|
||||||
<base-table1
|
<base-table1 :page="1" :limit="9" :show-index="false" :table-config="qualityYearTableProps"
|
||||||
:page="1"
|
:table-data="equipmentList" />
|
||||||
:limit="9"
|
|
||||||
:show-index="false"
|
|
||||||
:table-config="qualityYearTableProps"
|
|
||||||
:table-data="qualityYearList"
|
|
||||||
/>
|
|
||||||
</base-container>
|
</base-container>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8">
|
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8">
|
||||||
<base-container :title="'各工序缺陷汇总'" :title-icon="'5_2'">
|
<base-container :title="'各工序缺陷汇总'" :title-icon="'scrap'">
|
||||||
<div class="visual-select">
|
<base-table1 :page="1" :limit="9" :show-index="false" :table-config="qualityMonthTableProps"
|
||||||
<el-select class="coldSelect" v-model="modelMonth" size="mini" placeholder="">
|
:table-data="qualityMonthList" />
|
||||||
<el-option key="1" value="钢1线" label="钢1线" default />
|
|
||||||
</el-select>
|
|
||||||
</div>
|
|
||||||
<base-table1
|
|
||||||
:page="1"
|
|
||||||
:limit="9"
|
|
||||||
:show-index="false"
|
|
||||||
|
|
||||||
:table-config="qualityMonthTableProps"
|
|
||||||
:table-data="qualityMonthList"
|
|
||||||
/>
|
|
||||||
</base-container>
|
</base-container>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8">
|
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8">
|
||||||
<base-container :title="'设备监控'" :title-icon="'5_3'">
|
<base-container :title="'工单监控'" :title-icon="'eqMonitoring'">
|
||||||
<!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
|
<!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
|
||||||
<top-radio-group />
|
<top-radio-group />
|
||||||
</div> -->
|
</div> -->
|
||||||
@ -71,13 +54,15 @@
|
|||||||
<!-- <el-row style="margin-bottom: 1em">
|
<!-- <el-row style="margin-bottom: 1em">
|
||||||
<p class="now-team-title">加工工单进度</p>
|
<p class="now-team-title">加工工单进度</p>
|
||||||
</el-row> -->
|
</el-row> -->
|
||||||
<el-row v-for="op in orderProcessList" :key="op.id" style="margin-bottom: 1em">
|
<el-row v-for="op in orderList" :key="op.id" style="margin-bottom: 1em">
|
||||||
<el-progress :percentage="op.outRate * 100" class="custom-progress-bar" />
|
<!-- <el-col :span="12"> -->
|
||||||
<p v-if="op.outRate === 1" class="now-secondary-title" style="color:#4679FD">
|
<el-progress :percentage="op.progressRate * 100" class="custom-progress-bar" />
|
||||||
|
<!-- <p v-if="op.progressRate === 1" class="now-secondary-title" style="color:#4679FD">
|
||||||
<i class="el-icon-check" />
|
<i class="el-icon-check" />
|
||||||
{{ op.name }}
|
{{ op.name }}
|
||||||
</p>
|
</p> -->
|
||||||
<p v-else class="now-secondary-title">{{ op.name }}</p>
|
<p class="now-secondary-title">{{ op.name }}</p>
|
||||||
|
<!-- </el-col> -->
|
||||||
</el-row>
|
</el-row>
|
||||||
<!-- <el-row>
|
<!-- <el-row>
|
||||||
<el-progress :percentage="100" class="custom-progress-bar" />
|
<el-progress :percentage="100" class="custom-progress-bar" />
|
||||||
@ -110,19 +95,14 @@
|
|||||||
|
|
||||||
<el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="12" type="flex" class="flex-1">
|
<el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="12" type="flex" class="flex-1">
|
||||||
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
|
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
|
||||||
<base-container :height="256" :title="'能源监控'" :title-icon="'5_5'">
|
<base-container :height="256" :title="'能源监控'" :title-icon="'energyMonitoring'">
|
||||||
<div style="width: 45%;position: absolute; top: 3em; right: 3em;">
|
<!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
|
||||||
<top-radio-group />
|
<top-radio-group />
|
||||||
</div>
|
</div> -->
|
||||||
<el-row :gutter="9">
|
<el-row :gutter="9">
|
||||||
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="24">
|
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="24">
|
||||||
<linear-bar-chart
|
<linear-bar-chart ref="EnergyMonitoringChart" :name-list="EnergyMonitoringNameList"
|
||||||
:name-list="cxNameList"
|
:data-list="EnergyMonitoringList" :height="359" />
|
||||||
:data-list="cxDataList"
|
|
||||||
:height="359"
|
|
||||||
|
|
||||||
:show-legend="true"
|
|
||||||
/>
|
|
||||||
</el-col>
|
</el-col>
|
||||||
<!-- <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
|
<!-- <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
|
||||||
<base-table3
|
<base-table3
|
||||||
@ -137,19 +117,13 @@
|
|||||||
</base-container>
|
</base-container>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
|
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
|
||||||
<base-container :height="318 + 338 + 16" :title="'产线产量及良品率'" :title-icon="'5_4'">
|
<base-container :height="318 + 338 + 16" :title="'产线产量及良品率'" :title-icon="'productLine'">
|
||||||
<div style="width: 45%;position: absolute; top: 3em; right: 3em;">
|
<!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
|
||||||
<top-radio-group />
|
<top-radio-group />
|
||||||
</div>
|
</div> -->
|
||||||
<!-- 像下面这样表格里的limit值,也许可以用js动态计算出来 -->
|
<!-- 像下面这样表格里的limit值,也许可以用js动态计算出来 -->
|
||||||
<double-y-chart
|
<double-y-chart ref="productLineChart" :id=" 'doubleYChart' " :name-list="cxNameList"
|
||||||
:id=" 'doubleYChart' "
|
:data-list="cxDataList" :height="359" :show-legend="true" />
|
||||||
:name-list="cxNameList"
|
|
||||||
:data-list="cxDataList"
|
|
||||||
:height="359"
|
|
||||||
|
|
||||||
:show-legend="true"
|
|
||||||
/>
|
|
||||||
</base-container>
|
</base-container>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -424,22 +398,22 @@ const legendData3 = [
|
|||||||
]
|
]
|
||||||
const qualityYearTableProps = [
|
const qualityYearTableProps = [
|
||||||
{
|
{
|
||||||
prop: 'eqName',
|
prop: 'name',
|
||||||
label: '设备名称'
|
label: '设备名称'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'eqCode',
|
prop: 'code',
|
||||||
label: '设备编码'
|
label: '设备编码'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'level',
|
prop: 'status',
|
||||||
label: '报警级别',
|
label: '设备状态',
|
||||||
subcomponent: alarmLevel,
|
// subcomponent: alarmLevel,
|
||||||
align: 'center'
|
align: 'center'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'content',
|
prop: 'error',
|
||||||
label: '报警内容'
|
label: '是否故障'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -463,206 +437,39 @@ const qualityYearList = [
|
|||||||
]
|
]
|
||||||
const qualityMonthTableProps = [
|
const qualityMonthTableProps = [
|
||||||
{
|
{
|
||||||
prop: 'lineName',
|
prop: 'productionLineName',
|
||||||
label: '产线名'
|
label: '产线名'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'process',
|
prop: 'sectionName',
|
||||||
label: '工序'
|
label: '工序'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'eqName',
|
prop: 'count',
|
||||||
label: '设备名'
|
label: '损耗片数'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'eqCode',
|
prop: 'inspectionTypeName',
|
||||||
label: '设备编码'
|
label: '缺陷类型'
|
||||||
},
|
},
|
||||||
{
|
|
||||||
prop: 'long',
|
|
||||||
label: '总运行时长(h)'
|
|
||||||
},
|
|
||||||
// {
|
|
||||||
// prop: 'createTime',
|
|
||||||
// label: '保养时间'
|
|
||||||
// },
|
|
||||||
{
|
|
||||||
prop: 'status',
|
|
||||||
label: '设备状态'
|
|
||||||
}
|
|
||||||
// {
|
|
||||||
// prop: 'nextCreateTime',
|
|
||||||
// label: '下次保养时间'
|
|
||||||
// }
|
|
||||||
// {
|
|
||||||
// prop: 'nextLong',
|
|
||||||
// label: '距离保养时间(天)',
|
|
||||||
// // subcomponent: nextDay,
|
|
||||||
// align: 'center'
|
|
||||||
// }
|
|
||||||
]
|
]
|
||||||
|
|
||||||
const qualityMonthList = [
|
|
||||||
{
|
|
||||||
lineName: '钢一线',
|
|
||||||
process: '41',
|
|
||||||
eqName: '二次清洗机',
|
|
||||||
eqCode: '2312312',
|
|
||||||
long: '200',
|
|
||||||
// createTime: '2021-02-25 12:00:01',
|
|
||||||
status: '报警'
|
|
||||||
// nextCreateTime: '2022-12-25 12:00:01',
|
|
||||||
// nextLong: 365
|
|
||||||
},
|
|
||||||
{
|
|
||||||
lineName: '钢二线',
|
|
||||||
process: '41',
|
|
||||||
eqName: '锻造机',
|
|
||||||
eqCode: '43434',
|
|
||||||
long: '252',
|
|
||||||
// createTime: '2021-11-25 12:00:01',
|
|
||||||
status: '正常'
|
|
||||||
// nextCreateTime: '2022-12-25 12:00:01',
|
|
||||||
// nextLong: 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
lineName: '钢三线',
|
|
||||||
process: '41',
|
|
||||||
eqName: '设备3',
|
|
||||||
eqCode: '23213212',
|
|
||||||
long: '100',
|
|
||||||
// createTime: '2021-10-25 12:00:01',
|
|
||||||
status: '故障停机'
|
|
||||||
// nextCreateTime: '2022-12-25 12:00:01',
|
|
||||||
// nextLong: 24
|
|
||||||
},
|
|
||||||
{
|
|
||||||
lineName: '钢四线',
|
|
||||||
process: '41',
|
|
||||||
eqName: '设备4',
|
|
||||||
eqCode: '23213',
|
|
||||||
long: '322',
|
|
||||||
// createTime: '2021-02-25 12:00:01',
|
|
||||||
status: '故障停机'
|
|
||||||
// nextCreateTime: '2022-12-25 12:00:01',
|
|
||||||
// nextLong: -36
|
|
||||||
},
|
|
||||||
{
|
|
||||||
lineName: '钢五线',
|
|
||||||
process: '41',
|
|
||||||
eqName: '设备5',
|
|
||||||
eqCode: '23121312',
|
|
||||||
long: '232',
|
|
||||||
// createTime: '2021-06-25 12:00:01',
|
|
||||||
status: '待机'
|
|
||||||
// nextCreateTime: '2022-12-25 12:00:01',
|
|
||||||
// nextLong: 111
|
|
||||||
},
|
|
||||||
{
|
|
||||||
lineName: '钢五线',
|
|
||||||
process: '41',
|
|
||||||
eqName: '设备5',
|
|
||||||
eqCode: '23121312',
|
|
||||||
long: '212',
|
|
||||||
// createTime: '2021-06-25 12:00:01',
|
|
||||||
status: '待机'
|
|
||||||
// nextCreateTime: '2022-12-25 12:00:01',
|
|
||||||
// nextLong: 111
|
|
||||||
},
|
|
||||||
{
|
|
||||||
lineName: '钢五线',
|
|
||||||
process: '41',
|
|
||||||
eqName: '设备5',
|
|
||||||
eqCode: '23121312',
|
|
||||||
long: '123',
|
|
||||||
// createTime: '2021-06-25 12:00:01',
|
|
||||||
status: '镀膜机'
|
|
||||||
// nextCreateTime: '2022-12-25 12:00:01',
|
|
||||||
// nextLong: 111
|
|
||||||
},
|
|
||||||
{
|
|
||||||
lineName: '钢五线',
|
|
||||||
process: '41',
|
|
||||||
eqName: '清洗机',
|
|
||||||
eqCode: '23121312',
|
|
||||||
long: '322',
|
|
||||||
// createTime: '2021-06-25 12:00:01',
|
|
||||||
status: 'Remote'
|
|
||||||
// nextCreateTime: '2022-12-25 12:00:01',
|
|
||||||
// nextLong: 111
|
|
||||||
},
|
|
||||||
{
|
|
||||||
lineName: '钢五线',
|
|
||||||
process: '41',
|
|
||||||
eqName: '磨边机',
|
|
||||||
eqCode: '23121312',
|
|
||||||
long: '232',
|
|
||||||
// createTime: '2021-06-25 12:00:01',
|
|
||||||
status: 'Non-scheduled'
|
|
||||||
// nextCreateTime: '2022-12-25 12:00:01',
|
|
||||||
// nextLong: 111
|
|
||||||
},
|
|
||||||
{
|
|
||||||
lineName: '钢五线',
|
|
||||||
process: '41',
|
|
||||||
eqName: '磨边机',
|
|
||||||
eqCode: '23121312',
|
|
||||||
long: '232',
|
|
||||||
// createTime: '2021-06-25 12:00:01',
|
|
||||||
status: 'Non-scheduled'
|
|
||||||
// nextCreateTime: '2022-12-25 12:00:01',
|
|
||||||
// nextLong: 111
|
|
||||||
},
|
|
||||||
{
|
|
||||||
lineName: '钢五线',
|
|
||||||
process: '41',
|
|
||||||
eqName: '磨边机',
|
|
||||||
eqCode: '23121312',
|
|
||||||
long: '232',
|
|
||||||
// createTime: '2021-06-25 12:00:01',
|
|
||||||
status: 'Non-scheduled'
|
|
||||||
// nextCreateTime: '2022-12-25 12:00:01',
|
|
||||||
// nextLong: 111
|
|
||||||
},
|
|
||||||
{
|
|
||||||
lineName: '钢五线',
|
|
||||||
process: '41',
|
|
||||||
eqName: '磨边机',
|
|
||||||
eqCode: '23121312',
|
|
||||||
long: '232',
|
|
||||||
// createTime: '2021-06-25 12:00:01',
|
|
||||||
status: 'Non-scheduled'
|
|
||||||
// nextCreateTime: '2022-12-25 12:00:01',
|
|
||||||
// nextLong: 111
|
|
||||||
},
|
|
||||||
{
|
|
||||||
lineName: '钢五线',
|
|
||||||
process: '41',
|
|
||||||
eqName: '磨边机',
|
|
||||||
eqCode: '23121312',
|
|
||||||
long: '232',
|
|
||||||
// createTime: '2021-06-25 12:00:01',
|
|
||||||
status: 'Non-scheduled'
|
|
||||||
// nextCreateTime: '2022-12-25 12:00:01',
|
|
||||||
// nextLong: 111
|
|
||||||
}
|
|
||||||
]
|
|
||||||
const orderProcessList = [
|
const orderProcessList = [
|
||||||
{
|
{
|
||||||
id: '1', outRate: '.8', name: '凯盛0322'
|
id: '1', outRate: '.8', name: '凯盛0322'
|
||||||
}, {
|
}, {
|
||||||
id: '1', outRate: '.4', name: '光伏玻璃4.0'
|
id: '2', outRate: '.4', name: '光伏玻璃4.0'
|
||||||
}, {
|
}, {
|
||||||
id: '1', outRate: '.5', name: '光伏玻璃3.0'
|
id: '3', outRate: '.5', name: '光伏玻璃3.0'
|
||||||
}, {
|
}, {
|
||||||
id: '1', outRate: '.3', name: '光伏玻璃2.0'
|
id: '4', outRate: '.3', name: '光伏玻璃2.0'
|
||||||
}, {
|
}, {
|
||||||
id: '1', outRate: '.5', name: '光伏玻璃1.0'
|
id: '5', outRate: '.5', name: '光伏玻璃1.0'
|
||||||
}, {
|
}, {
|
||||||
id: '1', outRate: '.8', name: '光伏玻璃'
|
id: '6', outRate: '.8', name: '光伏玻璃'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: '1', outRate: '.8', name: '统计订单'
|
id: '7', outRate: '.8', name: '统计订单'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
export default {
|
export default {
|
||||||
@ -685,10 +492,16 @@ export default {
|
|||||||
beilv2: 1,
|
beilv2: 1,
|
||||||
beilv: 1,
|
beilv: 1,
|
||||||
value: 100,
|
value: 100,
|
||||||
|
orderList:[],
|
||||||
|
times: '',
|
||||||
|
EnergyMonitoringNameList: [],
|
||||||
|
equipmentList:[],
|
||||||
|
EnergyMonitoringList: [],
|
||||||
// offsetWidth: null,
|
// offsetWidth: null,
|
||||||
qualityYearTableProps,
|
qualityYearTableProps,
|
||||||
cxNameList,
|
cxNameList,
|
||||||
cxDataList,
|
cxDataList,
|
||||||
|
productLineList:[],
|
||||||
qualityYearList,
|
qualityYearList,
|
||||||
clientWidth: 0,
|
clientWidth: 0,
|
||||||
containerWidth: 111111,
|
containerWidth: 111111,
|
||||||
@ -696,7 +509,7 @@ export default {
|
|||||||
// orderProcessList: [],
|
// orderProcessList: [],
|
||||||
orderProcessList,
|
orderProcessList,
|
||||||
qualityTableProps1,
|
qualityTableProps1,
|
||||||
qualityMonthList,
|
qualityMonthList:[],
|
||||||
qualityMonthTableProps,
|
qualityMonthTableProps,
|
||||||
modelMonth: '',
|
modelMonth: '',
|
||||||
qualityList1,
|
qualityList1,
|
||||||
@ -742,7 +555,17 @@ export default {
|
|||||||
this.init()
|
this.init()
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.windowWidth(document.documentElement.clientWidth)
|
this.getList()
|
||||||
|
this.initWebSocket()
|
||||||
|
this.getTimes()
|
||||||
|
const _this = this;
|
||||||
|
_this.beilv2 = document.documentElement.clientWidth / 1920
|
||||||
|
window.onresize = () => {
|
||||||
|
return (() => {
|
||||||
|
_this.clientWidth = `${document.documentElement.clientWidth}`
|
||||||
|
this.beilv2 = _this.clientWidth / 1920
|
||||||
|
})()
|
||||||
|
}
|
||||||
// const _this = this;
|
// const _this = this;
|
||||||
// window.onresize = () => {
|
// window.onresize = () => {
|
||||||
// return (() => {
|
// return (() => {
|
||||||
@ -768,6 +591,206 @@ export default {
|
|||||||
// removeEventListener('resize', resizeFun)
|
// removeEventListener('resize', resizeFun)
|
||||||
// },
|
// },
|
||||||
methods: {
|
methods: {
|
||||||
|
getList() {
|
||||||
|
this.$axios.get(
|
||||||
|
'base/core-production-line/listAll',
|
||||||
|
'get',
|
||||||
|
this.queryParams
|
||||||
|
).then((res) => {
|
||||||
|
console.log('11111', res);
|
||||||
|
this.productLineList = res.data
|
||||||
|
})
|
||||||
|
this.$axios.get(
|
||||||
|
'base/quality-inspection-record/dayStatistics',
|
||||||
|
'get',
|
||||||
|
).then((res) => {
|
||||||
|
console.log('11111', res);
|
||||||
|
this.qualityMonthList = res.data
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getTimes() {
|
||||||
|
setInterval(this.getTimesInterval, 1000);
|
||||||
|
},
|
||||||
|
getTimesInterval: function () {
|
||||||
|
let _this = this;
|
||||||
|
let year = new Date().getFullYear(); //获取当前时间的年份
|
||||||
|
let month = new Date().getMonth() + 1; //获取当前时间的月份
|
||||||
|
let day = new Date().getDate(); //获取当前时间的天数
|
||||||
|
let hours = new Date().getHours(); //获取当前时间的小时
|
||||||
|
let minutes = new Date().getMinutes(); //获取当前时间的分数
|
||||||
|
let seconds = new Date().getSeconds(); //获取当前时间的秒数
|
||||||
|
//当小于 10 的是时候,在前面加 0
|
||||||
|
if (hours < 10) {
|
||||||
|
hours = "0" + hours;
|
||||||
|
}
|
||||||
|
if (minutes < 10) {
|
||||||
|
minutes = "0" + minutes;
|
||||||
|
}
|
||||||
|
if (seconds < 10) {
|
||||||
|
seconds = "0" + seconds;
|
||||||
|
}
|
||||||
|
//拼接格式化当前时间
|
||||||
|
this.times = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
|
||||||
|
},
|
||||||
|
initWebSocket() {
|
||||||
|
if (typeof (WebSocket) === 'undefined') {
|
||||||
|
alert('您的浏览器不支持WebSocket')
|
||||||
|
} else {
|
||||||
|
const wsUrl = `ws://192.168.0.33:48082/websocket/message?userId=EN${date}`
|
||||||
|
// const wsUrl = 'ws://192.168.1.104:48082/websocket/message?userId=SJG'
|
||||||
|
let date = new Date().valueOf()
|
||||||
|
console.log(date);
|
||||||
|
const SJGWsUrl = `ws://192.168.0.33:48082/websocket/message?userId=SJG${date}`
|
||||||
|
this.SJGWebsocket = new WebSocket(SJGWsUrl)
|
||||||
|
// 监听 WebSocket 连接
|
||||||
|
this.SJGWebsocket.onopen = this.SJGWebsocketOnOpen
|
||||||
|
// 监听 WebSocket 错误信息
|
||||||
|
this.SJGWebsocket.onerror = this.SJGWebsocketOnError
|
||||||
|
// 监听 WebSocket 消息
|
||||||
|
this.SJGWebsocket.onmessage = this.SJGWebsocketOnMessage
|
||||||
|
// 监听 webSocket 断开信息
|
||||||
|
this.SJGWebsocket.onclose = this.SJGWebsocketClose
|
||||||
|
// const wsUrl = 'ws://192.168.0.33:48082/websocket/message?userId=EN111'
|
||||||
|
// 实例化 WebSocket
|
||||||
|
this.websocket = new WebSocket(wsUrl)
|
||||||
|
// 监听 WebSocket 连接
|
||||||
|
this.websocket.onopen = this.websocketOnOpen
|
||||||
|
// 监听 WebSocket 错误信息
|
||||||
|
this.websocket.onerror = this.websocketOnError
|
||||||
|
// 监听 WebSocket 消息
|
||||||
|
this.websocket.onmessage = this.websocketOnMessage
|
||||||
|
// 监听 webSocket 断开信息
|
||||||
|
this.websocket.onclose = this.websocketClose
|
||||||
|
}
|
||||||
|
},
|
||||||
|
SJGWebsocketOnOpen() {
|
||||||
|
console.log('socket连接成功')
|
||||||
|
console.log(this.SJGWebsocket.onmessage);
|
||||||
|
this.SJGWebsocket.onmessage()
|
||||||
|
},
|
||||||
|
// 连接建立失败重连
|
||||||
|
SJGWebsocketOnError(e) {
|
||||||
|
// console.log('11111', e)
|
||||||
|
this.initWebSocket()
|
||||||
|
},
|
||||||
|
// 数据接收
|
||||||
|
SJGWebsocketOnMessage(e) {
|
||||||
|
// console.log(1111, e)
|
||||||
|
this.wsData = JSON.parse(e.data)
|
||||||
|
// console.log(this.wsData.detData);
|
||||||
|
// console.log('22222', this.wsData.data)
|
||||||
|
if (this.wsData.type === 'order') {
|
||||||
|
this.orderList = this.wsData.detData.map((ele, index) => {
|
||||||
|
if (ele.progressRate != 1) {
|
||||||
|
return {
|
||||||
|
id: ele.id,
|
||||||
|
name: ele.name,
|
||||||
|
progressRate: ele.progressRate.toFixed(3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
console.log(this.orderList)
|
||||||
|
} else if (this.wsData.type === 'equipment') {
|
||||||
|
this.equipmentList = this.wsData.detData.map((ele, index) => {
|
||||||
|
// if (ele.progressRate != 1) {
|
||||||
|
return {
|
||||||
|
id: ele.id,
|
||||||
|
name: ele.name,
|
||||||
|
code: ele.code,
|
||||||
|
status: ele.status,
|
||||||
|
error: ele.error=== true ? '是' : '否'
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
});
|
||||||
|
// console.log(this.orderList)
|
||||||
|
} else if (this.wsData.type === 'productline') {
|
||||||
|
console.log(this.wsData.detData);
|
||||||
|
let nameList = []
|
||||||
|
let passRateList = []
|
||||||
|
let outputNumList = []
|
||||||
|
|
||||||
|
// console.log('2222222222', this.productLineList);
|
||||||
|
this.productLineList.forEach((item) => {
|
||||||
|
this.wsData.detData.forEach((ele) => {
|
||||||
|
if (item.id == ele.productionLineId) {
|
||||||
|
nameList.push(item.name)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
console.log(Array.from(new Set(nameList)))
|
||||||
|
// progressRateList = EnergyNameList
|
||||||
|
// let EnergyDataList = []
|
||||||
|
this.wsData.detData.forEach((ele) => {
|
||||||
|
passRateList.push(ele.passRate *100
|
||||||
|
)
|
||||||
|
})
|
||||||
|
this.wsData.detData.forEach((ele) => {
|
||||||
|
outputNumList.push(ele.outputNum
|
||||||
|
)
|
||||||
|
})
|
||||||
|
// console.log(this.EnergyMonitoringNameList)
|
||||||
|
// console.log(this.EnergyMonitoringList)
|
||||||
|
// this.$nextTick(() => {
|
||||||
|
this.$refs.productLineChart.initChart(nameList, passRateList, outputNumList)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 数据发送
|
||||||
|
// SJGWebsocketSend() {
|
||||||
|
// this.websocket.send('11111')
|
||||||
|
// },
|
||||||
|
// // 关闭
|
||||||
|
// SJGWebsocketClose(e) {
|
||||||
|
// console.log('WebSocket 断开连接', e)
|
||||||
|
// },
|
||||||
|
// // 连接建立之后执行send方法发送数据
|
||||||
|
websocketOnOpen() {
|
||||||
|
console.log('socket连接成功')
|
||||||
|
this.websocket.onmessage()
|
||||||
|
},
|
||||||
|
// 连接建立失败重连
|
||||||
|
websocketOnError(e) {
|
||||||
|
console.log('11111', e)
|
||||||
|
this.initWebSocket()
|
||||||
|
},
|
||||||
|
// 数据接收
|
||||||
|
websocketOnMessage(e) {
|
||||||
|
// console.log(1111, e)
|
||||||
|
this.wsData = JSON.parse(e.data)
|
||||||
|
// console.log('22222', this.wsData.data)
|
||||||
|
if (this.wsData.type === 'EnergyMonitoring') {
|
||||||
|
let EnergyNameList = []
|
||||||
|
this.wsData.data.forEach((ele) => {
|
||||||
|
EnergyNameList.push(ele.lineName)
|
||||||
|
})
|
||||||
|
this.EnergyMonitoringNameList = EnergyNameList
|
||||||
|
let EnergyDataList = []
|
||||||
|
this.wsData.data.forEach((ele) => {
|
||||||
|
EnergyDataList.push(ele.useQuantity
|
||||||
|
// {
|
||||||
|
// type: 'bar',
|
||||||
|
// data: ele.useQuantity,
|
||||||
|
// barWidth: 6
|
||||||
|
|
||||||
|
// }
|
||||||
|
)
|
||||||
|
})
|
||||||
|
this.EnergyMonitoringList = EnergyDataList
|
||||||
|
console.log(EnergyDataList)
|
||||||
|
// console.log(this.EnergyMonitoringNameList)
|
||||||
|
// console.log(this.EnergyMonitoringList)
|
||||||
|
// this.$nextTick(() => {
|
||||||
|
this.$refs.EnergyMonitoringChart.initChart(this.EnergyMonitoringNameList, this.EnergyMonitoringList)
|
||||||
|
// })
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 数据发送
|
||||||
|
websocketSend() {
|
||||||
|
this.websocket.send('11111')
|
||||||
|
},
|
||||||
|
// 关闭
|
||||||
|
websocketClose(e) {
|
||||||
|
// console.log('WebSocket 断开连接', e)
|
||||||
|
},
|
||||||
windowWidth(value) {
|
windowWidth(value) {
|
||||||
this.clientWidth = value
|
this.clientWidth = value
|
||||||
this.beilv2 = this.clientWidth / 1920
|
this.beilv2 = this.clientWidth / 1920
|
||||||
@ -838,7 +861,19 @@ export default {
|
|||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
color: #00fff0;
|
color: #00fff0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
.unit {
|
||||||
|
position: absolute;
|
||||||
|
left: 260px;
|
||||||
|
top: 25px;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.time {
|
||||||
|
position: absolute;
|
||||||
|
left: 1360px;
|
||||||
|
top: 25px;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
.title-button {
|
.title-button {
|
||||||
color: #00fff0;
|
color: #00fff0;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
@ -888,7 +923,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// .container-main {
|
// .container-main {
|
||||||
// padding: 0px;
|
// padding: 5px;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ export default {
|
|||||||
{
|
{
|
||||||
type: 'datePicker',
|
type: 'datePicker',
|
||||||
label: '时间段',
|
label: '时间段',
|
||||||
dateType: 'datetimerange',
|
dateType: 'daterange',
|
||||||
format: 'yyyy-MM-dd',
|
format: 'yyyy-MM-dd',
|
||||||
valueFormat: 'yyyy-MM-dd HH:mm:ss',
|
valueFormat: 'yyyy-MM-dd HH:mm:ss',
|
||||||
rangeSeparator: '-',
|
rangeSeparator: '-',
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* @Author: zwq
|
* @Author: zwq
|
||||||
* @Date: 2021-11-18 14:16:25
|
* @Date: 2021-11-18 14:16:25
|
||||||
* @LastEditors: DY
|
* @LastEditors: DY
|
||||||
* @LastEditTime: 2023-11-22 10:27:50
|
* @LastEditTime: 2023-12-12 16:04:44
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
@ -15,25 +15,26 @@
|
|||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="客户编号" prop="code">
|
<el-form-item label="客户编号" prop="code">
|
||||||
<el-input v-model="dataForm.code" clearable placeholder="请输入客户编号" />
|
<el-input v-model="dataForm.code" :disabled="isdetail" clearable placeholder="请输入客户编号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="客户名称" prop="name">
|
<el-form-item label="客户名称" prop="name">
|
||||||
<el-input v-model="dataForm.name" clearable placeholder="请输入客户名称" />
|
<el-input v-model="dataForm.name" :disabled="isdetail" clearable placeholder="请输入客户名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="联系人" prop="contact">
|
<el-form-item label="联系人" prop="contact">
|
||||||
<el-input v-model="dataForm.contact" clearable placeholder="请输入联系人" />
|
<el-input v-model="dataForm.contact" :disabled="isdetail" clearable placeholder="请输入联系人" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="联系电话" prop="telephone">
|
<el-form-item label="联系电话" prop="telephone">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="dataForm.telephone"
|
v-model="dataForm.telephone"
|
||||||
|
:disabled="isdetail"
|
||||||
maxlength="11"
|
maxlength="11"
|
||||||
placeholder="请输入联系电话" />
|
placeholder="请输入联系电话" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -42,22 +43,34 @@
|
|||||||
<el-form-item label="地址" prop="address">
|
<el-form-item label="地址" prop="address">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="dataForm.address"
|
v-model="dataForm.address"
|
||||||
|
:disabled="isdetail"
|
||||||
placeholder="请输入地址" />
|
placeholder="请输入地址" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="dataForm.remark"
|
v-model="dataForm.remark"
|
||||||
|
:disabled="isdetail"
|
||||||
placeholder="请输入备注" />
|
placeholder="请输入备注" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="特殊要求" prop="specialRequirements">
|
||||||
|
<el-input
|
||||||
|
type="textarea"
|
||||||
|
v-model="dataForm.specialRequirements"
|
||||||
|
:disabled="isdetail"
|
||||||
|
placeholder="请输入备注" />
|
||||||
|
<imageUpload v-model="files" :disabled="isdetail" :limit="5"/>
|
||||||
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import basicAdd from '../../core/mixins/basic-add';
|
import basicAdd from '../../core/mixins/basic-add';
|
||||||
import { createCustomer, updateCustomer, getCustomer, getCode } from "@/api/base/coreCustomer";
|
import { createCustomer, updateCustomer, getCustomer, getCode } from "@/api/base/coreCustomer";
|
||||||
|
import ImageUpload from '@/components/ImageUpload';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
mixins: [basicAdd],
|
mixins: [basicAdd],
|
||||||
|
components: { ImageUpload },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
urlOptions: {
|
urlOptions: {
|
||||||
@ -67,6 +80,8 @@ export default {
|
|||||||
updateURL: updateCustomer,
|
updateURL: updateCustomer,
|
||||||
infoURL: getCustomer
|
infoURL: getCustomer
|
||||||
},
|
},
|
||||||
|
files: [],
|
||||||
|
isdetail: false,
|
||||||
dataForm: {
|
dataForm: {
|
||||||
id: undefined,
|
id: undefined,
|
||||||
code: undefined,
|
code: undefined,
|
||||||
@ -74,7 +89,9 @@ export default {
|
|||||||
telephone: undefined,
|
telephone: undefined,
|
||||||
contact: undefined,
|
contact: undefined,
|
||||||
address: undefined,
|
address: undefined,
|
||||||
remark: undefined
|
remark: undefined,
|
||||||
|
specialRequirements: undefined,
|
||||||
|
files: []
|
||||||
},
|
},
|
||||||
dataRule: {
|
dataRule: {
|
||||||
code: [{ required: true, message: "客户编号不能为空", trigger: "blur" }],
|
code: [{ required: true, message: "客户编号不能为空", trigger: "blur" }],
|
||||||
@ -100,6 +117,66 @@ export default {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {},
|
mounted() {},
|
||||||
methods: {}
|
methods: {
|
||||||
|
init(id, isdetail) {
|
||||||
|
this.dataForm.id = id || "";
|
||||||
|
this.isdetail = isdetail || false;
|
||||||
|
this.visible = true;
|
||||||
|
if (this.urlOptions.getOption) {
|
||||||
|
this.getArr()
|
||||||
|
}
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs["dataForm"].resetFields();
|
||||||
|
if (this.dataForm.id) {
|
||||||
|
this.urlOptions.infoURL(id).then(response => {
|
||||||
|
this.dataForm = response.data;
|
||||||
|
if (this.setData) {
|
||||||
|
this.setDataForm()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
if (this.urlOptions.isGetCode) {
|
||||||
|
this.getCode()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 表单提交
|
||||||
|
dataFormSubmit() {
|
||||||
|
console.log('122', this.files)
|
||||||
|
this.$refs["dataForm"].validate((valid) => {
|
||||||
|
if (!valid) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.dataForm.files = []
|
||||||
|
if (this.files.length > 0) {
|
||||||
|
this.files.forEach(item => {
|
||||||
|
const temp = {
|
||||||
|
fileType: 1,
|
||||||
|
fileUrl: item
|
||||||
|
}
|
||||||
|
this.dataForm.files.push(temp)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改的提交
|
||||||
|
if (this.dataForm.id) {
|
||||||
|
this.urlOptions.updateURL(this.dataForm).then(response => {
|
||||||
|
this.$modal.msgSuccess("修改成功");
|
||||||
|
this.visible = false;
|
||||||
|
this.$emit("refreshDataList");
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 添加的提交
|
||||||
|
this.urlOptions.createURL(this.dataForm).then(response => {
|
||||||
|
this.$modal.msgSuccess("新增成功");
|
||||||
|
this.visible = false;
|
||||||
|
this.$emit("refreshDataList");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
@ -88,6 +88,12 @@ export default {
|
|||||||
},
|
},
|
||||||
tableProps,
|
tableProps,
|
||||||
tableBtn: [
|
tableBtn: [
|
||||||
|
this.$auth.hasPermi(`base:core-customer:detail`)
|
||||||
|
? {
|
||||||
|
type: 'detail',
|
||||||
|
btnName: '详情',
|
||||||
|
}
|
||||||
|
: undefined,
|
||||||
this.$auth.hasPermi(`base:core-customer:update`)
|
this.$auth.hasPermi(`base:core-customer:update`)
|
||||||
? {
|
? {
|
||||||
type: 'edit',
|
type: 'edit',
|
||||||
@ -171,6 +177,13 @@ export default {
|
|||||||
console.log(val);
|
console.log(val);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
otherMethods(val) {
|
||||||
|
this.addOrUpdateVisible = true;
|
||||||
|
this.addOrEditTitle = "详情";
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.addOrUpdate.init(val.data.id, true);
|
||||||
|
});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
@ -248,6 +248,9 @@ export default {
|
|||||||
label: '设备编码',
|
label: '设备编码',
|
||||||
prop: 'code',
|
prop: 'code',
|
||||||
url: '/base/core-equipment/getCode',
|
url: '/base/core-equipment/getCode',
|
||||||
|
rules: [
|
||||||
|
{ required: true, message: '设备编码不能为空', trigger: 'blur' },
|
||||||
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
input: true,
|
input: true,
|
||||||
|
65
src/views/base/coreHotMaterial/SmallTitle.vue
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: zwq
|
||||||
|
* @Date: 2023-08-01 15:27:31
|
||||||
|
* @LastEditors: zwq
|
||||||
|
* @LastEditTime: 2023-08-01 16:25:54
|
||||||
|
* @Description:
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<div :class="[className, { 'p-0': noPadding }]">
|
||||||
|
<slot />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
size: {
|
||||||
|
// 取值范围: xl lg md sm
|
||||||
|
type: String,
|
||||||
|
default: 'de',
|
||||||
|
validator: function (val) {
|
||||||
|
return ['xl', 'lg', 'de', 'md', 'sm'].indexOf(val) !== -1;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
noPadding: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
className: function () {
|
||||||
|
return `${this.size}-title`;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
$pxls: (xl, 28px) (lg, 24px) (de, 20px) (md, 18px) (sm, 16px);
|
||||||
|
$mgr: 8px;
|
||||||
|
@each $size, $height in $pxls {
|
||||||
|
.#{$size}-title {
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: $height;
|
||||||
|
color: #000;
|
||||||
|
font-weight: 500;
|
||||||
|
font-family: '微软雅黑', 'Microsoft YaHei', Arial, Helvetica, sans-serif;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: top;
|
||||||
|
width: 4px;
|
||||||
|
height: $height + 2px;
|
||||||
|
border-radius: 1px;
|
||||||
|
margin-right: $mgr;
|
||||||
|
background-color: #0b58ff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.p-0 {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
</style>
|
@ -2,7 +2,7 @@
|
|||||||
* @Author: zwq
|
* @Author: zwq
|
||||||
* @Date: 2021-11-18 14:16:25
|
* @Date: 2021-11-18 14:16:25
|
||||||
* @LastEditors: DY
|
* @LastEditors: DY
|
||||||
* @LastEditTime: 2023-11-27 20:12:00
|
* @LastEditTime: 2023-12-14 13:52:42
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
@ -15,19 +15,19 @@
|
|||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="原料名称" prop="name">
|
<el-form-item label="原料名称" prop="name">
|
||||||
<el-input v-model="dataForm.name" clearable placeholder="请输入原料名称" />
|
<el-input v-model="dataForm.name" :disabled="isdetail" clearable placeholder="请输入原料名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="原料编号" prop="code">
|
<el-form-item label="原料编号" prop="code">
|
||||||
<el-input v-model="dataForm.code" clearable placeholder="请输入原料编号" />
|
<el-input v-model="dataForm.code" :disabled="isdetail" clearable placeholder="请输入原料编号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="每日消耗量" prop="dailyCost">
|
<el-form-item label="每日消耗量" prop="dailyCost">
|
||||||
<el-input-number v-model="dataForm.dailyCost" controls-position="right" clearable placeholder="请输入每日消耗量" style="width: 100%" />
|
<el-input-number v-model="dataForm.dailyCost" :disabled="isdetail" :min="0" controls-position="right" clearable placeholder="请输入每日消耗量" style="width: 100%" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
@ -35,6 +35,7 @@
|
|||||||
<el-select
|
<el-select
|
||||||
v-model="dataForm.unit"
|
v-model="dataForm.unit"
|
||||||
filterable
|
filterable
|
||||||
|
:disabled="isdetail"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
placeholder="请选择单位">
|
placeholder="请选择单位">
|
||||||
<el-option
|
<el-option
|
||||||
@ -47,17 +48,58 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input v-model="dataForm.remark" clearable placeholder="请输入备注" />
|
<el-input v-model="dataForm.remark" :disabled="isdetail" clearable placeholder="请输入备注" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
<small-title
|
||||||
|
:size="'sm'"
|
||||||
|
style="margin: 16px 0; padding-left: 8px; font-size: 14px"
|
||||||
|
:no-padding="true">
|
||||||
|
质量信息
|
||||||
|
</small-title>
|
||||||
|
<div v-if="!isdetail" class="action_btn">
|
||||||
|
<template>
|
||||||
|
<span style="display: inline-block;">
|
||||||
|
<el-button type="text" @click="addNew()" icon="el-icon-plus">新增</el-button>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
<el-row :gutter="20" v-for="(item, index) in test" :key="index">
|
||||||
|
<el-col :span="9">
|
||||||
|
<el-form-item label="成分" label-width="50px" prop="name1">
|
||||||
|
<el-input v-model="item.name" :disabled="isdetail" :min="0" controls-position="right" clearable placeholder="请输入成分" style="width: 100%" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="15">
|
||||||
|
<el-form-item label="标准含量" prop="unit1">
|
||||||
|
<el-row :gutter="5">
|
||||||
|
<el-col :span="1">
|
||||||
|
<el-tooltip content="如果标准含量不是一个范围,而是一个值,在最大值、最小值中填入相同数字即可。" placement="top">
|
||||||
|
<span style="margin-left: -15px"><i class="el-icon-question"></i></span>
|
||||||
|
</el-tooltip>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="11">
|
||||||
|
<el-input-number v-model="item.minValue" :disabled="isdetail" :min="0" controls-position="right" clearable placeholder="最小值" style="width: 100%" />
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="11">
|
||||||
|
<el-input-number v-model="item.maxValue" :disabled="isdetail" :min="0" controls-position="right" clearable placeholder="最大值" style="width: 100%" />
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
</el-form>
|
</el-form>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import basicAdd from '../../core/mixins/basic-add';
|
import basicAdd from '../../core/mixins/basic-add';
|
||||||
import { createHotMaterial, updateHotMaterial, getHotMaterial, getCode } from "@/api/base/coreHotMaterial";
|
import { createHotMaterial, updateHotMaterial, getHotMaterial, getCode, createHotMaterialCheck, updateHotMaterialCheck, getHotCheckList } from "@/api/base/coreHotMaterial";
|
||||||
import { getDictDatas} from "@/utils/dict";
|
import { getDictDatas} from "@/utils/dict";
|
||||||
|
import SmallTitle from './SmallTitle';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
components: { SmallTitle },
|
||||||
mixins: [basicAdd],
|
mixins: [basicAdd],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -76,8 +118,10 @@ export default {
|
|||||||
dailyCost: undefined,
|
dailyCost: undefined,
|
||||||
remark: undefined
|
remark: undefined
|
||||||
},
|
},
|
||||||
|
test: [],
|
||||||
departmentlList: [],
|
departmentlList: [],
|
||||||
menuOptions: [],
|
menuOptions: [],
|
||||||
|
isdetail: false,
|
||||||
dataRule: {
|
dataRule: {
|
||||||
code: [{ required: true, message: "原料编码不能为空", trigger: "blur" }],
|
code: [{ required: true, message: "原料编码不能为空", trigger: "blur" }],
|
||||||
name: [{ required: true, message: "原料名称不能为空", trigger: "blur" }]
|
name: [{ required: true, message: "原料名称不能为空", trigger: "blur" }]
|
||||||
@ -85,6 +129,100 @@ export default {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {},
|
mounted() {},
|
||||||
methods: {}
|
methods: {
|
||||||
|
init(id, isdetail) {
|
||||||
|
this.test = []
|
||||||
|
this.dataForm.id = id || "";
|
||||||
|
this.isdetail = isdetail || false;
|
||||||
|
this.visible = true;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs["dataForm"].resetFields();
|
||||||
|
if (this.dataForm.id) {
|
||||||
|
this.urlOptions.infoURL(id).then(response => {
|
||||||
|
this.dataForm = response.data;
|
||||||
|
});
|
||||||
|
getHotCheckList({
|
||||||
|
materialId: this.dataForm.id
|
||||||
|
}).then(res => {
|
||||||
|
this.test = res.data
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.test = [
|
||||||
|
{
|
||||||
|
name: null,
|
||||||
|
minValue: undefined,
|
||||||
|
maxValue: undefined
|
||||||
|
}
|
||||||
|
]
|
||||||
|
if (this.urlOptions.isGetCode) {
|
||||||
|
this.getCode()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 表单提交
|
||||||
|
dataFormSubmit() {
|
||||||
|
this.$refs["dataForm"].validate((valid) => {
|
||||||
|
if (!valid) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 修改的提交
|
||||||
|
if (this.dataForm.id) {
|
||||||
|
this.urlOptions.updateURL(this.dataForm).then(response => {
|
||||||
|
if (this.test.length > 1 || this.test[0].name) {
|
||||||
|
this.test.forEach(check => {
|
||||||
|
check.hotMaterialId = this.dataForm.id
|
||||||
|
if (check.id) {
|
||||||
|
updateHotMaterialCheck(check).then(res => {
|
||||||
|
console.log(res)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
createHotMaterialCheck(check).then(res1 => {
|
||||||
|
console.log(res1)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.$modal.msgSuccess("修改成功");
|
||||||
|
this.visible = false;
|
||||||
|
this.$emit("refreshDataList");
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 添加的提交
|
||||||
|
this.urlOptions.createURL(this.dataForm).then(response => {
|
||||||
|
if (this.test.length > 1 || this.test[0].name) {
|
||||||
|
this.test.forEach(check => {
|
||||||
|
check.hotMaterialId = response.data
|
||||||
|
createHotMaterialCheck(check).then(res => {
|
||||||
|
console.log(res)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.$modal.msgSuccess("新增成功");
|
||||||
|
this.visible = false;
|
||||||
|
this.$emit("refreshDataList");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
addNew() {
|
||||||
|
this.test.push({
|
||||||
|
name: null,
|
||||||
|
minValue: undefined,
|
||||||
|
maxValue: undefined
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.action_btn {
|
||||||
|
float: right;
|
||||||
|
margin: -40px 15px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.add {
|
||||||
|
color: #0b58ff;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
@ -83,13 +83,19 @@ export default {
|
|||||||
},
|
},
|
||||||
tableProps,
|
tableProps,
|
||||||
tableBtn: [
|
tableBtn: [
|
||||||
this.$auth.hasPermi(`base:core-hot-material:update`)
|
this.$auth.hasPermi(`base:core-hot-material-check:detail`)
|
||||||
|
? {
|
||||||
|
type: 'detail',
|
||||||
|
btnName: '详情',
|
||||||
|
}
|
||||||
|
: undefined,
|
||||||
|
this.$auth.hasPermi(`base:core-hot-material-check:update`)
|
||||||
? {
|
? {
|
||||||
type: 'edit',
|
type: 'edit',
|
||||||
btnName: '编辑',
|
btnName: '编辑',
|
||||||
}
|
}
|
||||||
: undefined,
|
: undefined,
|
||||||
this.$auth.hasPermi(`base:core-hot-material:delete`)
|
this.$auth.hasPermi(`base:core-hot-material-check:delete`)
|
||||||
? {
|
? {
|
||||||
type: 'delete',
|
type: 'delete',
|
||||||
btnName: '删除',
|
btnName: '删除',
|
||||||
@ -120,7 +126,7 @@ export default {
|
|||||||
type: 'separate',
|
type: 'separate',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: this.$auth.hasPermi('base:core-hot-material:create') ? 'button' : '',
|
type: this.$auth.hasPermi('base:core-hot-material-check:create') ? 'button' : '',
|
||||||
btnName: '新增',
|
btnName: '新增',
|
||||||
name: 'add',
|
name: 'add',
|
||||||
color: 'success',
|
color: 'success',
|
||||||
@ -143,6 +149,14 @@ export default {
|
|||||||
// this.dataListLoading = false;
|
// this.dataListLoading = false;
|
||||||
// });
|
// });
|
||||||
// },
|
// },
|
||||||
|
otherMethods(val) {
|
||||||
|
// 详情
|
||||||
|
this.addOrUpdateVisible = true;
|
||||||
|
this.addOrEditTitle = "详情";
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.addOrUpdate.init(val.data.id, true);
|
||||||
|
});
|
||||||
|
},
|
||||||
buttonClick(val) {
|
buttonClick(val) {
|
||||||
switch (val.btnName) {
|
switch (val.btnName) {
|
||||||
case 'search':
|
case 'search':
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* @Author: zwq
|
* @Author: zwq
|
||||||
* @Date: 2021-11-18 14:16:25
|
* @Date: 2021-11-18 14:16:25
|
||||||
* @LastEditors: DY
|
* @LastEditors: DY
|
||||||
* @LastEditTime: 2023-11-27 20:07:09
|
* @LastEditTime: 2023-12-06 10:36:56
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
@ -91,27 +91,30 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="单位平方数" prop="area">
|
<el-form-item label="单位平方数" prop="area">
|
||||||
<el-input-number v-model="dataForm.area" :precision="2" style="width: 100%" :disabled="isdetail" clearable placeholder="请输入单位平方数" />
|
<el-input-number v-model="dataForm.area" :precision="6" :min="0" style="width: 100%" :disabled="isdetail" clearable placeholder="请输入单位平方数" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="规格" prop="specifications">
|
<el-form-item label="规格" prop="specifications">
|
||||||
<el-input v-model="dataForm.specifications" :disabled="isdetail" clearable placeholder="请输入规格" />
|
<el-input v-model="dataForm.specifications" :disabled="isdetail" @blur="setArea" @clear="clearArea" clearable placeholder="请输入规格" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="产线生产单位用时(S)" prop="processTime">
|
<el-form-item label="产线生产单位用时(S)" prop="processTime">
|
||||||
<el-input v-model.number="dataForm.processTime" type="number" :disabled="isdetail" clearable placeholder="请输入产线生产单位用时" />
|
<el-input v-model.number="dataForm.processTime" :precision="4" :min="0" type="number" :disabled="isdetail" clearable placeholder="请输入产线生产单位用时" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="重量" prop="weight">
|
||||||
<el-input v-model="dataForm.remark" :disabled="isdetail" clearable placeholder="请输入备注" />
|
<el-input-number v-model="dataForm.weight" :precision="6" :min="0" style="width: 100%" :disabled="isdetail" clearable placeholder="请输入重量" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="dataForm.remark" :disabled="isdetail" clearable placeholder="请输入备注" />
|
||||||
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -240,7 +243,8 @@ export default {
|
|||||||
specifications: undefined,
|
specifications: undefined,
|
||||||
processTime: 0,
|
processTime: 0,
|
||||||
remark: undefined,
|
remark: undefined,
|
||||||
unit: undefined
|
unit: undefined,
|
||||||
|
weight: undefined
|
||||||
},
|
},
|
||||||
productAttrList: [],
|
productAttrList: [],
|
||||||
visible: false,
|
visible: false,
|
||||||
@ -257,6 +261,24 @@ export default {
|
|||||||
},
|
},
|
||||||
mounted() {},
|
mounted() {},
|
||||||
methods: {
|
methods: {
|
||||||
|
clearArea() {
|
||||||
|
this.$set(this.dataForm, 'area', 0)
|
||||||
|
this.$set(this.dataForm, 'weight', 0)
|
||||||
|
},
|
||||||
|
setArea() {
|
||||||
|
if (this.dataForm.specifications) {
|
||||||
|
const height = Number(this.dataForm.specifications.slice(2,4))
|
||||||
|
const length = Number(this.dataForm.specifications.slice(4,8))
|
||||||
|
const width = Number(this.dataForm.specifications.slice(8))
|
||||||
|
// this.dataForm.area = length * width
|
||||||
|
// this.dataForm.weight = 2.5 * height * length * width
|
||||||
|
this.$set(this.dataForm, 'area', length * width)
|
||||||
|
this.$set(this.dataForm, 'weight', 2.5 * height * length * width)
|
||||||
|
} else {
|
||||||
|
this.dataForm.area = 0
|
||||||
|
this.dataForm.weight = 0
|
||||||
|
}
|
||||||
|
},
|
||||||
initData() {
|
initData() {
|
||||||
this.productAttrList.splice(0);
|
this.productAttrList.splice(0);
|
||||||
this.listQuery.total = 0;
|
this.listQuery.total = 0;
|
||||||
@ -317,6 +339,10 @@ export default {
|
|||||||
// 获取产品详情
|
// 获取产品详情
|
||||||
this.urlOptions.infoURL(id).then(response => {
|
this.urlOptions.infoURL(id).then(response => {
|
||||||
this.dataForm = response.data
|
this.dataForm = response.data
|
||||||
|
// this.dataForm.area = response.data.area || 0
|
||||||
|
// this.dataForm.weight = response.data.weight || 0
|
||||||
|
// this.dataForm.specifications = response.data.specifications || undefined
|
||||||
|
console.log('11res112', this.dataForm.specifications, this.dataForm.weight, this.dataForm.area)
|
||||||
if (this.dataForm.unit !== undefined) {
|
if (this.dataForm.unit !== undefined) {
|
||||||
this.dataForm.unit = String(this.dataForm.unit)
|
this.dataForm.unit = String(this.dataForm.unit)
|
||||||
}
|
}
|
||||||
@ -339,7 +365,7 @@ export default {
|
|||||||
goback() {
|
goback() {
|
||||||
this.$emit('refreshDataList');
|
this.$emit('refreshDataList');
|
||||||
this.visible = false;
|
this.visible = false;
|
||||||
// this.initData();
|
this.initData();
|
||||||
},
|
},
|
||||||
goEdit() {
|
goEdit() {
|
||||||
this.isdetail = false;
|
this.isdetail = false;
|
||||||
@ -370,6 +396,7 @@ export default {
|
|||||||
this.urlOptions.createURL(this.dataForm).then(response => {
|
this.urlOptions.createURL(this.dataForm).then(response => {
|
||||||
this.$modal.msgSuccess("新增成功");
|
this.$modal.msgSuccess("新增成功");
|
||||||
this.idAttrShow = true
|
this.idAttrShow = true
|
||||||
|
this.dataForm.id = response.data
|
||||||
// this.visible = false;
|
// this.visible = false;
|
||||||
this.$emit("refreshDataList");
|
this.$emit("refreshDataList");
|
||||||
});
|
});
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* @Author: zwq
|
* @Author: zwq
|
||||||
* @Date: 2021-11-18 14:16:25
|
* @Date: 2021-11-18 14:16:25
|
||||||
* @LastEditors: DY
|
* @LastEditors: DY
|
||||||
* @LastEditTime: 2023-11-23 18:45:15
|
* @LastEditTime: 2023-12-26 16:59:25
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
@ -12,86 +12,162 @@
|
|||||||
:wrapper-closable="false"
|
:wrapper-closable="false"
|
||||||
class="drawer"
|
class="drawer"
|
||||||
size="50%"> -->
|
size="50%"> -->
|
||||||
<div class="app-container">
|
<div class="container">
|
||||||
<!-- <small-title slot="title" :no-padding="true">
|
<!-- <small-title slot="title" :no-padding="true">
|
||||||
{{ isdetail ? '详情' : !dataForm.id ? '新增' : '编辑' }}
|
{{ isdetail ? '详情' : !dataForm.id ? '新增' : '编辑' }}
|
||||||
</small-title> -->
|
</small-title> -->
|
||||||
<el-button style="float: right" type="primary" @click="goback()">返回</el-button>
|
<div v-show="workOrderButton.length" class="buttonDiv">
|
||||||
<div v-show="workOrderButton.length">
|
<div style="display: flex; width: 100%;">
|
||||||
<el-button v-for="(work, index) in workOrderButton" :key="index" type="primary" @click="init(work.id, true)">{{ work.name }}</el-button>
|
<el-button v-show="showScroll" type="text" style="width: 30px; background: white; margin-right: 8px" @click="scrollLeft" icon="el-icon-caret-left"></el-button>
|
||||||
|
<div ref="content" class="scrollDiv">
|
||||||
|
<el-button style="border: none" v-for="(work, index) in workOrderButton" :key="index" @click="init(work.id, true)">{{ work.name }}</el-button>
|
||||||
|
</div>
|
||||||
|
<el-button v-show="showScroll" type="text" @click="scrolRight" style="width: 30px; background: white; margin-left: 8px" icon="el-icon-caret-right"></el-button>
|
||||||
|
<el-button style="float: right" type="primary" size="small" plain @click="goback()">
|
||||||
|
<svg-icon icon-class="return"/>返回
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div>
|
<div class="card">
|
||||||
<h1>工单编码:{{ dataForm.code }}</h1>
|
<div class="boxTitle">
|
||||||
|
<span class="blueTitle"></span>
|
||||||
|
<span>工单编码:{{ dataForm.code }}</span>
|
||||||
</div>
|
</div>
|
||||||
<small-title
|
<el-button v-if="!workOrderButton.length" style="float: right" type="primary" size="small" plain @click="goback()">
|
||||||
style="margin: 16px 0; padding-left: 8px"
|
<svg-icon icon-class="return"/>返回
|
||||||
:no-padding="true">
|
</el-button>
|
||||||
基本信息
|
|
||||||
</small-title>
|
|
||||||
<div class="formContent">
|
<div class="formContent">
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="8">工单名称:{{ dataForm.name }}</el-col>
|
<el-col :span="3">
|
||||||
<el-col :span="8">工单来源:{{ dataForm.triggerOrigin === 1 ? 'MES' : dataForm.triggerOrigin === 2 ? 'ERP' : ''}}</el-col>
|
<div class="blodTip">工单名称</div>
|
||||||
<el-col :span="8">所属订单:
|
<div class="lightTip">{{ dataForm.name }}</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<div class="blodTip">工单来源</div>
|
||||||
|
<div class="lightTip">{{ dataForm.triggerOrigin === 1 ? 'MES' : dataForm.triggerOrigin === 2 ? 'ERP' : ''}}</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<div class="blodTip">所属订单</div>
|
||||||
|
<div class="lightTip">
|
||||||
<span v-for="(item, index) in orderList" :key="index" style="margin-right: 10px">{{ item.orderName }}</span>
|
<span v-for="(item, index) in orderList" :key="index" style="margin-right: 10px">{{ item.orderName }}</span>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<div class="blodTip">产品名称</div>
|
||||||
|
<div class="lightTip">{{ dataForm.productName }}</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<div class="blodTip">规 格</div>
|
||||||
|
<div class="lightTip">{{ dataForm.specifications }}</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<div class="blodTip">计划生产数量</div>
|
||||||
|
<div class="lightTip">{{ dataForm.planQuantity }}</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<div class="blodTip">预计用时(小时)</div>
|
||||||
|
<div class="lightTip">{{ dataForm.remainingTime }}</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<div class="blodTip">计划投入数量</div>
|
||||||
|
<div class="lightTip">{{ dataForm.planAssignQuantity }}</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="8">产品名称:{{ dataForm.productName }}</el-col>
|
<el-col :span="3">
|
||||||
<el-col :span="8">规 格:{{ dataForm.specifications }}</el-col>
|
<div class="blodTip">优先级</div>
|
||||||
<el-col :span="8">计划生产数量:{{ dataForm.planQuantity }}</el-col>
|
<div class="lightTip">{{ fitlerP(dataForm.priority) }}</div>
|
||||||
</el-row>
|
</el-col>
|
||||||
<el-row :gutter="20">
|
<el-col :span="3">
|
||||||
<el-col :span="8">预计用时(小时):{{ dataForm.remainingTime }}</el-col>
|
<div class="blodTip">负责人</div>
|
||||||
<el-col :span="8">计划投入数量:{{ dataForm.planAssignQuantity }}</el-col>
|
<div class="lightTip">{{ dataForm.workers }}</div>
|
||||||
<el-col :span="8">优先级:{{ fitlerP(dataForm.priority) }}</el-col>
|
</el-col>
|
||||||
</el-row>
|
<el-col :span="3">
|
||||||
<el-row :gutter="20">
|
<div class="blodTip">关联产线</div>
|
||||||
<el-col :span="8">负责人:{{ dataForm.workers }}</el-col>
|
<div class="lightTip">
|
||||||
<el-col :span="8">关联产线:
|
|
||||||
<span v-for="(item, index) in dataForm.productLineNames" :key="index" style="margin-right: 10px">{{ item }}</span>
|
<span v-for="(item, index) in dataForm.productLineNames" :key="index" style="margin-right: 10px">{{ item }}</span>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<div class="blodTip">物料计算方式</div>
|
||||||
|
<div class="lightTip">{{ dataForm.materialMethod === 1 ? '产品基础' : dataForm.materialMethod === 2 ? '工艺扩展' : '' }}</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<div class="blodTip">关联工艺</div>
|
||||||
|
<div class="lightTip">{{ dataForm.processFlowName }}</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">物料计算方式:{{ dataForm.materialMethod === 1 ? '产品基础' : dataForm.materialMethod === 2 ? '工艺扩展' : '' }}</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row :gutter="20">
|
|
||||||
<el-col :span="8">关联工艺:{{ dataForm.processFlowName }}</el-col>
|
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<small-title
|
<div class="card">
|
||||||
|
<!-- <small-title
|
||||||
style="margin: 16px 0; padding-left: 8px"
|
style="margin: 16px 0; padding-left: 8px"
|
||||||
:no-padding="true">
|
:no-padding="true">
|
||||||
生产信息
|
生产信息
|
||||||
</small-title>
|
</small-title> -->
|
||||||
|
<div class="boxTitle">
|
||||||
|
<span class="blueTitle"></span>
|
||||||
|
<span>生产信息</span>
|
||||||
|
</div>
|
||||||
<div class="formContent">
|
<div class="formContent">
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="8">工单创建时间:{{ parseTime(dataForm.createTime) }}</el-col>
|
<el-col :span="3">
|
||||||
<el-col :span="8">计划开始时间:{{ parseTime(dataForm.planStartTime) }}</el-col>
|
<div class="blodTip">工单创建时间</div>
|
||||||
<el-col :span="8">计划完成时间:{{ parseTime(dataForm.planFinishTime) }}</el-col>
|
<div class="lightTip">{{ parseTime(dataForm.createTime) }}</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<div class="blodTip">计划开始时间</div>
|
||||||
|
<div class="lightTip">{{ parseTime(dataForm.planStartTime) }}</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<div class="blodTip">计划完成时间</div>
|
||||||
|
<div class="lightTip">{{ parseTime(dataForm.planFinishTime) }}</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<div class="blodTip">预计结束时间</div>
|
||||||
|
<div class="lightTip">{{ parseTime(dataForm.computeFinishTime) }}</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<div class="blodTip">实际开始时间</div>
|
||||||
|
<div class="lightTip">{{ parseTime(dataForm.startProduceTime) }}</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<div class="blodTip">实际完成时间</div>
|
||||||
|
<div class="lightTip">{{ parseTime(dataForm.finishProduceTime) }}</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<div class="blodTip">工单状态</div>
|
||||||
|
<div class="lightTip">{{ fitlerS(dataForm.status) }}</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3">
|
||||||
|
<div class="blodTip">实际投入数量</div>
|
||||||
|
<div class="lightTip">{{ dataForm.assignQuantity }}</div>
|
||||||
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="8">预计结束时间:{{ parseTime(dataForm.computeFinishTime) }}</el-col>
|
<el-col :span="3">
|
||||||
<el-col :span="8">实际开始时间:{{ parseTime(dataForm.startProduceTime) }}</el-col>
|
<div class="blodTip">实际生产数量</div>
|
||||||
<el-col :span="8">实际完成时间:{{ parseTime(dataForm.finishProduceTime) }}</el-col>
|
<div class="lightTip">{{ dataForm.actualQuantity }}</div>
|
||||||
</el-row>
|
</el-col>
|
||||||
<el-row :gutter="20">
|
<el-col :span="3">
|
||||||
<el-col :span="8">工单状态:{{ fitlerS(dataForm.status) }}</el-col>
|
<div class="blodTip">废片数量</div>
|
||||||
<el-col :span="8">实际投入数量:{{ dataForm.assignQuantity }}</el-col>
|
<div class="lightTip">{{ dataForm.nokQuantity }}</div>
|
||||||
<el-col :span="8">实际生产数量:{{ dataForm.actualQuantity }}</el-col>
|
</el-col>
|
||||||
</el-row>
|
<el-col :span="3">
|
||||||
<el-row :gutter="20">
|
<div class="blodTip">检测瑕疵数</div>
|
||||||
<el-col :span="8">废片数量:{{ dataForm.nokQuantity }}</el-col>
|
<div class="lightTip">{{ }}</div>
|
||||||
<el-col :span="8">检测瑕疵数:{{ }}</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="attr-list">
|
<div class="card" style="padding-bottom: 16px; margin-bottom: 10px">
|
||||||
<small-title
|
<div class="boxTitle">
|
||||||
style="margin: 16px 0; padding-left: 8px"
|
<span class="blueTitle"></span>
|
||||||
:no-padding="true">
|
<span>订单相关信息</span>
|
||||||
订单相关信息
|
</div>
|
||||||
</small-title>
|
|
||||||
<base-table
|
<base-table
|
||||||
:table-props="tableProps"
|
:table-props="tableProps"
|
||||||
:page="listQuery.pageNo"
|
:page="listQuery.pageNo"
|
||||||
@ -114,12 +190,11 @@
|
|||||||
@pagination="getList" /> -->
|
@pagination="getList" /> -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="attr-list">
|
<div class="card" style="padding-bottom: 16px;">
|
||||||
<small-title
|
<div class="boxTitle">
|
||||||
style="margin: 16px 0; padding-left: 8px"
|
<span class="blueTitle"></span>
|
||||||
:no-padding="true">
|
<span>预计用料信息</span>
|
||||||
预计用料信息
|
</div>
|
||||||
</small-title>
|
|
||||||
<base-table
|
<base-table
|
||||||
:table-props="tableProps1"
|
:table-props="tableProps1"
|
||||||
:page="listQuery1.pageNo"
|
:page="listQuery1.pageNo"
|
||||||
@ -227,8 +302,11 @@ export default {
|
|||||||
// orderArray: [],
|
// orderArray: [],
|
||||||
visible: false,
|
visible: false,
|
||||||
isdetail: false,
|
isdetail: false,
|
||||||
|
showScroll: false,
|
||||||
workOrderButton: [],
|
workOrderButton: [],
|
||||||
processFlowList: []
|
processFlowList: [],
|
||||||
|
timer: null
|
||||||
|
// tableH: this.tableHeight(510) / 2
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@ -244,6 +322,13 @@ export default {
|
|||||||
name: work.name
|
name: work.name
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
const contentRef = this.$refs.content
|
||||||
|
if (contentRef.scrollWidth > contentRef.clientWidth) {
|
||||||
|
this.showScroll = true
|
||||||
|
} else {
|
||||||
|
this.showScroll = false
|
||||||
|
}
|
||||||
|
console.log(contentRef.scrollWidth, contentRef.clientWidth)
|
||||||
this.init(this.workOrderButton[0].id, true)
|
this.init(this.workOrderButton[0].id, true)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
@ -251,6 +336,24 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
scrolRight() {
|
||||||
|
// let contentRef = this.$refs.content
|
||||||
|
// console.log('你好啊啊', contentRef.scrollWidth, contentRef.clientWidth)
|
||||||
|
this.stopScroll()
|
||||||
|
this.timer = setTimeout(() => {
|
||||||
|
this.$refs.content.scrollLeft += 50
|
||||||
|
}, 100)
|
||||||
|
// if (contentRef.scrollWidth > contentRef.clientWi)
|
||||||
|
},
|
||||||
|
scrollLeft() {
|
||||||
|
this.stopScroll()
|
||||||
|
this.timer = setTimeout(() => {
|
||||||
|
this.$refs.content.scrollLeft -= 50
|
||||||
|
}, 100)
|
||||||
|
},
|
||||||
|
stopScroll() {
|
||||||
|
clearTimeout(this.timer)
|
||||||
|
},
|
||||||
getDict() {
|
getDict() {
|
||||||
// 工艺
|
// 工艺
|
||||||
getProcessFlowList().then(res => {
|
getProcessFlowList().then(res => {
|
||||||
@ -391,59 +494,26 @@ export default {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.drawer >>> .el-drawer {
|
.scrollDiv {
|
||||||
border-radius: 8px 0 0 8px;
|
width: 100%;
|
||||||
|
overflow-x: hidden;
|
||||||
|
/* height: 50px; */
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
/* padding-bottom: -10px; */
|
||||||
}
|
}
|
||||||
|
.scrollDiv::-webkit-scrollbar-track {
|
||||||
.drawer >>> .el-form-item__label {
|
display: none;
|
||||||
padding: 0;
|
|
||||||
}
|
}
|
||||||
|
.buttonDiv {
|
||||||
.drawer >>> .el-drawer__header {
|
margin-bottom: 8px;
|
||||||
margin: 0;
|
|
||||||
padding: 32px 32px 24px;
|
|
||||||
border-bottom: 1px solid #dcdfe6;
|
|
||||||
}
|
|
||||||
.drawer >>> .el-drawer__body {
|
|
||||||
flex: 1;
|
|
||||||
height: 1px;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.drawer >>> .content {
|
|
||||||
padding: 10px 24px;
|
|
||||||
flex: 1;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
/* height: 100%; */
|
|
||||||
}
|
|
||||||
|
|
||||||
.drawer >>> .visual-part {
|
|
||||||
flex: 1 auto;
|
|
||||||
max-height: 76vh;
|
|
||||||
overflow: hidden;
|
|
||||||
overflow-y: scroll;
|
|
||||||
padding-right: 10px; /* 调整滚动条样式 */
|
|
||||||
}
|
|
||||||
|
|
||||||
.drawer >>> .el-form,
|
|
||||||
.drawer >>> .attr-list {
|
|
||||||
padding: 0 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.drawer-body__footer {
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-end;
|
|
||||||
padding: 18px;
|
|
||||||
}
|
}
|
||||||
.formContent {
|
.formContent {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
padding: 0 14px;
|
||||||
}
|
}
|
||||||
.action_btn {
|
.action_btn {
|
||||||
float: right;
|
float: right;
|
||||||
@ -453,4 +523,43 @@ export default {
|
|||||||
.add {
|
.add {
|
||||||
color: #0b58ff;
|
color: #0b58ff;
|
||||||
}
|
}
|
||||||
|
.blodTip {
|
||||||
|
height: 16px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: rgba(0,0,0,0.85);
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
.lightTip {
|
||||||
|
/* height: 16px; */
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: rgba(102,102,102,0.75);
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
background-color: rgb(242, 244, 249);
|
||||||
|
}
|
||||||
|
.card {
|
||||||
|
padding: 16px 16px 0 16px;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 9px;
|
||||||
|
}
|
||||||
|
.boxTitle {
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #000000;
|
||||||
|
margin:0 10px 20px 0;
|
||||||
|
}
|
||||||
|
.blueTitle {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
width: 4px;
|
||||||
|
height: 18px;
|
||||||
|
background-color: #0B58FF;
|
||||||
|
border-radius: 1px;
|
||||||
|
margin-right: 8px;
|
||||||
|
vertical-align: bottom;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -140,12 +140,13 @@ export default {
|
|||||||
allocationVisible: false,
|
allocationVisible: false,
|
||||||
tableProps,
|
tableProps,
|
||||||
tableBtn: [
|
tableBtn: [
|
||||||
this.$auth.hasPermi(`base:core-work-order:material`)
|
// this.$auth.hasPermi(`base:core-work-order:material`)
|
||||||
? {
|
// ? {
|
||||||
type: 'material',
|
// type: 'material',
|
||||||
btnName: '原料信息',
|
// btnName: '原料信息',
|
||||||
}
|
// showTip: '预使用原料信息'
|
||||||
: undefined,
|
// }
|
||||||
|
// : undefined,
|
||||||
{
|
{
|
||||||
type: 'active',
|
type: 'active',
|
||||||
btnName: '激活',
|
btnName: '激活',
|
||||||
|
@ -268,17 +268,25 @@ export default {
|
|||||||
// })
|
// })
|
||||||
// } else {
|
// } else {
|
||||||
$('.hiprintEpContainer').empty()
|
$('.hiprintEpContainer').empty()
|
||||||
console.log(this.modelData);
|
console.log(this.modelData || {});
|
||||||
hiprint.PrintElementTypeManager.build('.hiprintEpContainer', provider.value)
|
hiprint.PrintElementTypeManager.build('.hiprintEpContainer', provider.value)
|
||||||
$('.hiprint-printTemplate').empty()
|
$('.hiprint-printTemplate').empty()
|
||||||
// const templates = this.$ls.get('KEY_TEMPLATES', {})
|
// const templates = this.$ls.get('KEY_TEMPLATES', {})
|
||||||
const template = provider.value
|
const template = provider.value
|
||||||
// console.log(template)
|
// console.log(template)
|
||||||
|
if (this.modelData) {
|
||||||
hiprintTemplate = new hiprint.PrintTemplate({
|
hiprintTemplate = new hiprint.PrintTemplate({
|
||||||
template: this.modelData != '' ? JSON.parse(this.modelData) : {},
|
template: JSON.parse(this.modelData),
|
||||||
settingContainer: '#PrintElementOptionSetting',
|
settingContainer: '#PrintElementOptionSetting',
|
||||||
paginationContainer: '.hiprint-printPagination'
|
paginationContainer: '.hiprint-printPagination'
|
||||||
})
|
})
|
||||||
|
} else {
|
||||||
|
hiprintTemplate = new hiprint.PrintTemplate({
|
||||||
|
template:{},
|
||||||
|
settingContainer: '#PrintElementOptionSetting',
|
||||||
|
paginationContainer: '.hiprint-printPagination'
|
||||||
|
})
|
||||||
|
}
|
||||||
// }
|
// }
|
||||||
hiprintTemplate.design('#hiprint-printTemplate')
|
hiprintTemplate.design('#hiprint-printTemplate')
|
||||||
// console.log(hiprintTemplate)
|
// console.log(hiprintTemplate)
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* @Author: zwq
|
* @Author: zwq
|
||||||
* @Date: 2021-11-18 14:16:25
|
* @Date: 2021-11-18 14:16:25
|
||||||
* @LastEditors: DY
|
* @LastEditors: DY
|
||||||
* @LastEditTime: 2023-11-27 15:26:12
|
* @LastEditTime: 2023-12-04 15:10:11
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
@ -377,6 +377,7 @@ export default {
|
|||||||
this.urlOptions.createURL(this.dataForm).then(response => {
|
this.urlOptions.createURL(this.dataForm).then(response => {
|
||||||
this.$modal.msgSuccess("新增成功");
|
this.$modal.msgSuccess("新增成功");
|
||||||
this.idAttrShow = true
|
this.idAttrShow = true
|
||||||
|
this.dataForm.id = response.data
|
||||||
this.$emit("refreshDataList");
|
this.$emit("refreshDataList");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Author: zhp
|
* @Author: zhp
|
||||||
* @Date: 2023-10-17 16:50:19
|
* @Date: 2023-10-17 16:50:19
|
||||||
* @LastEditTime: 2023-10-30 10:47:13
|
* @LastEditTime: 2023-12-01 16:48:53
|
||||||
* @LastEditors: zhp
|
* @LastEditors: zhp
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<el-dialog :visible.sync="visible" :show-close="false" :wrapper-closable="false" width="40%">
|
<el-dialog class="baseDialog" :visible.sync="visible" :show-close="false" :wrapper-closable="false" width="40%" show-close="true">
|
||||||
<small-title slot="title" :no-padding="true">
|
<small-title slot="title" :no-padding="true">
|
||||||
{{ !dataForm.id ? '新增' : '编辑' }}
|
{{ !dataForm.id ? '新增' : '编辑' }}
|
||||||
</small-title>
|
</small-title>
|
||||||
|
<!--
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="visual-part">
|
<div class="visual-part"> -->
|
||||||
<el-form ref="dataForm" :model="dataForm" :rules="dataRule" label-width="100px"
|
<el-form ref="dataForm" :model="dataForm" :rules="dataRule" label-width="100px"
|
||||||
@keyup.enter.native="dataFormSubmit">
|
@keyup.enter.native="dataFormSubmit">
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
@ -96,8 +96,8 @@
|
|||||||
:page-sizes="[5, 10, 15]"
|
:page-sizes="[5, 10, 15]"
|
||||||
@pagination="getList" />
|
@pagination="getList" />
|
||||||
</div> -->
|
</div> -->
|
||||||
</div>
|
<!-- </div> -->
|
||||||
</div>
|
<!-- </div> -->
|
||||||
|
|
||||||
<!-- <div style="position: absolute; bottom: 24px; right: 24px">
|
<!-- <div style="position: absolute; bottom: 24px; right: 24px">
|
||||||
<el-button style="margin-right: 10px" @click="goback()">返回</el-button>
|
<el-button style="margin-right: 10px" @click="goback()">返回</el-button>
|
||||||
@ -416,3 +416,34 @@ export default {
|
|||||||
padding: 18px;
|
padding: 18px;
|
||||||
}
|
}
|
||||||
</style> -->
|
</style> -->
|
||||||
|
<style>
|
||||||
|
|
||||||
|
.baseDialog .el-dialog__header {
|
||||||
|
font-size: 16px;
|
||||||
|
color: rgba(0, 0, 0, 0.85);
|
||||||
|
font-weight: 500;
|
||||||
|
padding: 13px 24px;
|
||||||
|
border-bottom: 1px solid #e9e9e9;
|
||||||
|
}
|
||||||
|
.baseDialog .el-dialog__header .titleStyle::before{
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
width: 4px;
|
||||||
|
height: 16px;
|
||||||
|
background-color: #0B58FF;
|
||||||
|
border-radius: 1px;
|
||||||
|
margin-right: 8px;
|
||||||
|
position: relative;
|
||||||
|
top: 2px;
|
||||||
|
}
|
||||||
|
.baseDialog .el-dialog__body {
|
||||||
|
padding-left: 24px;
|
||||||
|
padding-right: 24px;
|
||||||
|
}
|
||||||
|
.baseDialog .btnTextStyle {
|
||||||
|
letter-spacing:6px;
|
||||||
|
padding: 9px 10px 9px 16px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Author: zhp
|
* @Author: zhp
|
||||||
* @Date: 2023-10-17 16:50:19
|
* @Date: 2023-10-17 16:50:19
|
||||||
* @LastEditTime: 2023-10-30 10:41:07
|
* @LastEditTime: 2023-12-04 13:43:19
|
||||||
* @LastEditors: zhp
|
* @LastEditors: zhp
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<el-dialog :visible.sync="visible" :show-close="false" :wrapper-closable="false" width="30%">
|
<el-dialog class="baseDialog" :visible.sync="visible" :show-close="false" :wrapper-closable="false" width="30%" show-close="true">
|
||||||
<small-title slot="title" :no-padding="true">
|
<small-title slot="title" :no-padding="true">
|
||||||
{{ !dataForm.id ? '新增' : '编辑' }}
|
{{ !dataForm.id ? '新增' : '编辑' }}
|
||||||
</small-title>
|
</small-title>
|
||||||
@ -46,7 +46,7 @@
|
|||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="模板设计" prop="content">
|
<el-form-item label="模板设计" prop="content">
|
||||||
<el-button type="primary" @click="btnClickDesign()">模板设计</el-button>
|
<el-button icon="el-icon-edit" @click="btnClickDesign()">模板设计</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<!-- <el-col :span="12">
|
<!-- <el-col :span="12">
|
||||||
@ -439,3 +439,36 @@ export default {
|
|||||||
padding: 18px;
|
padding: 18px;
|
||||||
}
|
}
|
||||||
</style> -->
|
</style> -->
|
||||||
|
<style>
|
||||||
|
|
||||||
|
|
||||||
|
.baseDialog .el-dialog__header {
|
||||||
|
font-size: 16px;
|
||||||
|
color: rgba(0, 0, 0, 0.85);
|
||||||
|
font-weight: 500;
|
||||||
|
padding: 13px 24px;
|
||||||
|
border-bottom: 1px solid #e9e9e9;
|
||||||
|
}
|
||||||
|
.baseDialog .el-dialog__header .titleStyle::before{
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
width: 4px;
|
||||||
|
height: 16px;
|
||||||
|
background-color: #0B58FF;
|
||||||
|
border-radius: 1px;
|
||||||
|
margin-right: 8px;
|
||||||
|
position: relative;
|
||||||
|
top: 2px;
|
||||||
|
}
|
||||||
|
.baseDialog .el-dialog__body {
|
||||||
|
padding-left: 24px;
|
||||||
|
padding-right: 24px;
|
||||||
|
}
|
||||||
|
.baseDialog .btnTextStyle {
|
||||||
|
letter-spacing:6px;
|
||||||
|
padding: 9px 10px 9px 16px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* @Author: zwq
|
* @Author: zwq
|
||||||
* @Date: 2023-08-01 14:55:51
|
* @Date: 2023-08-01 14:55:51
|
||||||
* @LastEditors: zhp
|
* @LastEditors: zhp
|
||||||
* @LastEditTime: 2023-11-22 14:40:07
|
* @LastEditTime: 2023-12-04 13:38:45
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
@ -71,7 +71,7 @@ export default {
|
|||||||
modelShow:false,
|
modelShow:false,
|
||||||
tableBtn: [
|
tableBtn: [
|
||||||
{
|
{
|
||||||
type: 'print',
|
type: 'detail',
|
||||||
btnName: '查看',
|
btnName: '查看',
|
||||||
},
|
},
|
||||||
this.$auth.hasPermi(`base:packaging-print-model:update`)
|
this.$auth.hasPermi(`base:packaging-print-model:update`)
|
||||||
@ -121,11 +121,12 @@ export default {
|
|||||||
// name: 'reset',
|
// name: 'reset',
|
||||||
// },
|
// },
|
||||||
{
|
{
|
||||||
type: 'separate',
|
type: 'label',
|
||||||
|
label:'标签模板',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: this.$auth.hasPermi('base:packaging-print-model:create') ? 'button' : '',
|
type: this.$auth.hasPermi('base:packaging-print-model:create') ? 'button' : '',
|
||||||
btnName: '新增模板',
|
btnName: '新增',
|
||||||
name: 'add',
|
name: 'add',
|
||||||
color: 'success',
|
color: 'success',
|
||||||
plain: true,
|
plain: true,
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Author: zhp
|
* @Author: zhp
|
||||||
* @Date: 2023-10-17 16:50:19
|
* @Date: 2023-10-17 16:50:19
|
||||||
* @LastEditTime: 2023-10-18 16:07:39
|
* @LastEditTime: 2023-12-04 13:45:45
|
||||||
* @LastEditors: zhp
|
* @LastEditors: zhp
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<el-dialog :visible.sync="visible" :show-close="false" :wrapper-closable="false" width="40%">
|
<el-dialog class="baseDialog" :visible.sync="visible" :show-close="false" :wrapper-closable="false" width="40%" show-close="true">
|
||||||
<small-title slot="title" :no-padding="true">
|
<small-title slot="title" :no-padding="true">
|
||||||
{{ !dataForm.id ? '新增' : '编辑' }}
|
{{ !dataForm.id ? '新增' : '编辑' }}
|
||||||
</small-title>
|
</small-title>
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="visual-part">
|
<div class="visual-part">
|
||||||
<el-form ref="dataForm" :model="dataForm" :rules="dataRule" label-width="100px"
|
<el-form ref="dataForm" :model="dataForm" :rules="dataRule" label-width="auto"
|
||||||
@keyup.enter.native="dataFormSubmit">
|
@keyup.enter.native="dataFormSubmit">
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
@ -345,3 +345,37 @@ export default {
|
|||||||
padding: 18px;
|
padding: 18px;
|
||||||
}
|
}
|
||||||
</style> -->
|
</style> -->
|
||||||
|
<style>
|
||||||
|
|
||||||
|
|
||||||
|
.baseDialog .el-dialog__header {
|
||||||
|
font-size: 16px;
|
||||||
|
color: rgba(0, 0, 0, 0.85);
|
||||||
|
font-weight: 500;
|
||||||
|
padding: 13px 24px;
|
||||||
|
border-bottom: 1px solid #e9e9e9;
|
||||||
|
}
|
||||||
|
.baseDialog .el-dialog__header .titleStyle::before{
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
width: 4px;
|
||||||
|
height: 16px;
|
||||||
|
background-color: #0B58FF;
|
||||||
|
border-radius: 1px;
|
||||||
|
margin-right: 8px;
|
||||||
|
position: relative;
|
||||||
|
top: 2px;
|
||||||
|
}
|
||||||
|
.baseDialog .el-dialog__body {
|
||||||
|
padding-left: 24px;
|
||||||
|
padding-right: 24px;
|
||||||
|
}
|
||||||
|
.baseDialog .btnTextStyle {
|
||||||
|
letter-spacing:6px;
|
||||||
|
padding: 9px 10px 9px 16px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* @Author: zwq
|
* @Author: zwq
|
||||||
* @Date: 2023-08-01 14:55:51
|
* @Date: 2023-08-01 14:55:51
|
||||||
* @LastEditors: zhp
|
* @LastEditors: zhp
|
||||||
* @LastEditTime: 2023-11-22 14:36:33
|
* @LastEditTime: 2023-12-04 13:44:01
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
@ -122,7 +122,8 @@ export default {
|
|||||||
// name: 'reset',
|
// name: 'reset',
|
||||||
// },
|
// },
|
||||||
{
|
{
|
||||||
type: 'separate',
|
type: 'label',
|
||||||
|
label: '标签类型'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: this.$auth.hasPermi('base:packaging-print-type:create') ? 'button' : '',
|
type: this.$auth.hasPermi('base:packaging-print-type:create') ? 'button' : '',
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="navbar">
|
<div class="navbar">
|
||||||
<div style="color: #fff;font-size: 22px; float: left; letter-spacing: 1px; font-weight: 500; padding-left: 24px; marginTop: 13px">
|
<div style="color: #fff;font-size: 22px; float: left; letter-spacing: 2px; font-weight: 500; padding-left: 24px; marginTop: 13px">
|
||||||
<img src="../../../assets/images/cnbm.png" style="width: 26px; height: 26px; position: relative; top: 6px; marginRight: 14px" alt="">
|
<img src="../../../assets/logo/logo.png" style="width: 79px; height: 28px; position: relative; top: 6px; marginRight: 14px" alt="">
|
||||||
MES
|
许昌安彩新能科技有限公司
|
||||||
</div>
|
</div>
|
||||||
<div style="padding-top: 15px; padding-right: 38px;">
|
<div style="padding-top: 15px; padding-right: 38px;">
|
||||||
<navbar-right />
|
<navbar-right />
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<div class="choicepart-container">
|
<div class="choicepart-container">
|
||||||
<navbar />
|
<navbar />
|
||||||
<div class="choicepart-wrapper">
|
<div class="choicepart-wrapper">
|
||||||
<div class="choicepart-box" id="choicepartBox" :style="'transform:scale('+scale+');width:1574px;height:538px;'" v-show="showItem">
|
<div class="choicepart-box" id="choicepartBox" :style="'transform:scale('+scale+');width:1710px;height:538px;'" v-show="showItem">
|
||||||
<div class="choicepart-line1">
|
<div class="choicepart-line1">
|
||||||
<div
|
<div
|
||||||
v-for="(item, index) in menuArr1"
|
v-for="(item, index) in menuArr1"
|
||||||
@ -102,9 +102,7 @@ export default {
|
|||||||
meta: {
|
meta: {
|
||||||
title: ''
|
title: ''
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
],
|
|
||||||
menuArr2: [
|
|
||||||
{
|
{
|
||||||
name: 'Packaging',
|
name: 'Packaging',
|
||||||
title: '包装管理',
|
title: '包装管理',
|
||||||
@ -112,7 +110,9 @@ export default {
|
|||||||
meta: {
|
meta: {
|
||||||
title: ''
|
title: ''
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
|
],
|
||||||
|
menuArr2: [
|
||||||
{
|
{
|
||||||
name: 'Material',
|
name: 'Material',
|
||||||
title: '物料管理',
|
title: '物料管理',
|
||||||
@ -129,17 +129,41 @@ export default {
|
|||||||
title: ''
|
title: ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
// {
|
||||||
|
// name: 'Delivery',
|
||||||
|
// title: '成品发货',
|
||||||
|
// visible: false,
|
||||||
|
// meta: {
|
||||||
|
// title: ''
|
||||||
|
// }
|
||||||
|
// },
|
||||||
{
|
{
|
||||||
name: 'Delivery',
|
name: 'Report',
|
||||||
title: '成品发货',
|
title: '报表管理',
|
||||||
visible: false,
|
visible: false,
|
||||||
meta: {
|
meta: {
|
||||||
title: ''
|
title: ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Report',
|
name: 'Cost',
|
||||||
title: '报表管理',
|
title: '成本管理',
|
||||||
|
visible: false,
|
||||||
|
meta: {
|
||||||
|
title: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'SafetyEnvironmental',
|
||||||
|
title: '安环管理',
|
||||||
|
visible: false,
|
||||||
|
meta: {
|
||||||
|
title: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Databoard',
|
||||||
|
title: '数据驾驶舱',
|
||||||
visible: false,
|
visible: false,
|
||||||
meta: {
|
meta: {
|
||||||
title: ''
|
title: ''
|
||||||
@ -176,7 +200,7 @@ export default {
|
|||||||
console.log(menuList)
|
console.log(menuList)
|
||||||
if (menuList.length > 0) {
|
if (menuList.length > 0) {
|
||||||
for (let i = 0; i < menuList.length; i ++) {
|
for (let i = 0; i < menuList.length; i ++) {
|
||||||
for (let k = 0; k < 7; k++) {
|
for (let k = 0; k < 8; k++) {
|
||||||
if (menuList[i].name === this.menuArr1[k].name) {
|
if (menuList[i].name === this.menuArr1[k].name) {
|
||||||
this.menuArr1[k].visible = true
|
this.menuArr1[k].visible = true
|
||||||
this.menuArr1[k].id = menuList[i].id
|
this.menuArr1[k].id = menuList[i].id
|
||||||
@ -185,7 +209,7 @@ export default {
|
|||||||
this.menuArr1[k].meta = menuList[i].meta
|
this.menuArr1[k].meta = menuList[i].meta
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (let j = 0; j < 6; j++) {
|
for (let j = 0; j < 7; j++) {
|
||||||
if (menuList[i].name === this.menuArr2[j].name) {
|
if (menuList[i].name === this.menuArr2[j].name) {
|
||||||
this.menuArr2[j].visible = true
|
this.menuArr2[j].visible = true
|
||||||
this.menuArr2[j].id = menuList[i].id
|
this.menuArr2[j].id = menuList[i].id
|
||||||
|
@ -84,7 +84,7 @@ export default {
|
|||||||
label: '时间',
|
label: '时间',
|
||||||
dateType: 'monthrange',
|
dateType: 'monthrange',
|
||||||
format: 'yyyy-MM',
|
format: 'yyyy-MM',
|
||||||
valueFormat: 'yyyy-MM-ddTHH:mm:ss',
|
valueFormat: 'timestamp',
|
||||||
rangeSeparator: '-',
|
rangeSeparator: '-',
|
||||||
startPlaceholder: '开始时间',
|
startPlaceholder: '开始时间',
|
||||||
endPlaceholder: '结束时间',
|
endPlaceholder: '结束时间',
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* @Author: zwq
|
* @Author: zwq
|
||||||
* @Date: 2022-08-24 11:19:43
|
* @Date: 2022-08-24 11:19:43
|
||||||
* @LastEditors: zhp
|
* @LastEditors: zhp
|
||||||
* @LastEditTime: 2023-11-06 15:59:53
|
* @LastEditTime: 2023-12-13 15:52:53
|
||||||
* @Description:
|
* @Description:
|
||||||
*/
|
*/
|
||||||
export default {
|
export default {
|
||||||
@ -38,7 +38,7 @@ export default {
|
|||||||
this.$refs["dataForm"].resetFields();
|
this.$refs["dataForm"].resetFields();
|
||||||
if (this.dataForm.id) {
|
if (this.dataForm.id) {
|
||||||
this.urlOptions.infoURL(id).then(response => {
|
this.urlOptions.infoURL(id).then(response => {
|
||||||
this.dataForm = response.data;
|
this.dataForm = response.data
|
||||||
if (this.setData) {
|
if (this.setData) {
|
||||||
this.setDataForm()
|
this.setDataForm()
|
||||||
}
|
}
|
||||||
|
162
src/views/cost/energyCost/index.vue
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<!-- 搜索工作栏 -->
|
||||||
|
<search-bar
|
||||||
|
:formConfigs="formConfig"
|
||||||
|
ref="searchBarForm"
|
||||||
|
@headBtnClick="buttonClick" />
|
||||||
|
|
||||||
|
<!-- 列表 -->
|
||||||
|
<base-table
|
||||||
|
v-loading="dataListLoading"
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.pageNo"
|
||||||
|
:limit="listQuery.pageSize"
|
||||||
|
:table-data="tableData"></base-table>
|
||||||
|
<pagination
|
||||||
|
:limit.sync="listQuery.pageSize"
|
||||||
|
:page.sync="listQuery.pageNo"
|
||||||
|
:total="listQuery.total"
|
||||||
|
@pagination="getDataList" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import basicPage from '../mixins/basic-page';
|
||||||
|
import codeFilter from '../mixins/code-filter';
|
||||||
|
import {
|
||||||
|
getCostEneryAutoPage,
|
||||||
|
exportCostEneryExcel,
|
||||||
|
} from '@/api/cost/costEneryAutoReport';
|
||||||
|
import { getEnergyTypeListAll } from '@/api/base/energyType';
|
||||||
|
import { publicFormatter } from '@/utils/dict';
|
||||||
|
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: 'energyTypeName',
|
||||||
|
label: '能源类型',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'objName',
|
||||||
|
label: '监控对象',
|
||||||
|
filter: (val) => (val != null ? val : '--'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'tableName',
|
||||||
|
label: '水/气表名',
|
||||||
|
filter: (val) => (val != null ? val : '--'),
|
||||||
|
filter: publicFormatter('table_name'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'totalUsed',
|
||||||
|
label: '累计使用量',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'totalCost',
|
||||||
|
label: '总价',
|
||||||
|
align: 'right',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [basicPage],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
urlOptions: {
|
||||||
|
getDataListURL: getCostEneryAutoPage,
|
||||||
|
exportURL: exportCostEneryExcel
|
||||||
|
},
|
||||||
|
tableData: [],
|
||||||
|
tableProps,
|
||||||
|
drawerVisible: false,
|
||||||
|
formConfig: [
|
||||||
|
{
|
||||||
|
type: 'select',
|
||||||
|
label: '能源类型',
|
||||||
|
selectOptions: [],
|
||||||
|
param: 'energyTypeId',
|
||||||
|
filterable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'datePicker',
|
||||||
|
label: '时间范围',
|
||||||
|
dateType: 'daterange',
|
||||||
|
format: 'yyyy-MM-dd',
|
||||||
|
valueFormat: 'timestamp',
|
||||||
|
rangeSeparator: '-',
|
||||||
|
startPlaceholder: '开始时间',
|
||||||
|
endPlaceholder: '结束时间',
|
||||||
|
param: 'searchTime',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'button',
|
||||||
|
btnName: '查询',
|
||||||
|
name: 'search',
|
||||||
|
color: 'primary',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: this.$auth.hasPermi('cost:energyCost:export')
|
||||||
|
? 'button'
|
||||||
|
: '',
|
||||||
|
btnName: '导出',
|
||||||
|
name: 'export',
|
||||||
|
color: 'primary',
|
||||||
|
plain: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {},
|
||||||
|
created() {
|
||||||
|
getEnergyTypeListAll().then((response) => {
|
||||||
|
this.formConfig[0].selectOptions = response.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 获取数据列表
|
||||||
|
getDataList() {
|
||||||
|
if(this.listQuery.searchTime){
|
||||||
|
this.dataListLoading = true;
|
||||||
|
this.urlOptions.getDataListURL(this.listQuery).then(response => {
|
||||||
|
if(response.hasOwnProperty('data')){
|
||||||
|
this.tableData = response.data.list;
|
||||||
|
this.listQuery.total = response.data.total;
|
||||||
|
}
|
||||||
|
this.dataListLoading = false;
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
this.$message.warning('请选择时间范围')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
buttonClick(val) {
|
||||||
|
switch (val.btnName) {
|
||||||
|
case 'search':
|
||||||
|
this.listQuery.pageNo = 1;
|
||||||
|
this.listQuery.pageSize = 10;
|
||||||
|
this.listQuery.energyTypeId = val.energyTypeId;
|
||||||
|
this.listQuery.searchTime = val.searchTime ? val.searchTime[0] : null;
|
||||||
|
this.listQuery.startTime = val.searchTime ? val.searchTime[0] : null;
|
||||||
|
this.listQuery.endTime = val.searchTime ? val.searchTime[1] : null;
|
||||||
|
this.getDataList();
|
||||||
|
break;
|
||||||
|
case 'export':
|
||||||
|
const data = {
|
||||||
|
energyTypeId:val.energyTypeId,
|
||||||
|
startTime : val.searchTime ? val.searchTime[0] : null,
|
||||||
|
endTime : val.searchTime ? val.searchTime[1] : null,
|
||||||
|
}
|
||||||
|
this.handleExport(data);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log(val);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.app-container .el-table .el-table__cell {
|
||||||
|
padding: 0;
|
||||||
|
height: 35px;
|
||||||
|
}
|
||||||
|
</style>
|
180
src/views/cost/energyCostHis/index.vue
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<!-- 搜索工作栏 -->
|
||||||
|
<search-bar
|
||||||
|
:formConfigs="formConfig"
|
||||||
|
ref="searchBarForm"
|
||||||
|
@headBtnClick="buttonClick" />
|
||||||
|
|
||||||
|
<!-- 列表 -->
|
||||||
|
<base-table
|
||||||
|
v-loading="dataListLoading"
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.pageNo"
|
||||||
|
:limit="listQuery.pageSize"
|
||||||
|
:table-data="tableData"></base-table>
|
||||||
|
<pagination
|
||||||
|
:limit.sync="listQuery.pageSize"
|
||||||
|
:page.sync="listQuery.pageNo"
|
||||||
|
:total="listQuery.total"
|
||||||
|
@pagination="getDataList" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import basicPage from '../mixins/basic-page';
|
||||||
|
import codeFilter from '../mixins/code-filter';
|
||||||
|
import {
|
||||||
|
getCostEneryAutoReportPage,
|
||||||
|
exportCostEneryAutoReportExcel,
|
||||||
|
} from '@/api/cost/costEneryAutoReport';
|
||||||
|
import { getEnergyTypeListAll } from '@/api/base/energyType';
|
||||||
|
import { publicFormatter } from '@/utils/dict';
|
||||||
|
import moment from 'moment';
|
||||||
|
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: 'reportType',
|
||||||
|
label: '维度',
|
||||||
|
filter: codeFilter('reportType'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'reportName',
|
||||||
|
label: '时间',
|
||||||
|
minWidth: 150,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'energyType',
|
||||||
|
label: '能源类型',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'objName',
|
||||||
|
label: '监控对象',
|
||||||
|
filter: (val) => (val != null ? val : '--'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'tableName',
|
||||||
|
label: '水/气表名',
|
||||||
|
filter: (val) => (val != null ? val : '--'),
|
||||||
|
filter: publicFormatter('table_name'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'totalUsed',
|
||||||
|
label: '累计使用量',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'totalCost',
|
||||||
|
label: '总价',
|
||||||
|
align: 'right',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [basicPage],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
urlOptions: {
|
||||||
|
getDataListURL: getCostEneryAutoReportPage,
|
||||||
|
exportURL: exportCostEneryAutoReportExcel,
|
||||||
|
},
|
||||||
|
tableData: [],
|
||||||
|
tableProps,
|
||||||
|
drawerVisible: false,
|
||||||
|
formConfig: [
|
||||||
|
{
|
||||||
|
type: 'select',
|
||||||
|
label: '维度',
|
||||||
|
selectOptions: [
|
||||||
|
{ id: 2, name: '日' },
|
||||||
|
{ id: 3, name: '周' },
|
||||||
|
{ id: 4, name: '月' },
|
||||||
|
{ id: 5, name: '年' },
|
||||||
|
],
|
||||||
|
param: 'reportType',
|
||||||
|
filterable: true,
|
||||||
|
clearable: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'select',
|
||||||
|
label: '能源类型',
|
||||||
|
selectOptions: [],
|
||||||
|
param: 'energyTypeId',
|
||||||
|
filterable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'datePicker',
|
||||||
|
label: '时间范围',
|
||||||
|
dateType: 'daterange',
|
||||||
|
format: 'yyyy-MM-dd',
|
||||||
|
valueFormat: 'yyyy-MM-dd',
|
||||||
|
rangeSeparator: '-',
|
||||||
|
startPlaceholder: '开始时间',
|
||||||
|
endPlaceholder: '结束时间',
|
||||||
|
param: 'searchTime',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'button',
|
||||||
|
btnName: '查询',
|
||||||
|
name: 'search',
|
||||||
|
color: 'primary',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: this.$auth.hasPermi('cost:energyCostHis:export')
|
||||||
|
? 'button'
|
||||||
|
: '',
|
||||||
|
btnName: '导出',
|
||||||
|
name: 'export',
|
||||||
|
color: 'primary',
|
||||||
|
plain: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {},
|
||||||
|
created() {
|
||||||
|
getEnergyTypeListAll().then((response) => {
|
||||||
|
this.formConfig[1].selectOptions = response.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
buttonClick(val) {
|
||||||
|
switch (val.btnName) {
|
||||||
|
case 'search':
|
||||||
|
this.listQuery.pageNo = 1;
|
||||||
|
this.listQuery.pageSize = 10;
|
||||||
|
this.listQuery.reportType = val.reportType;
|
||||||
|
this.listQuery.energyTypeId = val.energyTypeId;
|
||||||
|
this.listQuery.reportTime = val.searchTime
|
||||||
|
? [
|
||||||
|
moment(val.searchTime[0]).startOf('day').format('x'),
|
||||||
|
moment(val.searchTime[1]).endOf('day').format('x'),
|
||||||
|
]
|
||||||
|
: null;
|
||||||
|
this.getDataList();
|
||||||
|
break;
|
||||||
|
case 'export':
|
||||||
|
const data = {
|
||||||
|
reportType: val.reportType,
|
||||||
|
energyTypeId: val.energyTypeId,
|
||||||
|
reportTime: val.searchTime
|
||||||
|
? [
|
||||||
|
moment(val.searchTime[0]).startOf('day').format('x'),
|
||||||
|
moment(val.searchTime[1]).endOf('day').format('x'),
|
||||||
|
]
|
||||||
|
: null,
|
||||||
|
};
|
||||||
|
this.handleExport(data);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log(val);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.app-container .el-table .el-table__cell {
|
||||||
|
padding: 0;
|
||||||
|
height: 35px;
|
||||||
|
}
|
||||||
|
</style>
|
121
src/views/cost/mixins/basic-add.js
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
/*
|
||||||
|
* @Author: zwq
|
||||||
|
* @Date: 2022-08-24 11:19:43
|
||||||
|
* @LastEditors: zwq
|
||||||
|
* @LastEditTime: 2023-11-02 15:33:39
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
import { listData } from "@/api/system/dict/data";
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
/* eslint-disable */
|
||||||
|
return {
|
||||||
|
urlOptions: {
|
||||||
|
createURL: '',
|
||||||
|
updateURL: '',
|
||||||
|
infoURL: '',
|
||||||
|
codeURL: '',
|
||||||
|
getOption: false, //是否加载获取下拉框方法
|
||||||
|
isGetCode: false, //是否加载获取code方法
|
||||||
|
getDictList: false, //是否加载获取数据字典方法
|
||||||
|
optionArrUrl: [], //需要获取下拉框的方法数组
|
||||||
|
optionArr: {}, //需要获取下拉框的方法数组的返回结果
|
||||||
|
dictList: {}, //需要获取数据字典的方法数组的返回结果
|
||||||
|
},
|
||||||
|
visible: false,
|
||||||
|
setData: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
},
|
||||||
|
activated() {
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init(id) {
|
||||||
|
this.dataForm.id = id || "";
|
||||||
|
this.visible = true;
|
||||||
|
if (this.urlOptions.getOption) {
|
||||||
|
this.getArr()
|
||||||
|
}
|
||||||
|
if (this.urlOptions.getDictList) {
|
||||||
|
this.getDict()
|
||||||
|
}
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs["dataForm"].resetFields();
|
||||||
|
if (this.dataForm.id) {
|
||||||
|
this.urlOptions.infoURL(id).then(response => {
|
||||||
|
this.dataForm = response.data;
|
||||||
|
if (this.setData) {
|
||||||
|
this.setDataForm()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
if (this.urlOptions.isGetCode) {
|
||||||
|
this.getCode()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getCode() {
|
||||||
|
this.urlOptions.codeURL()
|
||||||
|
.then(({ data: res }) => {
|
||||||
|
this.dataForm.code = res;
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
},
|
||||||
|
getArr() {
|
||||||
|
const params = {
|
||||||
|
pageSize: 100,
|
||||||
|
pageNo: 1,
|
||||||
|
}
|
||||||
|
this.urlOptions.optionArrUrl.forEach((item, index) => {
|
||||||
|
item(params).then(({ data: res }) => {
|
||||||
|
this.$set(this.urlOptions.optionArr, `arr${index}`, res.list)
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
/** 查询字典数据列表 */
|
||||||
|
getDict() {
|
||||||
|
this.nameList.forEach((item,index)=>{
|
||||||
|
const queryParams = {
|
||||||
|
pageNo: 1,
|
||||||
|
pageSize: 99,
|
||||||
|
dictType: item,
|
||||||
|
}
|
||||||
|
listData(queryParams).then(response => {
|
||||||
|
this.$set(this.urlOptions.dictList, `dict${index}`, response.data.list)
|
||||||
|
});
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 表单提交
|
||||||
|
dataFormSubmit() {
|
||||||
|
this.$refs["dataForm"].validate((valid) => {
|
||||||
|
if (!valid) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 修改的提交
|
||||||
|
if (this.dataForm.id) {
|
||||||
|
this.urlOptions.updateURL(this.dataForm).then(response => {
|
||||||
|
this.$modal.msgSuccess("修改成功");
|
||||||
|
this.visible = false;
|
||||||
|
this.$emit("refreshDataList");
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 添加的提交
|
||||||
|
this.urlOptions.createURL(this.dataForm).then(response => {
|
||||||
|
this.$modal.msgSuccess("新增成功");
|
||||||
|
this.visible = false;
|
||||||
|
this.$emit("refreshDataList");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
formClear() {
|
||||||
|
if (this.$refs.dataForm!==undefined) {
|
||||||
|
this.$refs.dataForm.resetFields();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
172
src/views/cost/mixins/basic-page.js
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
/*
|
||||||
|
* @Author: zwq
|
||||||
|
* @Date: 2022-08-24 11:19:43
|
||||||
|
* @LastEditors: zwq
|
||||||
|
* @LastEditTime: 2023-12-07 09:35:33
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
/* eslint-disable */
|
||||||
|
return {
|
||||||
|
urlOptions: {
|
||||||
|
getDataListURL: '',
|
||||||
|
deleteURL: '',
|
||||||
|
statusUrl: '',
|
||||||
|
exportURL: ''
|
||||||
|
},
|
||||||
|
tableData: [],
|
||||||
|
listQuery: {
|
||||||
|
pageSize: 10,
|
||||||
|
pageNo: 1,
|
||||||
|
total: 1,
|
||||||
|
},
|
||||||
|
exportLoading: false,
|
||||||
|
dataListLoading: false,
|
||||||
|
addOrEditTitle: '',
|
||||||
|
addOrUpdateVisible: false,
|
||||||
|
addOrUpdate:'addOrUpdate'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getDataList()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 获取数据列表
|
||||||
|
getDataList() {
|
||||||
|
this.dataListLoading = true;
|
||||||
|
this.urlOptions.getDataListURL(this.listQuery).then(response => {
|
||||||
|
if(response.hasOwnProperty('data')){
|
||||||
|
this.tableData = response.data.list;
|
||||||
|
this.listQuery.total = response.data.total;
|
||||||
|
}
|
||||||
|
this.dataListLoading = false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 每页数
|
||||||
|
sizeChangeHandle(val) {
|
||||||
|
this.listQuery.pageSize = val;
|
||||||
|
this.listQuery.pageNo = 1;
|
||||||
|
this.getDataList();
|
||||||
|
},
|
||||||
|
// 当前页
|
||||||
|
currentChangeHandle(val) {
|
||||||
|
this.listQuery.pageNo = val;
|
||||||
|
this.getDataList();
|
||||||
|
},
|
||||||
|
// 新增 / 修改
|
||||||
|
addOrUpdateHandle(id) {
|
||||||
|
this.addOrUpdateVisible = true;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.addOrUpdate.init(id);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
cancel(id) {
|
||||||
|
this.$refs["popover-" + id].showPopper = false;
|
||||||
|
},
|
||||||
|
//改变状态
|
||||||
|
changeStatus(id) {
|
||||||
|
this.$http
|
||||||
|
.post(this.urlOptions.statusUrl, { id })
|
||||||
|
.then(({ data: res }) => {
|
||||||
|
if (res.code !== 0) {
|
||||||
|
return this.$message.error(res.msg);
|
||||||
|
}
|
||||||
|
this.$refs["popover-" + id].showPopper = false;
|
||||||
|
this.$message({
|
||||||
|
message: this.$t("prompt.success"),
|
||||||
|
type: "success",
|
||||||
|
duration: 500,
|
||||||
|
onClose: () => {
|
||||||
|
this.getDataList();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => { });
|
||||||
|
},
|
||||||
|
//tableBtn点击
|
||||||
|
handleClick(val) {
|
||||||
|
if (val.type === "edit") {
|
||||||
|
this.addOrUpdateVisible = true;
|
||||||
|
this.addOrEditTitle = "编辑";
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.addOrUpdate.init(val.data.id);
|
||||||
|
});
|
||||||
|
} else if (val.type === "delete") {
|
||||||
|
this.deleteHandle(val.data.id, val.data.name, val.data._pageIndex)
|
||||||
|
} else if (val.type === "change") {
|
||||||
|
this.changeStatus(val.data.id)
|
||||||
|
} else {
|
||||||
|
this.otherMethods(val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 删除
|
||||||
|
deleteHandle(id, name, index) {
|
||||||
|
this.$confirm(`是否确认删除${name ? '名称为"' + name + '"' : '序号为"' + index + '"'}的数据项?`, "系统提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
this.urlOptions.deleteURL(id).then(({ data }) => {
|
||||||
|
this.$message({
|
||||||
|
message: "操作成功",
|
||||||
|
type: "success",
|
||||||
|
duration: 1500,
|
||||||
|
onClose: () => {
|
||||||
|
this.getDataList();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => { });
|
||||||
|
},
|
||||||
|
//search-bar点击
|
||||||
|
buttonClick(val) {
|
||||||
|
switch (val.btnName) {
|
||||||
|
case "search":
|
||||||
|
this.listQuery.xm1 = val.xm1;
|
||||||
|
this.listQuery.xm2 = val.xm2;
|
||||||
|
this.listQuery.pageNo = 1;
|
||||||
|
this.getDataList();
|
||||||
|
break;
|
||||||
|
case "add":
|
||||||
|
this.addOrEditTitle = '新增'
|
||||||
|
this.addOrUpdateVisible = true;
|
||||||
|
this.addOrUpdateHandle()
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log(val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleCancel() {
|
||||||
|
this.$refs[this.addOrUpdate].formClear()
|
||||||
|
this.addOrUpdateVisible = false
|
||||||
|
this.addOrEditTitle = ''
|
||||||
|
this.addOrUpdate = 'addOrUpdate'
|
||||||
|
},
|
||||||
|
handleConfirm() {
|
||||||
|
this.$refs[this.addOrUpdate].dataFormSubmit()
|
||||||
|
},
|
||||||
|
successSubmit() {
|
||||||
|
this.handleCancel()
|
||||||
|
this.getDataList()
|
||||||
|
},
|
||||||
|
/** 导出按钮操作 */
|
||||||
|
handleExport(data) {
|
||||||
|
// 处理查询参数
|
||||||
|
let params = data?{ ...data }:{ ...this.listQuery };
|
||||||
|
params.pageNo = undefined;
|
||||||
|
params.pageSize = undefined;
|
||||||
|
this.$modal.confirm('是否确认导出所有数据项?').then(() => {
|
||||||
|
this.exportLoading = true;
|
||||||
|
return this.urlOptions.exportURL(params);
|
||||||
|
}).then(response => {
|
||||||
|
this.$download.excel(response, '报表.xls');
|
||||||
|
this.exportLoading = false;
|
||||||
|
}).catch(() => { });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
79
src/views/cost/mixins/code-filter.js
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
* @Date: 2020-12-29 16:49:28
|
||||||
|
* @LastEditors: zwq
|
||||||
|
* @LastEditTime: 2023-12-07 10:00:51
|
||||||
|
* @FilePath: \basic-admin\src\filters\basicData\index.js
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
|
||||||
|
const table = {
|
||||||
|
lineStatus: {
|
||||||
|
1: '生产中',
|
||||||
|
2: '停止',
|
||||||
|
3: '未知',
|
||||||
|
},
|
||||||
|
deactivate: {
|
||||||
|
1: '启用',
|
||||||
|
0: '停用',
|
||||||
|
},
|
||||||
|
wareType: {
|
||||||
|
1: '缓存',
|
||||||
|
2: '活动',
|
||||||
|
3: '其它',
|
||||||
|
},
|
||||||
|
reportType: {
|
||||||
|
2: '日',
|
||||||
|
3: '周',
|
||||||
|
4: '月',
|
||||||
|
5: '年',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// 日期格式化
|
||||||
|
export function parseTime(time, pattern) {
|
||||||
|
if (arguments.length === 0 || !time) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
|
||||||
|
let date
|
||||||
|
if (typeof time === 'object') {
|
||||||
|
date = time
|
||||||
|
} else {
|
||||||
|
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
|
||||||
|
time = parseInt(time)
|
||||||
|
} else if (typeof time === 'string') {
|
||||||
|
time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.\d{3}/gm),'');
|
||||||
|
}
|
||||||
|
if ((typeof time === 'number') && (time.toString().length === 10)) {
|
||||||
|
time = time * 1000
|
||||||
|
}
|
||||||
|
date = new Date(time)
|
||||||
|
}
|
||||||
|
const formatObj = {
|
||||||
|
y: date.getFullYear(),
|
||||||
|
m: date.getMonth() + 1,
|
||||||
|
d: date.getDate(),
|
||||||
|
h: date.getHours(),
|
||||||
|
i: date.getMinutes(),
|
||||||
|
s: date.getSeconds(),
|
||||||
|
a: date.getDay()
|
||||||
|
}
|
||||||
|
const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
|
||||||
|
let value = formatObj[key]
|
||||||
|
// Note: getDay() returns 0 on Sunday
|
||||||
|
if (key === 'a') {
|
||||||
|
return ['日', '一', '二', '三', '四', '五', '六'][value]
|
||||||
|
}
|
||||||
|
if (result.length > 0 && value < 10) {
|
||||||
|
value = '0' + value
|
||||||
|
}
|
||||||
|
return value || 0
|
||||||
|
})
|
||||||
|
return time_str
|
||||||
|
}
|
||||||
|
export default function (dictTable) {
|
||||||
|
return function (val) {
|
||||||
|
return table?.[dictTable]?.[val]
|
||||||
|
}
|
||||||
|
}
|
23
src/views/cost/mixins/connectTime.vue
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: zwq
|
||||||
|
* @Date: 2023-12-05 13:45:59
|
||||||
|
* @LastEditors: zwq
|
||||||
|
* @LastEditTime: 2023-12-06 15:54:40
|
||||||
|
* @Description
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<span>{{ parseTime(injectData.enableTime,'{y}年{m}月{d}日') + '-' + (parseTime(injectData.disableTime)?parseTime(injectData.disableTime,'{y}年{m}月{d}日'):'永久') }}</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: '',
|
||||||
|
props: {
|
||||||
|
injectData: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({}),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
166
src/views/cost/rawMaterialConfig/add-or-updata.vue
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: zwq
|
||||||
|
* @Date: 2023-08-01 13:52:10
|
||||||
|
* @LastEditors: zwq
|
||||||
|
* @LastEditTime: 2023-12-05 15:41:39
|
||||||
|
* @Description:
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<el-form
|
||||||
|
:model="dataForm"
|
||||||
|
:rules="dataRule"
|
||||||
|
ref="dataForm"
|
||||||
|
v-if="visible"
|
||||||
|
@keyup.enter.native="dataFormSubmit()"
|
||||||
|
label-width="100px"
|
||||||
|
label-position="top">
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="原料名称" prop="materialId">
|
||||||
|
<el-select
|
||||||
|
v-model="dataForm.materialId"
|
||||||
|
filterable
|
||||||
|
clearable
|
||||||
|
@change="setCode"
|
||||||
|
:style="{ width: '100%' }"
|
||||||
|
placeholder="请选择原料名称">
|
||||||
|
<el-option
|
||||||
|
v-for="item in MaterialList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="原料等级" prop="grade">
|
||||||
|
<el-select
|
||||||
|
v-model="dataForm.grade"
|
||||||
|
filterable
|
||||||
|
clearable
|
||||||
|
:style="{ width: '100%' }"
|
||||||
|
placeholder="请选择原料等级">
|
||||||
|
<el-option
|
||||||
|
v-for="item in urlOptions.dictList.dict0"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.label"
|
||||||
|
:value="parseInt(item.value)"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="原料编码" prop="code">
|
||||||
|
<el-input v-model="dataForm.code" clearable readonly />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="单价" prop="price">
|
||||||
|
<el-input-number
|
||||||
|
:min="0"
|
||||||
|
style="width: 80%"
|
||||||
|
v-model="dataForm.price"
|
||||||
|
clearable
|
||||||
|
placeholder="请输入允许留存时间" />
|
||||||
|
(元/吨)
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="生效开始时间" prop="enabledTime">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="dataForm.enabledTime"
|
||||||
|
type="datetime"
|
||||||
|
value-format="timestamp"
|
||||||
|
:style="{ width: '100%' }"
|
||||||
|
placeholder="选择开始时间"></el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="生效结束时间" prop="disabledTime">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="dataForm.disabledTime"
|
||||||
|
type="datetime"
|
||||||
|
value-format="timestamp"
|
||||||
|
:style="{ width: '100%' }"
|
||||||
|
placeholder="选择结束时间"></el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input
|
||||||
|
v-model="dataForm.remark"
|
||||||
|
clearable
|
||||||
|
placeholder="请输入备注" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import basicAdd from '../mixins/basic-add';
|
||||||
|
import {
|
||||||
|
createCostMaterialSet,
|
||||||
|
updateCostMaterialSet,
|
||||||
|
getCostMaterialSet,
|
||||||
|
} from '@/api/cost/costMaterialSet';
|
||||||
|
import { getHotMaterialList } from '@/api/base/coreHotMaterial';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [basicAdd],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
urlOptions: {
|
||||||
|
getDictList: true,
|
||||||
|
createURL: createCostMaterialSet,
|
||||||
|
updateURL: updateCostMaterialSet,
|
||||||
|
infoURL: getCostMaterialSet,
|
||||||
|
getOption: true,
|
||||||
|
},
|
||||||
|
nameList: ['material_grade'],
|
||||||
|
dataForm: {
|
||||||
|
id: undefined,
|
||||||
|
code: '',
|
||||||
|
materialId: '',
|
||||||
|
price: '',
|
||||||
|
grade: '',
|
||||||
|
enabledTime: new Date().getTime(),
|
||||||
|
disabledTime: null,
|
||||||
|
remark: '',
|
||||||
|
},
|
||||||
|
setData: true,
|
||||||
|
MaterialList: [],
|
||||||
|
dataRule: {
|
||||||
|
materialId: [
|
||||||
|
{ required: true, message: '原料不能为空', trigger: 'change' },
|
||||||
|
],
|
||||||
|
price: [{ required: true, message: '单价不能为空', trigger: 'blur' }],
|
||||||
|
enabledTime: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '生效开始时间不能为空',
|
||||||
|
trigger: 'change',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {},
|
||||||
|
methods: {
|
||||||
|
getArr() {
|
||||||
|
getHotMaterialList().then((response) => {
|
||||||
|
this.MaterialList = response.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
setDataForm() {
|
||||||
|
this.setCode();
|
||||||
|
},
|
||||||
|
setCode() {
|
||||||
|
this.MaterialList.forEach((item) => {
|
||||||
|
if (item.id === this.dataForm.materialId) {
|
||||||
|
this.dataForm.code = item.code;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
186
src/views/cost/rawMaterialConfig/index.vue
Normal file
@ -0,0 +1,186 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<!-- 搜索工作栏 -->
|
||||||
|
<search-bar
|
||||||
|
:formConfigs="formConfig"
|
||||||
|
ref="searchBarForm"
|
||||||
|
@headBtnClick="buttonClick" />
|
||||||
|
|
||||||
|
<!-- 列表 -->
|
||||||
|
<base-table
|
||||||
|
v-loading="dataListLoading"
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.pageNo"
|
||||||
|
:limit="listQuery.pageSize"
|
||||||
|
:table-data="tableData">
|
||||||
|
<method-btn
|
||||||
|
v-if="tableBtn.length"
|
||||||
|
slot="handleBtn"
|
||||||
|
:width="80"
|
||||||
|
label="操作"
|
||||||
|
:method-list="tableBtn"
|
||||||
|
@clickBtn="handleClick" />
|
||||||
|
</base-table>
|
||||||
|
<pagination
|
||||||
|
:limit.sync="listQuery.pageSize"
|
||||||
|
:page.sync="listQuery.pageNo"
|
||||||
|
:total="listQuery.total"
|
||||||
|
@pagination="getDataList" />
|
||||||
|
|
||||||
|
<!-- 对话框(添加 / 修改) -->
|
||||||
|
<base-dialog
|
||||||
|
:dialogTitle="addOrEditTitle"
|
||||||
|
:dialogVisible="addOrUpdateVisible"
|
||||||
|
@cancel="handleCancel"
|
||||||
|
@confirm="handleConfirm"
|
||||||
|
:before-close="handleCancel"
|
||||||
|
width="40%">
|
||||||
|
<add-or-update
|
||||||
|
ref="addOrUpdate"
|
||||||
|
@refreshDataList="successSubmit"></add-or-update>
|
||||||
|
</base-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import AddOrUpdate from './add-or-updata';
|
||||||
|
import basicPage from '../mixins/basic-page';
|
||||||
|
import { parseTime } from '../mixins/code-filter';
|
||||||
|
import {
|
||||||
|
deleteCostMaterialSet,
|
||||||
|
getCostMaterialSetPage,
|
||||||
|
} from '@/api/cost/costMaterialSet';
|
||||||
|
import { getHotMaterialList } from '@/api/base/coreHotMaterial';
|
||||||
|
import { publicFormatter } from '@/utils/dict';
|
||||||
|
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: 'rawMaterialName',
|
||||||
|
label: '原料名称',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'code',
|
||||||
|
label: '原料编码',
|
||||||
|
width: 190,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'grade',
|
||||||
|
label: '原料等级',
|
||||||
|
filter: publicFormatter('material_grade'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'dailyUse',
|
||||||
|
label: '单日消耗量(吨)',
|
||||||
|
width: 130,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'price',
|
||||||
|
label: '单价(元/吨)',
|
||||||
|
align: 'right',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'enabledTime',
|
||||||
|
label: '生效时间',
|
||||||
|
filter: parseTime,
|
||||||
|
width: 150,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'remark',
|
||||||
|
label: '备注',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [basicPage],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
urlOptions: {
|
||||||
|
getDataListURL: getCostMaterialSetPage,
|
||||||
|
deleteURL: deleteCostMaterialSet,
|
||||||
|
},
|
||||||
|
tableProps,
|
||||||
|
tableBtn: [
|
||||||
|
this.$auth.hasPermi(`cost:rawMaterialConfig:update`)
|
||||||
|
? {
|
||||||
|
type: 'edit',
|
||||||
|
btnName: '编辑',
|
||||||
|
}
|
||||||
|
: undefined,
|
||||||
|
this.$auth.hasPermi(`cost:rawMaterialConfig:delete`)
|
||||||
|
? {
|
||||||
|
type: 'delete',
|
||||||
|
btnName: '删除',
|
||||||
|
}
|
||||||
|
: undefined,
|
||||||
|
].filter((v) => v),
|
||||||
|
tableData: [],
|
||||||
|
formConfig: [
|
||||||
|
{
|
||||||
|
type: 'select',
|
||||||
|
label: '原料名称',
|
||||||
|
selectOptions: [],
|
||||||
|
param: 'name',
|
||||||
|
filterable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'button',
|
||||||
|
btnName: '查询',
|
||||||
|
name: 'search',
|
||||||
|
color: 'primary',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'separate',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: this.$auth.hasPermi('cost:rawMaterialConfig:create')
|
||||||
|
? 'button'
|
||||||
|
: '',
|
||||||
|
btnName: '新增',
|
||||||
|
name: 'add',
|
||||||
|
color: 'success',
|
||||||
|
plain: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
AddOrUpdate,
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
getHotMaterialList().then((response) => {
|
||||||
|
this.formConfig[0].selectOptions = response.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
buttonClick(val) {
|
||||||
|
switch (val.btnName) {
|
||||||
|
case 'search':
|
||||||
|
this.listQuery.pageNo = 1;
|
||||||
|
this.listQuery.pageSize = 10;
|
||||||
|
this.listQuery.materialId = val.name;
|
||||||
|
this.getDataList();
|
||||||
|
break;
|
||||||
|
case 'reset':
|
||||||
|
this.$refs.searchBarForm.resetForm();
|
||||||
|
this.listQuery = {
|
||||||
|
pageSize: 10,
|
||||||
|
pageNo: 1,
|
||||||
|
total: 1,
|
||||||
|
};
|
||||||
|
this.getDataList();
|
||||||
|
break;
|
||||||
|
case 'add':
|
||||||
|
this.addOrEditTitle = '新增';
|
||||||
|
this.addOrUpdateVisible = true;
|
||||||
|
this.addOrUpdateHandle();
|
||||||
|
break;
|
||||||
|
case 'export':
|
||||||
|
this.handleExport();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log(val);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
171
src/views/cost/rawMaterialCost/index.vue
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<!-- 搜索工作栏 -->
|
||||||
|
<search-bar
|
||||||
|
:formConfigs="formConfig"
|
||||||
|
ref="searchBarForm"
|
||||||
|
@headBtnClick="buttonClick" />
|
||||||
|
|
||||||
|
<!-- 列表 -->
|
||||||
|
<base-table
|
||||||
|
v-loading="dataListLoading"
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.pageNo"
|
||||||
|
:limit="listQuery.pageSize"
|
||||||
|
:table-data="tableData"></base-table>
|
||||||
|
<pagination
|
||||||
|
:limit.sync="listQuery.pageSize"
|
||||||
|
:page.sync="listQuery.pageNo"
|
||||||
|
:total="listQuery.total"
|
||||||
|
@pagination="getDataList" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import basicPage from '../mixins/basic-page';
|
||||||
|
import connectTime from '../mixins/connectTime';
|
||||||
|
import {
|
||||||
|
getCostMaterialSearchPage,
|
||||||
|
exportCostMaterialSearch,
|
||||||
|
} from '@/api/cost/costMaterialAutoReport';
|
||||||
|
import { getHotMaterialList } from '@/api/base/coreHotMaterial';
|
||||||
|
import { publicFormatter } from '@/utils/dict';
|
||||||
|
import moment from 'moment';
|
||||||
|
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: 'rawMaterialName',
|
||||||
|
label: '原料名称',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'grade',
|
||||||
|
label: '原料等级',
|
||||||
|
filter: publicFormatter('material_grade'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'price',
|
||||||
|
label: '单价(元/吨)',
|
||||||
|
align: 'right',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'reportName',
|
||||||
|
label: '单价生效时间',
|
||||||
|
minWidth: 190,
|
||||||
|
subcomponent: connectTime,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'totalUsed',
|
||||||
|
label: '累计使用量(吨)',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'totalCost',
|
||||||
|
label: '总价(元)',
|
||||||
|
align: 'right',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [basicPage],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
urlOptions: {
|
||||||
|
getDataListURL: getCostMaterialSearchPage,
|
||||||
|
exportURL: exportCostMaterialSearch,
|
||||||
|
},
|
||||||
|
tableData: [],
|
||||||
|
tableProps,
|
||||||
|
drawerVisible: false,
|
||||||
|
formConfig: [
|
||||||
|
{
|
||||||
|
type: 'select',
|
||||||
|
label: '原料名称',
|
||||||
|
selectOptions: [],
|
||||||
|
param: 'materialId',
|
||||||
|
filterable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'datePicker',
|
||||||
|
label: '时间范围',
|
||||||
|
dateType: 'daterange',
|
||||||
|
format: 'yyyy-MM-dd',
|
||||||
|
valueFormat: 'yyyy-MM-dd',
|
||||||
|
rangeSeparator: '-',
|
||||||
|
startPlaceholder: '开始时间',
|
||||||
|
endPlaceholder: '结束时间',
|
||||||
|
param: 'searchTime',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'button',
|
||||||
|
btnName: '查询',
|
||||||
|
name: 'search',
|
||||||
|
color: 'primary',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: this.$auth.hasPermi('cost:rawMaterialCost:export')
|
||||||
|
? 'button'
|
||||||
|
: '',
|
||||||
|
btnName: '导出',
|
||||||
|
name: 'export',
|
||||||
|
color: 'primary',
|
||||||
|
plain: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {},
|
||||||
|
created() {
|
||||||
|
getHotMaterialList().then((response) => {
|
||||||
|
this.formConfig[0].selectOptions = response.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 获取数据列表
|
||||||
|
getDataList() {
|
||||||
|
if (this.listQuery.searchTime) {
|
||||||
|
this.dataListLoading = true;
|
||||||
|
this.urlOptions.getDataListURL(this.listQuery).then((response) => {
|
||||||
|
if (response.hasOwnProperty('data')) {
|
||||||
|
this.tableData = response.data.list;
|
||||||
|
this.listQuery.total = response.data.total;
|
||||||
|
}
|
||||||
|
this.dataListLoading = false;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.$message.warning('请选择时间范围');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
buttonClick(val) {
|
||||||
|
switch (val.btnName) {
|
||||||
|
case 'search':
|
||||||
|
this.listQuery.pageNo = 1;
|
||||||
|
this.listQuery.pageSize = 10;
|
||||||
|
this.listQuery.materialId = val.materialId;
|
||||||
|
this.listQuery.searchTime = val.searchTime ? val.searchTime[0] : null;
|
||||||
|
this.listQuery.startTime = val.searchTime
|
||||||
|
? moment(val.searchTime[0]).startOf('day').format('x')
|
||||||
|
: null;
|
||||||
|
this.listQuery.endTime = val.searchTime
|
||||||
|
? moment(val.searchTime[1]).endOf('day').format('x')
|
||||||
|
: null;
|
||||||
|
this.getDataList();
|
||||||
|
break;
|
||||||
|
case 'export':
|
||||||
|
this.listQuery.materialId = val.materialId;
|
||||||
|
this.listQuery.searchTime = val.searchTime ? val.searchTime[0] : null;
|
||||||
|
this.listQuery.startTime = val.searchTime ? val.searchTime[0] : null;
|
||||||
|
this.listQuery.endTime = val.searchTime ? val.searchTime[1] : null;
|
||||||
|
this.handleExport();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log(val);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.app-container .el-table .el-table__cell {
|
||||||
|
padding: 0;
|
||||||
|
height: 35px;
|
||||||
|
}
|
||||||
|
</style>
|
177
src/views/cost/rawMaterialCostHis/index.vue
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<!-- 搜索工作栏 -->
|
||||||
|
<search-bar
|
||||||
|
:formConfigs="formConfig"
|
||||||
|
ref="searchBarForm"
|
||||||
|
@headBtnClick="buttonClick" />
|
||||||
|
|
||||||
|
<!-- 列表 -->
|
||||||
|
<base-table
|
||||||
|
v-loading="dataListLoading"
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.pageNo"
|
||||||
|
:limit="listQuery.pageSize"
|
||||||
|
:table-data="tableData"></base-table>
|
||||||
|
<pagination
|
||||||
|
:limit.sync="listQuery.pageSize"
|
||||||
|
:page.sync="listQuery.pageNo"
|
||||||
|
:total="listQuery.total"
|
||||||
|
@pagination="getDataList" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import basicPage from '../mixins/basic-page';
|
||||||
|
import codeFilter from '../mixins/code-filter';
|
||||||
|
import {
|
||||||
|
getCostMaterialAutoReportPage,
|
||||||
|
exportCostMaterialAutoReportExcel,
|
||||||
|
} from '@/api/cost/costMaterialAutoReport';
|
||||||
|
import { getHotMaterialList } from '@/api/base/coreHotMaterial';
|
||||||
|
import { publicFormatter } from '@/utils/dict';
|
||||||
|
import moment from 'moment';
|
||||||
|
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: 'reportType',
|
||||||
|
label: '维度',
|
||||||
|
filter: codeFilter('reportType'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'reportName',
|
||||||
|
label: '时间',
|
||||||
|
minWidth: 150,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'rawMaterialName',
|
||||||
|
label: '原料名称',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'grade',
|
||||||
|
label: '原料等级',
|
||||||
|
filter: publicFormatter('material_grade'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'price',
|
||||||
|
label: '单价(元/吨)',
|
||||||
|
align: 'right',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'totalUsed',
|
||||||
|
label: '累计使用量(吨)',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'totalCost',
|
||||||
|
label: '总价(元)',
|
||||||
|
align: 'right',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [basicPage],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
urlOptions: {
|
||||||
|
getDataListURL: getCostMaterialAutoReportPage,
|
||||||
|
exportURL: exportCostMaterialAutoReportExcel,
|
||||||
|
},
|
||||||
|
tableData: [],
|
||||||
|
tableProps,
|
||||||
|
drawerVisible: false,
|
||||||
|
formConfig: [
|
||||||
|
{
|
||||||
|
type: 'select',
|
||||||
|
label: '维度',
|
||||||
|
selectOptions: [
|
||||||
|
{ id: 2, name: '日' },
|
||||||
|
{ id: 3, name: '周' },
|
||||||
|
{ id: 4, name: '月' },
|
||||||
|
{ id: 5, name: '年' },
|
||||||
|
],
|
||||||
|
param: 'reportType',
|
||||||
|
filterable: true,
|
||||||
|
clearable: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'select',
|
||||||
|
label: '原料名称',
|
||||||
|
selectOptions: [],
|
||||||
|
param: 'materialId',
|
||||||
|
filterable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'datePicker',
|
||||||
|
label: '时间范围',
|
||||||
|
dateType: 'daterange',
|
||||||
|
format: 'yyyy-MM-dd',
|
||||||
|
valueFormat: 'yyyy-MM-dd',
|
||||||
|
rangeSeparator: '-',
|
||||||
|
startPlaceholder: '开始时间',
|
||||||
|
endPlaceholder: '结束时间',
|
||||||
|
param: 'searchTime',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'button',
|
||||||
|
btnName: '查询',
|
||||||
|
name: 'search',
|
||||||
|
color: 'primary',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: this.$auth.hasPermi('cost:rawMaterialCostHis:export')
|
||||||
|
? 'button'
|
||||||
|
: '',
|
||||||
|
btnName: '导出',
|
||||||
|
name: 'export',
|
||||||
|
color: 'primary',
|
||||||
|
plain: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {},
|
||||||
|
created() {
|
||||||
|
getHotMaterialList().then((response) => {
|
||||||
|
this.formConfig[1].selectOptions = response.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
buttonClick(val) {
|
||||||
|
switch (val.btnName) {
|
||||||
|
case 'search':
|
||||||
|
this.listQuery.pageNo = 1;
|
||||||
|
this.listQuery.pageSize = 10;
|
||||||
|
this.listQuery.reportType = val.reportType;
|
||||||
|
this.listQuery.materialId = val.materialId;
|
||||||
|
this.listQuery.times = val.searchTime
|
||||||
|
? [
|
||||||
|
moment(val.searchTime[0]).startOf('day').format('x'),
|
||||||
|
moment(val.searchTime[1]).endOf('day').format('x'),
|
||||||
|
]
|
||||||
|
: null;
|
||||||
|
this.getDataList();
|
||||||
|
break;
|
||||||
|
case 'export':
|
||||||
|
this.listQuery.reportType = val.reportType;
|
||||||
|
this.listQuery.materialId = val.materialId;
|
||||||
|
this.listQuery.times = val.searchTime
|
||||||
|
? [
|
||||||
|
moment(val.searchTime[0]).startOf('day').format('x'),
|
||||||
|
moment(val.searchTime[1]).endOf('day').format('x'),
|
||||||
|
]
|
||||||
|
: null;
|
||||||
|
this.handleExport();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log(val);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.app-container .el-table .el-table__cell {
|
||||||
|
padding: 0;
|
||||||
|
height: 35px;
|
||||||
|
}
|
||||||
|
</style>
|
BIN
src/views/databoard/assets/bg.png
Normal file
After Width: | Height: | Size: 2.7 MiB |
BIN
src/views/databoard/assets/check.png
Normal file
After Width: | Height: | Size: 492 B |
BIN
src/views/databoard/assets/energeCost.png
Normal file
After Width: | Height: | Size: 322 B |
BIN
src/views/databoard/assets/flow.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
src/views/databoard/assets/full.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
src/views/databoard/assets/gas.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
src/views/databoard/assets/head.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
src/views/databoard/assets/high.png
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
src/views/databoard/assets/middle.png
Normal file
After Width: | Height: | Size: 49 KiB |
BIN
src/views/databoard/assets/middle2.png
Normal file
After Width: | Height: | Size: 49 KiB |
BIN
src/views/databoard/assets/move.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
src/views/databoard/assets/msg.png
Normal file
After Width: | Height: | Size: 507 B |
BIN
src/views/databoard/assets/short.png
Normal file
After Width: | Height: | Size: 41 KiB |
97
src/views/databoard/components/Container.vue
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
<!--
|
||||||
|
filename: Container.vue
|
||||||
|
author: liubin
|
||||||
|
date: 2023-12-05 14:29:53
|
||||||
|
description: 窑炉容器
|
||||||
|
-->
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="kiln-container" :class="['kiln-container__' + size]">
|
||||||
|
<div class="container-hd" style="display: flex; align-items: center">
|
||||||
|
<i
|
||||||
|
class=""
|
||||||
|
style="display: inline-block; margin-left: 12px; padding-top: 4px">
|
||||||
|
<img :src="imgSrc" width="20" height="20" alt="" />
|
||||||
|
</i>
|
||||||
|
<span
|
||||||
|
style="
|
||||||
|
color: #fff;
|
||||||
|
font-size: 24px;
|
||||||
|
line-height: 2;
|
||||||
|
margin-left: 6px;
|
||||||
|
display: inline-block;
|
||||||
|
">
|
||||||
|
{{ name }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="container-body">
|
||||||
|
<slot>
|
||||||
|
<div class="test-body">something test....</div>
|
||||||
|
</slot>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'KilnContainer',
|
||||||
|
components: {},
|
||||||
|
props: ['name', 'width', 'size'],
|
||||||
|
data() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
imgSrc() {
|
||||||
|
switch (this.name) {
|
||||||
|
case '原料用量统计':
|
||||||
|
return require('../assets/move.png');
|
||||||
|
case '风机运行频率':
|
||||||
|
return require('../assets/flow.png');
|
||||||
|
case 'ISRA缺陷检测':
|
||||||
|
return require('../assets/check.png');
|
||||||
|
case '能耗':
|
||||||
|
return require('../assets/energeCost.png');
|
||||||
|
case '窑炉信息':
|
||||||
|
return require('../assets/msg.png');
|
||||||
|
case '烟气处理':
|
||||||
|
return require('../assets/gas.png');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.kiln-container {
|
||||||
|
display: inline-block;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
padding: 8px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&__small {
|
||||||
|
background: url(../assets/short.png) no-repeat;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-position: 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__middle {
|
||||||
|
background: url(../assets/middle.png) no-repeat;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-position: 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__large {
|
||||||
|
background: url(../assets/high.png) no-repeat;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-position: 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.container-body {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
</style>
|