單例模式,反射破環?_包裝設計

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

餓漢式

// 餓漢式單例
public class Hungry {
    
    //構造器私有
    private Hungry(){

    }
    // 一上來就把這個類加載了
    private final static  Hungry HUNGRY = new Hungry();

    public static Hungry getInstance(){
        return HUNGRY;
    }
}
// 餓漢式單例
public class Hungry {
    // 這4組數據非常耗內存資源,餓漢式一上來就把所有的內存裏面的東西全部加載進來了,就存在這個空間
    // 但這個空間現在是沒有使用的,可能會造成浪費空間
    private byte[] data1 = new byte[1024*1024];
    private byte[] data2 = new byte[1024*1024];
    private byte[] data3 = new byte[1024*1024];
    private byte[] data4 = new byte[1024*1024];
    
    //構造器私有
    private Hungry(){

    }
    // 一上來就把這個類加載了
    private final static  Hungry HUNGRY = new Hungry();

    public static Hungry getInstance(){
        return HUNGRY;
    }

}

餓漢式單例可能會造成浪費空間,所以想要用的時候再去創建這個對象,平時就先放在這個地方,於是就出現了懶漢式!

懶漢式

// 懶漢式單例
public class LazyMan {
	
   // 構造器私有
    private LazyMan(){
       
    }

    private  static LazyMan lazyMan;

   
    public static LazyMan getInstance(){
       
        if (lazyMan==null){
            lazyMan = new LazyMan(); 
        }
        return lazyMan;
    }
}

它是有問題的,單線程下確實單例ok,多線程併發就會出現問題!

測試

// 懶漢式單例
public class LazyMan {
	
   // 構造器私有
    private LazyMan(){
       System.out.println(Thread.currentThread().getName()+":: ok");
    }

    private  static LazyMan lazyMan;

   
    public static LazyMan getInstance(){
       
        if (lazyMan==null){
            lazyMan = new LazyMan(); 
        }
        return lazyMan;
    }
    
    public static void main(String[] args) {

        for (int i = 0; i < 10; i++) {
            new Thread(() -> {
                LazyMan.getInstance();
            }).start();
        }
    }
}

發現單例有問題,每次結果可能都不一樣!

解決

// 懶漢式單例
public class LazyMan {


    private LazyMan(){
        System.out.println(Thread.currentThread().getName()+":: ok");
    }

    private  static LazyMan lazyMan;

    // 雙重檢測鎖模式的 懶漢式單例 DCL懶漢式
    public static LazyMan getInstance(){
        if (lazyMan==null){
            synchronized (LazyMan.class){
                if (lazyMan==null){
                    lazyMan = new LazyMan(); 
                }
            }
        }
        return lazyMan;
    }

     public static void main(String[] args) {

         for (int i = 0; i < 10 ; i++) {
             new Thread(()->{
                LazyMan.getInstance();
             }).start();
         }
     }
}

但在極端情況下還是可能出現問題

經歷三個步驟:

1、 分配內存空間

2、 執行構造方法,初始化對象

3、 把這個對象指向這個空間

有可能會發生指令重排的操作!

比如,期望它執行 123 ,但是它真實可能執行132,比如第一個A線程過來執行了132,先分配空間再吧這個空間佔用了,佔用之後再去執行構造方法,如果現在突然來了個B線程,由於A已經指向這個空間了,它會以為這個 lazyMan 不等於 null ,直接return ,此時lazyMan還沒有完成構造,所以必須避免這個問題!

必須加上volatile

// 懶漢式單例
public class LazyMan {


    private LazyMan(){
        System.out.println(Thread.currentThread().getName()+":: ok");
    }
	// 避免指令重排
    private volatile static LazyMan lazyMan;

    // 雙重檢測鎖模式的 懶漢式單例 DCL懶漢式
    public static LazyMan getInstance(){
        if (lazyMan==null){
            synchronized (LazyMan.class){
                if (lazyMan==null){
                    lazyMan = new LazyMan(); 
                }
            }
        }
        return lazyMan;
    }

     public static void main(String[] args) {

         for (int i = 0; i < 10 ; i++) {
             new Thread(()->{
                LazyMan.getInstance();
             }).start();
         }
     }
}

靜態內部類

// 靜態內部類
public class Holder {
    private Holder(){

    }
    public static Holder getInstance(){
        return InnerClass.HOLDER;
    }
    public static  class InnerClass{
        private static final Holder HOLDER = new Holder();
    }
}

也是單例模式的一種,不安全!

單例不安全 反射

// 懶漢式單例
public class LazyMan {


    private LazyMan(){
        System.out.println(Thread.currentThread().getName()+":: ok");
    }

    private volatile static LazyMan lazyMan;

    // 雙重檢測鎖模式的 懶漢式單例 DCL懶漢式
    public static LazyMan getInstance(){
        if (lazyMan==null){
            synchronized (LazyMan.class){
                if (lazyMan==null){
                    lazyMan = new LazyMan(); //不是一個原子性操作
                }
            }
        }
        return lazyMan;
    }


    //反射
     public static void main(String[] args) throws Exception {
         LazyMan instance1 = LazyMan.getInstance();
         Constructor<LazyMan> declaredConstructor = LazyMan.class.getDeclaredConstructor(null);
         declaredConstructor.setAccessible(true); // 無視了私有的構造器
         // 通過反射創建對象
         LazyMan instance2 = declaredConstructor.newInstance();

         System.out.println(instance1);
         System.out.println(instance2);
     }
}

結論:反射可以破壞這種單例

解決

// 懶漢式單例
public class LazyMan {

    private LazyMan(){
        synchronized (LazyMan.class){
            if (lazyMan!=null){
                throw new RuntimeException("不要試圖使用反射破環 異常");
            }
        }
        System.out.println(Thread.currentThread().getName()+":: ok");
    }

    private volatile static LazyMan lazyMan;

    // 雙重檢測鎖模式的 懶漢式單例 DCL懶漢式
    public static LazyMan getInstance(){
        if (lazyMan==null){
            synchronized (LazyMan.class){
                if (lazyMan==null){
                    lazyMan = new LazyMan(); //不是一個原子性操作
                }
            }
        }
        return lazyMan;
    }

    //反射
     public static void main(String[] args) throws Exception {
         LazyMan instance1 = LazyMan.getInstance();
         Constructor<LazyMan> declaredConstructor = LazyMan.class.getDeclaredConstructor(null);
         declaredConstructor.setAccessible(true); // 無視了私有的構造器
         // 通過反射創建對象
         LazyMan instance2 = declaredConstructor.newInstance();

         System.out.println(instance1);
         System.out.println(instance2);
     }
}

但是如果都用反射創建對象的情況下,還是會破環單例!

測試

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

解決

// 懶漢式單例
public class LazyMan {
      // 標誌位
    private static boolean abc = false;

    private LazyMan(){
        synchronized (LazyMan.class){
            if (abc==false){
                abc=true;
            }else {
                throw new RuntimeException("不要試圖使用反射破環 異常");
            }
          
        }
        System.out.println(Thread.currentThread().getName()+":: ok");
    }
    private volatile static LazyMan lazyMan;

    // 雙重檢測鎖模式的 懶漢式單例 DCL懶漢式
    public static LazyMan getInstance(){
        if (lazyMan==null){
            synchronized (LazyMan.class){
                if (lazyMan==null){
                    lazyMan = new LazyMan(); //不是一個原子性操作
                }
            }
        }
        return lazyMan;
    }

    //反射
    public static void main(String[] args) throws Exception {
        //LazyMan instance1 = LazyMan.getInstance();
        Constructor<LazyMan> declaredConstructor = LazyMan.class.getDeclaredConstructor(null);
        declaredConstructor.setAccessible(true); // 無視了私有的構造器
        // 通過反射創建對象
        LazyMan instance2 = declaredConstructor.newInstance();
        LazyMan instance1 = declaredConstructor.newInstance();

        System.out.println(instance1);
        System.out.println(instance2);
    }
}

但是如果被人知道 abc這個變量,也可以破環!

單例又被破環了!

看一下源碼

它說不能使用反射破環枚舉,枚舉是jdk1.5出現的,自帶單例模式!

測試,寫一個枚舉類

// enum 本身就是一個class類
public enum EnumSingle {

    INSTANCE;
    public EnumSingle getInstance(){
        return INSTANCE;
    }
}

查看它的源碼

試圖破環!

// enum 本身就是一個class類
public enum EnumSingle {

    INSTANCE;
    public EnumSingle getInstance(){
        return INSTANCE;
    }
}
class Test{
    public static void main(String[] args) throws Exception {
        EnumSingle instance1 = EnumSingle.INSTANCE;
        Constructor<EnumSingle> declaredConstructor = EnumSingle.class.getDeclaredConstructor(null);
        declaredConstructor.setAccessible(true);
        EnumSingle instance2 = declaredConstructor.newInstance();
        System.out.println(instance1);
        System.out.println(instance2);
    }
}

它竟然說我現在的這個枚舉類中沒有空參構造器!

然後就去源碼里分析!

找到這個class文件!利用javap反編譯一下!

發現這個也显示有一個空參構造,證明這個也不對,用第三方的工具查看!

利用它再吧class文件生成java文件!

打開這個java文件

證明是idea和源碼騙了我!

再次嘗試破環!

// enum 本身就是一個class類
public enum EnumSingle {

