顯示具有 複製 標籤的文章。 顯示所有文章
顯示具有 複製 標籤的文章。 顯示所有文章

2022年10月11日 星期二

V20301 - 複製 - checkboxmodel - 多選複製後, Locate 至複製後的資料

 目的: 複製 - checkboxmodel - 多選複製後, Locate 至複製後的資料

處理說明: 1>複製資料後,重新顯示
                    //複製資料     
                    for (let i = 0; i <= cur_recs.length - 1; i++) {
                        console.log("i:", i);                        
                        cur_rec = cur_recs[i];    
                        //object 不可直接 assign ,指到原本cur_rec會改到原本的 cur_rec                    
                        //copy_rec = cur_rec;   
                        copy_rec = cur_rec.copy();
                        Tmp_NEXT_FMNO = get_NEXT_FMNO();
                        var Tmp_cur_DT = DatetoStr(now, "Y/m/d");
                        var Tmp_MDDT = DatetoStr(copy_rec.data["MDDT"], "Y/m/d");
                        copy_rec.data["FMNO"]=Tmp_NEXT_FMNO;                        
                        copy_rec.data["BTDT"] = Tmp_cur_DT;        
                        copy_rec.data["MDDT"] = Tmp_cur_DT;        
                        copy_rec.data["STATFM"] = "A";        
                        copy_rec.data["DTSOR"] = "A";        
                        copy_rec.data["OSM"] = "";                    
                        //新增資料庫資料
                        Copy_FMNO(copy_rec);
                    } //  end of for (let i=0,)                   
                       //重新顯示資料  
                       Ext.getCmp('btn_Show').fireHandler();
                       Ext.getCmp('grid_Single').getView().refresh();

                  2> 跳至最後一頁
                        var Tmp_ptb = Ext.getCmp('grid_ptb');
                        Tmp_ptb.moveLast();
  


1>*.js  store load完成後 , locate 至最新的資料
     gridstore.on('load', function (me, records, successful, eOpts) {
          var Tmp_index = gridstore.find("FMNO", Tmp_NEXT_FMNO);
          var sel_rec = gridstore.getAt(Tmp_index);
          Ext.getCmp('grid_Single').getView().getSelectionModel().select(sel_rec);
         gridstore.un("load", gridstore.events.load.listeners[gridstore.events.load.listeners.length-1].fn);
       }) // end of Ext.getCmp('grid_Single')..on("load")

2>*.js  複製後, 重新顯示 store
Ext.getCmp("btn_copy").on('click', function (me, e, eOpts) {        
        var cur_recs = Ext.getCmp('grid_Single').getSelectionModel().getSelection();
        var cur_rec;
        console.log("before copy_rec");
        //var copy_rec = Ext.create('Ext.data.Model', {});            
        var copy_rec;  //?? 如何產生另一 copy_rec 不和 cur_rec 相同
        var np = {};
        console.log("after copy_rec");
        if (cur_recs.length == 0) {
            buttonModel.modelType = 0;
            mywarnalert('請先勾選要複製的資料!!');
        }
        else {
            //var gridstore = Ext.getCmp('grid_Single').store;
            me.delMessage = "確定複製勾選的資料嗎?";
            Ext.Msg.confirm('提醒', me.delMessage, callBackFunc);
            function callBackFunc(id) {
                if (id == 'yes') {
                    gridstore.on('load', function (me, records, successful, eOpts) {
                        console.log("grid_Single on load !!")
                        console.log("Tmp_NEXT_FMNO:", Tmp_NEXT_FMNO);
                        var Tmp_index = gridstore.find("FMNO", Tmp_NEXT_FMNO);
                        console.log("Tmp_index:", Tmp_index);
                        var sel_rec = gridstore.getAt(Tmp_index);
                        console.log("sel_rec:", sel_rec);
                        Ext.getCmp('grid_Single').getView().getSelectionModel().select(sel_rec);
                        console.log("gridstore.events:", gridstore.events);
                        gridstore.un("load", gridstore.events.load.listeners[gridstore.events.load.listeners.length-1].fn);
                    })  // end of Ext.getCmp('grid_Single')..on("load")
                    console.log("cur_recs.length:", cur_recs.length);                    
                    for (let i = 0; i <= cur_recs.length - 1; i++) {
                        console.log("i:", i);                        
                        cur_rec = cur_recs[i];                        
                        copy_rec = cur_rec;
                        console.log("0 cur_rec: ", cur_rec);
                        Tmp_NEXT_FMNO = get_NEXT_FMNO();
                        var Tmp_cur_DT = DatetoStr(now, "Y/m/d");
                        var Tmp_MDDT = DatetoStr(copy_rec.data["MDDT"], "Y/m/d");
                        console.log("Tmp_NEXT_FMNO:", Tmp_NEXT_FMNO);
                        copy_rec.data["FMNO"]=Tmp_NEXT_FMNO;                        
                        copy_rec.data["BTDT"] = Tmp_cur_DT;        
                        copy_rec.data["MDDT"] = Tmp_cur_DT;        
                        copy_rec.data["STATFM"] = "A";        
                        copy_rec.data["DTSOR"] = "A";        
                        copy_rec.data["OSM"] = "";                    
                        console.log("1 cur_rec: ", cur_rec);
                        console.log("copy_rec: ", copy_rec);
                        //新增資料庫資料
                        Copy_FMNO(copy_rec);
                    } //  end of for (let i=0,)                    
                    //因為複製後, 按[顯示資料]鈕, 並不會顯示刪才新增的資料,& Local 新增的資料                                Ext.getCmp('btn_Show').fireHandler();
                    Ext.getCmp('grid_Single').getView().refresh();
                    //跳至最後一頁
                    var Tmp_ptb = Ext.getCmp('grid_ptb');
                    Tmp_ptb.moveLast();                    
                    buttonModel.modelType = 0;
                }  // end    if (id == 'yes')             
            }  // end of callbackfunc
        }  //end of else {}       
    }
    );



