You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
280 lines
8.1 KiB
280 lines
8.1 KiB
"use strict";
|
|
const common_vendor = require("../../../common/vendor.js");
|
|
const pages_index_comp_allCity = require("./allCity.js");
|
|
const pages_index_comp_HotCity = require("./HotCity.js");
|
|
const store_modules_car = require("../../../store/modules/car.js");
|
|
const config_site_config = require("../../../config/site.config.js");
|
|
const common_assets = require("../../../common/assets.js");
|
|
let usecarStore = store_modules_car.carStore();
|
|
let {
|
|
mapKey
|
|
} = config_site_config.obj;
|
|
const _sfc_main = {
|
|
data() {
|
|
return {
|
|
letter: [],
|
|
selectLetter: "",
|
|
searchValue: "",
|
|
scrollIntoId: "",
|
|
list: [],
|
|
tId: null,
|
|
searchList: [],
|
|
showMask: false,
|
|
disdingwei: true,
|
|
Visit: [],
|
|
//最近访问
|
|
currentCity: " ",
|
|
longitude: "",
|
|
//经度
|
|
latitude: "",
|
|
//纬度
|
|
seconds: 3,
|
|
po_tips: "重新定位",
|
|
citys: [],
|
|
hotCity: pages_index_comp_HotCity.HotCity
|
|
};
|
|
},
|
|
created() {
|
|
console.log(usecarStore);
|
|
this.initcity();
|
|
var that = this;
|
|
common_vendor.index.getStorage({
|
|
key: "Visit_key",
|
|
success: function(res) {
|
|
that.Visit = res.data;
|
|
}
|
|
});
|
|
that.getWarpweft();
|
|
var mu = [
|
|
"a",
|
|
"b",
|
|
"c",
|
|
"d",
|
|
"e",
|
|
"f",
|
|
"g",
|
|
"h",
|
|
"j",
|
|
"k",
|
|
"l",
|
|
"m",
|
|
"n",
|
|
"p",
|
|
"q",
|
|
"r",
|
|
"s",
|
|
"t",
|
|
"w",
|
|
"x",
|
|
"y",
|
|
"z"
|
|
];
|
|
var tmp = [];
|
|
for (var i = 0; i < mu.length; i++) {
|
|
var item = mu[i];
|
|
for (var j = 0; j < this.citys.length; j++) {
|
|
var py = this.citys[j].py;
|
|
if (py.substring(0, 1) == item) {
|
|
if (tmp.indexOf(item) == -1) {
|
|
this.list[i] = [this.citys[j]];
|
|
tmp.push(item);
|
|
this.letter.push(item.toUpperCase());
|
|
} else {
|
|
this.list[i].push(this.citys[j]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
methods: {
|
|
initcity() {
|
|
let cityArr = pages_index_comp_allCity.allCity.map((arr) => {
|
|
return arr.cityInfoList.map((item) => {
|
|
let obj = {
|
|
cityName: item.cityName,
|
|
pinYin: item.cityPinyin,
|
|
py: item.cityAcronym.toLocaleLowerCase(),
|
|
code: item.cityCode,
|
|
cityInitial: item.cityInitial
|
|
};
|
|
return obj;
|
|
});
|
|
});
|
|
this.citys = cityArr.flat();
|
|
console.log(this.citys);
|
|
},
|
|
getId(index) {
|
|
return this.letter[index];
|
|
},
|
|
scrollTo(letter) {
|
|
this.showMask = true;
|
|
this.selectLetter = letter == "hot" ? "最" : letter;
|
|
setTimeout(() => {
|
|
this.showMask = false;
|
|
}, 300);
|
|
this.scrollIntoId = letter;
|
|
},
|
|
query(source, text) {
|
|
console.log(source, text);
|
|
let res = [];
|
|
var self = this;
|
|
res = source.filter((item) => {
|
|
const arr = [];
|
|
let isHave = false;
|
|
Object.keys(item).forEach((prop) => {
|
|
const itemStr = item[prop];
|
|
self.isString(itemStr) && itemStr.split(",").forEach((val) => {
|
|
arr.push(val);
|
|
});
|
|
});
|
|
arr.some((val) => {
|
|
isHave = new RegExp("^" + text).test(val);
|
|
return isHave;
|
|
});
|
|
return isHave;
|
|
});
|
|
console.log(JSON.stringify(res));
|
|
return res;
|
|
},
|
|
isString(obj) {
|
|
return typeof obj === "string";
|
|
},
|
|
onInput(e) {
|
|
const value = e.detail.value;
|
|
console.log(value);
|
|
if (value !== "" && this.citys && this.citys.length > 0) {
|
|
const queryData = this.query(this.citys, String(value).trim());
|
|
this.searchList = queryData;
|
|
this.disdingwei = false;
|
|
} else {
|
|
this.searchList = [];
|
|
this.disdingwei = true;
|
|
}
|
|
},
|
|
back_city(item) {
|
|
if (item) {
|
|
console.log(item);
|
|
usecarStore.setCar("city", item.code);
|
|
usecarStore.setCar("cityName", item.cityName);
|
|
common_vendor.index.navigateBack();
|
|
return;
|
|
} else {
|
|
this.$emit("back_city", "no");
|
|
}
|
|
},
|
|
// IDZBZ-L5GCZ-EQXXA-ZR5K4-JTSXH-IQBLO
|
|
getWarpweft() {
|
|
var that = this;
|
|
that.po_tips = "定位中...";
|
|
let countdown = setInterval(
|
|
() => {
|
|
that.seconds--;
|
|
common_vendor.index.getLocation({
|
|
type: "wgs84",
|
|
success: function(res) {
|
|
console.log("当前位置的经度:" + res.longitude);
|
|
console.log("当前位置的纬度:" + res.latitude);
|
|
that.longitude = res.longitude;
|
|
that.latitude = res.latitude;
|
|
let url = "https://apis.map.qq.com/ws/geocoder/v1/";
|
|
common_vendor.o$1(url, {
|
|
key: mapKey,
|
|
location: res.latitude + "," + res.longitude,
|
|
output: "jsonp"
|
|
}).then((res2) => {
|
|
console.log("jsonp", res2.result.address_component);
|
|
let {
|
|
province,
|
|
city,
|
|
district
|
|
} = res2.result.address_component;
|
|
that.province = province;
|
|
that.city = city;
|
|
that.area = district;
|
|
console.log(province, city, district);
|
|
that.currentCity = that.citys.find((item) => item.cityName == city);
|
|
if (!that.currentCity) {
|
|
common_vendor.index.$u.toast("获取定位失败,请手动选择城市");
|
|
}
|
|
console.log(that.currentCity, "当前城市");
|
|
}).catch(() => {
|
|
common_vendor.index.$u.toast("获取定位失败,请手动选择城市");
|
|
});
|
|
},
|
|
fail() {
|
|
common_vendor.index.$u.toast("获取定位失败,请手动选择城市");
|
|
}
|
|
});
|
|
if (that.seconds <= 0) {
|
|
that.seconds = 3;
|
|
that.po_tips = "重新定位";
|
|
clearInterval(countdown);
|
|
}
|
|
},
|
|
1e3
|
|
);
|
|
}
|
|
}
|
|
};
|
|
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
return common_vendor.e({
|
|
a: common_vendor.o([($event) => $data.searchValue = $event.detail.value, (...args) => $options.onInput && $options.onInput(...args)]),
|
|
b: $data.searchValue,
|
|
c: $data.disdingwei
|
|
}, $data.disdingwei ? common_vendor.e({
|
|
d: $data.currentCity.cityName
|
|
}, $data.currentCity.cityName ? {
|
|
e: common_vendor.t($data.currentCity.cityName),
|
|
f: common_vendor.o(($event) => $options.back_city($data.currentCity))
|
|
} : {}, {
|
|
g: common_assets._imports_0$1,
|
|
h: common_vendor.t($data.po_tips),
|
|
i: common_vendor.o((...args) => $options.getWarpweft && $options.getWarpweft(...args)),
|
|
j: common_vendor.f($data.hotCity, (item, index, i0) => {
|
|
return {
|
|
a: common_vendor.t(item.cityName),
|
|
b: common_vendor.o(($event) => $options.back_city(item))
|
|
};
|
|
})
|
|
}) : {}, {
|
|
k: $data.searchValue == ""
|
|
}, $data.searchValue == "" ? {
|
|
l: common_vendor.f($data.list, (item, index, i0) => {
|
|
return {
|
|
a: common_vendor.t($options.getId(index)),
|
|
b: common_vendor.f(item, (city, i, i1) => {
|
|
return {
|
|
a: common_vendor.t(city.cityName),
|
|
b: i,
|
|
c: common_vendor.o(($event) => $options.back_city(city), i)
|
|
};
|
|
}),
|
|
c: $options.getId(index),
|
|
d: index
|
|
};
|
|
})
|
|
} : {}, {
|
|
m: common_vendor.f($data.searchList, (item, index, i0) => {
|
|
return {
|
|
a: common_vendor.t(item.cityName),
|
|
b: common_vendor.o(($event) => $options.back_city(item))
|
|
};
|
|
}),
|
|
n: $data.scrollIntoId,
|
|
o: $data.searchValue == ""
|
|
}, $data.searchValue == "" ? {
|
|
p: common_vendor.f($data.letter, (item, k0, i0) => {
|
|
return {
|
|
a: common_vendor.t(item),
|
|
b: item,
|
|
c: common_vendor.o(($event) => $options.scrollTo(item), item)
|
|
};
|
|
})
|
|
} : {}, {
|
|
q: $data.showMask
|
|
}, $data.showMask ? {
|
|
r: common_vendor.t($data.selectLetter)
|
|
} : {});
|
|
}
|
|
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-123c04c7"]]);
|
|
wx.createPage(MiniProgramPage);
|