123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- const https = require("../../utils/serverData");
- const pinyin = require('js-pinyin');
- Component({
- properties: {
- changeValue: "",
- changeLabel: ""
- },
- data: {
- mapData: [],
- loading: false,
- indexList: [],
- value: "",
- label: "",
- cityList: []
- },
- attached: async function () {
- const {
- changeValue,
- } = this.data
- this.setData({
- loading: true
- })
- let mapData = await this.getAreaList()
- this.setData({
- mapData
- })
- mapData.map(item => {
- item.pinyin = pinyin.getFullChars(item.label);
- });
- let provice = {};
- mapData.map((item) => {
- const Initials = item.pinyin[0].toUpperCase();
-
- if (provice[Initials]) {
- provice[Initials].push(item);
- } else {
- provice[Initials] = [item];
- }
- });
-
- let filterData = [];
- for (let key in provice) {
- const obj = {
- letter: key,
- list: provice[key]
- };
- filterData.push(obj)
- }
- filterData.sort((a, b) => {
- return a.letter.localeCompare(b.letter)
- });
-
- let indexList = [],
- arr = [];
- filterData.forEach((item) => {
- indexList.push(item.letter)
- let model = {
- letter: item.letter,
- list: []
- }
- item.list.forEach((si, sii) => {
- const modelb = {
- ...si,
- order: Math.floor(item.list.length / 3) > Math.floor(sii / 3) ? false : true
- }
- model.list.push(modelb);
- })
- arr.push(model);
- }
- );
- let name = "";
- let index = mapData.findIndex((s) => String(s.id) === String(changeValue))
- if (index !== -1) {
- name = this.data.mapData[index].name
- }
- this.setData({
- indexList: indexList,
- cityList: arr,
- value: String(changeValue),
- label: name,
- loading: false
- })
- console.log(changeValue,);
- console.log(this.data.value);
- },
- methods: {
- async getAreaList() {
- const {
- code,
- data
- } = await https.getArea({
- level: 2
- })
- let arr = code === 1 ? data.list : [];
- arr.map((s) => {
- return s.value = s.id, s.label = s.name
- })
- return arr
- },
- bindViewTap(e) {
- const {
- pindex,
- index
- } = e.currentTarget.dataset
- const model = {
- value: this.data.cityList[pindex].list[index].value,
- label: this.data.cityList[pindex].list[index].label,
- }
- this.setData(model)
- console.log(model);
- this.triggerEvent("itemClick", model)
- },
- }
- })
|