2022年9月21日 星期三

V20301 –[複製] – 複製多筆資料 – CheckboxModel – 覆蓋原本 parent.[複製處理]

 目的: V20301 –[複製] – 複製多筆資料 – CheckboxModel – 覆蓋原本 parent.[複製]鈕.處理

處理說明:  1>覆蓋原本 parent.[複製]鈕.處理 un('click', Handlerfn);
                   2>一筆一筆複製,呼叫後端函式 CopyFMNO (par_FMNO) ,於後端新增資料
                   3>重新顯示資料,btn_show.fireHandler()


1>*.js
//覆蓋原本 parent 的 [複製]鈕處理
Ext.getCmp('btn_copy').un("click", Ext.getCmp('btn_copy').events.click.listeners[0].fn);

//新的  [複製]鈕處理,
    var buttonModel = Ext.create('G_buttonModel');   //取得 目前的畫面狀態(1,2,3 : 新增/編輯/瀏覽)
    Ext.getCmp("btn_copy").on('click', function (me, e, eOpts) {        
       var cur_recs = Ext.getCmp('grid_Single').getSelectionModel().getSelection();
        var cur_rec;
        console.log("before copy_rec");
        var copy_rec;  //?? 如何產生另一 copy_rec 不和 cur_rec 相同
        var np = {};
        if (cur_recs.length == 0) {
            buttonModel.modelType = 0;
            mywarnalert('請先勾選要複製的資料!!');
        }
        else {
            var gridstore = Ext.getCmp('grid_Single').store;
            me.delMessage = "確定複製勾選的資料嗎?";
            Ext.Msg.confirm('提醒', me.delMessage, callBackFunc);
            function callBackFunc(id) {
                if (id == 'yes') {
                    console.log("cur_recs.length:", cur_recs.length);                    
                    for (let i = 0; i <= cur_recs.length - 1; i++) {
                        console.log("i:", i);                        
                        cur_rec = cur_recs[i];                        
                        copy_rec = cur_rec;
                        console.log("0 cur_rec: ", cur_rec);
                        var Tmp_NEXT_FMNO = get_NEXT_FMNO();
                        var Tmp_cur_DT = DatetoStr(now, "Y/m/d");
                        var Tmp_MDDT = DatetoStr(copy_rec.data["MDDT"], "Y/m/d");
                        console.log("Tmp_NEXT_FMNO:", Tmp_NEXT_FMNO);
                        copy_rec.data["FMNO"]=Tmp_NEXT_FMNO;                        
                        copy_rec.data["BTDT"] = Tmp_cur_DT;        
                        copy_rec.data["MDDT"] = Tmp_cur_DT;        
                        copy_rec.data["STATFM"] = "A";        
                        copy_rec.data["DTSOR"] = "A";        
                        copy_rec.data["OSM"] = "";                    
                        console.log("1 cur_rec: ", cur_rec);
                        console.log("copy_rec: ", copy_rec);
                        //新增資料庫資料
                        Copy_FMNO(copy_rec);
                    } //  end of for (let i=0,)
                    //複製完成後,重新顯示資料  
                    Ext.getCmp('btn_Show').fireHandler();
                    buttonModel.modelType = 0;
                }  // end    if (id == 'yes')             
            }  // end of callbackfunc
        }  //end of else {}       
    }
    );

