var devcomponent = {
template:`
井位
设备
搜索
新增
搜索
导出仪器明细
导出井位明细
详情
导出
修改
删除
`,
data(){
// 获取当前屏幕的分辨率
let screenW = window.screen.width;
let screenH = window.innerHeight;
console.log("screen width:",screenW);
console.log("screen height:",screenH);
return {
tHeight1: screenH * 0.5,
tableData: [],
input: '',
currentPage: 1,
pagesize: 50,
recordTotal: 0,
radio1: '1',
// 设备列表相关数据
devListTableData: [],
devSearchForm: {
sid: [],
iid: [],
wellname: '',
wellnameList: [],
engineerList: [],
in_time_start: '',
in_time_end: ''
},
// 设备筛选下拉选项
devSidOptions: [],
devIidOptions: [],
devWellnameOptions: [],
devEngineerOptions: [],
devCurrentPage: 1,
devPagesize: 50,
devRecordTotal: 0,
pdf_visible:false,
dev_tableData:[],
wellnames:[],
add_visible:false,
update_visible:false,
form: {
id:0,
wellname:'',
sid:'',
iid:'',
ver: '',
p_date:'',
cal_date:'',
total_wt:'',
cur_wt:'',
repair_cnt:'',
region:'',
location:'',
responsible:''
},
rules: {
wellname: [
{ required: true, message: '系列号不可为空', trigger: 'blur' }
],
sid: [
{ required: true, message: '系列号不可为空', trigger: 'blur' }
],
iid: [
{ required: true, message: '编码不可为空', trigger: 'blur' }
],
},
if_show_bt:true,
if_show_et:false,
ps_info:'',
// 日期选择器配置
startTimeOptions: {
disabledDate: (time) => {
if (this.devSearchForm.in_time_end) {
return time.getTime() > new Date(this.devSearchForm.in_time_end).getTime();
}
return false;
}
},
endTimeOptions: {
disabledDate: (time) => {
if (this.devSearchForm.in_time_start) {
return time.getTime() < new Date(this.devSearchForm.in_time_start).getTime();
}
return false;
}
},
}
},
mounted() {
var _this = this;
this.getQueryWellData();
this.getWell();
axios.post('/deescloud/get_page_setting', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
})
.then(function (response) {
if(response.data.r3=="1"){
_this.$data.ps_info = response.data;
_this.$data.if_show_bt=true;
_this.$data.if_show_et=false;
}else{
_this.$data.if_show_et=true;
_this.$data.if_show_bt=false;
}
})
.catch(function (error) {
console.log(error);
});
// 获取设备筛选选项
this.getDevFilterOptions();
// 初始加载时自动执行查询,传入空字符串以获取所有数据或默认数据
// 直接调用,不依赖 nextTick,因为 axios 请求不依赖 DOM 渲染
this.getWell('');
},
methods: {
getQueryWellData() {
var _this = this;
axios.post('/deescloud/getQueryWell', {
opuser: localStorage.getItem("online_user"),
opuser_uuid: localStorage.getItem("uuid")
})
.then(function (response) {
console.log("getQueryWell 响应参数:", response.data);
if (response.data && response.data.code === 0 && response.data.data) {
const data = response.data.data;
// 映射井名称选项
if (data.wellNames && Array.isArray(data.wellNames)) {
_this.devWellnameOptions = data.wellNames.map(name => ({
value: name,
label: name
}));
}
// 映射系列号选项
if (data.series && Array.isArray(data.series)) {
_this.devSidOptions = data.series.map(sid => ({
value: sid,
label: sid
}));
}
// 映射编号/仪器选项
if (data.instruments && Array.isArray(data.instruments)) {
_this.devIidOptions = data.instruments.map(inst => ({
value: inst,
label: inst
}));
}
// 映射工程师选项
if (data.engineers && Array.isArray(data.engineers)) {
_this.devEngineerOptions = data.engineers.map(engineer => ({
value: engineer,
label: engineer
}));
}
// 注意:locations 目前前端模板中没有对应的 select 绑定变量,
// 如果后续需要添加所在地和工程师的下拉筛选,需先在 data 中定义对应 options 变量并在模板中添加 el-select
}
})
.catch(function (error) {
console.error("getQueryWell 请求失败:", error);
});
},
radio_change(){
console.log(this.$data.radio1);
// 切换到设备页签时,可以自动加载一次数据,或者依赖用户点击搜索
if(this.$data.radio1 == '2') {
this.getDevList();
}
},
// 获取设备列表
getDevList() {
// 校验时间范围
if (this.devSearchForm.in_time_start && this.devSearchForm.in_time_end) {
if (new Date(this.devSearchForm.in_time_end) < new Date(this.devSearchForm.in_time_start)) {
this.$message({
message: "结束时间不能早于开始时间",
type: "warning",
duration: 2000
});
return;
}
}
var _this = this;
axios.post('/deescloud/get_dev_list', {
opuser: localStorage.getItem("online_user"), // 操作用户
opuser_uuid: localStorage.getItem("uuid"), // 用户UUID
serial: this.$data.devSearchForm.sid, // 系列号筛选条件
number: this.$data.devSearchForm.iid, // 编号筛选条件
wellname: this.$data.devSearchForm.wellnameList, // 井名称筛选条件,使用用户选择的列表
engineer: this.$data.devSearchForm.engineerList, // 仪器工程师筛选条件
in_time_start: this.$data.devSearchForm.in_time_start, // 入井开始时间筛选条件
in_time_end: this.$data.devSearchForm.in_time_end, // 入井结束时间筛选条件
index: this.$data.devCurrentPage, // 当前页码
count: this.$data.devPagesize // 每页数量
})
.then(function (response) {
console.log(response.data);
if(response.data && response.data.data) {
// 兼容后端字段命名差异,统一映射到前端表格使用的字段
_this.$data.devListTableData = (response.data.data || []).map(function(item) {
var sid = item.sid != null ? item.sid : (item.serial != null ? item.serial : '');
var iid = item.iid != null ? item.iid : (item.number != null ? item.number : '');
var durationCurrent = item.duration_current != null ? item.duration_current : (item.current_work_time != null ? item.current_work_time : '');
var durationTotal = item.duration_total != null ? item.duration_total : (item.total_work_time != null ? item.total_work_time : '');
// 兼容 product_name 到 instrument_name
var instrumentName = item.instrument_name != null ? item.instrument_name : (item.product_name != null ? item.product_name : '');
return Object.assign({}, item, {
sid: sid,
iid: iid,
duration_current: durationCurrent,
duration_total: durationTotal,
instrument_name: instrumentName
});
});
_this.$data.devRecordTotal = response.data.total || 0;
}
})
.catch(function (error) {
console.log(error);
});
},
handleDevSizeChange(val) {
this.$data.devPagesize = val;
this.$data.devCurrentPage = 1;
this.getDevList();
},
handleDevCurrentChange(val) {
this.$data.devCurrentPage = val;
this.getDevList();
},
exportSeirDetail() {
// 校验时间范围
if (this.devSearchForm.in_time_start && this.devSearchForm.in_time_end) {
if (new Date(this.devSearchForm.in_time_end) < new Date(this.devSearchForm.in_time_start)) {
this.$message({
message: "结束时间不能早于开始时间",
type: "warning",
duration: 2000
});
return;
}
}
// 调用导出接口,参数与 getDevList 一致
axios.post('/deescloud/export_Seir_detail', {
opuser: localStorage.getItem("online_user"),
opuser_uuid: localStorage.getItem("uuid"),
serial: this.devSearchForm.sid,
number: this.devSearchForm.iid,
wellname: this.devSearchForm.wellnameList,
engineer: this.devSearchForm.engineerList,
in_time_start: this.devSearchForm.in_time_start,
in_time_end: this.devSearchForm.in_time_end,
index: this.devCurrentPage,
count: this.devPagesize
})
.then(response => {
console.log("导出井位明细响应:", response.data);
// 判断返回码
if (response.data && response.data.code === 1) {
// 当 code=1 时,显示错误信息
this.$message({
message: response.data.msg || "导出失败",
type: "error",
duration: 2000
});
return;
}
// code 不为 1 时,正常处理文件下载
if (response.data && response.data.fileId) {
const fileid = response.data.fileId;
const downUrl = 'file/' + fileid;
downloadUrl("井上仪器明细清单(按仪器查询).xlsx", downUrl);
} else {
this.$message({
message: "导出失败:未获取到文件",
type: "error",
duration: 2000
});
}
})
.catch(error => {
console.error("导出井位明细错误:", error);
this.$message({
message: "导出请求失败",
type: "error",
duration: 2000
});
});
},
exportWellDetail() {
var _this = this;
// 调用导出接口,参数与 getDevList 一致,支持多选井名
axios.post('/deescloud/export_Well_detail', {
opuser: localStorage.getItem("online_user"),
opuser_uuid: localStorage.getItem("uuid"),
serial: this.devSearchForm.sid,
number: this.devSearchForm.iid,
wellname: this.devSearchForm.wellnameList,
engineer: this.devSearchForm.engineerList,
in_time_start: this.devSearchForm.in_time_start,
in_time_end: this.devSearchForm.in_time_end,
index: this.devCurrentPage,
count: this.devPagesize
})
.then(response => {
console.log("导出井位明细响应:", response.data);
// 增加 code=1 的错误处理
if (response.data && response.data.code === 1) {
_this.$message({
message: response.data.msg || "导出失败",
type: "error",
duration: 2000
});
return;
}
if (response.data && response.data.fileId) {
const fileid = response.data.fileId;
const downUrl = 'file/' + fileid;
downloadUrl("井上仪器明细清单(按井位查询).xlsx", downUrl);
} else {
_this.$message({
message: "导出失败:未获取到文件",
type: "error",
duration: 2000
});
}
})
.catch(error => {
console.error("导出井位明细错误:", error);
_this.$message({
message: "导出请求失败",
type: "error",
duration: 2000
});
});
},
remove_dev_m(row){
var _this = this;
var r;
axios.post('/deescloud/remove_dev_manage', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
data:{
id: row.id
}
})
.then(function (response) {
console.log(response.data);
r = response.data.r;
if (r==0){
axios.post('/deescloud/get_dev_manage', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
wellname: row.wellname,
})
.then(function (response) {
console.log(response.data);
_this.$data.dev_tableData = response.data.data;
})
.catch(function (error) {
console.log(error);
});
_this.$message({
message: "删除成功",
type: "success",
duration: 1500
});
}else{
_this.$message({
message: "删除失败",
type: "error",
duration: 1500
});
}
})
.catch(function (error) {
console.log(error);
});
},
update_dev_manage(){
this.$refs['bform'].validate((valid) => {
if (valid) {
var _this = this;
var r;
axios.post('/deescloud/update_dev_manage', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
data:{
id:_this.$data.form.id,
wellname:_this.$data.form.wellname,
sid:_this.$data.form.sid,
iid:_this.$data.form.iid,
ver: _this.$data.form.ver,
p_date:_this.$data.form.p_date,
cal_date:_this.$data.form.cal_date,
total_wt:_this.$data.form.total_wt,
cur_wt:_this.$data.form.cur_wt,
repair_cnt:_this.$data.form.repair_cnt,
region:_this.$data.form.region,
location:_this.$data.form.location,
responsible:_this.$data.form.responsible
}
})
.then(function (response) {
console.log(response.data);
r = response.data.r;
if (r==0){
axios.post('/deescloud/get_dev_manage', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
wellname: _this.$data.form.wellname,
})
.then(function (response) {
console.log(response.data);
_this.$data.dev_tableData = response.data.data;
})
.catch(function (error) {
console.log(error);
});
_this.$message({
message: "修改成功",
type: "success",
duration: 1500
});
}else{
_this.$message({
message: "修改失败",
type: "error",
duration: 1500
});
}
_this.$data.update_visible=false;
})
.catch(function (error) {
console.log(error);
});
}})
},
update_dev_m_dialog(row){
this.$data.form.id=row.id;
console.log("wellname",row.wellname);
this.$data.form.wellname=row.wellname;
this.$data.form.sid=row.sid;
this.$data.form.iid=row.iid;
this.$data.form.ver= row.ver;
if(this.$data.ps_info.r3=="1"){
this.$data.form.p_date=row.p_date;
this.$data.form.cal_date=row.cal_date;
}else{
if (row.p_date.length>=10){
var arr = row.p_date.split("-")
var t = arr[2]+"-"+arr[0]+"-"+arr[1];
console.log(t);
this.$data.form.p_date=t;
}
if (row.cal_date.length>=10){
var arr = row.cal_date.split("-")
var t = arr[2]+"-"+arr[0]+"-"+arr[1];
console.log(t);
this.$data.form.cal_date=t;
}
}
//this.$data.form.p_date=row.p_date;
//this.$data.form.cal_date=row.cal_date;
this.$data.form.total_wt=row.total_wt;
this.$data.form.cur_wt=row.cur_wt;
this.$data.form.repair_cnt=row.repair_cnt;
this.$data.form.region=row.region;
this.$data.form.location=row.location;
this.$data.form.responsible=row.responsible;
this.$nextTick(() => {
this.$refs['bform'].clearValidate()
});
this.$data.update_visible=true;
},
add_dev_manage(){
this.$refs['bform'].validate((valid) => {
if (valid) {
var _this = this;
var r;
axios.post('/deescloud/add_dev_manage', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
data:{
wellname:_this.$data.form.wellname,
sid:_this.$data.form.sid,
iid:_this.$data.form.iid,
ver: _this.$data.form.ver,
p_date:_this.$data.form.p_date,
cal_date:_this.$data.form.cal_date,
total_wt:_this.$data.form.total_wt,
cur_wt:_this.$data.form.cur_wt,
repair_cnt:_this.$data.form.repair_cnt,
region:_this.$data.form.region,
location:_this.$data.form.location,
responsible:_this.$data.form.responsible
}
})
.then(function (response) {
console.log(response.data);
r = response.data.r;
if (r==0){
_this.$message({
message: "添加成功",
type: "success",
duration: 1500
});
}else{
_this.$message({
message: "添加失败",
type: "error",
duration: 1500
});
}
_this.$data.add_visible=false;
})
.catch(function (error) {
console.log(error);
});
}})
},
add_dev_manage_dialog(){
document.getElementById("bt_add").blur();
this.$data.form.wellname='';
this.$data.form.sid='';
this.$data.form.iid='';
this.$data.form.ver= '';
this.$data.form.p_date='';
this.$data.form.cal_date='';
this.$data.form.total_wt='';
this.$data.form.cur_wt='';
this.$data.form.repair_cnt='';
this.$data.form.region='';
this.$data.form.location='';
this.$data.form.responsible='';
var _this = this;
axios.post('/deescloud/getWellNames',{
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
})
.then(function (response) {
console.log(response.data);
_this.$data.wellnames = response.data;
})
.catch(function (error) {
console.log(error);
});
this.$nextTick(() => {
this.$refs['bform'].clearValidate()
});
this.$data.add_visible=true;
},
export_pdf(row){
var _this = this;
axios.post('deescloud/get_dev_manage_pdf',{
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;
downloadUrl(row.wellNameSource+"-设备资产管理报告.pdf",downUrl);
})
.catch(function (error) {
console.log(error);
});
},
show_pdf(row){
let _this= this;
axios.post('/deescloud/get_dev_manage', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
wellname: row.wellNameSource,
})
.then(function (response) {
console.log(response.data);
_this.$data.dev_tableData = response.data.data;
_this.$data.pdf_visible = true;
})
.catch(function (error) {
console.log(error);
});
},
getWell(_search_name){
this.$data.currentPage=1;
var _this = this;
var objs;
axios.post('/deescloud/get_well_dev', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
Wellname: _search_name,
index: this.$data.currentPage,
count: this.$data.pagesize
})
.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) {
//console.log(`每页 ${val} 条`);
this.$data.pagesize = val;
this.$data.currentPage = 1;
var _this = this;
var objs;
axios.post('/deescloud/get_well_dev', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
Wellname: this.$data.input,
index: this.$data.currentPage,
count: this.$data.pagesize
})
.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);
});
},
handleCurrentChange(val) {
//console.log(`当前页: ${val}`);
this.$data.currentPage = val;
var _this = this;
var objs;
axios.post('/deescloud/get_well_dev', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
Wellname: this.$data.input,
index: this.$data.currentPage,
count: this.$data.pagesize
})
.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);
});
},
}
}