页面结构调整,添加工位屏页面,计划产量页面
114
src/assets/css/styles/iconfont.css
Normal file
@ -0,0 +1,114 @@
|
||||
@font-face {
|
||||
font-family: "iconfont"; /* Project id 3879194 */
|
||||
src: url('//at.alicdn.com/t/c/font_3879194_xfchth53vyb.woff2?t=1686011466607') format('woff2'),
|
||||
url('//at.alicdn.com/t/c/font_3879194_xfchth53vyb.woff?t=1686011466607') format('woff'),
|
||||
url('//at.alicdn.com/t/c/font_3879194_xfchth53vyb.ttf?t=1686011466607') format('truetype');
|
||||
}
|
||||
|
||||
.iconfont {
|
||||
font-family: "iconfont" !important;
|
||||
font-size: 16px;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.icon-lishijilu:before {
|
||||
content: "\eaf7";
|
||||
}
|
||||
|
||||
.icon-zhongyingwen:before {
|
||||
content: "\e607";
|
||||
}
|
||||
|
||||
.icon-baojingxinxi:before {
|
||||
content: "\e636";
|
||||
}
|
||||
|
||||
.icon-shebeiditu:before {
|
||||
content: "\e659";
|
||||
}
|
||||
|
||||
.icon-warning:before {
|
||||
content: "\e606";
|
||||
}
|
||||
|
||||
.icon-back:before {
|
||||
content: "\e617";
|
||||
}
|
||||
|
||||
.icon-icon-temperature:before {
|
||||
content: "\e61c";
|
||||
}
|
||||
|
||||
.icon-shengyin:before {
|
||||
content: "\eae0";
|
||||
}
|
||||
|
||||
.icon-qiya:before {
|
||||
content: "\e7fb";
|
||||
}
|
||||
|
||||
.icon-shuiya:before {
|
||||
content: "\eb33";
|
||||
}
|
||||
|
||||
.icon-fenchen:before {
|
||||
content: "\eb3c";
|
||||
}
|
||||
|
||||
.icon-dianliu:before {
|
||||
content: "\e665";
|
||||
}
|
||||
|
||||
.icon-guandao:before {
|
||||
content: "\e63b";
|
||||
}
|
||||
|
||||
.icon-jinggao:before {
|
||||
content: "\e61b";
|
||||
}
|
||||
|
||||
.icon-zhengque1:before {
|
||||
content: "\e653";
|
||||
}
|
||||
|
||||
.icon-beikongshuiwupingtaimenhu-tubiao_zhinengwangguan:before {
|
||||
content: "\e62e";
|
||||
}
|
||||
|
||||
.icon-weibiaoti-:before {
|
||||
content: "\e61e";
|
||||
}
|
||||
|
||||
.icon-dianji:before {
|
||||
content: "\e605";
|
||||
}
|
||||
|
||||
.icon-jingshideng:before {
|
||||
content: "\e60f";
|
||||
}
|
||||
|
||||
.icon-wangguan:before {
|
||||
content: "\ec5d";
|
||||
}
|
||||
|
||||
.icon-yanwubaojingqi:before {
|
||||
content: "\ec78";
|
||||
}
|
||||
|
||||
.icon-TVOC-Outlined:before {
|
||||
content: "\e642";
|
||||
}
|
||||
|
||||
.icon-weibiaoti1:before {
|
||||
content: "\e634";
|
||||
}
|
||||
|
||||
.icon-ranqi:before {
|
||||
content: "\e663";
|
||||
}
|
||||
|
||||
.icon-app_icons--:before {
|
||||
content: "\e61d";
|
||||
}
|
BIN
src/assets/css/styles/iconfont.ttf
Normal file
BIN
src/assets/css/styles/iconfont.woff
Normal file
BIN
src/assets/css/styles/iconfont.woff2
Normal file
BIN
src/assets/font/STXINGKA.TTF
Normal file
12
src/http/Exhibition/Bengal/index.ts
Normal file
@ -0,0 +1,12 @@
|
||||
import {get,post} from "@/utils/http"
|
||||
|
||||
//获取设备在线状态、设备列表
|
||||
export function mjlDeviceList(){
|
||||
return get('/screen/cisma/mjlDeviceList')
|
||||
}
|
||||
|
||||
|
||||
//获取设备在线状态、设备列表
|
||||
export function mjlDeviceProduction(){
|
||||
return get('/screen/cisma/mjlDeviceProduction')
|
||||
}
|
13
src/http/Exhibition/station.ts
Normal file
@ -0,0 +1,13 @@
|
||||
import {get,post} from "@/utils/http"
|
||||
|
||||
//获取设备在线状态、设备列表
|
||||
export function getStatus(data){
|
||||
return get('/socket/status',data)
|
||||
}
|
||||
|
||||
export function setOpen(data){
|
||||
return get('/socket/open',data)
|
||||
}
|
||||
export function setClose(data){
|
||||
return get('/socket/close',data)
|
||||
}
|
6
src/http/Exhibition/table.ts
Normal file
@ -0,0 +1,6 @@
|
||||
import {get,post} from "@/utils/http"
|
||||
|
||||
//获取设备在线状态、设备列表
|
||||
export function getPlanProduction(data){
|
||||
return get('/screen/cisma/getPlanProduction',data)
|
||||
}
|
@ -315,6 +315,11 @@ export default {
|
||||
'年':'Año',
|
||||
'月':'Mes',
|
||||
'日':'Fecha',
|
||||
"再登软件工况物联系统": "GOATS Working Condition IoT",
|
||||
"富怡立式啧墨切割机": "Richpeace inkjet cutting machine",
|
||||
"富怡多功能绣花机": "Richpeace embroidery machine",
|
||||
"JUKI高速直驱平缝机": "JUKI lockstitch sewing machine",
|
||||
"Yamato包缝机": "Yamato overlock sewing machine",
|
||||
},
|
||||
"default":{
|
||||
'年': 'Year',
|
||||
|
@ -90,9 +90,9 @@ export default {
|
||||
'DevName':'Machine Name',
|
||||
'JiqiName':'Machine Name',
|
||||
'ofLegion':'Affiliated Division',
|
||||
'DevStatus':'Equipment Status',
|
||||
'DevStatus':'Device Status',
|
||||
'JiqiStatus':'Machine Status',
|
||||
"RunTime":'Running hours',
|
||||
"RunTime":'Working hours',
|
||||
'finishSchedule':'Complete Schedule',
|
||||
'deliveryDay':'Delivery Date',
|
||||
'LoadMore':'Loading More',
|
||||
@ -160,7 +160,7 @@ export default {
|
||||
'haltTime':'Emergency Stop hours',
|
||||
'DevRunComparison':'Running Comparison Diagram',
|
||||
'TimeUtilizationRate':'Time Utilization',
|
||||
'UtilizationRate':'Utilization',
|
||||
'UtilizationRate':'Utilization Rate',
|
||||
'MicrofactoriesDevChart':'Micro-Factory Equipment IoT',
|
||||
'MicrofactoriesDevinfo':'Micro-Factory Equipment Information',
|
||||
'DevRunNum':'Running Equipment Quantity',
|
||||
@ -324,6 +324,12 @@ export default {
|
||||
'年':'Year',
|
||||
'月':'Month',
|
||||
'日':'Date',
|
||||
"再登软件工况物联系统": "GOATS Working Condition IoT",
|
||||
"富怡立式啧墨切割机": "Richpeace inkjet cutting machine",
|
||||
"富怡多功能绣花机": "Richpeace embroidery machine",
|
||||
"JUKI高速直驱平缝机": "JUKI lockstitch sewing machine",
|
||||
"Yamato包缝机": "Yamato overlock sewing machine",
|
||||
|
||||
},
|
||||
"default":{
|
||||
'年': 'Year',
|
||||
@ -339,19 +345,19 @@ export default {
|
||||
'启动': 'Start',
|
||||
"总数":"Total",
|
||||
"在线":"Online",
|
||||
"台":"unit",
|
||||
"台":"Unit",
|
||||
"序号":"No.",
|
||||
"设备名称":"Equipment",
|
||||
"设备名称":"Device",
|
||||
"编号":"Num",
|
||||
"状态":"State",
|
||||
"稼动率":"rate",
|
||||
"稼动率":"Rate",
|
||||
"工作时长":"Working",
|
||||
},
|
||||
"MicroExhibition":{
|
||||
"富怡服装微工厂物联管理平台":"Richpeace Garment Micro Factory IoT Management Platform",
|
||||
"裁剪设备":"cutting",
|
||||
"裁剪设备":"Cutting",
|
||||
"缝前设备":"Before sewing",
|
||||
"缝中设备":"on sewing",
|
||||
"后整设备":"finishing",
|
||||
"缝中设备":"Sewing",
|
||||
"后整设备":"Finishing",
|
||||
}
|
||||
}
|
@ -323,6 +323,11 @@ export default {
|
||||
'年': '年',
|
||||
'月': '月',
|
||||
'日': '日',
|
||||
"再登软件工况物联系统": "再登软件工况物联系统",
|
||||
"富怡立式啧墨切割机": "富怡立式啧墨切割机",
|
||||
"富怡多功能绣花机": "富怡多功能绣花机",
|
||||
"JUKI高速直驱平缝机": "JUKI高速直驱平缝机",
|
||||
"Yamato包缝机": "Yamato包缝机",
|
||||
},
|
||||
"default":{
|
||||
'年': '年',
|
||||
|
@ -11,6 +11,7 @@
|
||||
import { createRouter, createWebHashHistory, RouteRecordRaw } from "vue-router";
|
||||
import { selectPermission } from "@/http/rule/index"
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { getStoredLanguage, saveStoredLanguage, languageHash } from "@/utils/languageStorage";
|
||||
const routes: Array<RouteRecordRaw> = [
|
||||
{
|
||||
path: "/child",
|
||||
@ -266,13 +267,13 @@ const routes: Array<RouteRecordRaw> = [
|
||||
name: "MicroExhibitionChild",
|
||||
component: () => import("../views/MicroExhibition/child/index.vue"),
|
||||
},
|
||||
]
|
||||
|
||||
]
|
||||
|
||||
},
|
||||
{
|
||||
path: "/CismaExhibition",
|
||||
name: "CismaExhibition",
|
||||
component: () => import("../views/MicroExhibition/indexOld.vue"),
|
||||
component: () => import("../views/Exhibition/Cisma/index.vue"),
|
||||
},
|
||||
{
|
||||
path: "/ColombiaExhibition",
|
||||
@ -289,10 +290,15 @@ const routes: Array<RouteRecordRaw> = [
|
||||
name: "ExhibitionTable",
|
||||
component: () => import("../views/Exhibition/table/index.vue"),
|
||||
},
|
||||
{
|
||||
path: "/ExhibitionStation_:id",
|
||||
name: "ExhibitionStation",
|
||||
component: () => import("../views/Exhibition/Station/index.vue"),
|
||||
},
|
||||
{
|
||||
path: "/MicroExhibitionTable",
|
||||
name: "MicroExhibitionTable",
|
||||
component: () => import("../views/MicroExhibition/table.vue"),
|
||||
component: () => import("../views/Exhibition/Cisma/table.vue"),
|
||||
},
|
||||
{
|
||||
path: "/Hazardous",
|
||||
@ -396,16 +402,19 @@ router.beforeEach(async (to: any, from, next) => {
|
||||
// ...
|
||||
let address = to.name
|
||||
let hash = to.query.hash
|
||||
let lang = to.query?.lang||''
|
||||
let lang = to.query?.lang || ''
|
||||
let arr = [
|
||||
'legionProducts', 'devItem', 'tufting', 'Winding', 'Large_Format',
|
||||
'GetonAgain', 'OffsiteDevList', 'Mechanicschild', 'Mechanicsson','historyData', 'jixieHistoryData'
|
||||
'GetonAgain', 'OffsiteDevList', 'Mechanicschild', 'Mechanicsson', 'historyData', 'jixieHistoryData'
|
||||
]
|
||||
|
||||
if (lang && languageHash(lang) && languageHash(lang) != getStoredLanguage()) {
|
||||
saveStoredLanguage(languageHash(lang))
|
||||
window.location.reload()
|
||||
return false
|
||||
}
|
||||
// 返回 false 以取消导航
|
||||
if (to.path == "/") {
|
||||
sessionStorage.setItem("screen_hash", to.query.hash);
|
||||
|
||||
next();
|
||||
} else if (arr.includes(address)) {
|
||||
next();
|
||||
@ -427,7 +436,7 @@ router.beforeEach(async (to: any, from, next) => {
|
||||
})
|
||||
|
||||
// router.beforeEach(async (to: any, from, next) => {
|
||||
|
||||
|
||||
// // 返回 false 以取消导航
|
||||
// if (to.path !== "/SewingBift") {
|
||||
|
||||
|
@ -56,7 +56,7 @@ const setCharts = () => {
|
||||
yAxis: [
|
||||
{
|
||||
type: 'value',
|
||||
name: t('messages.日产量'),
|
||||
name: t('default.日产量'),
|
||||
axisLabel: {
|
||||
fontSize: 14
|
||||
}
|
||||
|
Before Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 118 KiB |
BIN
src/views/Exhibition/Bengal/images/juki.png
Normal file
After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 294 KiB |
BIN
src/views/Exhibition/Bengal/images/pmqgj.png
Normal file
After Width: | Height: | Size: 157 KiB |
BIN
src/views/Exhibition/Bengal/images/xhj.png
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
src/views/Exhibition/Bengal/images/yamato.png
Normal file
After Width: | Height: | Size: 212 KiB |
@ -12,17 +12,18 @@
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<div class="title">
|
||||
<Header :title="t('messages.富怡物联管理平台')" :wh="{ width: '100%', height: '100px' }"></Header>
|
||||
<Header :title="t('messages.再登软件工况物联系统')" :wh="{ width: '100%', height: '100px' }"></Header>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="left">
|
||||
<BorderVue :title="t('messages.服装模板机')">
|
||||
<BorderVue :title="t('messages.富怡立式啧墨切割机')">
|
||||
<div class="box">
|
||||
<img src="./images/fzmbj.png" class="fzmbj-img" alt="">
|
||||
<img src="./images/pmqgj.png" class="fzmbj-img" alt="">
|
||||
<div class="devcard-container">
|
||||
<DevCard :dev_title="dev_title" :dev_value="mubanji_value">
|
||||
<BarChart style="width: 100%;height: 100%;" :xData="data_chart.xData" :seriesData="data_chart.mubanji_series">
|
||||
<DevCard :dev_title="dev_title" :dev_value="lspmqgj_value">
|
||||
<BarChart style="width: 100%;height: 100%;" :xData="data_chart.xData"
|
||||
:seriesData="data_chart.qiegeji_series">
|
||||
</BarChart>
|
||||
</DevCard>
|
||||
</div>
|
||||
@ -33,28 +34,29 @@
|
||||
</div>
|
||||
<div class="center">
|
||||
<div class="ctop">
|
||||
<video controls loop autoplay="true" ref="videoElement" width="780">
|
||||
<!-- <video controls loop autoplay="true" ref="videoElement" width="780">
|
||||
<source :src="videoUrl" type="video/mp4" />
|
||||
</video>
|
||||
</video> -->
|
||||
</div>
|
||||
<div class="cbottom">
|
||||
<BorderVue :title="t('messages.单头混合毛巾绣花机')">
|
||||
<BorderVue :title="t('messages.富怡多功能绣花机')">
|
||||
<div class="box">
|
||||
<div class="box-top">
|
||||
<div class="top-item" v-for="(item, index) in mjxhj_data">
|
||||
<div class="top-item" v-for="(item, index) in xhj_data">
|
||||
<span class="key-text">{{ item.key }}:</span>
|
||||
<span class="value-text" :class="{ status: index == 1 }"
|
||||
:style="{ background: index == 1 ? status_color[item.value] : '' }">{{ index ==
|
||||
1 ? '' : item.value }}</span>
|
||||
<span class="value-text" :class="{ status: index == 1 }"
|
||||
:style="{ background: index == 1 ? status_color[item.value] : '' }">{{ index ==
|
||||
1 ? '' : item.value }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-bottom">
|
||||
<div class="box-bottom-left">
|
||||
<BarChart style="width: 100%;height: 100%;" :xData="data_chart.xData" :seriesData="data_chart.xiuhuaji_series">
|
||||
</BarChart>
|
||||
<BarChart style="width: 100%;height: 100%;" :xData="data_chart.xData"
|
||||
:seriesData="data_chart.xiuhua_series">
|
||||
</BarChart>
|
||||
</div>
|
||||
<div class="box-bottom-right">
|
||||
<img src="./images/mjxhj.png" alt="">
|
||||
<img src="./images/xhj.png" alt="">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -62,18 +64,55 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="right">
|
||||
<BorderVue :title="t('messages.绘图仪')">
|
||||
<div class="box">
|
||||
<img src="./images/hty.png" class="fzmbj-img" alt="">
|
||||
<div class="devcard-container">
|
||||
<DevCard :dev_title="dev_title" :dev_value="huituyi_value">
|
||||
<BarChart style="width: 100%;height: 100%;" :xData="data_chart.xData" :seriesData="data_chart.huituyi_series">
|
||||
</BarChart>
|
||||
</DevCard>
|
||||
<div class="rtop">
|
||||
<BorderVue :title="t('messages.JUKI高速直驱平缝机')">
|
||||
<div class="box">
|
||||
<div class="box-top">
|
||||
<div class="top-item" v-for="(item, index) in juki_data">
|
||||
<span class="key-text">{{ item.key }}:</span>
|
||||
<span class="value-text" :class="{ status: index == 1 }"
|
||||
:style="{ background: index == 1 ? status_color[item.value] : '' }">{{ index ==
|
||||
1 ? '' : item.value }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-bottom">
|
||||
<div class="box-bottom-left">
|
||||
<BarChart style="width: 100%;height: 100%;" :xData="data_chart.xData"
|
||||
:seriesData="data_chart.juki_series">
|
||||
</BarChart>
|
||||
</div>
|
||||
<div class="box-bottom-right">
|
||||
<img src="./images/juki.png" alt="">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</BorderVue>
|
||||
</div>
|
||||
<div class="rbottom">
|
||||
<BorderVue :title="t('messages.Yamato包缝机')">
|
||||
<div class="box">
|
||||
<div class="box-top">
|
||||
<div class="top-item" v-for="(item, index) in yamato_data">
|
||||
<span class="key-text">{{ item.key }}:</span>
|
||||
<span class="value-text" :class="{ status: index == 1 }"
|
||||
:style="{ background: index == 1 ? status_color[item.value] : '' }">{{ index ==
|
||||
1 ? '' : item.value }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-bottom">
|
||||
<div class="box-bottom-left">
|
||||
<BarChart style="width: 100%;height: 100%;" :xData="data_chart.xData"
|
||||
:seriesData="data_chart.yamato_series">
|
||||
</BarChart>
|
||||
</div>
|
||||
<div class="box-bottom-right">
|
||||
<img src="./images/yamato.png" alt="">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</BorderVue>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</BorderVue>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -89,16 +128,16 @@ import BarChart from './component/BarChart.vue'
|
||||
import { getmDeviceList, getmDeviceProduction } from '@/http/MicroExhibition'
|
||||
import { ref, onMounted, onUnmounted, getCurrentInstance, watch, onUpdated, computed, reactive } from 'vue'
|
||||
|
||||
import {columbiaDeviceList,columbiaDeviceProduction} from '@/http/Exhibition/Colombia'
|
||||
import { mjlDeviceList, mjlDeviceProduction } from '@/http/Exhibition/Bengal'
|
||||
import { connectWebsocket, closeWebsocket } from "@/utils/websocket"
|
||||
import { getStoredLanguage, saveStoredLanguage,languageHash } from "@/utils/languageStorage";
|
||||
import { getStoredLanguage, saveStoredLanguage, languageHash } from "@/utils/languageStorage";
|
||||
import { useRoute } from 'vue-router'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
let route = useRoute()
|
||||
let { t } = useI18n();
|
||||
let lang = route.query.lang as string
|
||||
|
||||
if (lang &&languageHash(lang)&&languageHash(lang) != getStoredLanguage()) {
|
||||
if (lang && languageHash(lang) && languageHash(lang) != getStoredLanguage()) {
|
||||
saveStoredLanguage(languageHash(lang))
|
||||
window.location.reload()
|
||||
}
|
||||
@ -108,13 +147,24 @@ const videoElement = ref(null)
|
||||
let timer = null
|
||||
let timers = null
|
||||
let dev_title = ref([t('messages.RackNum'), t('messages.DevStatus'), t('messages.UtilizationRate'), t('messages.RunTime')])
|
||||
let mubanji_value = ref([
|
||||
let lspmqgj_value = ref([
|
||||
[102014422, '0', '40层', '0min']
|
||||
])
|
||||
let huituyi_value = ref([
|
||||
[102014422, '0', '40层', '0min']
|
||||
let xhj_data = reactive([
|
||||
{ key: t('messages.RackNum'), value: '102014422' },
|
||||
{ key: t('messages.DevStatus'), value: 2 },
|
||||
{ key: t('messages.UtilizationRate'), value: '40层' },
|
||||
{ key: t('messages.RunTime'), value: '0min' },
|
||||
])
|
||||
let mjxhj_data = reactive([
|
||||
|
||||
let juki_data = reactive([
|
||||
{ key: t('messages.RackNum'), value: '102014422' },
|
||||
{ key: t('messages.DevStatus'), value: 2 },
|
||||
{ key: t('messages.UtilizationRate'), value: '40层' },
|
||||
{ key: t('messages.RunTime'), value: '0min' },
|
||||
])
|
||||
|
||||
let yamato_data = reactive([
|
||||
{ key: t('messages.RackNum'), value: '102014422' },
|
||||
{ key: t('messages.DevStatus'), value: 2 },
|
||||
{ key: t('messages.UtilizationRate'), value: '40层' },
|
||||
@ -127,39 +177,48 @@ const status_color = {
|
||||
'3': '#FDDD60',
|
||||
}
|
||||
async function getcolumbiaDeviceList() {
|
||||
const result:any = await columbiaDeviceList();
|
||||
const result: any = await mjlDeviceList();
|
||||
if (result.code == 200) {
|
||||
let {data} = result;
|
||||
let mubanji = data['服装模板机']
|
||||
let huituyi = data['绘图仪(一代)']
|
||||
let xiuhuaji = data['单头混合毛巾绣花机']
|
||||
mubanji_value.value = [
|
||||
[mubanji.label,mubanji.status,mubanji.ratio,mubanji.workTime]
|
||||
]
|
||||
huituyi_value.value = [
|
||||
[huituyi.label,huituyi.status,huituyi.ratio,huituyi.workTime]
|
||||
let { data } = result;
|
||||
let lspmqgj = data['立式喷墨切割机']
|
||||
let xiuhuaji = data['多功能绣花机']
|
||||
let juki = data['JUKI高速直驱平缝机']
|
||||
let yamato = data['Yamato包缝机']
|
||||
lspmqgj_value.value = [
|
||||
[lspmqgj.label, lspmqgj.status, lspmqgj.ratio, lspmqgj.workTime]
|
||||
]
|
||||
|
||||
mjxhj_data[0].value = xiuhuaji.label
|
||||
mjxhj_data[1].value = xiuhuaji.status
|
||||
mjxhj_data[2].value = xiuhuaji.ratio
|
||||
mjxhj_data[3].value = xiuhuaji.workTime
|
||||
xhj_data[0].value = xiuhuaji.label
|
||||
xhj_data[1].value = xiuhuaji.status
|
||||
xhj_data[2].value = xiuhuaji.ratio
|
||||
xhj_data[3].value = xiuhuaji.workTime
|
||||
|
||||
juki_data[0].value = juki.label
|
||||
juki_data[1].value = juki.status
|
||||
juki_data[2].value = juki.ratio
|
||||
juki_data[3].value = juki.workTime
|
||||
|
||||
yamato_data[0].value = yamato.label
|
||||
yamato_data[1].value = yamato.status
|
||||
yamato_data[2].value = yamato.ratio
|
||||
yamato_data[3].value = yamato.workTime
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
let data_chart = reactive({ mubanji_series: [1,2], xiuhuaji_series: [3,4], huituyi_series: [5,6], xData: [t('messages.计划产量'),t('messages.实际产量')] })
|
||||
let data_chart = reactive({ qiegeji_series: [1, 2], xiuhua_series: [3, 4], juki_series: [5, 6],yamato_series: [5, 6], xData: [t('default.计划产量'), t('default.实际产量')] })
|
||||
|
||||
function getcolumbiaDeviceProduction() {
|
||||
columbiaDeviceProduction().then((result:any) => {
|
||||
|
||||
mjlDeviceProduction().then((result: any) => {
|
||||
|
||||
if (result.code == 200) {
|
||||
let {data} = result;
|
||||
|
||||
data_chart.mubanji_series = data.mubanji
|
||||
data_chart.xiuhuaji_series = data.xiuhuaji
|
||||
data_chart.huituyi_series = data.huituyi
|
||||
let { data } = result;
|
||||
|
||||
data_chart.qiegeji_series = data.qiegeji
|
||||
data_chart.xiuhua_series = data.xiuhua
|
||||
data_chart.juki_series = data.juki
|
||||
data_chart.yamato_series = data.yamato
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -175,17 +234,21 @@ function getWebsocket(val) {
|
||||
|
||||
if (data.type == 'WorkingState') {
|
||||
let msg = data.msg
|
||||
//绘图仪
|
||||
if (msg.RackNumber == '104019066') {
|
||||
huituyi_value.value[0][1] = msg.WorkingState
|
||||
}
|
||||
//模板机
|
||||
if (msg.RackNumber == '10102118') {
|
||||
mubanji_value.value[0][1] = msg.WorkingState
|
||||
//喷墨切割机
|
||||
if (msg.RackNumber == '104019306') {
|
||||
lspmqgj_value.value[0][1] = msg.WorkingState
|
||||
}
|
||||
//绣花机
|
||||
if (msg.RackNumber == '1021875') {
|
||||
mjxhj_data[1].value = msg.WorkingState
|
||||
if (msg.RackNumber == '1021631') {
|
||||
xhj_data[1].value = msg.WorkingState
|
||||
}
|
||||
//JUKI
|
||||
if (msg.RackNumber == 'JUKI高速直驱平缝机') {
|
||||
juki_data[1].value = msg.WorkingState
|
||||
}
|
||||
//Yamato
|
||||
if (msg.RackNumber == 'Yamato包缝机') {
|
||||
yamato_data[1].value = msg.WorkingState
|
||||
}
|
||||
|
||||
|
||||
@ -258,6 +321,8 @@ onUnmounted(() => {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.center {
|
||||
width: 800px;
|
||||
height: 100%;
|
||||
@ -282,6 +347,16 @@ onUnmounted(() => {
|
||||
height: 480px;
|
||||
}
|
||||
|
||||
.rtop {
|
||||
width: 100%;
|
||||
height: 490px;
|
||||
}
|
||||
|
||||
.rbottom {
|
||||
width: 100%;
|
||||
height: 480px;
|
||||
}
|
||||
|
||||
|
||||
.box {
|
||||
width: 100%;
|
||||
@ -324,12 +399,17 @@ onUnmounted(() => {
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.box-bottom-left {
|
||||
width: 250px;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.box-bottom-right {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
@ -347,6 +427,7 @@ onUnmounted(() => {
|
||||
box-sizing: border-box;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.key-text {
|
||||
width: 60%;
|
||||
font-size: 18px;
|
||||
@ -369,5 +450,4 @@ onUnmounted(() => {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
</style>
|
||||
}</style>
|
||||
|
12
src/views/Exhibition/Cisma/images/u290.svg
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="61px" height="87px" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<linearGradient gradientUnits="userSpaceOnUse" x1="0" y1="42" x2="58" y2="42" id="LinearGradient191">
|
||||
<stop id="Stop192" stop-color="#0033ff" stop-opacity="0.5294117647058824" offset="0" />
|
||||
<stop id="Stop193" stop-color="#00ffff" offset="1" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g transform="matrix(1 0 0 1 -1847 -1012 )">
|
||||
<path d="M 57.58803112269304 0.15649613942387075 L 26.45614035087719 1.6000000000000454 L 1 30.799999999999955 L 1 83.20000000000005 " stroke-width="2" stroke="url(#LinearGradient191)" fill="none" transform="matrix(1 0 0 1 1848 1013 )" />
|
||||
</g>
|
||||
</svg>
|
12
src/views/Exhibition/Cisma/images/u305.svg
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="73px" height="88px" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<linearGradient gradientUnits="userSpaceOnUse" x1="0" y1="42.5" x2="70" y2="42.5" id="LinearGradient194">
|
||||
<stop id="Stop195" stop-color="#0033ff" stop-opacity="0.5294117647058824" offset="0" />
|
||||
<stop id="Stop196" stop-color="#00ffff" offset="1" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g transform="matrix(1 0 0 1 -666 -592 )">
|
||||
<path d="M 69.58823529411764 1 L 30.88235294117647 1 L 0 35.19718310049065 L 0 85 " stroke-width="2" stroke="url(#LinearGradient194)" fill="none" transform="matrix(1 0 0 1 667 593 )" />
|
||||
</g>
|
||||
</svg>
|
@ -98,10 +98,7 @@ let route = useRoute()
|
||||
let { t } = useI18n();
|
||||
let lang = route.query.lang as string
|
||||
|
||||
if (lang &&languageHash(lang)&&languageHash(lang) != getStoredLanguage()) {
|
||||
saveStoredLanguage(languageHash(lang))
|
||||
window.location.reload()
|
||||
}
|
||||
|
||||
|
||||
let videoUrl = ref('https://d.tufting222.cn/video/yzy/GEDOS_merge.mp4')
|
||||
const videoElement = ref(null)
|
||||
|
1
src/views/Exhibition/Station/images/off.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg t="1700290369973" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12267" width="200" height="200"><path d="M492.8 76.8c-10.4 10.4-12.8 33.6-12.8 126.4 0 130.4 6.4 151.2 43.2 134.4L544 328V205.6C544 84 540 64 515.2 64c-5.6 0-16 5.6-22.4 12.8z" p-id="12268" data-spm-anchor-id="a313x.search_index.0.i11.472d3a81w6ezn1" class="selected" fill="#d81e06"></path><path d="M206.4 215.2c-22.4 8-84 96-106.4 150.4C28.8 544 72.8 736.8 214.4 864.8c51.2 45.6 123.2 86.4 185.6 103.2 54.4 15.2 171.2 13.6 228-3.2 164.8-48.8 286.4-176.8 320-338.4 14.4-68.8 14.4-112 0-180-15.2-74.4-52.8-149.6-100-200-32.8-36-40.8-40.8-53.6-33.6-24.8 15.2-20.8 33.6 18.4 85.6 42.4 56.8 60.8 96 74.4 156 27.2 128.8-10.4 254.4-106.4 350.4-150.4 150.4-379.2 152.8-533.6 5.6-145.6-139.2-158.4-365.6-28-521.6 16-19.2 28.8-40.8 28.8-49.6 0-17.6-23.2-31.2-41.6-24z" p-id="12269" data-spm-anchor-id="a313x.search_index.0.i10.472d3a81w6ezn1" class="selected" fill="#d81e06"></path><path d="M337.6 456.8c-55.2 27.2-86.4 108.8-65.6 171.2 32 98.4 143.2 128.8 206.4 56.8 64.8-73.6 41.6-198.4-44-233.6-36-15.2-56.8-14.4-96.8 5.6zM432 492c66.4 34.4 63.2 151.2-4.8 184-32 15.2-46.4 15.2-75.2 0-65.6-33.6-65.6-148.8-0.8-184 27.2-15.2 52-15.2 80.8 0zM596.8 497.6c-7.2 9.6-12.8 28-12.8 40 0 16.8-4 22.4-16 22.4-10.4 0-16 5.6-16 16s5.6 16 16 16c14.4 0 16 5.6 16 48s1.6 48 16 48 16-5.6 16-48 1.6-48 16-48c10.4 0 16-5.6 16-16 0-11.2-5.6-16-16.8-16-12.8 0-16-4-13.6-22.4 1.6-17.6 6.4-22.4 27.2-24 17.6-1.6 27.2-7.2 29.6-18.4 4-13.6 0-15.2-30.4-15.2-27.2 0-37.6 4-47.2 17.6zM732.8 497.6c-7.2 9.6-12.8 28-12.8 40 0 16.8-4 22.4-16 22.4-10.4 0-16 5.6-16 16s5.6 16 16 16c14.4 0 16 5.6 16 48s1.6 48 16 48 16-5.6 16-48 1.6-48 16-48c10.4 0 16-5.6 16-16 0-11.2-5.6-16-16.8-16-12.8 0-16-4-13.6-22.4 1.6-17.6 6.4-22.4 28.8-24 19.2-1.6 25.6-6.4 25.6-18.4 0-23.2-58.4-21.6-75.2 2.4z" p-id="12270" data-spm-anchor-id="a313x.search_index.0.i12.472d3a81w6ezn1" class="selected" fill="#d81e06"></path></svg>
|
After Width: | Height: | Size: 1.9 KiB |
1
src/views/Exhibition/Station/images/on.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg t="1700290260842" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4274" width="200" height="200"><path d="M829.952 195.584l-0.512-0.512c-0.512-0.512-1.024-1.536-2.048-2.048-12.288-12.8-32.768-12.8-45.568 0-12.8 12.288-12.8 32.768-0.512 45.568l2.048 2.048 0.512 0.512c148.992 150.016 148.48 392.704-2.048 541.696s-392.704 148.48-541.696-2.048c-148.48-149.504-148.48-391.168 0.512-540.672 0 0 0.512 0 0.512-0.512 12.8-12.288 12.8-32.768 0.512-45.568s-32.768-12.8-45.568 0l-0.512 0.512C20.992 369.664 20.48 651.776 194.048 826.88c174.08 175.616 457.728 176.64 633.344 2.048s176.64-457.728 2.56-633.344z" fill="#92D050" p-id="4275" data-spm-anchor-id="a313x.search_index.0.i3.472d3a81w6ezn1" class="selected"></path><path d="M512.512 416.256c17.92 0 32.768-20.992 32.768-46.08V99.328c0-25.6-14.848-46.08-32.768-46.08s-32.768 20.992-32.768 46.08v270.336c0 25.6 14.848 46.592 32.768 46.592z" fill="#92D050" p-id="4276" data-spm-anchor-id="a313x.search_index.0.i6.472d3a81w6ezn1" class="selected"></path><path d="M399.872 724.992c-58.368 0-103.424-45.568-103.424-107.52 0-57.344 40.96-108.544 103.424-108.544 59.392 0 104.448 46.592 104.448 108.544 0 65.024-45.568 107.52-104.448 107.52z m0-180.736c-39.424 0-66.56 33.28-66.56 73.216 0 41.984 29.696 72.192 66.56 72.192 37.888 0 67.584-30.208 67.584-72.192s-29.696-73.216-67.584-73.216zM686.592 718.848v-123.392c0-32.256-18.432-51.2-48.128-51.2-30.208 0-48.64 20.992-48.64 51.2v123.392h-35.84V512h35.84v25.6c14.336-17.92 32.768-29.184 58.368-29.184 43.52 0 73.728 31.232 73.728 86.528v123.392h-35.328z" fill="#92D050" p-id="4277" data-spm-anchor-id="a313x.search_index.0.i7.472d3a81w6ezn1" class="selected"></path></svg>
|
After Width: | Height: | Size: 1.7 KiB |
358
src/views/Exhibition/Station/index.vue
Normal file
@ -0,0 +1,358 @@
|
||||
<template>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<div class="left">
|
||||
<!-- <img class="image" src="./../../../assets/images/bf_logo.png" alt=""> -->
|
||||
<div class="title">北京服装学院</div>
|
||||
</div>
|
||||
<div class="right">
|
||||
<!-- <button class="btn" @click="toLogin">登录</button> -->
|
||||
</div>
|
||||
<div class="back" @click="back()">
|
||||
<i class="iconfont icon-back"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="content-item">
|
||||
<img :src="image" alt="" class="image">
|
||||
</div>
|
||||
|
||||
<div class="content-item">
|
||||
<div class="dviece-info">
|
||||
<div v-for="i in deviceList">
|
||||
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="61px" height="49px"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1 0 0 1 -1256 -339 )">
|
||||
<path
|
||||
d="M 6.898809552176336 0.6282051036658682 L 33.767857142857146 24.185897411358177 L 6.898809552176339 47.74358971905049 L 1.4523809807477666 43.34615384615385 L 23.60119044867466 24.185897411358177 L 1.4523809807477646 5.025641049444116 L 6.898809552176336 0.6282051036658682 Z M 32.31547616210938 0.6282051036658682 L 59.547619019252245 24.185897411358177 L 32.31547616210938 47.74358971905049 L 27.232142857142858 43.34615384615385 L 49.3809524093192 24.185897410621997 L 27.232142857142858 5.025641050180292 L 32.31547616210938 0.6282051036658682 Z "
|
||||
fill-rule="nonzero" fill="#00c6b5" stroke="none"
|
||||
transform="matrix(1 0 0 1 1256 339 )" />
|
||||
</g>
|
||||
</svg> <span>{{ i.val }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
<div class="footer-left">
|
||||
<button class="btn" :class="[isOn ? 'green' : 'gray']" :disabled="!isOn" @click="openDevice">
|
||||
<img class="image" src="./images/on.svg" alt=""> 开机
|
||||
</button>
|
||||
</div>
|
||||
<div class="footer-right">
|
||||
<button class="btn" :class="[isOff ? 'red' : 'gray']" :disabled="!isOff" @click="closeDevice">
|
||||
<img class="image" src="./images/off.svg" alt=""> 关机
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted, onUnmounted } from "vue";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import { getStatus, setOpen, setClose } from "@/http/Exhibition/station"
|
||||
import { ElNotification, ElMessageBox, ElMessage, ElLoading } from 'element-plus'
|
||||
|
||||
const route = useRoute();
|
||||
const router = useRouter()
|
||||
let device_id = route.query.id
|
||||
|
||||
let deviceList = ref()
|
||||
let image = ref()
|
||||
const isOn = ref(false)
|
||||
const isOff = ref(false)
|
||||
let timer = null
|
||||
let isShow = true
|
||||
|
||||
//获取当前设备状态
|
||||
async function getDeviceStatus(query) {
|
||||
try {
|
||||
const result = await getStatus(query)
|
||||
if (result.code == 200) {
|
||||
let data = result.data
|
||||
deviceList.value = [
|
||||
{ val: data.name },
|
||||
{ val: data.model },
|
||||
{ val: data.label },
|
||||
]
|
||||
image.value = import.meta.env.VITE_APP_BASE_API + data.img
|
||||
isOn.value = data.open
|
||||
isOff.value = data.close
|
||||
if (!isOn.value && !isOff.value) {
|
||||
isShow ? ElMessage({ message: '此机器未连接到物联系统!', type: 'warning' }) : ''
|
||||
isShow = false
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
clearInterval(timer)
|
||||
console.log(e);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//开机
|
||||
async function openDevice() {
|
||||
if (!isOn.value) return
|
||||
clearInterval(timer)
|
||||
let queryData = { id: device_id }
|
||||
let result = await setOpen(queryData)
|
||||
if (result.code == 200) {
|
||||
let data = result.data
|
||||
isOn.value = data.open
|
||||
isOff.value = data.close
|
||||
isShow = true
|
||||
}
|
||||
timer = setInterval(() => {
|
||||
getDeviceStatus({ id: device_id })
|
||||
}, 10000)
|
||||
}
|
||||
|
||||
//关机
|
||||
async function closeDevice() {
|
||||
if (!isOff.value) return
|
||||
clearInterval(timer)
|
||||
let queryData = { id: device_id }
|
||||
let result = await setClose(queryData)
|
||||
if (result.code == 200) {
|
||||
let data = result.data
|
||||
isOn.value = data.open
|
||||
isOff.value = data.close
|
||||
if (result.data.open === false) {
|
||||
ElMessage({ message: data.status, type: 'warning' })
|
||||
}
|
||||
timer = setInterval(() => {
|
||||
getDeviceStatus({ id: device_id })
|
||||
}, 10000)
|
||||
isShow = true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//去登录页
|
||||
function toLogin() {
|
||||
window.location.href = WS_URL.EDOS_LOGIN
|
||||
}
|
||||
|
||||
|
||||
//返回
|
||||
function back() {
|
||||
router.back();
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
|
||||
getDeviceStatus({ id: device_id })
|
||||
timer = setInterval(() => {
|
||||
getDeviceStatus({ id: device_id })
|
||||
}, 10000)
|
||||
})
|
||||
|
||||
onUnmounted(() => {
|
||||
clearInterval(timer)
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
@import url("@/assets/css/styles/iconfont.css");
|
||||
|
||||
@font-face {
|
||||
|
||||
font-family: '华文行楷';
|
||||
|
||||
src: url('@/assets/font/STXINGKA.TTF') format('truetype');
|
||||
}
|
||||
|
||||
|
||||
|
||||
.container {
|
||||
width: 1920px;
|
||||
height: 1080px;
|
||||
background: linear-gradient(90deg, rgba(14, 33, 48, 1) 0%, rgba(14, 33, 48, 1) 0%, rgba(14, 37, 53, 1) 100%, rgba(14, 37, 53, 1) 100%);
|
||||
}
|
||||
|
||||
.container .header {
|
||||
width: 100%;
|
||||
height: 175px;
|
||||
background: rgba(215, 215, 215, 0.11372549019607843);
|
||||
position: relative;
|
||||
color: rgba(217, 233, 229, 0.996078431372549);
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
|
||||
}
|
||||
|
||||
.container .header .left {
|
||||
width: 50%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 72px;
|
||||
font-family: "华文行楷", sans-serif;
|
||||
|
||||
|
||||
}
|
||||
|
||||
.container .header .left .image {
|
||||
width: 135px;
|
||||
height: 135px;
|
||||
}
|
||||
|
||||
.container .header .right {
|
||||
width: 40%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.container .header .right .btn {
|
||||
width: 185px;
|
||||
height: 95px;
|
||||
border: none;
|
||||
border-radius: 10px;
|
||||
color: rgba(217, 233, 229, 0.996);
|
||||
font-size: 28px;
|
||||
background: rgb(0, 75, 94);
|
||||
}
|
||||
|
||||
.container .header .right .btn:active {
|
||||
background: rgb(1, 95, 118);
|
||||
}
|
||||
|
||||
.container .content {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
height: calc(100% - 175px - 240px);
|
||||
padding: 10px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.container .content .content-item {
|
||||
width: 40%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
.container .content .content-item .image {
|
||||
max-height: 100%;
|
||||
max-width: 100%;
|
||||
object-fit: contain;
|
||||
}
|
||||
|
||||
.container .content .content-item .dviece-info {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
color: rgba(217, 233, 229, 0.996);
|
||||
font-size: 30px;
|
||||
|
||||
|
||||
}
|
||||
|
||||
.container .content .content-item .dviece-info div {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
padding-left: 25%;
|
||||
}
|
||||
|
||||
.container .footer {
|
||||
width: 100%;
|
||||
height: 240px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
.container .footer .green {
|
||||
background: #007D50;
|
||||
}
|
||||
|
||||
.container .footer .green:active {
|
||||
background: #009D72;
|
||||
}
|
||||
|
||||
.container .footer .red {
|
||||
background: #6E0A0A;
|
||||
}
|
||||
|
||||
.container .footer .red:active {
|
||||
background: #8E0A0A;
|
||||
}
|
||||
|
||||
.container .footer .gray {
|
||||
background: rgba(120, 120, 120, 0.4);
|
||||
}
|
||||
|
||||
.container .footer .title {
|
||||
width: calc(100% - 1200px);
|
||||
height: 100%;
|
||||
font-size: 72px;
|
||||
color: rgba(217, 233, 229, 0.996);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.container .footer .footer-left,
|
||||
.container .footer .footer-right {
|
||||
width: 800px;
|
||||
height: 100%;
|
||||
background: rgba(215, 215, 215, 0.11372549019607843);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
|
||||
}
|
||||
|
||||
.container .footer .footer-left .btn,
|
||||
.container .footer .footer-right .btn {
|
||||
width: 400px;
|
||||
height: 175px;
|
||||
border: none;
|
||||
border-radius: 30px;
|
||||
font-size: 48px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: rgba(217, 233, 229, 0.996);
|
||||
|
||||
|
||||
}
|
||||
|
||||
.container .footer .footer-left .btn .image,
|
||||
.container .footer .footer-right .btn .image {
|
||||
width: 50px;
|
||||
height: 119px;
|
||||
}</style>
|
@ -10,7 +10,7 @@
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<div class="title">
|
||||
<header2 ref="headerref" :width="'100%'" :height="'100px'" :title="'设备工况物联系统'" :titleTip="[]"
|
||||
<header2 ref="headerref" :width="'100%'" :height="'100px'" :title="title" :titleTip="[]"
|
||||
:typeFun="['time']" :alarmType="[]"></header2>
|
||||
</div>
|
||||
</div>
|
||||
@ -46,8 +46,12 @@
|
||||
import header2 from '@/components/headerBox/header2.vue'
|
||||
import { ref, reactive, onMounted } from 'vue';
|
||||
import { ElTable, ElTableColumn, ElInput, ElButton, ElMessage, ElMessageBox } from 'element-plus';
|
||||
import { getPlanProduction, insertPlanProduction } from '@/http/cisma';
|
||||
import { insertPlanProduction } from '@/http/cisma';
|
||||
import {useRoute} from 'vue-router'
|
||||
import {getPlanProduction} from '@/http/Exhibition/table'
|
||||
const tableData = ref([]);
|
||||
const route = useRoute()
|
||||
const title = ref('设备工况物联系统')
|
||||
onMounted(() => {
|
||||
// 获取数据
|
||||
fetchPlanProduction();
|
||||
@ -55,11 +59,12 @@ onMounted(() => {
|
||||
})
|
||||
async function fetchPlanProduction(): Promise<any> {
|
||||
try {
|
||||
const res = await getPlanProduction() as any;
|
||||
const s = route.params.id
|
||||
const res = await getPlanProduction({s}) as any;
|
||||
if (res.code === 200) {
|
||||
// console.log(res);
|
||||
tableData.value = res.data
|
||||
|
||||
tableData.value = res.data.list
|
||||
title.value = res.data.name + "设备计划产量"
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch plan production:', error);
|
||||
@ -135,13 +140,13 @@ h3 {
|
||||
}
|
||||
|
||||
.table-container {
|
||||
width: 95%;
|
||||
width: 100%;
|
||||
padding: 20px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
justify-content: center;
|
||||
align-items: flex-start;
|
||||
|
||||
}
|
||||
|
@ -81,7 +81,7 @@ const status_color = {
|
||||
text-align: left;
|
||||
font-size: 28px;
|
||||
font-family: "华文新魏", sans-serif;
|
||||
font-weight: 400;
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
color: #00fffffe;
|
||||
}
|
||||
|
@ -80,11 +80,6 @@ let { t } = useI18n();
|
||||
let route = useRoute()
|
||||
const store = useMicroExhibitionStore()
|
||||
let lang = route.query.lang as string
|
||||
|
||||
if (lang &&languageHash(lang)&&languageHash(lang) != getStoredLanguage()) {
|
||||
saveStoredLanguage(languageHash(lang))
|
||||
window.location.reload()
|
||||
}
|
||||
let videoUrl = ref('https://d.tufting222.cn/video/yzy/a.mp4')
|
||||
const videoElement = ref(null)
|
||||
let timer = null
|
||||
|
@ -20,8 +20,9 @@
|
||||
</span>
|
||||
<template #dropdown>
|
||||
<el-dropdown-menu>
|
||||
<el-dropdown-item v-for="item in language" :class="item.name == lang ? 'select' : ''" :command="item.name">{{ item.simple }}</el-dropdown-item>
|
||||
|
||||
<el-dropdown-item v-for="item in language" :class="item.name == lang ? 'select' : ''"
|
||||
:command="item.value">{{ item.simple }}</el-dropdown-item>
|
||||
|
||||
</el-dropdown-menu>
|
||||
</template>
|
||||
</el-dropdown>
|
||||
@ -29,8 +30,8 @@
|
||||
</div>
|
||||
|
||||
<div class="itemlist">
|
||||
<list v-for="res in routerList" :hash="res.hash" :path="res.path" :is-link="res.isLink" :title="res.title" :key="res.id"
|
||||
:url="res.url"></list>
|
||||
<list v-for="res in routerList" :hash="res.hash" :path="res.path" :is-link="res.isLink" :title="res.title"
|
||||
:key="res.id" :url="res.url"></list>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@ -39,12 +40,13 @@
|
||||
import { ref, reactive, onMounted, onUnmounted } from "vue";
|
||||
import list from "@/components/assembly/indexList.vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { getStoredLanguage, saveStoredLanguage } from "@/utils/languageStorage";
|
||||
import { useRoute } from 'vue-router'
|
||||
import { getStoredLanguage, saveStoredLanguage, languageHash } from "@/utils/languageStorage";
|
||||
import { useRoute,useRouter } from 'vue-router'
|
||||
import { getScreenByHash } from "@/http/rule/index"
|
||||
import {imgurlAddXhr} from "@/utils/devSever"
|
||||
import { imgurlAddXhr } from "@/utils/devSever"
|
||||
let langicon = require("@/assets/svg/language.svg")
|
||||
let route = useRoute()
|
||||
let router = useRouter()
|
||||
window.document.title = "大屏物联管理系统";
|
||||
let { t } = useI18n();
|
||||
let language = reactive([
|
||||
@ -64,20 +66,20 @@ let language = reactive([
|
||||
value: "es",
|
||||
}
|
||||
])
|
||||
let routerList = ref()
|
||||
let routerList = ref()
|
||||
let lang = ref(getStoredLanguage() || '简体中文')
|
||||
function changelang(val) {
|
||||
saveStoredLanguage(val)
|
||||
saveStoredLanguage(languageHash(val))
|
||||
location.reload()
|
||||
}
|
||||
|
||||
|
||||
async function reqScreenByHash() {
|
||||
let hash = sessionStorage.getItem('screen_hash')
|
||||
let res:any = await getScreenByHash({hash});
|
||||
let res: any = await getScreenByHash({ hash });
|
||||
if (res.code === 200) {
|
||||
let {data} = res
|
||||
routerList.value = data.map((item:any) => {
|
||||
let { data } = res
|
||||
routerList.value = data.map((item: any) => {
|
||||
const regex = /^(http|https):\/\/[^ "]+$/;
|
||||
let isTrue = regex.test(item.img);
|
||||
return {
|
||||
@ -85,11 +87,11 @@ async function reqScreenByHash() {
|
||||
isLink: false,
|
||||
path: item.path,
|
||||
title: item.title,
|
||||
url: isTrue?item.img:imgurlAddXhr(item.img),
|
||||
url: isTrue ? item.img : imgurlAddXhr(item.img),
|
||||
hash: hash
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|