Commit 979a0ffe authored by Deddy Vita Kurniawan's avatar Deddy Vita Kurniawan

redmine#15879

* tambah field JUDUL, KRITERIA, SEBAB, AKIBAT, TANGGAPAN di tabel temuan_jenis * tambah field ID_REKOMENDASI, TIPE, FILENAME di tabel temuan_jenis_rinci
parent d5dac608
......@@ -2332,6 +2332,7 @@ class Pilih extends Pilih_Controller
$result[$i]['jenis_pemeriksaan'],
$result[$i]['penugasan'],
$result[$i]['nomor'],
$result[$i]['tanggal_surat'],
);
}
}
......@@ -2396,7 +2397,7 @@ class Pilih extends Pilih_Controller
);
}
else{
$data['colnames'] = array('', '', '', '', '', '', '', 'Nomor Surat Tugas');
$data['colnames'] = array('', '', '', '', '', '', '', 'Nomor Surat Tugas', 'Tanggal');
$data['colmodel'] = array(
array('name' => 'id_st', 'hidden' => true),
array('name' => 'id_tgs', 'hidden' => true),
......@@ -2406,6 +2407,7 @@ class Pilih extends Pilih_Controller
array('name' => 'jns_prs', 'hidden' => true),
array('name' => 'penugasan', 'hidden' => true),
array('name' => 'no', 'width' => 400, 'sortable' => true, 'search' => true, 'datatype' => 'string'),
array('name' => 'tanggal_surat', 'width' => 150, 'sortable' => true, 'search' => true, 'formatter' => 'date'),
);
}
$data['orderby'] = 'no';
......@@ -3043,4 +3045,34 @@ class Pilih extends Pilih_Controller
echo json_encode($response);
}
/*
Pilih rekomendasi
Keterangan : mengembalikan daftar rekomendasi
Dipakai di modul temuan
Digunakan untuk komponen select2
*/
function pilih_rekomendasi()
{
$q = $this->input->post('q');
$mode = $this->input->post('mode');
$req_param = array(
"q" => $q,
"mode" => $mode
);
$result = $this->pilih_model->getRekomendasiSelect($req_param);
$response = (object) NULL;
$response->results = array();
if ($result) {
for ($i = 0; $i < count($result); $i++) {
$response->results[] = array(
'id' => (string) $result[$i]['id_rekomendasi'],
'text' => (string) $result[$i]['kode'] ." - ". $result[$i]['uraian_rekomendasi'],
);
}
}
$response->sql = $this->db->queries;
echo json_encode($response);
}
}
......@@ -2749,4 +2749,19 @@ class Pilih_dasar_model extends Pilih_Model
$result = $this->db->get()->result_array();
return $result;
}
function getRekomendasiSelect($param)
{
$this->db->select('
a.id_rekomendasi,
a.kode,
a.uraian_rekomendasi
');
$this->db->from('ref_rekomendasi a');
if ($param['q'] != '')
$this->db->like('Upper(a.uraian_rekomendasi)', strtoupper($param['q']));
$this->db->order_by('a.kode');
$result = $this->db->get()->result_array();
return $result;
}
}
......@@ -2,21 +2,27 @@
class Temuan extends AktivitasBLUD_Controller
{
var $real_path;
public function __construct()
{
parent::__construct();
$this->modul_name = 'temuan';
$this->modul_display = 'Draft Temuan';
$this->modul_display = 'Temuan';
$this->view_form = 'temuan_form';
$this->view_daftar = 'temuan_view';
$this->report_daftar = 'Daftar Draft Temuan';
$this->report_form = 'Form Draft Temuan';
$this->report_daftar = 'Daftar Temuan';
$this->report_form = 'Form Temuan';
$this->load->model('temuan_model', 'data_model');
$this->message_aktivitas_dihapus = 'Draft Temuan telah dihapus.';
$this->message_aktivitas_gagal_dihapus = 'Draft Temuan tidak bisa dihapus.';
$this->message_gagal_dihapus_dependency = 'Draft Temuan digunakan di aktivitas lain.';
$this->message_aktivitas_dihapus = 'Temuan telah dihapus.';
$this->message_aktivitas_gagal_dihapus = 'Temuan tidak bisa dihapus.';
$this->message_gagal_dihapus_dependency = 'Temuan digunakan di aktivitas lain.';
$this->real_path = dirname( realpath(SELF) )."/uploads/";
if (!file_exists($this->real_path)) {
mkdir('./uploads/', 0777, true);
}
}
function validasi()
......@@ -32,79 +38,129 @@ class Temuan extends AktivitasBLUD_Controller
$this->form_validation->set_message('max_length', '%s tidak boleh melebihi %s karakter.');
}
function rinci($id = 0)
function rinci($id = 0,$tipe)
{
$result = $this->data_model->get_rinci_by_id($id);
$result = $this->data_model->get_rinci_by_id($id,$tipe);
$response = (object) null;
$last_kkp = '';
if ($result) {
$x=1;
for ($i = 0; $i < count($result); $i++) {
if ($result[$i]['nomor_kkp'] !== $last_kkp)
{
$idx = 'b'.$x;
$row = new stdclass();
$row->id = $idx;
$row = new stdclass();
$row->id = $result[$i]['id_rinci_temuan'];
if($tipe == '1'){
$row->cell = array(
$idx,
'',
$result[$i]['id_rinci_temuan'],
$result[$i]['id_rekomendasi'],
$result[$i]['kode'].' - '.$result[$i]['uraian_rekomendasi'],
$result[$i]['deskripsi'],
);
}
else if($tipe == '2'){
$row->cell = array(
$result[$i]['id_rinci_temuan'],
'',
$result[$i]['nomor_kkp'],
'<a href="" style="padding: 0px 2px 0px 2px; text-decoration: underline" id="'.$idx.'" onclick="return false;" class="view_file">lihat</a>',
$result[$i]['simpulan'],
$result[$i]['nomor_kkp'],
1,
$result[$i]['filename'],
$result[$i]['filename'],
'<input type="file" id="monitoring-file" class="monitoring-fileChanged" accept="application/pdf,.csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel, image/gif, image/jpeg">',
);
$response->rows[] = $row;
$x+=1;
}
$row = new stdclass();
$row->id = $result[$i]['id_rinci_temuan'];
$row->cell = array(
$result[$i]['id_rinci_temuan'],
$result[$i]['id_ref_temuan'],
$result[$i]['jenis_temuan'],
$result[$i]['deskripsi'],
'',
'',
$result[$i]['nomor_kkp'],
0,
);
$response->rows[] = $row;
$last_kkp = $result[$i]['nomor_kkp'];
$response->rows[] = $row;
}
}
//$response->sql = $this->db->queries;
//die(print_r($response));
echo json_encode($response);
}
public function data_kkp($id_surat)
function hapus_file()
{
$response = (object) null;
$response = (object) NULL;
$id = $this->input->post('id')?$this->input->post('id'):0;
$nama_file = $this->input->post('nama_file')?$this->input->post('nama_file'):'';
if (file_exists(dirname($_SERVER['SCRIPT_FILENAME']).'/uploads/'.$nama_file)) {
$logo_file = dirname($_SERVER['SCRIPT_FILENAME']).'/uploads/'.$nama_file;
unlink($logo_file);
$response->message = 'File berhasil di hapus';
$response->isSuccess = TRUE;
}
else{
$response->message = 'File tidak ditemukan';
$response->isSuccess = FALSE;
}
echo json_encode($response);
}
function preview($filename){
$this->load->helper('file');
$dokumen = $this->real_path.$filename;
$this->load->helper('file');
if (!file_exists($dokumen)) {
$this->output->set_status_header(500);
return;
}
$ext = strtolower(pathinfo($dokumen, PATHINFO_EXTENSION));
$result = $this->data_model->get_data_kkp($id_surat);
header('Content-Disposition: filename="'.$filename.'"');
header('Content-Type: application/$ext');
header('Content-Length: '.filesize($dokumen));
header('Cache-Control: no-store');
readfile($dokumen);
}
function upload(){
$is_siup = isset($_FILES['hasil']);
$response = (object) null;
if ($result) {
$x=1;
for ($i = 0; $i < count($result); $i++) {
$idx = 'b'.$x;
$response->rows[$i]['id'] = $idx;
$response->rows[$i]['cell'] = array(
$idx,
'',
'',
$result[$i]['nomor_kkp'],
'<a href="" style="padding: 0px 2px 0px 2px; text-decoration: underline" id="'.$idx.'" onclick="return false;" class="view_file">lihat</a>',
$result[$i]['simpulan'],
$result[$i]['nomor_kkp'],
1,
);
$x+=1;
$result = $this->proses_dokumen($_FILES['hasil']);
//die(print_r($result));
echo json_encode( $result );
}
function proses_dokumen($file){
$this->load->helper('file');
$valid_exts = array('pdf','xls','jpg','jpeg','png','doc'); // valid extensions
$max_size = 10000 * 1024;
// get uploaded file extension
$ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
// looking for format and size validity
if (in_array($ext, $valid_exts) AND $file['size'] < $max_size)
{
// unique file path ;
$uid = uniqid();
$ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
$realname = $uid."-".$this->TextKeSlug(pathinfo($file['name'], PATHINFO_FILENAME)).".".$ext;
$path = $this->real_path . $realname;
// move uploaded file from temp to uploads directory
if (move_uploaded_file($file['tmp_name'], $path))
{
$result = array('status' => true, 'filename' => $realname, 'realname' => $realname);
}
else {
$result = array('status' => false, 'deskripsi' => 'gagal mengunggah dokumen');
}
}
echo json_encode($response);
else {
$result = array('status' => false, 'deskripsi' => 'hanya menerima file pdf,xls,jpg,jpeg,png,doc');
}
return $result;
}
function TextKeSlug($text) {
$text = trim($text);
if (empty($text)) return '';
$text = preg_replace("/[^a-zA-Z0-9\-\s]+/", "", $text);
$text = strtolower(trim($text));
$text = str_replace(' ', '-', $text);
$text = $text_ori = preg_replace('/\-{2,}/', '-', $text);
return $text;
}
}
......@@ -7,9 +7,12 @@ class Temuan_model extends Base_Model
var $fieldmap_filter;
var $fieldmap_audit;
var $fieldmap_audit_rinci;
var $fieldmap_rinci_file;
var $data_audit;
var $data_audit_rinci;
var $purge_audit;
var $data_hasil;
var $purge;
var $purge_hasil;
function __construct()
......@@ -29,21 +32,33 @@ class Temuan_model extends Base_Model
'nomor_surat' => 'a.nomor',
'tgl' => 'a.tanggal_surat',
'penugasan' => 'a.penugasan',
'periode' => 'a.periode_diaudit'
);
$this->fieldmap_audit = array(
'id_temuan_jenis' => 'id_temuan_jenis',
'id' => 'id_temuan_jenis',
'id_surat' => 'id_surat',
'id_ref_temuan' => 'id_ref_temuan',
'judul' => 'judul',
'deskripsi' => 'deskripsi',
'kriteria' => 'kriteria',
'sebab' => 'sebab',
'akibat' => 'akibat',
'tanggapan' => 'tanggapan',
);
$this->fieldmap_audit_rinci = array(
'id_rinci_temuan' => 'id_rinci_temuan',
'id_temuan_jenis' => 'id_temuan_jenis',
'id_jns' => 'id_ref_temuan',
'id_rekomendasi' => 'id_rekomendasi',
'deskripsi' => 'deskripsi',
'kkr' => 'nomor_kkp',
'no_urut' => 'kode',
'tipe' => 'tipe',
);
$this->fieldmap_rinci_file = array(
'id_rinci_temuan' => 'id_rinci_temuan',
'id_temuan_jenis' => 'id_temuan_jenis',
'filename' => 'filename',
'tipe' => 'tipe',
);
$this->fieldmap_daftar_aggregate = array(
......@@ -54,12 +69,11 @@ class Temuan_model extends Base_Model
function get_grid_model()
{
$grid = array(
'colNames' => array('Nomor', 'Tanggal Surat', 'Penugasan', 'Periode Audit'),
'colNames' => array('Nomor', 'Tanggal Surat', 'Penugasan'),
'colModel' => array(
array('name' => 'no', 'width' => 180, 'sortable' => true, 'formatter' => 'daftarOpFmatter'),
array('name' => 'tgl', 'width' => 100, 'sortable' => true, 'formatter' => 'date', 'align' => 'center'),
array('name' => 'penugasan', 'width' => 560, 'sortable' => true),
array('name' => 'periode', 'width' => 120, 'sortable' => true),
),
);
return $grid;
......@@ -72,7 +86,6 @@ class Temuan_model extends Base_Model
'no' => array('name' => 'Nomor', 'kategori' => 'string'),
'tgl' => array('name' => 'Tanggal Surat', 'kategori' => 'date'),
'penugasan' => array('name' => 'Penugasan', 'kategori' => 'string'),
'periode' => array('name' => 'Periode', 'kategori' => 'string'),
);
return $fields;
......@@ -91,13 +104,19 @@ class Temuan_model extends Base_Model
}
/* ambil data tim audit rinci*/
$this->purge_audit = $this->input->post('purge');$this->purge_audit = $this->purge_audit ? $this->purge_audit : NULL;
$this->purge = $this->input->post('purge');$this->purge = $this->purge ? $this->purge : NULL;
$this->purge_hasil = $this->input->post('purge_hasil');$this->purge_hasil = $this->purge_hasil ? $this->purge_hasil : NULL;
$rinci = $this->input->post('rincian') ? $this->input->post('rincian') : NULL;
$grid_hasil = $this->input->post('data_hasil') ? $this->input->post('data_hasil') : NULL;
if ($rinci) {
$rinci = json_decode($rinci);
for ($i = 0; $i <= count($rinci) - 1; $i++) {
foreach ($this->fieldmap_audit_rinci as $key => $value) {
switch ($key) {
case 'tipe' :
$$key = '1';
break;
default:
$$key = isset($rinci[$i]->$key) && $rinci[$i]->$key ? $rinci[$i]->$key : NULL;
}
......@@ -107,13 +126,33 @@ class Temuan_model extends Base_Model
}
}
}
if ($grid_hasil)
{
$grid_hasil = json_decode($grid_hasil);
for ($i=0; $i <= count($grid_hasil) - 1; $i++) {
foreach($this->fieldmap_rinci_file as $key => $value){
switch ($key)
{
case 'tipe' :
$$key = '2';
break;
case 'filename' :
$$key = isset($grid_hasil[$i]->$key) ? $grid_hasil[$i]->$key : '';
break;
default : $$key = isset($grid_hasil[$i]->$key) && $grid_hasil[$i]->$key ? $grid_hasil[$i]->$key : NULL;
}
if(isset($$key))
$this->data_hasil[$i][$value] = $$key;
}
}
}
}
function insert_audit()
{
$id_temuan_jenis = !empty($this->data_audit['id_temuan_jenis']) ? str_replace('new_', 0, $this->data_audit['id_temuan_jenis']) : 0;
//$id_temuan_jenis = $data_audit['id_temuan_jenis']?$data_audit['id_temuan_jenis']:null;
$this->db->select('id_temuan_jenis')->from('temuan_jenis')->where('id_temuan_jenis', $id_temuan_jenis);
$rs = $this->db->get()->row_array();
......@@ -126,7 +165,6 @@ class Temuan_model extends Base_Model
}
else
{
//$idn = $this->get_id('g_id_program_kerja_audit');
$this->db->select_max('id_temuan_jenis')->from('temuan_jenis');
$res = $this->db->get()->row_array();
$id = $res['id_temuan_jenis']+1;
......@@ -142,9 +180,9 @@ class Temuan_model extends Base_Model
/* Simpan rincian tim audit */
function insert_audit_rinci()
{
if ($this->purge_audit) {
$this->db->where_in('id_rinci_temuan', $this->purge_audit);
$this->db->where('id_surat', $this->id);
if ($this->purge) {
$this->db->where_in('id_rinci_temuan', $this->purge);
$this->db->where('id_temuan_jenis', $this->id);
$this->db->delete('temuan_jenis_rinci');
$this->check_trans_status('delete temuan_jenis_rinci failed');
}
......@@ -175,12 +213,49 @@ class Temuan_model extends Base_Model
$no_urut+=1;
}
}
function insert_file()
{
if ($this->purge_hasil) {
$this->db->where_in('id_rinci_temuan', $this->purge_hasil);
$this->db->where('id_temuan_jenis', $this->id);
$this->db->delete('temuan_jenis_rinci');
$this->check_trans_status('delete temuan_jenis_rinci failed');
}
for ($i=0; $i < count($this->data_hasil); $i++)
{
$idrbm = isset($this->data_hasil[$i]['id_rinci_temuan']) ? str_replace('new_', 0, $this->data_hasil[$i]['id_rinci_temuan']) : NULL;
$temp = $idrbm;
$this->db->select('id_rinci_temuan')->from('temuan_jenis_rinci')->where('id_temuan_jenis', $this->id)->where('id_rinci_temuan', $idrbm);
$rs = $this->db->get()->row_array();
if ($rs)
{
$this->db->where('id_rinci_temuan', $idrbm);
$this->db->where('id_temuan_jenis', $this->id);
$this->db->update('temuan_jenis_rinci', $this->data_hasil[$i]);
$this->check_trans_status('update temuan_jenis_rinci failed');
$idmkr = $idrbm;
}
else
{
unset( $this->data_hasil[$i]['id_rinci_temuan'] );
$this->data_hasil[$i]['id_temuan_jenis'] = $this->id;
$this->db->insert('temuan_jenis_rinci', $this->data_hasil[$i]);
$this->check_trans_status('insert temuan_jenis_rinci failed');
}
}
}
function save_detail()
{
$this->nomor = $this->input->post('nomor_surat');
$this->insert_audit();
$this->insert_audit_rinci();
$this->insert_file();
}
/* Query daftar */
......@@ -210,63 +285,45 @@ class Temuan_model extends Base_Model
b.id_jns_penugasan,
c.jenis_penugasan,
b.id_jns_pemeriksaan,
d.jenis_pemeriksaan
d.jenis_pemeriksaan,
a.id_ref_temuan,
e.jenis_temuan,
a.judul,
a.deskripsi,
a.kriteria,
a.sebab,
a.akibat,
a.tanggapan,
b.penugasan
');
$this->db->from('temuan_jenis a');
$this->db->join('surat_penugasan b','b.id_surat=a.id_surat');
$this->db->join('ref_jns_penugasan c', 'c.id_jns = b.id_jns_penugasan','left');
$this->db->join('ref_jns_pemeriksaan d', 'd.id_jns = b.id_jns_pemeriksaan','left');
$this->db->join('ref_jns_temuan e', 'e.id_jns = a.id_ref_temuan','left');
$this->db->where('a.id_temuan_jenis', $id);
}
function get_rinci_by_id($id = 0)
function get_rinci_by_id($id = 0,$tipe)
{
$this->db->select('
a.id_rinci_temuan,
a.id_temuan_jenis,
a.kode,
a.nomor_kkp,
a.id_ref_temuan,
b.jenis_temuan,
b.id_rekomendasi,
b.kode,
a.deskripsi,
d.id_kertas_kerja,
convert(d.uraian using utf8) uraian,
convert(d.simpulan using utf8) simpulan
b.uraian_rekomendasi,
a.filename
');
$this->db->from('temuan_jenis_rinci a');
$this->db->join('ref_jns_temuan b', 'b.id_jns = a.id_ref_temuan');
$this->db->join('temuan_jenis c', 'c.id_temuan_jenis = a.id_temuan_jenis');
$this->db->join('kertas_kerja d', 'd.id_surat = c.id_surat and d.nomor_kkp=a.nomor_kkp');
$this->db->join('ref_rekomendasi b', 'b.id_rekomendasi = a.id_rekomendasi','left');
$this->db->where('a.id_temuan_jenis', $id);
$this->db->where('a.tipe', $tipe);
$this->db->order_by('a.kode', 'asc');
$result = $this->db->get()->result_array();
return $result;
}
function get_data_kkp($id_surat)
{
$this->db->select("id_kertas_kerja, nomor_kkp, convert(simpulan using utf8) simpulan");
$this->db->from('kertas_kerja');
$this->db->where('id_surat', $id_surat);
$this->db->where('is_simpulan', 1);
$result = $this->db->get()->result_array();
return $result;
}
function get_data_simpulan($id_kertas_kerja)
{
$this->active_group = 'simass';
$this->db2 = $this->load->database($this->active_group, TRUE);
$this->db2->select('convert(uraian using utf8) uraian, convert(simpulan using utf8) simpulan');
$this->db2->from('kertas_kerja');
$this->db2->where('id_kertas_kerja', $id_kertas_kerja);
$result = $this->db2->get()->row_array();
return $result['simpulan'];
}
function check_dependency($id)
{
......@@ -277,13 +334,30 @@ class Temuan_model extends Base_Model
$result = $this->db->get('temuan_jenis a')->row_array();
return !($result['konsep_laporan_pakai'] > 0);
return true;
}
function build_query_hapus($id = 0)
{
$this->db->where('id_temuan_jenis', $id)->delete('temuan_jenis_rinci');
$this->check_trans_status('delete temuan_jenis_rinci failed');
$this->db->select('
a.id_rinci_temuan,
a.filename
');
$this->db->from('temuan_jenis_rinci a');
$this->db->where('a.id_temuan_jenis', $id);
$result = $this->db->get()->result_array();
for($i=0;$i<count($result);$i++){
if(!empty($result[$i]['filename'])){
if (file_exists(dirname($_SERVER['SCRIPT_FILENAME']).'/uploads/'.$result[$i]['filename'])) {
$logo_file = dirname($_SERVER['SCRIPT_FILENAME']).'/uploads/'.$result[$i]['filename'];
unlink($logo_file);
}
}
$this->db->where('id_rinci_temuan', $result[$i]['id_rinci_temuan'])->delete('temuan_jenis_rinci');
$this->check_trans_status('delete temuan_jenis_rinci failed');
}
//$this->db->where('id_temuan_jenis', $id)->delete('temuan_jenis_rinci');
//$this->check_trans_status('delete temuan_jenis_rinci failed');
$this->db->where('id_temuan_jenis', $id)->delete('temuan_jenis');
$this->check_trans_status('delete temuan_jenis failed');
}
......
<script type="text/javascript" src="<?php echo base_url()?>assets/js/ckeditor/ckeditor.js"></script>
<section class="content">
<div class="container-fluid">
<fieldset>
......@@ -10,7 +9,7 @@
<div class="control-group pull-left" data-bind="validationElement: nomor_surat">
<label class="control-label" for="nomor_surat">Nomor Surat Tugas</label>
<div class="controls span3 input-append">
<input type="text" class="span3" id="nomor_surat" readonly="1" data-bind="value: nomor_surat" style="margin-left:-20px"/>
<input type="text" class="span3" id="nomor_surat" readonly="1" data-bind="value: nomor_surat" />
<span class="add-on" data-bind="visible: !isEdit(), click: pilih_surat" ><i class="icon-folder-open"></i></span>
</div>
</div>
......@@ -18,30 +17,78 @@
<label class="control-label" for="tgl">Tanggal Surat</label>
<input type="text" id="tgl" class="span2 datepicker" data-bind="value: tgl, css: {datepicker: canEdit()}" readonly="1" />
</div>
</div>
<div class="control-group pull-left" style="margin-left:20px" data-bind="validationElement: jns_periksa">
<label class="control-label" for="">Jenis Pemeriksaan</label>
<input type="text" id="jns_periksa" class="span5" data-bind="attr : {'data-init': nama_periksa}, value: jns_periksa, select2: {minimumInputLength: 0, containerCss: {'margin-left':'0px'}, placeholder: 'Pilih Jenis Pemeriksaan', initSelection: init_select, query: query_jenis_periksa}" readonly="1"/>
</div>
</div>
<div class="controls-row">
<div class="control-group pull-left" data-bind="validationElement: jns_tugas">
<label class="control-label" for="jns_tugas">Jenis Pengawasan</label>
<input type="text" id="jns_tugas" class="span5" data-bind="attr : {'data-init': nama_jns_tugas}, value: jns_tugas, select2: {minimumInputLength: 0, containerCss: {'margin-left':'0px'}, containerCssClass: 'span8', placeholder: 'Pilih Jenis Pengawasan', initSelection: init_select, query: query_jenis_tugas, formatResult: formatPejabat }" readonly="1"/>
<div class="control-group pull-left" data-bind="">
<label class="control-label" for="">Ruang Lingkup</label>
<textarea rows="2" class="span8" id="kriteria" data-bind="value: penugasan" readonly="1"></textarea>
</div>
</div>
<div class="controls-row">
<div class="control-group pull-left" data-bind="">
<label class="control-label" for="">Jenis Pemeriksaan</label>
<input type="text" id="jns_periksa" class="span5" data-bind="attr : {'data-init': nama_periksa}, value: jns_periksa, select2: {minimumInputLength: 0, containerCss: {'margin-left':'0px'}, placeholder: 'Pilih Jenis Pemeriksaan', initSelection: init_select, query: query_jenis_periksa}" readonly="1"/>
<label class="control-label" for="">Temuan</label>
<input type="text" id="id_ref_temuan" class="span8" data-bind="attr : {'data-init': rekomendasi}, value: id_ref_temuan, select2: {minimumInputLength: 0, containerCss: {'margin-left':'0px'}, placeholder: 'Pilih Temuan', initSelection: init_select, query: query_temuan}"/>
</div>
</div>
<div class="controls-row">
<div class="control-group pull-left" data-bind="validationElement: judul">
<label class="control-label" for="judul">Judul</label>
<input type="text" id="judul" class="span8" data-bind="value: judul" required />
</div>
</div>
<div class="controls-row">
<div class="control-group pull-left" data-bind="validationElement: deskripsi">
<label class="control-label" for="deskripsi">Deskripsi</label>
<textarea rows="2" class="span8" id="deskripsi" data-bind="value: deskripsi" ></textarea>
</div>
</div>
<div class="controls-row">
<div class="control-group pull-left" data-bind="validationElement: kriteria">
<label class="control-label" for="kriteria">Kriteria</label>
<textarea rows="2" class="span8" id="kriteria" data-bind="value: kriteria" ></textarea>
</div>
</div>
<div class="controls-row">
<div class="control-group pull-left" data-bind="validationElement: sebab">
<label class="control-label" for="sebab">Sebab</label>
<textarea rows="2" class="span8" id="sebab" data-bind="value: sebab" ></textarea>
</div>
</div>
<div class="controls-row">
<div class="control-group pull-left" data-bind="validationElement: akibat">
<label class="control-label" for="akibat">Akibat</label>
<textarea rows="2" class="span8" id="akibat" data-bind="value: akibat" ></textarea>
</div>
</div>
<div class="controls-row">
<div class="control-group pull-left" data-bind="validationElement: tanggapan">
<label class="control-label" for="tanggapan">Tanggapan Auditan</label>
<textarea rows="2" class="span8" id="tanggapan" data-bind="value: tanggapan" ></textarea>
</div>
</div>
<ul class="nav nav-tabs" id="myTab" style="margin-bottom:5px">
<li class="active"><a href="#temuan">Temuan</a></li>
<li class="active"><a href="#temuan">Detail</a></li>
<li><a href="#tab_rekomendasi">File Pendukung</a></li>
</ul>
<div class="tab-content" style="height:325px">
<div class="tab-pane active" id="audit">
<div class="tab-content">
<div class="tab-pane active" id="temuan">
<table id="grd_temuan"></table>
<div id="pgr_temuan"></div>
</div>
<div class="tab-pane" id="tab_rekomendasi" >
<div class="controls-row" >
<div class="control-group" >
<table id="grd_hasil"></table>
<div id="pgr_hasil"></div>
</div>
</div>
</div>
</div>
<div class="bottom-bar">
......@@ -50,59 +97,15 @@
<input type="button" id="back" value="Kembali" class="btn btn-primary" data-bind="click: back" />
</div>
</form>
<!--<div class="modal fade cia_modal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header bg-primary">
<button type="button" class="close" data-dismiss="modal">
<span aria-hidden="true">&times;</span>
<span class="sr-only">Close</span>
</button>
<h4 class="modal-title">Uraian Kesimpulan</h4>
</div>
<div class="modal-body">
<div class="form-group">
<textarea class="ck_editor" name="post" id="" cols="30" rows="10"></textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-white" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>-->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Uraian Kesimpulan</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<textarea id="simpulan" rows="1" class="span8" ></textarea>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Tutup</button>
</div>
</div>
</div>
</div>
<script type="text/javascript">
var idp = lastp = 0,
last,
last,last_hasil,
akses = <?php echo $akses; ?>,
purge = [];
purge = [], purge_hasil = [];
var grd_hasil = $('#grd_hasil'), purge_hasil = [];
$(document).ready(function() {
CKEDITOR.replace( 'simpulan' );
/* CKEDITOR.instances.simpulan.on('change', function() {
App.simpulan(CKEDITOR.instances.simpulan.getData());
}); */
$.datepicker.setDefaults($.datepicker.regional['id']);
......@@ -117,16 +120,12 @@
url: '',
datatype: 'local',
mtype: 'POST',
colNames: ['', '', 'Klarifikasi Temuan', 'Deskripsi Temuan', 'Lihat', '', '', ''],
colNames: ['', '', 'Kode Rekomendasi', 'Saran/Rekomendasi'],
colModel: [
{name:'id_rinci_temuan', hidden:true, editable:true, key:true},
{name:'id_jns', hidden:true, editable:true},
{name:'jenis_temuan', width:400, sortable:false, editable:true, editoptions:{dataInit:initselect3}},
{name:'id_rekomendasi', hidden:true, editable:true},
{name:'rekomendasi', width:400, sortable:false, editable:true, editoptions:{dataInit:initselect3}},
{name:'deskripsi', width:400, sortable:false, editable:true},
{name:'lihat', width:100, sortable:false, editable:false},
{name:'simpulan', hidden:true},
{name:'kkr', hidden:true},
{name:'lvl', hidden:true},
],
pager: '#pgr_temuan',
rowNum: 1000,
......@@ -136,10 +135,9 @@
gridview: true,
shrinkToFit: false,
loadonce: true,
width: '1015',
height: '200',
autowidth:true,
height:'320',
recordtext: '{2} baris',
rowattr: gridRowAttr,
loadComplete: function() {
},
onSelectRow: function(id) {
......@@ -164,34 +162,57 @@
refreshtext: 'Refresh',
search: false,
}, {}, {}, {}, {});
grd_hasil.jqGrid({
url: '',
datatype: 'local',
mtype: 'POST',
colNames:['', 'Upload', 'Nama File', '', ''],
colModel:[
{name:'id_rinci_temuan', hidden:true, key:true},
{name:'uploadfile', width:70, editable:false, sortable:false, formatter:aksiFormat},
{name:'realname', width:500, sortable:false, formatter:linkFormat},
{name:'filename', hidden:true},
{name:'input', hidden:true},
],
pager:'#pgr_hasil',
rowNum:1000000,
scroll:true,
rownumbers:true,
viewrecords:true,
gridview:true,
shrinkToFit:false,
autowidth:true,
height:'320',
recordtext:'{2} baris',
onSelectRow: function(id){
if(id && id!==last_hasil){
$(this).restoreRow(last_hasil);
last_hasil=id;
}
},
});
grd_hasil.jqGrid('navGrid', '#pgr_hasil', {
add: App.canEdit(),
addtext: 'Tambah',
addfunc: add_file,
edit: false,
del: App.canEdit(),
deltext: 'Hapus',
delfunc: del_file,
search:false,
refresh:false,
refreshtext:'Refresh',
},{},{},{},{});
});
$("#grd_temuan").on('click', '.view_file', (function(){
//var url = $(this).attr('href');
console.log($(this).attr('id'),'this');
row = $("#grd_temuan").jqGrid('getRowData', $(this).attr('id'));
console.log(row,'row');
console.log(row.simpulan,'simpulan');
CKEDITOR.instances['simpulan'].setData(row.simpulan);
$('#exampleModal').modal('show');
//window.open(url, '_blank');
}));
function add_row() {
if (!App.canEdit()) return;
var curid = $(this).jqGrid('getGridParam','selrow'),
row = $(this).jqGrid('getRowData', curid);
if (!curid || row.kkr == ""){
show_warning('Untuk menambah Jenis Temuan silahkan pilih KKP terlebih dahulu');
return;
}
newid = 'new_' + parseFloat((new Date().getTime() + '').slice(7))+ Math.round(Math.random() * 100);
//$("#grd_temuan").jqGrid('addRowData', newid, {id_rinci_temuan: newid, kkr : row.kkr}, 'after', curid);
var defdata = {id_rinci_temuan: newid, kkr: row.kkr, lvl: 0};
var defdata = {id_rinci_temuan: newid};
var editparam = {
keys: true,
url: 'clientArray',
......@@ -202,16 +223,38 @@
restoreAfterError: false,
}
$(this).jqGrid('addRowData', newid, defdata, 'after', curid);
$(this).jqGrid('addRowData', newid, defdata);
$("#"+newid).addClass("jqgrid-new-row");
$(this).jqGrid('editRow', newid, editparam);
$(this).jqGrid('setSelection', newid);
};
function add_file(){
newid = 'new_' +parseFloat((new Date().getTime() + '').slice(7))+ Math.round(Math.random() * 100);
input = '<input type="file" id="hasil-file-'+newid+'" class="hasil-fileChanged" accept="application/pdf,.csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel, image/gif, image/jpeg">';
var data = {id_rinci_temuan:newid, input:input};
var grid = $(this);
$(this).jqGrid('restoreRow', last_hasil);
$(this).jqGrid('addRowData', newid, data);
last_hasil = newid;
}
function dblClickaudit(id, irow, icol, e) {
e.stopPropagation();
edit_row.call(this, id);
}
function aksiFormat( cellvalue, options, rowObject ){
return '<button type="button" title="unggah dokumen" class="uploadfiles" ><i class="icon-upload"></i></button>';
}
function linkFormat( cellvalue, options, rowObject ){
if(cellvalue)
return '<a href="<?php echo base_url($modul)?>/preview/'+cellvalue+'" style="padding: 0px 2px 0px 2px; text-decoration: underline" onClick="return false;" class="view_file">'+cellvalue+'</a>';
else
return '';
}
function edit_row(id) {
if (!App.canEdit()) return;
......@@ -238,15 +281,15 @@
}
function before_save(opt, id) {
jenis_temuan = $('#'+ id + '_jenis_temuan').val();
rekomendasi = $('#'+ id + '_rekomendasi').val();
deskripsi = $('#' + id + '_deskripsi').val();
if(jenis_temuan == '' || deskripsi == ''){
if(rekomendasi == '' || deskripsi == ''){
show_warning('Silakan lengkapi semua isian terlebih dahulu.','Perhatian');
return false;
}
$('#'+id+'_jenis_temuan').select2('destroy');
$('#'+id+'_rekomendasi').select2('destroy');
}
function after_restore() {
......@@ -255,7 +298,7 @@
function onEditaudit(id) {
if (!App.canEdit()) return;
$('#' + id + '_jenis_temuan').focus();
$('#' + id + '_rekomendasi').focus();
}
function del_row(id) {
......@@ -270,11 +313,78 @@
});
};
$('body').on('click', '.uploadfiles', (function(){
event.preventDefault();
$("#hasil-file-"+last_hasil+"").click();
}));
grd_hasil.on('change', $("#hasil-file-"+last_hasil), (function(){
event.preventDefault();
uploadNow('hasil', $("#hasil-file-"+last_hasil)[0].files[0], last_hasil, 'hasil');
}));
grd_hasil.on('click', '.view_file', (function(){
var url = $(this).attr('href');
window.open(url, '_blank');
}));
function uploadNow(type, file, idx, tipe){
var formData = new FormData();
formData.append(type, file);
$.ajax({
url: '<?php echo base_url().$modul; ?>/upload',
data: formData,
type: 'POST',
dataType: 'json',
cache: false,
contentType: false,
processData: false,
beforeSend: function(){ },
success: function(res){
grd_hasil.jqGrid('setRowData', idx, {'filename': res.filename, 'realname': res.realname});
show_info('Dokumen berhasil diunggah.');
},
error: function(res){
show_error('Dokumen gagal diunggah.');
}
});
}
function del_file(id){
var grid = $(this),
question = 'Hapus dari daftar ?',
row = grid.jqGrid('getRowData', id);
confirmation(question).then(function(answer) {
if (!answer) return;
purge_hasil.push(id);
grid.jqGrid('delRowData', id);
$.ajax({
url: '<?php echo base_url($modul)?>/hapus_file',
type: 'post',
dataType: 'json',
data: {id:id, nama_file:row.filename},
success: function(res, xhr)
{
if (res.isSuccess){
show_info(res.message);
}
else {
show_error(res.message, 'Gagal');
}
}
});
})
}
function initselect3(el){
var oid = el.id;
$(el).select2({
ajax: {
url: "<?php echo base_url()?>pilih/jenis_temuan",
url: "<?php echo base_url()?>pilih/pilih_rekomendasi",
type: 'POST',
dataType: 'json',
quietMillis: 200,
......@@ -285,7 +395,7 @@
return {results: data.results}
},
},
placeholder: 'Pilih Jenis Temuan',
placeholder: 'Pilih Rekomendasi',
allowClear: true,
openOnEnter: false,
dropdownAutoWidth : true,
......@@ -297,7 +407,7 @@
});
$(el).on('change', function(e){
var ele = [
{id: "id_jns", nama: "jenis_temuan"},
{id: "id_rekomendasi", nama: "rekomendasi"},
];
var idx = e.target.id;
// apply selection to grid element
......@@ -315,7 +425,7 @@
});
$(el).on('select2-removed', function(e){
var ele = [
{id: "id_jns", nama: "jenis_temuan"},
{id: "id_rekomendasi", nama: "rekomendasi"},
];
var idx = e.target.id;
......@@ -343,13 +453,6 @@
return '<div>' + res.text + '</div>';
}
function gridRowAttr(rd){
switch (rd.lvl){
case 1 : return {"class": "row-level row-level-1"}; break;
case 2 : return {"class": "row-level row-level-2"}; break;
}
}
ko.validation.init({
insertMessages: false,
decorateElement: true,
......@@ -363,6 +466,7 @@
self.akses_level = ko.observable(<?php echo isset($akses) ? $akses : 0 ?>);
self.id = ko.observable(<?php echo isset($data['id_temuan_jenis']) ? $data['id_temuan_jenis'] : 0 ?>);
self.id_surat = ko.observable(<?php echo isset($data['id_surat']) ? $data['id_surat'] : 0 ?>);
self.id_ref_temuan = ko.observable(<?php echo isset($data['id_ref_temuan']) ? $data['id_ref_temuan'] : 0 ?>);
self.nomor_surat = ko.observable(<?php echo isset($data['nomor']) ? json_encode($data['nomor']) : "''" ?>)
.extend({
......@@ -383,10 +487,18 @@
}
});
self.jns_tugas = ko.observable('<?php echo isset($data['id_jns_penugasan']) ? $data['id_jns_penugasan'] : '' ?>');
self.jns_tugas = ko.observable('<?php echo isset($data['id_rekomendasi_penugasan']) ? $data['id_rekomendasi_penugasan'] : '' ?>');
self.nama_jns_tugas = ko.observable('<?php echo isset($data['jenis_penugasan']) ? $data['jenis_penugasan'] : '' ?>');
self.jns_periksa = ko.observable('<?php echo isset($data['id_jns_pemeriksaan']) ? $data['id_jns_pemeriksaan'] : '' ?>');
self.jns_periksa = ko.observable('<?php echo isset($data['id_rekomendasi_pemeriksaan']) ? $data['id_rekomendasi_pemeriksaan'] : '' ?>');
self.nama_periksa = ko.observable('<?php echo isset($data['jenis_pemeriksaan']) ? $data['jenis_pemeriksaan'] : '' ?>');
self.rekomendasi = ko.observable('<?php echo isset($data['jenis_temuan']) ? $data['jenis_temuan'] : '' ?>');
self.judul = ko.observable('<?php echo isset($data['judul']) ? $data['judul'] : '' ?>');
self.deskripsi = ko.observable('<?php echo isset($data['deskripsi']) ? $data['deskripsi'] : '' ?>');
self.kriteria = ko.observable('<?php echo isset($data['kriteria']) ? $data['kriteria'] : '' ?>');
self.sebab = ko.observable('<?php echo isset($data['sebab']) ? $data['sebab'] : '' ?>');
self.akibat = ko.observable('<?php echo isset($data['akibat']) ? $data['akibat'] : '' ?>');
self.tanggapan = ko.observable('<?php echo isset($data['tanggapan']) ? $data['tanggapan'] : '' ?>');
self.penugasan = ko.observable('<?php echo isset($data['penugasan']) ? $data['penugasan'] : '' ?>');
self.mode = ko.computed(function() {
return self.id() > 0 ? 'edit' : 'new';
......@@ -431,9 +543,11 @@
App.nama_jns_tugas(rs.jns_tgs);
App.jns_periksa(rs.id_prs);
App.nama_periksa(rs.jns_prs);
App.tgl(rs.tanggal_surat);
App.penugasan(rs.penugasan);
$('#grd_temuan').jqGrid('setGridParam', {'url': '<?php echo base_url() . $modul; ?>/data_kkp/' + App.id_surat(), 'datatype': 'json'});
$('#grd_temuan').trigger('reloadGrid');
//$('#grd_temuan').jqGrid('setGridParam', {'url': '<?php echo base_url() . $modul; ?>/data_kkp/' + App.id_surat(), 'datatype': 'json'});
//$('#grd_temuan').trigger('reloadGrid');
});
}
......@@ -474,10 +588,12 @@
var $frm = $('#frm'),
data = JSON.parse(ko.toJSON(App));
data_rinci = $('#grd_temuan').jqGrid('getRowData'),
rincian = $.grep(data_rinci, function(e){ return isNaN(e.lvl) || parseInt(e.lvl) == 0 });
data['rincian'] = JSON.stringify(rincian);
//data['rincian'] = JSON.stringify($('#grd_temuan').jqGrid('getRowData'));
//rincian = $.grep(data_rinci, function(e){ return isNaN(e.lvl) || parseInt(e.lvl) == 0 });
//data['rincian'] = JSON.stringify(rincian);
data['rincian'] = JSON.stringify($('#grd_temuan').jqGrid('getRowData'));
data['data_hasil'] = JSON.stringify($('#grd_hasil').jqGrid('getRowData'));
data['purge'] = purge;
data['purge_hasil'] = purge_hasil;
App.processing(true);
$.ajax({
......@@ -502,10 +618,13 @@
App.init_grid = function() {
var grd_rinci = $('#grd_temuan');
var grd_hasil = $('#grd_hasil');
if (App.id() > 0) {
grd_rinci.jqGrid('setGridParam', {'url': '<?php echo base_url() . $modul; ?>/rinci/' + App.id(), 'datatype': 'json'});
grd_rinci.jqGrid('setGridParam', {'url': '<?php echo base_url() . $modul; ?>/rinci/' + App.id() + '/1', 'datatype': 'json'});
grd_rinci.trigger('reloadGrid');
grd_hasil.jqGrid('setGridParam', {'url': '<?php echo base_url() . $modul; ?>/rinci/' + App.id() + '/2', 'datatype': 'json'});
grd_hasil.trigger('reloadGrid');
}
else
{
......@@ -517,10 +636,10 @@
var data = {'text': $(element).attr('data-init')};
callback(data);
}
App.query_jenis_tugas = function(option) {
App.query_jenis_periksa = function(option) {
$.ajax({
url: "<?php echo base_url() ?>pilih/jenis_tugas",
url: "<?php echo base_url() ?>pilih/jenis_pemeriksaan",
type: 'POST',
dataType: 'json',
data: {
......@@ -534,9 +653,9 @@
});
};
App.query_jenis_periksa = function(option) {
App.query_temuan = function(option) {
$.ajax({
url: "<?php echo base_url() ?>pilih/jenis_pemeriksaan",
url: "<?php echo base_url() ?>pilih/jenis_temuan",
type: 'POST',
dataType: 'json',
data: {
......@@ -550,10 +669,6 @@
});
};
App.formatPejabat = function(res) {
return '<div><strong>' + res.text + '</strong></div><div style="border-bottom:1px solid #ccc">' + res.jabatan + '</div>';
}
ko.applyBindings(App);
setTimeout(function() {
App.init_grid();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment