Compare commits

..

2 Commits

Author SHA1 Message Date
8f586cfb23 修改字段 2026-09-04 16:10:02 +08:00
85870cb528 修改部分字段 2026-08-28 15:42:53 +08:00
25 changed files with 57 additions and 84 deletions

View File

@@ -14,10 +14,9 @@ VUE_APP_TITLE = 洛玻集团驾驶舱
# 小田 # 小田
# VUE_APP_BASE_API = 'http://172.16.19.232:7070' # VUE_APP_BASE_API = 'http://172.16.19.232:7070'
# 测试 # 测试
# VUE_APP_BASE_API = 'http://192.168.0.35:8080' VUE_APP_BASE_API = 'http://192.168.0.35:8080'
# 闫阳 # 闫阳
# VUE_APP_BASE_API = 'http://172.16.19.131:7070' # VUE_APP_BASE_API = 'http://172.16.19.131:7070'
VUE_APP_BASE_API = 'http://dashboard.kszny.picaiba.com'
# 路由懒加载 # 路由懒加载

View File

@@ -2,7 +2,7 @@
ENV = 'development' ENV = 'development'
# 页面标题 # 页面标题
VUE_APP_TITLE = 智能MES系统驾驶舱 VUE_APP_TITLE = 洛玻集团驾驶舱
# 芋道管理系统/本地环境 # 芋道管理系统/本地环境
VUE_APP_BASE_API = 'http://api-dashboard.yudao.iocoder.cn' VUE_APP_BASE_API = 'http://api-dashboard.yudao.iocoder.cn'

View File

@@ -3,7 +3,7 @@ NODE_ENV = production
ENV = 'production' ENV = 'production'
# 页面标题 # 页面标题
VUE_APP_TITLE = 智能MES系统驾驶舱 VUE_APP_TITLE = 洛玻集团驾驶舱
# 芋道管理系统/生产环境 # 芋道管理系统/生产环境
# VUE_APP_BASE_API = '/prod-api' # VUE_APP_BASE_API = '/prod-api'

View File

@@ -11,14 +11,20 @@
<div class="avatar-wrapper"> <div class="avatar-wrapper">
<img :src="require(`../../assets/images/choicepart/avatar.png`)" class="user-avatar"> <img :src="require(`../../assets/images/choicepart/avatar.png`)" class="user-avatar">
<span v-if="nickname" class="user-nickname">{{ nickname }}</span> <span v-if="nickname" class="user-nickname">{{ nickname }}</span>
<!-- <i class="el-icon-caret-bottom" /> --> <i class="el-icon-caret-bottom" />
</div> </div>
<!-- <el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<!-- <router-link to="/user/profile">
<el-dropdown-item>个人中心</el-dropdown-item>
</router-link> -->
<!-- <el-dropdown-item @click.native="setting = true">
<span>布局设置</span>
</el-dropdown-item> -->
<el-dropdown-item @click.native="logout"> <el-dropdown-item @click.native="logout">
<span>退出登录</span> <span>退出登录</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item divided @click.native='handleToggle'>切换账号</el-dropdown-item> <el-dropdown-item divided @click.native='handleToggle'>切换账号</el-dropdown-item>
</el-dropdown-menu> --> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</div> </div>
</div> </div>
@@ -174,7 +180,7 @@ export default {
position: relative; position: relative;
.user-avatar { .user-avatar {
// cursor: pointer; cursor: pointer;
width: 35px; width: 35px;
height: 35px; height: 35px;
border-radius: 50%; border-radius: 50%;

View File

@@ -1,11 +1,3 @@
<!--
* @Author: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git
* @Date: 2024-08-02 16:36:49
* @LastEditors: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git
* @LastEditTime: 2026-07-31 15:30:18
* @FilePath: \yudao-dev\src\layout\components\Sidebar\Logo.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template> <template>
<div class="sidebar-logo-container" :class="{'collapse':collapse}" :style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }"> <div class="sidebar-logo-container" :class="{'collapse':collapse}" :style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }">
<transition name="sidebarLogoFade"> <transition name="sidebarLogoFade">
@@ -43,7 +35,7 @@ export default {
}, },
data() { data() {
return { return {
title: '智能MES系统驾驶舱', title: '洛玻集团驾驶舱',
logo: logoImg logo: logoImg
} }
} }
@@ -87,7 +79,7 @@ export default {
color: #fff; color: #fff;
font-weight: 600; font-weight: 600;
line-height: 50px; line-height: 50px;
font-size: 16px; font-size: 14px;
font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif; font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
vertical-align: middle; vertical-align: middle;
} }

