Compare commits

..

No commits in common. "projects/qhd-line-zjl" and "master" have entirely different histories.

282 changed files with 13187 additions and 42478 deletions

View File

@ -1,18 +1,21 @@
### ###
# @Author: Do not edit # @Author: Do not edit
# @Date: 2023-08-29 09:40:39 # @Date: 2023-08-29 09:40:39
# @LastEditTime: 2024-11-25 14:31:39 # @LastEditTime: 2023-10-16 09:22:52
# @LastEditors: zwq # @LastEditors: DY
# @Description: # @Description:
### ###
# 开发环境配置 # 开发环境配置
ENV = 'development' ENV = 'development'
# 页面标题 # 页面标题
VUE_APP_TITLE = 智能监控分析系统 VUE_APP_TITLE = 产线监控系统
# 芋道管理系统/开发环境 # 芋道管理系统/开发环境
VUE_APP_BASE_API = 'http://172.16.32.21:48080' # VUE_APP_BASE_API = 'http://192.168.1.49:48080'
# VUE_APP_BASE_API = 'http://192.168.1.8:48080'
VUE_APP_BASE_API = 'http://192.168.0.33:48080'
# VUE_APP_BASE_API = 'http://192.168.1.188:48080'
# 路由懒加载 # 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true VUE_CLI_BABEL_TRANSPILE_MODULES = true

View File

@ -1,24 +1,15 @@
###
# @Author: zwq
# @Date: 2024-03-27 15:49:55
# @LastEditors: zwq
# @LastEditTime: 2024-10-30 11:08:47
# @Description:
###
# 生产环境配置 # 生产环境配置
ENV = 'production' ENV = 'production'
# 页面标题 # 页面标题
VUE_APP_TITLE = 智能监控分析系统 VUE_APP_TITLE = 产线监控系统
# 芋道管理系统/生产环境 # 芋道管理系统/生产环境
# VUE_APP_BASE_API = '/prod-api' VUE_APP_BASE_API = '/prod-api'
VUE_APP_BASE_API = ''
# 根据服务器或域名修改 # 根据服务器或域名修改
# PUBLIC_PATH = 'http://my-pi.com:8888/yudao-admin/' # PUBLIC_PATH = 'http://my-pi.com:8888/yudao-admin/'
# PUBLIC_PATH = 'http://192.168.0.33:8888/' PUBLIC_PATH = 'http://192.168.0.33:8888/'
PUBLIC_PATH = ''
# 二级部署路径 # 二级部署路径
VUE_APP_APP_NAME ='yudao-admin' VUE_APP_APP_NAME ='yudao-admin'

View File

@ -6,9 +6,9 @@
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
"local": "vue-cli-service serve --mode local", "local": "vue-cli-service serve --mode local",
"dev": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --mode dev", "dev": "vue-cli-service serve --mode dev",
"front": "vue-cli-service serve --mode front", "front": "vue-cli-service serve --mode front",
"build:prod": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --mode prod", "build:prod": "vue-cli-service build --mode prod",
"build:stage": "vue-cli-service build --mode stage", "build:stage": "vue-cli-service build --mode stage",
"build:dev": "vue-cli-service build --mode dev", "build:dev": "vue-cli-service build --mode dev",
"build:static": "vue-cli-service build --mode static", "build:static": "vue-cli-service build --mode static",

Binary file not shown.

Binary file not shown.

View File

@ -1,86 +0,0 @@
/*
* @Author: zwq
* @Date: 2024-04-11 15:00:03
* @LastEditors: zwq
* @LastEditTime: 2024-04-12 10:25:30
* @Description:
*/
import request from '@/utils/request'
// 获得分页数据
export function energyQuantityManualPage(query) {
return request({
url: '/base/energy-quantity-manual/page',
method: 'get',
params: query
})
}
// 创建
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(query) {
return request({
url: '/base/energy-quantity-manual/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 获得能源表名配置分页
export function energyTablePage() {
return request({
url: '/base/energy-type-meter-bind/list',
method: 'get',
})
}
// 获得能源表名配置
export function energyTableGet(query) {
return request({
url: '/base/energy-type-meter-bind/list',
method: 'get',
params: query
})
}
// 更新能源表名配置
export function energyTableUpdate(data) {
return request({
url: '/base/energy-type-meter-bind/update',
method: 'put',
data: data
})
}

View File

@ -1,53 +0,0 @@
/*
* @Author: Do not edit
* @Date: 2024-02-21 13:43:02
* @LastEditTime: 2024-04-30 10:07:59
* @LastEditors: zwq
* @Description:
*/
import request from '@/utils/request'
// 获得关联表名
export function getplcAllList(query) {
return request({
url: '/base/equipment-plc/listAll',
method: 'get',
params: query
})
}
// 获得设备
export function getEquipmentList(query) {
return request({
url: '/base/core-equipment/page',
method: 'get',
params: query
})
}
// 根据产线获得工段
export function listByParentId(query) {
return request({
url: '/base/core-workshop-section/listByParentId',
method: 'get',
params: query
})
}
// 获得产线工段设备树形结构
export function getTree(query) {
return request({
url: '/base/factory/getTree',
method: 'get',
params: query
})
}
// 获得设备分组列表
export function getgroupAllList(query) {
return request({
url: '/base/equipment-group/listAll',
method: 'get',
params: query
})
}

View File

@ -1,10 +1,3 @@
/*
* @Author: zwq
* @Date: 2024-10-29 09:47:40
* @LastEditors: zwq
* @LastEditTime: 2025-02-26 16:27:48
* @Description:
*/
import request from '@/utils/request' import request from '@/utils/request'
// 创建实时数据采集配置 // 创建实时数据采集配置
@ -59,11 +52,3 @@ export function exportEquipmentPlcExcel(query) {
responseType: 'blob' responseType: 'blob'
}) })
} }
// 获得code
export function getCode() {
return request({
url: '/base/equipment-group/getCode',
method: 'get'
})
}

View File

@ -1,10 +1,3 @@
/*
* @Author: zwq
* @Date: 2024-10-29 09:47:40
* @LastEditors: zwq
* @LastEditTime: 2025-02-12 09:25:11
* @Description:
*/
import request from '@/utils/request' import request from '@/utils/request'
// 获得工厂产线工段设备树形结构 // 获得工厂产线工段设备树形结构
export function getTree() { export function getTree() {

View File

@ -51,13 +51,6 @@ export function getCode() {
}) })
} }
// 获得可用的班次列表
export function listClassesEnabled() {
return request({
url: '/base/group-classes/listEnable',
method: 'get'
})
}
// 导出班次基础信息 Excel // 导出班次基础信息 Excel
export function exportGroupClassesExcel(query) { export function exportGroupClassesExcel(query) {
return request({ return request({

View File

@ -1,125 +0,0 @@
import request from '@/utils/request'
// 创建排班计划配置基础信息
export function createGroupPlan(data) {
return request({
url: '/base/group-scheduling-plan/create',
method: 'post',
data: data
})
}
// 更新排班计划配置基础信息
export function updateGroupPlan(data) {
return request({
url: '/base/group-scheduling-plan/update',
method: 'put',
data: data
})
}
// 删除排班计划配置基础信息
export function deleteGroupPlan(id) {
return request({
url: '/base/group-scheduling-plan/delete?id=' + id,
method: 'delete'
})
}
// 获得排班计划配置基础信息
export function getGroupPlan(id) {
return request({
url: '/base/group-scheduling-plan/get?id=' + id,
method: 'get'
})
}
// 获得排班计划配置基础信息分页
export function getGroupPlanPage(query) {
return request({
url: '/base/group-scheduling-plan/page',
method: 'get',
params: query
})
}
// 获得所有排班计划列表
export function groupPlanList() {
return request({
url: '/base/group-scheduling-plan/listAll',
method: 'get'
})
}
// 获得排班计划相关班组列表
export function groupPlanTeamList(id) {
return request({
url: '/base/group-scheduling-plan-team/teamListByPlanId?planId=' + id,
method: 'get'
})
}
// 获得排班计划相关班次列表
export function groupPlanClassesList(id) {
return request({
url: '/base/group-scheduling-plan-classes/classesListByPlanId?planId=' + id,
method: 'get'
})
}
// 获取code
export function getCode() {
return request({
url: '/base/group-scheduling-plan/getCode',
method: 'get'
})
}
// 导出排班计划配置基础信息 Excel
export function exportGroupPlanExcel(query) {
return request({
url: '/base/group-scheduling-plan/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 获得产线工段树形结构
export function getGroupPlanTree() {
return request({
url: '/base/group-scheduling-plan/getLineSectionTree',
method: 'get'
})
}
// 创建排班计划产线工段
export function createGroupPlanLine(data) {
return request({
url: '/base/group-scheduling-plan-line-section/createPlanLineSection',
method: 'post',
data: data
})
}
// 更新排班计划产线工段
export function updateGroupPlanLine(data) {
return request({
url: '/base/group-scheduling-plan-line-section/updatePlanLineSection',
method: 'put',
data: data
})
}
// 获得排班计划配置基础信息
export function getGroupPlanLine(id) {
return request({
url: '/base/group-scheduling-plan-line-section/getLineSectionByPlanId?planId=' + id,
method: 'get'
})
}
// 获得当前登录用户所在部门id
export function getLoginUserDeptId() {
return request({
url: '/base/group-scheduling-plan-line-section/getLoginUserDeptId',
method: 'get'
})
}

View File

@ -1,60 +0,0 @@
import request from '@/utils/request'
// 创建排班规则基础信息
export function createGroupRule(data) {
return request({
url: '/base/group-scheduling-rule/create',
method: 'post',
data: data
})
}
// 作废排班规则
export function disableGroupRule(id) {
return request({
url: '/base/group-scheduling-rule/disable?id=' + id,
method: 'post',
})
}
// 更新排班规则基础信息
export function updateGroupRule(data) {
return request({
url: '/base/group-scheduling-rule/update',
method: 'put',
data: data
})
}
// 删除排班规则基础信息
export function deleteGroupRule(id) {
return request({
url: '/base/group-scheduling-rule/delete?id=' + id,
method: 'delete'
})
}
// 获得排班规则基础信息
export function getGroupRule(id) {
return request({
url: '/base/group-scheduling-rule/get?id=' + id,
method: 'get'
})
}
// 获得排班规则基础信息分页
export function getGroupRulePage(query) {
return request({
url: '/base/group-scheduling-rule/page',
method: 'get',
params: query
})
}
// 导出排班规则基础信息 Excel
export function exportGroupRuleExcel(query) {
return request({
url: '/base/group-scheduling-rule/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

View File

@ -58,49 +58,3 @@ export function listEnabled() {
method: 'get' method: 'get'
}) })
} }
// 获得班组组员信息分页
export function groupTeamPage(query) {
return request({
url: '/base/group-team-det/page',
method: 'get',
params: query
})
}
// 获得班组组员信息
export function groupTeamDet(query) {
return request({
url: '/base/group-team-det/get',
method: 'get',
params: query
})
}
// 创建班组组员信息
export function teamDetCreate(data) {
return request({
url: '/base/group-team-det/create',
method: 'post',
data: data
})
}
// 更新班组组员信息
export function teamDetUpdate(data) {
return request({
url: '/base/group-team-det/update',
method: 'put',
data: data
})
}
// 删除班组组员信息
export function teamDetDelete(query) {
return request({
url: '/base/group-team-det/delete',
method: 'delete',
params: query
})
}

View File

@ -8,14 +8,7 @@ export function getPreset(query) {
params: query params: query
}) })
} }
// 获取某月预排班
export function getScheduling(query) {
return request({
url: '/base/group-team-scheduling/getScheduling',
method: 'get',
params: query
})
}
// 批量创建-更新排班信息 // 批量创建-更新排班信息
export function createOrUpdateList(data) { export function createOrUpdateList(data) {
return request({ return request({
@ -32,23 +25,4 @@ export function autoSet(query) {
method: 'get', method: 'get',
params: query params: query
}) })
} }
// 获得排班信息分页
export function schedulingPage(query) {
return request({
url: '/base/group-team-scheduling/page',
method: 'get',
params: query
})
}
// 导出Excel
export function exportSchedulingExcel(query) {
return request({
url: '/base/group-team-scheduling/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

View File

@ -1,75 +0,0 @@
/*
* @Author: zwq
* @Date: 2024-04-09 16:42:19
* @LastEditors: zwq
* @LastEditTime: 2024-04-10 14:33:52
* @Description:
*/
import request from '@/utils/request'
// 创建原料
export function createMaterial(data) {
return request({
url: '/base/material/create',
method: 'post',
data: data
})
}
// 更新原料
export function updateMaterial(data) {
return request({
url: '/base/material/update',
method: 'put',
data: data
})
}
// 获取code
export function getCode() {
return request({
url: '/base/material/autoCode',
method: 'POST'
})
}
// 删除原料
export function deleteMaterial(id) {
return request({
url: '/base/material/delete?id=' + id,
method: 'delete'
})
}
// 获得原料
export function getMaterial(id) {
return request({
url: '/base/material/get?id=' + id,
method: 'get'
})
}
// 获得原料分页
export function getMaterialPage(query) {
return request({
url: '/base/material/page',
method: 'get',
params: query
})
}
// 获得原料列表
export function getMaterialList() {
return request({
url: '/base/material/list',
method: 'get',
})
}
// 导出原料 Excel
export function exportMaterialExcel(query) {
return request({
url: '/base/material/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

View File

@ -1,68 +0,0 @@
/*
* @Author: zwq
* @Date: 2024-04-09 16:42:19
* @LastEditors: zwq
* @LastEditTime: 2024-04-10 14:31:46
* @Description:
*/
import request from '@/utils/request'
// 创建原料
export function createMaterialPricing(data) {
return request({
url: '/base/material-pricing/create',
method: 'post',
data: data
})
}
// 更新原料
export function updateMaterialPricing(data) {
return request({
url: '/base/material-pricing/update',
method: 'put',
data: data
})
}
// 获取code
export function getCode() {
return request({
url: '/base/material-pricing/autoCode',
method: 'POST'
})
}
// 删除原料
export function deleteMaterialPricing(id) {
return request({
url: '/base/material-pricing/delete?id=' + id,
method: 'delete'
})
}
// 获得原料
export function getMaterialPricing(id) {
return request({
url: '/base/material-pricing/get?id=' + id,
method: 'get'
})
}
// 获得原料分页
export function getMaterialPricingPage(query) {
return request({
url: '/base/material-pricing/page',
method: 'get',
params: query
})
}
// 导出原料 Excel
export function exportMaterialPricingExcel(query) {
return request({
url: '/base/material-pricing/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

View File

@ -1,10 +1,3 @@
/*
* @Author: zwq
* @Date: 2024-03-27 15:49:55
* @LastEditors: zwq
* @LastEditTime: 2024-09-10 14:36:19
* @Description:
*/
import request from '@/utils/request' import request from '@/utils/request'
// 获得所有工厂产线列表 // 获得所有工厂产线列表
export function getLineAll() { export function getLineAll() {
@ -12,12 +5,4 @@ export function getLineAll() {
url: '/base/production-line/listAll', url: '/base/production-line/listAll',
method: 'get' method: 'get'
}) })
} }
// 获得产线分页
export function getLinePage(query) {
return request({
url: '/base/production-line/page',
method: 'get',
params: query
})
}

View File

@ -1,26 +0,0 @@
import request from '@/utils/request'
// 获得所有员工列表
export function getWorkerList() {
return request({
url: '/base/core-worker/listAll',
method: 'get'
})
}
// 获得员工
export function getWorker(query) {
return request({
url: '/base/core-worker/get',
method: 'get',
params: query
})
}
// 获得该班组其他可选组员列表(除去现有组员)
export function otherWorkerList(query) {
return request({
url: '/base/group-team-det/otherWorkerList',
method: 'get',
params: query
})
}

View File

@ -1,8 +1,8 @@
/* /*
* @Author: zhp * @Author: zhp
* @Date: 2023-09-12 14:07:04 * @Date: 2023-09-12 14:07:04
* @LastEditTime: 2025-01-08 15:47:17 * @LastEditTime: 2023-09-13 09:53:45
* @LastEditors: zwq * @LastEditors: zhp
* @Description: * @Description:
*/ */
import request from '@/utils/request' import request from '@/utils/request'
@ -22,26 +22,3 @@ export function getCT(data) {
data: data data: data
}) })
} }
// 获取产线平衡分析数据new
export function getNewCTNow(data) {
return request({
url: '/analysis/production-analysis/getNewCTNow',
method: 'post',
data: data
})
}
// 获取产线平衡分析数据趋势图new
export function getNewCTCharts(data) {
return request({
url: '/analysis/production-analysis/getNewCTCharts',
method: 'post',
data: data
})
}
// 获取产线平衡分析数据设备listnew
export function getNewCTDet(id) {
return request({
url: '/analysis/production-analysis/getNewCTDet?lineId='+id,
method: 'get',
})
}

View File

@ -58,12 +58,3 @@ export function exportFactoryExcel(query) {
responseType: 'blob' responseType: 'blob'
}) })
} }
// 获取产线设备状态
export function getLineEqStatus(data) {
return request({
url: '/base/production-line/getLineEqStatus',
method: 'post',
data: data
})
}

