前端初次提交

This commit is contained in:
阔 徐 2026-03-30 11:03:47 +08:00
parent 15de8b6ede
commit d81942a70a
157 changed files with 28966 additions and 3781 deletions

View File

@ -30,9 +30,11 @@
"element-ui": "^2.15.14",
"enquire.js": "^2.1.6",
"exceljs": "^4.4.0",
"file-saver": "^2.0.5",
"html2canvas": "^1.4.1",
"iview": "^3.5.4",
"js-cookie": "^2.2.0",
"jszip": "^3.10.1",
"leaflet": "^1.9.4",
"lodash.get": "^4.4.2",
"lodash.pick": "^4.4.0",
@ -42,7 +44,7 @@
"pdfjs-dist": "^2.10.377",
"plotly.js": "^2.35.2",
"qiankun": "^2.5.1",
"qrcodejs2": "^0.0.2",
"qrcode": "^1.5.4",
"sass": "^1.25.0",
"sass-loader": "^8.0.2",
"tinymce": "5.4.1",

View File

@ -5,7 +5,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>27号线车辆段设备数字化管理平台</title>
<title>13号线车辆段设备数字化管理平台</title>
<link rel="icon" href="<%= BASE_URL %>动车段图标.jpg">
<!-- <link rel="shortcut icon" href="<%= BASE_URL %>favicon.ico" type="image/x-icon">-->
<script src="<%= BASE_URL %>cdn/babel-polyfill/polyfill_7_2_5.js"></script>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 667 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -17,8 +17,8 @@
:type="collapsed ? 'menu-unfold' : 'menu-fold'"
@click="toggle"/>
<span v-if="device === 'desktop'" style="font-size: 16px;">欢迎进入27号线车辆段设备数字化管理平台</span>
<span v-else>欢迎进入27号线车辆段设备数字化管理平台</span>
<span v-if="device === 'desktop'" style="font-size: 16px;">欢迎进入13号线车辆段设备数字化管理平台</span>
<span v-else>欢迎进入13号线车辆段设备数字化管理平台</span>
<user-menu :theme="theme"/>
</div>

View File

@ -34,10 +34,12 @@
<a-list-item :key="index" v-for="(record, index) in announcement2">
<div style="margin-left: 5%;width: 80%">
<p><a>{{ record.toolId_dictText }}</a></p>
<p style="color: rgba(0,0,0,.45);margin-bottom: 0px">{{ record.lastCheckDate == null ? '从未检测 ·': '上次:'+record.lastCheckDate }} 需检测</p>
<p style="color: rgba(0,0,0,.45);margin-bottom: 0px">{{ formatDate(record.lastCheckDate) }}</p>
</div>
<div style="text-align: right">
<a-tag color="red">待检测</a-tag>
<a-tag :color="record.type === 'overdue' ? 'red' : 'orange'">
{{ record.type === 'overdue' ? '已超期' : '临近检定' }}
</a-tag>
</div>
</a-list-item>
</a-list>

View File

@ -17,6 +17,14 @@ import xss from "xss"
:title="record.spare"
:description="'发布人:'+record.sender + ' 发布时间: ' + record.sendTime">
</a-card-meta>
<a-row type="flex" align="middle">
<a-col>
<a-button type="primary" @click="speakText">播报语音</a-button>
</a-col>
<a-col>
<a-button style="margin-left: 8px" @click="stopSpeech">停止朗读</a-button>
</a-col>
</a-row>
<a-divider />
<span v-html="record.msgContent" class="article-content"></span>
</a-card>
@ -33,7 +41,10 @@ import xss from "xss"
data () {
return {
title:"通知消息",
textToSpeak: '',
record: {},
timer333: null,
hasUnsavedChanges: false,
labelCol: {
xs: { span: 24 },
sm: { span: 5 },
@ -59,48 +70,101 @@ import xss from "xss"
}
},
created () {
console.log("组件创建");
// this.startAutoSpeech();todo
},
mounted() {
console.log("组件挂载完成");
},
watch: {
visible(newVal) {
if (newVal) {
// this.startAutoSpeech(); todo
}
}
},
methods: {
speakText() {
console.log("开始语音播报");
if ('speechSynthesis' in window) {
const utterance = new SpeechSynthesisUtterance(this.textToSpeak);
utterance.lang = 'zh-CN';
utterance.rate = 1;
utterance.pitch = 1;
utterance.volume = 1;
// window.speechSynthesis.speak(utterance);
const result = window.speechSynthesis.speak(utterance);
} else {
alert('您的浏览器不支持语音合成');
}
},
stopSpeech() {
window.speechSynthesis.cancel();
},
startAutoSpeech(intervalTime = 1800) {
console.log("启动自动语音播报");
if (this.timer333) clearInterval(this.timer333);
this.timer333 = setInterval(() => {
this.speakText();
}, intervalTime);
},
detail(record) {
//update-begin---author:wangshuai ---date:20220107 for
console.log("查看详情",record)
if (record.sender) {
getUserList({ "username": record.sender }).then((res) => {
if (res.success && res.result.records.length > 0) {
record.sender = res.result.records[0].realname
record.sender = res.result.records[0].realname;
}
})
});
}
//update-end---author:wangshuai ---date:20220107 for
this.visible = true;
//update-begin-author:taoyan date:2022-7-14 for: VUEN-1702 sql
if (record.msgContent) {
record.msgContent = xss(record.msgContent)
record.msgContent = xss(record.msgContent);
this.textToSpeak = record.msgContent;
}
//update-end-author:taoyan date:2022-7-14 for: VUEN-1702 sql
this.record = record;
},
handleCancel() {
this.stopSpeech();
if (this.timer333) {
console.log('清除定时器');
clearInterval(this.timer333);
this.timer333 = null;
}
this.visible = false;
},
/** 切换全屏显示 */
handleClickToggleFullScreen() {
let mode = !this.modelStyle.fullScreen
let mode = !this.modelStyle.fullScreen;
if (mode) {
this.modelStyle.width = '100%'
this.modelStyle.style.top = '20px'
this.modelStyle.width = '100%';
this.modelStyle.style.top = '20px';
} else {
this.modelStyle.width = '60%'
this.modelStyle.style.top = '50px'
this.modelStyle.width = '60%';
this.modelStyle.style.top = '50px';
}
this.modelStyle.fullScreen = mode
this.modelStyle.fullScreen = mode;
},
toHandle() {
if (this.record.openType === 'url') {
this.visible = false;
//
this.$router.push({path: this.record.openPage})
this.$router.push({ path: this.record.openPage });
}
}
},
beforeDestroy() {
if (this.timer333) {
clearInterval(this.timer333);
this.timer333 = null;
}
}
}
</script>

View File

@ -149,6 +149,17 @@ export const constantRouterMap = [
]
},
{
path: '/homescreen',
name: 'homescreen',
component: () => import('@views/dashboard/homescreen.vue'),
meta: {
requiresAuth: false, // 明确不需要登录[1,6](@ref)
hidden: true, // 隐藏菜单
hideLayout: true, // 隐藏所有布局元素
}
},
{
path: '/test',
component: BlankLayout,

View File

@ -9,7 +9,7 @@ import { generateIndexRouter, isOAuth2AppEnv } from '@/utils/util'
NProgress.configure({ showSpinner: false }) // NProgress Configuration
const whiteList = ['/user/login', '/user/register', '/user/register-result','/user/alteration'] // no redirect whitelist
const whiteList = ['/user/login', '/user/register', '/user/register-result','/user/alteration', '/homescreen'] // no redirect whitelist
whiteList.push(OAUTH2_LOGIN_PAGE_PATH)
router.beforeEach((to, from, next) => {

View File

@ -0,0 +1,25 @@
// src/store/index.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
isPlaying: false, // 控制语音播放的全局状态
},
mutations: {
setIsPlaying(state, value) {
state.isPlaying = value;
}
},
actions: {
updateIsPlaying({ commit }, value) {
commit('setIsPlaying', value);
}
},
getters: {
isPlaying: state => state.isPlaying
},
modules: {}
});

View File

@ -0,0 +1,136 @@
import QRCode from "qrcode"
import JSZip from "jszip"
import { saveAs } from "file-saver"
/**
* 自动换行
*/
function wrapText(ctx, text, maxWidth) {
const chars = text.split("")
const lines = []
let current = ""
chars.forEach(c => {
const testLine = current + c
const width = ctx.measureText(testLine).width
if (width <= maxWidth) {
current = testLine
} else {
lines.push(current)
current = c
}
})
if (current) lines.push(current)
return lines
}
/**
* 生成二维码canvas
*/
export async function generateQRCodeCanvas(id, text) {
const TEXT_SIZE = 15
const TEXT_TOP_MARGIN = -4
const TEXT_BOTTOM_PADDING = 2
const SCALE = 4
const qrCanvas = document.createElement("canvas")
await QRCode.toCanvas(qrCanvas, id, {
errorCorrectionLevel: "L",
margin: 1,
scale: SCALE
})
const qrWidth = qrCanvas.width
const canvas = document.createElement("canvas")
const ctx = canvas.getContext("2d")
ctx.font = TEXT_SIZE + "px Arial"
const lines = wrapText(ctx, text, qrWidth+30)
const lineHeight = TEXT_SIZE + 1
const textHeight = lines.length * lineHeight
const totalHeight =
qrWidth +
TEXT_TOP_MARGIN +
textHeight +
TEXT_BOTTOM_PADDING
canvas.width = qrWidth
canvas.height = totalHeight
ctx.fillStyle = "#fff"
ctx.fillRect(0, 0, canvas.width, canvas.height)
ctx.drawImage(qrCanvas, 0, 0)
ctx.fillStyle = "#000"
ctx.textAlign = "center"
let y = qrWidth + TEXT_TOP_MARGIN + lineHeight
lines.forEach(line => {
ctx.fillText(line, qrWidth / 2, y)
y += lineHeight
})
return canvas
}
/**
* 单个下载
*/
export async function downloadSingleQRCode(id, text) {
const canvas = await generateQRCodeCanvas(id, text)
const link = document.createElement("a")
link.href = canvas.toDataURL("image/png")
link.download = text + ".png"
link.click()
}
/**
* 批量ZIP下载
*/
export async function downloadBatchQRCodeZip(list, zipName = "qrcode") {
const zip = new JSZip()
for (let item of list) {
const canvas = await generateQRCodeCanvas(item.id, item.code)
const base64 = canvas.toDataURL("image/png").split(",")[1]
zip.file(`${item.code}.png`, base64, { base64: true })
}
const content = await zip.generateAsync({
type: "blob",
compression: "DEFLATE",
compressionOptions: { level: 6 }
})
saveAs(content, `${zipName}.zip`)
}

View File