    INSTANCE;
    public EnumSingle getInstance(){
        return INSTANCE;
    }
}
class Test{
    public static void main(String[] args) throws Exception {
        EnumSingle instance1 = EnumSingle.INSTANCE;
        Constructor<EnumSingle> declaredConstructor = EnumSingle.class.getDeclaredConstructor(String.class,int.class);
        declaredConstructor.setAccessible(true);
        EnumSingle instance2 = declaredConstructor.newInstance();
        System.out.println(instance1);
        System.out.println(instance2);
    }
}

結論:反射無法破環枚舉類!

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

北京匡時2019秋拍大戲開啟 中國書畫專場名家名作薈萃_包裝設計

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

北京匡時2019秋季拍賣會於21日在北京拉開帷幕,本季秋拍集中呈現了中國書畫、古籍善本、國石篆刻、名硯、現當代藝術等多個門類的600餘件藝術臻品,不僅有流傳有緒的名品——齊白石、陳半丁合繪《挖耳圖》,也有唐宋寫經、宋元碑帖等精品古籍刻本。

“中國書畫專場”共300餘件拍品,其中尤其值得關注的拍品有齊白石、黃賓虹、張大千、溥儒、林風眠、高鳳翰、錢泳、屠倬以及顧大昌舊藏清中拓《開通褒斜道摩崖》、初拓《袁安碑》等。北京文物商店舊藏齊白石、陳半丁1945年合繪的《挖耳圖》,此作先後在1990年在日本大阪龍華堂、新加坡新華美術中心以及首都博物館展出,有六次出版,是一件流傳有緒的赫赫名作。

另有新加坡戴淮清、唐錦雲夫婦舊藏的齊白石《燭鼠圖》《紅梅圖》,都是直接得自新加坡中華書局。黃賓虹《贈蔡守、談月色山水》手卷是為南社同仁所作,以用筆為主,勁峭簡練,有別於後期的層層點染,更多一些清朴自在的風味。

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

溥儒《鍾馗圖》用溥氏獨有的精準爽利的釘頭鼠尾描將鍾馗袍帶寬厚鬆軟的質感表現的淋漓盡致,也在衣折的蜿蜒承轉之中將人物的動態表現的入木三分致。林風眠《三美圖》畫的是一種半具體半抽象的環境,營造一種朦朧的情調,由姿情和氣質傳達出東方女性的溫柔閑雅、清淡秀媚、如詩如夢。

古籍善本專場則甄選拍品207件,包括唐宋寫經、宋元及歷代刻經等佛教經典、宮廷典籍、明清珍本、金石碑帖、拿破侖王后及陳寅恪舊藏西文搖籃本等諸多專題,其中由同一藏家提供的29件拍品多為稀見刻本及批校本,如蒲學泰斗路大荒手校《聊齋誌異》、鍾佛操精校《古文詞略》、劉世珩校樣本《大戴禮記》等,並徵得周叔弢家族的校刻本及藏書等。

方寸乾坤——印石篆刻專場彙集了明清代以來諸多文人篆刻精品佳作,這些印章有篆刻名家自用印,也有其為友人所刻姓名印、收藏印、詩文閑章等。所涉名家包括程邃、楊玉璇、郭懋介、郭祥忍、郭祥雄、陳禮忠、潘驚石、張純連等,可謂名家薈萃。

此外,預展還有寶硯齋藏硯專場、現當代藝術專場等精品。預展期為12月21日-22日,12月23日將舉槌拍賣。

本站聲明:網站內容來http://www.societynews.cn/html/wh/fq/,如有侵權,請聯繫我們,我們將及時處理

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

外觀配置虐10萬內的合資車!7.78萬起的SUV車主愛嗎?_包裝設計

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

后懸挂較硬,濾振不太好。還有輪胎的胎噪比較大。車主二購買車型:優雅版 1。3T自動領尚型裸車價格:9。68萬值得表揚的地方:當初買車就是衝著帝豪GS的外觀和內飾去的,的確很漂亮,我是90后,也喜歡帝豪GS的設計。然後就是性價比了,我買的這款算中高配,配置有ESp、自動駐車、胎壓監測裝置、定速巡航、還選裝了全景天窗。

帝豪GS上市以來,市場關注度一直居高不下。它的外觀、內飾設計都展現了較高水準,可以說10萬內的合資車型在帝豪GS面前都黯然失色。下面我們就來看看第一批車主對它的評價怎樣!

吉利汽車-帝豪GS

指導價:7.78-10.88萬

基本資料

車身長寬高:4440*1833*1560mm

軸距:2700mm

動力:

1.3T+6擋雙離合/6MT

1.8L+6擋雙離合/6MT

車主一

購買車型:運動版 1.8L 手動領尚型

裸車價格:8.78萬

值得表揚的地方:

我覺得現在吉利推出的新車都很不錯,博瑞特別高端大氣、博越也很沉穩、而現在的帝豪GS和帝豪GL就很適合我們這些工薪階層。外觀是跨界風格,內飾設計精緻比較上檔次。座椅的舒適性不錯,乘坐的空間也比較大的!

1.8L發動機搭配6擋手動變速箱,動力是充足的,油門很敏感,深踩推背感還是有的!我目前行駛了600多公里了,

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

平均油耗大約是8.7L,我覺得這個油耗數據要繼續觀察才行,畢竟還沒過磨合期。

尚有不足:

油耗比傳祺GS4要高。后懸挂較硬,濾振不太好。還有輪胎的胎噪比較大。

車主二

購買車型:優雅版 1.3T自動領尚型

裸車價格:9.68萬

值得表揚的地方:

當初買車就是衝著帝豪GS的外觀和內飾去的,的確很漂亮,我是90后,也喜歡帝豪GS的設計。然後就是性價比了,我買的這款算中高配,配置有ESp、自動駐車、胎壓監測裝置、定速巡航、還選裝了全景天窗。配置真的不低。

動力比較充沛,而且我感覺在3000轉時動力有很大的爆發力。目前我行駛了2300公里了,平均油耗是7.6L。我覺得還不錯。

尚有不足:

導航並不好用,所以更多時候會用手機導航。胎噪太大,我覺得換一套輪胎會好一些。後備廂總體偏小,所幸後排座椅能放倒!

編輯點評:

帝豪GS較低的定價和出色的外觀內飾設計,讓很多年輕的消費者關注它,甚至選擇了它。而它的空間、動力、剎車、油耗能讓人滿意。而較大的胎噪、稍硬的后懸架等方面,也是消費者需要考慮的地方。不過帝豪GS的性價比表現真不錯!本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

博物館里過元旦_包裝設計

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

張力濤攝/光明圖片1月1日,在河北張家口地質博物館,許多市民選擇帶孩子到這裏参觀,通過觀看模型、互動體驗等形式,學習了解地質知識和生物進化進程,過了一個好玩、好看的文化節。

本站聲明:網站內容來http://www.societynews.cn/html/wh/fq/,如有侵權,請聯繫我們,我們將及時處理

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

車上一顆螺絲的精密製作過程_包裝設計

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

看紅牛這個非常贊的視頻,記錄一顆螺絲從設計、到生產、最終投入使用的全部過程一一記錄下來。製造一個F1螺絲需要3名工程師工作12小時。這顆代號為RB12-FS-00663-02的螺絲,用於RB12賽車的前懸挂部分。之所以要拍這個視頻,就是想要告訴大家,F1賽車到底要做到多精密。

首先讓我們先介紹一下這顆螺絲的使用者,世界一級方程式賽車。

世界一級方程式錦標賽,簡稱F1。可能很多朋友對這項全球最昂貴的賽事並沒有十分了解,那先簡單介紹一下F1賽車。

以視頻中的紅牛車隊來說,一年的賽事預算2億英鎊,一台紅牛RB賽車造價就高達3000萬英鎊左右(包含研發等費用),換算成人民幣約等於2.4億,隨隨便便就秒掉十台八檯布加迪。搭載的1.6T V6超級發動機,馬力可以達到1000匹。全車重量大約600KG。目前賽道最快速度是舒馬赫在法拉利時期創下的375km/h。

F1賽車代表着汽車工業的最高科技,空氣動力學、ERS動能回收、超級發動機等等,且不說F1有多燒錢。除去錢以外,就是最頂尖的技術還有最嚴謹的態度,

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

F1賽車的每一個零件都是車隊親自製造,就連一顆螺絲釘也不例外。往往這些最細微的部分就是勝負的關鍵,就連一顆螺絲釘也可以決定全年的錢有沒有白花。

看紅牛這個非常贊的視頻,記錄一顆螺絲從設計、到生產、最終投入使用的全部過程一一記錄下來。

製造一個F1螺絲需要3名工程師工作12小時。這顆代號為RB12-FS-00663-02的螺絲,用於RB12賽車的前懸挂部分。之所以要拍這個視頻,就是想要告訴大家,F1賽車到底要做到多精密。平時只看到賽車在比賽,完全沒有機會發現幕後是如何工作的。

連一個小小的零件都要如此複雜,每過一道程序就要反覆檢驗,精確到每一個螺紋齒。先別說能不能統計一台F1賽車有多少個零件組成,光一個引擎就有大約5000個零件。從設計、建模到生產製造。需要多少心思在上面。

不知道比賽中車手不爭氣撞壞了賽車的時候,幕後的工作人員想不想讓他好好爽爽。漢密爾頓在一次嚴重的撞車事故中,衝出賽道的那一刻,他自己說了當時的想法:“oh no,要修車了”。不擔心自己受傷,反而擔心要修車,這也是醉了。

本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

