Compare commits

..

6 Commits
master ... main

Author SHA1 Message Date
lupeng_zz 00a5f4a3bd 修改中英文滚动条 2026-05-19 16:54:18 +08:00
lupeng_zz b1984d3039 修改进度条问题,中文版已经修改完成。 2026-05-19 15:44:49 +08:00
lupeng_zz b951d518c3 提交前端代码 2026-05-19 15:06:53 +08:00
lupeng_zz 4aff2af250 最新代码 2026-01-29 15:13:21 +08:00
lupeng 1d2bf2042c 修改前端页面 2025-08-26 12:46:43 +08:00
lupeng 819ec53de1 修改页面上的冒号和样式 2025-08-19 16:29:18 +08:00
57 changed files with 6141 additions and 2407 deletions

View File

@ -2,5 +2,6 @@
<project version="4"> <project version="4">
<component name="VcsDirectoryMappings"> <component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" /> <mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component> </component>
</project> </project>

2
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,2 @@
{
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -57,6 +57,9 @@
<script src="scripts/ps.js"></script> <script src="scripts/ps.js"></script>
<script src="scripts/nbs.js"></script> <script src="scripts/nbs.js"></script>
<script src="scripts/month.js"></script> <script src="scripts/month.js"></script>
<script src="scripts/updatePwd.js"></script>
<script src="scripts/battery.js"></script>
</head> </head>
<body style="margin: 0px;"> <body style="margin: 0px;">
@ -79,7 +82,7 @@
<el-dropdown-menu slot="dropdown" style="font-size: 12px;"> <el-dropdown-menu slot="dropdown" style="font-size: 12px;">
<el-dropdown-item command='setting'>显示设置</el-dropdown-item> <el-dropdown-item command='setting'>显示设置</el-dropdown-item>
<el-dropdown-item command='help'>帮助</el-dropdown-item> <el-dropdown-item command='help'>帮助</el-dropdown-item>
<el-dropdown-item command='updatepwd'>修改密码</el-dropdown-item> <el-dropdown-item command='updatePwd'>修改密码</el-dropdown-item>
<el-dropdown-item command='exit'>退出</el-dropdown-item> <el-dropdown-item command='exit'>退出</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>

View File

@ -875,7 +875,7 @@
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -209,7 +209,7 @@
this.$data.pagesize = val; this.$data.pagesize = val;
var _this = this; var _this = this;
this.$data.currentPage = 1;
var objs; var objs;
axios.post('/deescloud/getAuthHisPos', { axios.post('/deescloud/getAuthHisPos', {
opuser:localStorage.getItem("online_user"), opuser:localStorage.getItem("online_user"),

View File

@ -455,7 +455,7 @@
handleSizeChange(val) { handleSizeChange(val) {
//console.log(`每页 ${val} 条`); //console.log(`每页 ${val} 条`);
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -455,7 +455,7 @@
handleSizeChange(val) { handleSizeChange(val) {
//console.log(`每页 ${val} 条`); //console.log(`每页 ${val} 条`);
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -412,7 +412,7 @@
handleSizeChange(val) { handleSizeChange(val) {
//console.log(`每页 ${val} 条`); //console.log(`每页 ${val} 条`);
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var beginTime= ''; var beginTime= '';
var endTime = ''; var endTime = '';

View File

@ -414,7 +414,7 @@
handleSizeChange(val) { handleSizeChange(val) {
//console.log(`每页 ${val} 条`); //console.log(`每页 ${val} 条`);
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var beginTime= ''; var beginTime= '';
var endTime = ''; var endTime = '';

View File

@ -537,7 +537,7 @@
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -520,7 +520,7 @@
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -305,7 +305,7 @@ history.pushState(null, null, document.URL);
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) { if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) {
this.$message({ this.$message({
message: 'The end time must be after the start time!', message: 'The end time must be after the start time!',

View File

@ -339,7 +339,7 @@ history.pushState(null, null, document.URL);
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) { if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) {
this.$message({ this.$message({
message: '结束时间必须在开始时间之后!', message: '结束时间必须在开始时间之后!',

View File

@ -481,7 +481,7 @@
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) { if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) {
this.$message({ this.$message({
message: 'The end time must be after the start time!', message: 'The end time must be after the start time!',

View File

@ -481,7 +481,7 @@
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) { if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) {
this.$message({ this.$message({
message: '结束时间必须在开始时间之后!', message: '结束时间必须在开始时间之后!',

View File

@ -342,7 +342,7 @@ history.pushState(null, null, document.URL);
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) { if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) {
this.$message({ this.$message({
message: 'The end time must be after the start time!', message: 'The end time must be after the start time!',

View File

@ -564,7 +564,7 @@ history.pushState(null, null, document.URL);
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) { if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) {
this.$message({ this.$message({
message: '结束时间必须在开始时间之后!', message: '结束时间必须在开始时间之后!',

View File

@ -283,7 +283,7 @@
handleSizeChange(val) { handleSizeChange(val) {
var beginTime= ''; var beginTime= '';
var endTime = ''; var endTime = '';
this.$data.currentPage = 1;
if (this.$data.date_value != null && this.$data.date_value.length > 1) { if (this.$data.date_value != null && this.$data.date_value.length > 1) {
console.log("len:",this.$data.date_value.length) console.log("len:",this.$data.date_value.length)
console.log("date_value:",this.$data.date_value); console.log("date_value:",this.$data.date_value);

View File

@ -283,7 +283,7 @@
handleSizeChange(val) { handleSizeChange(val) {
var beginTime= ''; var beginTime= '';
var endTime = ''; var endTime = '';
this.$data.currentPage = 1;
if (this.$data.date_value != null && this.$data.date_value.length > 1) { if (this.$data.date_value != null && this.$data.date_value.length > 1) {
console.log("len:",this.$data.date_value.length) console.log("len:",this.$data.date_value.length)
console.log("date_value:",this.$data.date_value); console.log("date_value:",this.$data.date_value);

View File

@ -244,7 +244,7 @@
handleSizeChange(val) { handleSizeChange(val) {
//console.log(`每页 ${val} 条`); //console.log(`每页 ${val} 条`);
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) { if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) {
this.$message({ this.$message({
message: 'The end time must be after the start time!', message: 'The end time must be after the start time!',

View File

@ -245,7 +245,7 @@
handleSizeChange(val) { handleSizeChange(val) {
//console.log(`每页 ${val} 条`); //console.log(`每页 ${val} 条`);
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) { if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) {
this.$message({ this.$message({
message: '结束时间必须在开始时间之后!', message: '结束时间必须在开始时间之后!',

View File

@ -129,7 +129,7 @@
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -78,8 +78,8 @@
axios.post('/deescloud/get_well_cur_data', { axios.post('/deescloud/get_well_cur_data', {
opuser:localStorage.getItem("online_user"), opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"), opuser_uuid:localStorage.getItem("uuid"),
Wellname: this.$data.curWellName, Wellname: this.$data.curWellName,
}) })
.then(function (response) { .then(function (response) {
console.log(response.data); console.log(response.data);
let data = response.data; let data = response.data;
@ -128,7 +128,7 @@
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -577,7 +577,7 @@
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -575,7 +575,7 @@
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -358,7 +358,7 @@
this.$data.pagesize = val; this.$data.pagesize = val;
var _this = this; var _this = this;
this.$data.currentPage = 1;
var objs; var objs;
axios.post('/deescloud/getMss_en', { axios.post('/deescloud/getMss_en', {
opuser:localStorage.getItem("online_user"), opuser:localStorage.getItem("online_user"),

View File

@ -376,13 +376,14 @@
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
// 添加:重置到第一页
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;
axios.post('/deescloud/getMss', { axios.post('/deescloud/getMss', {
opuser:localStorage.getItem("online_user"), opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"), opuser_uuid:localStorage.getItem("uuid"),
series:this.$data.series_v, series:this.$data.series_v,
instrument_id:this.$data.instrument_id_v, instrument_id:this.$data.instrument_id_v,
wellname: this.$data.value, wellname: this.$data.value,

View File

@ -1010,7 +1010,7 @@
handleSizeChange(val) { handleSizeChange(val) {
//console.log(`每页 ${val} 条`); //console.log(`每页 ${val} 条`);
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -1030,7 +1030,7 @@
handleSizeChange(val) { handleSizeChange(val) {
//console.log(`每页 ${val} 条`); //console.log(`每页 ${val} 条`);
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -48,7 +48,7 @@
style="margin-left: 10px" style="margin-left: 10px"
v-model="scope.row.pumpExport" v-model="scope.row.pumpExport"
@change="(value) => handlePumpExportChange(value, scope.row)"> @change="(value) => handlePumpExportChange(value, scope.row)">
<span style="color: green">导出泵</span> <span style="color: #409EFF">泵信息</span>
</el-checkbox> </el-checkbox>
</template> </template>
</el-table-column> </el-table-column>
@ -261,7 +261,7 @@
handleSizeChange(val) { handleSizeChange(val) {
//console.log(`每页 ${val} 条`); //console.log(`每页 ${val} 条`);
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -253,7 +253,7 @@
handleSizeChange(val) { handleSizeChange(val) {
//console.log(`每页 ${val} 条`); //console.log(`每页 ${val} 条`);
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -193,7 +193,7 @@ history.pushState(null, null, document.URL);
}, },
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -191,7 +191,7 @@ history.pushState(null, null, document.URL);
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

1911
scripts/tool_detail-en.js Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -49,7 +49,7 @@
</div> </div>
<el-button @click="show_pdf(scope.row)" type="text" size="medium">Report Detail</el-button> <el-button @click="show_pdf(scope.row)" type="text" size="medium">Report Detail</el-button>
<el-button @click="export_pdf(scope.row)" type="text" size="medium">Export</el-button> <el-button @click="export_pdf(scope.row)" type="text" size="medium">Export</el-button>
</div> </div>
</template> </template>
@ -68,52 +68,87 @@
:total="recordTotal" style="background-color: #ECF5FF;"> :total="recordTotal" style="background-color: #ECF5FF;">
</el-pagination> </el-pagination>
</div> </div>
<el-dialog
title="Instrument Status Information"
:visible.sync="pdf_visible" <!-- 仪器状态弹窗 -->
:lock-scroll ="false" <el-dialog
:append-to-body="true" title="Instrument Status Message"
width="60%"> :visible.sync="pdf_visible"
<div style="height: 450px;overflow: auto;"> :lock-scroll="false"
<div v-if="tool_warning_data.length>0"> :append-to-body="true"
<div>Risk warning: </div> width="60%"
<div v-for="item in tool_warning_data"> >
<div style="display: flex;padding-top: 10px;"> <div style="height: 450px; overflow: auto;">
<div style="width: 100%;"> <div v-if="tool_warning_data.length > 0">
{{item.time}} <div>Risk warning:</div>
&nbsp;{{item.err_level}}:
&nbsp;{{item.context}}
</div>
</div>
</div> <div v-for="item in tool_warning_data" :key="item.id">
</div> <div style="display: flex; padding-top: 10px; align-items: center;">
<div v-if="tool_warning_data.length==0"> <div
<div>The instruments in this well are working normally.</div> style="width: 100%;"
</div> :style="{ color: item.flag === 1 ? 'red' : 'inherit' }"
<el-divider></el-divider> >
</div> <span style="font-weight: 500;">
</el-dialog> <template v-if="item.flag === 0">
&nbsp;&nbsp;{{ item.series_num }} {{ item.instrument_id }} | Normal
</template>
</span>
<template v-if="item.flag === 1">
<span style="margin-left: 6px;">
{{ item.time }} | {{ item.context }}
</span>
</template>
<el-button
v-if="item.series_num"
@click="openDetail(item)"
type="text"
size="medium"
style="margin-left: 12px; padding: 0 4px;"
>
Details
</el-button>
</div>
</div>
</div>
</div>
<div v-if="tool_warning_data.length == 0">
<div>The instruments in this well are working normally</div>
</div>
<el-divider></el-divider>
</div>
</el-dialog>
</div> </div>
`, `,
data(){ data(){
// 获取当前屏幕的分辨率 // 获取当前屏幕的分辨率
let screenW = window.screen.width; let screenW = window.screen.width;
let screenH = window.innerHeight; let screenH = window.innerHeight;
console.log("screen width:",screenW); console.log("screen width:", screenW);
console.log("screen height:",screenH); console.log("screen height:", screenH);
return { return {
tHeight:screenH-192, tHeight: screenH - 192,
tableData: Array(0), tableData: Array(0),
input:'', input: '',
currentPage: 1, currentPage: 1,
pagesize:50, pagesize: 50,
recordTotal:0, recordTotal: 0,
pdf_visible: false,
pdf_visible:false, tool_warning_data: [],
tool_warning_data:{}, checked: false,
checked:false, currentWellName: '' // 新增:存储当前查看的井名
} };
}, },
mounted() { mounted() {
var _this = this; var _this = this;
@ -151,14 +186,35 @@
var fileid = response.data.fileId; var fileid = response.data.fileId;
var downUrl = 'file/'+fileid; var downUrl = 'file/'+fileid;
downloadUrl(row.wellNameSource+"-Instrument status report.pdf",downUrl); downloadUrl(row.wellNameSource+"_Instrument status report.pdf",downUrl);
}) })
.catch(function (error) { .catch(function (error) {
console.log(error); console.log(error);
}); });
}, },
export_mess_pdf(row) {
var _this = this;
axios.post('deescloud/get_tool_warning_pdf_en', {
opuser: localStorage.getItem("online_user"),
opuser_uuid: localStorage.getItem("uuid"),
wellname: row.wellNameSource
})
.then(function (response) {
console.log(response.data);
var fileid = response.data.fileId;
var downUrl = 'file/' + fileid;
console.log("downUrl-----------",downUrl);
console.log("wellNameSource-----------",row.wellNameSource);
downloadUrl(row.wellNameSource + "_Instrument status report.pdf", downUrl);
})
.catch(function (error) {
console.log(error);
});
},
show_pdf(row){ show_pdf(row){
let _this= this; let _this= this;
this.currentWellName = row.wellNameSource;
axios.post('/deescloud/get_tool_warning_en', { axios.post('/deescloud/get_tool_warning_en', {
opuser:localStorage.getItem("online_user"), opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"), opuser_uuid:localStorage.getItem("uuid"),
@ -205,7 +261,7 @@
handleSizeChange(val) { handleSizeChange(val) {
//console.log(`每页 ${val} 条`); //console.log(`每页 ${val} 条`);
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;
@ -255,6 +311,33 @@
}); });
}, },
// 新增:打开详情页方法
openDetail(item) {
// 使用当前井名和预警项ID构建详情页URL
const wellName = this.currentWellName; // 不要预先编码
// 使用预警ID或时间戳作为唯一标识
// 构建基础URL参数留待URLSearchParams处理
const detailUrl = 'tool_detail-en.html';
// 使用URLSearchParams自动处理编码
const params = new URLSearchParams({
well: wellName,
id: item.opuser_uuid,
name : item.name,
series: item.series_num,
instrument: item.instrument_id,
flag:item.flag,
content: item.context || ''
});
// 完整URL
const fullUrl = `${detailUrl}?${params.toString()}`;
// 在新标签页打开详情页
window.open(fullUrl, '_blank');
}
} }
} }

View File

@ -22,7 +22,7 @@ var toolscomponent = {
<el-table-column prop="welltime" label="建井时间" :width="170"></el-table-column> <el-table-column prop="welltime" label="建井时间" :width="170"></el-table-column>
<el-table-column prop="welloperator" label="操作用户" :width="150" :show-overflow-tooltip="true"></el-table-column> <el-table-column prop="welloperator" label="操作用户" :width="150" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="upload_user" label="上传用户" :width="150" :show-overflow-tooltip="true"></el-table-column> <el-table-column prop="upload_user" label="上传用户" :width="150" :show-overflow-tooltip="true"></el-table-column>
<el-table-column label="操作" width="240"> <el-table-column label="操作" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<div style="flex: 1; display: inline-flex;"> <div style="flex: 1; display: inline-flex;">
<div v-if="!scope.row.tsw"> <div v-if="!scope.row.tsw">
@ -31,8 +31,8 @@ var toolscomponent = {
</svg> </svg>
</div> </div>
<el-button @click="show_pdf(scope.row)" type="text" size="medium">报告明细</el-button> <el-button @click="show_pdf(scope.row)" type="text" size="medium">报告明细</el-button>
<el-button @click="export_pdf(scope.row)" type="text" size="medium">导出</el-button> <!-- <el-button @click="export_pdf(scope.row)" type="text" size="medium">导出</el-button> -->
<el-button @click="export_mess_pdf(scope.row)" type="text" size="medium">仪器报告导出</el-button> <el-button @click="export_mess_pdf(scope.row)" type="text" size="medium">导出</el-button>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
@ -63,7 +63,6 @@ var toolscomponent = {
width="60%" width="60%"
> >
<div style="height: 450px; overflow: auto;"> <div style="height: 450px; overflow: auto;">
<div v-if="tool_warning_data.length > 0"> <div v-if="tool_warning_data.length > 0">
<div>风险预警:</div> <div>风险预警:</div>
@ -78,17 +77,13 @@ var toolscomponent = {
> >
<span style="font-weight: 500;"> <span style="font-weight: 500;">
<template v-if="item.flag === 0"> <template v-if="item.flag === 0">
{{ item.series_num }} {{ item.instrument_id }} | 仪器正常 &nbsp;&nbsp;{{ item.series_num }} {{ item.instrument_id }} | 仪器正常
</template>
<template v-else>
{{ item.time }} | {{ item.series_num }} |
</template> </template>
</span> </span>
<template v-if="item.flag === 1"> <template v-if="item.flag === 1">
<span style="margin-left: 6px;"> <span style="margin-left: 6px;">
{{ item.err_level }} | {{ item.context }} {{ item.time }} | {{ item.context }}
</span> </span>
</template> </template>
@ -109,7 +104,7 @@ var toolscomponent = {
</div> </div>
<div v-if="tool_warning_data.length == 0"> <div v-if="tool_warning_data.length == 0">
<div>本口井仪器工作正常</div> <div>本口井未上传仪器信息</div>
</div> </div>
<el-divider></el-divider> <el-divider></el-divider>
</div> </div>
@ -117,7 +112,6 @@ var toolscomponent = {
</div> </div>
`, `,
data() { data() {
// 获取当前屏幕的分辨率
let screenW = window.screen.width; let screenW = window.screen.width;
let screenH = window.innerHeight; let screenH = window.innerHeight;
console.log("screen width:", screenW); console.log("screen width:", screenW);
@ -169,7 +163,9 @@ var toolscomponent = {
console.log(response.data); console.log(response.data);
var fileid = response.data.fileId; var fileid = response.data.fileId;
var downUrl = 'file/' + fileid; var downUrl = 'file/' + fileid;
downloadUrl(row.wellNameSource + "-仪器状态报告.pdf", downUrl); console.log("downUrl-----------",downUrl);
console.log("wellNameSource-----------",row.wellNameSource);
downloadUrl(row.wellNameSource + "_仪器状态报告.pdf", downUrl);
}) })
.catch(function (error) { .catch(function (error) {
console.log(error); console.log(error);
@ -179,7 +175,7 @@ var toolscomponent = {
export_mess_pdf(row) { export_mess_pdf(row) {
var _this = this; var _this = this;
axios.post('deescloud/get_tool_mess_pdf', { axios.post('deescloud/get_tool_warning_pdf', {
opuser: localStorage.getItem("online_user"), opuser: localStorage.getItem("online_user"),
opuser_uuid: localStorage.getItem("uuid"), opuser_uuid: localStorage.getItem("uuid"),
wellname: row.wellNameSource wellname: row.wellNameSource
@ -188,7 +184,9 @@ var toolscomponent = {
console.log(response.data); console.log(response.data);
var fileid = response.data.fileId; var fileid = response.data.fileId;
var downUrl = 'file/' + fileid; var downUrl = 'file/' + fileid;
// downloadUrl(row.wellNameSource + "-仪器报告.pdf", downUrl); console.log("downUrl-----------",downUrl);
console.log("wellNameSource-----------",row.wellNameSource);
downloadUrl(row.wellNameSource + "_仪器报告.pdf", downUrl);
}) })
.catch(function (error) { .catch(function (error) {
console.log(error); console.log(error);
@ -245,7 +243,7 @@ var toolscomponent = {
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
var _this = this; var _this = this;
this.$data.currentPage = 1;
var objs; var objs;
axios.post('/deescloud/get_well_tool', { axios.post('/deescloud/get_well_tool', {
opuser: localStorage.getItem("online_user"), opuser: localStorage.getItem("online_user"),
@ -291,9 +289,7 @@ var toolscomponent = {
console.log(error); console.log(error);
}); });
}, },
// 新增:打开详情页方法
// 新增:打开详情页方法
// 新增:打开详情页方法
openDetail(item) { openDetail(item) {
// 使用当前井名和预警项ID构建详情页URL // 使用当前井名和预警项ID构建详情页URL
const wellName = this.currentWellName; // 不要预先编码 const wellName = this.currentWellName; // 不要预先编码
@ -310,7 +306,7 @@ var toolscomponent = {
series: item.series_num, series: item.series_num,
instrument: item.instrument_id, instrument: item.instrument_id,
flag:item.flag, flag:item.flag,
content: item.content || '' content: item.context || ''
}); });
// 完整URL // 完整URL

View File

@ -261,7 +261,7 @@
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -263,7 +263,7 @@
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -182,7 +182,7 @@
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var beginTime= ''; var beginTime= '';
var endTime = ''; var endTime = '';

View File

@ -182,7 +182,7 @@
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var beginTime= ''; var beginTime= '';
var endTime = ''; var endTime = '';

View File

@ -188,7 +188,7 @@
handleSizeChange(val) { handleSizeChange(val) {
//console.log(`每页 ${val} 条`); //console.log(`每页 ${val} 条`);
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -394,7 +394,7 @@
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -405,7 +405,7 @@
handleSizeChange(val) { handleSizeChange(val) {
//console.log(`每页 ${val} 条`); //console.log(`每页 ${val} 条`);
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -397,7 +397,7 @@
handleSizeChange(val) { handleSizeChange(val) {
//console.log(`每页 ${val} 条`); //console.log(`每页 ${val} 条`);
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -401,7 +401,7 @@
handleSizeChange(val) { handleSizeChange(val) {
//console.log(`每页 ${val} 条`); //console.log(`每页 ${val} 条`);
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this; var _this = this;
var objs; var objs;

View File

@ -315,7 +315,7 @@
handleSizeChange(val) { handleSizeChange(val) {
//console.log(`每页 ${val} 条`); //console.log(`每页 ${val} 条`);
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) { if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) {
this.$message({ this.$message({
message: 'The end time must be later than start time!', message: 'The end time must be later than start time!',

View File

@ -1,165 +1,186 @@
//组件 //组件
var WellHistorycomponent = { var WellHistorycomponent = {
template:` template:`
<div style="height: 100%;width: 100%;"> <div style="height: 100%;width: 100%;">
<div v-show="if_show0"> <div v-show="if_show0">
<div id="" style="display: inline-block;width: 100%;margin-top: 10px;"> <div id="" style="display: inline-block;width: 100%;margin-top: 10px;">
<div style="float: left;display: flex;background-color: #ECF5FF;"> <div style="float: left;display: flex;background-color: #ECF5FF;">
<el-input v-model="input" placeholder="请输入井名" clearable ></el-input> <el-input v-model="input" placeholder="请输入井名" clearable style="width: 150px;"></el-input>
</div>
<div style="float: left;display: flex;background-color: #ECF5FF;">
<el-date-picker
v-if="if_show_bt==1"
v-model="begin_t"
type="datetime"
placeholder="开始时间"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
<el-date-picker
v-if="if_show_bt==2"
v-model="begin_t"
type="datetime"
placeholder="开始时间"
format="MM-dd-yyyy HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
<el-date-picker
v-if="if_show_bt==3"
v-model="begin_t"
type="datetime"
placeholder="开始时间"
format="dd-MM-yyyy HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
</div>
<div style="float: left;display: flex;background-color: #ECF5FF;">
<el-date-picker
v-if="if_show_bt==1"
v-model="end_t"
type="datetime"
placeholder="结束时间"
value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
<el-date-picker
v-if="if_show_bt==2"
v-model="end_t"
type="datetime"
placeholder="结束时间"
format="MM-dd-yyyy HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
<el-date-picker
v-if="if_show_bt==3"
v-model="end_t"
type="datetime"
placeholder="结束时间"
format="dd-MM-yyyy HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
</div>
<div style="float: left;margin-left: 5px;">
<el-checkbox style="background-color: #ECF5FF;" v-model="checked" label="工程服务" border></el-checkbox>
</div>
<div style="float: left;margin-left: 5px;">
<el-button id ="bt_serach" plain type="primary" icon="el-icon-search" @click="getWellEx(input)">搜索</el-button>
</div>
</div> </div>
<div class="span"> <div style="float: left;display: flex;background-color: #ECF5FF;">
<el-table <el-date-picker
:data="tableData" v-if="if_show_bt==1"
:height="tHeight" v-model="begin_t"
style="font-size:14px;overflow-y: auto;" type="datetime"
:cell-style="{background:'#304156'}" placeholder="开始时间"
border format="yyyy-MM-dd HH:mm:ss"
> value-format="yyyy-MM-dd HH:mm:ss">
<el-table-column </el-date-picker>
prop="wellNameSource" <el-date-picker
label="井名称" v-if="if_show_bt==2"
:width="150" v-model="begin_t"
:show-overflow-tooltip="true"> type="datetime"
</el-table-column> placeholder="开始时间"
<el-table-column format="MM-dd-yyyy HH:mm:ss"
prop="wellstate" value-format="yyyy-MM-dd HH:mm:ss">
label="井状态" </el-date-picker>
width="60"> <el-date-picker
</el-table-column> v-if="if_show_bt==3"
<el-table-column v-model="begin_t"
prop="welltime" type="datetime"
label="建井时间" placeholder="开始时间"
:width="170"> format="dd-MM-yyyy HH:mm:ss"
</el-table-column> value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
<el-table-column </div>
<div style="float: left;display: flex;background-color: #ECF5FF;">
<el-date-picker
v-if="if_show_bt==1"
v-model="end_t"
type="datetime"
placeholder="结束时间"
value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
<el-date-picker
v-if="if_show_bt==2"
v-model="end_t"
type="datetime"
placeholder="结束时间"
format="MM-dd-yyyy HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
<el-date-picker
v-if="if_show_bt==3"
v-model="end_t"
type="datetime"
placeholder="结束时间"
format="dd-MM-yyyy HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
</div>
<!-- 新增类型筛选下拉框多选 -->
<div style="float: left;display: flex;background-color: #ECF5FF;">
<el-select
v-model="selectedTypes"
multiple
collapse-tags
placeholder="请选择井测试类型"
clearable
style="width: 220px;">
<el-option
v-for="item in typeOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<div style="float: left;margin-left: 5px;">
<el-checkbox style="background-color: #ECF5FF;" v-model="checked" label="工程服务" border></el-checkbox>
</div>
<div style="float: left;margin-left: 5px;">
<el-button id ="bt_serach" plain type="primary" icon="el-icon-search" @click="getWellEx(input)">搜索</el-button>
</div>
</div>
<div class="span">
<el-table
:data="tableData"
:height="tHeight"
style="font-size:14px;overflow-y: auto;"
:cell-style="{background:'#304156'}"
border
>
<el-table-column
prop="wellNameSource"
label="井名称"
:width="150"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="wellstate"
label="井状态"
width="60">
</el-table-column>
<el-table-column
prop="welltime"
label="建井时间"
:width="170">
</el-table-column>
<el-table-column
prop="welloperator" prop="welloperator"
label="操作用户" label="操作用户"
:width="150" :width="150"
:show-overflow-tooltip="true"> :show-overflow-tooltip="true">
</el-table-column> </el-table-column>
<el-table-column <!-- 修改将井测试类型列改为普通文本列以保持与其他列样式一致 -->
label="操作" <el-table-column
width="140"> prop="type_name"
<template slot-scope="scope"> label="井测试类型"
<div style="flex: 1;display: inline-flex;"> :width="200"
<div v-if="!scope.row.rt_flag"> :show-overflow-tooltip="true">
<svg style="bottom: 5px;" t="1683783351758" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2560" width="8" height="8"><path d="M512 512m-469.333333 0a469.333333 469.333333 0 1 0 938.666666 0 469.333333 469.333333 0 1 0-938.666666 0Z" fill="#d81e06" p-id="2561"></path></svg> </el-table-column>
</div> <el-table-column
<el-button @click="handleClick(scope.row)" type="text" size="medium">历史详情</el-button> label="操作"
<el-button @click="exportWellHis(scope.row)" type="text" size="medium">导出</el-button> width="140">
<template slot-scope="scope">
</div> <div style="flex: 1;display: inline-flex;">
<div v-if="!scope.row.rt_flag">
</template> <svg style="bottom: 5px;" t="1683783351758" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2560" width="8" height="8"><path d="M512 512m-469.333333 0a469.333333 469.333333 0 1 0 938.666666 0 469.333333 469.333333 0 1 0-938.666666 0Z" fill="#d81e06" p-id="2561"></path></svg>
</el-table-column> </div>
</el-table> <el-button @click="handleClick(scope.row)" type="text" size="medium">历史详情</el-button>
<el-button @click="exportWellHis(scope.row)" type="text" size="medium">导出</el-button>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="block">
<span class="demonstration" style="background-color: #ECF5FF;"></span>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[50,100, 200, 300]"
:page-size="pagesize"
layout="total, sizes, prev, pager, next, jumper"
:total="recordTotal" style="background-color: #ECF5FF;">
</el-pagination>
</div>
</div>
<div v-show="if_show" style="text-align: center; width: 100%;;font-size: 14px;">
<el-tag type="warning" style="width: 100%;height: 50px;font-size: 14px;">用户没有本菜单权限!</el-tag>
</div>
<el-dialog
title="解码参数单位"
:visible.sync="dialogVisible"
width="30%"
>
<template>
<div class="text item">
<span style="margin-right: 20px;">压力</span>
<el-radio v-model="radio1" label="1" >Mpa</el-radio>
<el-radio v-model="radio1" label="2" >psi</el-radio>
</div> </div>
</template>
<div class="block">
<span class="demonstration" style="background-color: #ECF5FF;"></span> <template>
<el-pagination <div class="text item" style="margin-top: 20px;">
@size-change="handleSizeChange" <span style="margin-right: 20px;">温度</span>
@current-change="handleCurrentChange" <el-radio v-model="radio2" label="1" ></el-radio>
:current-page="currentPage" <el-radio v-model="radio2" label="2" ></el-radio>
:page-sizes="[50,100, 200, 300]" </div>
:page-size="pagesize" </template>
layout="total, sizes, prev, pager, next, jumper"
:total="recordTotal" style="background-color: #ECF5FF;"> <span slot="footer" class="dialog-footer">
</el-pagination> <el-button @click="dialogVisible = false"> </el-button>
</div> <el-button type="primary" @click="export_his"> </el-button>
</div> </span>
<div v-show="if_show" style="text-align: center; width: 100%;;font-size: 14px;"> </el-dialog>
<el-tag type="warning" style="width: 100%;height: 50px;font-size: 14px;">用户没有本菜单权限!</el-tag>
</div> </div>
`,
<el-dialog
title="解码参数单位"
:visible.sync="dialogVisible"
width="30%"
>
<template>
<div class="text item">
<span style="margin-right: 20px;">压力</span>
<el-radio v-model="radio1" label="1" >Mpa</el-radio>
<el-radio v-model="radio1" label="2" >psi</el-radio>
</div>
</template>
<template>
<div class="text item" style="margin-top: 20px;">
<span style="margin-right: 20px;">温度</span>
<el-radio v-model="radio2" label="1" ></el-radio>
<el-radio v-model="radio2" label="2" ></el-radio>
</div>
</template>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="export_his"> </el-button>
</span>
</el-dialog>
</div>
`,
data(){ data(){
// 获取当前屏幕的分辨率 // 获取当前屏幕的分辨率
let screenW = window.screen.width; let screenW = window.screen.width;
@ -189,6 +210,19 @@
if_show_et:false, if_show_et:false,
checked:false, checked:false,
// 新增:类型筛选相关
selectedTypes: [], // 选中的类型值数组,如 [0, 2, 5]
typeOptions: [
{ value: 0, label: '测斜' },
{ value: 1, label: '近钻头' },
{ value: 2, label: '电阻率' },
{ value: 3, label: '探管式方位伽马' },
{ value: 4, label: '钻铤式方位伽马' },
{ value: 5, label: '自然伽马' },
{ value: 6, label: '工程参数' },
{ value: 7, label: '振动粘滑' }
]
} }
}, },
mounted() { mounted() {
@ -223,26 +257,50 @@
console.log(error); console.log(error);
}); });
var objs; // 初始化加载数据
axios.post('/deescloud/get_well_history', { this.fetchData();
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
index: this.$data.currentPage,
count: this.$data.pagesize,
checked:this.$data.checked
})
.then(function (response) {
console.log(response.data);
objs = response.data.data;
rcnt = response.data.total;
_this.$data.tableData = objs;
_this.$data.recordTotal = rcnt;
})
.catch(function (error) {
console.log(error);
});
}, },
methods: { methods: {
// 新增:将选中的类型数组转换为位掩码
getTypeMask() {
let mask = 0;
if (this.selectedTypes && this.selectedTypes.length > 0) {
this.selectedTypes.forEach(val => {
mask |= (1 << val);
});
}
return mask;
},
// 新增:统一的查询数据方法
fetchData() {
var _this = this;
// 获取类型位掩码
const typeMask = this.getTypeMask();
axios.post('/deescloud/get_well_history', {
opuser: localStorage.getItem("online_user"),
opuser_uuid: localStorage.getItem("uuid"),
Wellname: this.input,
index: this.currentPage,
count: this.pagesize,
BeginTime: this.begin_t,
EndTime: this.end_t,
checked: this.checked,
type: typeMask // 新增:传递类型筛选参数
})
.then(function (response) {
console.log(response.data);
_this.tableData = response.data.data || [];
_this.recordTotal = response.data.total || 0;
})
.catch(function (error) {
console.log(error);
_this.$message.error('查询失败,请稍后重试');
});
},
export_his(){ export_his(){
this.$data.dialogVisible=false; this.$data.dialogVisible=false;
@ -279,9 +337,9 @@
document.getElementById("bt_serach").blur(); document.getElementById("bt_serach").blur();
this.$data.currentPage=1; this.currentPage = 1;
if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) { if (this.begin_t != '' && this.end_t != '' && this.begin_t > this.end_t) {
this.$message({ this.$message({
message: '结束时间必须在开始时间之后!', message: '结束时间必须在开始时间之后!',
type: 'warning', type: 'warning',
@ -290,105 +348,39 @@
return; return;
} }
var _this = this; // 调用统一的查询方法
this.fetchData();
var objs;
axios.post('/deescloud/get_well_history', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
Wellname: _search_name,
index: this.$data.currentPage,
count: this.$data.pagesize,
BeginTime:this.$data.begin_t,
EndTime:this.$data.end_t,
checked:this.$data.checked
})
.then(function (response) {
console.log(response.data);
objs = response.data.data;
rcnt = response.data.total;
_this.$data.tableData = objs;
_this.$data.recordTotal = rcnt;
})
.catch(function (error) {
console.log(error);
});
}, },
handleSizeChange(val) { handleSizeChange(val) {
//console.log(`每页 ${val} 条`); this.pagesize = val;
this.$data.pagesize = val; this.currentPage = 1;
if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) { if (this.begin_t != '' && this.end_t != '' && this.begin_t > this.end_t) {
this.$message({ this.$message({
message: '结束时间必须在开始时间之后!', message: '结束时间必须在开始时间之后!',
type: 'warning', type: 'warning',
duration: 1500 duration: 1500
});
return;
}
var _this = this;
var objs;
axios.post('/deescloud/get_well_history', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
Wellname: this.$data.input,
index: this.$data.currentPage,
count: this.$data.pagesize,
BeginTime:this.$data.begin_t,
EndTime:this.$data.end_t,
checked:this.$data.checked
})
.then(function (response) {
console.log(response.data);
objs = response.data.data;
rcnt = response.data.total;
_this.$data.tableData = objs;
_this.$data.recordTotal = rcnt;
})
.catch(function (error) {
console.log(error);
}); });
return;
}
this.fetchData();
}, },
handleCurrentChange(val) { handleCurrentChange(val) {
//console.log(`当前页: ${val}`); this.currentPage = val;
this.$data.currentPage = val;
if (this.begin_t != '' && this.end_t != '' && this.begin_t > this.end_t) {
if (this.$data.begin_t != '' && this.$data.end_t != '' && this.$data.begin_t>this.$data.end_t) { this.$message({
this.$message({ message: '结束时间必须在开始时间之后!',
message: '结束时间必须在开始时间之后!', type: 'warning',
type: 'warning', duration: 1500
duration: 1500
});
return;
}
var _this = this;
var objs;
axios.post('/deescloud/get_well_history', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
Wellname: this.$data.input,
index: this.$data.currentPage,
count: this.$data.pagesize,
BeginTime:this.$data.begin_t,
EndTime:this.$data.end_t,
checked:this.$data.checked
})
.then(function (response) {
console.log(response.data);
objs = response.data.data;
rcnt = response.data.total;
_this.$data.tableData = objs;
_this.$data.recordTotal = rcnt;
})
.catch(function (error) {
console.log(error);
}); });
return;
}
this.fetchData();
}, },
handleClick(row){ handleClick(row){
@ -478,6 +470,5 @@
console.log("max_flex_width:",max_flex_width); console.log("max_flex_width:",max_flex_width);
return max_flex_width + 'px' return max_flex_width + 'px'
}, },
} }
} }

View File

@ -408,7 +408,7 @@ export_pdf(row, is_memory = false) {
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var beginTime= ''; var beginTime= '';
var endTime = ''; var endTime = '';

View File

@ -76,11 +76,11 @@ var Welltypecomponent = {
:show-overflow-tooltip="true"> :show-overflow-tooltip="true">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="well_create_time" prop="well_create_time"
label="井创建时间" label="井创建时间"
:width="170"> :width="170">
</el-table-column> </el-table-column>
<el-table-column label="操作" :width="180"> <el-table-column label="操作" :width="180">
<template slot-scope="scope"> <template slot-scope="scope">
@ -390,7 +390,7 @@ var Welltypecomponent = {
handleSizeChange(val) { handleSizeChange(val) {
this.$data.pagesize = val; this.$data.pagesize = val;
this.$data.currentPage = 1;
var beginTime= ''; var beginTime= '';
var endTime = ''; var endTime = '';

File diff suppressed because one or more lines are too long

610
tool_detail-en.html Normal file
View File

@ -0,0 +1,610 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Summary of Instrument Information</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
body {
background: white;
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
.container {
width: 100%;
max-width: 1200px;
background: white;
padding: 40px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
}
header {
text-align: center;
margin-bottom: 40px;
padding-bottom: 20px;
border-bottom: 1px solid #eee;
}
h1 {
font-size: 2.5rem;
font-weight: 600;
color: #222;
margin-bottom: 10px;
}
.subtitle {
font-size: 1.1rem;
color: #666;
}
.info-section {
margin-bottom: 30px;
padding: 20px;
border: 1px solid #e0e0e0;
border-radius: 5px;
}
.file-item a {
font-size: 14px;
text-decoration: none;
}
/* 基本信息无边框表格样式 */
.basic-info-table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
margin-left: auto;
margin-right: auto;
}
.basic-info-table th,
.basic-info-table td {
padding: 15px 20px;
text-align: left;
font-size: 1.1rem;
font-weight: 500;
color: #333;
}
.basic-info-table th {
background-color: transparent;
}
/* 其他表格样式保持不变 */
.info-table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
table-layout: fixed;
}
.info-table th,
.info-table td {
padding: 15px;
text-align: center;
border: 1px solid #e0e0e0;
}
.info-table th {
background-color: #f5f7fa;
font-weight: 400;
color: #333;
}
.info-table td {
font-size: 1.1rem;
font-weight: 500;
color: #222;
}
/* 固定宽度列样式 */
.fixed-width-260 {
width: 200px;
}
.fixed-width-160 {
width: 160px;
}
.fixed-width-180 {
width: 180px;
}
.fixed-width-90 {
width: 90px;
}
.fixed-width-100 {
width: 100px;
}
.fixed-width-80 {
width: 80px;
}
.fixed-width-40 {
width: 40px;
}
/* 表格内容换行样式 */
.table-cell-wrap {
word-wrap: break-word;
word-break: break-all;
white-space: normal;
}
.info-row {
display: flex;
margin-bottom: 25px;
flex-wrap: wrap;
}
.info-item {
width: 100%;
margin-bottom: 20px;
}
.info-label {
font-size: 1.1rem;
font-weight: 500;
color: #333;
margin-bottom: 8px;
text-align: center;
}
.info-value {
font-size: 1.1rem;
color: #333;
padding: 8px 0;
text-align: center;
}
.stat-card {
border: 1px solid #e0e0e0;
border-radius: 4px;
padding: 15px;
margin-top: 10px;
text-align: center;
}
.stat-title {
font-size: 1rem;
color: #555;
margin-bottom: 10px;
}
.stat-value {
font-size: 1.8rem;
font-weight: 700;
}
footer {
text-align: center;
padding: 20px 0;
color: #777;
font-size: 0.9rem;
border-top: 1px solid #eee;
margin-top: 40px;
}
/* 内部组件样式 */
.component-item {
display: flex;
margin-bottom: 15px;
padding: 12px 0;
border-bottom: 1px solid #f0f0f0;
}
.component-item:last-child {
border-bottom: none;
}
.component-name {
width: 150px;
font-weight: 400;
color: #444;
padding-right: 10px;
}
.component-detail {
flex: 1;
color: #666;
}
.quality-item {
margin-bottom: 15px;
padding: 10px 0;
border-bottom: 1px solid #f0f0f0;
}
.quality-header {
display: flex;
align-items: center;
width: 100%;
}
.quality-title {
font-size: 1.1rem;
color: #333;
font-weight: 500;
width: auto;
padding-right: 10px;
margin-left: 40px;
flex-shrink: 0;
}
.quality-display {
flex: 1;
padding: 6px 12px;
min-height: 20px;
margin-right: 10px;
}
.edit-btn {
padding: 6px 12px;
background-color: #409eff;
border: 1px solid #409eff;
border-radius: 4px;
color: white;
font-size: 14px;
cursor: pointer;
flex-shrink: 0;
}
.edit-input {
flex: 1;
padding: 6px 12px;
border: 1px solid #dcdfe6;
border-radius: 4px;
font-size: 14px;
margin-right: 10px;
min-width: 200px;
}
.confirm-btn {
background-color: #67c23a;
border-color: #67c23a;
}
/* 文件列表样式 */
.file-list {
margin-top: 10px;
text-align: left;
}
.file-item {
display: flex;
align-items: center;
padding: 5px 0;
}
.file-item a {
color: #409eff;
text-decoration: none;
margin-left: 5px;
}
.file-item a:hover {
text-decoration: underline;
}
.file-icon {
color: #409eff;
margin-right: 5px;
}
/* 文件列表样式 */
.file-list {
margin-top: 10px;
text-align: left;
}
.file-item {
display: flex;
align-items: center;
padding: 5px 0;
}
.file-item a {
color: #409eff;
text-decoration: none;
margin-left: 5px;
}
.file-item a:hover {
text-decoration: underline;
}
.file-icon {
color: #409eff;
margin-right: 5px;
}
/* 文件列样式 */
.file-column {
text-align: left;
}
.upload-button {
background-color: #409eff;
border: 1px solid #409eff;
border-radius: 4px;
color: white;
padding: 6px 12px;
font-size: 14px;
cursor: pointer;
transition: all 0.3s;
}
.upload-button:hover {
background-color: #66b1ff;
border-color: #66b1ff;
}
.upload-button:disabled {
background-color: #a0cfff;
border-color: #a0cfff;
cursor: not-allowed;
}
.fixed-width-40 {
width: 50px;
}
.fixed-width-80 {
width: 80px;
}
.fixed-width-140 {
width: 140px;
}
.fixed-width-130 {
width: 130px;
}
.fixed-width-180 {
width: 180px;
}
.link-container {
display: flex;
align-items: center;
flex-wrap: wrap;
}
.link-display, .link-input {
flex: 1;
min-width: 0; /* 允许输入框收缩 */
white-space: normal; /* 允许换行 */
word-wrap: break-word; /* 长单词换行 */
}
.edit-link-btn, .confirm-link-btn {
flex-shrink: 0; /* 防止按钮被压缩 */
margin-left: 5px;
}
/* 当输入框显示时,使用不同的布局 */
.link-input {
margin-right: 5px;
}
.confirm-link-btn {
margin-left: 0;
}
@media (max-width: 768px) {
.container {
padding: 20px;
}
h1 {
font-size: 2rem;
}
.info-table th,
.info-table td {
padding: 10px 5px;
font-size: 0.9rem;
}
.info-table td {
font-size: 1rem;
}
.component-item {
flex-direction: column;
}
.component-name {
width: 100%;
margin-bottom: 5px;
}
}
</style>
</head>
<script src="scripts/checkuser.js"></script>
<script src="./scripts/tool_detail-en.js"></script>
<script src="scripts/axiosmin.js"></script>
<script src="./scripts/polyfill.js"></script>
<script src="./scripts/vue.min.js"></script>
<script src="./scripts/vue-router.js"></script>
<body>
<div class="container">
<header>
<h1></h1>
</header>
<div class="content">
<div style="text-align: left; margin-bottom: 20px; font-size: 1.2rem; font-weight: 400;">
Instrument Name: <span id="seriesNum"></span>
</div>
<div class="info-section">
<h2 class="info-label">Basic Information</h2>
<div style="padding: 0 20px;">
<table class="basic-info-table">
<tbody>
<tr>
<th>Date Of Manufacture:</th>
<td></td>
<th>Date Of Warehousing:</th>
<td></td>
</tr>
<tr>
<td>Total Working Time:</td>
<td></td>
<td>Current Working Time:</td>
<td></td>
</tr>
<tr>
<td>Firmware Version:</td>
<td colspan="3"></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="info-section">
<h2 class="info-label">Product Quality Inspection Record</h2>
<div style="padding: 15px 0;">
<!-- 生产过程记录 -->
<div class="quality-item">
<div class="quality-header">
<div class="quality-title">Production Process Record:</div>
<div class="quality-display" id="processRecordDisplay"></div>
<button id="editProcessRecord" class="edit-btn" style="margin-right: 120px;">Redact</button>
</div>
</div>
<!-- 生产过程检验 -->
<div class="quality-item">
<div class="quality-header">
<div class="quality-title">Production Process Inspection:</div>
<div class="quality-display" id="processInspectionDisplay"></div>
<button id="editProcessInspection" class="edit-btn" style="margin-right: 120px;">Redact</button>
</div>
</div>
<!-- 成品检验记录 -->
<div class="quality-item">
<div class="quality-header">
<div class="quality-title">Final Inspection Display:</div>
<div class="quality-display" id="finalInspectionDisplay"></div>
<button id="editFinalInspection" class="edit-btn" style="margin-right: 120px;">Redact</button>
</div>
</div>
</div>
</div>
<div class="info-section">
<h2 class="info-label">Summary Of Instrument Construction</h2>
<table class="info-table">
<thead>
<tr>
<th class="table-cell-wrap">Well Name</th>
<th class="table-cell-wrap">Well Work Situation</th>
<th class="fixed-width-130 table-cell-wrap">Well Section</th>
<th class="table-cell-wrap">Max Temp</th>
<th class="fixed-width-130 table-cell-wrap">Max Pressure</th>
<th class="fixed-width-80 table-cell-wrap">Status</th>
<th class="table-cell-wrap">Person</th>
<th class="table-cell-wrap">File</th>
<th class="fixed-width-180 table-cell-wrap">Link</th>
</tr>
</thead>
<tbody id="wellDataBody">
</tbody>
</table>
</div>
<div class="info-section">
<div style="display: flex; justify-content: space-between; align-items: center;">
<div style="flex: 1;"></div>
<h2 class="info-label" style="flex: 1; text-align: center;">Maintenance And Repair Situation</h2>
<div style="flex: 1; display: flex; justify-content: flex-end;">
<button id="bt_add" style="margin-left: 5px; padding: 8px 16px; background-color: #67c23a; border: 1px solid #67c23a; border-radius: 4px; color: white; font-size: 14px; cursor: pointer; display: inline-flex; align-items: center;" onclick="addMaintenanceRecord()">
<i style="margin-right: 5px;">
<svg viewBox="0 0 1024 1024" width="14" height="14" fill="currentColor">
<path d="M512 128C304.3 128 128 304.3 128 512s176.3 384 384 384 384-176.3 384-384S719.7 128 512 128z m0 64c176.7 0 320 143.3 320 320s-143.3 320-320 320S192 688.7 192 512 335.3 192 512 192z m48 304h-96v96h-96v-96H320v-96h96v-96h96v96h96v96z"></path>
</svg>
</i>
Add
</button>
</div>
</div>
<table class="info-table">
<thead>
<tr>
<th class="fixed-width-100 table-cell-wrap">Time</th>
<th class="fixed-width-40 table-cell-wrap">Level</th>
<th class="fixed-width-160 table-cell-wrap">Maintenance Info</th>
<th class="fixed-width-90 table-cell-wrap">Maintenance Person</th>
<th class="fixed-width-160 table-cell-wrap">File</th>
<th class="fixed-width-260 table-cell-wrap">Link</th>
</tr>
</thead>
<tbody id="maintenanceDataBody">
<tr>
<td colspan="6" style="text-align: center;">No Data</td>
</tr>
</tbody>
</table>
</div>
<div class="info-section">
<h2 class="info-label">Internal Components</h2>
<div class="no-data">No Data</div>
</div>
<div class="info-section">
<h2 class="info-label">The Department To Which The Instrument Belongs</h2>
<div class="component-item">
<div class="component-name" id="deptContainer" style="width: auto; white-space: nowrap;">No Data</div>
</div>
</div>
</div>
<footer>
<p>All rights reserved © Beijing Liuhe Weiye Technology Co., LTD</p>
</footer>
</div>
<script>
// 获取URL参数
function getUrlParameter(name) {
name = name.replace(/[\[\]]/g, '\\$&');
const regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)');
const results = regex.exec(window.location.href);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
// 设置序列号
document.addEventListener('DOMContentLoaded', function() {
const seriesNum = getUrlParameter('series');
const instrument = getUrlParameter('instrument');
if (seriesNum) {
document.getElementById('seriesNum').textContent = seriesNum + '1'+ instrument;
}
});
</script>
</body>
</html>

View File

@ -4,284 +4,203 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>仪器信息汇总</title> <title>仪器信息汇总</title>
<script src="./scripts/polyfill.js"></script>
<script src="./scripts/vue.min.js"></script>
<script src="./scripts/vue-router.js"></script>
<script src="./scripts/elementindex.js"></script>
<link rel="stylesheet" href="./scripts/elementindex.css">
<script src="scripts/axiosmin.js"></script>
<script src="scripts/checkuser.js"></script>
<style> <style>
* { * {
margin: 0; margin: 0;
padding: 0; padding: 0;
box-sizing: border-box; box-sizing: border-box;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
} }
body { body {
background: white; background-color: rgb(18,25,34);
min-height: 100vh; margin: 0;
display: flex; font-family: "Microsoft YaHei", Arial, Helvetica, sans-serif, "宋体";
justify-content: center; color: rgb(255,255,0);
align-items: center; }
.homeWrap {
padding: 20px; padding: 20px;
} }
.container { .page-header {
width: 100%;
max-width: 1200px;
background: white;
padding: 40px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
}
header {
text-align: center; text-align: center;
margin-bottom: 40px; margin-bottom: 20px;
padding-bottom: 20px; padding-bottom: 15px;
border-bottom: 1px solid #eee; border-bottom: 1px solid #3C8DBC;
} }
h1 { .page-title {
font-size: 2.5rem; font-size: 24px;
font-weight: 600; font-weight: bolder;
color: #222; color: rgb(255,255,0);
margin-bottom: 10px; margin-bottom: 10px;
} }
.subtitle { .page-subtitle {
font-size: 1.1rem; font-size: 16px;
color: #666; color: rgb(255,255,200);
} }
.info-section { .instrument-info {
margin-bottom: 30px; background-color: #fdf6ec;
padding: 20px; color: #e6a23c;
border: 1px solid #e0e0e0; padding: 12px 20px;
border-radius: 5px; border-radius: 4px;
} margin-bottom: 20px;
/* 基本信息无边框表格样式 */
.basic-info-table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
margin-left: auto;
margin-right: auto;
}
.basic-info-table th,
.basic-info-table td {
padding: 15px 20px;
text-align: left;
}
.basic-info-table th {
background-color: transparent;
font-weight: 600;
color: #333;
}
.basic-info-table td {
font-size: 1.1rem;
font-weight: 500;
color: #222;
}
/* 其他表格样式保持不变 */
.info-table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
.info-table th,
.info-table td {
padding: 15px;
text-align: center; text-align: center;
border: 1px solid #e0e0e0; font-size: 16px;
}
.info-table th {
background-color: #f5f7fa;
font-weight: 600;
color: #333;
}
.info-table td {
font-size: 1.1rem;
font-weight: 500; font-weight: 500;
color: #222;
} }
.info-row { .section-card {
margin-bottom: 20px;
border: 1px solid #3C8DBC;
border-radius: 4px;
background: rgba(30, 40, 50, 0.8);
}
.section-header {
background-color: #00a2e8;
padding: 12px 20px;
color: rgb(255,255,0);
font-size: 16px;
font-weight: 600;
border-bottom: 1px solid #3C8DBC;
}
.section-content {
padding: 15px;
}
/* 表格样式 - 与lcm.html完全一致 */
.el-table {
font-family: "Microsoft YaHei", Arial, Helvetica, sans-serif, "宋体";
background-color: rgb(18,25,34);
}
.el-table th {
background-color: #00a2e8;
padding: 8px 0;
}
.el-table th>.cell {
color: rgb(255,255,0);
text-align: center;
font-weight: 600;
padding: 0;
}
.el-table td {
background-color: rgb(18,25,34);
border-right: 1px solid #EBEEF5;
padding: 4px 0;
}
.el-table td>.cell {
color: rgb(255,255,0);
text-align: center;
font-size: 13px;
padding: 3px 0;
}
.el-table .warning-row {
color: #ff0000;
}
/* 分页样式 */
.pagination-container {
margin-top: 15px;
background-color: #ECF5FF;
padding: 10px;
border-radius: 4px;
}
/* 按钮样式 */
.action-buttons {
display: flex; display: flex;
margin-bottom: 25px; gap: 10px;
margin-bottom: 15px;
flex-wrap: wrap; flex-wrap: wrap;
} }
.info-item {
width: 100%;
margin-bottom: 20px;
}
.info-label {
font-size: 1.1rem;
font-weight: 500;
color: #555;
margin-bottom: 8px;
text-align: center;
}
.info-value {
font-size: 1.4rem;
font-weight: 600;
color: #222;
padding: 8px 0;
text-align: center;
}
.stat-card {
border: 1px solid #e0e0e0;
border-radius: 4px;
padding: 15px;
margin-top: 10px;
text-align: center;
}
.stat-title {
font-size: 1rem;
color: #555;
margin-bottom: 10px;
}
.stat-value {
font-size: 1.8rem;
font-weight: 700;
}
footer {
text-align: center;
padding: 20px 0;
color: #777;
font-size: 0.9rem;
border-top: 1px solid #eee;
margin-top: 40px;
}
/* 内部组件样式 */
.component-item {
display: flex;
margin-bottom: 15px;
padding: 12px 0;
border-bottom: 1px solid #f0f0f0;
}
.component-item:last-child {
border-bottom: none;
}
.component-name {
width: 150px;
font-weight: 600;
color: #444;
padding-right: 10px;
}
.component-detail {
flex: 1;
color: #666;
}
.quality-item { .quality-item {
margin-bottom: 15px; margin-bottom: 15px;
padding: 10px 0; padding: 12px;
border-bottom: 1px solid #f0f0f0; border: 1px solid #3C8DBC;
border-radius: 4px;
background: rgba(40, 50, 60, 0.6);
} }
.quality-header { .quality-header {
display: flex; display: flex;
align-items: center; align-items: center;
width: 100%; gap: 15px;
} }
.quality-title { .quality-title {
font-size: 1.1rem; color: rgb(255,255,200);
color: #333; font-weight: 500;
width: 120px; min-width: 150px;
flex-shrink: 0;
} }
.quality-display { .quality-display {
flex: 1; flex: 1;
color: rgb(255,255,0);
padding: 6px 12px; padding: 6px 12px;
min-height: 20px; background: rgba(30, 40, 50, 0.8);
margin-right: 10px; border-radius: 3px;
min-height: 32px;
display: flex;
align-items: center;
} }
.edit-btn { .no-data {
padding: 6px 12px; text-align: center;
background-color: #409eff; color: rgb(255,255,200);
border: 1px solid #409eff; padding: 30px;
font-style: italic;
}
.component-list {
display: grid;
gap: 10px;
}
.component-item {
display: flex;
padding: 10px 15px;
border: 1px solid #3C8DBC;
border-radius: 4px; border-radius: 4px;
color: white; background: rgba(40, 50, 60, 0.6);
font-size: 14px;
cursor: pointer;
flex-shrink: 0;
} }
.edit-input { .component-name {
color: rgb(255,255,200);
font-weight: 500;
min-width: 120px;
}
.component-detail {
color: rgb(255,255,0);
flex: 1; flex: 1;
padding: 6px 12px;
border: 1px solid #dcdfe6;
border-radius: 4px;
font-size: 14px;
margin-right: 10px;
min-width: 200px;
}
.confirm-btn {
background-color: #67c23a;
border-color: #67c23a;
}
/* 文件列表样式 */
.file-list {
margin-top: 10px;
text-align: left;
}
.file-item {
display: flex;
align-items: center;
padding: 5px 0;
}
.file-item a {
color: #409eff;
text-decoration: none;
margin-left: 5px;
}
.file-item a:hover {
text-decoration: underline;
}
.file-icon {
color: #409eff;
margin-right: 5px;
}
/* 文件列表样式 */
.file-list {
margin-top: 10px;
text-align: left;
} }
.file-item { .file-item {
display: flex; display: flex;
align-items: center; align-items: center;
padding: 5px 0; margin-bottom: 5px;
} }
.file-item a { .file-item a {
color: #409eff; color: #66b1ff;
text-decoration: none; text-decoration: none;
margin-left: 5px; margin-left: 5px;
} }
@ -290,242 +209,346 @@
text-decoration: underline; text-decoration: underline;
} }
.file-icon {
color: #409eff;
margin-right: 5px;
}
/* 文件列样式 */
.file-column {
text-align: left;
}
.upload-button {
background-color: #409eff;
border: 1px solid #409eff;
border-radius: 4px;
color: white;
padding: 6px 12px;
font-size: 14px;
cursor: pointer;
transition: all 0.3s;
}
.upload-button:hover {
background-color: #66b1ff;
border-color: #66b1ff;
}
.upload-button:disabled {
background-color: #a0cfff;
border-color: #a0cfff;
cursor: not-allowed;
}
@media (max-width: 768px) { @media (max-width: 768px) {
.container { .homeWrap {
padding: 20px; padding: 10px;
} }
h1 { .quality-header {
font-size: 2rem;
}
.info-table th,
.info-table td {
padding: 10px 5px;
font-size: 0.9rem;
}
.info-table td {
font-size: 1rem;
}
.component-item {
flex-direction: column; flex-direction: column;
align-items: flex-start;
gap: 10px;
} }
.component-name { .quality-title {
width: 100%; min-width: auto;
margin-bottom: 5px; }
.action-buttons {
flex-direction: column;
} }
} }
</style> </style>
</head> </head>
<script src="./scripts/tool_detail.js"></script>
<script src="scripts/axiosmin.js"></script>
<script src="./scripts/polyfill.js"></script>
<script src="./scripts/vue.min.js"></script>
<script src="./scripts/vue-router.js"></script>
<body> <body>
<div class="container"> <div id="app" class="homeWrap">
<header> <!-- 页面头部 -->
<h1>仪器汇总</h1> <div class="page-header">
</header> <div class="page-title">DEES 测井作业管理云系统 V1.0.1</div>
<div class="page-subtitle">仪器信息汇总</div>
<div class="content">
<div style="text-align: left; margin-bottom: 20px; font-size: 1.2rem; font-weight: 600;">
仪器名称: <span id="seriesNum"></span>
</div>
<div class="info-section">
<h2 class="info-label">基本信息</h2>
<div style="padding: 0 20px;">
<table class="basic-info-table">
<tbody>
<tr>
<th>出厂日期</th>
<td></td>
<th>入库日期</th>
<td></td>
</tr>
<tr>
<td>累计工作时间</td>
<td></td>
<td>当次工作时间</td>
<td></td>
</tr>
<tr>
<td>固件版本号</td>
<td colspan="3"></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="info-section">
<h2 class="info-label">质检记录</h2>
<div style="padding: 15px 0;">
<!-- 生产过程记录 -->
<div class="quality-item">
<div class="quality-header">
<div class="quality-title">生产过程记录</div>
<div class="quality-display" id="processRecordDisplay"></div>
<button id="editProcessRecord" class="edit-btn">编辑</button>
</div>
</div>
<!-- 生产过程检验 -->
<div class="quality-item">
<div class="quality-header">
<div class="quality-title">生产过程检验</div>
<div class="quality-display" id="processInspectionDisplay"></div>
<button id="editProcessInspection" class="edit-btn">编辑</button>
</div>
</div>
<!-- 成品检验记录 -->
<div class="quality-item">
<div class="quality-header">
<div class="quality-title">成品检验记录</div>
<div class="quality-display" id="finalInspectionDisplay"></div>
<button id="editFinalInspection" class="edit-btn">编辑</button>
</div>
</div>
</div>
</div>
<div class="info-section">
<h2 class="info-label">仪器施工汇总</h2>
<table class="info-table">
<thead>
<tr>
<th>井名</th>
<th>入井工作情况</th>
<th>施工井段</th>
<th>最高工作温度</th>
<th>最高承压</th>
<th>仪器工作情况</th>
<th>上井人</th>
<th>文件</th>
</tr>
</thead>
<tbody id="wellDataBody">
</tbody>
</table>
</div>
<div class="info-section">
<div style="display: flex; justify-content: space-between; align-items: center;">
<h2 class="info-label">维保情况</h2>
<button id="bt_add" style="margin-left: 5px; padding: 8px 16px; background-color: #409eff; border: 1px solid #409eff; border-radius: 4px; color: white; font-size: 14px; cursor: pointer; display: inline-flex; align-items: center;" onclick="addMaintenanceRecord()">
<i style="margin-right: 5px;">
<svg viewBox="0 0 1024 1024" width="14" height="14" fill="currentColor">
<path d="M512 128C304.3 128 128 304.3 128 512s176.3 384 384 384 384-176.3 384-384S719.7 128 512 128z m0 64c176.7 0 320 143.3 320 320s-143.3 320-320 320S192 688.7 192 512 335.3 192 512 192z m48 304h-96v96h-96v-96H320v-96h96v-96h96v96h96v96z"></path>
</svg>
</i>
新增维保记录
</button>
</div>
<table class="info-table">
<thead>
<tr>
<th>时间</th>
<th>等级</th>
<th>维保信息</th>
<th>维保人</th>
</tr>
</thead>
<tbody id="maintenanceDataBody">
<!-- 动态数据将在这里插入 -->
</tbody>
</table>
</div>
<div class="info-section">
<h2 class="info-label">内部组件</h2>
<div class="component-item">
<div class="component-name">伽马传感器:</div>
<div class="component-detail">编码 GH2025-001序列号 SN-GM-0625A</div>
</div>
<div class="component-item">
<div class="component-name">温度传感器:</div>
<div class="component-detail">编码 TP2025-002序列号 SN-TP-0521B</div>
</div>
<div class="component-item">
<div class="component-name">压力传感器:</div>
<div class="component-detail">编码 PS2025-003序列号 SN-PS-0415C</div>
</div>
</div>
<div class="info-section">
<h2 class="info-label">仪器所属部门</h2>
<div class="component-item">
<div class="component-name" id="deptContainer" style="width: auto; white-space: nowrap;">暂无部门信息</div>
</div>
</div>
</div> </div>
<footer> <!-- 仪器基本信息 -->
<p>版权所有 © 北京六合伟业科技股份有限公司</p> <div class="instrument-info">
</footer> 仪器名称: <span id="seriesNum"></span>
</div>
<el-container style="gap: 20px;">
<!-- 左侧区域 -->
<el-aside style="width: 45%;">
<!-- 基本信息 -->
<div class="section-card">
<div class="section-header">基本信息</div>
<div class="section-content">
<div style="padding: 0 15px;">
<table class="basic-info-table">
<tbody>
<tr>
<th>出厂日期:</th>
<td></td>
<th>入库日期:</th>
<td></td>
</tr>
<tr>
<td>累计工作时间:</td>
<td></td>
<td>当次累计工作时间:</td>
<td></td>
</tr>
<tr>
<td>固件版本号:</td>
<td colspan="3"></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- 产品质检记录 -->
<div class="section-card">
<div class="section-header">产品质检记录</div>
<div class="section-content">
<div style="padding: 15px 0;">
<!-- 生产过程记录 -->
<div class="quality-item">
<div class="quality-header">
<div class="quality-title">生产过程记录:</div>
<div class="quality-display" id="processRecordDisplay"></div>
<button id="editProcessRecord" class="edit-btn" style="margin-right: 120px;">编辑</button>
</div>
</div>
<!-- 生产过程检验 -->
<div class="quality-item">
<div class="quality-header">
<div class="quality-title">生产过程检验:</div>
<div class="quality-display" id="processInspectionDisplay"></div>
<button id="editProcessInspection" class="edit-btn" style="margin-right: 120px;">编辑</button>
</div>
</div>
<!-- 成品检验记录 -->
<div class="quality-item">
<div class="quality-header">
<div class="quality-title">成品检验记录:</div>
<div class="quality-display" id="finalInspectionDisplay"></div>
<button id="editFinalInspection" class="edit-btn" style="margin-right: 120px;">编辑</button>
</div>
</div>
</div>
</div>
</div>
<!-- 内部组件 -->
<div class="section-card">
<div class="section-header">内部组件</div>
<div class="section-content">
<div class="no-data">暂无数据</div>
</div>
</div>
<!-- 仪器所属部门 -->
<div class="section-card">
<div class="section-header">仪器所属部门</div>
<div class="section-content">
<div class="component-item">
<div class="component-name" id="deptContainer" style="width: auto; white-space: nowrap;">暂无部门信息</div>
</div>
</div>
</div>
</el-aside>
<!-- 右侧区域 -->
<el-main style="width: 55%; padding: 0; margin: 0;">
<!-- 仪器施工汇总 -->
<div class="section-card">
<div class="section-header" style="display: flex; justify-content: space-between; align-items: center;">
<span>仪器施工汇总</span>
</div>
<div class="section-content">
<el-table
style="background-color: #121922;"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
:height="tHeight"
:cell-style="{background:'#121922'}"
border>
<el-table-column
prop="wellname"
label="井名"
width="80"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="workStatus"
label="入井工作情况"
width="100"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="workSection"
label="施工井段"
width="100"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="maxTemp"
label="最高工作温度"
width="80">
</el-table-column>
<el-table-column
prop="maxPressure"
label="最高承压"
width="80">
</el-table-column>
<el-table-column
prop="instrumentStatus"
label="仪器工作情况"
width="80">
</el-table-column>
<el-table-column
prop="worker"
label="上井人"
width="100">
</el-table-column>
<el-table-column
prop="files"
label="文件"
width="160"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="links"
label="链接"
width="260"
:show-overflow-tooltip="true">
</el-table-column>
</el-table>
<div class="pagination-container">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[50,100, 200, 300]"
:page-size="pagesize"
layout="total, sizes, prev, pager, next, jumper"
:total="recordTotal"
style="background-color: #ECF5FF;">
</el-pagination>
</div>
</div>
</div>
<!-- 维保情况 -->
<div class="section-card">
<div class="section-header" style="display: flex; justify-content: space-between; align-items: center;">
<span>维保情况</span>
<el-button id="bt_add" style="margin-left: 5px;" plain type="primary" icon="el-icon-circle-plus-outline" @click="addMaintenanceRecord()">新增维保记录</el-button>
</div>
<div class="section-content">
<el-table
style="background-color: #121922;"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
:height="tHeight"
:cell-style="{background:'#121922'}"
border>
<el-table-column
prop="time"
label="时间"
width="100">
</el-table-column>
<el-table-column
prop="level"
label="等级"
width="40">
</el-table-column>
<el-table-column
prop="info"
label="维保信息"
width="180"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="maintainer"
label="维保人"
width="80">
</el-table-column>
<el-table-column
prop="files"
label="文件"
width="160"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="links"
label="链接"
width="260"
:show-overflow-tooltip="true">
</el-table-column>
</el-table>
<div class="pagination-container">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[50,100, 200, 300]"
:page-size="pagesize"
layout="total, sizes, prev, pager, next, jumper"
:total="recordTotal"
style="background-color: #ECF5FF;">
</el-pagination>
</div>
</div>
</div>
</el-main>
</el-container>
<!-- 底部版权 -->
<div style="text-align: center; padding: 20px 0; color: rgb(255,255,200); font-size: 12px; border-top: 1px solid #3C8DBC; margin-top: 20px;">
<span>版权所有 © 北京六合伟业科技股份有限公司</span>
</div>
</div> </div>
<script>
<script> new Vue({
// 获取URL参数 el: '#app',
function getUrlParameter(name) { data() {
name = name.replace(/[\[\]]/g, '\\$&'); return {
const regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'); // 仅保留必要的空数据结构
const results = regex.exec(window.location.href); tableData: [],
if (!results) return null; currentPage: 1,
if (!results[2]) return ''; pagesize: 50,
return decodeURIComponent(results[2].replace(/\+/g, ' ')); recordTotal: 0,
} tHeight: 400
}
// 设置序列号 },
document.addEventListener('DOMContentLoaded', function() { mounted() {
const seriesNum = getUrlParameter('series'); // 仅保留原有的设置仪器名称的逻辑
if (seriesNum) { const seriesNum = this.getUrlParameter('series');
document.getElementById('seriesNum').textContent = seriesNum; const instrument = this.getUrlParameter('instrument');
} if (seriesNum) {
}); document.getElementById('seriesNum').textContent = seriesNum + '-' + instrument;
</script> }
// 设置表格高度
this.calculateTableHeight();
window.addEventListener('resize', this.calculateTableHeight);
},
beforeDestroy() {
window.removeEventListener('resize', this.calculateTableHeight);
},
methods: {
// 获取URL参数
getUrlParameter(name) {
name = name.replace(/[\[\]]/g, '\\$&');
const regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)');
const results = regex.exec(window.location.href);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, ' '));
},
// 计算表格高度
calculateTableHeight() {
const windowHeight = window.innerHeight;
this.tHeight = windowHeight - 400;
},
// 分页处理 - 空方法由外部JS文件实现
handleSizeChange(val) {
// 由外部JS文件实现
},
handleCurrentChange(val) {
// 由外部JS文件实现
},
// 新增维保记录 - 空方法由外部JS文件实现
addMaintenanceRecord() {
// 由外部JS文件实现
}
}
});
</script>
<!-- 原有的脚本引入 -->
<script src="./scripts/tool_detail.js"></script>
</body> </body>
</html> </html>