@ -0,0 +1,609 @@
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper" style="background: #f0f2f5; padding: 16px; margin-bottom: 16px; border-radius: 4px;">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="24">
<a-form-item label="查询类型">
<a-select v-model="queryType" placeholder="请选择查询类型" @change="handleQueryTypeChange">
<a-select-option value="online">在线数据</a-select-option>
<a-select-option value="history">历史数据</a-select-option>
</a-select>
</a-form-item>
</a-col>
<template v-if="queryType === 'history'">
<a-col :md="6" :sm="24">
<a-form-item label="开始时间">
<a-date-picker v-model="startTime" placeholder="请选择开始时间" show-time valueFormat="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="24">
<a-form-item label="结束时间">
<a-date-picker v-model="endTime" placeholder="请选择结束时间" show-time valueFormat="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
</a-form-item>
</a-col>
</template>
<a-col :md="6" :sm="24">
<div style="margin-top: 4px;">
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
<a-button v-if="queryType === 'history'" type="primary" @click="switchToOnline" style="margin-left: 8px">返回在线数据</a-button>
<a-button v-else type="primary" @click="switchToHistory" style="margin-left: 8px">查询历史数据</a-button>
</div>
</a-col>
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('bu_zy_exp_data_online')">导出</a-button>
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
<a-button type="primary" icon="import">导入</a-button>
</a-upload>
<!-- 高级查询区域 -->
<j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;" v-if="selectedRowKeys.length > 0">
<i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>
<a style="margin-left: 24px" @click="onClearSelected">清空</a>
</div>
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange">
<template slot="htmlSlot" slot-scope="text">
<div v-html="text"></div>
</template>
<template slot="imgSlot" slot-scope="text,record">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
<img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
</template>
<template slot="fileSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<a-button
v-else
:ghost="true"
type="primary"
icon="download"
size="small"
@click="downloadFile(text)">
下载
</a-button>
</template>
<span slot="action" slot-scope="text, record">
<a @click="handleEdit(record)">编辑</a>
<a-divider type="vertical" />
<a-dropdown>
<a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
<a-menu slot="overlay">
<a-menu-item>
<a @click="handleDetail(record)">详情</a>
</a-menu-item>
<a-menu-item>
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
<a>删除</a>
</a-popconfirm>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
</a-table>
</div>
<bu-zy-exp-data-online-modal ref="modalForm" @ok="modalFormOk" :queryType="queryType" :queryMonth="queryMonth"></bu-zy-exp-data-online-modal>
</a-card>
</template>
<script>
import '@/assets/less/TableExpand.less'
import { mixinDevice } from '@/utils/mixin'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import BuZyExpDataOnlineModal from './modules/BuZyExpDataOnlineModal'
export default {
name: 'BuZyExpDataOnlineList',
mixins:[JeecgListMixin, mixinDevice],
components: {
BuZyExpDataOnlineModal
},
data () {
return {
description: 'bu_zy_exp_data_online管理页面',
// : online/history
queryType: 'online',
//
queryMonth: undefined,
//
startTime: undefined,
//
endTime: undefined,
//
columns: [
{
title: '#',
dataIndex: '',
key:'rowIndex',
width:60,
align:"center",
customRender:function (t,r,index) {
return parseInt(index)+1;
}
},
{
title:'上传服务器名',
align:"center",
dataIndex: 'serverName'
},
{
title:'传感器',
align:"center",
dataIndex: 'sensorId_dictText'
},
{
title:'状态 (0正常 1预警 2报警)',
align:"center",
dataIndex: 'status'
},
{
title:'报警字段名 逗号分隔',
align:"center",
dataIndex: 'statusname'
},
{
title:'采集时间',
align:"center",
dataIndex: 'createTime',
customRender: function (text) {
if (!text) {
return '';
}
//
return text.length > 10 ? text : text + ' 00:00:00';
}
},
{
title:'协议版本',
align:"center",
dataIndex: 'data01'
},
{
title:'备注符号',
align:"center",
dataIndex: 'data02'
},
{
title:'ANSII/binär',
align:"center",
dataIndex: 'data03'
},
{
title:'数据隔离符号',
align:"center",
dataIndex: 'data05'
},
{
title:'部件数据隔离符号',
align:"center",
dataIndex: 'data06'
},
{
title:'机床类型',
align:"center",
dataIndex: 'data12'
},
{
title:'机床号码',
align:"center",
dataIndex: 'data13'
},
{
title:'当前日期',
align:"center",
dataIndex: 'data19'
},
{
title:'当前时间',
align:"center",
dataIndex: 'data110'
},
{
title:'用户名称',
align:"center",
dataIndex: 'data21'
},
{
title:'操作者姓名',
align:"center",
dataIndex: 'data24'
},
{
title:'当前轮对识别号',
align:"center",
dataIndex: 'data311'
},
{
title:'车辆编码',
align:"center",
dataIndex: 'data313'
},
{
title:'加工原因',
align:"center",
dataIndex: 'data314n'
},
{
title:'车辆方向',
align:"center",
dataIndex: 'data34'
},
{
title:'当前车辆车轴配置',
align:"center",
dataIndex: 'data35'
},
{
title:'车辆号码',
align:"center",
dataIndex: 'data38'
},
{
title:'当前轮对号/车轴号码',
align:"center",
dataIndex: 'data39'
},
{
title:'轮廓号码',
align:"center",
dataIndex: 'data43sn'
},
{
title:'轮廓变量',
align:"center",
dataIndex: 'data44sn'
},
{
title:'公里数',
align:"center",
dataIndex: 'data55'
},
{
title:'内侧距',
align:"center",
dataIndex: 'data58n'
},
{
title:'预测量左侧径向跳动',
align:"center",
dataIndex: 'data611sn'
},
{
title:'预测量右侧径向跳动',
align:"center",
dataIndex: 'data612sn'
},
{
title:'data661',
align:"center",
dataIndex: 'data661'
},
{
title:'data662',
align:"center",
dataIndex: 'data662'
},
{
title:'data68',
align:"center",
dataIndex: 'data68'
},
{
title:'后测量左侧径向跳动',
align:"center",
dataIndex: 'data6111sn'
},
{
title:'后测量右侧径向跳动',
align:"center",
dataIndex: 'data6112sn'
},
{
title:'后测量左侧轴向跳动',
align:"center",
dataIndex: 'data6121sn'
},
{
title:'后测量右侧轴向跳动',
align:"center",
dataIndex: 'data6122sn'
},
{
title:'后测量左侧直径',
align:"center",
dataIndex: 'data6131sn'
},
{
title:'后测量右侧直径',
align:"center",
dataIndex: 'data6132sn'
},
{
title:'预测量左侧轴向跳动',
align:"center",
dataIndex: 'data621sn'
},
{
title:'预测量右侧轴向跳动',
align:"center",
dataIndex: 'data622sn'
},
{
title:'data731',
align:"center",
dataIndex: 'data731'
},
{
title:'data732',
align:"center",
dataIndex: 'data732'
},
{
title:'data741',
align:"center",
dataIndex: 'data741'
},
{
title:'data742',
align:"center",
dataIndex: 'data742'
},
{
title:'后测量左侧轮缘厚度',
align:"center",
dataIndex: 'data7121sn'
},
{
title:'后测量右侧轮缘厚度',
align:"center",
dataIndex: 'data7122sn'
},
{
title:'后测量左侧轮缘高度',
align:"center",
dataIndex: 'data7131sn'
},
{
title:'后测量右侧轮缘高度',
align:"center",
dataIndex: 'data7132sn'
},
{
title:'左侧名义轮缘厚度',
align:"center",
dataIndex: 'data7211sn'
},
{
title:'右侧名义轮缘厚度',
align:"center",
dataIndex: 'data7212sn'
},
{
title:'左侧轮廓测量点坐标',
align:"center",
dataIndex: 'data7221sn'
},
{
title:'右侧轮廓测量点坐标',
align:"center",
dataIndex: 'data7222sn'
},
{
title: '操作',
dataIndex: 'action',
align:"center",
fixed:"right",
width:147,
scopedSlots: { customRender: 'action' }
}
],
url: {
list: "/ZyExpDataOnline/buZyExpDataOnline/list",
historyList: "/ZyExpDataOnline/buZyExpDataOnline/historyListByTimeRange",
delete: "/ZyExpDataOnline/buZyExpDataOnline/delete",
deleteBatch: "/ZyExpDataOnline/buZyExpDataOnline/deleteBatch",
exportXlsUrl: "/ZyExpDataOnline/buZyExpDataOnline/exportXls",
importExcelUrl: "ZyExpDataOnline/buZyExpDataOnline/importExcel",
},
dictOptions:{},
superFieldList:[],
}
},
created() {
this.getSuperFieldList();
},
computed: {
importExcelUrl: function(){
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
},
},
methods: {
initDictConfig(){
},
getSuperFieldList(){
let fieldList=[];
fieldList.push({type:'string',value:'serverName',text:'上传服务器名'})
fieldList.push({type:'string',value:'sensorId',text:'传感器ID'})
fieldList.push({type:'int',value:'status',text:'状态 (0正常 1预警 2报警)'})
fieldList.push({type:'string',value:'statusname',text:'报警字段名 逗号分隔'})
fieldList.push({type:'string',value:'createTime',text:'采集时间'})
fieldList.push({type:'string',value:'data01',text:'协议版本 protocol revision 协议版本'})
fieldList.push({type:'string',value:'data02',text:'备注符号 sign of comments 备注符号'})
fieldList.push({type:'string',value:'data03',text:'ANSII / binär'})
fieldList.push({type:'string',value:'data05',text:'数据隔离符号 data set seperator 数据隔离符号'})
fieldList.push({type:'string',value:'data06',text:'部件数据隔离符号 part data seperator 部件数据隔离符号'})
fieldList.push({type:'string',value:'data12',text:'机床类型 machine typ 机床类型'})
fieldList.push({type:'string',value:'data13',text:'机床号码 machine number 机床号码'})
fieldList.push({type:'string',value:'data19',text:'当前日期 current date 当前日期'})
fieldList.push({type:'string',value:'data110',text:'当前时间 current time 当前时间'})
fieldList.push({type:'string',value:'data21',text:'用户名称 customer name 用户名称'})
fieldList.push({type:'string',value:'data24',text:'操作者姓名 operator name 操作者姓名'})
fieldList.push({type:'string',value:'data311',text:'当前轮对识别号 current wheel set identification 当前轮对识别号'})
fieldList.push({type:'string',value:'data313',text:'车辆编码 vehicle number 车辆编码'})
fieldList.push({type:'string',value:'data314n',text:'加工原因 reason of maching 加工原因'})
fieldList.push({type:'string',value:'data34',text:'车辆方向 direction of vehicle (0-1)车辆方向'})
fieldList.push({type:'string',value:'data35',text:'当前车辆车轴配置 current vehicle axis configuration 当前车辆车轴配置'})
fieldList.push({type:'string',value:'data38',text:'车辆号码 vehicle number 车辆号码'})
fieldList.push({type:'string',value:'data39',text:'当前轮对号 current wheel set number // axis number 当前轮对号//车轴号码'})
fieldList.push({type:'string',value:'data43sn',text:'轮廓号码 profile number 轮廓号码'})
fieldList.push({type:'string',value:'data44sn',text:'轮廓变量 profile variances 轮廓变量'})
fieldList.push({type:'string',value:'data55',text:'公里数 Milages 公里数'})
fieldList.push({type:'string',value:'data58n',text:'内侧距 back to back dimension 内侧距'})
fieldList.push({type:'string',value:'data611sn',text:'预测量左侧径向跳动 radial run out left pre measuring 预测量左侧径向跳动'})
fieldList.push({type:'string',value:'data612sn',text:'预测量右侧径向跳动 radial run out right pre measuring 预测量右侧径向跳动'})
fieldList.push({type:'string',value:'data661',text:'data661'})
fieldList.push({type:'string',value:'data662',text:'data662'})
fieldList.push({type:'string',value:'data68',text:'data68'})
fieldList.push({type:'string',value:'data6111SN',text:'后测量左侧径向跳动 radial run out left post measuring 后测量左侧径向跳动'})
fieldList.push({type:'string',value:'data6112SN',text:'后测量右侧径向跳动 radial run out right post measuring 后测量右侧径向跳动'})
fieldList.push({type:'string',value:'data6121SN',text:'后测量左侧轴向跳动 axial run out left post measuring 后测量左侧轴向跳动'})
fieldList.push({type:'string',value:'data6122SN',text:'后测量右侧轴向跳动 axial run out right post measuring 后测量右侧轴向跳动'})
fieldList.push({type:'string',value:'data6131SN',text:'后测量左侧直径 diameter post measuring left 后测量左侧直径'})
fieldList.push({type:'string',value:'data6132SN',text:'后测量右侧直径 diameter post measuring right 后测量右侧直径'})
fieldList.push({type:'string',value:'data621SN',text:'预测量左侧轴向跳动 axial run out left pre measuring 预测量左侧轴向跳动'})
fieldList.push({type:'string',value:'data622SN',text:'预测量右侧轴向跳动 axial run out right pre measuring 预测量右侧轴向跳动'})
fieldList.push({type:'string',value:'data731',text:'data731'})
fieldList.push({type:'string',value:'data732',text:'data732'})
fieldList.push({type:'string',value:'data741',text:'data741'})
fieldList.push({type:'string',value:'data742',text:'data742'})
fieldList.push({type:'string',value:'data7121SN',text:'后测量左侧轮缘厚度 flange thickness left post measuring 后测量左侧轮缘厚度'})
fieldList.push({type:'string',value:'data7122SN',text:'后测量右侧轮缘厚度 flange thickness right post measuring 后测量右侧轮缘厚度'})
fieldList.push({type:'string',value:'data7131SN',text:'后测量左侧轮缘高度 flange hight left post measuring 后测量左侧轮缘高度'})
fieldList.push({type:'string',value:'data7132SN',text:'后测量右侧轮缘高度 flange hight right post measuring 后测量右侧轮缘高度'})
fieldList.push({type:'string',value:'data7211SN',text:'左侧名义轮缘厚度 flang thickness nominal left 左侧名义轮缘厚度'})
fieldList.push({type:'string',value:'data7212SN',text:'右侧名义轮缘厚度 flange thickness nominal right 右侧名义轮缘厚度'})
fieldList.push({type:'string',value:'data7221SN',text:'左侧轮廓测量点坐标 X datas profile measuring points left 左侧轮廓测量点坐标'})
fieldList.push({type:'string',value:'data7222SN',text:'右侧轮廓测量点坐标 X datas profile measuring points right 右侧轮廓测量点坐标'})
this.superFieldList = fieldList
},
//
handleQueryTypeChange(value) {
if (value === 'online') {
// 线
this.loadData(1)
}
},
//
switchToHistory() {
this.queryType = 'history'
},
// 线
switchToOnline() {
this.queryType = 'online'
this.queryMonth = undefined
this.startTime = undefined
this.endTime = undefined
this.loadData(1)
},
//
loadData(arg) {
if (!this.url.list) {
this.$message.error('请设置url.list属性!')
return
}
// 1
if (arg === 1) {
this.ipagination.current = 1
}
let params = this.getQueryParams()//
if (this.queryType === 'history') {
//
if (!this.startTime || !this.endTime) {
this.$message.warning('请选择完整的起止时间')
return
}
if (this.startTime >= this.endTime) {
this.$message.warning('开始时间必须小于结束时间')
return
}
params.startTime = this.startTime
params.endTime = this.endTime
this.loading = true
this.$http({
url: this.url.historyList,
method: 'get',
params: params
}).then((res) => {
if (res.success) {
this.dataSource = res.result.records
this.ipagination.total = res.result.total
} else {
//
this.$message.error(res.message)
//
this.dataSource = []
this.ipagination.total = 0
}
this.loading = false
})
} else {
// 线
this.loading = true
this.$http({
url: this.url.list,
method: 'get',
params: params
}).then((res) => {
if (res.success) {
this.dataSource = res.result.records
this.ipagination.total = res.result.total
} else {
//
this.$message.error(res.message)
//
this.dataSource = []
this.ipagination.total = 0
}
this.loading = false
})
}
},
handleEdit(record) {
//
this.$refs.modalForm.edit(record, this.queryType, this.queryMonth);
},
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>

View File

@ -0,0 +1,378 @@
<template>
<a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="24">
<a-form-model-item label="上传服务器名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="serverName">
<a-input v-model="model.serverName" placeholder="请输入上传服务器名" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="传感器ID" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sensorId">
<a-input v-model="model.sensorId" placeholder="请输入传感器ID" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="状态 (0正常 1预警 2报警)" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="status">
<a-input-number v-model="model.status" placeholder="请输入状态 (0正常 1预警 2报警)" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="报警字段名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="statusname">
<a-input v-model="model.statusname" placeholder="请输入报警字段名 逗号分隔" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="协议版本" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data01">
<a-input v-model="model.data01" placeholder="请输入协议版本" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="备注符号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data02">
<a-input v-model="model.data02" placeholder="请输入备注符号" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="ANSII/binär" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data03">
<a-input v-model="model.data03" placeholder="请输入ANSII/binär" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="数据隔离符号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data05">
<a-input v-model="model.data05" placeholder="请输入数据隔离符号" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="部件数据隔离符号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data06">
<a-input v-model="model.data06" placeholder="请输入部件数据隔离符号" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="机床类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data12">
<a-input v-model="model.data12" placeholder="请输入机床类型" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="机床号码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data13">
<a-input v-model="model.data13" placeholder="请输入机床号码" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="当前日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data19">
<a-input v-model="model.data19" placeholder="请输入当前日期" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="当前时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data110">
<a-input v-model="model.data110" placeholder="请输入当前时间" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="用户名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data21">
<a-input v-model="model.data21" placeholder="请输入用户名称" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="操作者姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data24">
<a-input v-model="model.data24" placeholder="请输入操作者姓名" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="当前轮对识别号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data311">
<a-input v-model="model.data311" placeholder="请输入当前轮对识别号" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="车辆编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data313">
<a-input v-model="model.data313" placeholder="请输入车辆编码" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="加工原因" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data314n">
<a-input v-model="model.data314n" placeholder="请输入加工原因" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="车辆方向" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data34">
<a-input v-model="model.data34" placeholder="请输入车辆方向" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="当前车辆车轴配置" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data35">
<a-input v-model="model.data35" placeholder="请输入当前车辆车轴配置" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="车辆号码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data38">
<a-input v-model="model.data38" placeholder="请输入车辆号码" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="当前轮对号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data39">
<a-input v-model="model.data39" placeholder="请输入当前轮对号" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="轮廓号码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data43sn">
<a-input v-model="model.data43sn" placeholder="请输入轮廓号码" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="轮廓变量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data44sn">
<a-input v-model="model.data44sn" placeholder="请输入轮廓变量" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="公里数" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data55">
<a-input v-model="model.data55" placeholder="请输入公里数" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="内侧距" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data58n">
<a-input v-model="model.data58n" placeholder="请输入内侧距" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="预测量左侧径向跳动" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data611sn">
<a-input v-model="model.data611sn" placeholder="请输入预测量左侧径向跳动" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="预测量右侧径向跳动" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data612sn">
<a-input v-model="model.data612sn" placeholder="请输入预测量右侧径向跳动" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="data661" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data661">
<a-input v-model="model.data661" placeholder="请输入data661" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="data662" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data662">
<a-input v-model="model.data662" placeholder="请输入data662" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="data68" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data68">
<a-input v-model="model.data68" placeholder="请输入data68" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="后测量左侧径向跳动" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data6111sn">
<a-input v-model="model.data6111sn" placeholder="请输入后测量左侧径向跳动" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="后测量右侧径向跳动" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data6112sn">
<a-input v-model="model.data6112sn" placeholder="请输入后测量右侧径向跳动" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="后测量左侧轴向跳动" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data6121sn">
<a-input v-model="model.data6121sn" placeholder="请输入后测量左侧轴向跳动" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="后测量右侧轴向跳动" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data6122sn">
<a-input v-model="model.data6122sn" placeholder="请输入后测量右侧轴向跳动" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="后测量左侧直径" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data6131sn">
<a-input v-model="model.data6131sn" placeholder="请输入后测量左侧直径" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="后测量右侧直径" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data6132sn">
<a-input v-model="model.data6132sn" placeholder="请输入后测量右侧直径" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="预测量左侧轴向跳动" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data621sn">
<a-input v-model="model.data621sn" placeholder="请输入预测量左侧轴向跳动" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="预测量右侧轴向跳动" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data622sn">
<a-input v-model="model.data622sn" placeholder="请输入预测量右侧轴向跳动" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="data731" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data731">
<a-input v-model="model.data731" placeholder="请输入data731" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="data732" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data732">
<a-input v-model="model.data732" placeholder="请输入data732" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="data741" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data741">
<a-input v-model="model.data741" placeholder="请输入data741" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="data742" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data742">
<a-input v-model="model.data742" placeholder="请输入data742" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="后测量左侧轮缘厚度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data7121sn">
<a-input v-model="model.data7121sn" placeholder="请输入后测量左侧轮缘厚度" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="后测量右侧轮缘厚度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data7122sn">
<a-input v-model="model.data7122sn" placeholder="请输入后测量右侧轮缘厚度" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="后测量左侧轮缘高度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data7131sn">
<a-input v-model="model.data7131sn" placeholder="请输入后测量左侧轮缘高度" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="后测量右侧轮缘高度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data7132sn">
<a-input v-model="model.data7132sn" placeholder="请输入后测量右侧轮缘高度" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="左侧名义轮缘厚度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data7211sn">
<a-input v-model="model.data7211sn" placeholder="请输入左侧名义轮缘厚度" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="右侧名义轮缘厚度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data7212sn">
<a-input v-model="model.data7212sn" placeholder="请输入右侧名义轮缘厚度" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="左侧轮廓测量点坐标" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data7221sn">
<a-input v-model="model.data7221sn" placeholder="请输入左侧轮廓测量点坐标" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="右侧轮廓测量点坐标" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="data7222sn">
<a-input v-model="model.data7222sn" placeholder="请输入右侧轮廓测量点坐标" ></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</template>
<script>
import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
export default {
name: 'BuZyExpDataOnlineForm',
components: {
},
props: {
//
disabled: {
type: Boolean,
default: false,
required: false
},
queryType: {
type: String,
default: 'online'
},
queryMonth: {
type: String,
default: undefined
}
},
data () {
return {
model:{
},
labelCol: {
xs: { span: 24 },
sm: { span: 5 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
validatorRules: {
},
url: {
add: "/ZyExpDataOnline/buZyExpDataOnline/add",
edit: "/ZyExpDataOnline/buZyExpDataOnline/edit",
queryById: "/ZyExpDataOnline/buZyExpDataOnline/queryById"
}
}
},
computed: {
formDisabled(){
return this.disabled
},
},
created () {
//model
this.modelDefault = JSON.parse(JSON.stringify(this.model));
},
methods: {
add () {
this.edit(this.modelDefault);
},
edit (record, queryType, queryMonth) {
this.model = Object.assign({}, record);
this.visible = true;
// Store the query type and month for use during submission
this.currentQueryType = queryType;
this.currentQueryMonth = queryMonth;
},
submitForm () {
const that = this;
//
this.$refs.form.validate(valid => {
if (valid) {
that.confirmLoading = true;
let httpurl = '';
let method = '';
if(!this.model.id){
httpurl+=this.url.add;
method = 'post';
}else{
httpurl+=this.url.edit;
method = 'put';
// If editing historical data, add query parameters
if (this.currentQueryType === 'history' && this.currentQueryMonth) {
httpurl += '?dataType=history&month=' + this.currentQueryMonth;
}
}
console.log('准备提交编辑请求:', {url: httpurl, data: this.model, method: method});
httpAction(httpurl,this.model,method).then((res)=>{
console.log('收到编辑响应:', res);
if(res.success){
that.$message.success(res.message);
that.$emit('ok');
}else{
that.$message.warning(res.message);
console.error('编辑失败:', res);
}
}).catch((error) => {
console.error('编辑请求异常:', error);
that.$message.error('编辑请求异常: ' + (error.message || '网络错误'));
}).finally(() => {
that.confirmLoading = false;
})
}
})
},
}
}
</script>

View File

@ -0,0 +1,84 @@
<template>
<a-drawer
:title="title"
:width="width"
placement="right"
:closable="false"
@close="close"
destroyOnClose
:visible="visible">
<bu-zy-exp-data-online-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></bu-zy-exp-data-online-form>
<div class="drawer-footer">
<a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
<a-button v-if="!disableSubmit" @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
</div>
</a-drawer>
</template>
<script>
import BuZyExpDataOnlineForm from './BuZyExpDataOnlineForm'
export default {
name: 'BuZyExpDataOnlineModal',
components: {
BuZyExpDataOnlineForm
},
data () {
return {
title:"操作",
width:800,
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
});
},
close () {
this.$emit('close');
this.visible = false;
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
handleCancel () {
this.close()
}
}
}
</script>
<style lang="less" scoped>
/** Button按钮间距 */
.ant-btn {
margin-left: 30px;
margin-bottom: 30px;
float: right;
}
.drawer-footer{
position: absolute;
bottom: -8px;
width: 100%;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
}
</style>

View File

@ -0,0 +1,70 @@
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<bu-zy-exp-data-online-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" :query-type="queryType" :query-month="queryMonth"></bu-zy-exp-data-online-form>
</j-modal>
</template>
<script>
import BuZyExpDataOnlineForm from './BuZyExpDataOnlineForm'
export default {
name: 'BuZyExpDataOnlineModal',
components: {
BuZyExpDataOnlineForm
},
props: {
queryType: {
type: String,
default: 'online'
},
queryMonth: {
type: String,
default: undefined
}
},
data () {
return {
title:'',
width:800,
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record, queryType, queryMonth) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record, queryType, queryMonth);
})
},
close () {
this.$emit('close');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleCancel () {
this.close()
}
}
}
</script>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,766 @@
<template>
<a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="24">
<a-form-model-item label="上传服务器名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="serverName">
<a-input v-model="model.serverName" placeholder="请输入上传服务器名" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="传感器ID" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sensorId">
<a-input v-model="model.sensorId" placeholder="请输入传感器ID" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="status">
<a-input-number v-model="model.status" placeholder="请输入状态" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="报警字段名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="statusname">
<a-textarea v-model="model.statusname" rows="4" placeholder="请输入报警字段名" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="机车速度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vw4500">
<a-input-number v-model="model.vw4500" placeholder="请输入机车速度" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="传动箱子转速" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vw4502">
<a-input-number v-model="model.vw4502" placeholder="请输入传动箱子转速" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="蓄电池电流" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vw4504">
<a-input-number v-model="model.vw4504" placeholder="请输入蓄电池电流" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="蓄电池电压" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vw4506">
<a-input-number v-model="model.vw4506" placeholder="请输入蓄电池电压" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="柴油机转速" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vw4508">
<a-input-number v-model="model.vw4508" placeholder="请输入柴油机转速" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="蓄电池电压" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vw4510">
<a-input-number v-model="model.vw4510" placeholder="请输入蓄电池电压" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="传动箱油温" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vw4512">
<a-input-number v-model="model.vw4512" placeholder="请输入传动箱油温" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="传动箱压力" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vw4514">
<a-input-number v-model="model.vw4514" placeholder="请输入传动箱压力" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="冷却水温度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vw4516">
<a-input-number v-model="model.vw4516" placeholder="请输入冷却水温度" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="滑油压力" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vw4518">
<a-input-number v-model="model.vw4518" placeholder="请输入滑油压力" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="滑油温度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vw4520">
<a-input-number v-model="model.vw4520" placeholder="请输入滑油温度" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="负载反馈" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vw4522">
<a-input-number v-model="model.vw4522" placeholder="请输入负载反馈" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="柴油机工作计时H" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vw4526">
<a-input-number v-model="model.vw4526" placeholder="请输入柴油机工作计时H" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="燃料温度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vw4530">
<a-input-number v-model="model.vw4530" placeholder="请输入燃料温度" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="燃油压力" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vw4532">
<a-input-number v-model="model.vw4532" placeholder="请输入燃油压力" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="前进输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45345">
<a-input-number v-model="model.v45345" placeholder="请输入前进输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="后退输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45346">
<a-input-number v-model="model.v45346" placeholder="请输入后退输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="加载0位输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45347">
<a-input-number v-model="model.v45347" placeholder="请输入加载0位输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="加载1位输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45350">
<a-input-number v-model="model.v45350" placeholder="请输入加载1位输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="升输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45351">
<a-input-number v-model="model.v45351" placeholder="请输入升输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="保输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45352">
<a-input-number v-model="model.v45352" placeholder="请输入保输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="降输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45353">
<a-input-number v-model="model.v45353" placeholder="请输入降输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="自动换档输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45354">
<a-input-number v-model="model.v45354" placeholder="请输入自动换档输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="手动1档输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45355">
<a-input-number v-model="model.v45355" placeholder="请输入手动1档输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="手动2档输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45356">
<a-input-number v-model="model.v45356" placeholder="请输入手动2档输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="手动3档输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45357">
<a-input-number v-model="model.v45357" placeholder="请输入手动3档输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="手动4档输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45360">
<a-input-number v-model="model.v45360" placeholder="请输入手动4档输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="柴油机起动按钮输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45361">
<a-input-number v-model="model.v45361" placeholder="请输入柴油机起动按钮输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="紧急制动按钮输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45362">
<a-input-number v-model="model.v45362" placeholder="请输入紧急制动按钮输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="停放制动继电器反馈" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45363">
<a-input-number v-model="model.v45363" placeholder="请输入停放制动继电器反馈" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="加载保护继电器反馈" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45364">
<a-input-number v-model="model.v45364" placeholder="请输入加载保护继电器反馈" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="撒砂输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45367">
<a-input-number v-model="model.v45367" placeholder="请输入撒砂输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="柴油机报警输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45370">
<a-input-number v-model="model.v45370" placeholder="请输入柴油机报警输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="总风缸压力开关输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45371">
<a-input-number v-model="model.v45371" placeholder="请输入总风缸压力开关输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="空压机过温输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45373">
<a-input-number v-model="model.v45373" placeholder="请输入空压机过温输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="3km低恒速" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45374">
<a-input-number v-model="model.v45374" placeholder="请输入3km低恒速" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="5km低恒速" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45375">
<a-input-number v-model="model.v45375" placeholder="请输入5km低恒速" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="8km低恒速" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45376">
<a-input-number v-model="model.v45376" placeholder="请输入8km低恒速" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="紧急停机" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45377">
<a-input-number v-model="model.v45377" placeholder="请输入紧急停机" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="通风" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45380">
<a-input-number v-model="model.v45380" placeholder="请输入通风" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="启动" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45381">
<a-input-number v-model="model.v45381" placeholder="请输入启动" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="制冷" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45382">
<a-input-number v-model="model.v45382" placeholder="请输入制冷" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="制热" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45383">
<a-input-number v-model="model.v45383" placeholder="请输入制热" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="他车主机信号入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45384">
<a-input-number v-model="model.v45384" placeholder="请输入他车主机信号入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="补车柴油机起动按钮" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45385">
<a-input-number v-model="model.v45385" placeholder="请输入补车柴油机起动按钮" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="检测车停放制动重联" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45386">
<a-input-number v-model="model.v45386" placeholder="请输入检测车停放制动重联" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="他车柴油机停机按钮" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45387">
<a-input-number v-model="model.v45387" placeholder="请输入他车柴油机停机按钮" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="空调电机启动器反馈" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45390">
<a-input-number v-model="model.v45390" placeholder="请输入空调电机启动器反馈" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="相序继电器反馈" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45392">
<a-input-number v-model="model.v45392" placeholder="请输入相序继电器反馈" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="高压压力保护" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45393">
<a-input-number v-model="model.v45393" placeholder="请输入高压压力保护" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="低压压力保护" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45394">
<a-input-number v-model="model.v45394" placeholder="请输入低压压力保护" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="过热保护" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45395">
<a-input-number v-model="model.v45395" placeholder="请输入过热保护" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="后向电磁阀输出" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45402">
<a-input-number v-model="model.v45402" placeholder="请输入后向电磁阀输出" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="前向电磁阀输出" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45403">
<a-input-number v-model="model.v45403" placeholder="请输入前向电磁阀输出" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="四档电磁阀输出" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45404">
<a-input-number v-model="model.v45404" placeholder="请输入四档电磁阀输出" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="三档电磁阀输出" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45405">
<a-input-number v-model="model.v45405" placeholder="请输入三档电磁阀输出" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="二档电磁阀输出" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45406">
<a-input-number v-model="model.v45406" placeholder="请输入二档电磁阀输出" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="一档电磁阀输出" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45407">
<a-input-number v-model="model.v45407" placeholder="请输入一档电磁阀输出" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="蜂鸣器输出" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45410">
<a-input-number v-model="model.v45410" placeholder="请输入蜂鸣器输出" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="前向撒砂输出" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45411">
<a-input-number v-model="model.v45411" placeholder="请输入前向撒砂输出" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="后向撒砂输出" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45412">
<a-input-number v-model="model.v45412" placeholder="请输入后向撒砂输出" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="排水阀输出" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45414">
<a-input-number v-model="model.v45414" placeholder="请输入排水阀输出" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="空压机进气输出" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45415">
<a-input-number v-model="model.v45415" placeholder="请输入空压机进气输出" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="放风阀输出" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45416">
<a-input-number v-model="model.v45416" placeholder="请输入放风阀输出" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="柴油机起动输出" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45424">
<a-input-number v-model="model.v45424" placeholder="请输入柴油机起动输出" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="柴油机停机输出" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45425">
<a-input-number v-model="model.v45425" placeholder="请输入柴油机停机输出" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="PTO允许输出" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45426">
<a-input-number v-model="model.v45426" placeholder="请输入PTO允许输出" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="PTO升速输出" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45427">
<a-input-number v-model="model.v45427" placeholder="请输入PTO升速输出" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="PTO降速输出" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45430">
<a-input-number v-model="model.v45430" placeholder="请输入PTO降速输出" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="干燥器" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45432">
<a-input-number v-model="model.v45432" placeholder="请输入干燥器" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="前向风笛10K输出" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45433">
<a-input-number v-model="model.v45433" placeholder="请输入前向风笛10K输出" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="后向风笛9K输出" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45434">
<a-input-number v-model="model.v45434" placeholder="请输入后向风笛9K输出" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="本车从机确认" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45435">
<a-input-number v-model="model.v45435" placeholder="请输入本车从机确认" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="柴油机工作" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45436">
<a-input-number v-model="model.v45436" placeholder="请输入柴油机工作" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="空调电源相序错误报警" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45440">
<a-input-number v-model="model.v45440" placeholder="请输入空调电源相序错误报警" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="滑油液位低禁止启机" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45441">
<a-input-number v-model="model.v45441" placeholder="请输入滑油液位低禁止启机" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="列车管风压低报警卸载" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45442">
<a-input-number v-model="model.v45442" placeholder="请输入列车管风压低报警卸载" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="紧急制动报警卸载" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45443">
<a-input-number v-model="model.v45443" placeholder="请输入紧急制动报警卸载" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="停放制动报警卸载" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45444">
<a-input-number v-model="model.v45444" placeholder="请输入停放制动报警卸载" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="紧急停机报警" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45447">
<a-input-number v-model="model.v45447" placeholder="请输入紧急停机报警" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="传动箱油温高报警" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45450">
<a-input-number v-model="model.v45450" placeholder="请输入传动箱油温高报警" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="传动箱油温高报警卸载" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45451">
<a-input-number v-model="model.v45451" placeholder="请输入传动箱油温高报警卸载" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="传动箱油压高报警" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45452">
<a-input-number v-model="model.v45452" placeholder="请输入传动箱油压高报警" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="传动箱油压高报警卸载" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45453">
<a-input-number v-model="model.v45453" placeholder="请输入传动箱油压高报警卸载" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="冷却水水温高报警" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45454">
<a-input-number v-model="model.v45454" placeholder="请输入冷却水水温高报警" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="冷却水水温高报警卸载" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45455">
<a-input-number v-model="model.v45455" placeholder="请输入冷却水水温高报警卸载" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="滑油压力低报警" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45456">
<a-input-number v-model="model.v45456" placeholder="请输入滑油压力低报警" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="滑油温度高报警" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45457">
<a-input-number v-model="model.v45457" placeholder="请输入滑油温度高报警" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="传动箱油温高卸载停机" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45460">
<a-input-number v-model="model.v45460" placeholder="请输入传动箱油温高卸载停机" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="柴油机超速卸停机" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45461">
<a-input-number v-model="model.v45461" placeholder="请输入柴油机超速卸停机" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="柴油机硬线报警" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45462">
<a-input-number v-model="model.v45462" placeholder="请输入柴油机硬线报警" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="机车超速报警" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45463">
<a-input-number v-model="model.v45463" placeholder="请输入机车超速报警" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="机车超速卸载" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45464">
<a-input-number v-model="model.v45464" placeholder="请输入机车超速卸载" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="冷却水液位低报警" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45465">
<a-input-number v-model="model.v45465" placeholder="请输入冷却水液位低报警" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="换向降柴油机转速" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45466">
<a-input-number v-model="model.v45466" placeholder="请输入换向降柴油机转速" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="空调电机过载" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45467">
<a-input-number v-model="model.v45467" placeholder="请输入空调电机过载" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="空调过热保护" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45471">
<a-input-number v-model="model.v45471" placeholder="请输入空调过热保护" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="空调高压故障锁死" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45473">
<a-input-number v-model="model.v45473" placeholder="请输入空调高压故障锁死" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="空调高压故障" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45474">
<a-input-number v-model="model.v45474" placeholder="请输入空调高压故障" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="空档" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45480">
<a-input-number v-model="model.v45480" placeholder="请输入空档" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="换挡1档" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45481">
<a-input-number v-model="model.v45481" placeholder="请输入换挡1档" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="换挡2档" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45482">
<a-input-number v-model="model.v45482" placeholder="请输入换挡2档" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="换挡3档" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45483">
<a-input-number v-model="model.v45483" placeholder="请输入换挡3档" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="换挡4档" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45484">
<a-input-number v-model="model.v45484" placeholder="请输入换挡4档" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="机车前向" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45485">
<a-input-number v-model="model.v45485" placeholder="请输入机车前向" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="机车后向" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45486">
<a-input-number v-model="model.v45486" placeholder="请输入机车后向" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="机车前向加载" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45487">
<a-input-number v-model="model.v45487" placeholder="请输入机车前向加载" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="机车后向加载" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45490">
<a-input-number v-model="model.v45490" placeholder="请输入机车后向加载" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="空调低压故障锁死" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45491">
<a-input-number v-model="model.v45491" placeholder="请输入空调低压故障锁死" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="空调低压故障" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45492">
<a-input-number v-model="model.v45492" placeholder="请输入空调低压故障" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="机车超速紧急制动" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45495">
<a-input-number v-model="model.v45495" placeholder="请输入机车超速紧急制动" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="柴油机停机硬线" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45496">
<a-input-number v-model="model.v45496" placeholder="请输入柴油机停机硬线" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="燃油压力低报警" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45497">
<a-input-number v-model="model.v45497" placeholder="请输入燃油压力低报警" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="机车里程" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vw4550">
<a-input-number v-model="model.vw4550" placeholder="请输入机车里程" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="机车程序版本号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vw4554">
<a-input-number v-model="model.vw4554" placeholder="请输入机车程序版本号" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="理论换档速度升" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vw4556">
<a-input-number v-model="model.vw4556" placeholder="请输入理论换档速度升" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="理论换档速度降" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vw4558">
<a-input-number v-model="model.vw4558" placeholder="请输入理论换档速度降" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="柴油机停机" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45601">
<a-input-number v-model="model.v45601" placeholder="请输入柴油机停机" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="他车从机" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45602">
<a-input-number v-model="model.v45602" placeholder="请输入他车从机" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="低水位报警" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45603">
<a-input-number v-model="model.v45603" placeholder="请输入低水位报警" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="柴油机停机报警" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45604">
<a-input-number v-model="model.v45604" placeholder="请输入柴油机停机报警" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="风笛按钮输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45605">
<a-input-number v-model="model.v45605" placeholder="请输入风笛按钮输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="旁路制动按钮输入" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45606">
<a-input-number v-model="model.v45606" placeholder="请输入旁路制动按钮输入" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="电加热器" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45624">
<a-input-number v-model="model.v45624" placeholder="请输入电加热器" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="室内风机" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45625">
<a-input-number v-model="model.v45625" placeholder="请输入室内风机" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="室外风机" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45626">
<a-input-number v-model="model.v45626" placeholder="请输入室外风机" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="压缩机" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="v45627">
<a-input-number v-model="model.v45627" placeholder="请输入压缩机" style="width: 100%" />
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</template>
<script>
import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
export default {
name: 'BuZyNrgccOnlineForm',
components: {
},
props: {
//
disabled: {
type: Boolean,
default: false,
required: false
},
//
queryType: {
type: String,
default: 'online'
},
queryMonth: {
type: String,
default: undefined
}
},
data () {
return {
model:{
},
labelCol: {
xs: { span: 24 },
sm: { span: 5 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
validatorRules: {
},
url: {
add: "/ZyNrgcc/buZyNrgccOnline/add",
edit: "/ZyNrgcc/buZyNrgccOnline/edit",
queryById: "/ZyNrgcc/buZyNrgccOnline/queryById"
}
}
},
computed: {
formDisabled(){
return this.disabled
},
},
created () {
//model
this.modelDefault = JSON.parse(JSON.stringify(this.model));
},
methods: {
add () {
this.edit(this.modelDefault);
},
edit (record) {
this.model = Object.assign({}, record);
this.visible = true;
// Store the query type and month for use during submission
this.currentQueryType = queryType;
this.currentQueryMonth = queryMonth;
},
submitForm () {
const that = this;
//
this.$refs.form.validate(valid => {
if (valid) {
that.confirmLoading = true;
let httpurl = '';
let method = '';
if(!this.model.id){
httpurl+=this.url.add;
method = 'post';
}else{
httpurl+=this.url.edit;
method = 'put';
}
httpAction(httpurl,this.model,method).then((res)=>{
if(res.success){
that.$message.success(res.message);
that.$emit('ok');
}else{
that.$message.warning(res.message);
}
}).finally(() => {
that.confirmLoading = false;
})
}
})
},
}
}
</script>

View File

@ -0,0 +1,84 @@
<template>
<a-drawer
:title="title"
:width="width"
placement="right"
:closable="false"
@close="close"
destroyOnClose
:visible="visible">
<bu-zy-nrgcc-online-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></bu-zy-nrgcc-online-form>
<div class="drawer-footer">
<a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
<a-button v-if="!disableSubmit" @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
</div>
</a-drawer>
</template>
<script>
import BuZyNrgccOnlineForm from './BuZyNrgccOnlineForm'
export default {
name: 'BuZyNrgccOnlineModal',
components: {
BuZyNrgccOnlineForm
},
data () {
return {
title:"操作",
width:800,
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
});
},
close () {
this.$emit('close');
this.visible = false;
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
handleCancel () {
this.close()
}
}
}
</script>
<style lang="less" scoped>
/** Button按钮间距 */
.ant-btn {
margin-left: 30px;
margin-bottom: 30px;
float: right;
}
.drawer-footer{
position: absolute;
bottom: -8px;
width: 100%;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
}
</style>

View File

@ -0,0 +1,70 @@
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<bu-zy-nrgcc-online-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></bu-zy-nrgcc-online-form>
</j-modal>
</template>
<script>
import BuZyNrgccOnlineForm from './BuZyNrgccOnlineForm'
export default {
name: 'BuZyNrgccOnlineModal',
components: {
BuZyNrgccOnlineForm
},
props: {
queryType: {
type: String,
default: 'online'
},
queryMonth: {
type: String,
default: undefined
}
},
data () {
return {
title:'',
width:800,
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record, this.queryType, this.queryMonth);
})
},
close () {
this.$emit('close');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleCancel () {
this.close()
}
}
}
</script>