多位國外 PS5 用戶反應 DualSense 控制器的觸覺反饋功能故障、R2 鍵鬆動_包裝設計

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

雖然一開始 PlayStation 5 的 Bugs 頻傳,不過已經有一陣子沒有新問題,原本以為應該就這樣了,沒想到最近又有疑似新災情出現,這次還不是遊戲主機,而是 PS5 中最讓玩家喜歡的全心 DualSense 控制器手把,國外陸續有玩家反應使用一陣子之後,觸覺反饋功能突然故障,而且是沒有任何外力撞擊就發生。

多位國外 PS5 用戶反應 DualSense 控制器的觸覺反饋功能故障

最近在國外 resetera 與 Reddit 論壇中,多位 PS5 玩家回報他們的 Dual Sense 控制器手把觸覺反饋功能有問題。像這位 EeK9X 提到,幾天前他在玩蜘蛛人遊戲時,突然感覺到 R2 鍵鬆動,然後瞬間變鬆,感覺就像是裡面有東西故障,隨後觸覺反饋就失效了:

而且他的 PS5 才玩不到 50 小時,非常新,一直以來也照顧的很好。他懷疑是內部彈簧脫落問題。

隨後也有玩家留言,他碰到一樣的狀況,而且也是 R2 這個鍵:

Reddit 早在一個月前,就有玩家反應 R2 彈簧鬆掉導致反饋功能失效,這位 mofftarkin33 是玩惡魔靈魂遊戲一週後發生,從外觀可以明顯看到 R2 鍵比 L2 還要鬆,接著他將 DualSense 控制器拆開之後發現,R2 的彈簧 90 度變形:

他拍攝的圖片:

View post on imgur.com

隨後他重新安裝彈簧,並調整角度就能正常使用了:

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

View post on imgur.com

這位 beefalo16 用戶也碰到,他也認同 mofftarkin33 的看法:

雖然國外論壇有很多玩家反應,但留言處也有不少人留言說他們的 DualSense 完全正常,我的也是,至今已經完超過一個月,兩個控制器都沒發生這情形,所以也可能是個案。

另外如果你的 DualSense 也有這狀況,我不推薦自行拆開修復,畢竟現在一定還在保固內,直接送修 Sony 就好。

資料來源:resetera、Reddit

PlayStation 5 第一手搶先開箱!絕對是現今最值得入手的遊戲主機

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

廣州大劇院2020年好戲不斷_包裝設計

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

廣州大劇院2020演出季發布會近日在廣州大劇院舉行。發布會介紹了2020廣州大劇院的重點項目,今年廣州大劇院在歌劇、音樂劇、戲劇戲曲及舞劇等陣營上將繼續上演眾多重磅作品,演出陣容更是星光熠熠,濮存昕、徐帆、靳東、韓雪、阿雲嘎、鄭雲龍等實力派演員都將帶着自己的舞台作品登陸廣州大劇院。

今年將開啟“央地合作”

2020年,廣州大劇院迎來開業十周年。據介紹,十年來,有1300多个中外藝術團體和32000多名藝術家先後登上廣州大劇院的舞台,帶來了3900多場精彩表演和1800多場藝術活動。同時,廣州大劇院充分利用中演院線以及絲綢之路國際劇院聯盟等國內、國外的演藝平台和渠道,积極推動廣東演藝院團、優秀演藝項目“走出去”。2018年12月,廣州芭蕾舞團赴馬耳他瓦萊塔地中海會議中心演出《芭蕾詩篇》;2019年8月,廣州芭蕾舞團編創的現代芭蕾舞劇《布蘭詩歌》和民族芭蕾舞劇《洛神》登陸美國紐約林肯中心大衛·寇克劇院;2020年,廣州歌舞劇院的民族舞劇《醒·獅》將赴美國波士頓博赫中心舒伯特劇院、華盛頓肯尼迪中心歌劇院上演。作為廣州、廣東的大劇院,廣州大劇院也堅持紮根本土,弘揚嶺南文化,十年來,劇院累計上演廣東本土優秀劇目300餘場。

今年,廣州大劇院將開啟文化領域“央地合作”新征程,作為中演院線的旗艦劇院,依託院線資源與故宮博物院開展合作,開發聯名文創產品,開辦系列講座,讓一南一北兩座文化殿堂迸發新火花。

發布會現場還舉行了中演院線廣州大劇院戲劇藝術中心授牌儀式,邀請著名劇作家唐棟、著名戲劇導演傅勇凡、著名舞美設計師秦立運等業內大咖出謀划策,加強原創劇目生產。中演院線執行董事、總經理,廣州大劇院董事長張利表示:“廣州大劇院在向生產型劇院邁進。以前有《馬可·波羅》,之後,創作會成為常態。”此外,廣州大劇院還聯合星海音樂廳推出貝多芬誕辰250周年紀念系列,組織全球超過500名藝術家,呈現貝多芬作品的大全集。

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

2020年好戲提前看

歌劇方面,今年廣州大劇院又有大動作,原創歌劇《馬可·波羅》 院慶十周年特別版將上演。此次邀請到人氣與實力兼具的王凱、洪之光、劉彬濠等新生代演員加盟,還有田浩江、周曉琳、宋倩、劉穎等蜚聲海內外的歌唱家坐鎮,同時聯手廣東珠影樂團和深圳歌劇舞劇院,為“大灣區歌劇孵化基地”的初試啼聲打下堅實基礎。發布會上,洪之光獻演劇中詠嘆調,提前讓觀眾感受到該劇的魅力。洪之光透露,其在劇中飾演文天祥,這個角色圓了自己想演中國原創歌劇的願望。此外,中國歌劇舞劇院的民族歌劇《小二黑結婚》和德國波恩歌劇院的貝多芬誕辰250周年獻禮歌劇《費德里奧》也備受期待,歌劇《費德里奧》是貝多芬偉大的作品之一,該劇有關於愛、生命、自由的表達,也有對婚姻中美好與聖潔的讚美。

戲劇方面,今年廣州大劇院也將迎來多部重磅作品,包括國家大劇院與廣州話劇藝術中心聯合製作原創話劇《林則徐》、北京人民藝術劇院話劇《天下第一樓》、俄羅斯瑪斯特卡雅劇院話劇《靜靜的頓河》以及北京當代話劇團《麥克白》、莎翁經典《哈姆雷特》等。

音樂劇陣營更是流量與明星雲集,韓雪、劉令飛領銜主演年度爆款音樂劇《白夜行》。中文原創音樂劇《圖蘭朵》的製作由中外頂級團隊聯合打造。音樂戲劇《叢林之書》由法國最重要劇院之一的巴黎城市劇院特邀享譽世界的先鋒戲劇大師羅伯特·威爾遜執導,超現實民謠姐妹花可可羅希為該劇創作了獨特音樂和歌曲,以全新的形式再現奇幻世界。

舞蹈方面,楊麗萍作品《十面埋伏》備受期待,該劇以中國舞蹈為主調,融合行為、裝置藝術、民樂及傳統戲劇等綜合藝術語言創造了“舞蹈劇場”,“風暴舞者”胡沈員、朱鳳偉將加盟演繹。大型原創民族舞劇《花木蘭》同樣陣容強大,飾演花木蘭的是荷花獎金獎獲得者郝若琦。本土兩大原創舞劇《沙灣往事》《醒·獅》也將再次登台。

戲曲方面,去年以一出《穆桂英挂帥》在廣州掀起了戲曲熱的的國家京劇院今年將帶來《龍鳳呈祥》《滿江紅》《鳳還巢》三部京劇作品,繼續由於魁智、李勝素領銜主演。此外,今年仍有多個世界名團的音樂會登陸廣州大劇院,包括巴黎室內樂團與別列佐夫斯基音樂會、波恩貝多芬交響樂團貝多芬交響曲音樂會等,精彩不斷,驚喜不斷。(記者 徐紹娜)

本站聲明:網站內容來http://www.societynews.cn/html/wh/fq/,如有侵權,請聯繫我們,我們將及時處理

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

當老傳統成為新時尚_包裝設計

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

北宋年間,家家戶戶貼年畫已是一種風尚,也由此,木版年畫在歷史的長河中始終留存着時尚的記憶。當代,手工木版年畫被以非物質文化遺產的形態加以保護,同時,傳承和創新也成為木版年畫傳承人肩負的兩個重任。有這樣一群人,他們視木版年畫為中國民間藝術寶庫中的一顆璀璨明珠,一直走在挖掘、創新、變革的路上。又是新年將至,今年的木版年畫可以為人們帶來哪些新意?這些心心念念的新時代“年畫家”都在忙些什麼?

 設計師王全傑 :年畫新可能

楊柳青年畫周曆簽

新年將至,北京順義區的一所小院里,設計師王全傑剛剛忙完楊柳青年畫周曆簽——2020年“世象新語”周曆的預售,5000套周曆幾乎都已被單位預定出去。初次嘗試與楊柳青木版年畫合作,並能夠得到市場的認可,王全傑不斷回味。

2019年7月,王全傑在清華美院校友召喚下加入了年畫日新創作營,本着對於年畫的關注與喜愛,帶着輕鬆自在的心情,王全傑輕裝上陣了。

剛入營,兩件事讓王全傑心情無法平靜。首先創作營的主辦方將組織結構安排得相當縝密,全國11個木版年畫產地會自發組成一個個創作小組(注:最終實際組成了9個創作小組),年畫傳承人+插畫師+設計師+導師(清華美院和中央美院的教授和副教授)作為一個小組組合,王全傑成了楊柳青組組長。主辦方的安排是,經過一個階段的年畫知識學習,再經歷1個月的創作,然後做出創新作品和產品進行展覽,最後對社會公開創作成果。

