Procházet zdrojové kódy

快递地址,填写详细:省市地(三级级联)、街道

sunlupeng před 2 roky
rodič
revize
9ec6d33c50
3 změnil soubory, kde provedl 59 přidání a 6 odebrání
  1. 1 0
      package.json
  2. 46 6
      src/views/HomeView/RedeemView.vue
  3. 12 0
      yarn.lock

+ 1 - 0
package.json

@@ -10,6 +10,7 @@
   "dependencies": {
     "axios": "0.17.1",
     "core-js": "^3.8.3",
+    "element-china-area-data": "^6.0.2",
     "element-ui": "^2.15.12",
     "js-cookie": "2.2.0",
     "node-sass": "6.0.0",

+ 46 - 6
src/views/HomeView/RedeemView.vue

@@ -38,7 +38,7 @@
                                 <span @click="handleClickAddress" role="button" class="btn">修改</span>
                             </div>
                             <p class="phone">{{ phone }}</p>
-                            <p class="address">{{ address }}</p>
+                            <p class="address">{{ addressStr + address }}</p>
                         </div>
                     </div>
                     <div v-else @click="handleClickAddress">
@@ -182,17 +182,28 @@
             </div>
         </el-card>
         <el-dialog title="兑换物品收货地址" :visible.sync="dialogFormVisible" width="500px">
-            <el-form :model="dataForm" ref="dataForm" style="padding: 0 75px;" :rules="rules">
+            <el-form label-position="left" :model="dataForm" ref="dataForm" style="padding: 0 75px;" :rules="rules">
                 <el-form-item label="联系姓名" :label-width="formLabelWidth" prop="name">
                     <el-input size="medium" v-model="dataForm.name" placeholder="请输入联系姓名"></el-input>
                 </el-form-item>
                 <el-form-item label="联系方式" :label-width="formLabelWidth" prop="phone">
                     <el-input size="medium" v-model="dataForm.phone" placeholder="请输入11位手机号码"></el-input>
                 </el-form-item>
-
-                <el-form-item label="联系地址"
+                <el-form-item label="省市区"
+                    :label-width="formLabelWidth" prop="addressArr">
+                    <el-cascader
+                    style="width: 100%;"
+                    clearable
+                    placeholder="请选择省市区"
+                    size="medium"
+                    :options="options"
+                    v-model="dataForm.addressArr"
+                    @change="handleChange">
+                    </el-cascader>
+                </el-form-item>
+                <el-form-item label="街道"
                     :label-width="formLabelWidth" prop="address">
-                    <el-input size="medium" v-model="dataForm.address" placeholder="请输入详细联系地址"></el-input>
+                    <el-input size="medium" v-model="dataForm.address" placeholder="请输入街道"></el-input>
                 </el-form-item>
             </el-form>
             <div slot="footer" class="dialog-footer" style="text-align: center;">
@@ -289,6 +300,13 @@
 </template>
 <script>
 import { integralInfo, festivalInfo, start, kill } from "@/api/allApi";
+import {
+  provinceAndCityData,
+  pcTextArr,
+  regionData,
+  pcaTextArr,
+  codeToText,
+} from "element-china-area-data";
 import { setTab } from '@/utils/auth'
 import { debounce } from '@/utils/index'
 export default {
@@ -307,6 +325,7 @@ export default {
             }
         };
         return {
+            options: regionData ,
             reclaimAddr:'',
             reclaimAddrList:[],
             phoneNumber:'',
@@ -316,6 +335,8 @@ export default {
             activeName: this.$route.query.activeName,
             name: '',
             phone: '',
+            addressArr:[],
+            addressStr:'',
             address: '',
             disabled: true,
             skuCount: 1,
@@ -332,6 +353,7 @@ export default {
             dataForm: {
                 name: '',
                 phone: '',
+                addressArr:[],
                 address: '',
             },
             rules: {
@@ -342,6 +364,9 @@ export default {
                 phone: [
                     { required: true, validator: validPhone, trigger: 'blur' }
                 ],
+                addressArr: [
+                    { required: true, message: '请选择省市区', trigger: 'blur' },
+                ],
                 address: [
                     { required: true, message: '请输入联系地址', trigger: 'blur' },
                     { min: 1, max: 120, message: '长度在 1 到 120 个字符', trigger: 'blur' }
@@ -351,7 +376,7 @@ export default {
                 ],
 
             },
-            formLabelWidth: '100px',
+            formLabelWidth: '80px',
         };
     },
     created() {
@@ -361,6 +386,15 @@ export default {
         this.getInfo(skuId, activeName);
     },
     methods: {
+        handleChange (value) {
+            console.log(value)
+            var loc = "";
+            for (let i = 0; i < value.length; i++) {
+                loc += codeToText[value[i]];
+            }
+            console.log(loc)//打印区域码所对应的属性值即中文地址
+            this.addressStr = loc;
+        },
         handleClickOrderInfo(){
             this.dialogFormOrderInfo = false;
         },
@@ -425,6 +459,8 @@ export default {
                     if(this.contactInfo){
                         this.name = this.contactInfo.contact;
                         this.phone = this.contactInfo.contactPhone;
+                        this.addressArr = this.contactInfo.addressArr;
+                        this.addressStr = this.contactInfo.addressStr;
                         this.address = this.contactInfo.contactAddr;
                     }
                     this.total = response.data.data.price;
@@ -439,6 +475,8 @@ export default {
                     if(this.contactInfo){
                         this.name = this.contactInfo.contact;
                         this.phone = this.contactInfo.contactPhone;
+                        this.addressArr = this.contactInfo.addressArr;
+                        this.addressStr = this.contactInfo.addressStr;
                         this.address = this.contactInfo.contactAddr;
                     }
                 }).catch(() => {
@@ -494,6 +532,8 @@ export default {
                     deliveryType:this.deliveryType,
                     contact: this.name,
                     contactPhone: this.phone,
+                    addressArr:this.dataForm.addressArr,
+                    addressStr:this.addressStr,
                     contactAddr: this.address,
                 
                     skuType: this.data.skuType,

+ 12 - 0
yarn.lock

@@ -2309,6 +2309,11 @@ chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2:
     ansi-styles "^4.1.0"
     supports-color "^7.1.0"
 
+china-division@^2.6.1:
+  version "2.6.1"
+  resolved "https://registry.npmmirror.com/china-division/-/china-division-2.6.1.tgz#a3e3e4609e81077cc97443f78c713e03d66d7fc2"
+  integrity sha512-Iq9YCEWqPcSrD7/7McKpN9QHNbn2iibLmg1NEAxLacijqJzLbytr0sLuKJNY4Exd0LA77N18Pwr9JGgU1p5S6w==
+
 chokidar@^3.5.3:
   version "3.5.3"
   resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
@@ -3024,6 +3029,13 @@ electron-to-chromium@^1.4.284:
   resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.331.tgz#c8ea823968563ef2cbb3495233e9e16c48c54a4a"
   integrity sha512-tdtr9y9oJl8VDiS+HeB6e/JDJqdDGjIk3yRfEMHm5rDnWQ/D5SbafybAayInxolbfbH6pouV5g7ZUAwE/WVtHw==
 
+element-china-area-data@^6.0.2:
+  version "6.0.2"
+  resolved "https://registry.npmmirror.com/element-china-area-data/-/element-china-area-data-6.0.2.tgz#a9fd640e1068758f8a3e333d20d54939d51a26b9"
+  integrity sha512-LGVp0crOnXrcQqNc5RHwPiR8AV2qUrDl4UgZ/Qn2n/izLqMcn924gcJ/pTRPnuT74AFin2SUyMtmmcoe5PDfQQ==
+  dependencies:
+    china-division "^2.6.1"
+
 element-ui@^2.15.12:
   version "2.15.13"
   resolved "https://registry.yarnpkg.com/element-ui/-/element-ui-2.15.13.tgz#380f019ee7d15b181105587b41fd5914c308a143"