View File

@ -1,28 +0,0 @@
import request from '@/utils/request'
// 切换工艺
export function switchLineBindProcess(data) {
return request({
url: '/base/line-bind-process/switch',
method: 'put',
data: data
})
}
// 获得产线工艺目前生产工艺
export function getLineBindProcessPage(query) {
return request({
url: '/base/line-bind-process/nowList',
method: 'get',
params: query
})
}
// 获得产线工艺log分页
export function getLineBindProcessLogPage(query) {
return request({
url: '/base/line-bind-process/logPage',
method: 'get',
params: query
})
}

View File

@ -16,14 +16,6 @@ export function switchLineBindProduct(data) {
data: data data: data
}) })
} }
// 切换产线是否可以自动
export function switchAutoProduct(data) {
return request({
url: '/base/line-bind-product/switchAuto',
method: 'put',
data: data
})
}
// 更新产线目前生产产品表 主要为更新 // 更新产线目前生产产品表 主要为更新
export function updateLineBindProduct(data) { export function updateLineBindProduct(data) {
return request({ return request({

View File

@ -1,9 +1,9 @@
/* /*
* @Author: Do not edit * @Author: Do not edit
* @Date: 2023-09-12 09:44:53 * @Date: 2023-09-12 09:44:53
* @LastEditTime: 2025-01-07 09:57:36 * @LastEditTime: 2023-09-13 16:11:41
* @LastEditors: zwq * @LastEditors: DY
* @Description: * @Description:
*/ */
import request from '@/utils/request' import request from '@/utils/request'
@ -17,43 +17,9 @@ export function getPdlAutoReport(data) {
} }
// 获得所有工厂产线列表 // 获得所有工厂产线列表
export function getPdList(id) { export function getPdList() {
return request({ return request({
url: '/base/production-line/listAll' + (id ? '?id=' + id : ''), url: '/base/production-line/listAll',
method: 'get' method: 'get'
}) })
} }
// 获得产线自动报表
export function getLineAuto(data) {
return request({
url: '/monitoring/production-monitor/getPdlAutoReportNew',
method: 'post',
data: data
})
}
// 获得产品自动报表
export function getProductAuto(data) {
return request({
url: '/monitoring/production-monitor/getProcessAutoReportNew',
method: 'post',
data: data
})
}
// 班组自动报表分页
export function getTeamReportPage(data) {
return request({
url: '/monitoring/team-auto-report/page',
method: 'post',
data: data
})
}
// 班组自动报表分页详细
export function getTeamReportPageDet(id) {
return request({
url: '/monitoring/team-auto-report/pageDet?id=' + id,
method: 'get',
})
}

View File

@ -1,9 +1,9 @@
/* /*
* @Author: Do not edit * @Author: Do not edit
* @Date: 2023-09-12 09:44:53 * @Date: 2023-09-12 09:44:53
* @LastEditTime: 2025-03-03 10:43:34 * @LastEditTime: 2023-09-14 10:25:46
* @LastEditors: zwq * @LastEditors: DY
* @Description: * @Description:
*/ */
import request from '@/utils/request' import request from '@/utils/request'
@ -22,22 +22,4 @@ export function getPdList() {
url: '/base/production-line/listAll', url: '/base/production-line/listAll',
method: 'get' method: 'get'
}) })
} }
// 产线统计数据查询-历史
export function getPdlAutoReportNewSearch(data) {
return request({
url: '/monitoring/production-monitor/getPdlAutoReportNewSearch',
method: 'post',
data: data
})
}
// 产线统计数据查询-当前
export function getPdlAutoReportNewSearchNow(data) {
return request({
url: '/monitoring/production-monitor/getPdlAutoReportNewSearchNow',
method: 'post',
data: data,
timeout: 60000,
})
}

View File