在學習了年畫知識、深入年畫創作地區了解了年畫歷史后,王全傑原先以為會憑藉著豐富設計經驗輕鬆完成這份任務,但卻被厚重的傳統文化攪動了內心。“真是無處下手,年畫傳承人深陷其中很難改變,我們作為外來者,出於對老祖宗留下的這些寶物的敬畏,似乎也不敢隨便說、隨便做了。”王全傑說。

一個月的迷茫期過後,王全傑總結出年畫轉化的兩個難點:第一,作為傳承人,雖然擁有老祖宗留下的年畫模板、掌握着傳統的刻畫技藝,但是缺少產品轉化能力;第二,作為外來者——設計人員,雖有很強的設計能力,但究竟轉化成什麼是最大的難點。

王全傑在腦海中翻轉:做什麼樣的產品,怎麼能體現楊柳青風格,怎麼能有新意,怎麼能增加使用的體驗感、情景感,還得製造點小驚喜。

經歷了無數個靈感的沉浮,一次次被自己或小組成員否定,王全傑關於周曆的創意橫空出世。機緣巧合的是,這樣一個創意很快得到北京一家企業的認可,並有意出資支持該創意。王全傑信心倍增。

“創意有了,落實到產品時,第一版就被出資方否定了。”王全傑再次回到原點。利用楊柳青年畫元素設計的第一版周曆美觀,但缺少生活黏性、很難達到與使用者的互動。

年畫日新創作營楊柳青組設計師們再次前往楊柳青,找到楊柳青木版年畫國家級非遺傳承人霍慶順,聽霍慶順細數年畫民俗,並對其所擁有的與老百姓生活相關的藏品做了仔細研究。霍慶順老人一句話點亮了王全傑內心。

“你看踩高蹺,大多數人都只看到表面上的熱鬧,但很少有人知道這其中最主要的用意是祭拜藥王、祈福安康。進入年關,每一天都有特殊的意義……”這句話就像一把開啟創意之門的鑰匙,為迷途中的王全傑和設計師們打開了門:“周曆的基礎上加入日曆,在臘月的最後一周開始日曆倒計時。”

創意有了,楊柳青創作小組成員連續两天兩夜的頭腦風暴,將創意再次細化落實在產品上:在周曆基礎之上特別策劃的“過年日曆”,篇篇辣詞趣語,以當下語境直入現代生活,內置如意轉盤每天跟你靈犀互動。這些新意讓2020年“世象新語”周曆產品順利出版落地。

“我們設計師想給楊柳青木版年畫傳承者做出一個示範,讓他們看到傳統年畫與當代流行文化融合的更多可能性。為大眾提供一個日常使用載體,讓人們了解楊柳青木版年畫的豐富性和多樣性。”王全傑說。

故事記錄者恭弘=叶 恭弘萌 :回歸當代時尚

穀雨平台上的金華木板年畫

對傳統手工藝有着濃厚興趣的恭弘=叶 恭弘萌,探索傳統與當代文化融合的路徑用了5年時間,為了讓更多人了解傳統手工藝他組建了一個傳統手工藝視頻傳播平台——穀雨,這個平台免費為手工藝人們拍攝宣傳片。

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

“中國上下五千年,從來不缺故事,但卻沒有人會講這些中國故事,有太多我們為之自豪的傳統手工藝散落於四野。如果不能讓人看見,又何談傳承呢?”恭弘=叶 恭弘萌說。

恭弘=叶 恭弘萌畢業於中國美術學院視覺傳達系。他做過設計師,參与設計的項目有中國國際西湖博覽會、第21屆金雞百花電影節標誌等;在電視台工作了十幾年。為了追逐心中的夢想,放棄穩定的工作,恭弘=叶 恭弘萌創業成立了自己的文化公司。服務了幾百個商業客戶后,2015年他突然感覺工作生涯中所有的積累都應該為了達成他內心中一個夢想——用各種方式構築傳統手工藝從再現到再生的體系,讓傳統手工藝能夠回歸當代生活,成為新的時尚,至此,穀雨——傳統手工藝內容轉化平台宣告問世。

2019年,穀雨的木版年畫產品轉化項目“傳統節中國禮”主旨就是讓傳統節更中國、更時尚。“穀雨打造的內容轉化平台是要做傳統手工藝時尚品牌孵化池。”恭弘=叶 恭弘萌說。

穀雨的平台上金華木版年畫製作者黃菁菁就是一位不甘於讓傳統成為傳說的女性。

金華木版年畫,孕育於漢唐,形成於宋元,鼎盛於明清。浙江在五代吳越時期就是木版畫比較發達的地區,至宋代,金華已經是全國木版年畫的中心之一。

黃菁菁出身木版年畫世家,長大后並沒有從事年畫製作,而成為一名商人,在杭州開了一家文化公司,經營得紅紅火火。雖然她在商界收穫了成功,但內心深處無數次回憶起兒時父輩們製作木版年畫的場景、父親抱着她給她講《五子登科》年畫故事的場景……她對記憶中的年畫魂牽夢繞。

那段日子里,似乎總有一個聲音,在向她不停地召喚。她決定:回家,做木版年畫。

回鄉之時正是金華木版年畫最蕭條的時期,曾經有專家對金華木版年畫的萎縮倍感痛心,黃菁菁的回歸讓金華木板年畫再現生機。

說來容易,做起來才知道苦辣辛酸。首先需搜集老版與老畫,“尋回金華年畫的根”。剛開始的那幾年,黃菁菁一直奔波在路上,從南疆到北國。後來甚至還走出了國門,無論是老版還是老畫,黃菁菁的用語都是“請回來”。 就這樣,黃菁菁一點一滴地打造起金華木版年畫博物館和年畫製作體驗館。如今,她的年畫博物館中已收藏了60餘套老版、2000多幅老年畫,其中六成都是孤版。而她的年畫製作體驗基地成了中國第六個年畫製作基地,也是浙江唯一的年畫基地。

傳承人邰立平:讓年畫“火”起來

邰立平作品《方弼》

年關將至,鳳翔木版年畫代表性傳承人邰立平忙得不亦樂乎。

鳳翔年畫“始於唐宋,盛於明清”,早在600多年前的明初洪武年間,世代耕居於此的邰氏家族就已經開始從事年畫的生產了。邰立平是鳳翔木版年畫第20代傳人。他創辦了鳳怡年畫社,致力於對流散民間的古樣進行挖掘、整理、研究和複製,使這一古老民間傳統藝術得以傳承。

邰立平這一代傳承人經歷了年畫從興到衰整個過程。“隨着時代的轉變和人們生活方式的變化,之前人們張貼年畫的習俗正在慢慢地改變。雖然春節時張貼年畫的習俗還未消失,但也從張貼傳統手工印製的年畫轉變為張貼機器印刷品,這就對傳統的非遺手工年畫形成了很大衝擊。傳統的木版年畫就是反映人民生活的一部百科全書。近年來,隨着國家對傳統文化的重視,社會上對這項古老的傳承技藝越來越推崇和認可,出現了很多國潮風格的文創作品,這都是傳統非遺技藝的文化土壤。”邰立平說。

邰立平認為,當下是鳳翔木版年畫發展的最佳時機。“把木版年畫繼承下去,讓民間美術發揚光大”這是邰立平最大的心愿。為了能夠儘早實現自己的心愿,他分步驟推動自己的計劃。

首先需要找回失散的木刻版。從1978年改革開放到上世紀90年代的年畫,邰立平共復刻了400多套版,大概2000塊木版,把散落民間的老畫樣基本全部恢復。他還分別在1994年出版了手工裝訂的《鳳翔木版年畫選》第一卷、1997年出版了第二卷。目前第三卷的出版工作也在緊張進行中。

其次,在創作上,鳳翔年畫風格緊貼時代脈搏。1999年巴黎中國文化周,邰立平創作了活動吉祥物獅子滾繡球版畫,2008年奧運會時創作了福娃主題作品。鳳翔年畫的名氣越來越大。邰立平先後應邀在澳大利亞、德國、法國等多個國家以及國內各大美院和美術館參展,其作品也陸續被中國國家博物館和國內外200多家藝術學院與機構收藏。

再次,從經營的角度,邰立平也不斷進行着適應市場的改變。傳統年畫的尺寸和包裝都不適應現代都市人的需求,他們專門推出了適合張貼在城市單扇門上的小門神年畫,對年畫的包裝進行變革,更能使現代人喜歡和接受。

這些年邰立平一直在探索如何讓年畫走進千家萬戶,使老百姓能真正用起來。他參与非遺進校園活動;他和國內知名設計師合作,推出了雕刻時光日曆;和中國手藝網和雅昌合作,推出了鳳翔木版年畫年曆;和騰訊、京東合作,跨界進入手游領域,讓年輕人在玩遊戲時也能體驗國潮風。(鄭芋)

本站聲明:網站內容來http://www.societynews.cn/html/wh/fq/,如有侵權,請聯繫我們,我們將及時處理

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

國外用戶抱怨 AirPods Max 長時間使用後,耳罩裡面會出現水滴_包裝設計

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

AirPods Max 台灣要等到明年 2 月才會到貨,但國外第一批購買者早在 12/15 就已經拿到,離現在也過了半個月,果然不出所料,新產品多少都有些問題,最近就有多位用戶在 Reddit 論壇上反應,他的 AirPods Max 使用一段時間後,耳罩內會出現水滴,雖然目前還沒有引起任何故障,但畢竟 AirPods Max 不防水,還是會讓人擔心這個現象。