function Copy_FMNO(par_copy_rec)
{
    var np = {};
    np = par_copy_rec.data;
    Ext.Ajax.request({
        method: "POST",
        url: '../../api/V20301API/Copy_FMNO',
        params: np,
        async: false,
        success: function (response, opts) {
            var Tmp_Obj = Ext.decode(response.responseText);
            if (Tmp_Obj["success"]) {
                Tmp_Rtn_Msg = Tmp_Obj['Rtn_Msg'].toString();       
                //"複製成功 !! <br>" 
                mywarnalert(Tmp_Rtn_Msg);
                //gridstore.add(copy_rec);
            }
            else {
                Tmp_Rtn_Msg = Tmp_Obj['Rtn_Msg'].toString();       
                //"複製失敗 !!"
                mywarnalert(Tmp_Rtn_Msg);
            }
        }, // end of  success 
        failure: function (response, opts) {
            isOk = false;
        }
    });  // end of Ext.Ajax                   
}  // end of  function string  Copy_FMNO(Tmp_FMNO)



    //取得   FMNO 的下一編號
    function get_NEXT_FMNO() {
        var isOk = true;
        var Tmp_NEXT_FMNO = "";        
        var np = {};
        Ext.Ajax.request({
            method: "POST",
            url: '../../api/V20301API/get_NEXT_FMNO',
            params: np,
            async: false,
            success: function (response, opts) {
                var Tmp_Obj = Ext.decode(response.responseText);
                //console.log("Tmp_Obj[success]=", Tmp_Obj["success"]);
                if (Tmp_Obj["success"]) {
                    Tmp_NEXT_FMNO = Tmp_Obj['NEXT_FMNO'].toString();
                    if (Tmp_NEXT_FMNO.length == 0)
                        Tmp_NEXT_FMNO = '001';
                    console.log("Tmp_NEXT_FMNO=", Tmp_NEXT_FMNO);
                    return Tmp_NEXT_FMNO;
                    //mywarnalert(Tmp_Str);
                    //console.log(" 1 success return false");                    
                }
                else {
                    mywarnalert("取得下一系統件單號(FMNO)失敗 !!");
                }
            }, // end of  success 
            failure: function (response, opts) {
                isOk = false;
            }
        });  // end of Ext.Ajax               
        return Tmp_NEXT_FMNO;
    }  // end of  function string  get_NEXT_FMNO(Tmp_FMNO)


2022年9月20日 星期二

V20301 - [挎貝]鈕, 複製目前的資料, 並設定PK欄位值 - PK取得最大值+1

 目的:  [挎貝]鈕, 複製目前的資料, 並設定PK欄位值

處理說明:  1>將 Template 的[挎貝]鈕, 設為 [顯示], 文字改為 [複製]

                   2> PK 取得最大值+1 







1>*.js

      Ext.getCmp('btn_copy').setVisible(true);
      Ext.getCmp('btn_copy').setText("複製");

      //按[複製]鈕時, 會先執行 parent class 的處理,再呼叫目前 class 的處理 
      //所以  on('click' , 時, 編輯畫面 FMNO欄位已存在
     Ext.getCmp("btn_copy").on('click', function () {
        var Tmp_NEXT_FMNO = get_NEXT_FMNO();
        console.log("Tmp_NEXT_FMNO:", Tmp_NEXT_FMNO);
        Ext.getCmp("FMNO").setValue(Tmp_NEXT_FMNO);
    }
    );

    //取得   FMNO 的下一編號
    function get_NEXT_FMNO() {
        var isOk = true;
        var Tmp_NEXT_FMNO = "";        
        var np = {};
        Ext.Ajax.request({
            method: "POST",
            url: '../../api/V20301API/get_NEXT_FMNO',
            params: np,
            async: false,
            success: function (response, opts) {
                var Tmp_Obj = Ext.decode(response.responseText);
                //console.log("Tmp_Obj[success]=", Tmp_Obj["success"]);
                if (Tmp_Obj["success"]) {
                    Tmp_NEXT_FMNO = Tmp_Obj['NEXT_FMNO'].toString();
                    if (Tmp_NEXT_FMNO.length == 0)
                        Tmp_NEXT_FMNO = '001';
                    console.log("Tmp_NEXT_FMNO=", Tmp_NEXT_FMNO);
                    return Tmp_NEXT_FMNO;
                    //mywarnalert(Tmp_Str);
                    //console.log(" 1 success return false");                    
                }
                else {
                    mywarnalert("取得下一系統件單號(FMNO)失敗 !!");
                }
            }, // end of  success 
            failure: function (response, opts) {
                isOk = false;
            }
        });  // end of Ext.Ajax               
        return Tmp_NEXT_FMNO;
    }  // end of  function string  get_NEXT_FMNO(Tmp_FMNO)