View File

@@ -3,7 +3,7 @@ import store from './store'
import { Message } from 'element-ui' import { Message } from 'element-ui'
import NProgress from 'nprogress' import NProgress from 'nprogress'
import 'nprogress/nprogress.css' import 'nprogress/nprogress.css'
import { getAccessToken, setToken, removeToken } from '@/utils/auth' import { getAccessToken, removeToken } from '@/utils/auth'
import { isRelogin } from '@/utils/request' import { isRelogin } from '@/utils/request'
NProgress.configure({ showSpinner: false }) NProgress.configure({ showSpinner: false })
@@ -55,26 +55,11 @@ const whiteList = ['/login', '/social-login', '/auth-redirect', '/bind', '/regi
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
NProgress.start() NProgress.start()
// === MES SSO 跳转URL 参数中携带 token自动存储并登录 ===
// 本地 token 与 URL token 不一致(换用户或首次跳转)时,覆盖并强制重新登录
const searchParams = new URLSearchParams(window.location.search)
const urlAccessToken = searchParams.get('accessToken') || searchParams.get('access_token')
const urlRefreshToken = searchParams.get('refreshToken') || searchParams.get('refresh_token')
if (urlAccessToken && urlRefreshToken && urlAccessToken !== getAccessToken()) {
setToken({ accessToken: urlAccessToken, refreshToken: urlRefreshToken })
// 清空已加载的用户状态,否则 roles 已存在时守卫不会重新 GetInfo导致显示旧用户
store.commit('SET_ROLES', [])
store.commit('SET_PERMISSIONS', [])
next({ path: '/', replace: true })
return
}
// ======
if (getAccessToken()) { if (getAccessToken()) {
to.meta.title && store.dispatch('settings/setTitle', to.meta.title) to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
/* has token*/ /* has token*/
if (to.path === '/login') { if (to.path === '/login') {
const redirectPath = to.query.redirect ? decodeURIComponent(to.query.redirect) : undefined next({ path: store.getters.defaultPath || '/' })
next({ path: redirectPath || store.getters.defaultPath || '/' })
NProgress.done() NProgress.done()
} else { } else {
if (store.getters.roles.length === 0) { if (store.getters.roles.length === 0) {
@@ -145,14 +130,5 @@ router.beforeEach((to, from, next) => {
}) })
router.afterEach(() => { router.afterEach(() => {
// 清理 MES SSO 跳转带入的 token 参数,避免暴露在地址栏
var s = window.location.search
if (s && (s.indexOf('access_token') > -1 || s.indexOf('refresh_token') > -1)) {
var p = new URLSearchParams(s)
p.delete('access_token'); p.delete('accessToken')
p.delete('refresh_token'); p.delete('refreshToken')
var ns = p.toString()
history.replaceState(null, '', window.location.pathname + (ns ? '?' + ns : '') + window.location.hash)
}
NProgress.done() NProgress.done()
}) })

View File

@@ -12,14 +12,14 @@
<div class="avatar-wrapper"> <div class="avatar-wrapper">
<img :src="require(`../../../assets/images/choicepart/avatar.png`)" class="user-avatar"> <img :src="require(`../../../assets/images/choicepart/avatar.png`)" class="user-avatar">
<span v-if="nickname" class="user-nickname">{{ nickname }}</span> <span v-if="nickname" class="user-nickname">{{ nickname }}</span>
<!-- <i class="el-icon-caret-bottom" /> --> <i class="el-icon-caret-bottom" />
</div> </div>
<!-- <el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="logout"> <el-dropdown-item @click.native="logout">
<span>退出登录</span> <span>退出登录</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item divided @click.native='handleToggle'>切换账号</el-dropdown-item> <el-dropdown-item divided @click.native='handleToggle'>切换账号</el-dropdown-item>
</el-dropdown-menu> --> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
<el-button type="text" class="screen-btn" @click="changeHomeSider"> <el-button type="text" class="screen-btn" @click="changeHomeSider">
<svg-icon style="color: #0B58FF;" v-if="openSider" icon-class="closeSider" /> <svg-icon style="color: #0B58FF;" v-if="openSider" icon-class="closeSider" />
@@ -235,7 +235,7 @@ export default {
.top-title { .top-title {
height: 55px; height: 55px;
font-family: "YouSheBiaoTiHei", sans-serif; font-family: "YouSheBiaoTiHei", sans-serif;
font-size: 36px; font-size: 42px;
color: #1E1651; color: #1E1651;
line-height: 55px; line-height: 55px;
letter-spacing: 6px; letter-spacing: 6px;
@@ -389,7 +389,7 @@ export default {
position: relative; position: relative;
.user-avatar { .user-avatar {
// cursor: pointer; cursor: pointer;
width: 32px; width: 32px;
height: 32px; height: 32px;
border-radius: 50%; border-radius: 50%;

View File

@@ -11,14 +11,14 @@
<div class="avatar-wrapper"> <div class="avatar-wrapper">
<img :src="require(`../../../assets/images/choicepart/avatar.png`)" class="user-avatar"> <img :src="require(`../../../assets/images/choicepart/avatar.png`)" class="user-avatar">
<span v-if="nickname" class="user-nickname">{{ nickname }}</span> <span v-if="nickname" class="user-nickname">{{ nickname }}</span>
<!-- <i class="el-icon-caret-bottom" /> --> <i class="el-icon-caret-bottom" />
</div> </div>
<!-- <el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="logout"> <el-dropdown-item @click.native="logout">
<span>退出登录</span> <span>退出登录</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item divided @click.native='handleToggle'>切换账号</el-dropdown-item> <el-dropdown-item divided @click.native='handleToggle'>切换账号</el-dropdown-item>
</el-dropdown-menu> --> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
<!-- <el-button type="text" class="return-btn" :title="'返回'" @click="handleReturn"> <!-- <el-button type="text" class="return-btn" :title="'返回'" @click="handleReturn">
<svg-icon style="color: #0B58FF;" icon-class="returnIcon" /> <svg-icon style="color: #0B58FF;" icon-class="returnIcon" />
@@ -378,7 +378,7 @@ export default {
position: relative; position: relative;
.user-avatar { .user-avatar {
// cursor: pointer; cursor: pointer;
width: 32px; width: 32px;
height: 32px; height: 32px;
border-radius: 50%; border-radius: 50%;

View File

@@ -60,7 +60,7 @@ export default {
{name:'单价',unit:'元/㎡'}, {name:'单价',unit:'元/㎡'},
{name:'净价',unit:'元/㎡'}, {name:'净价',unit:'元/㎡'},
{name:'销量',unit:'万㎡'}, {name:'销量',unit:'万㎡'},
{name:'双镀销量',unit:'万㎡'} {name:'销量_双镀面板',unit:'万㎡'}
] ]
}; };
}, },

View File

@@ -11,14 +11,14 @@
<div class="avatar-wrapper"> <div class="avatar-wrapper">
<img :src="require(`../../../assets/images/choicepart/avatar.png`)" class="user-avatar"> <img :src="require(`../../../assets/images/choicepart/avatar.png`)" class="user-avatar">
<span v-if="nickname" class="user-nickname">{{ nickname }}</span> <span v-if="nickname" class="user-nickname">{{ nickname }}</span>
<!-- <i class="el-icon-caret-bottom" /> --> <i class="el-icon-caret-bottom" />
</div> </div>
<!-- <el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="logout"> <el-dropdown-item @click.native="logout">
<span>退出登录</span> <span>退出登录</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item divided @click.native='handleToggle'>切换账号</el-dropdown-item> <el-dropdown-item divided @click.native='handleToggle'>切换账号</el-dropdown-item>
</el-dropdown-menu> --> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
<el-button type="text" class="return-btn" :title="'返回'" v-if="showReturnBtn" @click="handleReturn"> <el-button type="text" class="return-btn" :title="'返回'" v-if="showReturnBtn" @click="handleReturn">
<svg-icon style="color: #0B58FF;" icon-class="returnIcon" /> <svg-icon style="color: #0B58FF;" icon-class="returnIcon" />
@@ -408,7 +408,7 @@ export default {
position: relative; position: relative;
.user-avatar { .user-avatar {
// cursor: pointer; cursor: pointer;
width: 32px; width: 32px;
height: 32px; height: 32px;
border-radius: 50%; border-radius: 50%;

View File

@@ -77,7 +77,7 @@ export default {
completed: 1 // 销量超额达标 completed: 1 // 销量超额达标
}, },
{ {
name: "双镀销量", name: "销量_双镀面板",
targetValue: 0, targetValue: 0,
value: 0, value: 0,
proportion: 0, proportion: 0,
@@ -113,7 +113,7 @@ export default {
"单价": "unitPrice", "单价": "unitPrice",
"净价": "netPrice", "净价": "netPrice",
"销量": "sales", "销量": "sales",
"双镀销量": "panel", "销量_双镀面板": "panel",
"溢价产品销量": "premiumProduct" "溢价产品销量": "premiumProduct"
}; };

View File

@@ -164,7 +164,7 @@ export default {
itemStyle: { color: 'rgba(39, 96, 255, 1)' } itemStyle: { color: 'rgba(39, 96, 255, 1)' }
}, },
{ {
value: 735, name: '双镀销量', value: 735, name: '销量_双镀面板',
label: { label: {
normal: { normal: {
align: 'left', align: 'left',

View File

@@ -53,7 +53,7 @@ export default {
{ unit: "利润总额·万元", targetValue: 16, currentValue: 15.2, progress: 85 }, { unit: "利润总额·万元", targetValue: 16, currentValue: 15.2, progress: 85 },
{ unit: "毛利率·%", targetValue: 16, currentValue: 15.2, progress: 85 }, { unit: "毛利率·%", targetValue: 16, currentValue: 15.2, progress: 85 },
{ unit: "销量·万㎡", targetValue: 20, currentValue: 16, progress: 80 }, { unit: "销量·万㎡", targetValue: 20, currentValue: 16, progress: 80 },
{ unit: "双镀销量·万㎡", targetValue: 15, currentValue: 13.8, progress: 92 } { unit: "销量_双镀面板·万㎡", targetValue: 15, currentValue: 13.8, progress: 92 }
], ],
// 拖拽相关状态 // 拖拽相关状态
isDragging: false, // 是否正在拖拽 isDragging: false, // 是否正在拖拽

View File

@@ -56,7 +56,7 @@ export default {
progress: 80 progress: 80
}, },
{ {
unit: "双镀销量·万㎡", unit: "销量_双镀面板·万㎡",
targetValue: 15, targetValue: 15,
currentValue: 13.8, currentValue: 13.8,
progress: 92 progress: 92

View File

@@ -1,7 +1,7 @@
<template> <template>
<div id="dayReport" class="dayReport" :style="styles"> <div id="dayReport" class="dayReport" :style="styles">
<sidebar style="opacity: .9;" v-if="!sidebar.hide && openSider" class="sidebar-container" /> <sidebar style="opacity: .9;" v-if="!sidebar.hide && openSider" class="sidebar-container" />
<ReportHeader top-title="智能MES系统运营驾驶舱" :dateData="dateData" :openSider="openSider" :is-full-screen="isFullScreen" @screenfullChange="screenfullChange" <ReportHeader top-title="洛玻集团运营驾驶舱" :dateData="dateData" :openSider="openSider" :is-full-screen="isFullScreen" @screenfullChange="screenfullChange"
@siderOpenChange="siderOpenChange" @timeRangeChange="handleTimeChange" /> @siderOpenChange="siderOpenChange" @timeRangeChange="handleTimeChange" />
<div class="main-body" <div class="main-body"
style="margin-top: -20px; flex: 1; display: flex;padding: 0px 16px 0;flex-direction: column;"> style="margin-top: -20px; flex: 1; display: flex;padding: 0px 16px 0;flex-direction: column;">

View File

@@ -11,14 +11,14 @@
<div class="avatar-wrapper"> <div class="avatar-wrapper">
<img :src="require(`../../../assets/images/choicepart/avatar.png`)" class="user-avatar"> <img :src="require(`../../../assets/images/choicepart/avatar.png`)" class="user-avatar">
<span v-if="nickname" class="user-nickname">{{ nickname }}</span> <span v-if="nickname" class="user-nickname">{{ nickname }}</span>
<!-- <i class="el-icon-caret-bottom" /> --> <i class="el-icon-caret-bottom" />
</div> </div>
<!-- <el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="logout"> <el-dropdown-item @click.native="logout">
<span>退出登录</span> <span>退出登录</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item divided @click.native='handleToggle'>切换账号</el-dropdown-item> <el-dropdown-item divided @click.native='handleToggle'>切换账号</el-dropdown-item>
</el-dropdown-menu> --> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
<el-button type="text" class="return-btn" :title="'返回'" v-if="showReturnBtn" @click="handleReturn"> <el-button type="text" class="return-btn" :title="'返回'" v-if="showReturnBtn" @click="handleReturn">
<svg-icon style="color: #0B58FF;" icon-class="returnIcon" /> <svg-icon style="color: #0B58FF;" icon-class="returnIcon" />
@@ -476,7 +476,7 @@ export default {
position: relative; position: relative;
.user-avatar { .user-avatar {
// cursor: pointer; cursor: pointer;
width: 32px; width: 32px;
height: 32px; height: 32px;
border-radius: 50%; border-radius: 50%;

View File

@@ -177,8 +177,8 @@ export default {
const requestParams = { const requestParams = {
startTime: this.dateData.startTime, startTime: this.dateData.startTime,
endTime: this.dateData.endTime, endTime: this.dateData.endTime,
paramName: '双镀销量', paramName: '销量_双镀面板',
paramList: ['双镀成本', '双镀均价','双镀毛利率'], paramList: ['双镀成本', '单价_双镀面板','双镀毛利率'],
baseId: this.factory, baseId: this.factory,
}; };
// 调用接口 // 调用接口

View File

@@ -173,7 +173,7 @@ export default {
startTime: this.dateData.startTime, startTime: this.dateData.startTime,
endTime: this.dateData.endTime, endTime: this.dateData.endTime,
paramName: '销量', paramName: '销量',
paramList: ['净价', '单价', '产销率', '双镀销量', '双镀占比', '溢价产品销量', '溢价产品毛利'], paramList: ['净价', '单价', '产销率', '销量_双镀面板', '双镀占比', '溢价产品销量', '溢价产品毛利'],
baseId: this.factory, baseId: this.factory,
}; };
// 调用接口 // 调用接口

View File

@@ -69,7 +69,7 @@ export default {
{name:'净价',unit:'元/㎡'}, {name:'净价',unit:'元/㎡'},
{name:'单价',unit:'元/㎡'}, {name:'单价',unit:'元/㎡'},
{name:'产销率',unit:'%'}, {name:'产销率',unit:'%'},
{name:'双镀销量',unit:'万㎡'}, {name:'销量_双镀面板',unit:'万㎡'},
{name:'双镀占比',unit:'%'}, {name:'双镀占比',unit:'%'},
{name:'溢价产品销量',unit:'万㎡'}, {name:'溢价产品销量',unit:'万㎡'},
{name:'溢价产品毛利',unit:'元'}, {name:'溢价产品毛利',unit:'元'},

View File

@@ -63,11 +63,11 @@ export default {
return { return {
activeButton: 0, activeButton: 0,
isDropdownShow: false, isDropdownShow: false,
selectedProfit: '双镀销量', selectedProfit: '销量_双镀面板',
profitOptions:[ profitOptions:[
{name:'双镀销量',unit:'万㎡'}, {name:'销量_双镀面板',unit:'万㎡'},
{name:'双镀成本',unit:'元/㎡'}, {name:'双镀成本',unit:'元/㎡'},
{name:'双镀均价',unit:'元/㎡'}, {name:'单价_双镀面板',unit:'元/㎡'},
{name:'双镀毛利率',unit:'元'}, {name:'双镀毛利率',unit:'元'},
], ],
unit:'万㎡' unit:'万㎡'

View File

@@ -34,7 +34,7 @@ export default {
type: Object, type: Object,
default: () => ({ default: () => ({
双镀成本: { completeRate: 0, diff: 0, real: 0, target: 0, thb: 0 }, 双镀成本: { completeRate: 0, diff: 0, real: 0, target: 0, thb: 0 },
双镀均价: { completeRate: 0, diff: 0, real: 0, target: 0, thb: 0 }, 单价_双镀面板: { completeRate: 0, diff: 0, real: 0, target: 0, thb: 0 },
双镀毛利率: { completeRate: 0, diff: 0, real: 0, target: 0, thb: 0 }, 双镀毛利率: { completeRate: 0, diff: 0, real: 0, target: 0, thb: 0 },
}) })
}, },
@@ -60,7 +60,7 @@ export default {
indicatorDefs() { indicatorDefs() {
return [ return [
{ key: 'financialCost', name: '双镀成本', unit: '元/㎡'}, { key: 'financialCost', name: '双镀成本', unit: '元/㎡'},
{ key: 'financialPrice', name: '双镀均价', unit: '元/㎡'}, { key: 'financialPrice', name: '单价_双镀面板', unit: '元/㎡'},
{ key: 'financialProfit', name: '双镀毛利率', unit: '%'}, { key: 'financialProfit', name: '双镀毛利率', unit: '%'},
] ]
}, },

View File

@@ -78,7 +78,7 @@ export default {
{ key: 'netPrice', name: '净价', unit: '元/㎡', route:'/netPriceAnalysis/netPriceAnalysisBase'}, { key: 'netPrice', name: '净价', unit: '元/㎡', route:'/netPriceAnalysis/netPriceAnalysisBase'},
{ key: 'unitPrice', name: '单价', unit: '元/㎡',route:'/unitPriceAnalysis/unitPriceAnalysisBase' }, { key: 'unitPrice', name: '单价', unit: '元/㎡',route:'/unitPriceAnalysis/unitPriceAnalysisBase' },
{ key: 'productionSales', name: '产销率', unit: '%',route:'/salesVolumeAnalysis/productionSalesBase'}, { key: 'productionSales', name: '产销率', unit: '%',route:'/salesVolumeAnalysis/productionSalesBase'},
{ key: 'sdxl', name: '双镀销量', unit: '万㎡',route:'/salesVolumeAnalysis/doublePlatedBase' }, { key: 'sdxl', name: '销量_双镀面板', unit: '万㎡',route:'/salesVolumeAnalysis/doublePlatedBase' },
{ key: 'freight', name: '双镀占比', unit: '%',route:'/salesVolumeAnalysis/doublePlatedBase' }, { key: 'freight', name: '双镀占比', unit: '%',route:'/salesVolumeAnalysis/doublePlatedBase' },
{ key: 'cpxl', name: '溢价产品销量', unit: '万㎡',route:null }, { key: 'cpxl', name: '溢价产品销量', unit: '万㎡',route:null },
{ key: 'premiumProducts', name: '溢价产品毛利', unit: '元',route:null }, { key: 'premiumProducts', name: '溢价产品毛利', unit: '元',route:null },

View File

@@ -35,7 +35,7 @@ export default {
type: Object, type: Object,
default: () => ({ default: () => ({
双镀成本: { completeRate: 0, diff: 0, real: 0, target: 0, thb: 0 }, 双镀成本: { completeRate: 0, diff: 0, real: 0, target: 0, thb: 0 },
双镀均价: { completeRate: 0, diff: 0, real: 0, target: 0, thb: 0 }, 单价_双镀面板: { completeRate: 0, diff: 0, real: 0, target: 0, thb: 0 },
双镀毛利率: { completeRate: 0, diff: 0, real: 0, target: 0, thb: 0 }, 双镀毛利率: { completeRate: 0, diff: 0, real: 0, target: 0, thb: 0 },
}) })
}, },
@@ -61,7 +61,7 @@ export default {
indicatorDefs() { indicatorDefs() {
return [ return [
{ key: 'financialCost', name: '双镀成本', unit: '元/㎡'}, { key: 'financialCost', name: '双镀成本', unit: '元/㎡'},
{ key: 'financialPrice', name: '双镀均价', unit: '元/㎡'}, { key: 'financialPrice', name: '单价_双镀面板', unit: '元/㎡'},
{ key: 'financialProfit', name: '双镀毛利率', unit: '%'}, { key: 'financialProfit', name: '双镀毛利率', unit: '%'},
] ]
}, },

View File

@@ -39,7 +39,7 @@
border-radius: 100%; border-radius: 100%;
background: #26b9de; background: #26b9de;
"></span> "></span>
智能MES系统 洛玻集团
</p> </p>
</div> </div>
<video src="/static/videos/login.webm" muted autoplay loop style=" <video src="/static/videos/login.webm" muted autoplay loop style="
@@ -54,12 +54,12 @@
<div class="field"> <div class="field">
<!-- [移动端]标题 --> <!-- [移动端]标题 -->
<h2 class="mobile-title"> <h2 class="mobile-title">
<h3 class="title">智能MES系统</h3> <h3 class="title">洛玻集团</h3>
</h2> </h2>
<h2 class="pc-title" style=""> <h2 class="pc-title" style="">
<h3 class="title" style=""> <h3 class="title" style="">
<img src="../assets/logo/cnbm.png" alt="cnbm_logo" style="" class="cnbm_logo" /> <img src="../assets/logo/cnbm.png" alt="cnbm_logo" style="" class="cnbm_logo" />
<span>智能MES系统</span> <span>洛玻集团</span>
</h3> </h3>
<h3 class="sub-title" style=""></h3> <h3 class="sub-title" style=""></h3>
</h2> </h2>

View File

@@ -9,7 +9,7 @@ function resolve(dir) {
const CompressionPlugin = require("compression-webpack-plugin"); const CompressionPlugin = require("compression-webpack-plugin");
const TerserPlugin = require("terser-webpack-plugin"); const TerserPlugin = require("terser-webpack-plugin");
const name = process.env.VUE_APP_TITLE || "智能MES系统驾驶舱"; // 网页标题 const name = process.env.VUE_APP_TITLE || "洛玻集团驾驶舱"; // 网页标题
const port = process.env.port || process.env.npm_config_port || 80; // 端口 const port = process.env.port || process.env.npm_config_port || 80; // 端口