國外用戶抱怨 AirPods Max 長時間使用後,耳罩裡面會出現水滴

近日一名 Donald_Filimon 網友在 Reddit 論壇上抱怨,長時間使用 AirPods Max 之後,耳罩裡面都會有多個凝結小水滴。他沒有在潮濕的環境使用過,主要都是坐在辦公桌前,如果不是某次耳機檢測不正常,他也不知道裡面發生這種情況:

從他 Twitter 推文圖片可以看到,這凝結小水滴數量還真的不是普通的多,感覺很像流汗:

So, uhh… my AirPods Max form condensation after extended use. They’ve never been used in any humid environment. The water gets inside the drivers and has caused ear detection problems. I’ve been wearing them inside sitting at a desk mainly, nothing crazy. Super concerning issue pic.twitter.com/0pWicvxLv9

— Donald Filimon (@donaldfilimon) December 27, 2020

隨後陸續有多位用戶也回報發生同樣狀況像這位 Natural-Peak-4366,他住在佛羅里達州的布雷登頓(Bradenton),使用 AirPods max 長達 2.5 個小時,想清潔耳將耳罩取下後,才注意到裡面有凝結小水滴,他覺得很奇怪,因為他沒有四處走動。這狀況真的嚇到我了:

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

好消息是,至少這幾位用戶把水滴弄乾之後,AirPods Max 並沒有出現任何故障問題,依舊可以正常使用。

不過不確定這是個案,還是每一個 AirPods Max 都有這狀況,但至少 AirPods Max 的耳罩還蠻容易拆卸的,手邊已經有的人,建議每使用一段時間就打開來擦拭一下,來避免這些凝結小水滴產生更大的問題。

至於導致水滴的原因,有人猜測可能是最近冬天比較冷,房間溫度低,長時間使用才會發生這狀況。

資料來源:Reddit

日本網友異想天開使用民間散熱法 + 散熱片幫 MacBook 散熱,結果螢幕不小心蓋上整個毀了

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

通過一個vue+elementUI的小實例來講解一下它們是如何使用的_包裝設計

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

  需求:點擊一個按鈕,彈出一個模態框,這個模態框有兩個tab,tab中是各種報警條件,這些報警條件是從數據庫中動態取出的,數據庫中數據變更后,這個界面也要變更,我們可以查看和編輯這些報警條件。底部“確定”按鈕點擊的時候,會同時將這兩個tab中的內容都保存到數據庫中去,數據錄入要驗證輸入的格式。

  對於熟練的人來說,實現其實很簡單,但是對於沒有經驗的人來說,如果按照官網給的那些簡單實例來做,你會發現,出現一些奇怪的問題,諸如,文本框不能編輯內容,表單驗證無效等。感覺elementUI官網的示例太過於粗淺,無法適應實際工作中的許多需求場景。

  界面效果如下圖所示:

  分析:用到的組件:el-dialog、el-tabs

   AlarmSet.vue代碼:

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

<template>
  <div>
    <div class="alarm-set" v-loading="winLoading">
      <el-tabs v-model="activeName" type="border-card" v-if="alarmTmplData.length>0">
        <el-tab-pane label="製冷站" name="coldSet">
          <ColdSet
            ref="coldSet"
            :alarmTmplData="alarmTmplData"
            @onSubmit="coldSetSummit"
            :showAlarmSetWin.sync="showAlarmSetWin"
          ></ColdSet>
        </el-tab-pane>
        <el-tab-pane label="末端" name="endSet">
          <EndSet
            ref="endSet"
            :alarmTmplData="alarmTmplData"
            @onSubmit="endSetSummit"
            :showAlarmSetWin.sync="showAlarmSetWin"
          ></EndSet>
        </el-tab-pane>
      </el-tabs>
    </div>
    <div slot="footer" class="dialog-footer">
      <div style="display: inline-block">
        <el-button type="primary" @click="onSubmit" :loading="btnLoading">確 定</el-button>
        <el-button @click="isHide">取 消</el-button>
      </div>
    </div>
  </div>
</template>

<script>
import ColdSet from "./ColdSet";
import EndSet from "./EndSet";
import mixinsOption from "@/mixins/mixin-options";
import { alarmService } from "@/services/cold-station-service";
// import { alarmConditionData } from "@/mock/json.js";
export default {
  mixins: [mixinsOption],
  props: {
    showAlarmSetWin: {
      type: Boolean,
      default: false
    },
    alarmTmpl: {
      type: Object,
      default: {}
    }
  },
  components: {
    ColdSet,
    EndSet
  },
  data() {
    return {
      alarmConditionData: [], //報警條件數據
      activeName: "coldSet",
      alarmTmplData: [],
      coldConditionData: [], //冷站報警條件數據
      endConditionData: [], //末端報警條件數據
      isColdValid: false,
      isEndValid: false,
      btnLoading: false
    };
  },
  watch: {
    showAlarmSetWin: {
      handler(val) {
        console.log("showAlarmSetWin", val);
        if (val) {
          this.initData();
        }
      },
      immediate: true
    }
  },
  methods: {
    //初始化數據
    initData() {
      this.$store.commit("base/setWinLoading", true);
      console.log("initData");
      alarmService
        .getConditionList({
          groupNumber: this.groupNumber,
          projectNumber: this.projectNumber
        })
        .then(res => {
          if (res.code === 200) {
            this.alarmConditionData = res.data;
            this.createAlarmTmplData(res.data);
          }
          this.$store.commit("base/setWinLoading", false);
        });
    },
    //構造報警模板數據
    createAlarmTmplData(conditionData) {
      let res = [];
      this.alarmTmplData = this.alarmTmpl.data;
      if (this.alarmTmpl) {
        this.alarmTmplData.forEach(n => {
          // debugger;
          n.descr = eval(n.descr);
          let item = conditionData.find(m => m.tempId == n.id);
          if (item) {
            n["alarmLevel"] = item.alarmLevel;
            n["suggestion"] = item.suggestion;
            n["firstVal"] = item.firstVal;
            n["secondVal"] = item.secondVal;
            n["fourthVal"] = item.fourthVal;
            n["thirdVal"] = item.thirdVal;
            n["status"] = item.status;
          }
        });
      }
      // console.log("this.alarmTmplData :>> ", this.alarmTmplData);
    },
    //確定操作
    onSubmit() {
      this.$refs["coldSet"].onSubmit();
      this.$refs["endSet"].onSubmit();
      if (this.isColdValid && this.isEndValid) {
        this.btnLoading = true;
        let list = this.coldConditionData
          .concat(this.endConditionData)
          .map(m => {
            return {
              tempId: m.id,
              alarmLevel: m.alarmLevel,
              firstVal: m.firstVal,
              secondVal: m.secondVal,
              thirdVal: m.thirdVal,
              fourthVal: m.fourthVal,
              status: m.status,
              suggestion: m.suggestion
            };
          });

        alarmService
          .batchEdit({
            projectNumber: this.projectNumber,
            groupNumber: this.groupNumber,
            list: list
          })
          .then(res => {
            if (res.code === 200) {
              this.$message({
                message: "操作成功!",
                type: "success",
                duration: this.$baseConfig.messageDuration
              });
            }
            this.btnLoading = false;
          })
          .catch(() => {
            this.btnLoading = false;
          });
      }
    },
    coldSetSummit(val, isValid) {
      if (isValid) {
        this.isColdValid = isValid;
        this.coldConditionData = val;
      }
    },
    endSetSummit(val, isValid) {
      if (isValid) {
        this.isEndValid = isValid;
        this.endConditionData = val;
      }
    },
    //取消
    isHide() {
      this.$emit("update:showAlarmSetWin", false);
    }
  }
};
</script>

<style lang="scss" scoped>
.alarm-set {
  height: 600px;
  /deep/ .el-tabs--border-card {
    height: 100%;
  }
  /deep/ .el-tabs__content {
    height: calc(100% - 60px);
  }
}
</style>

重寫elementUI組件樣式,可以使用/deep/ 進行樣式穿透覆寫。

關於表單驗證:由於是動態生成的表單,所以不能按照官網提供的示例來做。

 el-form中不指定驗證規則,而是在el-form-item中指定,如下:
:prop="`list.${rowIndex}.${fieldArr[2*index+index+1]}`" :rules="rules.numberRule"
表單數據ruleForm中要對數據進行初始化,否則會無法自動識別數據變化,建議採用深拷貝的形式
考慮到冷站和末端這兩個組件中的代碼可以復用,抽取公共js文件set-mixin.js,然後通過mixins引入,這個類似於組合,還有一種繼承是通過extends來實現。
分析界面雖然是動態的,但是總共只有幾種類型,分別是:1個文本框,2個文本框,沒有文本框。他們都帶有建議信息這一行,所以可以用幾個v-if來區分。
import { alarmLevelOptions, fieldArr } from '@/enum/alarm-enum.js';
import Regexps from '@/utils/regexp.js';
import mixinsOption from '@/mixins/mixin-options';
export default {
  props: {
    alarmTmplData: {
      type: Array,
      default: () => {
        return [];
      },
    },
    showAlarmSetWin: {
      type: Boolean,
      default: false,
    },
  },
  mixins: [mixinsOption],
  data() {
    return {
      levelOptions: alarmLevelOptions(),
      ruleForm: {
        list: [],
      },
      rules: {
        numberRule: [
          {
            pattern: Regexps.commonNumber,
            message: '僅支持3位數和帶1位小數',
            trigger: 'blur',
          },
        ],
        suggestion: [
          { max: 10, message: '長度不能超過10個字符', trigger: 'blur' },
        ],
      },
      fieldArr,
      tmplData: [],
    };
  },
  computed: {
    activeNames() {
      let activeNames = this.tmplData
        .filter((f) => f.descParamType != 0)
        .map((n) => {
          return n.id;
        });
      console.log('activeNames :>> ', activeNames);
      return activeNames;
    },
  },
  methods: {
    initData(type) {
      console.log('initData', type);
      if (this.alarmTmplData.length > 0) {
        this.tmplData = this.alarmTmplData.filter((n) => n.sys == type);
        this.ruleForm.list = JSON.parse(JSON.stringify(this.tmplData));
        // console.log('條件設置initData :>> ', this.ruleForm.list);
      }
    },
  },
};

