230 lines
8.7 KiB
JavaScript
230 lines
8.7 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'
|
|
}
|
|
|
|
// EDIT DATA
|
|
if (context.rootState.patient.edit) {
|
|
let pid = context.rootState.patient.selected_patient.M_ProvinceID
|
|
for (let i in data.records)
|
|
if (data.records[i].M_ProvinceID == pid) data.records[i].is_default = "Y"
|
|
else data.records[i].is_default = "N"
|
|
}
|
|
|
|
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'
|
|
}
|
|
|
|
// EDIT DATA
|
|
if (context.rootState.patient.edit) {
|
|
let pid = context.rootState.patient.selected_patient.M_CityID
|
|
for (let i in data.records)
|
|
if (data.records[i].M_CityID == pid) data.records[i].is_default = "Y"
|
|
else data.records[i].is_default = "N"
|
|
}
|
|
|
|
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'
|
|
}
|
|
|
|
// EDIT DATA
|
|
if (context.rootState.patient.edit) {
|
|
let pid = context.rootState.patient.selected_patient.M_DistrictID
|
|
for (let i in data.records)
|
|
if (data.records[i].M_DistrictID == pid) data.records[i].is_default = "Y"
|
|
else data.records[i].is_default = "N"
|
|
}
|
|
|
|
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'
|
|
}
|
|
|
|
// EDIT DATA
|
|
if (context.rootState.patient.edit) {
|
|
let pid = context.rootState.patient.selected_patient.M_KelurahanID
|
|
for (let i in data.records)
|
|
if (data.records[i].M_KelurahanID == pid) data.records[i].is_default = "Y"
|
|
else data.records[i].is_default = "N"
|
|
}
|
|
|
|
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 )
|
|
}
|
|
}
|
|
}
|
|
}
|