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

521 lines
18 KiB
JavaScript

// 1 => LOADING
// 2 => DONE
// 3 => ERROR
import * as api from "../api/px.js"
export default {
namespaced: true,
state: {
search: '',
search_status:0,
search_error_message:'',
tests: [],
total_test: 0,
selected_test: [],
exist_selected_test :[],
search_panel: '',
search_panel_status:0,
panels: [],
total_panel: 0,
selected_panel: [],
requirement: [],
appx_schedule: '',
search_profile: '',
profiles: [],
total_profile: 0,
cito: {test:[], panel:[]},
nat_test: [],
req_status: "X",
reqs: []
},
mutations: {
update_exist_selected_test(state,val) {
state.exist_selected_test = val
},
update_requirement(state,val) {
state.requirement = val
},
update_search_error_message(state,status) {
state.search_error_message = status
},
update_selected_test(state,val) {
// if (state.cito.length > 0) {
for (var i in val) {
val[i]['T_TestIsCito'] = 'N'
if (state.cito.test.indexOf(val[i]['T_TestID']) > -1)
val[i]['T_TestIsCito'] = 'Y'
}
// }
state.selected_test = val
},
update_mouCompanyID(state,val) {
state.mouCompanyID=val
},
update_search(state,val) {
state.search=val
},
update_search_status(state,status) {
state.search_status = status
},
update_tests(state,data) {
state.tests= data.records
state.total_test= data.total
},
update_search_panel(state,val) {
state.search_panel=val
},
update_search_panel_status(state,status) {
state.search_panel_status = status
},
update_panels(state,data) {
state.panels = data.records
state.total_panel = data.total
},
update_selected_panel(state,val) {
state.selected_panel= val
},
update_cito(state, val) {
let test = state.selected_test
let cito = state.cito
// if (val.length > 0) {
for (var i in test) {
test[i]['T_TestIsCito'] = 'N'
if (val.v.indexOf(test[i]['T_TestID']) > -1)
test[i]['T_TestIsCito'] = 'Y'
}
// }
cito[val.t] = val.v
console.log(cito)
// state.cito = cito
state.selected_test = test
},
update_appx_schedule(state, v) {
state.appx_schedule = v
},
update_search_profile(state, v) {
state.search_profile = v
},
update_profiles(state, data) {
state.profiles = data.records
state.total_profile = data.total
},
update_nat_test(state) {
let px = state.selected_test
let nt = []
for (let i in px) {
for (let j in px[i].nat_test) {
nt.push(px[i].nat_test[j])
}
}
state.nat_test = nt
},
update_req_status(state, val) {
state.req_status = val
},
update_reqs(state, val) {
state.reqs = val
}
},
actions: {
delete_px (context, test) {
let sel = context.state.selected_test
sel.forEach(function(t, idx) {
if(t.T_TestID == test.T_TestID && t.px_type == test.px_type) {
sel.splice(idx,1)
}
});
context.commit("update_selected_test", sel)
let tests = context.state.tests
if (tests == undefined ) tests = []
tests.push(test)
let dt = {
records : tests,
total: tests.length
}
context.commit("update_tests", dt)
context.dispatch("delete_req", test)
// context.dispatch("update_req", null)
context.dispatch("appx_schedule")
context.commit('update_nat_test')
},
delete_req(context, px) {
let req = context.state.requirement
for (let i in req) {
let x = _.indexOf(req[i].px_id, px.T_TestID)
if (x > -1)
req[i].px_id.splice(x, 1)
if (req[i].px_id.length < 1)
req.splice(i, 1)
}
context.commit('update_requirement', req)
},
// update_req(context, px) {
// let reqs = []
// let tests = context.state.selected_test
// tests.forEach( function(t) {
// let label = t.T_TestRequirement
// if (_.indexOf(reqs,label) == -1 ) reqs.push(label)
// })
// let panels = context.state.selected_panel
// panels.forEach( function(p) {
// let tests = p.test
// tests.forEach( function(t) {
// let label = t.T_TestRequirement
// if (_.indexOf(reqs,label) == -1 ) reqs.push(label)
// })
// })
// let requirement = context.state.requirement
// let flag_update_requirement = false
// if (reqs.length == 0 ) {
// requirement = []
// flag_update_requirement = true
// }
// requirement.forEach(function(r,idx) {
// if ( _.indexOf(reqs,r.label) == -1) {
// flag_update_requirement = true
// requirement.splice(idx,1)
// }
// })
// if (flag_update_requirement) {
// context.commit('update_requirement', requirement)
// }
// },
async search(context, prm) {
context.commit("update_search_status",1)
try {
let mouCompanyID = 0
if (context.rootState.company.selected_mou.M_MouID) {
mouCompanyID = context.rootState.company.selected_mou.M_MouID
}
let resp= await api.search(mouCompanyID,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
}
console.log(context.state.exist_selected_test)
context.commit("update_tests",data)
var exist_tests = context.state.exist_selected_test
if(exist_tests.length > 0){
exist_tests.forEach(function(px,xidx) {
if (px.px_type !== "PR" && px.px_type !== "PXR"){
let nt = context.state.nat_test
let found_nt = false
for (let i in px.nat_test) {
if (nt.indexOf(px.nat_test[i]) > -1)
found_nt = true
}
if (found_nt) {
alert('Pemeriksaan tersebut sudah ada !')
return
}
let selected_test = context.state.selected_test
selected_test.push(px)
let tests = context.state.tests
let p_idx = -1
tests.forEach(function(t,idx) {
if (t.T_TestID == px.T_TestID) {
p_idx = idx
}
})
if (p_idx >= 0 ) {
_.pullAt(tests,[p_idx])
let dt = {
records: tests,
total: tests.length
}
context.commit('update_tests',dt)
}
context.commit('update_selected_test',selected_test)
let req = px.requirement
console.log(req)
let reqs = context.state.requirement
console.log(reqs)
if (req.length > 0) {
for(let i in req) {
let found = false
for(let j in reqs) {
if (reqs[j]['req_id'] == req[i]['req_id'])
found = j
}
if (!found)
reqs.push({
px_id: [px.T_TestID],
label: req[i]['req_name'],
error_message: 'Hasil harus di isi',
is_error: true,
checked : false,
note: '',
req_id: req[i]['req_id']
})
else
reqs[found].px_id.push(px.T_TestID)
}
context.commit('update_requirement', reqs)
}
context.dispatch('appx_schedule')
if(xidx === ( exist_tests.length - 1)){
context.commit('update_exist_selected_test',[])
}
}else{
let nt = context.state.nat_test
let found_nt = false
for (let i in px.nat_test) {
if (nt.indexOf(px.nat_test[i]) > -1)
found_nt = true
}
if (found_nt) {
alert('Error')
return
}
let pxs = px.child_test
for (let i in pxs) {
px = pxs[i]
let selected_test = context.state.selected_test
let flag_found = false
selected_test.push(px)
let tests = context.state.tests
let p_idx = -1
tests.forEach(function(t,idx) {
if (t.T_TestID == px.T_TestID) {
p_idx = idx
}
})
if (p_idx >= 0 ) {
_.pullAt(tests,[p_idx])
let dt = {
records: tests,
total: tests.length
}
context.commit('update_tests',dt)
}
context.commit('update_selected_test', selected_test)
let req = px.requirement
let reqs = context.state.requirement
if (req.length > 0) {
for(let i in req) {
let found = false
for(let j in reqs) {
if (reqs[j]['req_id'] == req[i]['req_id'])
found = j
}
if (!found)
reqs.push({
px_id: [px.T_TestID],
label: req[i]['req_name'],
error_message: 'Hasil harus di isi',
is_error: true,
checked : false,
note: '',
req_id: req[i]['req_id']
})
else
reqs[found].px_id.push(px.T_TestID)
}
context.commit('update_requirement', reqs)
context.dispatch('appx_schedule')
}
}
}
})
}
}
} catch(e) {
context.commit("update_search_status",3)
context.commit("update_search_error_message",e.message )
console.log(e)
}
},
async panel(context,prm) {
context.commit("update_search_panel_status",1)
try {
let mouCompanyID = 0
if (context.rootState.company.selected_mou.M_MouCompanyID) {
mouCompanyID = context.rootState.company.selected_mou.M_MouCompanyID
}
let resp= await api.panel(mouCompanyID,context.state.search)
if (resp.status != "OK") {
context.commit("update_search_panel_status",3)
context.commit("update_search_error_message",resp.message)
} else {
context.commit("update_search_panel_status",2)
context.commit("update_search_error_message","")
let data = {
records : resp.data.records,
total: resp.data.total
}
context.commit("update_panels",data)
}
} catch(e) {
context.commit("update_search_panel_status",3)
context.commit("update_search_error_message",e.message )
}
},
async profile(context) {
context.commit("update_search_panel_status", 1)
try {
let mou_id = 0
if (context.rootState.company.selected_mou.M_MouID) {
mou_id = context.rootState.company.selected_mou.M_MouID
}
let resp = await api.profile(mou_id, context.state.search_profile)
if (resp.status != "OK") {
context.commit("update_search_panel_status",3)
context.commit("update_search_error_message",resp.message)
} else {
context.commit("update_search_panel_status",2)
context.commit("update_search_error_message","")
let data = {
records : resp.data.records,
total: resp.data.total
}
context.commit("update_profiles", data)
}
} catch(e) {
context.commit("update_search_panel_status",3)
context.commit("update_search_error_message",e.message )
}
},
async get_price(context, prm) {
context.commit("update_search_status",1)
try {
let mou_id = context.rootState.company.selected_mou.M_MouID
let resp = await api.get_price(prm.test_id, mou_id, prm.cito)
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 x = context.state.selected_test
for (let i in x) {
if (x[i].T_TestID == prm.test_id) {
if (Math.round(resp.data.test_price) == 0) {
x[i].T_TestIsCito = "N"
let n = context.state.cito.test.indexOf(x[i].T_TestID)
if (n > -1)
context.state.cito.test.splice(n, 1)
let tests = context.state.tests
if (tests == undefined ) tests = []
tests.push(x[i])
let dt = {
records : tests,
total: tests.length
}
context.commit("update_tests", dt)
x.splice(i, 1);
}
else {
x[i].T_PriceAmount = resp.data.test_price
x[i].T_PriceDisc = resp.data.test_disc
x[i].T_PriceDiscRp = resp.data.test_discrp
}
}
}
context.commit("update_selected_test", x)
context.commit("update_nat_test")
}
} catch(e) {
context.commit("update_search_status",3)
context.commit("update_search_error_message",e.message )
}
},
async appx_schedule(context) {
context.commit("update_search_status",1)
try {
let ids = []
let pn_ids = []
context.commit("update_appx_schedule", '-')
let pxs = context.state.selected_test
for (let i in pxs) {
if (pxs[i].px_type == 'PN')
pn_ids.push(pxs[i].T_TestID)
else
ids.push(pxs[i].T_TestID)
}
let resp = await api.appx_schedule(ids.join(','), pn_ids.join(','))
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","")
context.commit("update_appx_schedule", resp.data)
}
} catch(e) {
context.commit("update_search_status",3)
context.commit("update_search_error_message", e.message )
}
}
}
}