ColdSet.vue代碼:

<template>
  <div>
    <el-form :model="ruleForm" ref="ruleForm">
      <el-collapse v-model="activeNames">
        <el-collapse-item :name="item.id" v-for="(item,rowIndex) in ruleForm.list" :key="item.id">
          <template slot="title">
            <div class="header">
              <el-checkbox v-model="item.status" :true-label="0" :false-label="1">{{item.name}}</el-checkbox>
              <el-select v-model="item.alarmLevel" size="small">
                <el-option
                  v-for="item in levelOptions"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                ></el-option>
              </el-select>
            </div>
          </template>
          <div class="content vertical">
            <div class="row one" v-if="item.descParamType==1">
              <div class="item" v-for="(subItem,index) in item.descr" :key="index">
                <label>{{subItem}}</label>
                <el-form-item
                  label="大於"
                  :prop="`list.${rowIndex}.${fieldArr[index]}`"
                  :rules="rules.numberRule"
                >
                  <el-input v-model="item[`${fieldArr[index]}`]" size="small"></el-input>
                </el-form-item>
              </div>
            </div>
            <template v-if="item.descParamType==2">
              <div class="row two" v-for="(subItem,index) in item.descr" :key="index">
                <div class="item">
                  <label>{{subItem}}</label>
                  <el-form-item
                    label="大於"
                    :prop="`list.${rowIndex}.${fieldArr[2*index+index]}`"
                    :rules="rules.numberRule"
                  >
                    <el-input
                      v-model="item[`${fieldArr[2*index+index]}`]"
                      size="small"
                    ></el-input>
                  </el-form-item>
                  <el-form-item
                    label="或小於"
                    :prop="`list.${rowIndex}.${fieldArr[2*index+index+1]}`"
                    :rules="rules.numberRule"
                  >
                    <el-input
                      v-model="item[`${fieldArr[2*index+index+1]}`]"
                      size="small"
                    ></el-input>
                  </el-form-item>
                </div>
              </div>
            </template>

            <div class="row one">
              <el-form-item
                label="建議信息"
                :prop="`list.${rowIndex}.suggestion`"
                :rules="rules.suggestion"
              >
                <el-input
                  v-model="item.suggestion"
                  class="max-width"
                  size="small"
                  placeholder="請儘快處理"
                ></el-input>
              </el-form-item>
            </div>
          </div>
        </el-collapse-item>
      </el-collapse>
    </el-form>
  </div>
</template>

<script>
import { alarmLevelOptions, fieldArr } from "@/enum/alarm-enum.js";
import Regexps from "@/utils/regexp.js";
import { validateVal } from "@/utils/validate-utils.js";
import { alarmService } from "@/services/cold-station-service";
import setMixin from "./set-mixin";
export default {
  mixins: [setMixin],
  watch: {
    alarmTmplData: {
      handler(val) {
        console.log("showAlarmSetWin cold :>> ", val);
        if (val) {
          this.initData(1);
        }

         else{            this.$refs[“ruleForm”].resetFields();         }

      },
deep:true, immediate:
true } }, methods: { onSubmit() { console.log("冷站確定 :>> "); this.$refs["ruleForm"].validate(valid => { if (valid) { console.log("驗證成功"); this.$emit("onSubmit", this.ruleForm.list, true); } }); } } }; </script> <style lang="scss" scoped> @import "./set.scss"; </style>

EndSet.vue:

<template>
  <div>
    <el-form :model="ruleForm" ref="ruleForm">
      <el-collapse v-model="activeNames">
        <el-collapse-item :name="item.id" v-for="(item,rowIndex) in ruleForm.list" :key="item.id">
          <template slot="title">
            <div class="header">
              <el-checkbox v-model="item.status" :true-label="0" :false-label="1">{{item.name}}</el-checkbox>
              <el-select v-model="item.alarmLevel" size="small">
                <el-option
                  v-for="item in levelOptions"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                ></el-option>
              </el-select>
            </div>
          </template>
          <div class="content vertical">
            <div class="row two" v-if="item.descParamType==1">
              <div class="item" v-for="(subItem,index) in item.descr" :key="index">
                <label>{{subItem}}</label>
                <el-form-item
                  label="大於"
                  :prop="`list.${rowIndex}.${fieldArr[index]}`"
                  :rules="rules.numberRule"
                  v-if="index==0"
                >
                  <el-input v-model="item[fieldArr[index]]" size="small"></el-input>
                </el-form-item>
              </div>
            </div>
            <div class="row two" v-if="item.descParamType==2">
              <div class="item" v-for="(subItem,index) in item.descr" :key="index">
                <label>{{subItem}}</label>
                <el-form-item
                  label="大於"
                  :prop="`list.${rowIndex}.${fieldArr[2*index+index]}`"
                  :rules="rules.numberRule"
                >
                  <el-input v-model="item[fieldArr[2*index+index]]" size="small"></el-input>
                </el-form-item>
                <el-form-item
                  label="或小於"
                  :prop="`list.${rowIndex}.${fieldArr[2*index+index+1]}`"
                  :rules="rules.numberRule"
                >
                  <el-input v-model="item[fieldArr[2*index+index+1]]" size="small"></el-input>
                </el-form-item>
              </div>
            </div>
            <div class="row two" v-if="item.descParamType==3">
              <div class="item">
                <el-form-item
                  :label="subItem"
                  :prop="`list.${rowIndex}.${fieldArr[index]}`"
                  :rules="rules.numberRule"
                  v-for="(subItem,index) in item.descr"
                  :key="index"
                >
                  <el-input v-model="item[fieldArr[index]]" size="small"></el-input>
                </el-form-item>
              </div>
            </div>
            <template v-if="item.descParamType==4">
              <div class="row one" v-for="(subItem,index) in item.descr" :key="index">
                <div class="item">{{subItem}}</div>
                <div class="item">
                  <el-form-item
                    :label="index==0?'小於':'大於'"
                    :prop="`list.${rowIndex}.${fieldArr[index]}`"
                    :rules="rules.numberRule"
                  >
                    <el-input v-model="item[fieldArr[index]]" size="small"></el-input>
                  </el-form-item>
                </div>
              </div>
            </template>
            <!-- <div class="row multi-row" v-if="item.descParamType==4">
              multi-item       
            </div>-->
            <div class="row one">
              <el-form-item
                label="建議信息"
                :prop="`list.${rowIndex}.suggestion`"
                :rules="rules.suggestion"
              >
                <el-input
                  v-model="item.suggestion"
                  class="max-width"
                  size="small"
                  placeholder="請儘快處理"
                ></el-input>
              </el-form-item>
            </div>
          </div>
        </el-collapse-item>
      </el-collapse>
    </el-form>
  </div>
</template>

<script>
import setMixin from "./set-mixin";
import { alarmService } from "@/services/cold-station-service";
export default {
  mixins: [setMixin],
  watch: {
    alarmTmplData: {
      handler(val) {
        console.log("showAlarmSetWin end:>> ", val);
        if (val) {
          this.initData(2);
        }

         else{            this.$refs[“ruleForm”].resetFields();         }

      },
deep:true, immediate:
true } }, methods: { onSubmit() { console.log("末端確定 :>> "); this.$refs["ruleForm"].validate(valid => { if (valid) { console.log("驗證成功"); this.$emit("onSubmit", this.ruleForm.list, true); } }); } } }; </script> <style lang="scss" scoped> @import "./set.scss"; </style>

由於要兩個tab中都驗證通過時,才提交表單,所以兩個表單都要驗證,只有都驗證通過時在提交表單,提交表單之前,要合併表單數據再統一提交。父組件調用子組件的方法 this.$refs[“coldSet”].onSubmit();

考慮到彈窗組件的性能問題,我們可以通過將显示標識以 :showAlarmSetWin.sync=”showAlarmSetWin”這樣的形式傳遞給子組件,(注意,要加sync關鍵字)子組件監聽showAlarmSetWin,當彈窗显示時,加載數據並初始化,並設置屬性:immediate: true,讓彈窗第一次執行時也加載數據。

當窗體隱藏時,重置表單:
this.$refs[“ruleForm”].resetFields();
為了防止同一時間多次點擊操作按鈕“確定”,可以給按鈕加上loading
數據列表格式:

