黄琪勇 5 месяцев назад
Родитель
Сommit
6f2f716402

+ 37 - 9
miniprogram/pages/address/addAddress.ts

@@ -14,6 +14,7 @@ Component({
     name: "",
     phoneNumber: "",
 
+    cacheArea: [] as { cityCode: string, shiftCityCode: string }[], // 临时存储的对应关系
     showArea: false,
     areaList: [] as any, // 省市区
     province: "",
@@ -48,6 +49,10 @@ Component({
               regionName: params.regionName,
               detailAddress: params.detailAddress
             })
+            // 回显市区
+            this.setData({
+              city: this.formateCityCode(true)
+            })
           }
         } catch (e: any) {
           console.log(e, 888)
@@ -85,7 +90,7 @@ Component({
     /** 确定选择地区 */
     submitArea(e: any) {
       const selectedOptions: any = e.detail.values
-      if (!selectedOptions || !selectedOptions[selectedOptions.length - 1]) {
+      if (!selectedOptions || !selectedOptions[0]) {
         wx.showToast({
           title: '未选中值',
           icon: 'none'
@@ -95,10 +100,10 @@ Component({
       this.setData({
         province: selectedOptions[0].code,
         city: selectedOptions[1].code,
-        region: selectedOptions[2].code,
+        region: selectedOptions[2]?.code,
         provinceName: selectedOptions[0].name,
         cityName: selectedOptions[1].name,
-        regionName: selectedOptions[2].name,
+        regionName: selectedOptions[2]?.name,
         showArea: false
       })
     },
@@ -121,8 +126,19 @@ Component({
         province_list[item.code] = item.name;
       });
       area.forEach((item: any) => {
-        item.areas && item.areas.forEach((city: any) => {
-          city_list[city.code] = city.name;
+        item.areas && item.areas.forEach((city: any, index: number) => {
+          let code = city.code + ""
+          // 某些数据不标准 这里需要转换一下
+          if (code[4] !== "0" || code[5] !== "0") {
+            // 现在把区域的数据改为市的
+            const newCode = code.substring(0, 2) + (index < 10 ? `a${index}` : index < 20 ? `b${index - 10}` : index < 30 ? `c${index - 20}` : `d${index - 30}`) + "00";
+            this.data.cacheArea.push({
+              cityCode: code,
+              shiftCityCode: newCode
+            })
+            code = newCode
+          }
+          city_list[code] = city.name;
         });
       });
       area.forEach((item: any) => {
@@ -138,6 +154,16 @@ Component({
         county_list
       };
     },
+    // 转换
+    formateCityCode(reverse?: boolean) {
+      if (!this.data.region && this.data.city) {
+        const cityCodeObj = this.data.cacheArea.find((item: any) => {
+          return item[reverse ? "cityCode" : "shiftCityCode"] == this.data.city
+        })
+        return cityCodeObj ? cityCodeObj[reverse ? "shiftCityCode" : "cityCode"] : ""
+      }
+      return this.data.city
+    },
     /** 最终提交 */
     async onSubmit() {
       try {
@@ -157,7 +183,7 @@ Component({
           return
         }
 
-        if (!params.province || !params.city || !params.region) {
+        if (!params.province || !params.city) {
           wx.showToast({
             title: '请选择地区',
             icon: "none"
@@ -175,6 +201,8 @@ Component({
           mask: true,
           title: "",
         });
+         // 转换CityCode
+        const citycode = this.formateCityCode()
         // 编辑
         let id
         if (params.editId) {
@@ -184,7 +212,7 @@ Component({
             phoneNumber: params.phoneNumber,
             name: params.name,
             province: params.province,
-            city: params.city,
+            city: citycode,
             region: params.region,
             detailAddress: params.detailAddress,
             defaultStatus: false,
@@ -199,7 +227,7 @@ Component({
             phoneNumber: params.phoneNumber,
             name: params.name,
             province: params.province,
-            city: params.city,
+            city: citycode,
             region: params.region,
             detailAddress: params.detailAddress,
             defaultStatus: false,
@@ -212,7 +240,7 @@ Component({
           })
         }
         wx.hideLoading()
-        this.triggerEvent('addAddress', { addressInfo: { id, name: params.name, phoneNumber: params.phoneNumber, addressDes: params.provinceName + params.cityName + params.regionName + params.detailAddress } }, {})
+        this.triggerEvent('addAddress', { addressInfo: { id, name: params.name, phoneNumber: params.phoneNumber, addressDes: params.provinceName + params.cityName + (params.regionName || "") + params.detailAddress } }, {})
         this.onDialogClose()
       } catch {
         wx.hideLoading()

+ 1 - 1
miniprogram/pages/address/addAddress.wxml

@@ -35,6 +35,6 @@
   </view>
   <!-- 地区 -->
   <van-popup round="{{true}}" lock-scroll="{{true}}" z-index="{{99999999}}" show="{{showArea}}" position="bottom" safe-area-inset-bottom="{{false}}" bind:close="onCloseAreaList">
-    <van-area areaList="{{areaList}}" visible-item-count="6" item-height="46" value="{{ region }}" bind:cancel="onCloseAreaList" bind:confirm="submitArea" />
+    <van-area areaList="{{areaList}}" visible-item-count="6" item-height="46" value="{{ region || city }}" bind:cancel="onCloseAreaList" bind:confirm="submitArea" />
   </van-popup>
 </view>

+ 1 - 1
miniprogram/pages/address/addressList.ts

@@ -105,6 +105,6 @@ Page({
     console.log(item,233339999)
     const pages = getCurrentPages();
     const prevPage = pages[pages.length - 2]; // 获取上一个页面实例
-    prevPage.setData({ addressInfo: item ? { id: item.id, name: item.name, phoneNumber: item.phoneNumber, addressDes: item.provinceName + item.cityName + item.regionName + item.detailAddress } : {} });
+    prevPage.setData({ addressInfo: item ? { id: item.id, name: item.name, phoneNumber: item.phoneNumber, addressDes: item.provinceName + item.cityName + (item.regionName || "") + item.detailAddress } : {} });
   }
 })

+ 3 - 3
miniprogram/pages/login/login.less

@@ -64,10 +64,10 @@
       justify-content: center;
     }
     .radio {
-      width: 28rpx;
-      height: 28rpx;
+      width: 32rpx;
+      height: 32rpx;
       margin-right: 12rpx;
-      transform: translateY(4rpx)
+      transform: translateY(6rpx)
     }
     .protocol {
       color: #0AAF20;

+ 40 - 10
miniprogram/pages/member/addMember.ts

@@ -56,6 +56,7 @@ Page({
     name: "",
     gender: "1",
 
+    cacheArea: [] as { cityCode: string, shiftCityCode: string }[], // 临时存储的对应关系
     showArea: false,
     areaList: [] as any, // 省市区
     provinceCode: null, // 地区
@@ -125,6 +126,12 @@ Page({
           className: params.currentClass + "班"
         })
         await this.getAreas()
+
+        // 回显市区
+        this.setData({
+          cityCode: this.formateCityCode(true)
+        })
+        
         await this.getSchools()
         await this.getSchoolAreaDetail()
         // 学校index
@@ -180,7 +187,7 @@ Page({
   /** 确定选择地区 */
   submitArea(e: any) {
     const selectedOptions: any = e.detail.values
-    if (!selectedOptions || !selectedOptions[selectedOptions.length - 1]) {
+    if (!selectedOptions || !selectedOptions[0]) {
       wx.showToast({
         title: '未选中值',
         icon: 'none'
@@ -190,10 +197,10 @@ Page({
     this.setData({
       provinceCode: selectedOptions[0].code,
       cityCode: selectedOptions[1].code,
-      regionCode: selectedOptions[2].code,
+      regionCode: selectedOptions[2]?.code,
       provinceName: selectedOptions[0].name,
       cityName: selectedOptions[1].name,
-      regionName: selectedOptions[2].name,
+      regionName: selectedOptions[2]?.name,
       showArea: false,
 
       searchName: "",
@@ -229,8 +236,19 @@ Page({
       province_list[item.code] = item.name;
     });
     area.forEach((item: any) => {
-      item.areas && item.areas.forEach((city: any) => {
-        city_list[city.code] = city.name;
+      item.areas && item.areas.forEach((city: any, index: number) => {
+        let code = city.code + ""
+        // 某些数据不标准 这里需要转换一下
+        if (code[4] !== "0" || code[5] !== "0") {
+          // 现在把区域的数据改为市的
+          const newCode = code.substring(0, 2) + (index < 10 ? `a${index}` : index < 20 ? `b${index - 10}` : index < 30 ? `c${index - 20}` : `d${index - 30}`) + "00";
+          this.data.cacheArea.push({
+            cityCode: code,
+            shiftCityCode: newCode
+          })
+          code = newCode
+        }
+        city_list[code] = city.name;
       });
     });
     area.forEach((item: any) => {
@@ -246,9 +264,19 @@ Page({
       county_list
     };
   },
+  // 转换
+  formateCityCode(reverse?: boolean) {
+    if (!this.data.regionCode && this.data.cityCode) {
+      const cityCodeObj = this.data.cacheArea.find((item: any) => {
+        return item[reverse ? "cityCode" : "shiftCityCode"] == this.data.cityCode
+      })
+      return cityCodeObj ? cityCodeObj[reverse ? "shiftCityCode" : "cityCode"] : ""
+    }
+    return this.data.cityCode
+  },
   /** 选择学校 */
   onSelectSchool() {
-    if (!this.data.provinceName) {
+    if (!this.data.provinceCode) {
       wx.showToast({
         title: '请先选择学校地区',
         icon: 'none'
@@ -310,14 +338,16 @@ Page({
     })
     try {
       // 判断是否有地区信息
-      if (!this.data.provinceCode || !this.data.cityCode || !this.data.regionCode) {
+      if (!this.data.provinceCode || !this.data.cityCode) {
         return
       }
+      // 转换CityCode
+      const citycode = this.formateCityCode()
       const { data } = await api_schoolAreaList({
         name,
         testFlag: true,
         provinceCode: this.data.provinceCode,
-        cityCode: this.data.cityCode,
+        cityCode: citycode,
         regionCode: this.data.regionCode
       })
       const result = data.data || []
@@ -531,7 +561,7 @@ Page({
         return
       }
 
-      if (!params.provinceCode || !params.cityCode || !params.regionCode) {
+      if (!params.provinceCode || !params.cityCode) {
         wx.showToast({
           title: '请选择学校地区',
           icon: "none"
@@ -596,7 +626,7 @@ Page({
           defaultStatus: false
         })
         if (this.data.redirectUrl === "index") {
-          prevPage.setData({ memberInfo: { id: data.data.id, name: params.name, phone: params.phone, schoolInfo: params.provinceName + params.cityName + params.regionName + params.schoolAreaName + params.gradeName + params.className } });
+          prevPage.setData({ memberInfo: { id: data.data.id, name: params.name, phone: params.phone, schoolInfo: params.provinceName + params.cityName + (params.regionName || "") + params.schoolAreaName + params.gradeName + params.className } });
         }
         wx.showToast({
           title: '保存成功',

+ 1 - 1
miniprogram/pages/member/addMember.wxml

@@ -63,7 +63,7 @@
   </view>
   <!-- 地区 -->
   <van-popup round="{{true}}" lock-scroll="{{true}}" z-index="{{103}}" show="{{showArea}}" position="bottom" safe-area-inset-bottom="{{false}}" bind:close="onCloseAreaList">
-    <van-area areaList="{{areaList}}" visible-item-count="6" item-height="46" value="{{ regionCode }}" bind:cancel="onCloseAreaList" bind:confirm="submitArea" />
+    <van-area areaList="{{areaList}}" visible-item-count="6" item-height="46" value="{{  regionCode || cityCode }}" bind:cancel="onCloseAreaList" bind:confirm="submitArea" />
   </van-popup>
   <!-- 学校 -->
   <van-popup round="{{true}}" lock-scroll="{{true}}" z-index="{{102}}" show="{{showSchool}}" position="bottom" safe-area-inset-bottom="{{false}}" bind:close="onCloseSchool">

+ 1 - 1
miniprogram/pages/member/memberList.ts

@@ -100,6 +100,6 @@ Page({
   setPagesData(item: any) {
     const pages = getCurrentPages();
     const prevPage = pages[pages.length - 2]; // 获取上一个页面实例
-    prevPage.setData({ memberInfo: item ? { id: item.id, name: item.name, phone: item.phone, schoolInfo: item.provinceName + item.cityName + item.regionName + item.schoolAreaName + GRADE_ENUM[item.currentGradeNum] + item.currentClass + "班" } : {} });
+    prevPage.setData({ memberInfo: item ? { id: item.id, name: item.name, phone: item.phone, schoolInfo: item.provinceName + item.cityName + (item.regionName || "") + item.schoolAreaName + GRADE_ENUM[item.currentGradeNum] + item.currentClass + "班" } : {} });
   }
 })

+ 1 - 1
project.config.json

@@ -42,6 +42,6 @@
     "ignore": [],
     "include": []
   },
-  "appid": "wx524b61f5bec60655",
+  "appid": "wxafd9b0a1dea63f15",
   "projectname": "orchestra-music-activation"
 }