Browse Source

需求缺陷:添加抄表时间

815
wangyx 4 days ago
parent
commit
a8dbd4cc2b
  1. 255
      pagesA/sdPage/dfReport.vue
  2. 202
      pagesA/sdPage/sfReport.vue

255
pagesA/sdPage/dfReport.vue

@ -92,7 +92,9 @@
border="none" border="none"
:disabled="item.isSystemElectricMeterNumber" :disabled="item.isSystemElectricMeterNumber"
:custom-style=" :custom-style="
item.isSystemElectricMeterNumber ? 'background:#fff;color:#666;' : '' item.isSystemElectricMeterNumber
? 'background:#fff;color:#666;'
: ''
" "
/> />
</view> </view>
@ -131,6 +133,37 @@
border="none" border="none"
/> />
</view> </view>
<view class="meter-row" @click="showTimePicker(index)">
<view class="meter-label">
<view style="color: #f93838; margin-right: 4rpx; font-size: 24rpx"
>*</view
>
<text>抄表时间</text>
</view>
<view class="picker-label">
<u-datetime-picker
:ref="`datetimePicker${index}`"
:show="form[index].showTimePicker"
v-model="form[index].meterReadingTime"
mode="datetime"
@cancel="closeTimePicker(index)"
@confirm="(e) => onTimeConfirm(e, index)"
:min-date="minDate"
:max-date="maxDate"
></u-datetime-picker>
<view class="time-display">
{{
formatDisplayTime(form[index].meterReadingTime) ||
"请选择抄表时间"
}}
</view>
<image
class="arrow-r"
src="/static/img/arrow-right.png"
mode="aspectFill"
></image>
</view>
</view>
<view class="imeter-row"> <view class="imeter-row">
<view class="meter-label"> <view class="meter-label">
<view style="color: #f93838; margin-right: 4rpx; font-size: 24rpx" <view style="color: #f93838; margin-right: 4rpx; font-size: 24rpx"
@ -212,11 +245,16 @@ export default {
remark: "", remark: "",
electricMeterNumber: "", electricMeterNumber: "",
isSystemElectricMeterNumber: false, // isSystemElectricMeterNumber: false, //
meterReadingTime: "", // this.formatDateTime(new Date())
showTimePicker: false, //
}, },
// //
], ],
energyMeterConfig: "", energyMeterConfig: "",
waterMeterConfig: "", waterMeterConfig: "",
minDate: new Date(new Date().getFullYear() - 5, 0, 1).getTime(), // 5
maxDate: new Date(new Date().getFullYear() + 1, 11, 31).getTime(), //
defaultTime: new Date(), //
}; };
}, },
watch: { watch: {
@ -238,8 +276,42 @@ export default {
}, },
onLoad() { onLoad() {
this.getTree(); this.getTree();
// this.initMeterReadingTime();
}, },
methods: { methods: {
//
initMeterReadingTime() {
const currentTime = this.formatDateTime(new Date());
console.log("初始化时间:", currentTime);
console.log("当前时间Date对象:", new Date());
this.form.forEach((item, index) => {
item.meterReadingTime = currentTime;
item.showTimePicker = false; //
console.log(`表单项${index}的时间:`, item.meterReadingTime);
console.log(`表单项${index}的时间类型:`, typeof item.meterReadingTime);
});
},
// YYYY-MM-DD hh:mm
formatDateTime(date) {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, "0");
const day = String(date.getDate()).padStart(2, "0");
const hours = String(date.getHours()).padStart(2, "0");
const minutes = String(date.getMinutes()).padStart(2, "0");
return `${year}-${month}-${day} ${hours}:${minutes}`;
},
// "2023-10-27 10:30" "20231027 10:30"
formatDisplayTime(time) {
if (!time) return "";
const date = new Date(time);
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, "0");
const day = String(date.getDate()).padStart(2, "0");
const hours = String(date.getHours()).padStart(2, "0");
const minutes = String(date.getMinutes()).padStart(2, "0");
return `${year}-${month}-${day} ${hours}:${minutes}`;
},
// //
oversize(e) { oversize(e) {
this.$u.toast("请传10MB以内大小的图片/视频!"); this.$u.toast("请传10MB以内大小的图片/视频!");
@ -247,22 +319,12 @@ export default {
}, },
getTree() { getTree() {
getdeptList().then(async (res) => { getdeptList().then(async (res) => {
this.deptOptions = this.handleTree( // 使使handleTree
res.data, this.deptOptions = res.data || [];
"deptId",
"parentId",
"children",
2
);
// const deptInfo = this.deptOptions[0].children.filter(
// (item) => item.deptName == ""
// )[0];
const newArr = this.deptOptions.map((item) => ({ const newArr = this.deptOptions.map((item) => ({
name: item.deptName, name: item.deptName,
})); }));
// this.deptOptions = newArr
// this.deptOptions = await this.getListByParentId("1", deptInfo.deptId);
// const array = JSON.parse(JSON.stringify(this.deptOptions));
this.deptNames = newArr.map((item) => item.name); this.deptNames = newArr.map((item) => item.name);
}); });
}, },
@ -326,7 +388,6 @@ export default {
console.warn("未获取到户信息"); console.warn("未获取到户信息");
return; return;
} }
this.houseOptions = houseArray; this.houseOptions = houseArray;
const houseNames = houseArray.map((item) => item.name); const houseNames = houseArray.map((item) => item.name);
this.blockForm.houseId = houseArray[0].id; this.blockForm.houseId = houseArray[0].id;
@ -506,26 +567,49 @@ export default {
this.form = [ this.form = [
{ {
electricMeterNumber: res.data.electricMeterNumber && res.data.electricMeterNumber.trim() !== '' ? res.data.electricMeterNumber : "", electricMeterNumber:
isSystemElectricMeterNumber: !!(res.data.electricMeterNumber && res.data.electricMeterNumber.trim() !== ''), res.data.electricMeterNumber &&
res.data.electricMeterNumber.trim() !== ""
? res.data.electricMeterNumber
: "",
isSystemElectricMeterNumber: !!(
res.data.electricMeterNumber &&
res.data.electricMeterNumber.trim() !== ""
),
meterReadingTime: this.formatDateTime(new Date()), //
showTimePicker: false, //
}, },
]; ];
} else if (this.energyMeterConfig == 2) { } else if (this.energyMeterConfig == 2) {
this.form = this.form.map((item) => ({ this.form = this.form.map((item) => ({
...item, ...item,
electricMeterNumber: res.data.electricMeterNumber && res.data.electricMeterNumber.trim() !== '' ? res.data.electricMeterNumber : "", electricMeterNumber:
isSystemElectricMeterNumber: !!(res.data.electricMeterNumber && res.data.electricMeterNumber.trim() !== ''), res.data.electricMeterNumber &&
res.data.electricMeterNumber.trim() !== ""
? res.data.electricMeterNumber
: "",
isSystemElectricMeterNumber: !!(
res.data.electricMeterNumber &&
res.data.electricMeterNumber.trim() !== ""
),
meterReadingTime:
item.meterReadingTime || this.formatDateTime(new Date()), //
showTimePicker: false, //
})); }));
} }
// //
if (res.data.electricMeterNumber && res.data.electricMeterNumber.trim() !== '') { if (
res.data.electricMeterNumber &&
res.data.electricMeterNumber.trim() !== ""
) {
this.getLastMeter(res.data.electricMeterNumber); this.getLastMeter(res.data.electricMeterNumber);
} }
} }
}, },
// //
async getLastMeter(item) { async getLastMeter(item) {
this.initMeterReadingTime();
let roomId = ""; let roomId = "";
if (this.waterMeterConfig == 1) { if (this.waterMeterConfig == 1) {
roomId = this.form[0].id; roomId = this.form[0].id;
@ -551,7 +635,12 @@ export default {
...item, ...item,
lastMeterReading: res.data[0].thisMeterReading || 0, lastMeterReading: res.data[0].thisMeterReading || 0,
electricMeterNumber: res.data[0].meterNumber || "", electricMeterNumber: res.data[0].meterNumber || "",
isSystemElectricMeterNumber: !!(res.data[0].meterNumber && res.data[0].meterNumber.trim() !== ''), isSystemElectricMeterNumber: !!(
res.data[0].meterNumber && res.data[0].meterNumber.trim() !== ""
),
meterReadingTime:
item.meterReadingTime || this.formatDateTime(new Date()), //
showTimePicker: false, //
})); }));
} else if (this.energyMeterConfig == 2) { } else if (this.energyMeterConfig == 2) {
this.form = this.form.map((item) => { this.form = this.form.map((item) => {
@ -565,7 +654,12 @@ export default {
...item, ...item,
lastMeterReading: meter.thisMeterReading || 0, lastMeterReading: meter.thisMeterReading || 0,
electricMeterNumber: meter.meterNumber || "", electricMeterNumber: meter.meterNumber || "",
isSystemElectricMeterNumber: !!(meter.meterNumber && meter.meterNumber.trim() !== ''), isSystemElectricMeterNumber: !!(
meter.meterNumber && meter.meterNumber.trim() !== ""
),
meterReadingTime:
item.meterReadingTime || this.formatDateTime(new Date()), //
showTimePicker: false, //
}; };
} }
return item; return item;
@ -585,9 +679,16 @@ export default {
this.form = this.form.map((item) => ({ this.form = this.form.map((item) => ({
...item, ...item,
id: res.data[0].id || "", id: res.data[0].id || "",
meterReadingTime:
item.meterReadingTime || this.formatDateTime(new Date()), //
showTimePicker: false, //
})); }));
} else if (this.energyMeterConfig == 2) { } else if (this.energyMeterConfig == 2) {
this.form = res.data; this.form = res.data.map((item) => ({
...item,
meterReadingTime: this.formatDateTime(new Date()), //
showTimePicker: false, //
}));
this.getLastMeter(); this.getLastMeter();
} }
} }
@ -629,6 +730,13 @@ export default {
}); });
return; return;
} }
if (!item.meterReadingTime) {
uni.showToast({
title: `${i + 1}个房间请选择抄表时间`,
icon: "none",
});
return;
}
if (!item.fileList || item.fileList.length === 0) { if (!item.fileList || item.fileList.length === 0) {
uni.showToast({ uni.showToast({
title: `${i + 1}个房间请上传图片/视频`, title: `${i + 1}个房间请上传图片/视频`,
@ -658,6 +766,13 @@ export default {
}); });
return; return;
} }
if (!item.meterReadingTime) {
uni.showToast({
title: `请选择抄表时间`,
icon: "none",
});
return;
}
if (!item.fileList || item.fileList.length === 0) { if (!item.fileList || item.fileList.length === 0) {
uni.showToast({ uni.showToast({
title: `请上传图片/视频`, title: `请上传图片/视频`,
@ -688,21 +803,31 @@ export default {
return; return;
} }
let params = this.form.map((item) => { let params = this.form
.map((item) => {
// //
if (!item) { if (!item) {
console.warn("表单项数据无效:", item); console.warn("表单项数据无效:", item);
return null; return null;
} }
//
console.log(`表单项时间:`, item.meterReadingTime);
console.log(`表单项时间类型:`, typeof item.meterReadingTime);
return { return {
meterNumber: item.electricMeterNumber || "", meterNumber: item.electricMeterNumber || "",
meterType: 1, meterType: 1,
houseId: this.blockForm.houseId, houseId: this.blockForm.houseId,
roomId: item.id || "", roomId: item.id || "",
// lastMeterReading: isNaN(parseFloat(item.lastMeterReading)) ? '' : parseFloat(item.lastMeterReading).toFixed(4), // lastMeterReading: isNaN(parseFloat(item.lastMeterReading)) ? '' : parseFloat(item.lastMeterReading).toFixed(4),
lastMeterReading: item.lastMeterReading ? item.lastMeterReading : item.thisMeterReading, lastMeterReading: item.lastMeterReading
? item.lastMeterReading
: item.thisMeterReading,
thisMeterReading: parseFloat(item.thisMeterReading || 0).toFixed(4), thisMeterReading: parseFloat(item.thisMeterReading || 0).toFixed(4),
inputTime: item.meterReadingTime
? new Date(item.meterReadingTime.length === 16 ? item.meterReadingTime + ":00" : item.meterReadingTime).getTime()
: "", //
images: (item.fileList || []).map((f) => ({ images: (item.fileList || []).map((f) => ({
url: f.url || "", url: f.url || "",
name: f.name || "", name: f.name || "",
@ -711,7 +836,8 @@ export default {
})), })),
remark: item.remark || "", remark: item.remark || "",
}; };
}).filter(item => item !== null); // })
.filter((item) => item !== null); //
// //
if (params.length === 0) { if (params.length === 0) {
@ -755,6 +881,72 @@ export default {
}); });
} }
}, },
onTimeConfirm(e, index) {
console.log("时间选择器返回值:", e);
//
let selectedDate;
if (e.value) {
//
selectedDate = new Date(e.value);
} else if (e.year && e.month && e.day) {
//
selectedDate = new Date(
e.year,
e.month - 1,
e.day,
e.hour || 0,
e.minute || 0
);
} else {
// 使
selectedDate = new Date();
}
//
const formattedTime = this.formatDateTime(selectedDate);
this.form[index].meterReadingTime = formattedTime;
this.form[index].showTimePicker = false; //
console.log("选择的时间戳:", e.value);
console.log("转换后的Date对象:", selectedDate);
console.log("格式化后的时间字符串:", formattedTime);
console.log("表单中存储的时间:", this.form[index].meterReadingTime);
},
showTimePicker(index) {
this.form[index].showTimePicker = true; //
//
this.$nextTick(() => {
const pickerRef = this.$refs[`datetimePicker${index}`];
if (pickerRef && pickerRef.setFormatter) {
pickerRef.setFormatter(this.formatter);
}
});
},
closeTimePicker(index) {
console.log("关闭时间选择器", index);
this.form[index].showTimePicker = false; //
},
//
formatter(type, value) {
if (type === "year") {
return `${value}`;
}
if (type === "month") {
return `${value}`;
}
if (type === "day") {
return `${value}`;
}
if (type === "hour") {
return `${value}`;
}
if (type === "minute") {
return `${value}`;
}
return value;
},
}, },
}; };
</script> </script>
@ -912,6 +1104,17 @@ export default {
font-size: 24rpx; font-size: 24rpx;
margin-top: 8rpx; margin-top: 8rpx;
} }
.time-display {
color: #222;
font-size: 28rpx;
min-width: 200rpx;
text-align: right;
padding: 8rpx 0;
border: 1px solid transparent;
border-radius: 8rpx;
background: #fff;
padding: 8rpx 16rpx;
}
.u-upload__wrap { .u-upload__wrap {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;

202
pagesA/sdPage/sfReport.vue

@ -124,6 +124,37 @@
border="none" border="none"
/> />
</view> </view>
<view class="meter-row" @click="showTimePicker(index)">
<view class="meter-label">
<view style="color: #f93838; margin-right: 4rpx; font-size: 24rpx"
>*</view
>
<text>抄表时间</text>
</view>
<view class="picker-label">
<u-datetime-picker
:ref="`datetimePicker${index}`"
:show="form[index].showTimePicker"
v-model="form[index].meterReadingTime"
mode="datetime"
@cancel="closeTimePicker(index)"
@confirm="(e) => onTimeConfirm(e, index)"
:min-date="minDate"
:max-date="maxDate"
></u-datetime-picker>
<view class="time-display">
{{
formatDisplayTime(form[index].meterReadingTime) ||
"请选择抄表时间"
}}
</view>
<image
class="arrow-r"
src="/static/img/arrow-right.png"
mode="aspectFill"
></image>
</view>
</view>
<view class="imeter-row"> <view class="imeter-row">
<view class="meter-label"> <view class="meter-label">
<view style="color: #f93838; margin-right: 4rpx; font-size: 24rpx" <view style="color: #f93838; margin-right: 4rpx; font-size: 24rpx"
@ -205,9 +236,13 @@ export default {
remark: "", remark: "",
waterMeterNumber: "", waterMeterNumber: "",
isSystemWaterMeterNumber: false, // isSystemWaterMeterNumber: false, //
meterReadingTime: "", //
showTimePicker: false, //
}, },
], // ], //
waterMeterConfig: "", waterMeterConfig: "",
minDate: new Date(new Date().getFullYear() - 5, 0, 1).getTime(), // 5
maxDate: new Date(new Date().getFullYear() + 1, 11, 31).getTime(), //
}; };
}, },
watch: { watch: {
@ -231,22 +266,12 @@ export default {
methods: { methods: {
getTree() { getTree() {
getdeptList().then(async (res) => { getdeptList().then(async (res) => {
this.deptOptions = this.handleTree( // 使使handleTree
res.data, this.deptOptions = res.data || [];
"deptId",
"parentId",
"children",
2
);
// const deptInfo = this.deptOptions[0].children.filter(
// (item) => item.deptName == ""
// )[0];
const newArr = this.deptOptions.map((item) => ({ const newArr = this.deptOptions.map((item) => ({
name: item.deptName, name: item.deptName,
})); }));
// this.deptOptions = newArr
// this.deptOptions = await this.getListByParentId("1", deptInfo.deptId);
// const array = JSON.parse(JSON.stringify(this.deptOptions));
this.deptNames = newArr.map((item) => item.name); this.deptNames = newArr.map((item) => item.name);
}); });
}, },
@ -321,9 +346,9 @@ export default {
this.houseOptions = houseArray; this.houseOptions = houseArray;
const houseNames = houseArray.map((item) => item.name); const houseNames = houseArray.map((item) => item.name);
this.blockForm.houseId = houseArray[0].id; this.blockForm.houseId = houseArray[0].id;
this.energyMeterConfig = houseArray[0].energyMeterConfig;
this.waterMeterConfig = houseArray[0].waterMeterConfig; this.waterMeterConfig = houseArray[0].waterMeterConfig;
this.blockForm.roomId = houseArray[0].roomId; this.blockForm.roomId = houseArray[0].roomId;
let house = houseArray[0]; let house = houseArray[0];
// for (let index = 0; index < house.type; index++) { // for (let index = 0; index < house.type; index++) {
@ -336,9 +361,9 @@ export default {
// }); // });
// } // }
this.multiArray = [buildingNames, unitNames, houseNames]; this.multiArray = [buildingNames, unitNames, houseNames];
if (this.energyMeterConfig == 1) { if (this.waterMeterConfig == 1) {
this.getHouseInfoBy(this.blockForm.houseId); this.getHouseInfoBy(this.blockForm.houseId);
} else if (this.energyMeterConfig == 2) { } else if (this.waterMeterConfig == 2) {
this.getRoomByHouseId(this.blockForm.houseId); this.getRoomByHouseId(this.blockForm.houseId);
} }
} }
@ -494,6 +519,8 @@ export default {
{ {
waterMeterNumber: res.data.waterMeterNumber || "", waterMeterNumber: res.data.waterMeterNumber || "",
isSystemWaterMeterNumber: !!(res.data.waterMeterNumber && res.data.waterMeterNumber.trim() !== ''), isSystemWaterMeterNumber: !!(res.data.waterMeterNumber && res.data.waterMeterNumber.trim() !== ''),
meterReadingTime: this.formatDateTime(new Date()), //
showTimePicker: false, //
}, },
]; ];
} else if (this.waterMeterConfig == 2) { } else if (this.waterMeterConfig == 2) {
@ -501,12 +528,16 @@ export default {
...item, ...item,
waterMeterNumber: res.data.waterMeterNumber || "", waterMeterNumber: res.data.waterMeterNumber || "",
isSystemWaterMeterNumber: !!(res.data.waterMeterNumber && res.data.waterMeterNumber.trim() !== ''), isSystemWaterMeterNumber: !!(res.data.waterMeterNumber && res.data.waterMeterNumber.trim() !== ''),
meterReadingTime: item.meterReadingTime || this.formatDateTime(new Date()), //
showTimePicker: false, //
})); }));
} }
this.getLastMeter(res.data.waterMeterNumber); this.getLastMeter(res.data.waterMeterNumber);
} }
}, },
//
async getLastMeter(waterMeterNumber) { async getLastMeter(waterMeterNumber) {
this.initMeterReadingTime();
console.log(this.form, "this.formgetHouseInfoBy"); console.log(this.form, "this.formgetHouseInfoBy");
let roomId = '' let roomId = ''
if (this.waterMeterConfig == 1) { if (this.waterMeterConfig == 1) {
@ -535,6 +566,7 @@ export default {
lastMeterReading: res.data[0].thisMeterReading || 0, lastMeterReading: res.data[0].thisMeterReading || 0,
waterMeterNumber: res.data[0].meterNumber || "", waterMeterNumber: res.data[0].meterNumber || "",
isSystemWaterMeterNumber: !!(res.data[0].meterNumber && res.data[0].meterNumber.trim() !== ''), isSystemWaterMeterNumber: !!(res.data[0].meterNumber && res.data[0].meterNumber.trim() !== ''),
meterReadingTime: item.meterReadingTime || this.formatDateTime(new Date()), //
})); }));
console.log(this.form, "this.formgetLastMeter"); console.log(this.form, "this.formgetLastMeter");
@ -549,12 +581,26 @@ export default {
lastMeterReading: meter.thisMeterReading || 0, lastMeterReading: meter.thisMeterReading || 0,
waterMeterNumber: meter.meterNumber || "", waterMeterNumber: meter.meterNumber || "",
isSystemWaterMeterNumber: !!(meter.meterNumber && meter.meterNumber.trim() !== ''), isSystemWaterMeterNumber: !!(meter.meterNumber && meter.meterNumber.trim() !== ''),
meterReadingTime: item.meterReadingTime || this.formatDateTime(new Date()), //
}; };
} }
return item; return item;
}); });
} }
}, },
//
initMeterReadingTime() {
const currentTime = this.formatDateTime(new Date());
console.log("初始化时间:", currentTime);
console.log("当前时间Date对象:", new Date());
this.form.forEach((item, index) => {
item.meterReadingTime = currentTime;
item.showTimePicker = false; //
console.log(`表单项${index}的时间:`, item.meterReadingTime);
console.log(`表单项${index}的时间类型:`, typeof item.meterReadingTime);
});
},
async getRoomByHouseId(id) { async getRoomByHouseId(id) {
const res = await getRoomByHouseId({ houseId: id }); const res = await getRoomByHouseId({ houseId: id });
if (res.code == 200) { if (res.code == 200) {
@ -571,10 +617,16 @@ export default {
this.form = this.form.map((item) => ({ this.form = this.form.map((item) => ({
...item, ...item,
id: res.data[0].id || "" id: res.data[0].id || "",
meterReadingTime: item.meterReadingTime || this.formatDateTime(new Date()), //
showTimePicker: false, //
})); }));
} else if (this.waterMeterConfig == 2) { } else if (this.waterMeterConfig == 2) {
this.form = res.data; this.form = res.data.map(item => ({
...item,
meterReadingTime: this.formatDateTime(new Date()), //
showTimePicker: false, //
}));
this.getLastMeter(); this.getLastMeter();
} }
} }
@ -621,6 +673,13 @@ export default {
}); });
return; return;
} }
if (!item.meterReadingTime) {
uni.showToast({
title: `${i + 1}个房间请选择抄表时间`,
icon: "none",
});
return;
}
if (!item.fileList || item.fileList.length === 0) { if (!item.fileList || item.fileList.length === 0) {
uni.showToast({ uni.showToast({
title: `${i + 1}个房间请上传图片/视频`, title: `${i + 1}个房间请上传图片/视频`,
@ -650,6 +709,13 @@ export default {
}); });
return; return;
} }
if (!item.meterReadingTime) {
uni.showToast({
title: `请选择抄表时间`,
icon: "none",
});
return;
}
if (!item.fileList || item.fileList.length === 0) { if (!item.fileList || item.fileList.length === 0) {
uni.showToast({ uni.showToast({
title: `请上传图片/视频`, title: `请上传图片/视频`,
@ -697,6 +763,9 @@ export default {
// lastMeterReading: isNaN(parseFloat(item.lastMeterReading)) ? '' : parseFloat(item.lastMeterReading).toFixed(4), // lastMeterReading: isNaN(parseFloat(item.lastMeterReading)) ? '' : parseFloat(item.lastMeterReading).toFixed(4),
lastMeterReading: item.lastMeterReading ? item.lastMeterReading : item.thisMeterReading, lastMeterReading: item.lastMeterReading ? item.lastMeterReading : item.thisMeterReading,
thisMeterReading: parseFloat(item.thisMeterReading || 0).toFixed(4), thisMeterReading: parseFloat(item.thisMeterReading || 0).toFixed(4),
inputTime: item.meterReadingTime
? new Date(item.meterReadingTime.length === 16 ? item.meterReadingTime + ":00" : item.meterReadingTime).getTime()
: "", //
images: (item.fileList || []).map((f) => ({ images: (item.fileList || []).map((f) => ({
url: f.url || "", url: f.url || "",
name: f.name || "", name: f.name || "",
@ -747,6 +816,92 @@ export default {
}); });
} }
}, },
showTimePicker(index) {
this.form[index].showTimePicker = true; //
//
this.$nextTick(() => {
const pickerRef = this.$refs[`datetimePicker${index}`];
if (pickerRef && pickerRef.setFormatter) {
pickerRef.setFormatter(this.formatter);
}
});
},
closeTimePicker(index) {
console.log("关闭时间选择器", index);
this.form[index].showTimePicker = false; //
},
onTimeConfirm(e, index) {
console.log("时间选择器返回值:", e);
//
let selectedDate;
if (e.value) {
//
selectedDate = new Date(e.value);
} else if (e.year && e.month && e.day) {
//
selectedDate = new Date(
e.year,
e.month - 1,
e.day,
e.hour || 0,
e.minute || 0
);
} else {
// 使
selectedDate = new Date();
}
//
const formattedTime = this.formatDateTime(selectedDate);
this.form[index].meterReadingTime = formattedTime;
this.form[index].showTimePicker = false; //
console.log("选择的时间戳:", e.value);
console.log("转换后的Date对象:", selectedDate);
console.log("格式化后的时间字符串:", formattedTime);
console.log("表单中存储的时间:", this.form[index].meterReadingTime);
},
//
formatter(type, value) {
if (type === "year") {
return `${value}`;
}
if (type === "month") {
return `${value}`;
}
if (type === "day") {
return `${value}`;
}
if (type === "hour") {
return `${value}`;
}
if (type === "minute") {
return `${value}`;
}
return value;
},
// YYYY-MM-DD hh:mm
formatDateTime(date) {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, "0");
const day = String(date.getDate()).padStart(2, "0");
const hours = String(date.getHours()).padStart(2, "0");
const minutes = String(date.getMinutes()).padStart(2, "0");
return `${year}-${month}-${day} ${hours}:${minutes}`;
},
//
formatDisplayTime(time) {
if (!time) return "";
const date = new Date(time);
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, "0");
const day = String(date.getDate()).padStart(2, "0");
const hours = String(date.getHours()).padStart(2, "0");
const minutes = String(date.getMinutes()).padStart(2, "0");
return `${year}-${month}-${day} ${hours}:${minutes}`;
},
}, },
}; };
</script> </script>
@ -904,6 +1059,17 @@ export default {
font-size: 24rpx; font-size: 24rpx;
margin-top: 8rpx; margin-top: 8rpx;
} }
.time-display {
color: #222;
font-size: 28rpx;
min-width: 200rpx;
text-align: right;
padding: 8rpx 0;
border: 1px solid transparent;
border-radius: 8rpx;
background: #fff;
padding: 8rpx 16rpx;
}
.u-upload__wrap { .u-upload__wrap {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;

Loading…
Cancel
Save