From 793391c23ba45b3dab55657ecd2448d87e17f854 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 16 九月 2025 13:49:53 +0800
Subject: [PATCH] 设备巡检、智能派单
---
src/pages_template/pages/address/index.ts | 256 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 256 insertions(+), 0 deletions(-)
diff --git a/src/pages_template/pages/address/index.ts b/src/pages_template/pages/address/index.ts
new file mode 100644
index 0000000..32701bc
--- /dev/null
+++ b/src/pages_template/pages/address/index.ts
@@ -0,0 +1,256 @@
+import { ref, reactive, computed } from 'vue';
+import { onShow } from '@dcloudio/uni-app';
+
+/**
+ * 鍦板潃淇℃伅鎺ュ彛
+ */
+export interface AddressInfo {
+ id: string; // 鍦板潃ID
+ name: string; // 鏀惰揣浜哄鍚�
+ phone: string; // 鎵嬫満鍙风爜(宸茶劚鏁�)
+ region: string; // 鍦板尯(濡�: 骞夸笢鐪佹繁鍦冲競鍗楀北鍖�)
+ address: string; // 璇︾粏鍦板潃
+ tag: string; // 鍦板潃鏍囩(濡�: 瀹躲�佸叕鍙搞�佸鏍�)
+ isDefault: boolean; // 鏄惁涓洪粯璁ゅ湴鍧�
+}
+
+/**
+ * 绀轰緥鍦板潃鏁版嵁
+ */
+const sampleAddresses: AddressInfo[] = [
+ {
+ id: '1',
+ name: '寮犱笁',
+ phone: '13712348888',
+ region: '骞夸笢鐪佹繁鍦冲競鍗楀北鍖�',
+ address: '绉戞妧鍥崡璺�888鍙峰垱鏂板ぇ鍘搴�10妤�',
+ tag: '鍏徃',
+ isDefault: true
+ },
+ {
+ id: '2',
+ name: '鏉庡洓',
+ phone: '13912345678',
+ region: '骞夸笢鐪佹繁鍦冲競绂忕敯鍖�',
+ address: '绂忎腑璺�1000鍙锋捣鍩庡ぇ鍘搴�20妤�2001瀹�',
+ tag: '瀹�',
+ isDefault: false
+ },
+ {
+ id: '3',
+ name: '鐜嬩簲',
+ phone: '15812342233',
+ region: '骞夸笢鐪佸箍宸炲競澶╂渤鍖�',
+ address: '澶╂渤璺�100鍙峰ぉ娌冲煄璐墿涓績闄勮繎灏忓尯A鏍�3鍗曞厓701瀹�',
+ tag: '瀛︽牎',
+ isDefault: false
+ }
+];
+
+// 鍏变韩鐨勫湴鍧�鏁版嵁
+const addressStore = {
+ list: ref<AddressInfo[]>([]),
+ tags: ref(['瀹�', '鍏徃', '瀛︽牎'])
+};
+
+/**
+ * 鏍煎紡鍖栨墜鏈哄彿锛屼腑闂�4浣嶇敤鏄熷彿浠f浛
+ */
+export function formatPhoneNumber(phone: string): string {
+ return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
+}
+
+/**
+ * 鍦板潃鍒楄〃椤甸潰Hook
+ * @description 鎻愪緵鍦板潃鍒楄〃椤甸潰鎵�闇�鐨勭姸鎬佸拰鏂规硶
+ */
+export function useAddressListPage() {
+ // 浠庡叡浜玸tore鑾峰彇鍝嶅簲寮忔暟鎹�
+ const addressList = addressStore.list;
+
+ // 浣跨敤璁$畻灞炴�ц绠楁槸鍚︿负绌虹姸鎬�
+ const emptyStatus = computed(() => addressList.value.length === 0);
+
+ // 鏇存柊鍦板潃鍒楄〃
+ function refreshAddressList() {
+ addressList.value = sampleAddresses
+ // 瀹為檯椤圭洰涓紝杩欓噷搴旇璋冪敤API鑾峰彇鏈�鏂扮殑鍦板潃鍒楄〃
+ // const response = await api.getAddressList();
+ // addressList.value = response.data;
+ }
+
+ // 璁剧疆榛樿鍦板潃
+ function setDefaultAddress(id: string): boolean {
+ const index = addressList.value.findIndex(item => item.id === id);
+
+ if (index === -1) return false;
+
+ // 鏇存柊鎵�鏈夊湴鍧�鐨勯粯璁ょ姸鎬�
+ addressList.value = addressList.value.map(item => ({
+ ...item,
+ isDefault: item.id === id
+ }));
+
+ return true;
+ }
+
+ // 鍒犻櫎鍦板潃
+ function deleteAddress(id: string): boolean {
+ const initialLength = addressList.value.length;
+ addressList.value = addressList.value.filter(item => item.id !== id);
+ return addressList.value.length !== initialLength;
+ }
+
+ // 椤甸潰鏄剧ず鏃跺埛鏂版暟鎹�
+ onShow(() => {
+ refreshAddressList();
+ });
+
+ return {
+ // 鍝嶅簲寮忕姸鎬�
+ addressList,
+ emptyStatus,
+ // 鏂规硶
+ setDefaultAddress,
+ deleteAddress,
+ refreshAddressList
+ };
+}
+
+/**
+ * 鍦板潃缂栬緫椤甸潰Hook
+ * @description 鎻愪緵鍦板潃缂栬緫椤甸潰鎵�闇�鐨勭姸鎬佸拰鏂规硶
+ */
+export function useAddressEditPage() {
+ // 浠庡叡浜玸tore鑾峰彇鍝嶅簲寮忔暟鎹�
+ const addressList = addressStore.list;
+ const addressTags = addressStore.tags;
+
+ // 椤甸潰鐘舵��
+ const isEdit = ref(false);
+ const editId = ref('');
+ const defaultAddress = ref(false);
+ const selectedTag = ref('瀹�');
+
+ // 琛ㄥ崟鏁版嵁
+ const form = reactive({
+ name: '',
+ phone: '',
+ region: '',
+ address: ''
+ });
+
+ // 鍔犺浇缂栬緫鏁版嵁
+ function loadAddressData(id: string): boolean {
+ const address = addressList.value.find(item => item.id === id);
+
+ if (!address) return false;
+
+ // 濉厖琛ㄥ崟鏁版嵁
+ form.name = address.name;
+ form.phone = address.phone;
+ form.region = address.region;
+ form.address = address.address;
+ selectedTag.value = address.tag;
+ defaultAddress.value = address.isDefault;
+
+ return true;
+ }
+
+ // 鍒濆鍖栭〉闈�
+ function initEditPage(id?: string) {
+ // 閲嶇疆鐘舵��
+ isEdit.value = !!id;
+ editId.value = id || '';
+ defaultAddress.value = false;
+ selectedTag.value = '瀹�';
+
+ form.name = '';
+ form.phone = '';
+ form.region = '';
+ form.address = '';
+
+ // 濡傛灉鏄紪杈戞ā寮忥紝鍔犺浇鍦板潃鏁版嵁
+ if (id) {
+ loadAddressData(id);
+ }
+ }
+
+ // 淇濆瓨鍦板潃
+ function saveAddress(): boolean {
+ if (isEdit.value) {
+ // 缂栬緫鐜版湁鍦板潃
+ const index = addressList.value.findIndex(item => item.id === editId.value);
+ if (index === -1) return false;
+
+ // 濡傛灉璁句负榛樿锛屾洿鏂板叾浠栧湴鍧�
+ if (defaultAddress.value) {
+ addressList.value = addressList.value.map(item => {
+ if (item.id !== editId.value) {
+ return { ...item, isDefault: false };
+ }
+ return item;
+ });
+ }
+
+ // 鏇存柊褰撳墠鍦板潃
+ addressList.value[index] = {
+ ...addressList.value[index],
+ name: form.name,
+ phone: form.phone,
+ region: form.region,
+ address: form.address,
+ tag: selectedTag.value,
+ isDefault: defaultAddress.value
+ };
+ } else {
+ // 娣诲姞鏂板湴鍧�
+ const newId = Date.now().toString();
+
+ // 濡傛灉璁句负榛樿锛屾洿鏂板叾浠栧湴鍧�
+ if (defaultAddress.value) {
+ addressList.value = addressList.value.map(item => ({
+ ...item,
+ isDefault: false
+ }));
+ }
+
+ // 娣诲姞鏂板湴鍧�
+ addressList.value.push({
+ id: newId,
+ name: form.name,
+ phone: form.phone,
+ region: form.region,
+ address: form.address,
+ tag: selectedTag.value,
+ isDefault: defaultAddress.value
+ });
+ }
+
+ return true;
+ }
+
+ // 鍒犻櫎鍦板潃
+ function deleteAddress(): boolean {
+ if (!isEdit.value) return false;
+
+ const initialLength = addressList.value.length;
+ addressList.value = addressList.value.filter(item => item.id !== editId.value);
+
+ return addressList.value.length !== initialLength;
+ }
+
+ return {
+ // 鍝嶅簲寮忕姸鎬�
+ isEdit,
+ editId,
+ form,
+ defaultAddress,
+ selectedTag,
+ addressTags,
+ // 鏂规硶
+ initEditPage,
+ saveAddress,
+ deleteAddress
+ };
+}
\ No newline at end of file
--
Gitblit v1.9.3