From c5834616e69daf2770b5e3a677ed4391c369abbb Mon Sep 17 00:00:00 2001
From: dzl <863620989@qq.com>
Date: Tue, 29 Apr 2025 16:22:52 +0800
Subject: [PATCH] =?UTF-8?q?=E8=B4=B9=E7=94=A8=E9=85=8D=E7=BD=AE=E8=A1=A8?=
=?UTF-8?q?=E5=8D=95=E6=97=B6=E9=97=B4=E9=87=8D=E5=8F=A0=E5=88=A4=E6=96=AD?=
=?UTF-8?q?=EF=BC=8C=E5=8C=BA=E5=9F=9F=E9=85=8D=E7=BD=AE=E8=A1=A8=E5=8D=95?=
=?UTF-8?q?=E9=A1=B5=E9=9D=A2=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/views/Urban/OperateRegion/index.vue | 18 +-
.../CustomerServiceConfigForm.vue | 12 +-
.../form/operateregion/LockCarConfigForm.vue | 8 +-
.../form/operateregion/OperateConfForm.vue | 28 ++-
.../form/operateregion/OperateConfigForm.vue | 8 +-
.../form/operateregion/RegionFeeCofFrom.vue | 195 +++++++++++++-----
.../operateregion/ReturnCarConfigForm.vue | 15 +-
.../form/operateregion/SwitchConfigForm.vue | 63 +++++-
.../form/operateregion/UseCarConfigForm.vue | 8 +-
9 files changed, 269 insertions(+), 86 deletions(-)
diff --git a/ebike-operate/src/views/Urban/OperateRegion/index.vue b/ebike-operate/src/views/Urban/OperateRegion/index.vue
index a467af8..3ff4b36 100644
--- a/ebike-operate/src/views/Urban/OperateRegion/index.vue
+++ b/ebike-operate/src/views/Urban/OperateRegion/index.vue
@@ -185,7 +185,10 @@
width="1000px"
:maskClosable="false"
>
-
+
-
+
{
* @param record
*/
const feeConfigInfo = (record) => {
+ modalFreeKey.value = getGUID();
openTitle.value = "费用信息 - " + record['regionName']
open.value = true
nextTick(() => {
@@ -433,6 +444,7 @@ const handleOkFeeModal = () => {
* @param record
*/
const regionConfigInfo = (record) => {
+ modalOperateKey.value = getGUID();
openTitleConfig.value = "运营配置 - " + record['regionName']
openConfig.value = true
nextTick(() => {
@@ -449,7 +461,7 @@ const regionConfigInfo = (record) => {
*/
const handleOkConfgModal = () => {
formModelConfig.value.formSave((data => {
- openConfig.value = false;
+ // openConfig.value = false;
if (data['code'] == 200) {
getData()
} else {
diff --git a/ebike-operate/src/views/form/operateregion/CustomerServiceConfigForm.vue b/ebike-operate/src/views/form/operateregion/CustomerServiceConfigForm.vue
index f70210f..9dd0c14 100644
--- a/ebike-operate/src/views/form/operateregion/CustomerServiceConfigForm.vue
+++ b/ebike-operate/src/views/form/operateregion/CustomerServiceConfigForm.vue
@@ -78,7 +78,7 @@
-
+
{
}
}
-
const validateForm = async () => {
-
await formRef.value.validate();
form.value.tableName = 'ebikeSysLinktelDto'
return form.value;
}
-defineExpose({
- validateForm
-});
+const resetFormValue = () => {
+ formRef.value.resetFields()
+}
+
+defineExpose({ validateForm, resetFormValue });
diff --git a/ebike-operate/src/views/form/operateregion/LockCarConfigForm.vue b/ebike-operate/src/views/form/operateregion/LockCarConfigForm.vue
index 707d762..35ed625 100644
--- a/ebike-operate/src/views/form/operateregion/LockCarConfigForm.vue
+++ b/ebike-operate/src/views/form/operateregion/LockCarConfigForm.vue
@@ -180,8 +180,10 @@ const validateForm = async () => {
form.value.tableName = 'ebikeSysrlocksetDto'
return form.value;
}
-defineExpose({
- validateForm
-});
+const resetFormValue = () => {
+ formRef.value.resetFields()
+}
+
+defineExpose({ validateForm, resetFormValue });
diff --git a/ebike-operate/src/views/form/operateregion/OperateConfForm.vue b/ebike-operate/src/views/form/operateregion/OperateConfForm.vue
index e49e1f4..de9c1a4 100644
--- a/ebike-operate/src/views/form/operateregion/OperateConfForm.vue
+++ b/ebike-operate/src/views/form/operateregion/OperateConfForm.vue
@@ -54,17 +54,25 @@ const useCarForm = ref(null);
const lockCarForm = ref(null);
const returnCarForm = ref(null);
const customerServiceForm = ref(null);
-
+const isAdd = ref(true);
const spinning = ref(false);
const tipContent = ref("加载中...");
const openForm = (params = {}) => {
+ isAdd.value = true;
if (params['regionId']) {
spinning.value = true;
callOperate("/ebikeSysRoperateset/getRegionConfigById?regionId="
+ params['regionId'], {}, "get").then(res => {
spinning.value = false;
+ if (res.code == 200) {
+ if (res.data) {
+ isAdd.value = false;
+ }
+ } else {
+ message.error(res.message);
+ }
})
}
};
@@ -93,11 +101,21 @@ const formSave = (onCallBack) => {
Promise.all(validationPromises).then(() => {
tipContent.value = "保存中..."
spinning.value = true;
- callOperate("/ebikeSysRoperateset/save", params).then(res => {
+ let url = "save";
+ if (!isAdd.value) {
+ url = "update"
+ }
+ callOperate("/ebikeSysRoperateset/" + url, params).then(res => {
spinning.value = false;
- if (onCallBack) {
- res.data = params;
- onCallBack(res);
+ if (res.code == 200) {
+ //重置表单数据
+ forms.map(form => {
+ form.value.resetFormValue()
+ })
+ if (onCallBack) {
+ res.data = params;
+ onCallBack(res);
+ }
}
})
}).catch(error => {
diff --git a/ebike-operate/src/views/form/operateregion/OperateConfigForm.vue b/ebike-operate/src/views/form/operateregion/OperateConfigForm.vue
index 013de25..672f6e4 100644
--- a/ebike-operate/src/views/form/operateregion/OperateConfigForm.vue
+++ b/ebike-operate/src/views/form/operateregion/OperateConfigForm.vue
@@ -797,8 +797,10 @@ const validateForm = async () => {
form.value.tableName = 'ebikeSysRoperatesetDto'
return form.value;
}
-defineExpose({
- validateForm
-});
+const resetFormValue = () => {
+ formRef.value.resetFields()
+}
+
+defineExpose({ validateForm, resetFormValue });
diff --git a/ebike-operate/src/views/form/operateregion/RegionFeeCofFrom.vue b/ebike-operate/src/views/form/operateregion/RegionFeeCofFrom.vue
index eb92d91..6462208 100644
--- a/ebike-operate/src/views/form/operateregion/RegionFeeCofFrom.vue
+++ b/ebike-operate/src/views/form/operateregion/RegionFeeCofFrom.vue
@@ -28,23 +28,6 @@
-
-
+
+
+
+
+ 时间重叠!
+
+
+
+
+
+ 已选择相同的周天数!
+
+
+ 周一
+ 周二
+ 周三
+ 周四
+ 周五
+ 周六
+ 周日
+
+
周一
周二
@@ -371,6 +402,10 @@ const deteilShow = ref(false);
const isAdd = ref(true);
const warmReminder = ref("");
const field = ref("");
+const saveFlag = ref(true);
+const openTimeTip = ref(false)
+const openWeekTip = ref(false)
+
const formData = () => ({
costConfigId: "",
@@ -399,15 +434,6 @@ const form = ref(formData());
// 表格列配置
const columns = ref([])
-// const changeFreeDurationMode = (data) => {
-// const value = data.target.value;
-// if (value == "1") {
-// freeDuration.value = "免费时长(分钟)";
-// } else if (value == "2") {
-// freeDuration.value = "免费时长(秒)";
-// }
-// }
-
const timePeriodColumns = [
{
title: '阶段',
@@ -564,7 +590,6 @@ const changeTimeDivisionCharging = (data) => {
const openForm = (params = {}) => {
deteilShow.value = false;
Object.assign(form.value, formData());
- formRef.value.resetFields();
isAdd.value = true;
if (params['regionId']) {
form.value.regionId = params['regionId']
@@ -609,11 +634,17 @@ const addRecord = () => {
const timeDivisionCharging = form.value.timeDivisionCharging;
let item = {};
let timeSegmentDetail = field.value
+ const record = form.value[timeSegmentDetail][form.value[timeSegmentDetail].length - 1];
+
if (timeDivisionCharging == '2') {
+ let startupTime = dayjs("00:00:00", 'HH:mm:ss');
+ if (record) {
+ startupTime = dayjs(record['endTime'], 'HH:mm:ss')
+ }
item = {
key: getGUID(),
phase: "",
- startupTime: dayjs("00:00:00", 'HH:mm:ss'),
+ startupTime: startupTime,
endTime: dayjs("23:59:59", 'HH:mm:ss'),
startupCost: "",
startupDuration: "",
@@ -640,6 +671,11 @@ const deleteRecord = (record) => {
let item = _.clone(form.value[timeSegmentDetail]);
remove(key, "key", item)
form.value[timeSegmentDetail] = item;
+ if (timeSegmentDetail == 'ebikeSysRcostsetWeekDtos') {
+ checkWeek();
+ } else {
+ checkWorkTime();
+ }
}
const remove = (val, filed, array) => {
@@ -649,32 +685,85 @@ const remove = (val, filed, array) => {
}
}
-const formSave = (callBack) => {
- formRef.value.validate().then(() => {
- debugger;
- tipContent.value = "保存中..."
- spinning.value = true;
- let url = "regionFeeConfigAdds";
- if (!isAdd.value) {
- url = "updateRegionFeeConfig"
+const getPopupContainerFunc = () => {
+ return document.getElementById("timePicker");
+}
+
+/**
+ * 检查周有无重叠
+ */
+const checkWeek = () => {
+ openWeekTip.value = false;
+ saveFlag.value = true;
+ const seenWeeks = [];
+ form.value['ebikeSysRcostsetWeekDtos'].forEach(items => {
+ const week = items['week'];
+ items['toolTip'] = false;
+ if (week.some(item => seenWeeks.includes(item))) {
+ openWeekTip.value = true;
+ items['toolTip'] = true;
+ saveFlag.value = false;
+ } else {
+ seenWeeks.push(...week);
}
- const param = _.cloneDeep(form.value)
- if (param['ebikeSysRcostsetTimePeriodDtos'] && param['ebikeSysRcostsetTimePeriodDtos'].length > 0) {
- param['ebikeSysRcostsetTimePeriodDtos'].forEach(item => {
- item['startupTime'] = item['startupTime'].format('HH:mm:ss');
- item['endTime'] = item['endTime'].format('HH:mm:ss');
- })
- }
- callOperate("/ebikesysrcostset/" + url, param).then(res => {
- spinning.value = false;
- if (callBack) {
- res.data = param;
- callBack(res);
- }
- })
- }).catch(error => {
- console.log('error', error);
});
+}
+
+/**
+ * 检查时间段有无重叠
+ */
+const checkWorkTime = () => {
+ openTimeTip.value = false;
+ saveFlag.value = true;
+ const periods = form.value['ebikeSysRcostsetTimePeriodDtos'];
+ for (let i = 0; i < periods.length; i++) {
+ const currentPeriod = periods[i];
+ const currentStartTime = new Date(currentPeriod['startupTime']);
+ const currentEndTime = new Date(currentPeriod['endTime']);
+ for (let j = i + 1; j < periods.length; j++) {
+ const comparePeriod = periods[j];
+ const compareStartTime = new Date(comparePeriod['startupTime']);
+ const compareEndTime = new Date(comparePeriod['endTime']);
+ comparePeriod['toolTip'] = false;
+ if (
+ (currentStartTime < compareEndTime && currentEndTime > compareStartTime) ||
+ (compareStartTime < currentEndTime && compareEndTime > currentStartTime)
+ ) {
+ openTimeTip.value = true;
+ saveFlag.value = false;
+ comparePeriod['toolTip'] = true;
+ }
+ }
+ }
+}
+
+const formSave = (callBack) => {
+ if (saveFlag.value) {
+ formRef.value.validate().then(() => {
+ tipContent.value = "保存中..."
+ spinning.value = true;
+ let url = "regionFeeConfigAdds";
+ if (!isAdd.value) {
+ url = "updateRegionFeeConfig"
+ }
+ const param = _.cloneDeep(form.value)
+ if (param['ebikeSysRcostsetTimePeriodDtos'] && param['ebikeSysRcostsetTimePeriodDtos'].length > 0) {
+ param['ebikeSysRcostsetTimePeriodDtos'].forEach(item => {
+ item['startupTime'] = item['startupTime'].format('HH:mm:ss');
+ item['endTime'] = item['endTime'].format('HH:mm:ss');
+ })
+ }
+ callOperate("/ebikesysrcostset/" + url, param).then(res => {
+ spinning.value = false;
+ if (callBack) {
+ res.data = param;
+ callBack(res);
+ }
+ })
+ }).catch(error => {
+ console.log('error', error);
+ });
+ }
};
defineExpose({ openForm, formSave });
diff --git a/ebike-operate/src/views/form/operateregion/ReturnCarConfigForm.vue b/ebike-operate/src/views/form/operateregion/ReturnCarConfigForm.vue
index 79e4e08..79ceea1 100644
--- a/ebike-operate/src/views/form/operateregion/ReturnCarConfigForm.vue
+++ b/ebike-operate/src/views/form/operateregion/ReturnCarConfigForm.vue
@@ -105,7 +105,7 @@
:rules="[{ required: true, message: '请输入站点偏移角度误差' }]"
>
@@ -367,7 +367,7 @@ const changeFreeDispatchStudy = (e) => {
isFreeDispatchStudy.value = true;
} else {
isFreeDispatchStudy.value = false;
- form.value.freeFeturnType = null;
+ form.value.freeFeturnType = [];
form.value.freeDispatchCount = null;
}
}
@@ -378,7 +378,7 @@ const changeIgnoreRegular = (e) => {
} else {
isIgnoreRegular.value = false;
form.value.ignoreRegularErrorCount = null;
- form.value.ignoreRegularType = null;
+ form.value.ignoreRegularType = [];
}
}
@@ -387,8 +387,11 @@ const validateForm = async () => {
form.value.tableName = 'ebikeSysRbacksetDto'
return form.value;
}
-defineExpose({
- validateForm
-});
+
+const resetFormValue = () => {
+ formRef.value.resetFields()
+}
+
+defineExpose({ validateForm, resetFormValue });
diff --git a/ebike-operate/src/views/form/operateregion/SwitchConfigForm.vue b/ebike-operate/src/views/form/operateregion/SwitchConfigForm.vue
index c9f7bf1..baaca9a 100644
--- a/ebike-operate/src/views/form/operateregion/SwitchConfigForm.vue
+++ b/ebike-operate/src/views/form/operateregion/SwitchConfigForm.vue
@@ -131,16 +131,45 @@
+
+
+
+ 已选择相同的周天数!
+
+
+ 周一
+ 周二
+ 周三
+ 周四
+ 周五
+ 周六
+ 周日
+
+
周一
周二
@@ -233,6 +262,8 @@ const form = ref({
operateTimeByWeek: []
});
const showStopTimeInfo = ref(false);
+const saveFlag = ref(true);
+const openWeekTip = ref(false)
const columns = ref([
{
@@ -262,7 +293,7 @@ const columns = ref([
const addRecord = () => {
form.value.operateTimeByWeek.push({
key: getGUID(),
- week: [],
+ weekday: [],
workTime: ""
})
}
@@ -281,6 +312,10 @@ const remove = (val, filed, array) => {
}
}
+const getPopupContainerFunc = () => {
+ return document.getElementById("timePicker");
+}
+
const changeIsOperate = (e) => {
const value = e.target.value;
if (value == '2') {
@@ -310,13 +345,33 @@ const changeOperateType = (data) => {
}
}
+const checkWeek = () => {
+ openWeekTip.value = false;
+ saveFlag.value = true;
+ const seenWeeks = [];
+ form.value['operateTimeByWeek'].forEach(items => {
+ const week = items['weekday'];
+ items['toolTip'] = false;
+ if (week.some(item => seenWeeks.includes(item))) {
+ openWeekTip.value = true;
+ items['toolTip'] = true;
+ saveFlag.value = false;
+ } else {
+ seenWeeks.push(...week);
+ }
+ });
+}
+
const validateForm = async () => {
await formRef.value.validate();
form.value.tableName = 'ebikeSysRoperatesetDto'
return form.value;
}
-defineExpose({
- validateForm
-});
+
+const resetFormValue = () => {
+ formRef.value.resetFields()
+}
+
+defineExpose({ validateForm, resetFormValue });
diff --git a/ebike-operate/src/views/form/operateregion/UseCarConfigForm.vue b/ebike-operate/src/views/form/operateregion/UseCarConfigForm.vue
index 5be9d43..c81fff9 100644
--- a/ebike-operate/src/views/form/operateregion/UseCarConfigForm.vue
+++ b/ebike-operate/src/views/form/operateregion/UseCarConfigForm.vue
@@ -866,8 +866,10 @@ const validateForm = async () => {
form.value.tableName = 'ebikeSysRusecondsetDto'
return form.value;
}
-defineExpose({
- validateForm
-});
+const resetFormValue = () => {
+ formRef.value.resetFields()
+}
+
+defineExpose({ validateForm, resetFormValue });