From 10d9bc1f21106087412fb76bd8027c19ec9a31fd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=BA=8E=E8=82=96=E7=A3=8A?= <18851179580@163.com>
Date: Tue, 1 Jul 2025 17:03:16 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AE=9A=E4=BD=8D=E5=92=8C?=
=?UTF-8?q?=E6=89=8B=E6=9C=BA=E5=8F=B7=E7=BB=84=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
App.vue | 2 +
common/js/common/common.js | 11 +-
.../components/form-input/address.vue | 127 ++++++++
.../components/form-input/checkbox.vue | 1 -
.../components/form-input/date-group.vue | 1 -
.../form-input/components/form-input/date.vue | 1 -
.../components/form-input/form-input.vue | 97 +++++-
.../components/form-input/input.vue | 1 -
.../components/form-input/number.vue | 1 -
.../components/form-input/phone.vue | 281 ++++++++++++++++++
.../components/form-input/radio.vue | 1 -
.../components/form-input/select-multi.vue | 1 -
.../components/form-input/select.vue | 1 -
.../components/form-input/textarea.vue | 1 -
14 files changed, 502 insertions(+), 25 deletions(-)
create mode 100644 pages/form-input/components/form-input/address.vue
create mode 100644 pages/form-input/components/form-input/phone.vue
diff --git a/App.vue b/App.vue
index 0f0e3cc0..8837a0dd 100644
--- a/App.vue
+++ b/App.vue
@@ -161,6 +161,8 @@
// 用户地址选择缓存key
cache_buy_user_address_select_key: 'cache_buy_user_address_select_key',
+ // 用户地址选择缓存key
+ cache_region_all_address_key: 'cache_region_all_address_key',
// 启动参数缓存key
cache_launch_info_key: 'cache_shop_launch_info_key',
diff --git a/common/js/common/common.js b/common/js/common/common.js
index 0be5d19e..45647e43 100644
--- a/common/js/common/common.js
+++ b/common/js/common/common.js
@@ -853,8 +853,7 @@ export const get_format_checks_v2 = (common_config, value) => {
error_text = '';
} else {
is_error = '1';
- const error_text = item.value == 'telephone-number' ? `请输入正确的电话号码或手机号码格式` : `请输入正确的${item.name}格式`;
- error_text = error_text;
+ error_text = item.value == 'telephone-number' ? `请输入正确的电话号码或手机号码格式` : `请输入正确的${item.name}格式`;
}
} else {
// 如果值为空,重置错误状态
@@ -973,12 +972,16 @@ export const time_stamp = (time, date_style = 'horizontal', date_type) => {
if (isEmpty(time)) {
return '';
}
- let new_time = time.replace(/-/g, '/').replace(/年|月|日/g, '/').replace(/\/+$/, '');
+ let new_time = time;
// 检查时间是否符合日期格式, 不符合的话,添加上固定的年月日
if (['option1', 'option2'].includes(date_type) && isNaN(new Date(new_time).getTime())) {
new_time = '1970/01/01 ' + time.replace(/时|分|秒/g, ':').replace(/:+$/, '');
}
- const date = new Date(new_time);
+ let date = new Date(new_time.replace(/-/g, '/').replace(/年|月|日/g, '/').replace(/\/+$/, ''));
+ // 如果可以直接解析成功,就使用直接解析好的数据
+ if (!isNaN(new Date(new_time).getTime())) {
+ date = new Date(new_time);
+ }
// 获取各时间组件
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
diff --git a/pages/form-input/components/form-input/address.vue b/pages/form-input/components/form-input/address.vue
new file mode 100644
index 00000000..b18cc500
--- /dev/null
+++ b/pages/form-input/components/form-input/address.vue
@@ -0,0 +1,127 @@
+
+
+
+ {{ province_name }}{{ city_name ? ' / ' + city_name : '' }}{{ county_name ? ' / ' + county_name : '' }}
+ {{ placeholder }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/form-input/components/form-input/checkbox.vue b/pages/form-input/components/form-input/checkbox.vue
index 3ddddfa4..591a12bf 100644
--- a/pages/form-input/components/form-input/checkbox.vue
+++ b/pages/form-input/components/form-input/checkbox.vue
@@ -27,7 +27,6 @@
import { get_format_checks, isEmpty, get_color_style, get_math, color_change } from '@/common/js/common/common.js';
const app = getApp();
export default {
- name: 'diy',
props: {
propValue: {
type: Object,
diff --git a/pages/form-input/components/form-input/date-group.vue b/pages/form-input/components/form-input/date-group.vue
index 1b201a99..6c6696d1 100644
--- a/pages/form-input/components/form-input/date-group.vue
+++ b/pages/form-input/components/form-input/date-group.vue
@@ -33,7 +33,6 @@
import { get_format_checks, isEmpty, time_stamp } from '@/common/js/common/common.js';
import myDatetime from '@/pages/form-input/components/form-input/modules/my-datetime/my-datetime.vue';
export default {
- name: 'diy',
components: {
myDatetime
},
diff --git a/pages/form-input/components/form-input/date.vue b/pages/form-input/components/form-input/date.vue
index 6a1feb6a..b70cc186 100644
--- a/pages/form-input/components/form-input/date.vue
+++ b/pages/form-input/components/form-input/date.vue
@@ -27,7 +27,6 @@
import { get_format_checks, isEmpty, time_stamp } from '@/common/js/common/common.js';
import myDatetime from '@/pages/form-input/components/form-input/modules/my-datetime/my-datetime.vue';
export default {
- name: 'diy',
components: {
myDatetime
},
diff --git a/pages/form-input/components/form-input/form-input.vue b/pages/form-input/components/form-input/form-input.vue
index 7ed7f835..792e6aa6 100644
--- a/pages/form-input/components/form-input/form-input.vue
+++ b/pages/form-input/components/form-input/form-input.vue
@@ -19,33 +19,39 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
{{ item.com_data.common_config.error_text }}
@@ -67,6 +73,7 @@
+
@@ -82,9 +89,12 @@ import componentSelect from '@/pages/form-input/components/form-input/select.vue
import componentNumber from '@/pages/form-input/components/form-input/number.vue';
import componentDate from '@/pages/form-input/components/form-input/date.vue';
import componentDateGroup from '@/pages/form-input/components/form-input/date-group.vue';
+import componentAddress from '@/pages/form-input/components/form-input/address.vue';
import componentSelectMulti from '@/pages/form-input/components/form-input/select-multi.vue';
+import componentPhone from '@/pages/form-input/components/form-input/phone.vue';
+import componentRegionPicker from '@/pages/common/components/region-picker/region-picker';
export default {
- name: 'diy',
+ name: 'formInput',
components: {
componentInput,
componentTextarea,
@@ -95,6 +105,9 @@ export default {
componentSelectMulti,
componentDate,
componentDateGroup,
+ componentAddress,
+ componentRegionPicker,
+ componentPhone,
},
props: {
propValue: {
@@ -128,6 +141,12 @@ export default {
submit_bg_color: '',
bottom_fixed_style: '',
popup_help_content: '',
+ // 地址弹出框的处理
+ address_index: 0,
+ province_id: '',
+ city_id: '',
+ county_id: '',
+ region_picker_show: false,
};
},
watch: {
@@ -141,7 +160,6 @@ export default {
},
methods: {
isEmpty,
-
init() {
const data = this.propValue;
// 公共配置信息
@@ -169,7 +187,7 @@ export default {
});
},
get_form_border_style(item, flex_direction) {
- return flex_direction == 'row' ? '' : common_form_styles_computer(item) + 'padding: 0px 8rpx;';
+ return flex_direction == 'row' ? '' : common_form_styles_computer(item) + 'padding: 0px 22rpx;box-sizing:content-box;';
},
data_check(e) {
const { is_error, error_text, value, index } = e;
@@ -179,12 +197,26 @@ export default {
data[index].com_data.common_config.error_text = error_text;
this.setData({ data_list: data });
},
+ data_code_check(e) {
+ const { is_error, error_text, value, index } = e;
+ const data = this.data_list;
+ data[index].com_data.form_value_code = value;
+ data[index].com_data.common_config.is_error = is_error;
+ data[index].com_data.common_config.error_text = error_text;
+ this.setData({ data_list: data });
+ },
data_change(e) {
const { value, index } = e;
const data = this.data_list;
data[index].com_data.form_value = value;
this.setData({ data_list: data });
},
+ data_code_chage(e) {
+ const { value, index } = e;
+ const data = this.data_list;
+ data[index].com_data.form_value_code = value;
+ this.setData({ data_list: data });
+ },
data_option_change(e) {
const { list, value, index } = e;
const data = this.data_list;
@@ -192,9 +224,50 @@ export default {
data[index].com_data.custom_option_list = list;
this.setData({ data_list: data });
},
+ dataAddressChange(e) {
+ const { value, index } = e;
+ const data = this.data_list;
+ data[index].com_data.detailed_value = value;
+ this.setData({ data_list: data });
+ },
+
help_icon_event(e) {
this.setData({ popup_help_content: e.currentTarget.dataset.value });
this.$refs.popup.open();
+ },
+ open_ragion(index, province_id, city_id, county_id) {
+ this.setData({
+ region_picker_show: true,
+ province_id,
+ city_id,
+ county_id,
+ address_index: index,
+ });
+ },
+ close_event(e) {
+ this.setData({
+ region_picker_show: false
+ });
+ },
+ region_event(e) {
+ let data = uni.getStorageSync(app.globalData.data.cache_region_picker_choice_key) || {};
+ if((data.province || null) == null) {
+ data.province = {};
+ }
+ if((data.city || null) == null) {
+ data.city = {};
+ }
+ if((data.areal || null) == null) {
+ data.areal = {};
+ }
+ const list = this.data_list;
+ list[this.address_index].com_data = {
+ ...list[this.address_index].com_data,
+ form_value: [data.province.id, data.city.id, data.areal.id],
+ province_name: data.province.name || '',
+ city_name: data.city.name || '',
+ county_name: data.areal.name || '',
+ }
}
}
}
diff --git a/pages/form-input/components/form-input/input.vue b/pages/form-input/components/form-input/input.vue
index 015f4872..4aa48d73 100644
--- a/pages/form-input/components/form-input/input.vue
+++ b/pages/form-input/components/form-input/input.vue
@@ -8,7 +8,6 @@
+
+
\ No newline at end of file
diff --git a/pages/form-input/components/form-input/radio.vue b/pages/form-input/components/form-input/radio.vue
index bc74479a..0c914a2e 100644
--- a/pages/form-input/components/form-input/radio.vue
+++ b/pages/form-input/components/form-input/radio.vue
@@ -12,7 +12,6 @@
import { get_format_checks, isEmpty, get_color_style } from '@/common/js/common/common.js';
const app = getApp();
export default {
- name: 'diy',
props: {
propValue: {
type: Object,
diff --git a/pages/form-input/components/form-input/select-multi.vue b/pages/form-input/components/form-input/select-multi.vue
index 726153d6..021d72a6 100644
--- a/pages/form-input/components/form-input/select-multi.vue
+++ b/pages/form-input/components/form-input/select-multi.vue
@@ -75,7 +75,6 @@
import { get_format_checks, isEmpty, get_color_style, color_change } from '@/common/js/common/common.js';
import componentPopup from '@/components/popup/popup';
export default {
- name: 'diy',
components: {
componentPopup,
},
diff --git a/pages/form-input/components/form-input/select.vue b/pages/form-input/components/form-input/select.vue
index c417db83..a7d1b678 100644
--- a/pages/form-input/components/form-input/select.vue
+++ b/pages/form-input/components/form-input/select.vue
@@ -55,7 +55,6 @@
import { get_format_checks, isEmpty, get_color_style } from '@/common/js/common/common.js';
import componentPopup from '@/components/popup/popup';
export default {
- name: 'diy',
components: {
componentPopup,
},
diff --git a/pages/form-input/components/form-input/textarea.vue b/pages/form-input/components/form-input/textarea.vue
index 8bdad540..e204e36c 100644
--- a/pages/form-input/components/form-input/textarea.vue
+++ b/pages/form-input/components/form-input/textarea.vue
@@ -9,7 +9,6 @@
import { get_format_checks, isEmpty } from '@/common/js/common/common.js';
const app = getApp();
export default {
- name: 'diy',
props: {
propValue: {
type: Object,