¶Ô±ÈÐÂÎļþ |
| | |
| | | <!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/admin/faviconzb.ico"><script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&libraries=service&key=HIDBZ-2QXL4-TAWUD-XET6Q-EKTJE-CCBSQ"></script><title>å¿é¦ä¼å®¶ä¿¡æ¯ç®¡çç³»ç»</title><link href="/admin/static/css/app.54552c99.css" rel="preload" as="style"><link href="/admin/static/css/chunk-vendors.37d0bd45.css" rel="preload" as="style"><link href="/admin/static/js/app.a69f75f9.js" rel="preload" as="script"><link href="/admin/static/js/chunk-vendors.fb8b09e3.js" rel="preload" as="script"><link href="/admin/static/css/chunk-vendors.37d0bd45.css" rel="stylesheet"><link href="/admin/static/css/app.54552c99.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but å¿é¦ä¼å®¶ä¿¡æ¯ç®¡çç³»ç» doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/admin/static/js/chunk-vendors.fb8b09e3.js"></script><script src="/admin/static/js/app.a69f75f9.js"></script></body></html> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import { |
| | | getArea |
| | | } from '../../api/index' |
| | | Component({ |
| | | properties: { |
| | | // placeholderä¸ºéæ©å¨çé»è®¤æç¤ºæå |
| | | placeholder: { |
| | | type: String, |
| | | value: 'è¯·éæ©çå¸å°åº', |
| | | }, |
| | | // valueä¸ºéæ©å¨çé»è®¤å¼ï¼ç±»å为æ°ç» |
| | | value: { |
| | | type: Array, |
| | | value: [], |
| | | // observerçå¬valueçååï¼å¦ææå¼åè°ç¨setLabelæ¹æ³è®¾ç½®éæ©å¨çlabel |
| | | observer(selectedValues) { |
| | | if (selectedValues && selectedValues.length) { |
| | | this.setLabel(); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | data: { |
| | | // labelä¸ºéæ©å¨çæ¾ç¤ºå¼ |
| | | label: '', |
| | | // rangeä¸ºéæ©å¨çå¯é项ï¼ç±»å为æ°ç»ï¼å
å«ä¸ä¸ªæ°ç»ï¼åå«ä¸ºçãå¸ãåº/å¿ |
| | | range: [], |
| | | // pickerValueä¸ºéæ©å¨çéä¸å¼ï¼ç±»å为æ°ç»ï¼å
å«ä¸ä¸ªæ°åï¼åå«ä¸ºçãå¸ãåº/å¿ç䏿 |
| | | pickerValue: [], |
| | | // addressListä¸ºéæ©å¨çæ°æ®æºï¼ç±»å为æ°ç»ï¼å
å«çãå¸ãåº/å¿çä¿¡æ¯ |
| | | addressList: [], |
| | | }, |
| | | // attachedçå½å¨æå½æ°ï¼å¨ç»ä»¶å®ä¾è¿å
¥é¡µé¢èç¹æ æ¶æ§è¡ |
| | | attached() { |
| | | this.initData() |
| | | |
| | | }, |
| | | methods: { |
| | | // wx.setStorageSync('addressList', tl) |
| | | initData(){ |
| | | let list = wx.getStorageSync('addressList') |
| | | if(list && list.length){ |
| | | this.setData({addressList: list}) |
| | | this.setLabel(); |
| | | if (!this.data.value.length) { |
| | | this.initRange(); |
| | | } |
| | | console.log(this.data.addressList) |
| | | }else{ |
| | | getArea({ |
| | | "level": "", |
| | | "pid": "" |
| | | }).then(res => { |
| | | var tl = [] |
| | | if(res && res.data && res.data.length){ |
| | | res.data.forEach(element => { |
| | | let tc = [] |
| | | if(element.children &&element.children.length){ |
| | | element.children.forEach(c => { |
| | | let ta = [] |
| | | if(c.children &&c.children.length){ |
| | | c.children.forEach(a => { |
| | | ta.push({ |
| | | label: a.name, |
| | | value: a.id , |
| | | regionLevel: '3', |
| | | parentRegionCode: c.id |
| | | }) |
| | | }) |
| | | } |
| | | tc.push({ |
| | | label: c.name, |
| | | value: c.id, |
| | | regionLevel:"2", |
| | | children:ta, |
| | | parentRegionCode:element.id |
| | | }) |
| | | }) |
| | | } |
| | | tl.push({ |
| | | label: element.name, |
| | | value: element.id, |
| | | regionLevel:"1", |
| | | children: tc, |
| | | parentRegionCode:"0" |
| | | }) |
| | | }); |
| | | } |
| | | wx.setStorageSync('addressList', tl) |
| | | this.setData({addressList: tl}) |
| | | this.setLabel(); |
| | | if (!this.data.value.length) { |
| | | this.initRange(); |
| | | } |
| | | console.log(this.data.addressList) |
| | | }) |
| | | } |
| | | }, |
| | | // getAddressItemæ¹æ³ç¨äºå°å°åä¿¡æ¯è½¬æ¢ä¸ºéæ©å¨å¯ç¨çæ ¼å¼ |
| | | getAddressItem(data) { |
| | | return { |
| | | label: data.label, |
| | | value: data.value |
| | | }; |
| | | }, |
| | | // setAddressListæ¹æ³ç¨äºå°å°åå表转æ¢ä¸ºéæ©å¨å¯ç¨çæ ¼å¼ |
| | | setAddressList(list) { |
| | | return list.map((v) => this.getAddressItem(v)); |
| | | }, |
| | | // getAddressByCodeæ¹æ³ç¨äºæ ¹æ®valueå¼è·åå°åä¿¡æ¯åå
¶å¨æ°ç»ä¸ç䏿 |
| | | getAddressByCode(list = [], value) { |
| | | let index = list.findIndex(item => item.value === value); |
| | | return [index, list[index] || {}]; |
| | | }, |
| | | // openChildrenæ¹æ³ç¨äºæ ¹æ®value弿å¼ä¸ä¸çº§éæ©å¨ |
| | | openChildren(list, keys) { |
| | | let result = []; |
| | | const handle = (arr, keys) => { |
| | | let newarr = arr.map((v, index) => { |
| | | if (keys && keys.length) { |
| | | let [currentKey, ...nextKey] = keys; |
| | | if (currentKey === index && Array.isArray(v.children)) { |
| | | handle(v.children, nextKey); |
| | | } |
| | | } |
| | | return this.getAddressItem(v); |
| | | }); |
| | | result.push(newarr); |
| | | } |
| | | handle(list, keys); |
| | | return result.reverse(); |
| | | }, |
| | | // onChangeæ¹æ³ä¸ºéæ©å¨çchangeäºä»¶å¤ç彿°ï¼ç¨äºè®¾ç½®labelå触åchangeäºä»¶ |
| | | onChange(e) { |
| | | let [r1, r2, r3] = this.data.range; |
| | | const [v1, v2, v3] = e.detail.value; |
| | | const selected = [r1[v1], r2[v2], r3[v3]]; |
| | | const values = selected.map(v => v.value); |
| | | const label = selected.map(v => v.label).join('-'); |
| | | |
| | | this.triggerEvent("change", { |
| | | value: values, |
| | | label:label |
| | | }); |
| | | this.setData({ |
| | | label:label |
| | | }); |
| | | console.log("label1", label) |
| | | console.log("label",this.data.label) |
| | | }, |
| | | // columnChangeæ¹æ³ä¸ºéæ©å¨çcolumnchangeäºä»¶å¤ç彿°ï¼ç¨äºè®¾ç½®rangeåpickerValue |
| | | columnChange(e) { |
| | | const { |
| | | column, |
| | | value |
| | | } = e.detail; |
| | | this.setColumn(column, value); |
| | | }, |
| | | // setColumnæ¹æ³ç¨äºè®¾ç½®rangeåpickerValue |
| | | setColumn(column, value) { |
| | | let addressList = this.data.addressList; |
| | | if (!addressList || addressList.length === 0) return; |
| | | let [r1, r2, r3] = this.data.range; |
| | | if (column === 0) { |
| | | r2 = this.setAddressList(addressList[value].children); |
| | | r3 = this.setAddressList(addressList[value].children[0].children); |
| | | this.setData({ |
| | | pickerValue: [value, 0, 0] |
| | | }); |
| | | } else if (column === 1) { |
| | | const [v1] = this.data.pickerValue; |
| | | r3 = this.setAddressList(addressList[v1].children[value].children); |
| | | this.setData({ |
| | | pickerValue: [v1, value, 0] |
| | | }); |
| | | } |
| | | this.setData({ |
| | | range: [r1, r2, r3] |
| | | }); |
| | | }, |
| | | // setLabelæ¹æ³ç¨äºè®¾ç½®label |
| | | setLabel() { |
| | | let addressList = this.data.addressList; |
| | | if (addressList && addressList.length) { |
| | | const [v1, v2, v3] = this.data.value; |
| | | const [s1, { |
| | | label: t1, |
| | | children: l1 |
| | | }] = this.getAddressByCode(addressList, v1); |
| | | const [s2, { |
| | | label: t2, |
| | | children: l2 |
| | | }] = this.getAddressByCode(l1, v2); |
| | | const [s3, { |
| | | label: t3 |
| | | }] = this.getAddressByCode(l2, v3); |
| | | const label = [t1, t2, t3].filter(v => v).join('-'); |
| | | const pickerValue = [s1, s2, s3]; |
| | | const range = this.openChildren(addressList, [s1, s2, s3]); |
| | | if (label.length) { |
| | | this.setData({ |
| | | label, |
| | | range, |
| | | pickerValue |
| | | }); |
| | | } |
| | | } else { |
| | | |
| | | } |
| | | }, |
| | | // initRangeæ¹æ³ç¨äºåå§årange |
| | | initRange() { |
| | | if (!this.data.value.length) { |
| | | const range = this.openChildren(this.data.addressList, [0, 0, 0]); |
| | | this.setData({ |
| | | range |
| | | }); |
| | | } |
| | | }, |
| | | |
| | | }, |
| | | }); |
¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "component": true, |
| | | "usingComponents": {} |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <picker mode="multiSelector" model:value="{{pickerValue}}" range-key="label" range="{{range}}" bindchange="onChange" |
| | | bindcolumnchange="columnChange"> |
| | | <view> |
| | | <!-- 妿已ç»éæ©äºé项ï¼åæ¾ç¤ºé项çlabel屿§ï¼å¦åæ¾ç¤ºplaceholder屿§ã --> |
| | | <text wx:if="{{label}}"> {{ label }} </text> |
| | | <text style="color: #999" wx:else> {{ placeholder }}</text> |
| | | </view> |
| | | </picker> |
| | |
| | | // import { areaList } from '@vant/area-data'; |
| | | import { |
| | | getDictData, |
| | | getArea, |
| | |
| | | */ |
| | | data: { |
| | | name: '', |
| | | phone: '', |
| | | |
| | | phone: '', |
| | | |
| | | showAreaList: false, |
| | | areaList: [], |
| | | addr: {}, |
| | |
| | | |
| | | } |
| | | }) |
| | | }, |
| | | regionChange(e) { |
| | | console.log(e) |
| | | if(e.detail.value &&e.detail.value.length ==3){ |
| | | var tn = e.detail.label.split("-") |
| | | const addr = { |
| | | provinceCode: e.detail.value[0] , |
| | | provinceName: tn[0], |
| | | cityCode: e.detail.value[1] , |
| | | cityName: tn[1], |
| | | areaCode: e.detail.value[2] , |
| | | areaName: tn[2] |
| | | } |
| | | this.setData({ addr, showAreaList: false }) |
| | | console.log('selectedOptions', addr); |
| | | } |
| | | }, |
| | | |
| | | onSubmit() { |
| | | const { |
| | | name, |
| | |
| | | if (!addr.areaCode || !addr.cityCode) return wx.showToast({ |
| | | title: 'è¯·éæ©åå¸', |
| | | icon: 'none' |
| | | }) |
| | | console.log({ |
| | | name, |
| | | phone, |
| | | ...addr |
| | | }) |
| | | saveFreeCustomizationApply({ |
| | | name, |
| | |
| | | onClose() { |
| | | this.setData({ showAreaList: false }) |
| | | }, |
| | | onClick() { |
| | | this.setData({ showAreaList: true }) |
| | | }, |
| | | initData() { |
| | | getArea({ |
| | | "level": "", |
| | | "pid": "" |
| | | }).then(res => { |
| | | this.setData({areaList: res.data}) |
| | | }) |
| | | // getArea({ |
| | | // "level": "", |
| | | // "pid": "" |
| | | // }).then(res => { |
| | | // var tl = [] |
| | | // if(res && res.data && res.data.length){ |
| | | // res.data.forEach(element => { |
| | | // let tc = [] |
| | | // if(element.children &&element.children.length){ |
| | | // element.children.forEach(c => { |
| | | // let ta = [] |
| | | // if(c.children &&c.children.length){ |
| | | // c.children.forEach(a => { |
| | | // ta.push({ |
| | | // name: a.name, |
| | | // id: a.id |
| | | // }) |
| | | // }) |
| | | // } |
| | | // tc.push({ |
| | | // name: c.name, |
| | | // id: c.id, |
| | | // children:ta, |
| | | // }) |
| | | // }) |
| | | // } |
| | | // tl.push({ |
| | | // name: element.name, |
| | | // id: element.id, |
| | | // children: tc, |
| | | // }) |
| | | // }); |
| | | // } |
| | | // this.setData({areaList: tl}) |
| | | // console.log(this.data.areaList) |
| | | // }) |
| | | getDictData({ |
| | | code: 'WEIXIN_DEFAULT_IMGS', |
| | | label: 'DESIGN_BANNER' |
| | |
| | | { |
| | | "usingComponents": { |
| | | "van-cascader": "@vant/weapp/field/index", |
| | | "van-field": "@vant/weapp/field/index", |
| | | "van-popup": "@vant/weapp/popup/index" |
| | | "van-popup": "@vant/weapp/popup/index", |
| | | "areaSel": "/components/areaSel/areaSel" |
| | | }, |
| | | "navigationBarTitleText": "0å
å
费设计" |
| | | } |
| | |
| | | </view> |
| | | <view class="line"> |
| | | <image class="icon" src="../../static/icon/design_ic_city.png" mode="widthFix"></image> |
| | | <picker class="city_picler" mode="region" value="{{ addr }}" bindchange="positionChange"> |
| | | <!-- <picker class="city_picler" mode="region" value="{{ addr }}" bindchange="positionChange"> |
| | | <view class="placeholder9" hidden="{{ addr.cityName }}">è¯·éæ©å°å</view> |
| | | <view class="picker" hidden="{{ !addr.cityName }}"> |
| | | {{ addr.provinceName }}{{ addr.cityName }}{{ addr.areaName }} |
| | | </view> |
| | | </picker> |
| | | </picker> --> |
| | | <areaSel bindchange="regionChange" placeholder="è¯·éæ©æå¨åºå" value="{{['210000000','210500000','210501000']}}" /> |
| | | <image class="arrow_right" src="../../static/icon/arrow_right.png" mode="widthFix"></image> |
| | | </view> |
| | | </view> |
| | | <view class="btn" bindtap="onSubmit">ç«å³æ¥å</view> |
| | | </view> |
| | | <image class="banner" src="{{ WechatIMG558 }}" mode="widthFix"></image> |
| | | <!-- --> |
| | | <!-- æç¤º:vantç»ä»¶ç»çæ ·å¼ï¼å¯ä»¥æ ¹æ®éæ±æ´æ¹ --> |
| | | <view style="height:30rpx;"></view> |
| | | |
| | | </view> |