@ -1,54 +0,0 @@
/*
* @Author: zwq
* @Date: 2024-04-18 16:53:17
* @LastEditors: zwq
* @LastEditTime: 2024-09-06 14:35:13
* @Description:
*/
import request from '@/utils/request'
// 获得总成本统计-按日期分页
export function getCostSumPage(query) {
return request({
url: '/monitoring/cost-sum/page',
method: 'get',
params: query
})
}
// 更新总成本统计-按日期
export function updateCostSum(data) {
return request({
url: '/monitoring/cost-sum/update',
method: 'put',
data: data
})
}
// 获得原片成本统计成本查询分页
export function getRawCostStatisticsRealtimePage(query) {
return request({
url: '/monitoring/cost-sum/page',
method: 'get',
params: query
})
}
// 导出总成本统计-按日期 Excel
export function exportCostSumExcel(query) {
return request({
url: '/monitoring/cost-sum/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 导出原片成本统计-历史成本 Excel
export function exportRawCostStatisticsHisExcel(query) {
return request({
url: '/monitoring/cost-sum/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

View File

@ -1,55 +0,0 @@
/*
* @Author: zwq
* @Date: 2024-04-18 16:53:17
* @LastEditors: zwq
* @LastEditTime: 2024-09-06 15:00:09
* @Description:
*/
import request from '@/utils/request'
// 更新深加工良品率
export function updateDeepRatioHis(data) {
return request({
url: '/monitoring/cost-deep-ratio-his/update',
method: 'put',
data: data
})
}
// 获得深加工产线良品率
export function getDeepPDRatioHisPage(query) {
return request({
url: '/monitoring/cost-deep-ratio-his/page-pd',
method: 'get',
params: query
})
}
// 获得深加工工段良品率
export function getDeepWSRatioHisPage(query) {
return request({
url: '/monitoring/cost-deep-ratio-his/page-ws',
method: 'get',
params: query
})
}
// 导出深加工工段良品率 Excel
export function exportDeepWSRatioHisExcel(query) {
return request({
url: '/monitoring/cost-deep-ratio-his/export-excel-ws',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 导出深加工产线良品率 Excel
export function exportDeepPDRatioHisExcel(query) {
return request({
url: '/monitoring/cost-deep-ratio-his/export-excel-pd',
method: 'get',
params: query,
responseType: 'blob'
})
}

View File

@ -1,53 +0,0 @@
/*
* @Author: zwq
* @Date: 2024-04-18 16:53:17
* @LastEditors: zwq
* @LastEditTime: 2024-04-19 16:11:19
* @Description:
*/
import request from '@/utils/request'
// 更新原片能源历史
export function updateEnergyHis(data) {
return request({
url: '/monitoring/cost-energy-his/update',
method: 'put',
data: data
})
}
// 获得原片能源历史分页
export function getEnergyHisPage(query) {
return request({
url: '/monitoring/cost-energy-his/page',
method: 'get',
params: query
})
}
// 获得原片能源-成本查询分页
export function getEnergyRealtimePage(query) {
return request({
url: '/monitoring/cost-energy-realtime/page',
method: 'get',
params: query
})
}
// 导出能源成本成本查询 Excel
export function exportEnergyRealtimeExcel(query) {
return request({
url: '/monitoring/cost-energy-realtime/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 导出能源成本历史 Excel
export function exportEnergyHisExcel(query) {
return request({
url: '/monitoring/cost-energy-his/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

View File

@ -1,54 +0,0 @@
/*
* @Author: zwq
* @Date: 2024-04-18 16:53:17
* @LastEditors: zwq
* @LastEditTime: 2024-09-06 15:19:24
* @Description:
*/
import request from '@/utils/request'
// 更新深加工能源历史
export function updateEnergyHis(data) {
return request({
url: '/monitoring/cost-deep-energy-his/update',
method: 'put',
data: data
})
}
// 获得深加工能源历史分页
export function getEnergyHisPage(query) {
return request({
url: '/monitoring/cost-deep-energy-his/page',
method: 'get',
params: query
})
}
// 获得深加工能源-成本查询分页
export function getEnergyRealtimePage(query) {
return request({
url: '/monitoring/cost-deep-energy-realtime/page',
method: 'get',
params: query
})
}
// 导出深加工能源成本成本查询 Excel
export function exportEnergyRealtimeExcel(query) {
return request({
url: '/monitoring/cost-deep-energy-realtime/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 导出深加工能源成本历史 Excel
export function exportEnergyHisExcel(query) {
return request({
url: '/monitoring/cost-deep-energy-his/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

View File

@ -1,54 +0,0 @@
/*
* @Author: zwq
* @Date: 2024-04-18 16:53:17
* @LastEditors: zwq
* @LastEditTime: 2024-09-05 13:55:30
* @Description:
*/
import request from '@/utils/request'
// 更新原料成本-历史
export function updateMaterialHis(data) {
return request({
url: '/monitoring/cost-material-his/update',
method: 'put',
data: data
})
}
// 获得原料成本-历史分页
export function getMaterialHisPage(query) {
return request({
url: '/monitoring/cost-material-his/page',
method: 'get',
params: query
})
}
// 获得原料成本-成本查询分页
export function getMaterialRealtimePage(query) {
return request({
url: '/monitoring/cost-material-realtime/page',
method: 'get',
params: query
})
}
// 导出原料成本成本查询 Excel
export function exportMaterialRealtimeExcel(query) {
return request({
url: '/monitoring/cost-material-realtime/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 导出原料成本历史 Excel
export function exportMaterialHisExcel(query) {
return request({
url: '/monitoring/cost-material-his/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

View File

@ -1,36 +0,0 @@
/*
* @Author: zwq
* @Date: 2024-04-18 16:53:17
* @LastEditors: zwq
* @LastEditTime: 2024-04-22 10:53:55
* @Description:
*/
import request from '@/utils/request'
// 更新原片良品率
export function updatecostOriginRatioHis(data) {
return request({
url: '/monitoring/cost-origin-ratio-his/update',
method: 'put',
data: data
})
}
// 获得原片良品率
export function getcostOriginRatioHisPage(query) {
return request({
url: '/monitoring/cost-origin-ratio-his/page',
method: 'get',
params: query
})
}
// 导出原片良品率 Excel
export function exportcostOriginRatioHisExcel(query) {
return request({
url: '/monitoring/cost-origin-ratio-his/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

View File

@ -1,53 +0,0 @@
/*
* @Author: zwq
* @Date: 2024-04-18 16:53:17
* @LastEditors: zwq
* @LastEditTime: 2024-04-19 14:24:17
* @Description:
*/
import request from '@/utils/request'
// 更新原片其他成本-历史
export function updateRawOthercostHis(data) {
return request({
url: '/monitoring/cost-othercost-his/update',
method: 'put',
data: data
})
}
// 获得原片其他成本-历史分页
export function getRawOthercostHisPage(query) {
return request({
url: '/monitoring/cost-othercost-his/page',
method: 'get',
params: query
})
}
// 获得原片其他成本-成本查询分页
export function getRawOthercostSunPage(query) {
return request({
url: '/monitoring/cost-othercost-log/page-sum',
method: 'get',
params: query
})
}
// 导出原片其他成本-成本查询 Excel
export function exportRawOthercostSunExcel(query) {
return request({
url: '/monitoring/cost-othercost-log/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 导出原片其他成本-历史 Excel
export function exportRawOthercostHisExcel(query) {
return request({
url: '/monitoring/cost-othercost-his/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

View File

@ -1,53 +0,0 @@
/*
* @Author: zwq
* @Date: 2024-04-18 16:53:17
* @LastEditors: zwq
* @LastEditTime: 2024-09-06 15:13:20
* @Description:
*/
import request from '@/utils/request'
// 更新深加工其他成本-历史
export function updateRawOthercostHis(data) {
return request({
url: '/monitoring/cost-deep-othercost-his/update',
method: 'put',
data: data
})
}
// 获得深加工其他成本-历史分页
export function getRawOthercostHisPage(query) {
return request({
url: '/monitoring/cost-deep-othercost-his/page',
method: 'get',
params: query
})
}
// 获得深加工其他成本-成本查询分页
export function getRawOthercostSunPage(query) {
return request({
url: '/monitoring/cost-deep-othercost-log/page-sum',
method: 'get',
params: query
})
}
// 导出深加工其他成本-成本查询 Excel
export function exportRawOthercostSunExcel(query) {
return request({
url: '/monitoring/cost-deep-othercost-log/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 导出深加工其他成本-历史 Excel
export function exportRawOthercostHisExcel(query) {
return request({
url: '/monitoring/cost-deep-othercost-his/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

View File

@ -1,68 +0,0 @@
/*
* @Author: zwq
* @Date: 2024-04-15 17:01:20
* @LastEditors: zwq
* @LastEditTime: 2024-09-06 14:12:09
* @Description:
*/
import request from '@/utils/request'
// 创建原片其他成本-记录
export function createRawOthercostLog(data) {
return request({
url: '/monitoring/cost-othercost-log/create',
method: 'post',
data: data
})
}
// 更新原片其他成本-记录
export function updateRawOthercostLog(data) {
return request({
url: '/monitoring/cost-othercost-log/update',
method: 'put',
data: data
})
}
// 删除原片其他成本-记录
export function deleteRawOthercostLog(id) {
return request({
url: '/monitoring/cost-othercost-log/delete?id=' + id,
method: 'delete'
})
}
// 获得原片其他成本-记录
export function getRawOthercostLog(id) {
return request({
url: '/monitoring/cost-othercost-log/get?id=' + id,
method: 'get'
})
}
// 获得原片其他成本-记录分页
export function getRawOthercostLogPage(query) {
return request({
url: '/monitoring/cost-othercost-log/page',
method: 'get',
params: query
})
}
// 导出原片其他成本-记录 Excel
export function exportRawOthercostLogExcel(query) {
return request({
url: '/monitoring/cost-othercost-log/export-log-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 获得所有原片其他成本-记录列表
export function getRawOthercostLogAll() {
return request({
url: '/monitoring/cost-othercost-log/listAll',
method: 'get'
})
}

View File

@ -1,68 +0,0 @@
/*
* @Author: zwq
* @Date: 2024-04-15 17:01:20
* @LastEditors: zwq
* @LastEditTime: 2024-04-22 14:59:35
* @Description:
*/
import request from '@/utils/request'
// 创建深加工其他成本-记录
export function createRawOthercostLog(data) {
return request({
url: '/monitoring/cost-deep-othercost-log/create',
method: 'post',
data: data
})
}
// 更新深加工其他成本-记录
export function updateRawOthercostLog(data) {
return request({
url: '/monitoring/cost-deep-othercost-log/update',
method: 'put',
data: data
})
}
// 删除深加工其他成本-记录
export function deleteRawOthercostLog(id) {
return request({
url: '/monitoring/cost-deep-othercost-log/delete?id=' + id,
method: 'delete'
})
}
// 获得深加工其他成本-记录
export function getRawOthercostLog(id) {
return request({
url: '/monitoring/cost-deep-othercost-log/get?id=' + id,
method: 'get'
})
}
// 获得深加工其他成本-记录分页
export function getRawOthercostLogPage(query) {
return request({
url: '/monitoring/cost-deep-othercost-log/page',
method: 'get',
params: query
})
}
// 导出深加工其他成本-记录 Excel
export function exportRawOthercostLogExcel(query) {
return request({
url: '/monitoring/cost-deep-othercost-log/export-log-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 获得所有深加工其他成本-记录列表
export function getRawOthercostLogAll() {
return request({
url: '/monitoring/cost-deep-othercost-log/listAll',
method: 'get'
})
}

View File

@ -1,53 +0,0 @@
/*
* @Author: zwq
* @Date: 2024-04-18 16:53:17
* @LastEditors: zwq
* @LastEditTime: 2024-09-02 14:43:30
* @Description:
*/
import request from '@/utils/request'
// 获得深加工成本分页
export function getDeepCostStatisticsPage(query) {
return request({
url: '/monitoring/cost-deep-cost-his/page',
method: 'get',
params: query
})
}
// 更新深加工成本-历史
export function updateDeepCostStatistics(data) {
return request({
url: '/monitoring/cost-deep-cost-his/update',
method: 'put',
data: data
})
}
// 获得深加工成本统计成本查询分页
export function getDeepCostStatisticsRealtimePage(query) {
return request({
url: '/monitoring/cost-deep-cost-realtime/page',
method: 'get',
params: query
})
}
// 导出深加工成本统计成本查询 Excel
export function exportDeepStatisticsRealtimeExcel(query) {
return request({
url: '/monitoring/cost-deep-cost-realtime/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 导出深加工成本统计-历史成本 Excel
export function exportDeepCostStatisticsHisExcel(query) {
return request({
url: '/monitoring/cost-deep-cost-his/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

View File

@ -1,68 +0,0 @@
/*
* @Author: zwq
* @Date: 2024-04-15 17:01:20
* @LastEditors: zwq
* @LastEditTime: 2024-04-22 14:55:00
* @Description:
*/
import request from '@/utils/request'
// 创建深加工其他成本-配置
export function createRawOthercostRule(data) {
return request({
url: '/monitoring/cost-deep-othercost-rule/create',
method: 'post',
data: data
})
}
// 更新深加工其他成本-配置
export function updateRawOthercostRule(data) {
return request({
url: '/monitoring/cost-deep-othercost-rule/update',
method: 'put',
data: data
})
}
// 删除深加工其他成本-配置
export function deleteRawOthercostRule(id) {
return request({
url: '/monitoring/cost-deep-othercost-rule/delete?id=' + id,
method: 'delete'
})
}
// 获得深加工其他成本-配置
export function getRawOthercostRule(id) {
return request({
url: '/monitoring/cost-deep-othercost-rule/get?id=' + id,
method: 'get'
})
}
// 获得深加工其他成本-配置分页
export function getRawOthercostRulePage(query) {
return request({
url: '/monitoring/cost-deep-othercost-rule/page',
method: 'get',
params: query
})
}
// 导出深加工其他成本-配置 Excel
export function exportRawOthercostRuleExcel(query) {
return request({
url: '/monitoring/cost-deep-othercost-rule/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 获得所有深加工其他成本-配置列表
export function getRawOthercostRuleAll() {
return request({
url: '/monitoring/cost-deep-othercost-rule/listAll',
method: 'get'
})
}

View File

@ -1,54 +0,0 @@
/*
* @Author: zwq
* @Date: 2024-04-18 16:53:17
* @LastEditors: zwq
* @LastEditTime: 2024-09-06 14:35:13
* @Description:
*/
import request from '@/utils/request'
// 获得原片成本分页
export function getRawCostStatisticsPage(query) {
return request({
url: '/monitoring/cost-origincost-his/page',
method: 'get',
params: query
})
}
// 更新原片成本-历史
export function updateRawCostStatistics(data) {
return request({
url: '/monitoring/cost-origincost-his/update',
method: 'put',
data: data
})
}
// 获得原片成本统计成本查询分页
export function getRawCostStatisticsRealtimePage(query) {
return request({
url: '/monitoring/cost-origin-cost-realtime/page',
method: 'get',
params: query
})
}
// 导出原片成本统计成本查询 Excel
export function exportRawStatisticsRealtimeExcel(query) {
return request({
url: '/monitoring/cost-origin-cost-realtime/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 导出原片成本统计-历史成本 Excel
export function exportRawCostStatisticsHisExcel(query) {
return request({
url: '/monitoring/cost-origincost-his/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

View File

@ -1,68 +0,0 @@
/*
* @Author: zwq
* @Date: 2024-04-15 17:01:20
* @LastEditors: zwq
* @LastEditTime: 2024-04-18 15:39:12
* @Description:
*/
import request from '@/utils/request'
// 创建原片其他成本-配置
export function createRawOthercostRule(data) {
return request({
url: '/monitoring/cost-othercost-rule/create',
method: 'post',
data: data
})
}
// 更新原片其他成本-配置
export function updateRawOthercostRule(data) {
return request({
url: '/monitoring/cost-othercost-rule/update',
method: 'put',
data: data
})
}
// 删除原片其他成本-配置
export function deleteRawOthercostRule(id) {
return request({
url: '/monitoring/cost-othercost-rule/delete?id=' + id,
method: 'delete'
})
}
// 获得原片其他成本-配置
export function getRawOthercostRule(id) {
return request({
url: '/monitoring/cost-othercost-rule/get?id=' + id,
method: 'get'
})
}
// 获得原片其他成本-配置分页
export function getRawOthercostRulePage(query) {
return request({
url: '/monitoring/cost-othercost-rule/page',
method: 'get',
params: query
})
}
// 导出原片其他成本-配置 Excel
export function exportRawOthercostRuleExcel(query) {
return request({
url: '/monitoring/cost-othercost-rule/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 获得所有原片其他成本-配置列表
export function getRawOthercostRuleAll() {
return request({
url: '/monitoring/cost-othercost-rule/listAll',
method: 'get'
})
}

View File

@ -43,14 +43,6 @@ export function getEnergyOverlimitLogPage(data) {
}) })
} }
// 获得手动抄表记录分页
export function getEnergyManualLogPage(data) {
return request({
url: '/monitoring/energy-overlimit-log/pageManual',
method: 'post',
data: data
})
}
// 导出能源超限记录 Excel // 导出能源超限记录 Excel
export function exportEnergyOverlimitLogExcel(query) { export function exportEnergyOverlimitLogExcel(query) {
return request({ return request({

View File

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="32px" viewBox="0 0 32 32" 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="现场看板tc—整体产线" transform="translate(-38.175000, -126.808988)">
<g id="编组备份" transform="translate(38.175000, 126.808988)">
<polygon id="Fill-1" fill="#CAE5DD" opacity="0" points="0 32 32 32 32 0 0 0"></polygon>
<path d="M24.1201333,5.07973333 L22.1468,5.07973333 L22.1468,6.3064 L24.1201333,6.3064 C24.7308,6.3064 25.2268,6.8024 25.2268,7.41306667 L25.2268,25.4530667 C25.2268,26.0650667 24.7308,26.5597333 24.1201333,26.5597333 L7.93346667,26.5597333 C7.32146667,26.5597333 6.8268,26.0650667 6.8268,25.4530667 L6.8268,7.41306667 C6.8268,6.8024 7.32146667,6.3064 7.93346667,6.3064 L10.2001333,6.3064 L10.2001333,5.07973333 L7.93346667,5.07973333 C6.64813333,5.08773333 5.6068,6.12773333 5.60013333,7.41306667 L5.60013333,25.4530667 C5.6068,26.7384 6.64813333,27.7797333 7.93346667,27.7864 L24.1334667,27.7864 C25.4188,27.7797333 26.4588,26.7384 26.4668,25.4530667 L26.4668,7.41306667 C26.4588,6.1224 25.4108,5.07973333 24.1201333,5.07973333" id="Fill-3" fill="#6EF9DE"></path>
<path d="M7.93333333,5.56026667 C6.90933333,5.56026667 6.08,6.3896 6.08,7.4136 L6.08,25.4536 C6.08,26.4776 6.90933333,27.3069333 7.93333333,27.3069333 L24.1333333,27.3069333 C25.156,27.3069333 25.9866667,26.4776 25.9866667,25.4536 L25.9866667,7.4136 C25.9866667,6.3896 25.156,5.56026667 24.1333333,5.56026667 L22.6,5.56026667 L22.6,5.78693333 L24.0933333,5.78693333 C24.9613333,5.78693333 25.6666667,6.49093333 25.6666667,7.36026667 L25.6666667,25.4002667 C25.6666667,26.2682667 24.9613333,26.9736 24.0933333,26.9736 L7.93333333,26.9736 C7.064,26.9736 6.36,26.2682667 6.36,25.4002667 L6.36,7.4136 C6.33066667,6.54426667 7.01066667,5.81626667 7.87866667,5.78693333 C7.89733333,5.78693333 7.91466667,5.78693333 7.93333333,5.78693333 L9.73333333,5.78693333 L9.73333333,5.50693333 L7.93333333,5.56026667 Z M24.8266667,28.2536 L7.21333333,28.2536 C6.05733333,28.2536 5.12,27.3162667 5.12,26.1602667 L5.12,6.70693333 C5.12,5.55093333 6.05733333,4.6136 7.21333333,4.6136 L10.6666667,4.6136 L10.6666667,6.78693333 L8.81333333,6.78693333 C7.97333333,6.78693333 7.29333333,7.46693333 7.29333333,8.30693333 L7.29333333,24.5602667 C7.29333333,25.3989333 7.97333333,26.0802667 8.81333333,26.0802667 L23.2266667,26.0802667 C24.0666667,26.0802667 24.7466667,25.3989333 24.7466667,24.5602667 L24.7466667,8.30693333 C24.7466667,7.46693333 24.0666667,6.78693333 23.2266667,6.78693333 L21.68,6.78693333 L21.68,4.6136 L24.8266667,4.6136 C25.9826667,4.6136 26.92,5.55093333 26.92,6.70693333 L26.92,26.1602667 C26.92,27.3162667 25.9826667,28.2536 24.8266667,28.2536 L24.8266667,28.2536 Z" id="Fill-5" fill="#6EF9DE"></path>
<path d="M11.3468,3.3864 L20.9068,3.3864 C21.7534667,3.3864 22.4401333,4.07306667 22.4401333,4.91973333 L22.4401333,6.1864 C22.4401333,7.03306667 21.7534667,7.71973333 20.9068,7.71973333 L11.3468,7.71973333 C10.5001333,7.71973333 9.81346667,7.03306667 9.81346667,6.1864 L9.81346667,4.91973333 C9.81346667,4.07306667 10.5001333,3.3864 11.3468,3.3864" id="Fill-7" fill="#6EF9DE"></path>
<path d="M21.7732,11.3864 C21.7732,12.0530667 21.5065333,12.3864 20.9598667,12.3864 L13.1065333,12.3864 C12.5732,12.3864 12.2932,12.0530667 12.2932,11.3864 C12.2932,10.7197333 12.5732,10.3997333 13.1065333,10.3997333 L20.9598667,10.3997333 C21.5065333,10.3997333 21.7732,10.7330667 21.7732,11.3864" id="Fill-9" fill="#6EF9E1"></path>
<path d="M10.2666667,10.4130667 L10.28,10.4130667 C10.824,10.4130667 11.2666667,10.8557333 11.2666667,11.3997333 L11.2666667,11.4130667 C11.2666667,11.9584 10.824,12.3997333 10.28,12.3997333 L10.2666667,12.3997333 C9.72133333,12.3997333 9.28,11.9584 9.28,11.4130667 L9.28,11.3997333 C9.28,10.8557333 9.72133333,10.4130667 10.2666667,10.4130667" id="Fill-11" fill="#6DF8E1"></path>
<path d="M21.7732,16.3597333 C21.7732,17.0264 21.3998667,17.3597333 20.6398667,17.3597333 L13.4398667,17.3597333 C12.6798667,17.3597333 12.2932,17.0264 12.2932,16.3597333 C12.2932,15.6930667 12.6798667,15.3597333 13.4398667,15.3597333 L20.6398667,15.3597333 C21.3998667,15.3597333 21.7732,15.6930667 21.7732,16.3597333" id="Fill-13" fill="#6EF9E1"></path>
<path d="M10.2666667,15.4130667 L10.28,15.4130667 C10.824,15.4130667 11.2666667,15.8557333 11.2666667,16.3997333 L11.2666667,16.4130667 C11.2666667,16.9584 10.824,17.3997333 10.28,17.3997333 L10.2666667,17.3997333 C9.72133333,17.3997333 9.28,16.9584 9.28,16.4130667 L9.28,16.3997333 C9.28,15.8557333 9.72133333,15.4130667 10.2666667,15.4130667" id="Fill-15" fill="#6DF8E1"></path>
<path d="M21.7732,21.3597333 C21.7732,22.0264 21.5065333,22.3597333 20.9598667,22.3597333 L13.1065333,22.3597333 C12.5732,22.3597333 12.2932,22.0264 12.2932,21.3597333 C12.2932,20.6930667 12.5732,20.3597333 13.1065333,20.3597333 L20.9598667,20.3597333 C21.5065333,20.3597333 21.7732,20.6930667 21.7732,21.3597333" id="Fill-17" fill="#6EF9E1"></path>
<path d="M10.2666667,20.3864 L10.28,20.3864 C10.824,20.3864 11.2666667,20.8290667 11.2666667,21.3730667 L11.2666667,21.3864 C11.2666667,21.9317333 10.824,22.3730667 10.28,22.3730667 L10.2666667,22.3730667 C9.72133333,22.3730667 9.28,21.9317333 9.28,21.3864 L9.28,21.3730667 C9.28,20.8290667 9.72133333,20.3864 10.2666667,20.3864" id="Fill-19" fill="#6DF8E1"></path>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>切片</title>
<defs>
<linearGradient x1="100%" y1="81.9999999%" x2="20.318998%" y2="18.0000001%" id="linearGradient-1">
<stop stop-color="#4BFFC8" offset="0%"></stop>
<stop stop-color="#45F2EC" offset="100%"></stop>
</linearGradient>
</defs>
<g id="秦皇岛/北方压延" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="现场看板tc—整体产线" transform="translate(-35.000000, -741.000000)" fill-rule="nonzero">
<g id="icon/可视化/柱状图" transform="translate(35.000000, 741.000000)">
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="32" height="32"></rect>
<path d="M6.07816026,6.07816026 L6.07816026,23.4413798 L28.4022997,23.4413798 L28.4022997,25.9218397 L3.5977003,25.9218397 L3.5977003,6.07816026 L6.07816026,6.07816026 Z M13.5195401,6.07816026 L13.5195401,22.2011498 L8.55862018,22.2011498 L8.55862018,6.07816026 L13.5195401,6.07816026 Z M20.9609199,11.0390801 L20.9609199,22.2011498 L16,22.2011498 L16,11.0390801 L20.9609199,11.0390801 Z M28.4022997,16 L28.4022997,22.2011498 L23.4413798,22.2011498 L23.4413798,16 L28.4022997,16 Z" id="形状" fill="url(#linearGradient-1)"></path>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="27px" height="32px" viewBox="0 0 27 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>产线备份 3</title>
<defs>
<linearGradient x1="100%" y1="84.4142661%" x2="20.318998%" y2="15.5857339%" id="linearGradient-1">
<stop stop-color="#4BFFC8" offset="0%"></stop>
<stop stop-color="#45F2EC" offset="100%"></stop>
</linearGradient>
</defs>
<g id="秦皇岛/北方压延" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="现场看板tc—整体产线" transform="translate(-456.000000, -740.000000)" fill-rule="nonzero">
<g id="产线备份-3" transform="translate(456.000000, 740.000000)">
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="27" height="32"></rect>
<path d="M5.9634842,21.3256682 C5.8209113,21.3358884 5.67787363,21.3358884 5.53530073,21.3256682 L5.53152795,21.3256682 C4.70985419,21.2655042 3.9028068,20.8665317 3.27496659,20.1284294 C1.90834447,18.5219016 1.90834447,15.9172034 3.27496659,14.3106756 C3.5291373,14.011848 3.81269745,13.7686207 4.11471142,13.5809616 L4.11389125,13.5765264 L4.1789034,13.5420735 C4.26583759,13.4907514 4.35456706,13.4437443 4.44485723,13.4011765 L16.0336968,7.2612301 L16.0353372,7.27016472 C18.3137697,6.10911436 21.061777,6.62333696 22.9243013,8.8128968 C25.3585662,11.6745456 25.3585662,16.314119 22.9243013,19.1757678 C21.7290674,20.580881 20.1691859,21.2960361 18.6027704,21.3212973 L18.6035632,21.3256682 L5.9634842,21.3256682 Z M5.625,20 C6.86761875,20 7.875,18.8061 7.875,17.3333333 C7.875,15.8605667 6.86761875,14.6666667 5.625,14.6666667 C4.382325,14.6666667 3.375,15.8605667 3.375,17.3333333 C3.375,18.8061 4.382325,20 5.625,20 Z M18.5625,18.6666667 C20.737088,18.6666667 22.5,16.5773202 22.5,14 C22.5,11.4226798 20.737088,9.33333333 18.5625,9.33333333 C16.3878602,9.33333333 14.625,11.4226798 14.625,14 C14.625,16.5773202 16.3878602,18.6666667 18.5625,18.6666667 Z M4.92857143,22.6666667 L22.5,22.6666667 L22.5,24.8888889 C22.5,25.1343611 22.3081339,25.3333333 22.0714286,25.3333333 L4.5,25.3333333 L4.5,23.1111111 C4.5,22.8656389 4.69186607,22.6666667 4.92857143,22.6666667 Z" id="形状" fill="url(#linearGradient-1)"></path>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>切片</title>
<defs>
<linearGradient x1="99.4683184%" y1="100%" x2="20.6346149%" y2="7.84095011e-14%" id="linearGradient-1">
<stop stop-color="#4BFFC8" offset="0%"></stop>
<stop stop-color="#45F2EC" offset="100%"></stop>
</linearGradient>
</defs>
<g id="秦皇岛/北方压延" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="现场看板tc—整体产线" transform="translate(-1514.000000, -127.000000)" fill-rule="nonzero">
<g id="icon/可视化/模块" transform="translate(1514.000000, 127.000000)">
<rect id="矩形" fill="#000000" opacity="0" x="0" y="7.10542736e-14" width="32" height="32"></rect>
<path d="M25.7527221,14.1816202 L24.188579,14.1816202 L24.188579,9.49373791 C24.1860753,8.90287145 23.7063759,8.4252046 23.1155041,8.42520991 L17.3681876,8.42520991 L17.3681876,6.56551655 C17.370851,5.66122185 17.0084214,4.79412914 16.363022,4.1607133 C15.7176226,3.52729745 14.8438903,3.18118084 13.9398043,3.20079015 C12.066652,3.28658042 10.6006443,4.84522051 10.629641,6.72011209 L10.629641,8.42520991 L4.88232453,8.42520991 C4.29145277,8.4252046 3.81175331,8.90287145 3.80921104,9.49373791 L3.80921104,13.0994515 C3.80682438,13.385621 3.9188086,13.6609038 4.12031265,13.8641155 C4.32181669,14.0673272 4.59614473,14.1816305 4.88232453,14.1816202 L5.48251897,14.1816202 C7.35572581,14.1525356 8.91367406,15.6158797 9.00184091,17.4872366 C9.01900932,18.3913465 8.67055578,19.2641187 8.03543236,19.9078018 C7.40030895,20.5514848 6.53227944,20.9115903 5.62802066,20.9065261 L4.88232453,20.9065261 C4.28968163,20.9065261 3.80921104,21.3869581 3.80921104,21.979601 L3.80921104,27.7269175 C3.80921104,28.3195604 4.28968163,28.8000021 4.88232453,28.8000021 L9.55656609,28.8000021 C9.84153405,28.8012076 10.1151815,28.6885421 10.3166861,28.4870375 C10.5181907,28.2855329 10.6308562,28.0118854 10.629641,27.7269175 L10.629641,27.1949269 C10.6006443,25.3200353 12.066652,23.7613953 13.9398043,23.675605 C14.8438903,23.6559957 15.7176226,24.0021123 16.363022,24.6355281 C17.0084214,25.268944 17.370851,26.1360367 17.3681876,27.0403314 L17.3681876,27.7269175 C17.3669784,28.0110957 17.479021,28.2840495 17.6795401,28.4854219 C17.8800592,28.6867943 18.1525348,28.8000021 18.4367156,28.8000021 L23.1155041,28.8000021 C23.708147,28.8000021 24.188579,28.3195604 24.188579,27.7269175 L24.188579,20.9065261 L25.9027707,20.9065261 C26.8070472,20.910389 27.6746078,20.5491212 28.3088772,19.9045802 C28.9431467,19.2600392 29.290432,18.3867874 29.272044,17.4826896 C29.1815049,15.6131286 27.6242468,14.1524446 25.7527221,14.1816202 Z" id="路径" fill="url(#linearGradient-1)"></path>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -1,11 +0,0 @@
<?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">
<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>

Before

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" 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" opacity="0.65">
<g id="上传_Resources/Button" transform="translate(-12.000000, -9.000000)">
<g id="上传" transform="translate(12.000000, 9.000000)">
<g id="upload" transform="translate(0.875000, 0.875000)" fill="currentColor" fill-rule="nonzero">
<path d="M5.80371094,0.138085937 C5.8953125,0.046484375 6.01699219,0 6.13867188,0 C6.26035156,0 6.38066406,0.046484375 6.47363281,0.138085937 L8.60371094,2.26953125 C8.78828125,2.45410156 8.78828125,2.75351562 8.60371094,2.93808594 C8.51484375,3.02695312 8.39589844,3.07617188 8.27011719,3.07617188 C8.14433594,3.07617188 8.02539062,3.02695312 7.93652344,2.93808594 L6.61171875,1.61328125 L6.61171875,9.51289062 C6.61171875,9.77402344 6.39980469,9.9859375 6.13867188,9.9859375 C5.87753906,9.9859375 5.665625,9.77402344 5.665625,9.51289062 L5.665625,1.61328125 L4.34082031,2.93808594 C4.15625,3.12265625 3.85683594,3.12265625 3.67363281,2.93808594 C3.4890625,2.75351562 3.4890625,2.45410156 3.67226563,2.26953125 L5.80371094,0.138085937 Z M11.7769531,7.88046875 C11.5158203,7.88046875 11.3039063,8.09238281 11.3039063,8.35351563 L11.3039063,11.025 C11.3039063,11.1794922 11.178125,11.3066406 11.0222656,11.3066406 L1.22636719,11.3066406 C1.071875,11.3066406 0.944726562,11.1808594 0.944726562,11.025 L0.944726562,8.35214844 C0.944726562,8.09101563 0.7328125,7.87910156 0.471679688,7.87910156 C0.210546875,7.87910156 0,8.09238281 0,8.35214844 L0,11.3996094 C0,11.8685547 0.381445313,12.2486328 0.849023437,12.2486328 L11.4009766,12.2486328 C11.8699219,12.2486328 12.25,11.8671875 12.25,11.3996094 L12.25,8.35214844 C12.25,8.09238281 12.0380859,7.88046875 11.7769531,7.88046875 Z" id="Shape"></path>
</g>
<rect id="Rectangle-49" x="0" y="0" width="14" height="14"></rect>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -1,9 +0,0 @@
<?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">
<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>

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 595 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 550 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -1,13 +1,10 @@
/* ===== PC DESIGN ===== */ /* ===== PC DESIGN ===== */
$W: 1080; $W: 1000;
$H: 1920; $H: 1920;
// $picW: 438; $picW: 438;
// $picH: 560; $picH: 560;
$picW: 1080; $formW: 320;
$picH: 1118;
$formW: 420;
$tabW: $formW / 2; $tabW: $formW / 2;
// $rowH: 56;
$rowH: 56; $rowH: 56;
$buttonH: 50; $buttonH: 50;
@ -18,7 +15,6 @@ $containerBgImage: '../assets/images/bg.png';
$logoWidth: 417px; $logoWidth: 417px;
$logoHeight: 64px; $logoHeight: 64px;
$logoImage: '../assets/logo/login-logo.png'; $logoImage: '../assets/logo/login-logo.png';
$cnbmLogo: '../assets/logo/cnbm.png';
// container-content // container-content
$contentWidth: round($W / $H * 100) * 1vw; $contentWidth: round($W / $H * 100) * 1vw;
$contentHeight: round($picH / $W * 100) / 100 * $contentWidth; $contentHeight: round($picH / $W * 100) / 100 * $contentWidth;
@ -26,8 +22,7 @@ $contentBgColor: #ffffff;
// container-content-pic // container-content-pic
$picWidth: round($picW / $H * 100) * 1vw; $picWidth: round($picW / $H * 100) * 1vw;
$picHeight: inherit; $picHeight: inherit;
// $picImage: '../assets/images/pic.png'; $picImage: '../assets/images/pic.png';
$picImage: '../assets/images/login-bg.png';
// container-content-field // container-content-field
$fieldWidth: $contentWidth - $picWidth; $fieldWidth: $contentWidth - $picWidth;
$fieldHeight: inherit; $fieldHeight: inherit;
@ -39,311 +34,232 @@ $buttonHeight: $buttonH * 1px;
// - - - - - 页面基础设置 // - - - - - 页面基础设置
.container { .container {
.login-code { .login-code {
width: 33%; width: 33%;
height: 38px; height: 38px;
float: right; float: right;
img { img {
cursor: pointer; cursor: pointer;
width: 100%; width:100%;max-width:100px; height:auto;
max-width: 100px; vertical-align: middle;
height: auto; }
vertical-align: middle; }
} // 元素
} width: inherit;
// 元素 height: inherit;
width: inherit; min-width: 1080px;
height: inherit; min-height: 620px;
min-width: 1080px; background-color: $containerBgColor;
min-height: 620px; background-image: url($containerBgImage);
background-color: $containerBgColor; background-size: cover;
// background-image: url($containerBgImage); // 定位
background-size: cover; position: relative;
// 定位 display: flex;
position: relative; justify-content: center;
display: flex; align-items: center;
justify-content: center; // 文字
align-items: center; font-size: 14px;
// 文字 font-family: Microsoft YaHei;
font-size: 14px; font-weight: 400;
font-family: Microsoft YaHei; .logo {
font-weight: 400; // 元素
.logo { width: $logoWidth;
// 元素 height: $logoHeight;
width: $logoWidth; // background-image: url($logoImage);
height: $logoHeight; // background-size: contain;
// background-image: url($logoImage); // 定位
// background-size: contain; position: absolute;
// 定位 top: 50px;
position: absolute; left: 50%;
top: 50px; margin-left: -$logoWidth/2;
left: 50%; }
margin-left: -$logoWidth/2; .content {
} // 元素
.content { width: $contentWidth;
// 元素 height: $contentHeight;
// width: $contentWidth; background-color: #ffffff;
// height: $contentHeight; box-shadow: 0px 16px 40px rgba(0, 0, 0, 0.07);
width: 100%; border-radius: 20px;
height: 100%; // 定位
background-color: #ffffff; position: relative;
// box-shadow: 0px 16px 40px rgba(0, 0, 0, 0.07); .pic {
// border-radius: 20px; // 元素
// 定位 width: $picWidth;
position: relative; height: $picHeight;
display: flex; background-image: url($picImage);
background-repeat: no-repeat;
.pic { background-size: cover;
// 元素 border-radius: 20px 0 0 20px;
width: $picWidth; // 定位
height: $picHeight; position: absolute;
background-image: url($picImage); top: 0;
background-repeat: no-repeat; left: 0;
background-size: 100% 100%; }
background-position: 0 0; .field {
position: relative; width: $fieldWidth;
height: $fieldHeight;
&::after { // 定位
content: ''; position: absolute;
position: absolute; top: 0;
top: 0; left: $picWidth;
left: 0; display:flex;
width: 100%; justify-content: center;
height: 100%; align-items: center;
// background: #f003; .pc-title{ width: 100%; clear: both;}
display: inline-block; .mobile-title,
} .mobile-switch {
} display: none;
.field { }
// background: #ccc3; .form {
position: relative; box-sizing: border-box;
padding-top: 196px; width: $formWidth;
flex: 1; // - - - tab
display: flex; :deep(.el-tabs__content) {
flex-direction: column; padding: 20px 0 0;
// justify-content: center; }
align-items: center; :deep(.el-tabs__item) {
.pc-title { // 元素
width: 100%; width: $tabWidth;
text-align: center; height: $rowHeight;
clear: both; padding: 0;
position: relative; // 文字
top: -36px; line-height: $rowHeight;
color: #666666;
// h3.title { }
// position: relative; :deep(.el-tabs__item.is-active) {
font-weight: bold;
// &::before { color: #2F53EB;
// content: ''; }
// background: url($cnbmLogo) 100% / 100% no-repeat; :deep(.el-tabs__active-bar) {
// height: 48px; height: 3px;
// width: 48px; border-radius: 2px;
// position: absolute; }
// left: 0px; // - - - input
// top: 4px; :deep(.el-input__inner) {
// display: inline-block; // 元素
// } width: 100%;
// } height: $rowHeight;
} background: #f5f5f5;
.mobile-title, border: 0;
.mobile-switch { border-radius: 28px;
display: none; // 文字
} text-align: center;
.form { line-height: 19px;
margin-top: 32px; color: #262626;
box-sizing: border-box; }
// width: $formWidth; .code:deep(.el-input__inner) {
width: 100%; padding: 0 24px;
// - - - tab // 文字
:deep(.el-tabs__nav) { text-align: left;
// background: #f0f3; }
} :deep(.el-input__inner::-webkit-input-placeholder) { /* WebKit browsers */
:deep(.el-tabs__content) { font-weight: 400;
padding: 20px 0 0; color: #8C8C8C;
} }
:deep(.el-tabs__item) { :deep(.el-input__inner:-moz-placeholder) { /* Mozilla Firefox 4 to 18 */
user-select: none; font-weight: 400;
// 元素 color: #8C8C8C;
width: $tabWidth; }
height: $rowHeight; :deep(.el-input__inner::-moz-placeholder) { /* Mozilla Firefox 19+ */
padding: 0; font-weight: 400;
// 文字 color: #8C8C8C;
line-height: $rowHeight; opacity:1;
color: #666666; }
font-size: 18px; :deep(.el-input__inner:-ms-input-placeholder) { /* Internet Explorer 10+ */
font-weight: 400; font-weight: 400;
text-align: center; color: #8C8C8C !important;
} }
:deep(.el-tabs__item.is-active) { :deep(.el-form-item) {
font-weight: 500; position: relative;
color: #2f53eb; .button-code {
} // 元素
:deep(.el-tabs__active-bar) { height: $rowHeight;
height: 3px; box-sizing: border-box;
border-radius: 2px; // 定位
} position: absolute;
// - - - input top: 0;
:deep(.el-input__inner) { right: 20px;
// 元素 z-index: 1;
width: 100%; // 文字
height: $rowHeight; line-height: 20px;
background: #f5f5f5; font-size: 14px;
border: 0; font-family: PingFang SC;
border-radius: 28px; font-weight: 400;
// 文字 color: #2F53EB;
text-align: center; span {
line-height: 19px; padding-left: 15px;
color: #262626; border-left: 2px solid #D9D9D9;
} }
.code:deep(.el-input__inner) { }
padding: 0 24px; }
// 文字 :deep(.el-form-item__error) {
text-align: left; padding-left: 24px;
} }
:deep(.el-input__inner::-webkit-input-placeholder) { .button {
/* WebKit browsers */ width: 100%;
font-weight: 400; height: $buttonHeight;
color: #8c8c8c; background: rgba(24, 144, 255, 0.2);
} border: 0;
:deep(.el-input__inner:-moz-placeholder) { border-radius: 24px;
/* Mozilla Firefox 4 to 18 */ margin-bottom: 20px;
font-weight: 400; // 文字
color: #8c8c8c; line-height: 26px;
} font-size: 20px;
:deep(.el-input__inner::-moz-placeholder) { color: #FFFFFF;
/* Mozilla Firefox 19+ */ }
font-weight: 400; .button-active {
color: #8c8c8c; background: #2F53EB;
opacity: 1; box-shadow: 0px 2px 8px rgba(0, 80, 184, 0.2);
} }
:deep(.el-input__inner:-ms-input-placeholder) { }
/* Internet Explorer 10+ */ }
font-weight: 400; }
color: #8c8c8c !important; .footer {
} // 元素
:deep(.el-form-item) { height: 16px;
position: relative; line-height: 16px;
.button-code { font-size: 12px;
// 元素 color: #8c8c8c;
height: $rowHeight; // 定位
box-sizing: border-box; position: absolute;
// 定位 bottom: 30px;
position: absolute; a,
top: 0; a:hover,
right: 20px; a:active {
z-index: 1; color: inherit;
// 文字 text-decoration: none;
line-height: 20px; }
font-size: 14px; }
font-family: PingFang SC;
font-weight: 400;
color: #2f53eb;
span {
padding-left: 15px;
border-left: 2px solid #d9d9d9;
}
}
}
:deep(.el-form-item__error) {
padding-left: 24px;
}
.button {
width: 100%;
height: $buttonHeight;
background: rgba(24, 144, 255, 0.2);
border: 0;
border-radius: 24px;
margin-bottom: 20px;
// 文字
line-height: 26px;
font-size: 20px;
color: #ffffff;
}
.button-active {
background: #2f53eb;
box-shadow: 0px 2px 8px rgba(0, 80, 184, 0.2);
}
}
}
}
.login-form {
* {
user-select: none;
}
// - - - input
:deep(.el-input__inner) {
// 元素
width: 420px;
height: 66px;
color: #262626;
font-size: 18px;
}
:deep(.el-checkbox__label) {
font-size: 18px;
line-height: 14px;
}
}
.footer {
user-select: none;
// 元素
height: 16px;
line-height: 16px;
font-size: 12px;
color: #8c8c8c;
// 定位
position: absolute;
bottom: 30px;
a,
a:hover,
a:active {
color: inherit;
text-decoration: none;
}
}
} }
// - - - - - PC 最小尺寸设置 // - - - - - PC 最小尺寸设置
@media screen and (min-width: 599px) and (max-width: 1366px) { @media screen and (min-width: 599px) and (max-width: 1366px) {
.container { .container {
min-width: 599px; .content {
.content { width: 710px;
// width: 710px; height: 397px;
// height: 397px; .pic {
width: 100%; width: 314px;
height: 100%; }
.pic { .field {
// width: 314px; width: calc(710px - 314px);
display: none; left: 314px;
} .form {
.field { width: 320px;
// width: calc(710px - 314px); :deep(.el-input__inner) {
// left: 314px; width: 320px;
// justify-content: center; height: 56px;
width: 100%; }
.button {
.pc-title { height: 50px;
h3 { }
font-size: 2.4rem !important; }
} }
} }
}
.form {
// width: 320px;
:deep(.el-input__inner) {
width: 320px;
height: 56px;
}
.button {
height: 50px;
}
}
}
}
}
} }
/* ===== MOBILE DESIGN ===== */ /* ===== MOBILE DESIGN ===== */
$mobileW: 375; $mobileW: 375;
$mobileH: 812; $mobileH: 812;
@ -357,142 +273,115 @@ $mobileButtonH: 48;
$mobileContainerBgImage: '../assets/images/bg-mobile.png'; $mobileContainerBgImage: '../assets/images/bg-mobile.png';
// container-content // container-content
$mobileContentWidth: round($mobileContentW / $mobileW * 100) * 1vw; $mobileContentWidth: round($mobileContentW / $mobileW * 100) * 1vw;
$mobileContentHeight: round($mobileContentH / $mobileW * 100) / 100 * $mobileContentHeight: round($mobileContentH / $mobileW * 100) / 100 * $mobileContentWidth;
$mobileContentWidth;
// container-content-field-form // container-content-field-form
$mobileFormWidth: round($mobileFormW / $mobileW * 100) * 1vw; $mobileFormWidth: round($mobileFormW / $mobileW *100) * 1vw;
$mobileRowHeight: $mobileRowH * 1px; $mobileRowHeight: $mobileRowH * 1px;
$mobileButtonHeight: $mobileButtonH * 1px; $mobileButtonHeight: $mobileButtonH * 1px;
$iconBgImage: '../assets/images/icon.png'; $iconBgImage: '../assets/images/icon.png';
// - - - - - 移动端设置 // - - - - - 移动端设置
@media screen and (max-width: 599px) { @media screen and (max-width: 599px) {
.container { .container {
// 元素 // 元素
background-image: url($mobileContainerBgImage); background-image: url($mobileContainerBgImage);
min-width: 280px; min-width: 280px;
min-height: 568px; min-height: 568px;
// 文字 // 文字
font-size: 14px; font-size: 17px;
font-family: PingFang SC; font-family: PingFang SC;
font-weight: bold; font-weight: bold;
.logo { .logo {
display: none; display: none;
} }
.pc-title { .content {
display: none; // 元素
} width: $mobileContentWidth;
height: $mobileContentHeight;
.content { min-width: 250px;
// 元素 min-height: 340px;
width: $mobileContentWidth; // 定位
height: $mobileContentHeight; display: flex;
min-width: 250px; justify-content: center;
min-height: 340px; align-items: center;
// 定位 .pic {
display: flex; display: none;
justify-content: center; }
align-items: center; .field {
.pic { // 元素
display: none; width: inherit;
} min-height: inherit;
.field { // 定位
padding: 0; left: 0;
// 元素 display: flex;
width: inherit; flex-direction: column;
min-height: inherit; .mobile-title {
// 定位 // 元素
left: 0; margin: 0 0 20px;
display: flex; display: block;
flex-direction: column; }
.form {
.mobile-title { width: $mobileFormWidth;
// 元素 // - - - tab
margin: 0; :deep(.el-tabs__header) {
display: block; display: none;
} }
:deep(.el-tabs__content) {
.form { padding: 0;
}
// - - - input
:deep(.el-input__inner) {
height: $mobileRowHeight;
line-height: 24px;
// 文字
text-align: center;
color: #262626;
}
:deep(.el-form-item) {
.button-code {
// 元素
height: $mobileRowHeight;
}
}
.button {
height: $mobileButtonHeight;
line-height: 24px;
color: #FFFFFF;
}
}
.mobile-switch {
display: block;
line-height: 20px;
font-size: 14px;
font-weight: 400;
color: #595959;
margin: 0; margin: 0;
width: $mobileFormWidth; .icon {
// - - - tab width: 14px;
:deep(.el-tabs__header) { height: 14px;
display: none; display: inline-block;
} background-image: url($iconBgImage);
:deep(.el-tabs__content) { background-size: cover;
padding: 0; }
} }
// - - - input .mobile-switch:hover {
:deep(.el-input__inner) { cursor: pointer;
height: $mobileRowHeight; }
line-height: 24px; }
// 文字 }
text-align: center; .footer {
color: #262626; // 元素
} font-size: 12px;
:deep(.el-form-item) { font-family: PingFang SC;
.button-code { font-weight: 400;
// 元素 line-height: 17px;
height: $mobileRowHeight; color: #333333;
} opacity: 0.6;
} // 定位
.button { position: absolute;
height: $mobileButtonHeight; bottom: 20px;
line-height: 24px; }
color: #ffffff; }
}
}
.login-form {
:deep(.el-input__inner) {
height: $mobileRowHeight;
line-height: 24px;
// 文字
text-align: center;
color: #262626;
}
:deep(#button-form-item) {
margin: 0 !important;
button {
// 元素
height: $mobileRowHeight;
}
}
}
.mobile-switch {
display: block;
line-height: 20px;
font-size: 14px;
font-weight: 400;
color: #595959;
margin: 0;
.icon {
width: 14px;
height: 14px;
display: inline-block;
background-image: url($iconBgImage);
background-size: cover;
}
}
.mobile-switch:hover {
cursor: pointer;
}
}
}
.footer {
// 元素
font-size: 12px;
font-family: PingFang SC;
font-weight: 400;
line-height: 17px;
color: #333333;
opacity: 0.6;
// 定位
// position: absolute;
bottom: -32px;
}
}
} }

View File

@ -1,132 +0,0 @@
<!--
filename: index.vue
author: liubin
date: 2024-04-02 09:49:36
description:
-->
<template>
<!-- 按钮切换 -->
<div v-if="buttonMode" class="button-nav">
<button
v-for="m in menus"
:key="m"
@click="currentMenu = m"
:data-text="m"
:class="[m === currentMenu ? 'active' : '']"
></button>
</div>
<!-- 标签切换 -->
<div v-else class="custom-tabs" style="height: 100%; width: 100%">
<el-tabs class="tag-nav" v-model="currentMenu" style="height: 100%">
<el-tab-pane
v-for="(m, idx) in menus"
:key="m"
:label="idx == 0 ? `\u2002${m}\u2002` : `\u3000${m}\u3000`"
:name="m"
>
<slot :name="`tab${idx + 1}`"></slot>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
export default {
name: "ButtonNav",
props: {
menus: {
type: Array,
required: true,
default: () => [],
validator: (val) => {
return val.length > 0;
},
},
buttonMode: {
type: Boolean,
default: true,
},
},
data() {
return {
currentMenu: "",
};
},
created() {
this.currentMenu = this.menus[0];
},
watch: {
currentMenu(val) {
this.$emit("change", val);
},
},
};
</script>
<style scoped lang="scss">
.button-nav {
width: 100%;
display: flex;
gap: 12px;
* {
user-select: none;
}
button {
cursor: pointer;
appearance: none;
outline: none;
border: none;
background: #fff;
border-radius: 8px;
padding: 15px;
color: #888;
letter-spacing: 2px;
flex: 1;
box-sizing: padding-box;
position: relative;
&::after {
content: attr(data-text);
position: absolute;
top: 5px;
left: 50%;
font-size: 16px;
font-weight: 500;
transform: translate(-50%);
}
&.active {
color: #111;
//border-bottom: 2px solid #0b58ff;
box-shadow: 0px 2px 1px 1px #0b58ff;
}
}
}
</style>
<style scoped>
.custom-tabs >>> .el-tabs__header {
margin-bottom: 8px;
display: inline-block;
/* transform: translateY(-12px); */
}
.custom-tabs >>> .el-tabs__item {
padding-left: 0px !important;
padding-right: 0px !important;
line-height: 36px !important;
height: 36px;
}
.custom-tabs >>> .el-tabs__content {
height: calc(100% - 42px);
}
.custom-tabs >>> .el-tab-pane {
box-sizing: border-box;
height: 100%;
padding: 20px;
border: 10px solid #f002;
}
</style>

View File

@ -1,4 +1,4 @@
<!-- <!--
filename: dialogForm.vue filename: dialogForm.vue
author: liubin author: liubin
date: 2023-08-15 10:32:36 date: 2023-08-15 10:32:36
@ -83,22 +83,18 @@
:on-success="handleUploadSuccess" :on-success="handleUploadSuccess"
v-bind="col.bind"> v-bind="col.bind">
<el-button size="mini" :disabled="col.bind?.disabled || false"> <el-button size="mini" :disabled="col.bind?.disabled || false">
<svg-icon
icon-class="icon-upload"
style="color: inherit"></svg-icon>
上传文件 上传文件
</el-button> </el-button>
<div class="el-upload__tip" slot="tip" v-if="col.uploadTips"> <div class="el-upload__tip" slot="tip" v-if="col.uploadTips">
{{ col.uploadTips || '只能上传jpg/png文件, 大小不超过2MB' }} {{ col.uploadTips || '只能上传jpg/png文件, 大小不超过2MB' }}
</div> </div>
</el-upload> </el-upload>
<uploadedFile <uploadedFile
class="file" class="file"
v-for="file in form[col.prop] || []" v-for="file in form[col.prop] || []"
:file="file" :file="file"
:key="file.fileUrl" @delete="handleDeleteFile(file)" />
@delete="handleDeleteFile(file)"
@Preview="handlePreview(file)" />
</div> </div>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -136,11 +132,9 @@ const uploadedFile = {
}, },
methods: { methods: {
handleDelete() { handleDelete() {
console.log('emit delete event')
this.$emit('delete', this.file); this.$emit('delete', this.file);
}, },
handlePreview() {
this.$emit('Preview', this.file);
},
}, },
mounted() {}, mounted() {},
render: function (h) { render: function (h) {
@ -159,7 +153,7 @@ const uploadedFile = {
cursor: 'pointer', cursor: 'pointer',
display: 'inline-block', display: 'inline-block',
}}> }}>
<el-button onClick={this.handlePreview}>{this.file.fileName}</el-button> {this.file.fileName}
<el-button <el-button
type="text" type="text"
icon="el-icon-close" icon="el-icon-close"
@ -193,10 +187,6 @@ export default {
type: Boolean, type: Boolean,
default: false, default: false,
}, },
hasFile: {
type: Boolean,
default: false,
},
labelPosition: { labelPosition: {
type: String, type: String,
default: 'right', default: 'right',
@ -229,6 +219,7 @@ export default {
watch: { watch: {
rows: { rows: {
handler() { handler() {
console.log('watch triggered!');
this.$nextTick(() => { this.$nextTick(() => {
this.handleOptions('watch'); this.handleOptions('watch');
}); });
@ -239,9 +230,6 @@ export default {
dataForm: { dataForm: {
handler(val) { handler(val) {
this.form = JSON.parse(JSON.stringify(val)); this.form = JSON.parse(JSON.stringify(val));
if (this.hasFile) {
this.form.files = this.form.files ?? [];
}
}, },
deep: true, deep: true,
immediate: true, immediate: true,
@ -259,20 +247,6 @@ export default {
resetFields(args) { resetFields(args) {
return this.$refs.form.resetFields(args); return this.$refs.form.resetFields(args);
}, },
async handlePreview(file) {
const data = await this.$axios({
url: file.fileUrl,
method: 'get',
responseType: 'blob',
});
const link = document.createElement('a');
link.href = window.URL.createObjectURL(new Blob([data]));
link.download = file.fileName;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
window.URL.revokeObjectURL(link.href);
},
// getCode // getCode
async getCode(url) { async getCode(url) {
const response = await this.$axios(url); const response = await this.$axios(url);
@ -372,9 +346,7 @@ export default {
if (!promiseList.length) this.formLoading = false; if (!promiseList.length) this.formLoading = false;
}, },
// //
beforeUpload(file) { beforeUpload() {},
console.log(file)
},
// bind // bind
handleUploadSuccess(response, file, fileList) { handleUploadSuccess(response, file, fileList) {
this.form.files.push({ this.form.files.push({
@ -395,9 +367,7 @@ export default {
}, },
handleDeleteFile(file) { handleDeleteFile(file) {
this.form.files = this.form.files.filter( this.form.files = this.form.files.filter(item => item.fileUrl != file.fileUrl);
(item) => item.fileUrl != file.fileUrl
);
this.$emit('update', this.form); this.$emit('update', this.form);
}, },
}, },

View File

@ -1,94 +0,0 @@
/*
* @Date: 2020-12-29 16:49:28
* @LastEditors: zwq
* @LastEditTime: 2024-09-11 13:40:48
* @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: '年',
},
manual: {
1: '手动',
0: '自动',
},
}
// 日期格式化
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(),
w: '',
}
const time_str = format.replace(/{([ymdhisaw])+}/g, (result, key) => {
let value = formatObj[key]
// Note: getDay() returns 0 on Sunday
if (key === 'a') {
return ['日', '一', '二', '三', '四', '五', '六'][value]
}
if (key === 'w') {
const current = new Date(time);
current.setHours(0, 0, 0);
current.setDate(current.getDate() + 4 - (current.getDay() || 7));
const firstThursday = new Date(current.getFullYear(), 0, 4);
firstThursday.setDate(firstThursday.getDate() + 4 - (firstThursday.getDay() || 7));
const time1 = current.getTime() - firstThursday.getTime();
const weeks = Math.ceil(time1 / (7 * 24 * 3600 * 1000));
return (weeks + 1)
}
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]
}
}

View File

@ -1,122 +0,0 @@
/*
* @Author: zwq
* @Date: 2022-08-24 11:19:43
* @LastEditors: zwq
* @LastEditTime: 2024-04-10 15:46:19
* @Description:
*/
import { listData } from "@/api/system/dict/data"; //数据字典接口
export default {
data() {
/* eslint-disable */
return {
urlOptions: {
createURL: '', //新增接口
updateURL: '', //编辑提交接口
infoURL: '', //编辑时获取单条数据接口
codeURL: '', //获取code接口返回结果为dataForm.code字段
optionArrUrl: [], //需要获取下拉框的方法数组
optionArr: {}, //需要获取下拉框的方法数组的返回结果
dictNameList: [], //数据字典name数组
dictArr: {}, //需要获取数据字典的方法数组的返回结果
},
visible: false,
setData: false, // 是否需要【编辑时获取单条数据接口】返回的数据操作
}
},
created() {
},
activated() {
},
methods: {
init(id) {
this.dataForm.id = id || null;
this.visible = true;
if (this.urlOptions.optionArrUrl.length > 0) {
this.getArr()
}
if (this.urlOptions.dictNameList.length > 0) {
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.codeURL) {
this.getCode()
}
}
});
},
/** 获取code */
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.urlOptions.dictNameList.forEach((item,index)=>{
const queryParams = {
pageNo: 1,
pageSize: 99,
dictType: item,
}
listData(queryParams).then(response => {
this.$set(this.urlOptions.dictArr, `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");
});
});
},
/** 清空form */
formClear() {
if (this.$refs.dataForm!==undefined) {
this.$refs.dataForm.resetFields();
}
}
}
}

View File

@ -1,128 +0,0 @@
/*
* @Author: zwq
* @Date: 2022-08-24 11:19:43
* @LastEditors: zwq
* @LastEditTime: 2024-04-02 09:33:29
* @Description:
*/
export default {
data() {
/* eslint-disable */
return {
urlOptions: {
getDataListURL: '', //获取table接口
deleteURL: '', //删除接口
exportURL: '' //导出接口
},
tableData: [], //table数据
listQuery: { //分页
pageSize: 10,
pageNo: 1,
total: 1,
},
exportLoading: false, //导出完成的加载状态是否开启
dataListLoading: false, //获取table的加载状态是否开启
addOrEditTitle: '', //dialog的title
addOrUpdateVisible: false, //dialog状态
}
},
created() {
},
mounted() {
this.getDataList()
},
methods: {
// 获取数据列表
getDataList() {
this.dataListLoading = true;
this.urlOptions.getDataListURL(this.listQuery).then(response => {
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.addOrEditTitle = "新增";
this.addOrUpdateVisible = true;
this.$nextTick(() => {
this.$refs.addOrUpdate.init(id);
});
},
//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 {
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(() => { });
},
// dialog取消
handleCancel() {
this.$refs.addOrUpdate.formClear()
this.addOrUpdateVisible = false
this.addOrEditTitle = ''
},
// dialog确定
handleConfirm() {
this.$refs.addOrUpdate.dataFormSubmit()
},
// dialog的父组件方法this.$emit("refreshDataList");
successSubmit() {
this.handleCancel()
this.getDataList()
},
/** 导出按钮操作 */
handleExport() {
// 处理查询参数
let params = { ...this.queryParams };
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(() => { });
}
}
}

View File

@ -1,20 +0,0 @@
export default {
data() {
return {
tableH: this.tableHeight(260),
};
},
created() {
this.tableH = this?.heightNum ? this.tableHeight(this.heightNum) : this.tableHeight(260);
window.addEventListener('resize', this._setTableHeight);
},
destroyed() {
window.removeEventListener('resize', this._setTableHeight);
},
methods: {
_setTableHeight() {
this.tableH = this?.heightNum ? this.tableHeight(this.heightNum) : this.tableHeight(260);
// this.tableH = this.tableHeight(260);
},
},
};

View File

@ -1,20 +0,0 @@
export default {
data() {
return {
tableH: this.tableHeight(260),
};
},
created() {
this.tableH = this?.heightNum ? this.tableHeight(this.heightNum) : this.tableHeight(260);
window.addEventListener('resize', this._setTableHeight);
},
destroyed() {
window.removeEventListener('resize', this._setTableHeight);
},
methods: {
_setTableHeight() {
this.tableH = this?.heightNum ? this.tableHeight(this.heightNum) : this.tableHeight(260);
// this.tableH = this.tableHeight(260);
},
},
};

View File

@ -70,18 +70,17 @@ export const constantRoutes = [
hidden: true hidden: true
}, },
{ {
path: "", path: '/',
component: Layout, component: Layout,
redirect: "index", redirect: 'core/base/factory',
children: [ // children: [{
{ // path: 'index',
path: "index", // redirect: 'core/base/factory',
component: (resolve) => require(["@/views/core/base/factory/index"], resolve), // component: (resolve) => require(['@/views/index'], resolve),
name: "首页", // name: '首页',
meta: { title: "首页", icon: "dashboard", affix: true }, // meta: { title: '首页', icon: 'dashboard', affix: true }
hidden: true // }
}, // ]
],
}, },
{ {
path: '/user', path: '/user',

View File

@ -86,11 +86,10 @@ export const DICT_TYPE = {
// ============== PRODUCT - 产品模块 ============= // ============== PRODUCT - 产品模块 =============
UNIT_DICT: 'unit_dict', UNIT_DICT: 'unit_dict',
PRODUCT_TYPE: 'product_type', PRODUCT_TYPE: 'product_type',
PROCESS_TYPE: 'process_type',
// ============== ENERGY - 能源模块 ============= // ============== ENERGY - 能源模块 =============
ENERGY_UNIT: 'energy_unit', ENERGY_UNIT: 'energy_unit',
// ============== ENERGY - 能源模块 ============= // ============== ENERGY - 能源模块 =============
EQU_ALARM_LEVEL: 'equ_alarm_level', EQU_ALARM_LEVEL: 'equ_alarm_level',
MONITOR_INDEX_TYPE: 'monitor_index_type', MONITOR_INDEX_TYPE: 'monitor_index_type',

View File

@ -48,50 +48,6 @@ 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]) {

View File

@ -1,97 +0,0 @@
<template>
<div class='centerBottomL'>
<div class='title'>
<svg-icon icon-class="dataBoard3" class='icon'/>
<span>本月数据</span>
</div>
<div class='dataBox' style='top:50px'>
<p>
<span class='text'>总投入片数</span>
<span class='precent precentG'>-18%</span>
<img src="../../../../assets/images/dataBoard/arrDown.png" alt="" width='5' height='15'>
</p>
<p class='num'>261,938,984</p>
</div>
<div class='dataBox'style='top:180px'>
<p>
<span class='text'>总生产片数</span>
<span class='precent precentR'>+18%</span>
<img src="../../../../assets/images/dataBoard/arrUp.png" alt="" width='5' height='15'>
</p>
<p class='num'>82,261,938,984</p>
</div>
</div>
</template>
<script>
export default {
name: 'CenterBottomL',
data() {
return {}
},
methods: {}
}
</script>
<style lang="scss" scoped>
.centerBottomL {
width: 337px;
height: 332px;
background: url('../../../../assets/images/dataBoard/center-bottom.png') no-repeat;
background-size: 100%;
position: absolute;
left: 440px;
bottom:23px;
.title {
margin: 7px 0 0 15px;
.icon {
width: 33px;
height: 33px;
margin-right: 5px;
vertical-align:middle;
margin-top: 5px;
}
span {
font-size: 24px;
color: #52FFF1;
line-height: 24px;
vertical-align:middle;
}
}
.dataBox {
width: 290px;
height: 135px;
background: url('../../../../assets/images/dataBoard/numberBox.png') no-repeat;
background-size: 100%;
position: absolute;
padding:22px 0 0 16px;
left: 24px;
p{
margin: 0;
}
.text {
font-weight: 500;
font-size: 20px;
color: #FFFFFF;
letter-spacing: 2px;
margin-right: 8px;
}
.precent {
font-size: 18px;
margin-right: 5px;
}
.precentR {
color: #FF271D;
}
.precentG {
color: #34F716;
}
.num {
font-weight: 500;
font-size: 38px;
color: #FFFFFF;
margin-top: 5px;
}
}
}
</style>

View File

@ -1,83 +0,0 @@
<template>
<div class='centerBottomR'>
<div class='title'>
<svg-icon icon-class="dataBoard3" class='icon'/>
<span>上月数据</span>
</div>
<div class='dataBox' style='top:50px'>
<p>
<span class='text'>总投入片数</span>
</p>
<p class='num'>261,938,984</p>
</div>
<div class='dataBox'style='top:180px'>
<p>
<span class='text'>总生产片数</span>
</p>
<p class='num'>82,261,938,984</p>
</div>
</div>
</template>
<script>
export default {
name: 'CenterBottomR',
data() {
return {}
},
methods: {}
}
</script>
<style lang="scss" scoped>
.centerBottomR {
width: 337px;
height: 332px;
background: url('../../../../assets/images/dataBoard/center-bottom.png') no-repeat;
background-size: 100%;
position: absolute;
left: 791px;
bottom:23px;
.title {
margin: 7px 0 0 15px;
.icon {
width: 33px;
height: 33px;
margin-right: 5px;
vertical-align:middle;
margin-top: 5px;
}
span {
font-size: 24px;
color: #52FFF1;
line-height: 24px;
vertical-align:middle;
}
}
.dataBox {
width: 290px;
height: 135px;
background: url('../../../../assets/images/dataBoard/numberBox.png') no-repeat;
background-size: 100%;
position: absolute;
padding:22px 0 0 16px;
left: 24px;
p{
margin: 0;
}
.text {
font-weight: 500;
font-size: 20px;
color: #FFFFFF;
letter-spacing: 2px;
margin-right: 8px;
}
.num {
font-weight: 500;
font-size: 38px;
color: #FFFFFF;
margin-top: 5px;
}
}
}
</style>

View File

@ -1,323 +0,0 @@
<template>
<div ref="centerTopBox" class='centerTopBox'>
<div>
<video src="/static/videos/01.webm" muted autoplay loop class='videoStyle'></video>
<div
class='eqTipBox'
v-show='showTooltip'
:style="'left:'+tooltipStyle.left+'px;top:'+tooltipStyle.top+'px;'"
>
<p><span class='eqTipTitle'>设备名称:</span><span class='eqTipNum'>{{eqTipMsg.name}}</span></p>
<p><span class='eqTipTitle'>进口数量:</span><span class='eqTipNum'>{{eqTipMsg.input}}</span></p>
<p><span class='eqTipTitle'>出口数量:</span><span class='eqTipNum'>{{eqTipMsg.output}}</span></p>
<p><span class='eqTipTitle'>报警状态:</span><span class='eqTipNum'><img :src='dotY' width='16'/>{{eqTipMsg.alarm}}</span></p>
<p><span class='eqTipTitle'>在线状态:</span><span class='eqTipNum'><img :src='dotR' width='16'/>{{eqTipMsg.status}}</span></p>
</div>
<!-- 设备 -->
<div class='eqBox'>
<!-- line-从上到下-从右往左 -->
<span
v-for='(item,index) in eqList'
:key='index'
:style="'width:'+item.w+'px;height:'+item.h+'px;left:'+item.l+'px;top:'+item.t+'px'"
@mouseenter="handleMouseEnter(item, $event)"
@mouseleave="handleMouseLeave"
></span>
</div>
</div>
<div class='centerTopTopBox'>
<div style='display: inline-block;'>
<img src="../../../../assets/images/dataBoard/centerNumB.png" alt="" width='203'>
<p class='num'>88%</p>
<p class='title'>成品率</p>
</div>
<div style='display: inline-block;'>
<img src="../../../../assets/images/dataBoard/centerNumY.png" alt="" width='261'>
<p class='num' style='width: 260px;padding-left: 20px;'>8,984</p>
<p class='title' style='color:#FFB625'>今日产量</p>
</div>
<div style='display: inline-block;'>
<img src="../../../../assets/images/dataBoard/centerNumY.png" alt="" width='261'>
<p class='num' style='width: 260px;padding-left: 20px;'>12,948,984</p>
<p class='title' style='color:#FFB625'>本月产量</p>
</div>
<div style='display: inline-block;'>
<img src="../../../../assets/images/dataBoard/centerNumB.png" alt="" width='203'>
<p class='num'>59</p>
<p class='title'>设备报警数</p>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'CenterTop',
data() {
return {
showTooltip:false,
tooltipStyle: {
left: 0,
top: 0
},
scaleNum:1,
dotY:require('../../../../assets/images/dataBoard/dotY.png'),
dotR:require('../../../../assets/images/dataBoard/dotR.png'),
dotG:require('../../../../assets/images/dataBoard/dotG.png'),
eqList:[
{name:'磨边机1',id:'1',w:70,h:18,l:830,t:160},
{name:'磨边机2',id:'2',w:70,h:18,l:830,t:183},
{name:'磨边机3',id:'3',w:70,h:18,l:832,t:206},
{name:'清洗机1',id:'4',w:30,h:15,l:798,t:160},
{name:'清洗机2',id:'5',w:30,h:15,l:798,t:183},
{name:'清洗机3',id:'6',w:30,h:15,l:800,t:206},
{name:'打孔机1',id:'7',w:13,h:12,l:730,t:163},
{name:'打孔机2',id:'8',w:13,h:12,l:730,t:187},
{name:'打孔机3',id:'9',w:13,h:12,l:730,t:210},
{name:'清洗机1',id:'10',w:32,h:15,l:665,t:160},
{name:'清洗机2',id:'11',w:32,h:15,l:665,t:183},
{name:'清洗机3',id:'12',w:32,h:15,l:665,t:206},
{name:'丝印机1',id:'13',w:30,h:12,l:605,t:163},
{name:'丝印机2',id:'14',w:30,h:12,l:605,t:187},
{name:'丝印机3',id:'15',w:30,h:12,l:605,t:210},
{name:'固化炉1',id:'16',w:37,h:12,l:558,t:163},
{name:'固化炉2',id:'17',w:37,h:12,l:558,t:187},
{name:'固化炉3',id:'18',w:37,h:12,l:558,t:210},
{name:'钢化炉',id:'19',w:75,h:15,l:382,t:209},
{name:'清洗机1',id:'20',w:30,h:15,l:228,t:173},
{name:'清洗机2',id:'21',w:30,h:15,l:228,t:206},
{name:'铺纸机1',id:'22',w:18,h:15,l:188,t:175},
{name:'铺纸机2',id:'23',w:18,h:15,l:188,t:206},
{name:'磨边机1',id:'24',w:70,h:18,l:832,t:233},
{name:'磨边机2',id:'25',w:70,h:18,l:833,t:257},
{name:'磨边机3',id:'26',w:70,h:18,l:834,t:281},
{name:'清洗机1',id:'27',w:30,h:15,l:800,t:233},
{name:'清洗机2',id:'28',w:30,h:15,l:801,t:257},
{name:'清洗机3',id:'29',w:30,h:15,l:802,t:281},
{name:'打孔机1',id:'30',w:13,h:12,l:731,t:240},
{name:'打孔机2',id:'31',w:13,h:12,l:731,t:262},
{name:'打孔机3',id:'32',w:13,h:12,l:731,t:285},
{name:'清洗机1',id:'33',w:32,h:15,l:666,t:234},
{name:'清洗机2',id:'34',w:32,h:15,l:666,t:258},
{name:'清洗机3',id:'35',w:32,h:15,l:666,t:282},
{name:'丝印机1',id:'36',w:30,h:12,l:605,t:238},
{name:'丝印机2',id:'37',w:30,h:12,l:605,t:262},
{name:'丝印机3',id:'38',w:30,h:12,l:605,t:286},
{name:'固化炉1',id:'39',w:37,h:12,l:558,t:238},
{name:'固化炉2',id:'40',w:37,h:12,l:558,t:262},
{name:'固化炉3',id:'41',w:37,h:12,l:558,t:286},
{name:'钢化炉',id:'42',w:75,h:15,l:382,t:238},
{name:'清洗机1',id:'43',w:30,h:15,l:228,t:234},
{name:'清洗机2',id:'44',w:30,h:15,l:228,t:267},
{name:'铺纸机1',id:'45',w:18,h:15,l:187,t:234},
{name:'铺纸机2',id:'46',w:18,h:15,l:186,t:267},
{name:'磨边机1',id:'47',w:70,h:18,l:834,t:318},
{name:'磨边机2',id:'48',w:70,h:18,l:834,t:342},
{name:'清洗机1',id:'49',w:30,h:15,l:802,t:319},
{name:'清洗机2',id:'50',w:30,h:15,l:802,t:342},
{name:'打孔机1',id:'51',w:13,h:12,l:731,t:324},
{name:'打孔机2',id:'52',w:13,h:12,l:731,t:348},
{name:'清洗机1',id:'53',w:32,h:15,l:666,t:320},
{name:'清洗机2',id:'54',w:32,h:15,l:666,t:342},
{name:'丝印机1',id:'55',w:30,h:12,l:605,t:324},
{name:'丝印机2',id:'56',w:30,h:12,l:605,t:348},
{name:'镀膜机1',id:'57',w:20,h:15,l:553,t:322},
{name:'镀膜机2',id:'58',w:20,h:15,l:553,t:346},
{name:'固化炉1',id:'59',w:37,h:12,l:506,t:324},
{name:'固化炉2',id:'60',w:37,h:12,l:506,t:347},
{name:'钢化炉',id:'61',w:75,h:15,l:340,t:346},
{name:'清洗机1',id:'62',w:30,h:15,l:240,t:343},
{name:'铺纸机1',id:'63',w:18,h:15,l:200,t:343},
{name:'铺纸机2',id:'64',w:18,h:15,l:170,t:343},
{name:'磨边机1',id:'65',w:70,h:18,l:838,t:380},
{name:'磨边机2',id:'66',w:70,h:18,l:838,t:405},
{name:'磨边机3',id:'67',w:70,h:18,l:839,t:428},
{name:'清洗机1',id:'68',w:30,h:15,l:804,t:380},
{name:'清洗机2',id:'69',w:30,h:15,l:805,t:405},
{name:'清洗机3',id:'70',w:30,h:15,l:806,t:427},
{name:'镀膜机1',id:'71',w:20,h:15,l:707,t:381},
{name:'镀膜机2',id:'72',w:20,h:15,l:707,t:407},
{name:'镀膜机3',id:'73',w:20,h:15,l:707,t:429},
{name:'固化炉1',id:'74',w:37,h:12,l:660,t:383},
{name:'固化炉2',id:'75',w:37,h:12,l:660,t:409},
{name:'固化炉3',id:'76',w:37,h:12,l:660,t:431},
{name:'镀膜机1',id:'77',w:20,h:15,l:605,t:382},
{name:'镀膜机2',id:'78',w:20,h:15,l:605,t:408},
{name:'镀膜机3',id:'79',w:20,h:15,l:605,t:430},
{name:'固化炉1',id:'80',w:37,h:12,l:557,t:383},
{name:'固化炉2',id:'81',w:37,h:12,l:557,t:409},
{name:'固化炉3',id:'82',w:37,h:12,l:557,t:431},
{name:'钢化炉',id:'83',w:75,h:15,l:379,t:381},
{name:'清洗机1',id:'84',w:30,h:15,l:220,t:379},
{name:'清洗机2',id:'85',w:30,h:18,l:220,t:410},
{name:'铺纸机1',id:'86',w:18,h:15,l:180,t:381},
{name:'铺纸机2',id:'87',w:18,h:15,l:180,t:414},
{name:'磨边机1',id:'88',w:70,h:18,l:817,t:465},
{name:'磨边机2',id:'89',w:70,h:18,l:817,t:488},
{name:'磨边机3',id:'90',w:70,h:18,l:819,t:512},
{name:'清洗机1',id:'91',w:30,h:15,l:784,t:462},
{name:'清洗机2',id:'92',w:30,h:15,l:784,t:488},
{name:'清洗机3',id:'93',w:30,h:15,l:785,t:512},
{name:'镀膜机1',id:'94',w:20,h:15,l:685,t:466},
{name:'镀膜机2',id:'95',w:20,h:15,l:685,t:490},
{name:'镀膜机3',id:'96',w:20,h:15,l:685,t:513},
{name:'固化炉1',id:'97',w:37,h:12,l:638,t:468},
{name:'固化炉2',id:'98',w:37,h:12,l:638,t:491},
{name:'固化炉3',id:'99',w:37,h:12,l:638,t:514},
{name:'镀膜机1',id:'100',w:20,h:15,l:584,t:468},
{name:'镀膜机2',id:'101',w:20,h:15,l:584,t:490},
{name:'镀膜机3',id:'102',w:20,h:15,l:584,t:513},
{name:'固化炉1',id:'103',w:37,h:12,l:535,t:468},
{name:'固化炉2',id:'104',w:37,h:12,l:535,t:492},
{name:'固化炉3',id:'105',w:37,h:12,l:535,t:514},
{name:'钢化炉',id:'106',w:75,h:15,l:344,t:513},
{name:'清洗机1',id:'107',w:30,h:18,l:185,t:473},
{name:'清洗机2',id:'108',w:30,h:18,l:185,t:511},
{name:'铺纸机1',id:'109',w:18,h:15,l:144,t:475},
{name:'铺纸机2',id:'110',w:18,h:15,l:144,t:511}
],
eqTipMsg:{
name:'',
input:null,
output:null,
alarm:'未报警',
status:'在线'
}
}
},
props: {
scaleNum: {
type: Number,
default: 1
}
},
watch: {
scaleNum(val) {
this.scaleNum = val
}
},
mounted() {},
methods: {
// hover
handleMouseEnter(item, event) {
this.showTooltip = true;
this.eqTipMsg.name = item.name;
// this.eqTipMsg.input = item.input;
// this.eqTipMsg.output = item.output;
// this.eqTipMsg.alarm = item.alarm;
// this.eqTipMsg.status = item.status;
this.updateTooltipPosition(event);
},
handleMouseLeave() {
this.showTooltip = false;
},
updateTooltipPosition(event) {
const rect = this.$refs.centerTopBox.getBoundingClientRect()
const offset = 15;
const tooltipWidth = 230*this.scaleNum;
const tooltipHeight = 170*this.scaleNum;
const startX = rect.left;
const startY = rect.top;
const endX = rect.width;
const endY = rect.height;
let posX = event.clientX-startX + offset;
let posY = event.clientY-startY + offset;
if (posX + tooltipWidth > endX) {
posX = event.clientX-startX - tooltipWidth - offset;
}
if (posY + tooltipHeight > endY) {
posY = event.clientY -startY - tooltipHeight - offset;
}
this.tooltipStyle.left = posX/this.scaleNum;
this.tooltipStyle.top = posY/this.scaleNum;
}
}
}
</script>
<style lang="scss" scoped>
p{
margin: 0;
}
.centerTopBox {
width: 1041px;
height: 600px;
background: url('../../../../assets/images/dataBoard/center-top.png') no-repeat;
background-size: 100%;
position: absolute;
left: 440px;
top:113px;
overflow: hidden;
.videoStyle {
width: 1920px;
height: 1080px;
position: absolute;
left:-440px;
top:-113px;
}
.eqTipBox {
width: 230px;
height: 170px;
background: url('../../../../assets/images/dataBoard/eq-tip.png') no-repeat;
background-size: 100%;
position: absolute;
padding-top: 10px;
z-index: 1;
span{
display: inline-block;
font-size: 20px;
color: #FFFFFF;
letter-spacing: 1px;
vertical-align: middle;
}
.eqTipTitle {
width: 112px;
height: 30px;
padding-left: 15px;
}
.eqTipNum {
width: 112px;
height: 30px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
.eqBox {
span{
display: inline-block;
border: 1px solid red;
position: absolute;
}
}
.centerTopTopBox {
padding-left: 48px;
position: absolute;
top:30px;
.num {
width: 203px;
height: 65px;
line-height: 65px;
padding-left: 10px;
box-sizing: border-box;
font-weight: 500;
font-size: 38px;
color: #FFFFFF;
text-shadow: 0px 5px 2px rgba(0,0,0,0.62);
text-align: center;
position: absolute;
top:0px;
}
.title {
font-weight: 500;
font-size: 20px;
color: #00C8F7;
letter-spacing: 2px;
text-shadow: 0px 5px 2px rgba(0,0,0,0.62);
text-align: center;
}
}
}
</style>

View File

@ -1,108 +0,0 @@
<template>
<header class="dataBoardHeader">
<div class='topTitle'></div>
<div class='time-chsoose'>
<span class='title'>时间选择</span>
<span class='time-show'>{{time}}</span>
<el-date-picker
v-model="time"
type="date"
value-format='yyyy-MM-dd'
:clearable='false'
style='position: absolute;right: 0px;width: 119px;top:-2px;opacity: 0;'
>
</el-date-picker>
</div>
<div
type="text"
class="screen-btn"
:title="isFullScreen?'退出全屏':'全屏'"
@click="changeFullScreen"
>
<svg-icon v-if="isFullScreen" icon-class="unFullScreenView" />
<svg-icon v-else icon-class="fullScreenView" />
</div>
</header>
</template>
<script>
import moment from 'moment'
export default {
name: 'DataBoardHeader',
props: {
isFullScreen: {
type: Boolean,
default: () => {
return false
}
},
},
data() {
return {
time: moment().format('YYYY-MM-DD')
}
},
computed: {},
methods: {
changeFullScreen() {
this.$emit('screenfullChange')
},
exportPDF() {
this.$emit('exportPDF')
}
}
}
</script>
<style scoped lang="scss">
.dataBoardHeader {
background: url('../../../../assets/images/dataBoard/head.png') no-repeat;
height: 99px;
background-size: 100%;
background-position: 0 0;
position: relative;
.topTitle{
width: 465px;
height: 77px;
background: url('../../../../assets/images/dataBoard/data-board-title.png') no-repeat;
background-size: 100%;
position: absolute;
left: 731px;
top:19px;
}
.time-chsoose {
width: 212px;
height: 33px;
background: url('../../../../assets/images/dataBoard/time-choose.png') no-repeat;
background-size: 100%;
position: absolute;
right: 63px;
top:49px;
.title {
font-size: 18px;
color: #082049;
letter-spacing: 1px;
position: relative;
top: 4px;
left: 8px
}
.time-show {
font-size: 18px;
color: #FFFFFF;
line-height: 18px;
position: relative;
top: 4px;
left: 28px;
}
}
.screen-btn{
color: #00fff0;
height: 32px;
line-height: 32px;
font-size: 32px;
position: absolute;
right: 22px;
top:47px;
}
}
</style>

View File

@ -1,243 +0,0 @@
<template>
<div class='leftBottomBox'>
<div class='title'>
<svg-icon icon-class="dataBoard2" class='icon'/>
<span>投入产出及良品率</span>
</div>
<div class="top_legend">
<span class="chart_legend_icon1">投入</span>
<span class="chart_legend_icon2">产出</span>
<span><span class="chart_legend_icon3"></span>良品率</span>
</div>
<div id='inOutputChart' style='width: 400px;height: 290px;'></div>
</div>
</template>
<script>
import * as echarts from 'echarts';
export default {
name: 'LeftBottom',
data() {
return {}
},
mounted() {
this.initChart();
},
methods: {
initChart() {
var chartDom = document.getElementById('inOutputChart');
var myChart = echarts.init(chartDom);
var option;
option = {
grid: { top: 40, right: 10, bottom: 5, left: 10, containLabel: true },
legend: {
show: false,
},
xAxis: {
type: "category",
data: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],
axisLabel: {
color: "#fff",
fontSize: 12,
interval: 0,
rotate:20
},
axisTick: { show: false },
axisLine: {
lineStyle: {
width: 2,
color: "#5982B2",
},
},
},
yAxis: [{
name: "单位/片",
nameTextStyle: {
color: "#DFF1FE",
fontSize: 12,
},
type: "value",
axisLabel: {
color: "#DFF1FE",
fontSize: 12,
formatter: "{value}",
},
axisLine: {
show: true,
lineStyle: {
width: 2,
color: "#5982B2",
},
},
splitLine: {
lineStyle: {
width: 2,
color: "#5982B2",
},
},
},{
name: "良品率/%",
nameTextStyle: {
color: "#DFF1FE",
fontSize: 12,
},
type: "value",
axisLabel: {
color: "#DFF1FE",
fontSize: 12,
formatter: "{value}",
},
axisLine: {
show: true,
lineStyle: {
width: 2,
color: "#5982B2",
},
},
splitLine: {
lineStyle: {
width: 2,
color: "#5982B2",
},
},
}],
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
className: "qhd-chart-tooltip",
show: true,
},
series: [
{
data: [1000,3000,2800,4200,5000,6000,7000,8000,9000,10000,11000,12000],
type: "bar",
barWidth: 10,
barGap:0,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: 'rgba(157, 234, 245, 1)' },
{ offset: 1, color: 'rgba(110, 249, 222, 1)' },
]),
},
},
{
data:[800,2900,2700,4100,4800,4900,5900,6800,7900,8900,9900,10000],
type: "bar",
barWidth: 10,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: 'rgba(92, 183, 255, 1)' },
{ offset: 1, color: 'rgba(54, 75, 254, 1)' },
]),
},
},
{
data: [98,97,99,96,98,99,98,97,98,99,98,99],
type: "line",
yAxisIndex: 1,
symbol:'circle',
symbolSize: 7,
color:'rgba(18, 255, 245, 1)',
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: 'rgba(18, 255, 245, 0.8)' },
{ offset: 0.2, color: 'rgba(18, 255, 245, 0.2)' },
{ offset: 0.4, color: 'rgba(18, 255, 245, 0)' },
]),
}
}
],
}
option && myChart.setOption(option);
}
}
}
</script>
<style lang='scss' scoped>
.leftBottomBox {
width: 402px;
height: 332px;
background: url('../../../../assets/images/dataBoard/left-bottom.png') no-repeat;
background-size: 100%;
position: absolute;
left: 23px;
bottom:23px;
.title {
margin: 7px 0 0 15px;
.icon {
width: 32px;
height: 32px;
margin-right: 5px;
vertical-align:middle;
margin-top: 5px;
}
span {
font-size: 24px;
color: #52FFF1;
line-height: 24px;
vertical-align:middle;
}
}
.top_legend {
color: #fff;
font-size: 14px;
position: absolute;
left:120px;
top:50px;
.chart_legend_icon1{
margin-right: 10px;
}
.chart_legend_icon2{
margin-right: 14px;
}
.chart_legend_icon1:before {
display: inline-block;
content: "";
width: 10px;
height: 10px;
margin-right: 5px;
border-radius: 2px;
background: #73F8E0;
}
.chart_legend_icon2:before {
display: inline-block;
content: "";
width: 10px;
height: 10px;
margin-right: 5px;
border-radius: 2px;
background: #497EFF;
}
.chart_legend_icon3 {
display: inline-block;
width: 8px;
height: 8px;
margin-right: 8px;
border-radius: 4px;
background: #73F8E0;
position:relative;
}
.chart_legend_icon3:before {
display: inline-block;
content: "";
width: 16px;
height:2px;
background: #73F8E0;
position:absolute;
top:3px;
left:-4px;
}
}
}
</style>
<style>
.qhd-chart-tooltip {
background: #0a2b4f77 !important;
border: none !important;
backdrop-filter: blur(12px);
}
.qhd-chart-tooltip * {
color: #fff !important;
}
</style>

View File

@ -1,142 +0,0 @@
<template>
<div class='leftTopBox'>
<div class='title'>
<svg-icon icon-class="dataBoard1" class='icon'/>
<span>近期数据对比</span>
</div>
<div class='title-split'>
<img src="../../../../assets//images/dataBoard/leftbar.png" alt="">
<span class='text'>本日</span>
<img src="../../../../assets//images/dataBoard/rightbar.png" alt="">
</div>
<div class='data-box'>
<div class='left-icon' style="top:19px;">
<img src="../../../../assets//images/dataBoard/leftTopIcon1.png" alt="" width='54'>
<div>总投入</div>
</div>
<div class='left-icon' style="top:139px;">
<img src="../../../../assets//images/dataBoard/leftTopIcon2.png" alt="" width='48'>
<div>总生产</div>
</div>
<div class='right-data' style="top:15px;">
<p><span class='num'>932,261</span><span class='text'>片数</span></p>
<p><span class='num'>894</span><span class='text'>面积/</span></p>
</div>
<div class='right-data' style="top:132px;">
<p><span class='num'>932,261</span><span class='text'>片数</span></p>
<p><span class='num'>894</span><span class='text'>面积/</span></p>
</div>
</div>
<div class='title-split'>
<img src="../../../../assets//images/dataBoard/leftbar.png" alt="">
<span class='text'>昨日</span>
<img src="../../../../assets//images/dataBoard/rightbar.png" alt="">
</div>
<div class='data-box'>
<div class='left-icon' style="top:19px;">
<img src="../../../../assets//images/dataBoard/leftTopIcon1.png" alt="" width='54'>
<div>总投入</div>
</div>
<div class='left-icon' style="top:139px;">
<img src="../../../../assets//images/dataBoard/leftTopIcon2.png" alt="" width='48'>
<div>总生产</div>
</div>
<div class='right-data' style="top:15px;">
<p><span class='num'>932,261</span><span class='text'>片数</span></p>
<p><span class='num'>894</span><span class='text'>面积/</span></p>
</div>
<div class='right-data' style="top:132px;">
<p><span class='num'>932,261</span><span class='text'>片数</span></p>
<p><span class='num'>894</span><span class='text'>面积/</span></p>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'LeftTop',
data() {
return {}
},
methods: {}
}
</script>
<style lang='scss' scoped>
.leftTopBox {
width: 402px;
height: 600px;
background: url('../../../../assets/images/dataBoard/left-top.png') no-repeat;
background-size: 100%;
position: absolute;
left: 23px;
top:113px;
.title {
margin: 10px 0 0 15px;
.icon {
width: 33px;
height: 33px;
margin-right: 5px;
vertical-align:middle;
}
span {
font-size: 24px;
color: #52FFF1;
line-height: 24px;
vertical-align:middle;
}
}
.title-split {
margin-left: 95px;
margin-top: 10px;
.text{
display: inline-block;
width: 100px;
font-size: 22px;
color: #01CFCC;
line-height: 24px;
letter-spacing: 7px;
text-align: center;
}
}
.data-box {
width: 358px;
height: 230px;
background: url('../../../../assets/images/dataBoard/leftTopDataBox.png') no-repeat;
background-size: 100%;
margin-top: 8px;
position: relative;
left: 24px;
.left-icon {
font-weight: 500;
font-size: 16px;
color: #9DEAF5;
line-height: 22px;
letter-spacing: 1px;
text-shadow: 0px 4px 2px rgba(0,0,0,0.62);
position: absolute;
left: 30px;
}
.right-data {
position: absolute;
left: 100px;
p{
margin: 0;
};
.num {
font-weight: 500;
font-size: 32px;
color: #FFFFFF;
text-shadow: 0px 4px 2px rgba(0,0,0,0.62);
margin-right: 5px;
}
.text {
font-weight: 500;
font-size: 16px;
color: #FFFFFF;
letter-spacing: 1px;
text-shadow: 0px 4px 2px rgba(0,0,0,0.62);
}
}
}
}
</style>

View File

@ -1,174 +0,0 @@
<template>
<div class='rightBottomBox'>
<div class='title'>
<svg-icon icon-class="dataBoard3" class='icon'/>
<span>本月<span class='dotted'></span>班组生产排名</span>
</div>
<div class='rankingLeft'>
<div class='rankingLeftTitle'>产量</div>
<div class='rankingTypeBox'>
<div>
<img src="../../../../assets//images//dataBoard/ranking1.png" alt="" width='50'>
<div class='rankingTextBox'>
<p class='text1'>班组1/</p>
<p class='text2'>261,938,984</p>
</div>
</div>
<div style='margin: 10px 0;'>
<img src="../../../../assets//images//dataBoard/ranking2.png" alt="" width='50'>
<div class='rankingTextBox'>
<p class='text1'>班组1/</p>
<p class='text2'>261,938,984</p>
</div>
</div>
<div>
<img src="../../../../assets//images//dataBoard/ranking3.png" alt="" width='50'>
<div class='rankingTextBox'>
<p class='text1'>班组1/</p>
<p class='text2'>261,938,984</p>
</div>
</div>
</div>
</div>
<div class='rankingRight'>
<div class='rankingRightTitle'>
成品率
</div>
<div class='rankingTypeBox' style='left: 120px;'>
<div>
<img src="../../../../assets//images//dataBoard/ranking1.png" alt="" width='50'>
<div class='rankingTextBox'>
<p class='text1'>班组1</p>
<p class='text2'>95<span style='font-size: 20px;'>.92%</span></p>
</div>
</div>
<div style='margin: 10px 0;'>
<img src="../../../../assets//images//dataBoard/ranking2.png" alt="" width='50'>
<div class='rankingTextBox'>
<p class='text1'>班组1</p>
<p class='text2'>94<span style='font-size: 20px;'>.13%</span></p>
</div>
</div>
<div>
<img src="../../../../assets//images//dataBoard/ranking3.png" alt="" width='50'>
<div class='rankingTextBox'>
<p class='text1'>班组1</p>
<p class='text2'>90<span style='font-size: 20px;'>.42%</span></p>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'RightBottom',
data() {
return {}
},
mounted() {},
methods: {}
}
</script>
<style lang='scss' scoped>
p{
margin: 0;
}
.rightBottomBox {
width: 755px;
height: 332px;
background: url('../../../../assets/images/dataBoard/right-bottom.png') no-repeat;
background-size: 100%;
position: absolute;
right: 23px;
bottom:23px;
.title {
margin: 10px 0 0 15px;
.icon {
width: 33px;
height: 33px;
margin-right: 5px;
vertical-align:middle;
}
span {
font-size: 24px;
color: #52FFF1;
line-height: 24px;
vertical-align:middle;
.dotted {
display: inline-block;
width: 4px;
height: 4px;
border-radius: 2px;
background-color: #52FFF1;
margin: 0 8px;
}
}
}
.rankingLeft {
width: 405px;
height: 265px;
background: url('../../../../assets/images/dataBoard/rankingBg1.png') no-repeat;
background-size: 100%;
position: absolute;
left: 12px;
top: 48px;
.rankingLeftTitle {
width: 24px;
height: 73px;
font-weight: 500;
font-size: 24px;
color: #52FFF1;
line-height: 55px;
position: relative;
left: 37px;
top: 63px;
}
}
.rankingRight {
width: 338px;
height: 265px;
background: url('../../../../assets/images/dataBoard/rankingBg2.png') no-repeat;
background-size: 100%;
position: absolute;
right: 12px;
top: 48px;
.rankingRightTitle {
width: 24px;
height: 132px;
font-weight: 500;
font-size: 24px;
color: #52FFF1;
line-height: 55px;
position: relative;
left: 37px;
top: 43px;
}
}
.rankingTypeBox {
position: absolute;
left: 100px;
top:13px;
.rankingTextBox {
display: inline-block;
margin-left: 16px;
vertical-align: top;
.text1 {
font-weight: 500;
font-size: 17px;
color: #FFFFFF;
line-height: 22px;
letter-spacing: 1px;
padding-top: 5px;
}
.text2 {
font-weight: 500;
font-size: 32px;
color: #FFFFFF;
line-height: 22px;
margin-top: 8px;
}
}
}
}
</style>

View File

@ -1,331 +0,0 @@
<template>
<div class='rightTopBox'>
<div class='title'>
<svg-icon icon-class="dataBoard4" class='icon'/>
<span>缺陷情况</span>
</div>
<div class='title-split'>
<img src="../../../../assets//images/dataBoard/leftbar.png" alt="">
<span class='text'>总数</span>
<img src="../../../../assets//images/dataBoard/rightbar.png" alt="">
</div>
<div class='dataBox'>
<div class='row'>
<div class='box' style='width: 105px;'>
<p class='name'>
<span style='margin-right: 3px;'>当日</span>
<img src="../../../../assets/images/dataBoard/arrUp.png" alt="" width='5' height='15'>
</p>
<p class='num'>283</p>
</div>
<div class='box' style='width: 115px;'>
<p class='name'>
<span style='margin-right: 3px;'>本月</span>
<img src="../../../../assets/images/dataBoard/arrDown.png" alt="" width='5' height='15'>
</p>
<p class='num'>2,830</p>
</div>
<div class='box' style='width: 110px;'>
<p class='name'>
<span style='margin-right: 3px;'>本年</span>
<img src="../../../../assets/images/dataBoard/arrDown.png" alt="" width='5' height='15'>
</p>
<p class='num'>32,830</p>
</div>
</div>
<div class='row' style='padding-top: 5px;'>
<div class='box' style='width: 105px;'>
<p class='name'>
<span>昨日</span>
</p>
<p class='num'>283</p>
</div>
<div class='box' style='width: 115px;'>
<p class='name'>
<span>上月</span>
</p>
<p class='num'>2,830</p>
</div>
<div class='box' style='width: 110px;'>
<p class='name'>
<span>上年</span>
</p>
<p class='num'>32,830</p>
</div>
</div>
</div>
<div class='title-split2'>
<img src="../../../../assets//images/dataBoard/leftbar.png" alt="">
<span class='text'>全厂缺陷汇总</span>
<img src="../../../../assets//images/dataBoard/rightbar.png" alt="">
</div>
<div id='defectSumChart' style='width: 400px;height: 315px;'></div>
</div>
</template>
<script>
import * as echarts from 'echarts';
const colors = [
"rgb(39, 96, 255)",
"rgb(91, 155, 255)",
"rgb(153, 214, 108)",
"rgb(18, 255, 245)",
"rgb(221, 177, 18)",
];
export default {
name: 'RightTop',
data() {
return {
rangArrValue:[],
dataList:[],
totalValue:0
}
},
mounted() {
this.initChart();
},
methods: {
initChart() {
var chartDom = document.getElementById('defectSumChart');
var myChart = echarts.init(chartDom);
var option;
const dataProps = [
{value: 14,name:'缺陷1'},
{value: 20,name:'缺陷2'},
{value: 22,name:'缺陷3'},
{value: 14,name:'缺陷4'},
{value: 30,name:'缺陷5'}
]
this.getPersonnelList(dataProps)
option = {
color: colors,
graphic: [
{
type: "text",
left: "center",
top: "44%",
style: {
text: this.totalValue,
fill: "#fff",
width: 150,
height: 44,
fontSize: 31,
fontWeight: 400,
},
},
{
type: "text",
left: "center",
top: "55%",
style: {
text: "总数/件",
fill: "rgba(255, 255, 255, 0.70)",
width: 32,
height: 16,
fontSize: 16,
fontWeight: 400,
},
},
],
series: [
{
name: "产线缺陷分类",
type: "pie",
radius: ["45%", "60%"],
center: ["50%", "50%"],
// label: {
// formatter: "{d}%",
// color: "#fff",
// },
label:{
formatter:function(params){
return `{color${params.dataIndex}|${params.percent}%}\n{style2|${params.name}}`
},
rich:{
color0:{color:'rgb(39, 96, 255)',fontSize:22},
color1:{color:'rgb(91, 155, 255)',fontSize:22},
color2:{color:'rgb(153, 214, 108)',fontSize:22},
color3:{color:'rgb(18, 255, 245)',fontSize:22},
color4:{color:'rgb(221, 177, 18)',fontSize:22},
color5:{color:'rgb(39, 96, 255)',fontSize:22},
color6:{color:'rgb(91, 155, 255)',fontSize:22},
color7:{color:'rgb(153, 214, 108)',fontSize:22},
color8:{color:'rgb(18, 255, 245)',fontSize:22},
color9:{color:'rgb(221, 177, 18)',fontSize:22},
style2:{
color:'#fff',
fontSize:14
}
}
},
data: this.dataList,
},
],
}
option && myChart.setOption(option);
},
getCoordinates(startArc, endArc) {
const posi = [
Math.sin(startArc),
-Math.cos(startArc),
Math.sin(endArc),
-Math.cos(endArc),
];
const dx = posi[2] - posi[0];
const dy = posi[3] - posi[1];
return this.getLocation(dx, dy);
},
getLocation(dx,dy) {
const tanV = dx / dy;
const directSign = Math.abs(tanV) < 1;
const t = directSign ? tanV : 1 / tanV;
const sign1 = t > 0 ? 1 : -1;
const sign2 = dx > 0 ? 1 : -1;
const sign = directSign ? sign1 * sign2 : sign2;
const group1 = [0.5 - (sign * t) / 2, 0.5 + (sign * t) / 2];
const group2 = sign > 0 ? [0, 1] : [1, 0];
const group = [...group1, ...group2];
const keys = directSign ? ["x", "x2", "y", "y2"] : ["y", "y2", "x", "x2"];
let res = {};
keys.forEach((k, idx) => {
res[k] = group[idx];
});
return res;
},
async getPersonnelList(dataProps){
this.rangArrValue = [];
this.totalValue = 0;
this.dataList = [];
this.totalValue = dataProps.reduce(
(total, value) => total + value.value,
0
);
let cacheNum = 0;
for (let i = 0; i < dataProps.length; i++) {
const endNum = cacheNum + dataProps[i].value;
this.rangArrValue.push([cacheNum, endNum]);
cacheNum = endNum;
}
const angleArr = this.rangArrValue.map((arr) =>
arr.map((num) => (num / this.totalValue) * Math.PI * 2)
);
this.dataList = dataProps.map((item, index) => {
const range = this.getCoordinates(angleArr[index][0], angleArr[index][1]);
const startColor = colors[index%5];
const color = {
type: "linear",
x: range.x,
x2: range.x2,
y: range.y,
y2: range.y2,
colorStops: [
{
offset: 0,
color: startColor, //
},
{
offset: 1,
color: `${startColor.substring(0, startColor.length - 1)}, 0.2)`, //
},
],
global: false,
};
return {
name: item.name,
value: item.value,
itemStyle: {
color: color,
},
};
});
}
}
}
</script>
<style lang='scss' scoped>
p{
margin: 0;
}
.rightTopBox {
width: 402px;
height: 600px;
background: url('../../../../assets/images/dataBoard/left-top.png') no-repeat;
background-size: 100%;
position: absolute;
right: 23px;
top:113px;
.title {
margin: 10px 0 0 15px;
.icon {
width: 33px;
height: 33px;
margin-right: 5px;
vertical-align:middle;
}
span {
font-size: 24px;
color: #52FFF1;
line-height: 24px;
vertical-align:middle;
}
}
.title-split {
margin-left: 95px;
margin-top: 10px;
.text{
display: inline-block;
width: 100px;
font-size: 22px;
color: #01CFCC;
line-height: 24px;
letter-spacing: 7px;
text-align: center;
}
}
.title-split2 {
margin-left: 66px;
margin-top: 20px;
.text{
display: inline-block;
width: 160px;
font-size: 22px;
color: #01CFCC;
line-height: 24px;
letter-spacing: 2px;
text-align: center;
}
}
.dataBox {
width: 358px;
height: 160px;
background: url('../../../../assets/images/dataBoard/defectNum.png') no-repeat;
background-size: 100%;
position: relative;
left: 21px;
top:8px;
padding-left: 24px;
.row {
.box{
display: inline-block;
padding-top: 10px;
.name {
font-weight: 500;
font-size: 20px;
color: #FFFFFF;
letter-spacing: 2px;
}
.num {
font-weight: 500;
font-size: 28px;
color: #FFFFFF;
text-shadow: 0px 5px 2px rgba(0,0,0,0.62);
}
}
}
}
}
</style>

View File

@ -1,140 +1,74 @@
<!--
filename: index.vue
author: liubin
date: 2023-10-11 09:32:04
description: 设备看板
-->
<template> <template>
<div ref='dataBoardBoxB' class='dataBoardBoxB'> <div ref="dataBoard" class=""></div>
<div id="dataBoardBox" class='dataBoardBox' style="width: 1920px;height: 1080px;" :style="{ transform: 'scale(' + scaleNum + ')' }">
<DataBoardHeader
:is-full-screen="isFullScreen"
@screenfullChange="screenfullChange"
/>
<LeftTop />
<LeftBottom />
<CenterTop :scaleNum='scaleNum'/>
<CenterBottomL />
<CenterBottomR />
<RightTop />
<RightBottom />
</div>
</div>
</template> </template>
<script> <script>
import DataBoardHeader from './components/Header.vue';
import LeftTop from './components/LeftTop.vue';
import LeftBottom from './components/LeftBottom.vue';
import CenterTop from './components/CenterTop.vue';
import CenterBottomL from './components/CenterBottomL.vue';
import CenterBottomR from './components/CenterBottomR.vue';
import RightTop from './components/RightTop.vue';
import RightBottom from './components/RightBottom.vue';
import { debounce } from '@/utils/debounce';
import screenfull from 'screenfull';
export default { export default {
name: 'DataBoard', name: 'DataBoard',
components: { DataBoardHeader,LeftTop,LeftBottom,CenterTop,CenterBottomL,CenterBottomR,RightTop,RightBottom }, components: {},
props: {}, props: {},
data() { data() {
return { return {
isFullScreen: false, appMain: null, // dom
scaleNum: 0.8, parentStyle: {
margin: '8px 14px 0px 16px',
minHeight: 'calc(100vh - 120px - 8px)',
}, // object
mainFooter: null, // dom
}; };
}, },
created() {
this.init()
},
mounted() { mounted() {
this.boxReset = debounce(() => { this.$nextTick(() => {
this.resetSize() this.modify();
}, 300) });
this.boxReset()
window.addEventListener('resize', () => {
this.boxReset()
})
}, },
computed: { activated() {
sidebarOpened() { this.modify();
return this.$store.state.app.sidebar.opened
}
}, },
watch: { deactivated() {
sidebarOpened(newVal, oldVal) { this.recover();
this.boxReset() },
} beforeDestroy() {
this.recover();
}, },
methods: { methods: {
change() { modify() {
this.isFullScreen = screenfull.isFullscreen // margin
}, this.appMain = document.querySelector('.app-main');
init() { // this.appMain.style.minHeight = 'calc(100vh - 90px)';
if (!screenfull.isEnabled) { this.appMain.style.margin = 0;
this.$message({ // main-footer
message: 'you browser can not work', // this.mainFooter = document.querySelector('.main-footer').cloneNode(true);
type: 'warning' // document.querySelector('.main-footer').remove();
}) this.$refs.dataBoard.classList.add('data-board');
return false },
} recover() {
screenfull.on('change', this.change) this.$refs.dataBoard.classList.remove('data-board');
}, this.$nextTick(() => {
destroy() { this.appMain.style.margin = this.parentStyle.margin;
if (!screenfull.isEnabled) { // this.appMain.style.minHeight = this.parentStyle.minHeight;
this.$message({ // this.appMain.insertAdjacentElement('afterend', this.mainFooter);
message: 'you browser can not work', });
type: 'warning' },
})
return false
}
screenfull.off('change', this.change)
},
//
screenfullChange() {
if (!screenfull.isEnabled) {
this.$message({
message: 'you browser can not work',
type: 'warning'
})
return false
}
screenfull.toggle(this.$refs.dataBoardBoxB)
},
resetSize() {
const dataBoardBox = document.getElementById('dataBoardBox')
const rw = parseFloat(window.innerWidth)
const rh = parseFloat(window.innerHeight)
const bw = parseFloat(dataBoardBox.style.width)
const bh = parseFloat(dataBoardBox.style.height)
let wx = 0
let hy = 0
if (screenfull.isFullscreen) {
wx = rw / bw
hy = rh / bh
} else {
if (this.$store.state.app.sidebar.opened) {
wx = (rw - 283) / bw
} else {
wx = (rw - 88) / bw
}
hy = (rh - 150) / bh
}
this.scaleNum = wx < hy ? wx : hy
},
}, },
}; };
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.dataBoardBoxB { .data-board {
width: 100%; position: absolute;
height: calc(100vh - 150px); top: 0;
position: relative; left: 0;
overflow: auto; width: 100%;
.dataBoardBox { height: 100%;
position: absolute; background: url('../../../assets/images/DataBoard.png') 100% 100% / contain
transform-origin: 16px 8px; no-repeat;
font-size: 16px; }
top: 0px;
left: 0px;
background: url('../../../assets/images/dataBoard/background.png') no-repeat;
background-size: cover;
background-position: 0 0;
overflow: auto;
}
}
</style> </style>

View File

@ -1,8 +1,8 @@
<!-- <!--
filename: EquipmentDrawer.vue filename: EquipmentDrawer.vue
author: liubin author: liubin
date: 2023-08-22 14:38:56 date: 2023-08-22 14:38:56
description: description:
--> -->
<template> <template>
@ -320,7 +320,7 @@ export default {
// //
handleAddAttr() { handleAddAttr() {
if (!this.dataId) return this.$message.warning('请先创建设备分组信息'); if (!this.dataId) return this.$message.error('请先创建设备分组信息');
this.attrForm = { this.attrForm = {
id: null, id: null,
equipmentGroupId: this.dataId, equipmentGroupId: this.dataId,

View File

@ -38,7 +38,7 @@
@close="cancel" @close="cancel"
@cancel="cancel" @cancel="cancel"
@confirm="submitForm"> @confirm="submitForm">
<DialogForm v-if="open" ref="form" v-model="form" :rows="rows" /> <DialogForm v-if="open" ref="form" :dataForm="form" :rows="rows" />
</base-dialog> </base-dialog>
<!-- 抽屉 详情 --> <!-- 抽屉 详情 -->

View File

@ -1,4 +1,4 @@
<!-- <!--
filename: dialogForm.vue filename: dialogForm.vue
author: liubin author: liubin
date: 2023-09-11 15:55:13 date: 2023-09-11 15:55:13
@ -71,14 +71,14 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="工段设备排序" prop="sort"> <el-form-item label="工段排序" prop="sort">
<el-input-number <el-input-number
v-model="dataForm.sort" v-model="dataForm.sort"
filterable filterable
min="0" min="0"
max="100" max="100"
@change="$emit('update', dataForm)" @change="$emit('update', dataForm)"
placeholder="请输入工段设备排序" /> placeholder="请输入工段排序" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -112,7 +112,6 @@
{ label: '无类型', value: 0 }, { label: '无类型', value: 0 },
{ label: '进口统计', value: 1 }, { label: '进口统计', value: 1 },
{ label: '出口统计', value: 2 }, { label: '出口统计', value: 2 },
{ label: '进出口计数', value: 3 },
]" ]"
:key="opt.value" :key="opt.value"
:label="opt.label" :label="opt.label"

Some files were not shown because too many files have changed in this diff Show More