View File

@ -0,0 +1,332 @@
body{
margin: 0;
}
@font-face {
font-family: "HanSans";
src: url('../font/SourceHanSansCN-Bold.otf');
}
@font-face {
font-family: "HanSansRegular";
src: url('../font/SourceHanSansCN-Regular.otf');
}
@font-face {
font-family: "HanSansMedium";
src: url('../font/SourceHanSansCNMedium.otf');
}
body *{
box-sizing: border-box;
font-family: 'HanSansMedium';
}
.container{
width: 100vw;
height: 56.25vw;
background-image: url(../images/bg.png);
background-repeat: no-repeat;
background-size: 100% 100%;
background-position: center;
position: relative;
z-index: 1;
display: flex;
flex-wrap: wrap;
overflow: hidden;
}
.container-title {
width: 100%;
height: 7.407vh;
line-height: 7.407vh;
font-size: 1.875vw;
color: #fff;
text-align: center;
font-weight: 600;
}
.container-slide {
width: 480px;
height: 92.593vh;
margin: 0 20px;
display: flex;
flex-direction: column;
margin-top: -20px;
}
.container-center-item,
.container-slide-item {
display: flex;
flex-direction: column;
}
.container-slide-item-title {
width: 100%;
height: 36px;
font-size: 16px;
letter-spacing: 4px;
color: rgb(219, 228, 255);
padding-left: 22px;
background-image: url(../images/item_title.png);
background-repeat: no-repeat;
background-size: 100% 100%;
margin-bottom: 8px;
background-position: left bottom;
margin-top: 2px;
}
.container-slide-item-content {
padding: 14px 20px;
}
.container-slide-chart {
width: 100%;
height: 20vh;
}
.container-center {
height: 92.593vh;
flex: 1;
display: flex;
flex-direction: column;
}
.container-center-item-title {
width: 100%;
height: 36px;
font-size: 16px;
letter-spacing: 4px;
color: #DBE4FF;
padding-left: 22px;
background-image: url(../images/center_title.png);
background-repeat: no-repeat;
background-position: left bottom;
background-size: 100% 100%;
margin-bottom: 8px;
}
/* 中间配件状态 */
.container-center-schedule-info{
width: 100%;
padding: 14px;
display: flex;
flex-wrap: wrap;
/* background-color: #031227; */
}
.container-center-schedule-item{
width: 180px;
height: 140px;
display: flex;
flex-direction: column;
align-items: center;
background-position: center;
background-repeat: no-repeat;
background-size: 98% 98%;
background-image: url(../images/free.png);
text-align: center;
color: #fff;
margin-right: 40px;
margin-bottom: 18px;
}
.container-center-schedule-item:nth-child(4n){
margin-right: 0;
}
.container-center-schedule-running{
background-image: url(../images/running.png);
}
.container-center-schedule-repair{
background-image: url(../images/repair.png);
}
.container-center-schedule-warning{
background-image: url(../images/warning.png);
}
.container-center-schedule-number{
font-size: 20px;
line-height: 34px;
margin-top: 10px;
}
.container-center-schedule-status{
font-size: 12px;
line-height: 14px;
margin-top: 4px;
margin-bottom: 14px;
}
.container-center-schedule-text{
font-size: 12px;
line-height: 24px;
}
/* 表格 */
.container-table{
display: table;
width: 100%;
color: #fff;
font-size: 12px;
text-align: center;
}
.container-table-row{
display: table-row;
width: 100%;
color: #eeeeee;
border-bottom: 1px solid #eee;
}
.container-table-row:nth-of-type(1) {
display: table-header-group;
background-color: #133163;
color: #cccccc;
}
.container-table-cell, .container-table-head {
display: table-cell;
padding: 6px 8px;
line-height: 24px;
}
.container-table-head{
font-weight: bold;
}
.container-table-cell{
border-bottom: 1px solid #eeeeee40;
}
.container-table-cell span{
display: inline-block;
width: 52px;
padding: 0px 8px;
border-radius: 9px;
line-height: 18px;
}
/* 排名 */
.container-data-item{
width: 100%;
display: flex;
flex-wrap: wrap;
height: 48px;
align-items: center;
background-image: url(../images/data_bg.png);
background-repeat: no-repeat;
background-position: center;
background-size: 100%;
font-size: 14px;
font-weight: 300;
padding: 0 24px;
margin-top: 14px;
opacity: 0.5;
}
.container-data-item-icon{
width: 28px;
height: 32px;
background-image: url(../images/icon_bg.svg);
background-repeat: no-repeat;
background-position: center;
background-size: 100%;
margin-right: 18px;
display: flex;
justify-content: center;
align-items: center;
}
.container-data-item *{
color: #4EE5CA;
}
.container-data-item-icon img{
width: 24px;
}
.container-data-item-label{
width: 200px;
}
.container-data-item-data{
flex: 1;
}
.container-data-item:nth-child(1){
opacity: 0.8;
margin-top: 0;
}
.container-data-item:nth-child(1) .container-data-item-icon{
background-image: url(../images/icon_bg1.svg);
}
.container-data-item:nth-child(1) *{
color: #F83F55;
}
.container-data-item:nth-child(2){
opacity: 0.7;
}
.container-data-item:nth-child(2) .container-data-item-icon{
background-image: url(../images/icon_bg2.svg);
}
.container-data-item:nth-child(2) *{
color: #E3E54E;
}
.container-data-item:nth-child(3){
opacity: 0.6;
}
.container-data-item:nth-child(3) .container-data-item-icon{
background-image: url(../images/icon_bg3.svg);
}
.container-data-item:nth-child(3) *{
color: #00a6ff;
}
/* 告警信息 */
.container-item-warning-info{
width: 100%;
display: flex;
flex-wrap: wrap;
justify-content: space-around;
padding: 0 28px;
}
.container-item-warning-item{
width: 100px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.container-item-warning-number{
width: 90px;
height: 110px;
background-image: url(../images/warn_number.png);
background-position: center;
background-repeat: no-repeat;
background-size: 88%;
font-size: 28px;
color: #fff;
font-weight: 600;
line-height: 100px;
text-align: center;
}
.container-item-warning-type{
width: 100%;
text-align: center;
font-size: 14px;
font-weight: 300;
color: #C9E9FE;
margin-top: 14px;
}
.container-item-warning-list{
width: 100%;
display: flex;
flex-direction: column;
margin-top: 20px;
}
.container-item-warning-message{
width: 100%;
height: 30px;
line-height: 30px;
display: flex;
background-image: url(../images/message4.png);
background-repeat: no-repeat;
background-position: center;
background-size: 100% 100%;
color: #ebebeb;
margin: 2px 0;
}
.container-item-warning-message:nth-child(1){
background-image: url(../images/message1.png);
color: #F83F55;
}
.container-item-warning-message:nth-child(2){
background-image: url(../images/message2.png);
color: #E3E54E;
}
.container-item-warning-message:nth-child(3){
background-image: url(../images/message3.png);
color: #4EE5CA;
}
.container-item-warning-message-number{
width: 16px;
text-align: center;
margin-left: 14px;
margin-right: 12px;
}
.container-item-warning-message-content{
flex: 1;
}
.container-item-warning-message-date{
width: 96px;
text-align: center;
margin-left: 14px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 912 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="81.6436mm"
height="94.273903mm"
viewBox="0 0 81.6436 94.273903"
version="1.1"
id="svg5"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="icon_bg.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="0.763461"
inkscape:cx="201.71299"
inkscape:cy="222.67018"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs2" />
<g
inkscape:label="图层 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-51.709121,-89.753363)">
<path
sodipodi:type="star"
style="opacity:0.4;fill:#06d486;stroke-width:5;paint-order:markers fill stroke;fill-opacity:1"
id="path934"
inkscape:flatsided="true"
sodipodi:sides="6"
sodipodi:cx="292.09088"
sodipodi:cy="447.96002"
sodipodi:r1="178.15541"
sodipodi:r2="154.28711"
sodipodi:arg1="1.5707963"
sodipodi:arg2="2.0943951"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 292.09089,626.11543 -154.28712,-89.0777 0,-178.15541 154.28711,-89.07771 154.28711,89.0777 10e-6,178.15541 z"
transform="matrix(0.26458333,0,0,0.26458333,15.248541,18.367561)"
inkscape:transform-center-y="-1.4932e-06" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="81.6436mm"
height="94.273903mm"
viewBox="0 0 81.6436 94.273903"
version="1.1"
id="svg5"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="icon_bg1.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="0.763461"
inkscape:cx="201.71299"
inkscape:cy="222.67018"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs2" />
<g
inkscape:label="图层 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-51.709121,-89.753363)">
<path
sodipodi:type="star"
style="opacity:0.4;fill:#f73013;stroke-width:5;paint-order:markers fill stroke;fill-opacity:1"
id="path934"
inkscape:flatsided="true"
sodipodi:sides="6"
sodipodi:cx="292.09088"
sodipodi:cy="447.96002"
sodipodi:r1="178.15541"
sodipodi:r2="154.28711"
sodipodi:arg1="1.5707963"
sodipodi:arg2="2.0943951"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 292.09089,626.11543 -154.28712,-89.0777 0,-178.15541 154.28711,-89.07771 154.28711,89.0777 10e-6,178.15541 z"
transform="matrix(0.26458333,0,0,0.26458333,15.248541,18.367561)"
inkscape:transform-center-y="-1.4932e-06" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 661 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="81.6436mm"
height="94.273903mm"
viewBox="0 0 81.6436 94.273903"
version="1.1"
id="svg5"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="icon_bg2.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="0.763461"
inkscape:cx="201.71299"
inkscape:cy="222.67018"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs2" />
<g
inkscape:label="图层 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-51.709121,-89.753363)">
<path
sodipodi:type="star"
style="opacity:0.4;fill:#fd7f23;stroke-width:5;paint-order:markers fill stroke;fill-opacity:1"
id="path934"
inkscape:flatsided="true"
sodipodi:sides="6"
sodipodi:cx="292.09088"
sodipodi:cy="447.96002"
sodipodi:r1="178.15541"
sodipodi:r2="154.28711"
sodipodi:arg1="1.5707963"
sodipodi:arg2="2.0943951"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 292.09089,626.11543 -154.28712,-89.0777 0,-178.15541 154.28711,-89.07771 154.28711,89.0777 10e-6,178.15541 z"
transform="matrix(0.26458333,0,0,0.26458333,15.248541,18.367561)"
inkscape:transform-center-y="-1.4932e-06" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="81.6436mm"
height="94.273903mm"
viewBox="0 0 81.6436 94.273903"
version="1.1"
id="svg5"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="icon_bg3.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="0.763461"
inkscape:cx="201.71299"
inkscape:cy="222.67018"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs2" />
<g
inkscape:label="图层 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-51.709121,-89.753363)">
<path
sodipodi:type="star"
style="opacity:0.4;fill:#06c9ed;stroke-width:5;paint-order:markers fill stroke;fill-opacity:1"
id="path934"
inkscape:flatsided="true"
sodipodi:sides="6"
sodipodi:cx="292.09088"
sodipodi:cy="447.96002"
sodipodi:r1="178.15541"
sodipodi:r2="154.28711"
sodipodi:arg1="1.5707963"
sodipodi:arg2="2.0943951"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 292.09089,626.11543 -154.28712,-89.0777 0,-178.15541 154.28711,-89.07771 154.28711,89.0777 10e-6,178.15541 z"
transform="matrix(0.26458333,0,0,0.26458333,15.248541,18.367561)"
inkscape:transform-center-y="-1.4932e-06" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 816 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -0,0 +1,433 @@
<!--
* @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: 2025-08-13 13:15:10
* @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: 2025-08-14 09:30:07
* @FilePath: \云监测大屏\index.html
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>车互换配件点算记录台账</title>
<link rel="stylesheet" href="./css/style.css">
<script src=""></script>
<script src="./lib/echarts.min.js"></script>
<script src="./lib/jquery-3.6.0.js"></script>
</head>
<body>
<div class="container">
<div class="container-title">车互换配件点算记录台账</div>
<div class="container-slide">
<div class="container-slide-item">
<div class="container-slide-item-title">车互换配件数量统计</div>
<div class="container-slide-item-content">
<div class="container-slide-chart" id="numberChart"></div>
</div>
</div>
<div class="container-slide-item">
<div class="container-slide-item-title">车互换配件状态统计</div>
<div class="container-slide-item-content">
<div class="container-slide-chart" id="statusChart"></div>
</div>
</div>
<div class="container-slide-item">
<div class="container-slide-item-title">车互换配件异常信息</div>
<div class="container-slide-item-content">
<div class="container-item-warning-info">
<div class="container-item-warning-item">
<div class="container-item-warning-number">2</div>
<div class="container-item-warning-type">运营告警</div>
</div>
<div class="container-item-warning-item">
<div class="container-item-warning-number">5</div>
<div class="container-item-warning-type">检修告警</div>
</div>
<div class="container-item-warning-item">
<div class="container-item-warning-number">3</div>
<div class="container-item-warning-type">故障告警</div>
</div>
</div>
<div class="container-item-warning-list">
<div class="container-item-warning-message">
<div class="container-item-warning-message-number">1</div>
<div class="container-item-warning-message-content">TMC1车2架充电接触器卡分故障</div>
<div class="container-item-warning-message-date">2025-5-15</div>
</div>
<div class="container-item-warning-message">
<div class="container-item-warning-message-number">2</div>
<div class="container-item-warning-message-content">TMC1车2架充电接触器卡分故障</div>
<div class="container-item-warning-message-date">2025-5-15</div>
</div>
<div class="container-item-warning-message">
<div class="container-item-warning-message-number">3</div>
<div class="container-item-warning-message-content">TMC1车2架充电接触器卡分故障</div>
<div class="container-item-warning-message-date">2025-5-15</div>
</div>
<div class="container-item-warning-message">
<div class="container-item-warning-message-number">4</div>
<div class="container-item-warning-message-content">TMC1车2架充电接触器卡分故障</div>
<div class="container-item-warning-message-date">2025-5-15</div>
</div>
<div class="container-item-warning-message">
<div class="container-item-warning-message-number">5</div>
<div class="container-item-warning-message-content">TMC1车2架充电接触器卡分故障</div>
<div class="container-item-warning-message-date">2025-5-15</div>
</div>
</div>
</div>
</div>
</div>
<div class="container-center">
<div class="container-center-schedule-info">
<div class="container-center-schedule-item container-center-schedule-repair">
<div class="container-center-schedule-number">013</div>
<div class="container-center-schedule-status">列检</div>
<div class="container-center-schedule-text">列检库</div>
<div class="container-center-schedule-text">11股道</div>
<div class="container-center-schedule-text">2H</div>
</div>
<div class="container-center-schedule-item container-center-schedule-running">
<div class="container-center-schedule-number">015</div>
<div class="container-center-schedule-status">运行中</div>
<div class="container-center-schedule-text">——</div>
<div class="container-center-schedule-text">——</div>
<div class="container-center-schedule-text">4.4H</div>
</div>
<div class="container-center-schedule-item">
<div class="container-center-schedule-number">016</div>
<div class="container-center-schedule-status">空闲</div>
<div class="container-center-schedule-text">列检库</div>
<div class="container-center-schedule-text">7股道</div>
<div class="container-center-schedule-text">1H</div>
</div>
<div class="container-center-schedule-item container-center-schedule-repair">
<div class="container-center-schedule-number">013</div>
<div class="container-center-schedule-status">列检</div>
<div class="container-center-schedule-text">列检库</div>
<div class="container-center-schedule-text">11股道</div>
<div class="container-center-schedule-text">2H</div>
</div>
<div class="container-center-schedule-item container-center-schedule-running">
<div class="container-center-schedule-number">015</div>
<div class="container-center-schedule-status">运行中</div>
<div class="container-center-schedule-text">——</div>
<div class="container-center-schedule-text">——</div>
<div class="container-center-schedule-text">4.4H</div>
</div>
<div class="container-center-schedule-item">
<div class="container-center-schedule-number">016</div>
<div class="container-center-schedule-status">空闲</div>
<div class="container-center-schedule-text">列检库</div>
<div class="container-center-schedule-text">7股道</div>
<div class="container-center-schedule-text">1H</div>
</div>
<div class="container-center-schedule-item container-center-schedule-repair">
<div class="container-center-schedule-number">013</div>
<div class="container-center-schedule-status">列检</div>
<div class="container-center-schedule-text">列检库</div>
<div class="container-center-schedule-text">11股道</div>
<div class="container-center-schedule-text">2H</div>
</div>
<div class="container-center-schedule-item">
<div class="container-center-schedule-number">015</div>
<div class="container-center-schedule-status">周检</div>
<div class="container-center-schedule-text">检修库</div>
<div class="container-center-schedule-text">6股道</div>
<div class="container-center-schedule-text">14H</div>
</div>
<div class="container-center-schedule-item container-center-schedule-warning">
<div class="container-center-schedule-number">016</div>
<div class="container-center-schedule-status">故障</div>
<div class="container-center-schedule-text">检修库</div>
<div class="container-center-schedule-text">7股道</div>
<div class="container-center-schedule-text">1H</div>
</div>
<div class="container-center-schedule-item container-center-schedule-repair">
<div class="container-center-schedule-number">013</div>
<div class="container-center-schedule-status">列检</div>
<div class="container-center-schedule-text">列检库</div>
<div class="container-center-schedule-text">11股道</div>
<div class="container-center-schedule-text">2H</div>
</div>
<div class="container-center-schedule-item">
<div class="container-center-schedule-number">015</div>
<div class="container-center-schedule-status">周检</div>
<div class="container-center-schedule-text">检修库</div>
<div class="container-center-schedule-text">6股道</div>
<div class="container-center-schedule-text">14H</div>
</div>
<div class="container-center-schedule-item container-center-schedule-warning">
<div class="container-center-schedule-number">016</div>
<div class="container-center-schedule-status">故障</div>
<div class="container-center-schedule-text">检修库</div>
<div class="container-center-schedule-text">7股道</div>
<div class="container-center-schedule-text">1H</div>
</div>
<div class="container-center-schedule-item">
<div class="container-center-schedule-number">016</div>
<div class="container-center-schedule-status">空闲</div>
<div class="container-center-schedule-text">列检库</div>
<div class="container-center-schedule-text">7股道</div>
<div class="container-center-schedule-text">1H</div>
</div>
<div class="container-center-schedule-item">
<div class="container-center-schedule-number">016</div>
<div class="container-center-schedule-status">空闲</div>
<div class="container-center-schedule-text">列检库</div>
<div class="container-center-schedule-text">7股道</div>
<div class="container-center-schedule-text">1H</div>
</div>
<div class="container-center-schedule-item">
<div class="container-center-schedule-number">016</div>
<div class="container-center-schedule-status">空闲</div>
<div class="container-center-schedule-text">列检库</div>
<div class="container-center-schedule-text">7股道</div>
<div class="container-center-schedule-text">1H</div>
</div>
<div class="container-center-schedule-item">
<div class="container-center-schedule-number">016</div>
<div class="container-center-schedule-status">空闲</div>
<div class="container-center-schedule-text">列检库</div>
<div class="container-center-schedule-text">7股道</div>
<div class="container-center-schedule-text">1H</div>
</div>
</div>
<div class="container-center-item">
<div class="container-center-item-title">车互换配件台账</div>
<div class="container-center-item-content">
<div class="container-table" id="centerTable">
<div class="container-table-row">
<div class="container-table-head">配件名称</div>
<div class="container-table-head">规格</div>
<div class="container-table-head">单位</div>
<div class="container-table-head">定量数</div>
<div class="container-table-head">良好</div>
<div class="container-table-head">待修</div>
<div class="container-table-head">在修</div>
<div class="container-table-head">报废</div>
<div class="container-table-head">备注</div>
<div class="container-table-head">状态</div>
</div>
<div class="container-table-row">
<div class="container-table-cell">#135</div>
<div class="container-table-cell">1628</div>
<div class="container-table-cell">2024/07/17 12:12:14</div>
<div class="container-table-cell">100</div>
<div class="container-table-cell"></div>
<div class="container-table-cell"></div>
<div class="container-table-cell">2024/07/17 12:12:14</div>
<div class="container-table-cell">100</div>
<div class="container-table-cell"></div>
<div class="container-table-cell"></div>
</div>
<div class="container-table-row">
<div class="container-table-cell">#135</div>
<div class="container-table-cell">1628</div>
<div class="container-table-cell">2024/07/17 12:12:14</div>
<div class="container-table-cell">100</div>
<div class="container-table-cell"></div>
<div class="container-table-cell"></div>
<div class="container-table-cell">2024/07/17 12:12:14</div>
<div class="container-table-cell">100</div>
<div class="container-table-cell"></div>
<div class="container-table-cell"></div>
</div>
<div class="container-table-row">
<div class="container-table-cell">#135</div>
<div class="container-table-cell">1628</div>
<div class="container-table-cell">2024/07/17 12:12:14</div>
<div class="container-table-cell">100</div>
<div class="container-table-cell"></div>
<div class="container-table-cell"></div>
<div class="container-table-cell">2024/07/17 12:12:14</div>
<div class="container-table-cell">100</div>
<div class="container-table-cell"></div>
<div class="container-table-cell"></div>
</div>
<div class="container-table-row">
<div class="container-table-cell">#135</div>
<div class="container-table-cell">1628</div>
<div class="container-table-cell">2024/07/17 12:12:14</div>
<div class="container-table-cell">100</div>
<div class="container-table-cell"></div>
<div class="container-table-cell"></div>
<div class="container-table-cell">2024/07/17 12:12:14</div>
<div class="container-table-cell">100</div>
<div class="container-table-cell"></div>
<div class="container-table-cell"></div>
</div>
<div class="container-table-row">
<div class="container-table-cell">#135</div>
<div class="container-table-cell">1628</div>
<div class="container-table-cell">2024/07/17 12:12:14</div>
<div class="container-table-cell">100</div>
<div class="container-table-cell"></div>
<div class="container-table-cell"></div>
<div class="container-table-cell">2024/07/17 12:12:14</div>
<div class="container-table-cell">100</div>
<div class="container-table-cell"></div>
<div class="container-table-cell"></div>
</div>
<div class="container-table-row">
<div class="container-table-cell">#135</div>
<div class="container-table-cell">1628</div>
<div class="container-table-cell">2024/07/17 12:12:14</div>
<div class="container-table-cell">100</div>
<div class="container-table-cell"></div>
<div class="container-table-cell"></div>
<div class="container-table-cell">2024/07/17 12:12:14</div>
<div class="container-table-cell">100</div>
<div class="container-table-cell"></div>
<div class="container-table-cell"></div>
</div>
</div>
</div>
</div>
</div>
<div class="container-slide">
<div class="container-slide-item">
<div class="container-slide-item-title">车互换配件任务统计</div>
<div class="container-slide-item-content">
<div class="container-slide-chart" id="taskChart"></div>
</div>
</div>
<div class="container-slide-item">
<div class="container-slide-item-title">配件良好率排名</div>
<div class="container-slide-item-content">
<div class="container-data-goodlist" id="goodList">
<div class="container-data-item">
<div class="container-data-item-icon">1</div>
<div class="container-data-item-label">牵引电动机DF11</div>
<div class="container-data-item-data">良好百分比40.00%</div>
</div>
<div class="container-data-item">
<div class="container-data-item-icon">2</div>
<div class="container-data-item-label">牵引电动机电柜(109B)</div>
<div class="container-data-item-data">良好百分比44.44%</div>
</div>
<div class="container-data-item">
<div class="container-data-item-icon">3</div>
<div class="container-data-item-label">奉引电动机120109CJ</div>
<div class="container-data-item-data">良好百分比55.00%</div>
</div>
<div class="container-data-item">
<div class="container-data-item-icon">4</div>
<div class="container-data-item-label">牵引电动机电柜C20BCWV</div>
<div class="container-data-item-data">良好百分比75.00%</div>
</div>
<div class="container-data-item">
<div class="container-data-item-icon">5</div>
<div class="container-data-item-label">牵引发电机JP2D4D</div>
<div class="container-data-item-data">良好百分比100.00%</div>
</div>
<div class="container-data-item">
<div class="container-data-item-icon">3</div>
<div class="container-data-item-label">奉引电动机120109CJ</div>
<div class="container-data-item-data">良好百分比55.00%</div>
</div>
<div class="container-data-item">
<div class="container-data-item-icon">4</div>
<div class="container-data-item-label">牵引电动机电柜C20BCWV</div>
<div class="container-data-item-data">良好百分比75.00%</div>
</div>
<div class="container-data-item">
<div class="container-data-item-icon">5</div>
<div class="container-data-item-label">牵引发电机JP2D4D</div>
<div class="container-data-item-data">良好百分比100.00%</div>
</div>
<div class="container-data-item">
<div class="container-data-item-icon">4</div>
<div class="container-data-item-label">牵引电动机电柜C20BCWV</div>
<div class="container-data-item-data">良好百分比75.00%</div>
</div>
<div class="container-data-item">
<div class="container-data-item-icon">5</div>
<div class="container-data-item-label">牵引发电机JP2D4D</div>
<div class="container-data-item-data">良好百分比100.00%</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
let ip = "172.15.23.99"
let port = "18080"
let frontUrl = "/jeecg-boot/chhpjd/chhpjds/list"
function getData(){
var defer = $.Deferred();
$.ajax({
url:'http://' + ip + ':' + port + frontUrl,
type:'get',
async : true,
success:function(res){
defer.resolve(res)
},
complete: function (XHR, TS) {
XHR = null
},
error: function(error){
console.log(error)
}
})
return defer.promise();
}
let dataList = []
var getDataList = getData()
$.when(getDataList).done(function(getDataList){
console.log(getDataList)
dataList=getDataList.result.records
$('#centerTable').html('')
$('#goodList').html('')
$('#centerTable').append("<div class='container-table-row'>"+
"<div class='container-table-head'>配件名称</div>"+
"<div class='container-table-head'>规格</div>"+
"<div class='container-table-head'>单位</div>"+
"<div class='container-table-head'>定量数</div>"+
"<div class='container-table-head'>良好</div>"+
"<div class='container-table-head'>待修</div>"+
"<div class='container-table-head'>在修</div>"+
"<div class='container-table-head'>报废</div>"+
"<div class='container-table-head'>良好百分比</div>"+
"<div class='container-table-head'>备注</div>"+
"<div class='container-table-head'>状态</div>"+
"</div>")
// 台账表格
dataList.forEach(element => {
if(element.accessoryname === null) return
$('#centerTable').append("<div class='container-table-row'>"+
"<div class='container-table-cell'>"+ element.accessoryname +"</div>"+
"<div class='container-table-cell'>"+ element.specification +"</div>"+
"<div class='container-table-cell'>"+ element.unit +"</div>"+
"<div class='container-table-cell'>"+ element.quantitativenumbers +"</div>"+
"<div class='container-table-cell'>"+ element.good +"</div>"+
"<div class='container-table-cell'>"+ element.good +"</div>"+
"<div class='container-table-cell'>"+ element.good +"</div>"+
"<div class='container-table-cell'>"+ element.good +"</div>"+
"<div class='container-table-cell'>"+ element.goodpercentage +"</div>"+
"<div class='container-table-cell'>"+ element.remark +"</div>"+
"<div class='container-table-cell'>"+ element.state +"</div>"+
"</div>")
});
// 良好排序
let sortList = dataList.sort((a, b) => a.goodpercentage - b.goodpercentage);
sortList.forEach((element, index) => {
if(element.accessoryname === null) return
$('#goodList').append("<div class='container-data-item'>"+
"<div class='container-data-item-icon'>"+ index +"</div>"+
"<div class='container-data-item-label'>"+ element.accessoryname +"</div>"+
"<div class='container-data-item-data'>良好百分比:"+ element.goodpercentage +"%</div>"+
"</div>")
});
})
</script>
<script src="./js/main_charts.js"></script>
</body>
</html>

View File

@ -0,0 +1,14 @@
// Copyright 2025 ASUS
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

View File

@ -0,0 +1,246 @@
// 车互换配件数量统计
var WHChartDom = document.getElementById('numberChart');
var WHChart = echarts.init(WHChartDom);
var WHOption;
let data = [220, 182, 191, 234, 290, 330, 310, 123, 442, 321, 90, 149];
WHOption = {
grid: {
top: '6%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月', ],
axisLabel: {
color: '#999',
interval: 0,
},
axisTick: {
show: false
},
axisLine: {
show: false
},
},
yAxis: {
axisLine: {
show: false
},
axisTick: {
show: false
},
axisLabel: {
color: '#999'
},
splitLine: {
lineStyle: {
color: '#ffffff20'
}
},
},
series: [
{
type: 'bar',
showBackground: false,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: '#83bff6' },
{ offset: 0.5, color: '#188df0' },
{ offset: 1, color: '#188df0' }
])
},
emphasis: {
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: '#2378f7' },
{ offset: 0.7, color: '#2378f7' },
{ offset: 1, color: '#83bff6' }
])
}
},
barMaxWidth: 24,
data: data
}
]
};
WHOption && WHChart.setOption(WHOption);
// 车互换配件状态统计
var JXJHChartDom = document.getElementById('statusChart');
var JXJHmyChart = echarts.init(JXJHChartDom);
var JXJHoption;
let JXJHdata = [220, 182, 191, 234, 290, 330, 310, 123, 442, 321, 90, 149];
JXJHoption = {
title: {
text: "车辆检修计划",
textStyle: {
fontSize: 14,
color: '#fff'
},
left: 'center'
},
grid: {
top: '12%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
data: ['013', '015', '016', '018', '022', '023', '027', '031', '035', '038', '042', '043', ],
axisLabel: {
color: '#999',
interval: 0,
},
axisTick: {
show: false
},
axisLine: {
show: false
},
},
yAxis: {
axisLine: {
show: false
},
axisTick: {
show: false
},
axisLabel: {
color: '#999'
},
splitLine: {
lineStyle: {
color: '#ffffff20'
}
},
},
series: [
{
name: '列检',
type: 'bar',
data: [
2, 4, 7, 23, 25, 76, 135, 162, 32, 20, 6, 3
],
markPoint: {
data: [
{ type: 'max', name: 'Max' },
{ type: 'min', name: 'Min' }
]
},
markLine: {
data: [{ type: 'average', name: 'Avg' }]
}
},
{
name: '日检',
type: 'bar',
data: [
2, 5, 9, 26, 28, 70, 175, 182, 48, 18, 6, 2
],
markPoint: {
data: [
{ name: 'Max', value: 182.2, xAxis: 7, yAxis: 183 },
{ name: 'Min', value: 2.3, xAxis: 11, yAxis: 3 }
]
},
markLine: {
data: [{ type: 'average', name: 'Avg' }]
}
},
{
name: '周检',
type: 'bar',
data: [
2, 3, 5, 16, 18, 30, 55, 42, 48, 18, 6, 2
],
markPoint: {
data: [
{ name: 'Max', value: 182.2, xAxis: 7, yAxis: 183 },
{ name: 'Min', value: 2.3, xAxis: 11, yAxis: 3 }
]
},
markLine: {
data: [{ type: 'average', name: 'Avg' }]
}
},
]
};
JXJHoption && JXJHmyChart.setOption(JXJHoption);
// 车互换配件数量统计
var WHChartDom1 = document.getElementById('taskChart');
var WHChart1 = echarts.init(WHChartDom1);
var WHOption1;
let data1 = [220, 182, 191, 234, 290, 330, 310, 123, 442, 321, 90, 149];
WHOption1 = {
grid: {
top: '6%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月', ],
axisLabel: {
color: '#999',
interval: 0,
},
axisTick: {
show: false
},
axisLine: {
show: false
},
},
yAxis: {
axisLine: {
show: false
},
axisTick: {
show: false
},
axisLabel: {
color: '#999'
},
splitLine: {
lineStyle: {
color: '#ffffff20'
}
},
},
series: [
{
type: 'bar',
showBackground: false,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: '#83bff6' },
{ offset: 0.5, color: '#188df0' },
{ offset: 1, color: '#188df0' }
])
},
emphasis: {
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: '#2378f7' },
{ offset: 0.7, color: '#2378f7' },
{ offset: 1, color: '#83bff6' }
])
}
},
barMaxWidth: 24,
data: data1
}
]
};
WHOption1 && WHChart1.setOption(WHOption1);

View File

@ -0,0 +1,21 @@
let ip = "127.0.0.1"
let port = "18080"
let frontUrl = "/jeecg-boot/chhpjd/chhpjds/list"
function getData(){
var defer = $.Deferred();
$.ajax({
url:'http://' + ip + ':' + port + frontUrl,
type:'get',
async : true,
success:function(res){
defer.resolve(res)
},
complete: function (XHR, TS) {
XHR = null
},
error: function(error){
console.log(error)
}
})
return defer.promise();
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

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