167 lines
4.1 KiB
JavaScript
167 lines
4.1 KiB
JavaScript
import { getLoginParkList, getParkBuildingList } from "../../service/park"
|
|
import { getParkSimpleMeterList } from "../../service/meter"
|
|
import { alertInfo } from "../../utils/index";
|
|
import request from "../../utils/request"
|
|
import { payWays, feeType } from "../../utils/data";
|
|
import { getTenementList, getWxTenementList } from "../../service/tenement";
|
|
const { OK } = request;
|
|
|
|
// components/searchSelect/index.js
|
|
Component({
|
|
|
|
/**
|
|
* 组件的属性列表
|
|
*/
|
|
properties: {
|
|
title: String,
|
|
type: String,
|
|
show: Boolean,
|
|
park: String,
|
|
isBack: Boolean,
|
|
},
|
|
observers: {
|
|
"show,type": function(newShow, newType) {
|
|
if (newShow && newType) {
|
|
this.onSearch()
|
|
}
|
|
}
|
|
},
|
|
/**
|
|
* 组件的初始数据
|
|
*/
|
|
data: {
|
|
columns: [],
|
|
searchText: "",
|
|
payWays,
|
|
feeType,
|
|
},
|
|
lifetimes: {
|
|
attached() {
|
|
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 组件的方法列表
|
|
*/
|
|
methods: {
|
|
onChangeSearch(e) {
|
|
this.setData({
|
|
searchText: e.detail,
|
|
})
|
|
},
|
|
onCancel() {
|
|
this.setData({
|
|
columns: [],
|
|
list: [],
|
|
searchText: ""
|
|
})
|
|
this.triggerEvent("cancel")
|
|
},
|
|
onConfirm(event) {
|
|
const { index } = event.detail;
|
|
const { list = [], type } = this.data;
|
|
console.log("index", index)
|
|
const item = list[index];
|
|
if (!item) {
|
|
alertInfo("请选择一项")
|
|
return
|
|
}
|
|
this.setData({
|
|
columns: [],
|
|
list: [],
|
|
searchText: ""
|
|
})
|
|
this.triggerEvent("confirm", { data: item, type } );
|
|
},
|
|
onPayConfirm(event) {
|
|
const { index } = event.detail;
|
|
const { payWays = [], type } = this.data;
|
|
const item = payWays[index];
|
|
this.setData({
|
|
columns: [],
|
|
list: [],
|
|
searchText: ""
|
|
})
|
|
this.triggerEvent("confirm", { data: item, way: index, type } );
|
|
},
|
|
onFeeTypeConfirm(event) {
|
|
const { index } = event.detail;
|
|
const { feeType = [], type } = this.data;
|
|
const item = feeType[index];
|
|
this.setData({
|
|
columns: [],
|
|
list: [],
|
|
searchText: ""
|
|
})
|
|
this.triggerEvent("confirm", { data: item, way: index, type } );
|
|
},
|
|
onSearch() {
|
|
const { type } = this.data;
|
|
switch(type) {
|
|
case "park":
|
|
this.onSearchPark();
|
|
return;
|
|
case "meter":
|
|
this.onSearchMeter();
|
|
return
|
|
case "tenement":
|
|
this.onSearchTenement();
|
|
return;
|
|
case "building":
|
|
this.onSearchBuilding();
|
|
return;
|
|
}
|
|
},
|
|
async onSearchPark() {
|
|
const { searchText = "" } = this.data;
|
|
const { code, message, data: parks = [] } = await getLoginParkList({keyword: searchText});
|
|
if (code !== OK) {
|
|
alertInfo(message)
|
|
return
|
|
}
|
|
this.setData({
|
|
columns: parks?.map(item => item?.name),
|
|
list: parks,
|
|
})
|
|
},
|
|
async onSearchMeter() {
|
|
const { searchText = "", park } = this.data;
|
|
const { code, message, data: parks = [] } = await getParkSimpleMeterList({keyword: searchText, park});
|
|
if (code !== OK) {
|
|
alertInfo(message)
|
|
return
|
|
}
|
|
this.setData({
|
|
columns: parks?.map(item => `${item.meterNo}-${item.address}${item.shortName ? '-' + item.shortName : ''}`) || [],
|
|
list: parks || [],
|
|
})
|
|
},
|
|
async onSearchTenement() {
|
|
const { searchText = "", park, isBack } = this.data;
|
|
const { code, message, data = [] } = isBack ? await getWxTenementList({keyword: searchText, park}) : await getTenementList({keyword: searchText, park});
|
|
if (code !== OK) {
|
|
alertInfo(message)
|
|
return
|
|
}
|
|
this.setData({
|
|
columns: data?.length ? data?.map(item => item?.name) : [],
|
|
list: data,
|
|
})
|
|
},
|
|
async onSearchBuilding() {
|
|
const { park } = this.data;
|
|
const { code, message, buildings: data = [] } = await getParkBuildingList(park);
|
|
if (code !== OK) {
|
|
alertInfo(message)
|
|
return
|
|
}
|
|
this.setData({
|
|
columns: data?.length ? data?.map(item => item?.name) : [],
|
|
list: data,
|
|
})
|
|
},
|
|
}
|
|
})
|
|
|