{
    "data": [{
        "id": 246,
        "tempId": "1",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 247,
        "tempId": "2",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 248,
        "tempId": "3",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 249,
        "tempId": "4",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 250,
        "tempId": "5",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 251,
        "tempId": "6",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 252,
        "tempId": "7",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 253,
        "tempId": "8",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 254,
        "tempId": "9",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 255,
        "tempId": "10",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 256,
        "tempId": "11",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 257,
        "tempId": "12",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 258,
        "tempId": "13",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 259,
        "tempId": "14",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 260,
        "tempId": "15",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 261,
        "tempId": "16",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 262,
        "tempId": "50",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 263,
        "tempId": "51",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 264,
        "tempId": "52",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 265,
        "tempId": "53",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 266,
        "tempId": "54",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 267,
        "tempId": "55",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 268,
        "tempId": "56",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 269,
        "tempId": "57",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 270,
        "tempId": "58",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 271,
        "tempId": "59",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 272,
        "tempId": "60",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 273,
        "tempId": "61",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 274,
        "tempId": "62",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 275,
        "tempId": "63",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 276,
        "tempId": "64",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 277,
        "tempId": "65",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 278,
        "tempId": "66",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 279,
        "tempId": "67",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 280,
        "tempId": "68",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 281,
        "tempId": "69",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 282,
        "tempId": "101",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 283,
        "tempId": "102",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": 84.0,
        "secondVal": 16.0,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 284,
        "tempId": "103",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": 59.0,
        "secondVal": 49.0,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 285,
        "tempId": "104",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": 34.0,
        "secondVal": 22.0,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 286,
        "tempId": "105",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": 92.0,
        "secondVal": 66.0,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 287,
        "tempId": "106",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": 55.0,
        "secondVal": 29.0,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 288,
        "tempId": "107",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": 86.0,
        "secondVal": 81.0,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 289,
        "tempId": "108",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": 67.0,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 290,
        "tempId": "109",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": 85.0,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 291,
        "tempId": "110",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": 16.0,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 292,
        "tempId": "111",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": 92.0,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 293,
        "tempId": "112",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": "請儘快安排人檢查",
        "firstVal": 10.0,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 294,
        "tempId": "113",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": 44.0,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 295,
        "tempId": "114",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": "請儘快安排人檢查",
        "firstVal": 61.0,
        "secondVal": 35.0,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 296,
        "tempId": "115",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": 48.0,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 297,
        "tempId": "116",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 298,
        "tempId": "117",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 299,
        "tempId": "118",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": 76.0,
        "secondVal": 23.0,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 300,
        "tempId": "119",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": 64.0,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 301,
        "tempId": "120",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 302,
        "tempId": "121",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": 73.0,
        "secondVal": 15.0,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 303,
        "tempId": "122",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": 90.0,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 304,
        "tempId": "201",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 305,
        "tempId": "202",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 306,
        "tempId": "203",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 307,
        "tempId": "204",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": 32.0,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 308,
        "tempId": "205",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 309,
        "tempId": "206",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 310,
        "tempId": "207",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 311,
        "tempId": "208",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 312,
        "tempId": "209",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 313,
        "tempId": "210",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 314,
        "tempId": "211",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 315,
        "tempId": "212",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 316,
        "tempId": "213",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 317,
        "tempId": "214",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 318,
        "tempId": "215",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 319,
        "tempId": "216",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 320,
        "tempId": "217",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 321,
        "tempId": "218",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 322,
        "tempId": "219",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 323,
        "tempId": "220",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": 36.0,
        "secondVal": 11.0,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 324,
        "tempId": "221",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": 66.0,
        "secondVal": 59.0,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }, {
        "id": 325,
        "tempId": "222",
        "projectNumber": "440300A088",
        "groupNumber": "G1",
        "alarmLevel": 1,
        "suggestion": null,
        "firstVal": null,
        "secondVal": null,
        "thirdVal": null,
        "fourthVal": null,
        "status": 0
    }],
    "code": 200,
    "msg": "成功",
    "errors": null
}

View Code

模板數據列表格式:

