Files
FE_CPONE/test/vuex/one-fo-registration-dev/modules/area.js
2026-04-27 10:13:31 +07:00

195 lines
7.1 KiB
JavaScript

// 1 => LOADING
// 2 => DONE
// 3 => ERROR
import * as api from "../api/area.js"
window.api = api
export default {
namespaced: true,
state: {
search: '',
search_status:0,
search_error_message:'',
search_dialog_is_active: false,
provinces: [],
cities: [],
districts: [],
villages: [],
total_provinces: 0,
total_cities: 0,
total_districts: 0,
total_villages: 0,
total_display: 0,
selected_province: {},
selected_city: {},
selected_district: {},
selected_village: {}
},
mutations: {
update_search_dialog_is_active(state,status) {
state.search_dialog_is_active = status
},
update_search_error_message(state,status) {
state.search_error_message = status
},
update_search(state,val) {
state.search=val
},
update_search_status(state,status) {
state.search_status = status
},
update_area(state, data) {
state[data.type] = data.records
state['total_'+data.type] = data.total
state.total_display = data.total_display
if (["provinces", "districts", "villages"].indexOf(data.type) > -1)
state['selected_'+ data.type.substring(0, data.type.length-1) ] = null
else if (data.type == "cities")
state['selected_city'] = null
for (let i in data.records) {
if (data.records[i].is_default == "Y") {
if (["provinces", "districts", "villages"].indexOf(data.type) > -1)
state['selected_'+ data.type.substring(0, data.type.length-1) ] = data.records[i]
else if (data.type == "cities")
state['selected_city'] = data.records[i]
}
}
},
update_selected_area(state, val) {
state['selected_'+val.type] = val.val
}
},
actions: {
async search_province(context) {
context.commit("update_search_status", 1)
context.commit("update_area", {records:[], total:0, total_display:0, type:'city'})
context.commit("update_area", {records:[], total:0, total_display:0, type:'district'})
context.commit("update_area", {records:[], total:0, total_display:0, type:'village'})
context.commit("update_selected_area", {type:'city',val:null})
context.commit("update_selected_area", {type:'district',val:null})
context.commit("update_selected_area", {type:'village',val:null})
try {
let resp = await api.search_province(context.state.search)
if (resp.status != "OK") {
context.commit("update_search_status",3)
context.commit("update_search_error_message",resp.message)
} else {
context.commit("update_search_status",2)
context.commit("update_search_error_message","")
let data = {
records : resp.data.records,
total: resp.data.total,
total_display: resp.data.total_display,
type: 'provinces'
}
context.commit("update_area", data)
context.dispatch("search_city")
}
} catch(e) {
context.commit("update_search_status",3)
context.commit("update_search_error_message",e.message )
}
},
async search_city(context) {
// City
context.commit("update_search_status", 1)
context.commit("update_area", {records:[], total:0, total_display:0, type:'district'})
context.commit("update_area", {records:[], total:0, total_display:0, type:'village'})
context.commit("update_selected_area", {type:'district',val:null})
context.commit("update_selected_area", {type:'village',val:null})
try {
let resp = await api.search_city(context.state.selected_province.M_ProvinceID, context.state.search)
if (resp.status != "OK") {
context.commit("update_search_status",3)
context.commit("update_search_error_message",resp.message)
} else {
context.commit("update_search_status",2)
context.commit("update_search_error_message","")
let data = {
records : resp.data.records,
total: resp.data.total,
total_display: resp.data.total_display,
type: 'cities'
}
context.commit("update_area", data)
context.commit("update_search_status", 1)
context.dispatch("search_district")
}
} catch(e) {
context.commit("update_search_status",3)
context.commit("update_search_error_message", e.message )
}
},
async search_district(context) {
// City
context.commit("update_search_status", 1)
context.commit("update_area", {records:[], total:0, total_display:0, type:'village'})
context.commit("update_selected_area", {type:'village',val:null})
try {
let resp = await api.search_district(context.state.selected_city.M_CityID, context.state.search)
if (resp.status != "OK") {
context.commit("update_search_status",3)
context.commit("update_search_error_message",resp.message)
} else {
context.commit("update_search_status",2)
context.commit("update_search_error_message","")
let data = {
records : resp.data.records,
total: resp.data.total,
total_display: resp.data.total_display,
type: 'districts'
}
context.commit("update_area", data)
context.commit("update_search_status", 1)
context.dispatch("search_kelurahan")
}
} catch(e) {
context.commit("update_search_status",3)
context.commit("update_search_error_message", e.message )
}
},
async search_kelurahan(context) {
// City
context.commit("update_search_status", 1)
try {
let resp = await api.search_kelurahan(context.state.selected_district.M_DistrictID, context.state.search)
if (resp.status != "OK") {
context.commit("update_search_status",3)
context.commit("update_search_error_message",resp.message)
} else {
context.commit("update_search_status",2)
context.commit("update_search_error_message","")
let data = {
records : resp.data.records,
total: resp.data.total,
total_display: resp.data.total_display,
type: 'villages'
}
context.commit("update_area", data)
context.commit("update_search_status", 1)
}
} catch(e) {
context.commit("update_search_status",3)
context.commit("update_search_error_message", e.message )
}
}
}
}