hookehuyr

🐞 fix: 修复地址数据保存时的情况不一样,取数据时可能出现问题的处理

1 <!-- 1 <!--
2 * @Date: 2022-08-30 14:32:11 2 * @Date: 2022-08-30 14:32:11
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2024-11-21 13:14:21 4 + * @LastEditTime: 2024-11-21 13:34:36
5 * @FilePath: /data-table/src/components/AreaPickerField/index.vue 5 * @FilePath: /data-table/src/components/AreaPickerField/index.vue
6 * @Description: 省市区选择控件 6 * @Description: 省市区选择控件
7 --> 7 -->
...@@ -84,6 +84,15 @@ const validatorMessage = (val, rule) => { ...@@ -84,6 +84,15 @@ const validatorMessage = (val, rule) => {
84 }; 84 };
85 const rules = [{ validator, message: validatorMessage }]; 85 const rules = [{ validator, message: validatorMessage }];
86 86
87 +const isJSON = (value) => {
88 + try {
89 + JSON.parse(value);
90 + return true;
91 + } catch (e) {
92 + return false;
93 + }
94 +}
95 +
87 // 子组件通信,适配规则触发 96 // 子组件通信,适配规则触发
88 const onActive = (val) => { 97 const onActive = (val) => {
89 // 适配cookie保存未完成表单 98 // 适配cookie保存未完成表单
...@@ -94,11 +103,22 @@ const onActive = (val) => { ...@@ -94,11 +103,22 @@ const onActive = (val) => {
94 // 如果Cookie存在,更新它 103 // 如果Cookie存在,更新它
95 let obj = JSON.parse(existingCookie); 104 let obj = JSON.parse(existingCookie);
96 if (val.city_code) { // 修改了 105 if (val.city_code) { // 修改了
97 - let temp = JSON.parse(obj[props.item.key]); 106 + let temp = null;
98 - temp.city_code = val.city_code; 107 + if (isJSON(obj[props.item.key])) {
99 - temp.province = val.province; 108 + temp = JSON.parse(obj[props.item.key]);
100 - temp.city = val.city; 109 + temp.city_code = val.city_code;
101 - temp.district = val.district; 110 + temp.province = val.province;
111 + temp.city = val.city;
112 + temp.district = val.district;
113 + } else {
114 + temp = {
115 + city_code: val.city_code,
116 + province: val.province,
117 + city: val.city,
118 + district: val.district,
119 + street: val.street,
120 + };
121 + }
102 obj[props.item.key] = JSON.stringify(temp); // 替换掉旧值 122 obj[props.item.key] = JSON.stringify(temp); // 替换掉旧值
103 } else { // 只修改了地址 123 } else { // 只修改了地址
104 let temp = JSON.parse(obj[props.item.key]); 124 let temp = JSON.parse(obj[props.item.key]);
......