{
    "data": [{
        "id": "1",
        "name": "制冷機啟動失敗",
        "sys": 1,
        "type": 1,
        "descr": "[\"制冷機組設備故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "10",
        "name": "冷凍泵故障",
        "sys": 1,
        "type": 1,
        "descr": "[\"冷凍水泵設備故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "101",
        "name": "冷凍水供水溫度不在合理範圍",
        "sys": 1,
        "type": 3,
        "descr": "[\"冷凍水供水溫度\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "102",
        "name": "冷卻塔出水溫度溫度不在合理範圍",
        "sys": 1,
        "type": 3,
        "descr": "[\"正常運行時段,冷卻水回水溫度-室外濕球溫度(℃)\",\"或當室外濕球溫度<17℃時,冷卻水回水溫度設定值(℃)\"]",
        "descParamType": 2,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "103",
        "name": "冷凍供回水溫差(壓差)不在合理範圍",
        "sys": 1,
        "type": 3,
        "descr": "[\"正常運行時段,冷凍水溫差(℃)\"]",
        "descParamType": 2,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "104",
        "name": "冷卻供回水溫差不在合理範圍",
        "sys": 1,
        "type": 3,
        "descr": "[\"正常運行時段,冷卻水溫差(℃)\"]",
        "descParamType": 2,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "105",
        "name": "電流負載限制",
        "sys": 1,
        "type": 3,
        "descr": "[\"冷水機組電流負載率\"]",
        "descParamType": 2,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "106",
        "name": "冷凝溫度限制",
        "sys": 1,
        "type": 3,
        "descr": "[\"冷凝器出水溫度(℃)\"]",
        "descParamType": 2,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "107",
        "name": "蒸發溫度限制",
        "sys": 1,
        "type": 3,
        "descr": "[\"蒸發器出水溫度(℃)\"]",
        "descParamType": 2,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "108",
        "name": "蒸發器內水壓力超限",
        "sys": 1,
        "type": 3,
        "descr": "[\"蒸發器冷媒壓力(Mpa)\"]",
        "descParamType": 1,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "109",
        "name": "蒸發器內水流量超限",
        "sys": 1,
        "type": 3,
        "descr": "[\"冷凍水流量/當前制冷機的額定流量*製冷劑運行台數\"]",
        "descParamType": 1,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "11",
        "name": "冷卻泵啟動失敗",
        "sys": 1,
        "type": 1,
        "descr": "[\"冷卻水泵設備故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "110",
        "name": "冷凝器內水壓力超限",
        "sys": 1,
        "type": 3,
        "descr": "[\"冷機冷凝器冷媒壓力(Mpa)\"]",
        "descParamType": 1,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "111",
        "name": "冷凝器內水流量超限",
        "sys": 1,
        "type": 3,
        "descr": "[\"冷卻水流量/當前制冷機的額定流量*制冷機運行台數\"]",
        "descParamType": 1,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "112",
        "name": "冷凍水側小溫差過高",
        "sys": 1,
        "type": 3,
        "descr": "[\"正常運行時段,蒸發器出水溫度-冷媒溫度(℃)\"]",
        "descParamType": 1,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "113",
        "name": "冷卻水側小溫差過高",
        "sys": 1,
        "type": 3,
        "descr": "[\"正常運行時段,冷凝器冷媒溫度-出水溫度(℃)\"]",
        "descParamType": 1,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "114",
        "name": "冷凍水流量超限",
        "sys": 1,
        "type": 3,
        "descr": "[\"冷凍泵流量/額定流量\"]",
        "descParamType": 2,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "115",
        "name": "冷凍泵功率超限",
        "sys": 1,
        "type": 3,
        "descr": "[\"冷凍泵功率/額定功率\"]",
        "descParamType": 1,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "116",
        "name": "冷凍泵頻率超限",
        "sys": 1,
        "type": 3,
        "descr": "[\"冷凍泵運行頻率不在配置的上下限範圍內\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "117",
        "name": "冷凍水溫差超限",
        "sys": 1,
        "type": 3,
        "descr": "[\"正常運行時段,冷凍水溫差在(3,7)範圍內\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "118",
        "name": "冷卻泵流量超限",
        "sys": 1,
        "type": 3,
        "descr": "[\"冷卻泵流量/額定流量\"]",
        "descParamType": 2,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "119",
        "name": "冷卻泵功率超限",
        "sys": 1,
        "type": 3,
        "descr": "[\"正常運行時段,冷卻泵功率/額定功率\"]",
        "descParamType": 1,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "12",
        "name": "冷卻泵停止失敗",
        "sys": 1,
        "type": 1,
        "descr": "[\"冷卻水泵設備故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "120",
        "name": "冷卻塔頻率超限",
        "sys": 1,
        "type": 3,
        "descr": "[\"正常運行時段,冷卻塔頻率不在配置的上下限範圍\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "121",
        "name": "冷卻回水溫度超限",
        "sys": 1,
        "type": 3,
        "descr": "[\"正常運行時段,冷卻回水溫度\"]",
        "descParamType": 2,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "122",
        "name": "冷卻塔功率超限",
        "sys": 1,
        "type": 3,
        "descr": "[\"正常運行時段,冷卻塔功率/額定功率\"]",
        "descParamType": 1,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "13",
        "name": "冷卻泵故障",
        "sys": 1,
        "type": 1,
        "descr": "[\"冷卻水泵設備故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "14",
        "name": "冷卻塔啟動失敗",
        "sys": 1,
        "type": 1,
        "descr": "[\"冷卻塔風機故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "15",
        "name": "冷卻塔停止失敗",
        "sys": 1,
        "type": 1,
        "descr": "[\"冷卻塔風機故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "16",
        "name": "冷卻塔故障",
        "sys": 1,
        "type": 1,
        "descr": "[\"冷卻塔風機故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "2",
        "name": "制冷機停止失敗",
        "sys": 1,
        "type": 1,
        "descr": "[\"制冷機組設備故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "201",
        "name": "室內溫度傳感器需要校核",
        "sys": 2,
        "type": 4,
        "descr": "[\"每日6點,當前末端溫度反饋值與其他末端溫度反饋值相差2℃以上\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "202",
        "name": "工作時間前過早開啟空調末端",
        "sys": 2,
        "type": 2,
        "descr": "[\"工作時間前過早開啟空調末端\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "203",
        "name": "室外溫度高而新風閥未關閉",
        "sys": 2,
        "type": 2,
        "descr": "[\"室外溫度高而新風閥未關閉\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "204",
        "name": "室外溫度低而新風閥未開啟",
        "sys": 2,
        "type": 2,
        "descr": "[\"非營業時間,風櫃設定溫度-室外濕球溫度(℃)\",\"新風閥未開啟\"]",
        "descParamType": 1,
        "hasSuge": 1,
        "runTime": 3
    }, {
        "id": "205",
        "name": "空調風機變頻器自動控制未啟用",
        "sys": 2,
        "type": 2,
        "descr": "[\"當前時間<關機時間,室外濕球溫度>24且風櫃溫度人工設定\",\"或室外濕球溫度在[5,24]且風櫃溫度人工設定\",\"或室外濕球溫度<5且風櫃(風盤)溫度人工設定\"]",
        "descParamType": 4,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "206",
        "name": "室內CO2過高",
        "sys": 2,
        "type": 3,
        "descr": "[\"室內CO2(PPM)\",\"持續時間(min)\"]",
        "descParamType": 3,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "207",
        "name": "空調末端風機故障",
        "sys": 2,
        "type": 1,
        "descr": "[\"空調末端風機故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "208",
        "name": "空調末端新風閥故障",
        "sys": 2,
        "type": 1,
        "descr": "[\"空調末端新風閥故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "209",
        "name": "空調末端迴風閥故障",
        "sys": 2,
        "type": 1,
        "descr": "[\"空調末端迴風閥故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "210",
        "name": "空調末端水閥故障",
        "sys": 2,
        "type": 1,
        "descr": "[\"空調末端水閥故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "211",
        "name": "風櫃開啟失敗",
        "sys": 2,
        "type": 1,
        "descr": "[\"風櫃開啟失敗\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "212",
        "name": "風櫃停止失敗",
        "sys": 2,
        "type": 1,
        "descr": "[\"風櫃停止失敗\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "213",
        "name": "風盤開啟失敗",
        "sys": 2,
        "type": 1,
        "descr": "[\"風盤開啟失敗\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "214",
        "name": "風盤停止失敗",
        "sys": 2,
        "type": 1,
        "descr": "[\"風盤停止失敗\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "215",
        "name": "時序配置異常",
        "sys": 2,
        "type": 2,
        "descr": "[\"時序配置異常\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "216",
        "name": "末端設備為手動模式",
        "sys": 2,
        "type": 2,
        "descr": "[\"末端設備為手動模式\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "217",
        "name": "風櫃故障報警",
        "sys": 2,
        "type": 1,
        "descr": "[\"風櫃故障報警\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "218",
        "name": "風盤故障報警",
        "sys": 2,
        "type": 1,
        "descr": "[\"風盤故障報警\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "219",
        "name": "風櫃頻率超限",
        "sys": 2,
        "type": 3,
        "descr": "[\"風櫃頻率超限\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "220",
        "name": "室內溫度不在合理範圍",
        "sys": 2,
        "type": 3,
        "descr": "[\"風櫃迴風溫度(℃)\"]",
        "descParamType": 2,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "221",
        "name": "末端水力不平衡",
        "sys": 2,
        "type": 2,
        "descr": "[\"營業時間內,風櫃迴風溫度(℃)\"]",
        "descParamType": 2,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "222",
        "name": "風櫃頻率超限",
        "sys": 2,
        "type": 3,
        "descr": "[\"風櫃頻率CAB_FRQ不在配置的上下限範圍\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 2
    }, {
        "id": "3",
        "name": "制冷機故障",
        "sys": 1,
        "type": 1,
        "descr": "[\"制冷機組設備故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "4",
        "name": "制冷機冷凍側閥門啟動失敗",
        "sys": 1,
        "type": 1,
        "descr": "[\"制冷機組設備故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "5",
        "name": "制冷機冷凍側閥門停止失敗",
        "sys": 1,
        "type": 1,
        "descr": "[\"制冷機組設備故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "50",
        "name": "水力不平衡",
        "sys": 1,
        "type": 2,
        "descr": "[\"觸發冰爽模式\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "51",
        "name": "非變頻自動運行",
        "sys": 1,
        "type": 2,
        "descr": "[\"設備工頻啟停或頻率手動設定\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 1
    }, {
        "id": "52",
        "name": "全自動或一鍵啟動失敗",
        "sys": 1,
        "type": 2,
        "descr": "[\"全自動模式、一鍵啟動模式無法生效\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 1
    }, {
        "id": "53",
        "name": "過早開製冷站設備",
        "sys": 1,
        "type": 2,
        "descr": "[\"營業時間前過早開製冷站設備\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 1
    }, {
        "id": "54",
        "name": "停業后未及時停止製冷站設備",
        "sys": 1,
        "type": 2,
        "descr": "[\"停業后未及時停止製冷站設備\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 1
    }, {
        "id": "55",
        "name": "低溫未啟用全新風策略",
        "sys": 1,
        "type": 2,
        "descr": "[\"天氣溫度低而製冷站運行\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 1
    }, {
        "id": "56",
        "name": "制冷機加減載不合理",
        "sys": 1,
        "type": 2,
        "descr": "[\"手動模式下,執行制冷機的加減載\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 1
    }, {
        "id": "57",
        "name": "制冷機加減載失敗",
        "sys": 1,
        "type": 2,
        "descr": "[\"制冷機加減載失敗\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 1
    }, {
        "id": "58",
        "name": "冷水機組冷凍水旁通",
        "sys": 1,
        "type": 2,
        "descr": "[\"正常運行時段,運行狀態-停止狀態的冷機蒸發器進水溫度<1\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 1
    }, {
        "id": "59",
        "name": "冷水機組冷卻水旁通",
        "sys": 1,
        "type": 2,
        "descr": "[\"正常運行時段,運行狀態-停止狀態的冷機冷凝器進水溫度<1\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "6",
        "name": "制冷機冷卻側閥門啟動失敗",
        "sys": 1,
        "type": 1,
        "descr": "[\"制冷機組設備故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "60",
        "name": "制冷機頻繁啟停機",
        "sys": 1,
        "type": 2,
        "descr": "[\"設備啟停記錄中,同一設備的啟動和停止時間間隔<30min\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 1
    }, {
        "id": "61",
        "name": "冷卻泵頻繁啟停機",
        "sys": 1,
        "type": 2,
        "descr": "[\"設備啟停記錄中,同一設備的啟動和停止時間間隔<30min\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 1
    }, {
        "id": "62",
        "name": "冷凍泵頻繁啟停機",
        "sys": 1,
        "type": 2,
        "descr": "[\"設備啟停記錄中,同一設備的啟動和停止時間間隔<30min\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 1
    }, {
        "id": "63",
        "name": "冷卻塔頻繁啟停機",
        "sys": 1,
        "type": 2,
        "descr": "[\"設備啟停記錄中,同一設備的啟動和停止時間間隔<30min\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 1
    }, {
        "id": "64",
        "name": "未啟用控制模式",
        "sys": 1,
        "type": 2,
        "descr": "[\"冷凍泵運行頻率為手動設定或工頻運行\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "65",
        "name": "冷卻塔集水盤溢流",
        "sys": 1,
        "type": 2,
        "descr": "[\"冷卻塔液位COT1_WL>後台配置中的液位上限\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "66",
        "name": "冷卻塔集水盤乾涸",
        "sys": 1,
        "type": 2,
        "descr": "[\"冷卻塔液位COT1_WL<後台配置中的液位下限\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "67",
        "name": "冷卻塔啟停機不及時",
        "sys": 1,
        "type": 2,
        "descr": "[\"冷卻塔在主機停機后5min以外關閉\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 1
    }, {
        "id": "68",
        "name": "冷卻塔未啟用控制模式",
        "sys": 1,
        "type": 2,
        "descr": "[\"冷卻塔運行頻率為手動設定或工頻運行\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "69",
        "name": "冷卻泵啟停機不及時",
        "sys": 1,
        "type": 2,
        "descr": "[\"冷卻泵在主機啟動前2min以外啟動,或冷卻泵在主機停機后5min以外關閉\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 1
    }, {
        "id": "7",
        "name": "制冷機冷卻側閥門停止失敗",
        "sys": 1,
        "type": 1,
        "descr": "[\"制冷機組設備故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "8",
        "name": "冷凍泵啟動失敗",
        "sys": 1,
        "type": 1,
        "descr": "[\"冷凍水泵設備故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }, {
        "id": "9",
        "name": "冷凍泵停止失敗",
        "sys": 1,
        "type": 1,
        "descr": "[\"冷凍水泵設備故障\"]",
        "descParamType": 0,
        "hasSuge": 1,
        "runTime": 0
    }],
    "code": 200,
    "msg": "成功",
    "errors": null
}

View Code

總共兩個接口,一個加載模板,一個加載數據,模板數據只第一次進入到頁面的時候調用,數據是每次打開彈窗都要調用。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務