From 586f6679de6c8f0216e65454388c530d809717b3 Mon Sep 17 00:00:00 2001
From: jiazx0107 <jiazx0107@163.com>
Date: 星期一, 29 十二月 2025 14:23:39 +0800
Subject: [PATCH] 修改工单审核页面,调整全局CSS

---
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/form-desktop.css                  | 1268 +++++++
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/nprogress.css                     |   29 
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/block-view.css                    |   73 
 fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrder.view.xml                         |  320 +
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/core.css                          |  141 
 fzzy-igdss-web/src/main/java/com/fzzy/work/WorkOrderController.java                    |   11 
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/form/spinner-selected-slot-bg.gif |    0 
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tag-editor.css                    |  952 +++++
 fzzy-igdss-web/pom.xml                                                                 |    3 
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/support.js                        |    6 
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/layout.css                        |   28 
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/base-widget-desktop.css           | 2698 ++++++++++++++++
 fzzy-igdss-web/src/main/resources/templates/work/no-business.html                      |   29 
 fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderProcessService.java       |   32 
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/desktop-support.css               |  166 +
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/debugger.css                      |  271 +
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/grid.css                          |  710 ++++
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/meta-info.json                    |    5 
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line31.png              |    0 
 fzzy-igdss-web/src/main/resources/d7/common.css                                        |    5 
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree.css                          |  215 +
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line3.png               |    0 
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/form.css                          |  737 ++++
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line11.png              |    0 
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/color-picker.css                  | 1256 +++++++
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line2.png               |    0 
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/base-widget.css                   |  593 +++
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line4.png               |    0 
 /dev/null                                                                              |    0 
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/list.css                          |  128 
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/widget-support.css                |   62 
 fzzy-igdss-view/src/main/java/com/fzzy/work/WorkProcess.view.xml                       |   73 
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line21.png              |    0 
 fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line1.png               |    0 
 fzzy-igdss-view/src/main/java/com/fzzy/work/WorkProcessPR.java                         |   33 
 fzzy-igdss-core/src/main/java/com/fzzy/work/mapper/WorkOrderProcessMapper.java         |   10 
 36 files changed, 9,702 insertions(+), 152 deletions(-)

diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/work/mapper/WorkOrderProcessMapper.java b/fzzy-igdss-core/src/main/java/com/fzzy/work/mapper/WorkOrderProcessMapper.java
new file mode 100644
index 0000000..67d243e
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/work/mapper/WorkOrderProcessMapper.java
@@ -0,0 +1,10 @@
+package com.fzzy.work.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fzzy.work.domain.WorkOrderProcess;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WorkOrderProcessMapper extends BaseMapper<WorkOrderProcess> {
+
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderProcessService.java b/fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderProcessService.java
new file mode 100644
index 0000000..fe92ba4
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderProcessService.java
@@ -0,0 +1,32 @@
+package com.fzzy.work.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fzzy.work.domain.WorkOrderProcess;
+import com.fzzy.work.mapper.WorkOrderProcessMapper;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Desc:
+ * @Author: Andy.jia
+ * @Date: 2025/12/29
+ */
+@Service
+public class WorkOrderProcessService {
+
+    @Resource
+    private WorkOrderProcessMapper mapper;
+
+    public List<WorkOrderProcess> queryList(String orderId) {
+        if (StringUtils.isEmpty(orderId)) return null;
+        QueryWrapper<WorkOrderProcess> queryWrapper = new QueryWrapper<>();
+
+        queryWrapper.eq("order_id", orderId);
+
+        queryWrapper.orderByDesc("create_time");
+        return mapper.selectList(queryWrapper);
+    }
+}
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrder.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrder.view.xml
index 738e5bc..174c171 100644
--- a/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrder.view.xml
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrder.view.xml
@@ -100,6 +100,18 @@
         <Property name="label">鎴鏃堕棿</Property>
       </PropertyDef>
     </DataType>
+    <DataType name="dtWordProcess">
+      <Property name="creationType">com.fzzy.work.domain.WorkOrderProcess</Property>
+      <PropertyDef name="orderId">
+        <Property/>
+      </PropertyDef>
+      <PropertyDef name="action">
+        <Property/>
+      </PropertyDef>
+      <PropertyDef name="remark">
+        <Property/>
+      </PropertyDef>
+    </DataType>
   </Model>
   <View layout="padding:10">
     <ClientEvent name="onReady">query= function(){&#xD;
@@ -148,7 +160,27 @@
 }&#xD;
 //鐐瑰嚮璇︾粏&#xD;
 showDetail = function(){&#xD;
+	var tabIndex = view.get(&quot;#tabMain.currentIndex&quot;);&#xD;
+	var cur = view.get(&quot;#dsMain.data:#&quot;);&#xD;
+	var dialog = view.get(&quot;#dialogMain&quot;);&#xD;
+	if(1 == tabIndex){&#xD;
+		cur = view.get(&quot;#dsMain2.data:#&quot;);&#xD;
+		dialog = view.get(&quot;#dialogMain&quot;);&#xD;
+	}&#xD;
+	dialog.show();&#xD;
 	&#xD;
+	var orderId = cur.get(&quot;id&quot;);&#xD;
+	//璧嬪�肩粰瀹℃壒&#xD;
+	view.get(&quot;#dsWordProcess&quot;).set(&quot;data&quot;,{orderId:orderId});&#xD;
+	//鍘嗗彶璁板綍&#xD;
+	view.get(&quot;#iFrameProcess&quot;).set(&quot;path&quot;,&quot;com.fzzy.work.WorkProcess.d?orderId=&quot;+orderId);&#xD;
+	//涓氬姟淇℃伅&#xD;
+	if(cur.get(&quot;businessUrl&quot;)){&#xD;
+		var url = cur.get(&quot;businessUrl&quot;)+&quot;?businessId=&quot;+cur.get(&quot;businessId&quot;)+&quot;&amp;orderId=&quot;+orderId;&#xD;
+		view.get(&quot;#iFrameBiz&quot;).set(&quot;path&quot;,url);&#xD;
+	}else{&#xD;
+		view.get(&quot;#iFrameBiz&quot;).set(&quot;path&quot;,&quot;/work/no-business?orderId=&quot;+orderId);&#xD;
+	}&#xD;
 }</ClientEvent>
     <Property name="packages">font-awesome,css-common</Property>
     <DataSet id="dsMain">
@@ -169,6 +201,10 @@
     <DataSet id="dsQuery">
       <ClientEvent name="onReady">self.insert({});</ClientEvent>
       <Property name="dataType">dtParam</Property>
+    </DataSet>
+    <DataSet id="dsWordProcess">
+      <ClientEvent name="onReady">self.insert();</ClientEvent>
+      <Property name="dataType">dtWordProcess</Property>
     </DataSet>
     <HtmlContainer layoutConstraint="top ">
       <Property name="content">&lt;style>&#xD;
@@ -504,11 +540,16 @@
     </Container>
     <Dialog id="dialogMain" layout="regionPadding:8">
       <Property name="closeable">false</Property>
-      <Property name="caption">鍏ュ簱閫氱煡鍗�</Property>
-      <Property name="width">1200</Property>
+      <Property name="caption">宸ュ崟璇︾粏</Property>
       <Property name="iconClass">fa fa-tasks</Property>
+      <Property name="height">95%</Property>
+      <Property name="width">95%</Property>
+      <Property name="showCaptionBar">false</Property>
+      <Property name="style">
+        <Property name="background-color">#e6e6e6</Property>
+      </Property>
       <Buttons>
-        <Button id="btnOk">
+        <Button>
           <ClientEvent name="onClick">view.get(&quot;#updateSave&quot;).execute(function(result){&#xD;
 	if(result){&#xD;
 		$alert(result);&#xD;
@@ -517,165 +558,142 @@
 	$notify(&quot;鏁版嵁鎵ц瀹屾垚锛侊紒&quot;);&#xD;
 	self.get(&quot;parent&quot;).hide();&#xD;
 });</ClientEvent>
-          <Property name="caption">淇濆瓨</Property>
+          <Property name="caption">澶勭悊</Property>
           <Property name="iconClass">fa fa-check-circle</Property>
           <Property name="exClassName">btn1</Property>
-          <Property name="width">120</Property>
+        </Button>
+        <Button>
+          <ClientEvent name="onClick">view.get(&quot;#updateSave&quot;).execute(function(result){&#xD;
+	if(result){&#xD;
+		$alert(result);&#xD;
+		return;&#xD;
+	}&#xD;
+	$notify(&quot;鏁版嵁鎵ц瀹屾垚锛侊紒&quot;);&#xD;
+	self.get(&quot;parent&quot;).hide();&#xD;
+});</ClientEvent>
+          <Property name="caption">杞氦</Property>
+          <Property name="iconClass">fa fa-check-circle</Property>
+          <Property name="exClassName">btn2</Property>
         </Button>
         <Button>
           <ClientEvent name="onClick">view.get(&quot;#dsMain.data:#&quot;).cancel();&#xD;
             self.get(&quot;parent&quot;).hide();</ClientEvent>
-          <Property name="caption">鍙栨秷</Property>
+          <Property name="caption">鍏抽棴</Property>
           <Property name="exClassName">btn3</Property>
           <Property name="iconClass">fa fa-times-circle</Property>
-          <Property name="width">120</Property>
         </Button>
       </Buttons>
       <Children>
-        <Container>
-          <AutoForm layoutConstraint="top ">
-            <Property name="dataSet">dsMain</Property>
-            <Property name="showHint">false</Property>
-            <Property name="cols">210,*,210</Property>
-            <Control/>
-            <AutoFormElement>
-              <Property name="name">name</Property>
-              <Property name="property">name</Property>
-              <Property name="editorType">Label</Property>
-              <Property name="showLabel">false</Property>
-              <Property name="showHint">false</Property>
-              <Property name="className">f-title</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">id</Property>
-              <Property name="property">id</Property>
-              <Property name="editorType">Label</Property>
-              <Property name="showHint">false</Property>
-              <Property name="labelAlign">right</Property>
-              <Property name="showLabel">false</Property>
-              <Editor/>
-            </AutoFormElement>
-          </AutoForm>
-          <AutoForm>
-            <Property name="dataSet">dsMain</Property>
-            <Property name="cols">*,*,*</Property>
-            <Property name="labelAlign">right</Property>
-            <Property name="labelSeparator">锛�</Property>
-            <Property name="labelWidth">120</Property>
-            <AutoFormElement layoutConstraint="colSpan:2">
-              <Property name="name">name</Property>
-              <Property name="property">name</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">type</Property>
-              <Property name="property">type</Property>
-              <Property name="editorType">RadioGroup</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">depotId</Property>
-              <Property name="property">depotId</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">foodVariety</Property>
-              <Property name="property">foodVariety</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">year</Property>
-              <Property name="property">year</Property>
-              <Property name="trigger">defaultYearDropDown</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement layoutConstraint="colSpan:2">
-              <Property name="name">customerName</Property>
-              <Property name="property">customerName</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">unitName</Property>
-              <Property name="property">unitName</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">targetNumber</Property>
-              <Property name="property">targetNumber</Property>
-              <Property name="readOnly">false</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">completeNumber</Property>
-              <Property name="property">completeNumber</Property>
-              <Property name="readOnly">false</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">completeStatus</Property>
-              <Property name="property">completeStatus</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">completeTime</Property>
-              <Property name="property">completeTime</Property>
-              <Property name="readOnly">false</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">createBy</Property>
-              <Property name="property">createBy</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">auditStatus</Property>
-              <Property name="property">auditStatus</Property>
-              <Property name="readOnly">true</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement layoutConstraint="colSpan:2">
-              <Property name="name">contract</Property>
-              <Property name="property">contract</Property>
-              <Editor/>
-            </AutoFormElement>
-            <Label>
-              <Property name="style">
-                <Property name="color">blue</Property>
-              </Property>
-              <Property name="text">娉細鐩戠閫氱煡鍗曪紝鍙~鍐欒川鎶煎悎鍚屽悕绉�</Property>
-            </Label>
-            <AutoFormElement layoutConstraint="colSpan:3">
-              <Property name="name">remark</Property>
-              <Property name="property">remark</Property>
-              <Property name="editorType">TextArea</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">createTime</Property>
-              <Property name="property">createTime</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">auditUser</Property>
-              <Property name="property">auditUser</Property>
-              <Property name="readOnly">true</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">auditDate</Property>
-              <Property name="property">auditDate</Property>
-              <Property name="readOnly">true</Property>
-              <Editor/>
-            </AutoFormElement>
-            <HtmlContainer layoutConstraint="colSpan:3">
-              <Property name="content">1.鍏ュ簱閫氱煡鍗曚綔涓哄叆搴撲綔涓氱殑鍓嶇疆鏉′欢锛屽繀椤婚厤缃紝鍚﹀垯鏃犳硶杩涜鍏ュ簱浣滀笟銆�&lt;br>&#xD;
-2.鍗曟嵁绫诲瀷=搴撳尯閫氱煡鍗曪紝琛ㄧず搴撳尯鑷繁浣滀笟涓氬姟锛屼笉鍙楃洃绠$鐞嗐��</Property>
-              <Property name="exClassName">h-tip</Property>
-              <Property name="contentOverflow">hidden</Property>
-            </HtmlContainer>
-          </AutoForm>
-        </Container>
+        <TabControl>
+          <ControlTab>
+            <Property name="caption">宸ュ崟淇℃伅</Property>
+            <Property name="iconClass">fa fa-edit</Property>
+            <Container>
+              <AutoForm>
+                <Property name="dataSet">dsMain</Property>
+                <Property name="cols">*,*,*</Property>
+                <Property name="labelAlign">right</Property>
+                <Property name="labelSeparator">锛�</Property>
+                <Property name="labelWidth">120</Property>
+                <Property name="readOnly">true</Property>
+                <AutoFormElement layoutConstraint="colSpan:2">
+                  <Property name="name">title</Property>
+                  <Property name="property">title</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">deptId</Property>
+                  <Property name="property">deptId</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement layoutConstraint="colSpan:3">
+                  <Property name="name">description</Property>
+                  <Property name="property">description</Property>
+                  <Property name="editorType">TextArea</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">bizType</Property>
+                  <Property name="property">bizType</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">status</Property>
+                  <Property name="property">status</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">assigneeName</Property>
+                  <Property name="property">assigneeName</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">createTime</Property>
+                  <Property name="property">createTime</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">createUserName</Property>
+                  <Property name="property">createUserName</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">receiveTime</Property>
+                  <Property name="property">receiveTime</Property>
+                  <Property name="labelWidth">140</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement layoutConstraint="colSpan:3">
+                  <Property name="name">remark</Property>
+                  <Property name="property">remark</Property>
+                  <Property name="editorType">TextArea</Property>
+                  <Editor/>
+                </AutoFormElement>
+              </AutoForm>
+              <GroupBox>
+                <Property name="caption">宸ュ崟瀹℃壒/澶勭悊</Property>
+                <Property name="collapseable">false</Property>
+                <Buttons/>
+                <Children>
+                  <AutoForm>
+                    <Property name="dataSet">dsWordProcess</Property>
+                    <Property name="cols">*,*,*</Property>
+                    <Property name="labelAlign">right</Property>
+                    <Property name="labelSeparator">锛�</Property>
+                    <Property name="labelWidth">120</Property>
+                    <Property name="showLabel">false</Property>
+                    <AutoFormElement layoutConstraint="colSpan:3">
+                      <Property name="name">remark</Property>
+                      <Property name="property">remark</Property>
+                      <Editor>
+                        <TextArea>
+                          <Property name="blankText">-- 瀹℃壒/澶勭悊璇存槑 --</Property>
+                        </TextArea>
+                      </Editor>
+                    </AutoFormElement>
+                    <HtmlContainer layoutConstraint="colSpan:3">
+                      <Property name="content">1.宸ュ崟璇︾粏涓氬姟瑙併�愪笟鍔′俊鎭�戞煡鐪嬨��&lt;br></Property>
+                      <Property name="exClassName">h-tip</Property>
+                      <Property name="contentOverflow">hidden</Property>
+                    </HtmlContainer>
+                  </AutoForm>
+                </Children>
+              </GroupBox>
+            </Container>
+          </ControlTab>
+          <ControlTab>
+            <Property name="caption">涓氬姟淇℃伅</Property>
+            <Property name="iconClass">fa fa-file-o</Property>
+            <IFrame id="iFrameBiz"/>
+          </ControlTab>
+          <ControlTab>
+            <Property name="caption">瀹℃壒璁板綍</Property>
+            <Property name="iconClass">fa fa-history</Property>
+            <IFrame id="iFrameProcess">
+              <Property name="path">com.fzzy.work.WorkProcess.d</Property>
+            </IFrame>
+          </ControlTab>
+        </TabControl>
       </Children>
       <Tools/>
     </Dialog>
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkProcess.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkProcess.view.xml
new file mode 100644
index 0000000..d48f32c
--- /dev/null
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkProcess.view.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViewConfig>
+  <Arguments/>
+  <Context/>
+  <Model>
+    <DataType name="dtMain">
+      <Property name="creationType">com.fzzy.work.domain.WorkOrderProcess</Property>
+      <PropertyDef name="id">
+        <Property></Property>
+      </PropertyDef>
+      <PropertyDef name="orderId">
+        <Property></Property>
+      </PropertyDef>
+      <PropertyDef name="operatorId">
+        <Property></Property>
+      </PropertyDef>
+      <PropertyDef name="operatorName">
+        <Property></Property>
+        <Property name="label">澶勭悊浜�</Property>
+      </PropertyDef>
+      <PropertyDef name="action">
+        <Property></Property>
+        <Property name="label">澶勭悊鍔ㄤ綔</Property>
+      </PropertyDef>
+      <PropertyDef name="createTime">
+        <Property name="dataType">DateTime</Property>
+        <Property name="label">鎿嶄綔鏃堕棿</Property>
+      </PropertyDef>
+      <PropertyDef name="remark">
+        <Property></Property>
+        <Property name="label">澶勭悊璇存槑</Property>
+      </PropertyDef>
+    </DataType>
+  </Model>
+  <View layout="padding:10">
+    <Property name="packages">font-awesome,css-common</Property>
+    <DataSet id="dsMain">
+      <ClientEvent name="onLoadData">$notify(&quot;鏁版嵁鍔犺浇瀹屾垚鈥︹��&quot;);</ClientEvent>
+      <Property name="dataType">[dtMain]</Property>
+      <Property name="dataProvider">workProcessPR#queryList</Property>
+      <Property name="parameter">${request.getParameter('orderId')}</Property>
+    </DataSet>
+    <Container>
+      <DataGrid layoutConstraint="padding:8">
+        <ClientEvent name="onDataRowClick">self.set(&quot;selection&quot;,arg.data);</ClientEvent>
+        <Property name="dataSet">dsMain</Property>
+        <Property name="readOnly">true</Property>
+        <Property name="selectionMode">singleRow</Property>
+        <Property name="readOnly">true</Property>
+        <RowSelectorColumn/>
+        <RowNumColumn>
+          <Property name="width">50</Property>
+          <Property name="caption">搴忓彿</Property>
+        </RowNumColumn>
+        <DataColumn name="createTime">
+          <Property name="property">createTime</Property>
+          <Property name="width">180</Property>
+        </DataColumn>
+        <DataColumn name="operatorName">
+          <Property name="property">operatorName</Property>
+          <Property name="width">150</Property>
+        </DataColumn>
+        <DataColumn name="action">
+          <Property name="property">action</Property>
+          <Property name="width">150</Property>
+        </DataColumn>
+        <DataColumn name="remark">
+          <Property name="property">remark</Property>
+        </DataColumn>
+      </DataGrid>
+    </Container>
+  </View>
+</ViewConfig>
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkProcessPR.java b/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkProcessPR.java
new file mode 100644
index 0000000..7d66ca6
--- /dev/null
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkProcessPR.java
@@ -0,0 +1,33 @@
+package com.fzzy.work;
+
+import com.bstek.dorado.annotation.DataProvider;
+import com.fzzy.work.domain.WorkOrderProcess;
+import com.fzzy.work.service.WorkOrderProcessService;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Desc: 宸ュ崟绠$悊
+ * @Author: Andy.jia
+ * @Date: 2025/12/19
+ */
+@Component
+public class WorkProcessPR {
+
+    @Resource
+    private WorkOrderProcessService service;
+
+
+    /**
+     *
+     * workProcessPR#queryList
+     * 鍒嗛〉鏌ヨ
+     * @param orderId 宸ュ崟ID
+     */
+    @DataProvider
+    public List<WorkOrderProcess> queryList(String orderId) {
+        return service.queryList(orderId);
+    }
+}
diff --git a/fzzy-igdss-web/pom.xml b/fzzy-igdss-web/pom.xml
index bba1f82..fa78a63 100644
--- a/fzzy-igdss-web/pom.xml
+++ b/fzzy-igdss-web/pom.xml
@@ -57,7 +57,7 @@
             <version>${fzzy.igdss.version}</version>
         </dependency>
 		
-        <!-- d7鐨偆鍖�-->
+        <!-- d7鐨偆鍖�
         <dependency>
             <groupId>dorado.skins</groupId>
             <artifactId>ruoyi</artifactId>
@@ -65,6 +65,7 @@
             <scope>system</scope>
             <systemPath>${project.basedir}/src/main/resources/lib/dorado-skin-ruoyi-1.0.10.jar</systemPath>
         </dependency>
+        -->
 
 
 
diff --git a/fzzy-igdss-web/src/main/java/com/fzzy/work/WorkOrderController.java b/fzzy-igdss-web/src/main/java/com/fzzy/work/WorkOrderController.java
index a4dce75..882513a 100644
--- a/fzzy-igdss-web/src/main/java/com/fzzy/work/WorkOrderController.java
+++ b/fzzy-igdss-web/src/main/java/com/fzzy/work/WorkOrderController.java
@@ -25,4 +25,15 @@
 
         return prefix + "/list";
     }
+
+
+    /**
+     * 宸ュ崟鏃犱笟鍔″垪琛ㄩ〉闈�
+     *
+     */
+    @GetMapping("/no-business")
+    public String noBusiness(ModelMap mmap) {
+
+        return prefix + "/no-business";
+    }
 }
diff --git a/fzzy-igdss-web/src/main/resources/d7/common.css b/fzzy-igdss-web/src/main/resources/d7/common.css
index 1438e1f..d8cfc10 100644
--- a/fzzy-igdss-web/src/main/resources/d7/common.css
+++ b/fzzy-igdss-web/src/main/resources/d7/common.css
@@ -93,6 +93,11 @@
 }
 
 /** 璋冩暣DataGrid鍜孉utoForm鐨勭紪杈戞楂樺害 **/
+.d-dialog .dialog-body-wrap .dialog-body > .content-panel{
+    background-color: #f7f7f7;
+}
+
+/** 璋冩暣DataGrid鍜孉utoForm鐨勭紪杈戞楂樺害 **/
 .d-text-box {
     height: 30px !important;
     line-height: 30px !important;
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/base-widget-desktop.css b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/base-widget-desktop.css
new file mode 100644
index 0000000..c3a4964
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/base-widget-desktop.css
@@ -0,0 +1,2698 @@
+/*
+ * This file is part of Dorado 7.x (http://dorado7.bsdn.org).
+ * 
+ * Copyright (c) 2002-2012 BSTEK Corp. All rights reserved.
+ * 
+ * This file is dual-licensed under the AGPLv3 (http://www.gnu.org/licenses/agpl-3.0.html) 
+ * and BSDN commercial (http://www.bsdn.org/licenses) licenses.
+ * 
+ * If you are unsure which license is appropriate for your use, please contact the sales department
+ * at http://www.bstek.com/contact.
+ */
+/* button */
+.d-button {
+  box-sizing: border-box;
+  position: relative;
+  white-space: nowrap;
+  display: inline-block;
+  height: 32px;
+  cursor: pointer;
+  overflow: hidden;
+  border-width: 1px;
+  border-style: solid;
+}
+.d-button .button-left {
+  display: block;
+  height: 30px;
+  line-height: 30px;
+  overflow: hidden;
+  margin: 0 3px 0 3px;
+  padding: 0 4px;
+  text-align: center;
+  vertical-align: middle;
+}
+.d-button .button-left .d-icon {
+  float: left;
+  line-height: 30px !important;
+}
+.d-button .button-left .caption {
+  line-height: 30px;
+}
+.d-button .button-right {
+  display: inline-block;
+  position: absolute;
+  top: 0;
+  right: 0;
+  width: 3px;
+  height: 30px;
+  line-height: 30px;
+}
+.d-button-disabled {
+  cursor: default;
+}
+.d-button-disabled .button-left .d-icon {
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+}
+.d-button-trigger .button-left {
+  margin: 0 21px 0 3px;
+}
+.d-button-trigger .button-right {
+  width: 21px;
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-button-trigger .button-right:before {
+  content: "\e601";
+}
+.d-button {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  color: #ffffff;
+  border-color: #1c84c6;
+  background-color: #1c84c6;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-button .d-icon {
+  color: rgba(255, 255, 255, 0.7);
+}
+.d-button.d-button-hover {
+  color: #333333;
+  border-color: #0588d7;
+  background-color: #0588d7;
+}
+.d-button.d-button-hover .d-icon {
+  color: rgba(51, 51, 51, 0.7);
+}
+.d-button.d-button-focused {
+  color: #333333;
+  border-color: #0588d7;
+  background-color: #0588d7;
+}
+.d-button.d-button-focused .d-icon {
+  color: rgba(51, 51, 51, 0.7);
+}
+.d-button.d-button-click {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  background-color: #046faf;
+}
+.d-button.d-button-toggled {
+  color: #333333;
+  background-color: #0482cd;
+  border-color: #0482cd;
+}
+.d-button.d-button-toggled .d-icon {
+  color: rgba(51, 51, 51, 0.7);
+}
+.d-button.d-button-disabled .caption {
+  color: rgba(255, 255, 255, 0.7);
+}
+.d-button-highlight {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  color: #ffffff;
+  border-color: #f8ac59;
+  background-color: #f8ac59;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-button-highlight .d-icon {
+  color: rgba(255, 255, 255, 0.7);
+}
+.d-button-highlight.d-button-hover,
+.d-button-highlight.d-button-focused {
+  color: #ffffff;
+  border-color: #f0ad4e;
+  background-color: #f0ad4e;
+}
+.d-button-highlight.d-button-hover .d-icon,
+.d-button-highlight.d-button-focused .d-icon {
+  color: rgba(255, 255, 255, 0.7);
+}
+.d-button-highlight.d-button-click {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  background-color: #ed9c28;
+}
+.d-button-highlight.d-button-toggled {
+  color: #ffffff;
+  background-color: #f68f1e;
+}
+.d-button-highlight.d-button-toggled .d-icon {
+  color: rgba(255, 255, 255, 0.7);
+}
+.d-button-highlight.d-button-disabled .caption {
+  color: rgba(255, 255, 255, 0.7);
+}
+.d-button-decline {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  color: #ffffff;
+  border-color: #ed5565;
+  background-color: #ed5565;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-button-decline .d-icon {
+  color: rgba(255, 255, 255, 0.7);
+}
+.d-button-decline.d-button-hover,
+.d-button-decline.d-button-focused {
+  color: #ffffff;
+  border-color: #d9534f;
+  background-color: #d9534f;
+}
+.d-button-decline.d-button-hover .d-icon,
+.d-button-decline.d-button-focused .d-icon {
+  color: rgba(255, 255, 255, 0.7);
+}
+.d-button-decline.d-button-click {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  background-color: #ed5565;
+}
+.d-button-decline.d-button-toggled {
+  color: #ffffff;
+  background-color: #ed5565;
+}
+.d-button-decline.d-button-toggled .d-icon {
+  color: rgba(255, 255, 255, 0.7);
+}
+.d-button-decline.d-button-disabled .caption {
+  color: rgba(255, 255, 255, 0.7);
+}
+/* menu */
+.d-menu {
+  cursor: default;
+  overflow: hidden;
+}
+.d-menu .group-content {
+  position: relative;
+  overflow: hidden;
+  list-style: none;
+  display: block;
+  cursor: pointer;
+  margin: 0;
+  padding: 0;
+  border-width: 0;
+}
+.d-menu .group-content .menu-item {
+  display: block;
+  cursor: pointer;
+}
+.d-menu .group-content .menu-item .menu-item-content {
+  display: block;
+  white-space: nowrap;
+  height: 40px;
+  padding: 0 16px 0 3px;
+}
+.d-menu .group-content .menu-item .menu-item-content .caption {
+  line-height: 40px;
+  padding-left: 5px;
+  padding-right: 5px;
+}
+.d-menu .group-content .menu-item .menu-item-content .d-icon {
+  float: left;
+  display: block;
+  position: relative;
+  margin-top: 10px;
+  margin-left: 6px;
+}
+.d-menu .group-content .menu-item.has-subgroup .menu-item-content {
+  position: relative;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-menu .group-content .menu-item.has-subgroup .menu-item-content:before {
+  content: "\e603";
+  font-family: entypo;
+}
+.d-menu .group-content .menu-item.has-subgroup .menu-item-content:before {
+  position: absolute;
+  height: 40px;
+  line-height: 40px;
+  top: 0;
+  right: 0;
+  font-size: 14px;
+}
+.d-menu .group-content .menu-item-separator {
+  padding: 0;
+  font-size: 1%;
+  margin-top: 3px;
+  margin-bottom: 3px;
+  border-style: solid;
+  border-width: 1px 0px 0px 0px;
+}
+.d-menu-icon-top .group-content .menu-item {
+  height: 64px;
+}
+.d-menu-icon-top .group-content .menu-item .menu-item-content {
+  text-align: center;
+}
+.d-menu-icon-top .group-content .menu-item .menu-item-content .d-icon {
+  display: inline-block;
+  float: none;
+  margin-left: 0;
+  text-align: center;
+  width: 32px;
+  height: 32px;
+  line-height: 32px;
+  font-size: 24px;
+}
+.d-menu-icon-top .group-content .menu-item .menu-item-content .caption {
+  display: block;
+  width: auto;
+  text-align: center;
+}
+.d-menu-icon-top .group-content .menu-item .menu-item-content:before {
+  height: 64px;
+  line-height: 64px;
+}
+.d-menu .overflow-top-arrow {
+  display: none;
+  cursor: pointer;
+  font-size: 1%;
+  height: 10px;
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+}
+.d-menu .overflow-bottom-arrow {
+  display: none;
+  cursor: pointer;
+  font-size: 1%;
+  height: 10px;
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+}
+.d-menu-overflow .overflow-top-arrow,
+.d-menu-overflow .overflow-bottom-arrow {
+  display: block;
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.d-menu .no-content-group {
+  display: none;
+  float: left;
+  vertical-align: middle;
+  height: 40px;
+  line-height: 40px;
+  padding: 0 10px 0 10px;
+}
+.d-menu-no-content {
+  background-image: none;
+}
+.d-menu-no-content .no-content-group {
+  display: block;
+}
+.d-menu {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  background-color: #ffffff;
+}
+.d-menu .group-content .menu-item {
+  color: #333333;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-menu .group-content .menu-item .d-icon {
+  color: rgba(51, 51, 51, 0.7);
+}
+.d-menu .group-content .menu-item .checked-icon,
+.d-menu .group-content .menu-item .unchecked-icon {
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-menu .group-content .menu-item .checked-icon:before,
+.d-menu .group-content .menu-item .unchecked-icon:before {
+  content: "\f00c";
+  font-family: FontAwesome;
+}
+.d-menu .group-content .menu-item .checked-icon:before,
+.d-menu .group-content .menu-item .unchecked-icon:before {
+  position: absolute;
+  display: block;
+  margin-left: -8px;
+  margin-top: -8px;
+  left: 50%;
+  top: 50%;
+  width: 14px;
+  height: 14px;
+  line-height: 14px;
+  text-align: center;
+  border: 1px #bfbfbf solid;
+  background-color: #ffffff;
+}
+.d-menu .group-content .menu-item .unchecked-icon {
+  color: transparent !important;
+}
+.d-menu .group-content .menu-item .checked-icon {
+  color: #2a394f !important;
+}
+.d-menu .group-content .menu-item-hover {
+  color: #333333;
+  border-color: #f5f5f5;
+  background-color: #f5f5f5;
+  -webkit-box-shadow: inset 3px 0 0 #f5f5f5;
+  -moz-box-shadow: inset 3px 0 0 #f5f5f5;
+  box-shadow: inset 3px 0 0 #f5f5f5;
+}
+.d-menu .group-content .menu-item-hover .d-icon {
+  color: rgba(51, 51, 51, 0.7);
+}
+.d-menu .group-content .menu-item-disabled {
+  color: #d9d9d9;
+}
+.d-menu .group-content .menu-item-disabled .d-icon {
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+}
+.d-menu .group-content .menu-item-separator {
+  margin: 4px 2px;
+  border-color: #1c84c6;
+}
+.d-menu-icon-top .group-content .menu-item-hover {
+  color: #333333;
+  background-color: #f5f5f5;
+}
+.d-menu .overflow-top-arrow {
+  line-height: 10px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-menu .overflow-top-arrow:before {
+  content: "\e602";
+}
+.d-menu .overflow-bottom-arrow {
+  line-height: 10px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-menu .overflow-bottom-arrow:before {
+  content: "\e601";
+}
+/* tabbar */
+.d-tabbar {
+  position: relative;
+  height: 42px;
+}
+.d-tabbar > .tabs-wrap {
+  position: relative;
+  overflow: hidden;
+  height: 42px;
+}
+.d-tabbar > .tabs-wrap > .tabs {
+  position: absolute;
+  left: 0;
+  top: 0;
+  padding: 0 0 0 4px;
+  margin: 0;
+  width: 5000px;
+  height: 42px;
+}
+.d-tabbar > .tabs-wrap > .tabs > li {
+  list-style-type: none;
+}
+.d-tabbar > .tabs-wrap > .tabs > .tab {
+  float: left;
+  position: relative;
+  cursor: default;
+  padding-left: 7px;
+}
+.d-tabbar > .tabs-wrap > .tabs > .tab .tab-left {
+  display: inline-block;
+  position: relative;
+  float: left;
+  margin-right: 7px;
+  height: 42px;
+  line-height: 42px;
+}
+.d-tabbar > .tabs-wrap > .tabs > .tab .tab-right {
+  position: absolute;
+  right: 0;
+  top: 0;
+  display: inline-block;
+  padding-left: 7px;
+  height: 42px;
+}
+.d-tabbar > .tabs-wrap > .tabs > .tab .d-icon {
+  float: left;
+  display: inline-block;
+  margin: 0 0 0 2px;
+  line-height: 42px !important;
+}
+.d-tabbar > .tabs-wrap > .tabs > .tab .caption {
+  box-sizing: border-box;
+  float: left;
+  display: inline-block;
+  white-space: nowrap;
+  overflow: hidden;
+  height: 42px;
+  line-height: 42px;
+  padding: 0px 4px 0 4px;
+}
+.d-tabbar > .tabs-wrap > .tabs > .tab .close {
+  right: 0;
+  cursor: pointer;
+  width: 16px;
+  height: 16px;
+  line-height: 42px !important;
+}
+.d-tabbar > .tabs-wrap > .tabs > .tab-closeable .tab-left {
+  padding-right: 17px;
+}
+.d-tabbar > .tabs-wrap > .tabs > .tab-disabled .d-icon {
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+}
+.d-tabbar > .tabs-wrap > .tabs > .tab-disabled .caption {
+  color: #d9d9d9;
+}
+.d-tabbar .left-button {
+  position: absolute;
+  left: 0;
+  display: inline;
+  cursor: pointer;
+  margin-right: 2px;
+  width: 20px;
+  height: 42px;
+}
+.d-tabbar .left-button-disabled {
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+}
+.d-tabbar .right-button {
+  position: absolute;
+  right: 0;
+  display: inline;
+  cursor: pointer;
+  margin-left: 2px;
+  width: 20px;
+  height: 42px;
+}
+.d-tabbar .right-button-disabled {
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+}
+.d-tabbar .menu-button {
+  position: absolute;
+  right: 0;
+  display: inline;
+  cursor: pointer;
+  background-repeat: no-repeat;
+  width: 20px;
+  height: 42px;
+}
+.d-tabbar .menu-button-disabled {
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+}
+.d-tabbar {
+  background-color: #ffffff;
+  border-radius: 0px;
+}
+.d-tabbar .tab {
+  color: #333333;
+  background-color: #ffffff;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-tabbar .tab .d-icon {
+  color: rgba(51, 51, 51, 0.7);
+}
+.d-tabbar .tab-hover {
+  color: #333333;
+  background-color: #f7f7f7;
+}
+.d-tabbar .tab-hover .d-icon {
+  color: rgba(51, 51, 51, 0.7);
+}
+.d-tabbar .tab-selected {
+  color: #333333;
+  background-color: #ffffff;
+}
+.d-tabbar .tab-selected .d-icon {
+  color: rgba(51, 51, 51, 0.7);
+}
+.d-tabbar .tab .close {
+  top: 7px;
+  box-sizing: border-box;
+  color: #333333;
+  -webkit-border-radius: 8px;
+  -moz-border-radius: 8px;
+  border-radius: 8px;
+  border: 1px solid transparent;
+  line-height: 14px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-tabbar .tab .close:before {
+  content: "\e605";
+}
+.d-tabbar .tab .close-hover {
+  color: #333333;
+  border-color: #333333;
+}
+.d-tabbar .tab .close-click {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  background-color: #d6d6d6;
+}
+.d-tabbar .left-button {
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+  line-height: 42px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  font-size: 18px;
+}
+.d-tabbar .left-button:before {
+  content: "\e600";
+}
+.d-tabbar .left-button-hover {
+  color: #333333;
+  background-color: #0588d7;
+}
+.d-tabbar .left-button-click {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  background-color: #046faf;
+}
+.d-tabbar .right-button {
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+  line-height: 42px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  font-size: 18px;
+}
+.d-tabbar .right-button:before {
+  content: "\e603";
+}
+.d-tabbar .right-button-hover {
+  color: #333333;
+  background-color: #0588d7;
+}
+.d-tabbar .right-button-click {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  background-color: #046faf;
+}
+.d-tabbar .menu-button {
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+  line-height: 42px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-tabbar .menu-button:before {
+  content: "\f0c9";
+}
+.d-tabbar .menu-button-hover {
+  color: #333333;
+  background-color: #0588d7;
+}
+.d-tabbar .menu-button-click {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  background-color: #046faf;
+}
+.d-tabbar .menu-button-toggled {
+  background-color: #0482cd;
+}
+.d-tabbar.d-tabbar-top .tab {
+  -webkit-border-top-left-radius: 0px;
+  -moz-border-radius-topleft: 0px;
+  border-top-left-radius: 0px;
+  -webkit-border-top-right-radius: 0px;
+  -moz-border-radius-topright: 0px;
+  border-top-right-radius: 0px;
+  border-right: 1px solid #ffffff;
+}
+.d-tabbar.d-tabbar-top .tab-hover {
+  -webkit-box-shadow: inset 0 -3px 0 #d4d4d4;
+  -moz-box-shadow: inset 0 -3px 0 #d4d4d4;
+  box-shadow: inset 0 -3px 0 #d4d4d4;
+}
+.d-tabbar.d-tabbar-top .tab-selected {
+  -webkit-box-shadow: inset 0 -3px 0 #f5f5f5;
+  -moz-box-shadow: inset 0 -3px 0 #f5f5f5;
+  box-shadow: inset 0 -3px 0 #f5f5f5;
+}
+.d-tabbar.d-tabbar-bottom .tab {
+  -webkit-border-bottom-left-radius: 0px;
+  -moz-border-radius-bottomleft: 0px;
+  border-bottom-left-radius: 0px;
+  -webkit-border-bottom-right-radius: 0px;
+  -moz-border-radius-bottomright: 0px;
+  border-bottom-right-radius: 0px;
+  border-right: 1px solid #ffffff;
+}
+.d-tabbar.d-tabbar-bottom .tab-hover {
+  -webkit-box-shadow: inset 0 3px 0 #d4d4d4;
+  -moz-box-shadow: inset 0 3px 0 #d4d4d4;
+  box-shadow: inset 0 3px 0 #d4d4d4;
+}
+.d-tabbar.d-tabbar-bottom .tab-selected {
+  -webkit-box-shadow: inset 0 3px 0 #f5f5f5;
+  -moz-box-shadow: inset 0 3px 0 #f5f5f5;
+  box-shadow: inset 0 3px 0 #f5f5f5;
+}
+/* tabcolumn */
+.d-tabcolumn {
+  position: relative;
+}
+.d-tabcolumn > .tabs-wrap {
+  position: relative;
+  overflow: hidden;
+}
+.d-tabcolumn > .tabs-wrap > .tabs {
+  position: absolute;
+  left: 0;
+  top: 0;
+  padding: 0;
+  margin: 0;
+  height: 5000px;
+  width: 100%;
+}
+.d-tabcolumn > .tabs-wrap > .tabs > li {
+  list-style-type: none;
+}
+.d-tabcolumn > .tabs-wrap > .tabs > .tab {
+  position: relative;
+  cursor: default;
+  padding-left: 7px;
+}
+.d-tabcolumn > .tabs-wrap > .tabs > .tab .tab-left {
+  display: block;
+  position: relative;
+  margin-right: 7px;
+  line-height: 42px;
+  height: 42px;
+  overflow: hidden;
+}
+.d-tabcolumn > .tabs-wrap > .tabs > .tab .tab-right {
+  position: absolute;
+  right: 0;
+  top: 0;
+  display: inline-block;
+  padding-left: 7px;
+  height: 42px;
+}
+.d-tabcolumn > .tabs-wrap > .tabs > .tab .d-icon {
+  float: left;
+  display: inline-block;
+  padding-left: 2px;
+  margin-top: 11px;
+}
+.d-tabcolumn > .tabs-wrap > .tabs > .tab .caption {
+  float: left;
+  display: inline-block;
+  white-space: nowrap;
+  overflow: hidden;
+  height: 42px;
+  line-height: 42px;
+  padding: 0 4px 0 4px;
+}
+.d-tabcolumn > .tabs-wrap > .tabs > .tab .close {
+  position: absolute;
+  right: 7px;
+  top: 13px;
+  cursor: pointer;
+  width: 16px;
+  height: 16px;
+}
+.d-tabcolumn > .tabs-wrap > .tabs > .tab-closeable .tab-left {
+  padding-right: 17px;
+}
+.d-tabcolumn > .tabs-wrap > .tabs > .tab-disabled .d-icon {
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+}
+.d-tabcolumn > .tabs-wrap > .tabs > .tab-disabled .caption {
+  color: #d9d9d9;
+}
+.d-tabcolumn .top-button {
+  cursor: pointer;
+  margin: 0;
+  width: 100%;
+  height: 42px;
+}
+.d-tabcolumn .top-button-disabled {
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+}
+.d-tabcolumn .bottom-button {
+  cursor: pointer;
+  margin: 0;
+  width: 100%;
+  height: 42px;
+}
+.d-tabcolumn .bottom-button-disabled {
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+}
+.d-tabcolumn-vtext {
+  height: auto;
+  width: 42px;
+  float: left;
+  padding: 0;
+}
+.d-tabcolumn-vtext > .tabs-wrap {
+  width: 42px;
+}
+.d-tabcolumn-vtext > .tabs-wrap > .tabs {
+  left: 0;
+  top: 0;
+  height: 5000px;
+  list-style: none;
+  padding: 0;
+  margin: 0;
+  text-align: center;
+  width: 42px;
+}
+.d-tabcolumn-vtext > .tabs-wrap > .tabs > .tab {
+  padding-top: 7px;
+  padding-left: 0;
+}
+.d-tabcolumn-vtext > .tabs-wrap > .tabs > .tab .tab-left {
+  height: auto;
+  width: 42px;
+  padding-right: 0;
+}
+.d-tabcolumn-vtext > .tabs-wrap > .tabs > .tab .tab-right {
+  display: block;
+  position: static;
+  height: 7px;
+  width: 100%;
+  padding: 0;
+}
+.d-tabcolumn-vtext > .tabs-wrap > .tabs > .tab .d-icon {
+  float: none;
+  padding: 0;
+}
+.d-tabcolumn-vtext > .tabs-wrap > .tabs > .tab .caption {
+  float: none;
+  width: 15px;
+  height: auto;
+  line-height: 15px;
+  padding: 0 9px;
+  white-space: normal;
+}
+.d-tabcolumn-vtext > .tabs-wrap > .tabs > .tab .close {
+  right: auto;
+  position: unset;
+  top: auto;
+  bottom: 4px;
+}
+.d-tabcolumn-vtext > .tabs-wrap > .tabs > .tab-closeable .tab-left {
+  padding: 10px 0px 10px 0px;
+  height: auto;
+  width: 42px;
+}
+.d-tabcolumn {
+  background-color: #ffffff;
+}
+.d-tabcolumn .tab {
+  color: #333333;
+  background-color: #ffffff;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-tabcolumn .tab .d-icon {
+  color: rgba(51, 51, 51, 0.7);
+}
+.d-tabcolumn .tab-hover {
+  color: #333333;
+  background-color: #f7f7f7;
+}
+.d-tabcolumn .tab-hover .d-icon {
+  color: rgba(51, 51, 51, 0.7);
+}
+.d-tabcolumn .tab-selected {
+  color: #333333;
+  background-color: #ffffff;
+}
+.d-tabcolumn .tab-selected .d-icon {
+  color: rgba(51, 51, 51, 0.7);
+}
+.d-tabcolumn .tab .close {
+  box-sizing: border-box;
+  color: #333333;
+  -webkit-border-radius: 8px;
+  -moz-border-radius: 8px;
+  border-radius: 8px;
+  border: 1px solid transparent;
+  line-height: 14px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-tabcolumn .tab .close:before {
+  content: "\e605";
+}
+.d-tabcolumn .tab .close-hover {
+  color: #333333;
+  border-color: #333333;
+}
+.d-tabcolumn .tab .close-click {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  background-color: #d6d6d6;
+}
+.d-tabcolumn .top-button {
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  line-height: 42px;
+  font-size: 20px;
+}
+.d-tabcolumn .top-button:before {
+  content: "\e602";
+}
+.d-tabcolumn .top-button-hover {
+  color: #333333;
+  background-color: #0588d7;
+}
+.d-tabcolumn .top-button-click {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  background-color: #046faf;
+}
+.d-tabcolumn .bottom-button {
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  line-height: 42px;
+  font-size: 20px;
+}
+.d-tabcolumn .bottom-button:before {
+  content: "\e601";
+}
+.d-tabcolumn .bottom-button-hover {
+  color: #333333;
+  background-color: #0588d7;
+}
+.d-tabcolumn .bottom-button-click {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  background-color: #046faf;
+}
+.d-tabcolumn.d-tabcolumn-left .tab {
+  -webkit-border-top-left-radius: 0px;
+  -moz-border-radius-topleft: 0px;
+  border-top-left-radius: 0px;
+  -webkit-border-bottom-left-radius: 0px;
+  -moz-border-radius-bottomleft: 0px;
+  border-bottom-left-radius: 0px;
+  border-bottom: 1px solid #ffffff;
+}
+.d-tabcolumn.d-tabcolumn-left .tab-hover {
+  -webkit-box-shadow: inset -3px 0 0 #d4d4d4;
+  -moz-box-shadow: inset -3px 0 0 #d4d4d4;
+  box-shadow: inset -3px 0 0 #d4d4d4;
+}
+.d-tabcolumn.d-tabcolumn-left .tab-selected {
+  -webkit-box-shadow: inset -3px 0 0 #f5f5f5;
+  -moz-box-shadow: inset -3px 0 0 #f5f5f5;
+  box-shadow: inset -3px 0 0 #f5f5f5;
+}
+.d-tabcolumn.d-tabcolumn-right .tab {
+  -webkit-border-top-right-radius: 0px;
+  -moz-border-radius-topright: 0px;
+  border-top-right-radius: 0px;
+  -webkit-border-bottom-right-radius: 0px;
+  -moz-border-radius-bottomright: 0px;
+  border-bottom-right-radius: 0px;
+  border-bottom: 1px solid #ffffff;
+}
+.d-tabcolumn.d-tabcolumn-right .tab-hover {
+  -webkit-box-shadow: inset 3px 0 0 #d4d4d4;
+  -moz-box-shadow: inset 3px 0 0 #d4d4d4;
+  box-shadow: inset 3px 0 0 #d4d4d4;
+}
+.d-tabcolumn.d-tabcolumn-right .tab-selected {
+  -webkit-box-shadow: inset 3px 0 0 #f5f5f5;
+  -moz-box-shadow: inset 3px 0 0 #f5f5f5;
+  box-shadow: inset 3px 0 0 #f5f5f5;
+}
+/* caption-bar */
+.d-caption-bar {
+  overflow: hidden;
+  height: 40px;
+}
+.d-caption-bar .caption-bar-icon {
+  float: left;
+  margin: 0px 3px 0 6px;
+  width: 40px;
+  height: 40px;
+  line-height: 40px;
+  background-position: center center;
+  background-repeat: no-repeat;
+}
+.d-caption-bar .caption-bar-icon .d-icon {
+  color: rgba(51, 51, 51, 0.7);
+}
+.d-caption-bar .caption {
+  padding-left: 6px;
+  line-height: 40px;
+  height: 40px;
+}
+.d-caption-bar .button-group {
+  float: right;
+  margin: 0 4px 0 0;
+  height: 20px;
+  padding: 10px 0 0 0;
+}
+.d-caption-bar .button-group div {
+  float: left;
+}
+.d-caption-bar {
+  -webkit-border-top-left-radius: 6px;
+  -moz-border-radius-topleft: 6px;
+  border-top-left-radius: 6px;
+  -webkit-border-top-right-radius: 6px;
+  -moz-border-radius-topright: 6px;
+  border-top-right-radius: 6px;
+  color: #333333;
+  background-color: #ffffff;
+}
+.d-caption-bar .d-icon-button {
+  width: 22px;
+  height: 22px;
+}
+.d-caption-bar .d-icon-button .d-icon {
+  margin-left: 0;
+  margin-top: 0;
+  color: rgba(51, 51, 51, 0.7);
+}
+/* panel */
+.d-panel {
+  overflow: hidden;
+}
+.d-panel .content-panel {
+  overflow: auto;
+}
+.d-panel .button-panel {
+  padding: 8px 3px 5px 3px;
+  text-align: center;
+  height: 22px;
+}
+.d-panel .button-panel-left {
+  text-align: left;
+}
+.d-panel .button-panel-right {
+  text-align: right;
+}
+.d-panel .button-panel .d-button {
+  margin-right: 3px;
+}
+.d-panel .d-collapse-button,
+.d-panel .d-close-button,
+.d-panel .d-maximize-button,
+.d-panel .d-restore-button {
+  cursor: pointer;
+}
+.d-panel .d-collapse-button .d-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-panel .d-collapse-button .d-icon:before {
+  content: "\e601";
+}
+.d-panel .d-collapse-button .collapse-icon-left {
+  -webkit-transform: rotate(90deg);
+  -moz-transform: rotate(90deg);
+  -ms-transform: rotate(90deg);
+  -o-transform: rotate(90deg);
+  transform: rotate(90deg);
+}
+.d-panel .d-collapse-button .collapse-icon-right {
+  -webkit-transform: rotate(-90deg);
+  -moz-transform: rotate(-90deg);
+  -ms-transform: rotate(-90deg);
+  -o-transform: rotate(-90deg);
+  transform: rotate(-90deg);
+}
+.d-panel .d-collapse-button .collapse-icon-up {
+  -webkit-transform: rotate(-180deg);
+  -moz-transform: rotate(-180deg);
+  -ms-transform: rotate(-180deg);
+  -o-transform: rotate(-180deg);
+  transform: rotate(-180deg);
+}
+.d-panel .d-collapse-button .expand-icon {
+  -webkit-transform: rotate(90deg);
+  -moz-transform: rotate(90deg);
+  -ms-transform: rotate(90deg);
+  -o-transform: rotate(90deg);
+  transform: rotate(90deg);
+}
+.d-panel .d-collapse-button .expand-icon-left {
+  -webkit-transform: rotate(90deg);
+  -moz-transform: rotate(90deg);
+  -ms-transform: rotate(90deg);
+  -o-transform: rotate(90deg);
+  transform: rotate(90deg);
+}
+.d-panel .d-collapse-button .expand-icon-right {
+  -webkit-transform: rotate(-90deg);
+  -moz-transform: rotate(-90deg);
+  -ms-transform: rotate(-90deg);
+  -o-transform: rotate(-90deg);
+  transform: rotate(-90deg);
+}
+.d-panel .d-collapse-button .expand-icon-up {
+  -webkit-transform: rotate(-180deg);
+  -moz-transform: rotate(-180deg);
+  -ms-transform: rotate(-180deg);
+  -o-transform: rotate(-180deg);
+  transform: rotate(-180deg);
+}
+.d-panel .d-close-button {
+  width: 22px;
+  height: 22px;
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-panel .d-close-button:before {
+  content: "\e605";
+}
+.d-panel .d-maximize-button {
+  width: 22px;
+  height: 22px;
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-panel .d-maximize-button:before {
+  content: "\e60e";
+}
+.d-panel .d-restore-button {
+  width: 22px;
+  height: 22px;
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-panel .d-restore-button:before {
+  content: "\e60d";
+}
+.d-panel-collapsed {
+  border-bottom: 0;
+}
+.d-panel-collapsed .panel-footer-left {
+  display: none;
+}
+.d-panel {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.d-panel .panel-body {
+  background-color: #f7f7f7;
+}
+/* toolbar */
+.d-toolbar {
+  position: relative;
+  height: 32px;
+}
+.d-toolbar .toolbar-left-wrap {
+  position: relative;
+  overflow: hidden;
+  height: 32px;
+}
+.d-toolbar .toolbar-left-wrap .toolbar-left {
+  position: absolute;
+  height: 32px;
+  left: 0;
+  width: 5000px;
+  margin-left: 4px;
+}
+.d-toolbar .toolbar-right {
+  display: inline-block;
+  position: absolute;
+  height: 32px;
+  right: 0;
+  top: 0;
+}
+.d-toolbar .overflow-button {
+  display: none;
+  position: absolute;
+  right: 0;
+  top: 0;
+  width: 15px;
+  height: 32px;
+}
+.d-toolbar .d-toolbar-item {
+  display: inline-block;
+  float: left;
+}
+.d-toolbar .d-toolbar-sep {
+  cursor: default;
+  width: 10px;
+  height: 32px;
+}
+.d-toolbar .d-toolbar-label {
+  display: inline-block;
+  cursor: default;
+  vertical-align: baseline;
+  height: 32px;
+  line-height: 32px;
+  margin: 0 4px;
+}
+.d-toolbar .d-text-box {
+  margin-top: 1px;
+}
+.d-toolbar-overflow .toolbar-right {
+  padding-right: 17px;
+}
+.d-toolbar-overflow .overflow-button {
+  display: block;
+}
+.d-toolbar-fixright .toolbar-right {
+  padding-left: 17px;
+  padding-right: 0;
+}
+.d-toolbar-fixright .overflow-button {
+  left: 0;
+  right: auto;
+}
+.d-toolbar {
+  color: #333333;
+  background-color: #ffffff;
+  border: 1px solid #ffffff;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  border-radius: 0px;
+}
+.d-toolbar .overflow-button {
+  line-height: 32px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-toolbar .overflow-button:before {
+  content: "\e603";
+}
+.d-toolbar .overflow-button-hover {
+  color: #333333;
+  background-color: #0588d7;
+}
+.d-toolbar .overflow-button-click {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  background-color: #046faf;
+}
+.d-toolbar .overflow-button-toggled {
+  background-color: #0482cd;
+}
+.d-toolbar .d-toolbar-sep {
+  text-align: center;
+}
+.d-toolbar .d-toolbar-sep:before {
+  content: "";
+  display: inline-block;
+  width: 1px;
+  height: 100%;
+  background-color: #ffffff;
+}
+.d-toolbar .d-icon-button,
+.d-toolbar .d-button {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  color: #ffffff;
+  border-color: transparent;
+  background-color: transparent;
+  line-height: 32px;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-toolbar .d-icon-button-hover,
+.d-toolbar .d-button-hover {
+  color: #333333;
+  background-color: #0588d7;
+}
+.d-toolbar .d-icon-button-click,
+.d-toolbar .d-button-click {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  background-color: #046faf;
+}
+.d-toolbar .d-icon-button-toggled,
+.d-toolbar .d-button-toggled {
+  color: #333333;
+  border-color: #0482cd;
+  background-color: #0482cd;
+  -webkit-box-shadow: inset 0 -2px 0 #f5f5f5;
+  -moz-box-shadow: inset 0 -2px 0 #f5f5f5;
+  box-shadow: inset 0 -2px 0 #f5f5f5;
+}
+.d-toolbar .d-icon-button-trigger,
+.d-toolbar .d-button-trigger {
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+/* accordion */
+.d-accordion {
+  overflow: hidden;
+}
+.d-accordion .d-section {
+  overflow: hidden;
+  cursor: pointer;
+  width: 100%;
+}
+.d-accordion .d-section .d-section-caption-bar {
+  background-repeat: repeat-x;
+  background-position: left top;
+  height: 40px;
+  padding: 0;
+  padding-left: 6px;
+}
+.d-accordion .d-section .d-section-caption-bar .caption {
+  height: 40px;
+  line-height: 40px;
+}
+.d-accordion .d-section .container {
+  display: none;
+}
+.d-accordion .d-section.current-section .d-section-caption-bar {
+  background-repeat: repeat-x;
+  background-position: left bottom;
+}
+.d-accordion .d-section.current-section .container {
+  display: block;
+}
+.d-accordion .d-section-disabled .d-section {
+  cursor: default;
+}
+.d-accordion .d-section-disabled .d-section .d-section-caption-bar .caption-bar-icon {
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+}
+.d-accordion .d-section-disabled .d-section .d-section-caption-bar .caption {
+  color: #d9d9d9;
+}
+.d-accordion .d-menu {
+  position: relative;
+  padding: 0;
+  border: 0;
+  background: transparent;
+}
+.d-accordion {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.d-accordion .d-section .d-section-caption-bar {
+  -webkit-border-radius: 0 !important;
+  -moz-border-radius: 0 !important;
+  border-radius: 0 !important;
+  position: relative;
+  color: #333333;
+  background-color: #d9d9d9;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-accordion .d-section .d-section-caption-bar .caption-bar-icon {
+  color: rgba(51, 51, 51, 0.7);
+  line-height: 40px;
+}
+.d-accordion .d-section .d-section-caption-bar:before {
+  content: "\e600";
+  position: absolute;
+  right: 6px;
+  line-height: 40px;
+  width: 16px;
+  height: 40px;
+  font-size: 14px;
+  font-family: entypo;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-accordion .d-section.hover-section .d-section-caption-bar {
+  color: #333333;
+  background-color: #f5f5f5;
+  -webkit-box-shadow: inset 3px 0 0 #d4d4d4;
+  -moz-box-shadow: inset 3px 0 0 #d4d4d4;
+  box-shadow: inset 3px 0 0 #d4d4d4;
+}
+.d-accordion .d-section.hover-section .d-section-caption-bar .caption-bar-icon {
+  color: rgba(51, 51, 51, 0.7);
+}
+.d-accordion .d-section.current-section .d-section-caption-bar {
+  color: #333333;
+  background-color: #ffffff;
+  -webkit-box-shadow: inset 3px 0 0 #f5f5f5;
+  -moz-box-shadow: inset 3px 0 0 #f5f5f5;
+  box-shadow: inset 3px 0 0 #f5f5f5;
+}
+.d-accordion .d-section.current-section .d-section-caption-bar .caption-bar-icon {
+  color: rgba(51, 51, 51, 0.7);
+}
+.d-accordion .d-section.current-section .d-section-caption-bar:before {
+  -webkit-transform: rotate(-90deg);
+  -moz-transform: rotate(-90deg);
+  -ms-transform: rotate(-90deg);
+  -o-transform: rotate(-90deg);
+  transform: rotate(-90deg);
+}
+.d-accordion .d-section .container {
+  background-color: #f7f7f7;
+}
+/* split-panel */
+.d-split-panel {
+  position: relative;
+  overflow: hidden;
+}
+.d-split-panel .side-panel {
+  position: absolute;
+  overflow: hidden;
+}
+.d-split-panel .main-panel {
+  position: absolute;
+  overflow: hidden;
+}
+.d-split-panel .splitter {
+  position: absolute;
+  font-size: 1%;
+}
+.d-split-panel .splitter-left,
+.d-split-panel .splitter-right {
+  width: 5px;
+  height: 100%;
+  line-height: 100%;
+  vertical-align: middle;
+}
+.d-split-panel .splitter-left .button,
+.d-split-panel .splitter-right .button {
+  cursor: pointer;
+  width: 5px;
+  height: 55px;
+  font-size: 1%;
+  position: absolute;
+  left: 0;
+  top: 50%;
+  margin: -24px 0px;
+}
+.d-split-panel .splitter-top,
+.d-split-panel .splitter-bottom {
+  line-height: 4px;
+  height: 5px;
+  width: 100%;
+}
+.d-split-panel .splitter-top .button,
+.d-split-panel .splitter-bottom .button {
+  cursor: pointer;
+  width: 55px;
+  height: 5px;
+  position: absolute;
+  left: 50%;
+  top: 0;
+  margin: 0px -24px;
+}
+.d-split-panel .splitter-h-resizeable {
+  cursor: w-resize;
+}
+.d-split-panel .splitter-v-resizeable {
+  cursor: n-resize;
+}
+.d-split-panel .collapse-bar {
+  position: absolute;
+}
+.d-split-panel .collapse-bar .button {
+  cursor: pointer;
+  width: 15px;
+  height: 15px;
+  margin: 2px;
+  border-radius: 50%;
+  border-width: 1px;
+  border-style: solid;
+  text-align: center;
+  font-size: 14px;
+  line-height: 14px;
+}
+.d-split-panel .collapse-bar-left,
+.d-split-panel .collapse-bar-right {
+  width: 19px;
+}
+.d-split-panel .collapse-bar-top,
+.d-split-panel .collapse-bar-bottom {
+  float: right;
+  height: 19px;
+}
+.d-split-panel .collapse-bar-top .button {
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-split-panel .collapse-bar-top .button:before {
+  content: "\e601";
+  font-family: entypo;
+}
+.d-split-panel .collapse-bar-bottom .button {
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-split-panel .collapse-bar-bottom .button:before {
+  content: "\e602";
+  font-family: entypo;
+}
+.d-split-panel .collapse-bar-left .button {
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-split-panel .collapse-bar-left .button:before {
+  content: "\e603";
+  font-family: entypo;
+}
+.d-split-panel .collapse-bar-right .button {
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-split-panel .collapse-bar-right .button:before {
+  content: "\e600";
+  font-family: entypo;
+}
+.d-split-panel-collapse-both .splitter-left .button,
+.d-split-panel-collapse-both .splitter-right .button {
+  margin: -55px 0 0 0;
+  line-height: 55px;
+}
+.d-split-panel-collapse-both .splitter-left .button:before,
+.d-split-panel-collapse-both .splitter-right .button:before {
+  position: absolute;
+  left: -3px;
+}
+.d-split-panel-collapse-both .splitter-top .button,
+.d-split-panel-collapse-both .splitter-bottom .button {
+  margin: 0 0 0 -55px;
+}
+.d-split-panel-collapse-both .splitter-top .button:before,
+.d-split-panel-collapse-both .splitter-bottom .button:before {
+  position: absolute;
+  top: 1px;
+  left: 22px;
+}
+.d-split-panel-collapse-both .splitter-left .button {
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-split-panel-collapse-both .splitter-left .button:before {
+  content: "\e600";
+  font-family: entypo;
+}
+.d-split-panel-collapse-both .splitter-right .button {
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-split-panel-collapse-both .splitter-right .button:before {
+  content: "\e603";
+  font-family: entypo;
+}
+.d-split-panel-collapse-both .splitter-top .button {
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-split-panel-collapse-both .splitter-top .button:before {
+  content: "\e602";
+  font-family: entypo;
+}
+.d-split-panel-collapse-both .splitter-bottom .button {
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-split-panel-collapse-both .splitter-bottom .button:before {
+  content: "\e601";
+  font-family: entypo;
+}
+.d-split-panel-collapse-both .splitter-left .opposite-button,
+.d-split-panel-collapse-both .splitter-right .opposite-button {
+  width: 5px;
+  height: 55px;
+  line-height: 55px;
+  position: absolute;
+  left: 0;
+  top: 50%;
+  margin: 0;
+}
+.d-split-panel-collapse-both .splitter-left .opposite-button:before,
+.d-split-panel-collapse-both .splitter-right .opposite-button:before {
+  position: absolute;
+  left: -3px;
+}
+.d-split-panel-collapse-both .splitter-top .opposite-button,
+.d-split-panel-collapse-both .splitter-bottom .opposite-button {
+  width: 55px;
+  height: 5px;
+  position: absolute;
+  left: 50%;
+  top: 0;
+  margin: 0;
+}
+.d-split-panel-collapse-both .splitter-top .opposite-button:before,
+.d-split-panel-collapse-both .splitter-bottom .opposite-button:before {
+  position: absolute;
+  top: 1px;
+  left: 22px;
+}
+.d-split-panel-collapse-both .splitter-left .opposite-button {
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-split-panel-collapse-both .splitter-left .opposite-button:before {
+  content: "\e603";
+  font-family: entypo;
+}
+.d-split-panel-collapse-both .splitter-right .opposite-button {
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-split-panel-collapse-both .splitter-right .opposite-button:before {
+  content: "\e600";
+  font-family: entypo;
+}
+.d-split-panel-collapse-both .splitter-top .opposite-button {
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-split-panel-collapse-both .splitter-top .opposite-button:before {
+  content: "\e601";
+  font-family: entypo;
+}
+.d-split-panel-collapse-both .splitter-bottom .opposite-button {
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-split-panel-collapse-both .splitter-bottom .opposite-button:before {
+  content: "\e602";
+  font-family: entypo;
+}
+.d-split-panel-collapsed .splitter-h-resizeable,
+.d-split-panel-collapsed .splitter-v-resizeable {
+  cursor: default;
+}
+.d-split-panel-collapsed .splitter-left .button,
+.d-split-panel-collapsed .splitter-right .button {
+  margin: -27px 0 0 0;
+}
+.d-split-panel-collapsed .splitter-top .button,
+.d-split-panel-collapsed .splitter-bottom .button {
+  margin: 0 0 0 -27px;
+}
+.d-split-panel-collapsed .splitter .opposite-button {
+  display: none;
+}
+.d-split-panel-main-collapsed .splitter-left .button,
+.d-split-panel-main-collapsed .splitter-right .button {
+  margin: -27px 0 0 0;
+}
+.d-split-panel-main-collapsed .splitter-top .button,
+.d-split-panel-main-collapsed .splitter-bottom .button {
+  margin: 0 0 0 -27px;
+}
+.d-split-panel-main-collapsed .splitter .opposite-button {
+  display: none;
+}
+.d-splitter-dragging {
+  background: #333333 !important;
+  opacity: 0.3;
+  filter: alpha(opacity=30);
+}
+.d-split-panel .splitter {
+  color: #333333;
+  background: #ffffff;
+}
+.d-split-panel .splitter .button {
+  color: #333333;
+  background: #ffffff;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-split-panel .splitter:hover .button {
+  color: #333333;
+  background: #f5f5f5;
+}
+.d-split-panel .side-panel,
+.d-split-panel .main-panel {
+  background: #ffffff;
+}
+.d-split-panel .collapse-bar {
+  background-color: #ffffff;
+}
+.d-split-panel .collapse-bar-hover {
+  background-color: #ffffff;
+}
+.d-split-panel .collapse-bar .button {
+  color: #ffffff;
+  border-color: transparent;
+}
+.d-split-panel .collapse-bar .button-hover {
+  border-color: #0588d7;
+}
+.d-split-panel .collapse-bar .button-click {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  border-color: #0588d7;
+  background-color: #046faf;
+}
+.d-split-panel-collapse-both .splitter:hover .button {
+  color: #333333 !important;
+  background: #ffffff !important;
+}
+.d-split-panel-collapse-both .splitter .opposite-button {
+  background: #ffffff;
+}
+.d-split-panel-collapse-both .splitter .button:hover,
+.d-split-panel-collapse-both .splitter .opposite-button:hover {
+  color: #333333 !important;
+  background: #f5f5f5 !important;
+}
+/* field-set */
+.d-field-set {
+  padding: 0 10px 10px 10px;
+  margin: 0;
+}
+.d-field-set .field-set-legend {
+  padding: 0 3px 0 0;
+  vertical-align: middle;
+}
+.d-field-set .field-set-legend .collapse-button {
+  display: inline-block;
+  cursor: pointer;
+  width: 19px;
+  height: 19px;
+  margin-right: 2px;
+  float: left;
+}
+.d-field-set .content-panel {
+  display: block;
+  overflow: hidden;
+}
+.d-field-set .button-panel {
+  text-align: center;
+  padding: 8px 3px 5px 3px;
+  height: 36px;
+}
+.d-field-set .button-panel-left {
+  text-align: left;
+}
+.d-field-set .button-panel-right {
+  text-align: right;
+}
+.d-field-set .button-panel .d-button {
+  margin-right: 3px;
+}
+.d-field-set-collapsed {
+  border-style: solid none none;
+}
+.d-field-set {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  border-color: rgba(28, 132, 198, 0.5);
+}
+.d-field-set .field-set-legend {
+  color: #1c84c6;
+  font-size: 110%;
+}
+.d-field-set .field-set-legend .collapse-button {
+  box-sizing: border-box;
+  -webkit-border-radius: 19px;
+  -moz-border-radius: 19px;
+  border-radius: 19px;
+  border-width: 1px;
+  border-style: solid;
+  color: #1c84c6;
+  border-color: transparent;
+  background-color: #ffffff;
+  line-height: 17px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-field-set .field-set-legend .collapse-button:before {
+  content: "\e601";
+}
+.d-field-set .field-set-legend .collapse-button-hover {
+  border-color: #1c84c6;
+}
+.d-field-set .field-set-legend .collapse-button-click {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  border-color: #1c84c6;
+  background-color: #c6e0f1;
+}
+.d-field-set.d-field-set-collapsed .field-set-legend .collapse-button {
+  -webkit-transform: rotate(-90deg);
+  -moz-transform: rotate(-90deg);
+  -ms-transform: rotate(-90deg);
+  -o-transform: rotate(-90deg);
+  transform: rotate(-90deg);
+}
+/* group-box */
+.d-group-box {
+  padding: 0;
+}
+.d-group-box .caption-bar {
+  overflow: hidden;
+  height: 30px;
+  padding-left: 10px;
+  background-color: transparent;
+  background-position: 0 0;
+  background-repeat: repeat;
+}
+.d-group-box .caption-bar .caption {
+  float: left;
+  overflow: hidden;
+  height: 21px;
+  padding: 0 6px 0 2px;
+}
+.d-group-box .caption-bar .bar-right {
+  float: right;
+  height: 21px;
+  background-color: transparent;
+  background-position: right -21px;
+  background-repeat: no-repeat;
+}
+.d-group-box .caption-bar .collapse-button {
+  float: left;
+  cursor: pointer;
+  width: 19px;
+  height: 19px;
+  background-color: #ffffff;
+}
+.d-group-box .content-panel {
+  display: block;
+}
+.d-group-box .button-panel {
+  padding: 8px 3px 5px 3px;
+  text-align: center;
+  height: 36px;
+}
+.d-group-box .button-panel-left {
+  text-align: left;
+}
+.d-group-box .button-panel-right {
+  text-align: right;
+}
+.d-group-box .button-panel .d-button {
+  margin-right: 3px;
+}
+.d-group-box .caption-bar {
+  position: relative;
+}
+.d-group-box .caption-bar:before {
+  content: "";
+  display: block;
+  position: absolute;
+  top: 9.5px;
+  left: 0;
+  width: 100%;
+  height: 1px;
+  background-color: rgba(28, 132, 198, 0.5);
+  z-index: 0;
+}
+.d-group-box .caption-bar .caption {
+  position: relative;
+  z-index: 1;
+  color: #1c84c6;
+  font-size: 110%;
+  background-color: #ffffff;
+}
+.d-group-box .caption-bar .bar-right {
+  width: 0;
+}
+.d-group-box .caption-bar .collapse-button {
+  position: relative;
+  z-index: 1;
+  margin-top: 1px;
+  box-sizing: border-box;
+  border-radius: 19px;
+  border-width: 1px;
+  border-style: solid;
+  color: #1c84c6;
+  border-color: transparent;
+  background-color: #ffffff;
+  line-height: 17px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  font-size: 110%;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-group-box .caption-bar .collapse-button:before {
+  content: "\e601";
+}
+.d-group-box .caption-bar .collapse-button-hover {
+  border-color: #1c84c6;
+}
+.d-group-box .caption-bar .collapse-button-click {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  border-color: #1c84c6;
+  background-color: #c6e0f1;
+}
+.d-group-box.d-group-box-collapsed .caption-bar .collapse-button {
+  -webkit-transform: rotate(-90deg);
+  -moz-transform: rotate(-90deg);
+  -ms-transform: rotate(-90deg);
+  -o-transform: rotate(-90deg);
+  transform: rotate(-90deg);
+}
+/* dialog */
+.d-dialog {
+  margin: 0;
+  padding: 0;
+  overflow: hidden;
+}
+.d-dialog .dialog-header {
+  font-size: 1%;
+  position: relative;
+  height: 4px;
+}
+.d-dialog .dialog-header-left {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 4px;
+  height: 4px;
+  margin: 0;
+  cursor: nw-resize;
+}
+.d-dialog .dialog-header-right {
+  position: absolute;
+  right: 0;
+  top: 0;
+  width: 4px;
+  height: 4px;
+  margin: 0;
+  cursor: ne-resize;
+}
+.d-dialog .dialog-header-center {
+  height: 4px;
+  margin: 0 4px;
+  cursor: n-resize;
+}
+.d-dialog .dialog-body-wrap {
+  position: relative;
+  overflow: hidden;
+}
+.d-dialog .dialog-body-left {
+  position: absolute;
+  left: 0;
+  top: 0;
+  bottom: 0;
+  width: 4px;
+}
+.d-dialog .dialog-body-right {
+  position: absolute;
+  right: 0;
+  top: 0;
+  bottom: 0;
+  width: 4px;
+}
+.d-dialog .d-dialog-caption-bar {
+  margin: 0px 4px;
+  height: 40px;
+  background-position: 0 top;
+  background-repeat: repeat-x;
+  padding: 0;
+  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2);
+  -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2);
+  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2);
+}
+.d-dialog .d-dialog-caption-bar .caption-bar-icon {
+  margin-top: 0px;
+}
+.d-dialog .d-dialog-caption-bar .caption {
+  padding-left: 8px;
+  line-height: 40px;
+  text-align: left;
+  vertical-align: middle;
+}
+.d-dialog .d-dialog-caption-bar .button-group {
+  margin: 0 4px 0 0;
+}
+.d-dialog .d-dialog-caption-bar .button-group div {
+  float: left;
+}
+.d-dialog .dialog-body {
+  padding: 0;
+  margin: 0px 4px;
+}
+.d-dialog .dialog-body .content-panel {
+  padding: 0;
+}
+.d-dialog .dialog-body .button-panel {
+  padding: 10px 16px;
+  text-align: center;
+  height: 32px;
+}
+.d-dialog .dialog-body .button-panel-left {
+  text-align: left;
+}
+.d-dialog .dialog-body .button-panel-right {
+  text-align: right;
+}
+.d-dialog .dialog-body .button-panel .d-button {
+  margin-left: 1px;
+  margin-right: 1px;
+}
+.d-dialog .dialog-footer {
+  font-size: 1%;
+  position: relative;
+  height: 4px;
+}
+.d-dialog .dialog-footer-left {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 4px;
+  height: 4px;
+  cursor: sw-resize;
+}
+.d-dialog .dialog-footer-right {
+  position: absolute;
+  right: 0;
+  top: 0;
+  width: 4px;
+  height: 4px;
+  cursor: se-resize;
+}
+.d-dialog .dialog-footer-center {
+  height: 4px;
+  margin: 0 4px;
+  cursor: s-resize;
+}
+.d-dialog .d-close-button,
+.d-dialog .d-minimize-button,
+.d-dialog .d-maximize-button,
+.d-dialog .d-restore-button {
+  cursor: pointer;
+}
+.d-dialog-resizeable .dialog-body-wrap .dialog-body-left {
+  cursor: w-resize;
+}
+.d-dialog-resizeable .dialog-body-wrap .dialog-body-right {
+  cursor: e-resize;
+}
+.d-dialog-draggable .dialog-body-wrap .d-dialog-caption-bar {
+  cursor: move;
+}
+.d-dialog-drag-proxy {
+  position: absolute;
+  border: 1px dotted #333333;
+}
+.d-dialog-helper {
+  left: -99999px;
+  top: -99999px;
+}
+.d-dialog {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.d-dialog .dialog-header-left,
+.d-dialog .dialog-footer-left,
+.d-dialog .dialog-header-right,
+.d-dialog .dialog-footer-right,
+.d-dialog .dialog-header-center,
+.d-dialog .dialog-footer-center {
+  background-color: #f7f7f7;
+}
+.d-dialog .dialog-body-wrap .dialog-body-left,
+.d-dialog .dialog-body-wrap .dialog-body-right,
+.d-dialog .dialog-body-wrap .dialog-body {
+  background-color: #f7f7f7;
+}
+.d-dialog .dialog-body-wrap .dialog-body > .content-panel {
+  background-color: #f7f7f7 !important;
+}
+.d-dialog .d-dialog-caption-bar {
+  font-size: 110%;
+  color: #333333;
+  background-color: #f7f7f7;
+}
+.d-dialog .d-dialog-caption-bar .caption-bar-icon {
+  color: rgba(51, 51, 51, 0.7);
+}
+.d-dialog .d-close-button {
+  width: 16px;
+  height: 16px;
+  line-height: 14px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-dialog .d-close-button:before {
+  content: "\e605";
+}
+.d-dialog .d-minimize-button {
+  width: 16px;
+  height: 16px;
+  line-height: 14px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-dialog .d-minimize-button:before {
+  content: "\e6b2";
+}
+.d-dialog .d-maximize-button {
+  width: 16px;
+  height: 16px;
+  line-height: 14px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-dialog .d-maximize-button:before {
+  content: "\e60e";
+}
+.d-dialog .d-restore-button {
+  width: 16px;
+  height: 16px;
+  line-height: 14px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-dialog .d-restore-button:before {
+  content: "\e60d";
+}
+.d-dialog .d-close-button,
+.d-dialog .d-minimize-button,
+.d-dialog .d-maximize-button,
+.d-dialog .d-restore-button {
+  box-sizing: border-box;
+  border-radius: 16px;
+  border-width: 1px;
+  border-style: solid;
+  color: rgba(51, 51, 51, 0.7);
+  background-color: rgba(0, 0, 0, 0);
+  margin: 0 1px;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-dialog .d-close-button-hover,
+.d-dialog .d-minimize-button-hover,
+.d-dialog .d-maximize-button-hover,
+.d-dialog .d-restore-button-hover {
+  color: #333333;
+  border-color: rgba(51, 51, 51, 0.5);
+  background-color: rgba(0, 0, 0, 0);
+}
+.d-dialog .d-close-button-click,
+.d-dialog .d-minimize-button-click,
+.d-dialog .d-maximize-button-click,
+.d-dialog .d-restore-button-click {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  border-color: #333333;
+  background-color: rgba(51, 51, 51, 0.1);
+}
+.d-dialog.d-focused .dialog-header-left,
+.d-dialog.d-focused .dialog-footer-left,
+.d-dialog.d-focused .dialog-header-right,
+.d-dialog.d-focused .dialog-footer-right,
+.d-dialog.d-focused .dialog-header-center,
+.d-dialog.d-focused .dialog-footer-center {
+  background-color: #ffffff;
+}
+.d-dialog.d-focused .dialog-body-wrap .dialog-body-left,
+.d-dialog.d-focused .dialog-body-wrap .dialog-body-right,
+.d-dialog.d-focused .dialog-body-wrap .dialog-body {
+  background-color: #ffffff;
+}
+.d-dialog.d-focused .dialog-body-wrap .dialog-body > .content-panel {
+  background-color: #ffffff;
+}
+.d-dialog.d-focused .d-dialog-caption-bar {
+  color: #333333;
+  background-color: #ffffff;
+}
+.d-dialog.d-focused .d-dialog-caption-bar .caption-bar-icon {
+  color: rgba(51, 51, 51, 0.7);
+}
+/* message-box */
+.d-message-box .msg-icon {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 64px;
+  height: 64px;
+}
+.d-message-box .error-icon {
+  line-height: 64px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  font-size: 64px;
+  color: #ed5565;
+}
+.d-message-box .error-icon:before {
+  content: "\f057";
+}
+.d-message-box .info-icon {
+  line-height: 64px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  font-size: 64px;
+  color: #1c84c6;
+}
+.d-message-box .info-icon:before {
+  content: "\f05a";
+}
+.d-message-box .warning-icon {
+  line-height: 64px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  font-size: 64px;
+  color: #f8ac59;
+}
+.d-message-box .warning-icon:before {
+  content: "\f071";
+}
+.d-message-box .question-icon {
+  line-height: 64px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  font-size: 64px;
+  color: #1c84c6;
+}
+.d-message-box .question-icon:before {
+  content: "\f059";
+}
+.d-message-box .msg-content {
+  position: relative;
+  word-break: break-all;
+}
+.d-message-box .msg-content-hasicon {
+  min-height: 64px;
+  padding-left: 86px;
+}
+.d-message-box .editor-wrap {
+  margin-top: 8px;
+}
+.d-message-box .dialog-body-wrap .dialog-body .content-panel {
+  padding: 16px 32px 0 32px;
+}
+.d-message-box .d-button {
+  min-width: 96px;
+}
+/* data-pilot */
+.d-data-pilot .d-label {
+  margin: 0 4px;
+}
+.d-data-pilot .d-goto-page .text,
+.d-data-pilot .d-page-size .text {
+  margin: 0 4px;
+  line-height: 32px;
+}
+.d-data-pilot .icon-first-page {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-data-pilot .icon-first-page:before {
+  content: "\f049";
+}
+.d-data-pilot .icon-previous-page {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-data-pilot .icon-previous-page:before {
+  content: "\f048";
+}
+.d-data-pilot .icon-next-page {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-data-pilot .icon-next-page:before {
+  content: "\f051";
+}
+.d-data-pilot .icon-last-page {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-data-pilot .icon-last-page:before {
+  content: "\f050";
+}
+.d-data-pilot .icon-add {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-data-pilot .icon-add:before {
+  content: "\f067";
+}
+.d-data-pilot .icon-delete {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-data-pilot .icon-delete:before {
+  content: "\f068";
+}
+.d-data-pilot .icon-cancel {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-data-pilot .icon-cancel:before {
+  content: "\f0e2";
+}
+/* update-action*/
+.d-update-action-icon-error {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #ed5565;
+}
+.d-update-action-icon-error:before {
+  content: "\f00d";
+}
+.d-update-action-icon-warn {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #f8ac59;
+}
+.d-update-action-icon-warn:before {
+  content: "\f071";
+}
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/base-widget.css b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/base-widget.css
new file mode 100644
index 0000000..42c968b
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/base-widget.css
@@ -0,0 +1,593 @@
+/*
+ * This file is part of Dorado 7.x (http://dorado7.bsdn.org).
+ * 
+ * Copyright (c) 2002-2012 BSTEK Corp. All rights reserved.
+ * 
+ * This file is dual-licensed under the AGPLv3 (http://www.gnu.org/licenses/agpl-3.0.html) 
+ * and BSDN commercial (http://www.bsdn.org/licenses) licenses.
+ * 
+ * If you are unsure which license is appropriate for your use, please contact the sales department
+ * at http://www.bstek.com/contact.
+ */
+.d-icon {
+  width: 20px;
+  height: 20px;
+  line-height: 20px !important;
+  background-repeat: no-repeat;
+  background-position: center center;
+}
+/* simple-button */
+.d-simple-button {
+  width: 24px;
+  height: 24px;
+  cursor: pointer;
+}
+.d-icon-button {
+  box-sizing: border-box;
+  display: inline-block;
+  width: 24px;
+  height: 24px;
+  line-height: 1px;
+  cursor: pointer;
+}
+.d-icon-button .d-icon {
+  display: inline-block;
+  margin-left: 1px;
+}
+.d-icon-button-disabled {
+  cursor: default;
+}
+.d-icon-button-disabled .d-icon {
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+}
+.d-icon-button {
+  -webkit-border-radius: 32px;
+  -moz-border-radius: 32px;
+  border-radius: 32px;
+  border-width: 1px;
+  border-style: solid;
+  color: rgba(51, 51, 51, 0.7);
+  border-color: rgba(0, 0, 0, 0);
+  background-color: rgba(0, 0, 0, 0);
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-icon-button.d-hover {
+  color: #333333;
+  border-color: rgba(51, 51, 51, 0.5);
+  background-color: rgba(0, 0, 0, 0);
+}
+.d-icon-button.d-click {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  border-color: #333333;
+  background-color: rgba(51, 51, 51, 0.1);
+}
+.d-icon-button.d-toggle {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  border-color: #0482cd;
+  background-color: #0482cd;
+}
+/* .html-container */
+.d-html-container {
+  margin: 0;
+}
+/* iframe */
+.d-iframe {
+  position: relative;
+  overflow: hidden;
+}
+.d-iframe .iframe {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+}
+.d-iframe .iframe.hidden {
+  z-index: -1;
+}
+.d-iframe .frame-loading-cover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  z-index: 1050;
+  background: #ffffff;
+}
+.d-iframe .frame-loading-cover .frame-loading-image {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  margin-left: -18px;
+  margin-top: -18px;
+}
+.d-iframe .frame-loading-cover .frame-loading-image > .spinner {
+  width: 36px;
+  height: 36px;
+  box-sizing: border-box;
+  border: solid 2px transparent;
+  border-top-color: #f5f5f5;
+  border-left-color: #f5f5f5;
+  border-radius: 50%;
+  -webkit-animation: loading-icon 400ms linear infinite;
+  -moz-animation: loading-icon 400ms linear infinite;
+  -ms-animation: loading-icon 400ms linear infinite;
+  -o-animation: loading-icon 400ms linear infinite;
+}
+.d-iframe {
+  background-color: #ffffff;
+}
+/* cardbook */
+.d-cardbook {
+  background-color: #ffffff;
+  overflow: hidden;
+  position: relative;
+}
+.d-cardbook .items-wrap {
+  position: relative;
+  height: 100%;
+}
+.d-cardbook .items-wrap .card-item {
+  position: absolute;
+  visibility: hidden;
+  top: 0;
+  left: 0;
+}
+.d-cardbook .card-item-active {
+  visibility: visible;
+  z-index: 1050;
+}
+/* tip */
+.d-tip {
+  position: relative;
+  display: inline-block;
+  margin: 0;
+  overflow: visible;
+  padding: 8px;
+}
+.d-tip .tip-cm {
+  margin: 0;
+  padding: 0;
+}
+.d-tip .tip-cm .caption {
+  padding-bottom: 3px;
+  font-weight: bold;
+}
+.d-tip .close {
+  position: absolute;
+  cursor: pointer;
+  right: 3px;
+  top: 3px;
+  box-sizing: border-box;
+  border: 1px solid transparent;
+  border-radius: 16px;
+  width: 16px;
+  height: 16px;
+}
+.d-tip .tip-content {
+  position: relative;
+  word-break: break-all;
+}
+.d-tip .tip-content-hasicon {
+  min-height: 20px;
+  padding-left: 28px;
+}
+.d-tip .tip-content .tip-icon {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 20px;
+  height: 20px;
+  margin: 0 12px 0 2px;
+  background: transparent none no-repeat center center;
+}
+.d-tip .tip-content .error-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  line-height: 18px;
+}
+.d-tip .tip-content .error-icon:before {
+  content: "\f00d";
+}
+.d-tip .tip-content .info-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  line-height: 18px;
+}
+.d-tip .tip-content .info-icon:before {
+  content: "\f129";
+}
+.d-tip .tip-content .warning-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  line-height: 18px;
+}
+.d-tip .tip-content .warning-icon:before {
+  content: "\f071";
+}
+.d-tip .tip-content .question-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  line-height: 18px;
+}
+.d-tip .tip-content .question-icon:before {
+  content: "\f128";
+}
+.d-tip .arrow {
+  position: absolute;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.d-tip-arrow-top .arrow,
+.d-tip-arrow-bottom .arrow {
+  border-top-width: 8px;
+  border-bottom-width: 8px;
+  border-left-width: 8px;
+  border-right-width: 8px;
+}
+.d-tip-arrow-left .arrow,
+.d-tip-arrow-right .arrow {
+  border-top-width: 8px;
+  border-bottom-width: 8px;
+  border-left-width: 8px;
+  border-right-width: 8px;
+}
+.d-tip-arrow-top .arrow {
+  left: 8px;
+  top: -16px;
+}
+.d-tip-arrow-bottom .arrow {
+  left: 8px;
+  bottom: -16px;
+}
+.d-tip-arrow-left .arrow {
+  left: -16px;
+  top: 8px;
+}
+.d-tip-arrow-right .arrow {
+  right: -16px;
+  top: 8px;
+}
+.d-tip {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  color: #ffffff;
+  background-color: #07c181;
+}
+.d-tip .error-icon,
+.d-tip .info-icon,
+.d-tip .warning-icon,
+.d-tip .question-icon {
+  color: #ffffff;
+}
+.d-tip .close {
+  line-height: 14px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-tip .close:before {
+  content: "\e605";
+}
+.d-tip .close-hover {
+  color: #ffffff;
+  border-color: #ffffff;
+}
+.d-tip .close-click {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  background-color: #83e0c0;
+}
+.d-tip.d-tip-arrow-top .arrow {
+  border-bottom-color: #07c181;
+}
+.d-tip.d-tip-arrow-bottom .arrow {
+  border-top-color: #07c181;
+}
+.d-tip.d-tip-arrow-left .arrow {
+  border-right-color: #07c181;
+}
+.d-tip.d-tip-arrow-right .arrow {
+  border-left-color: #07c181;
+}
+/* slider */
+.d-slider {
+  position: relative;
+  display: inline-block;
+}
+.d-slider .slider-thumb {
+  position: absolute;
+  font-size: 1pt;
+  left: 0;
+  top: 0;
+}
+.d-slider .slider-start,
+.d-slider .slider-end {
+  position: absolute;
+  font-size: 1pt;
+}
+.d-slider .slider-current {
+  position: absolute;
+}
+.d-slider-horizontal {
+  height: 20px;
+}
+.d-slider-horizontal .slider-start {
+  left: 0;
+  top: 0;
+  width: 10px;
+  height: 20px;
+}
+.d-slider-horizontal .slider-end {
+  right: 0;
+  top: 0;
+  width: 10px;
+  height: 20px;
+}
+.d-slider-horizontal .slider-body {
+  position: relative;
+  margin: 0 10px;
+  height: 20px;
+}
+.d-slider-horizontal .slider-current {
+  top: 0;
+  margin-left: 10px;
+  height: 20px;
+}
+.d-slider-vertical {
+  width: 20px;
+}
+.d-slider-vertical .slider-start {
+  left: 0;
+  top: 0;
+  width: 20px;
+  height: 10px;
+}
+.d-slider-vertical .slider-end {
+  left: 0;
+  bottom: 0;
+  width: 20px;
+  height: 10px;
+}
+.d-slider-vertical .slider-body {
+  position: absolute;
+  left: 0px;
+  margin: 10px 0;
+  width: 20px;
+}
+.d-slider-vertical .slider-current {
+  width: 20px;
+  margin-top: 10px;
+}
+.d-slider .slider-body:before {
+  content: "";
+  display: block;
+  position: absolute;
+  background-color: #ffffff;
+  z-index: 0;
+}
+.d-slider .slider-current {
+  -webkit-transition-duration: 0.5s;
+  -moz-transition-duration: 0.5s;
+  -ms-transition-duration: 0.5s;
+  -o-transition-duration: 0.5s;
+  transition-duration: 0.5s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+  -webkit-transition-property: width, height;
+  -moz-transition-property: width, height;
+  -ms-transition-property: width, height;
+  -o-transition-property: width, height;
+  transition-property: width, height;
+}
+.d-slider .slider-current:before {
+  content: "";
+  display: block;
+  position: absolute;
+  background-color: #f5f5f5;
+  z-index: 0;
+}
+.d-slider .slider-thumb {
+  -webkit-border-radius: 20px;
+  -moz-border-radius: 20px;
+  border-radius: 20px;
+  width: 12px;
+  height: 12px;
+  border-width: 4px;
+  border-style: solid;
+  border-color: transparent;
+  background-color: #f5f5f5;
+  background-clip: content-box;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-slider .slider-thumb:hover,
+.d-slider .slider-thumb:active {
+  border-color: rgba(245, 245, 245, 0.5);
+}
+.d-slider.d-slider-horizontal .slider-body:before {
+  top: 8px;
+  left: 0;
+  width: 100%;
+  height: 4px;
+}
+.d-slider.d-slider-horizontal .slider-current:before {
+  top: 8px;
+  left: 0;
+  width: 100%;
+  height: 4px;
+}
+.d-slider.d-slider-vertical .slider-body:before {
+  top: 0;
+  left: 8px;
+  width: 4px;
+  height: 100%;
+}
+.d-slider.d-slider-vertical .slider-current:before {
+  top: 0;
+  left: 8px;
+  width: 4px;
+  height: 100%;
+}
+/* progress-bar */
+.d-progress-bar {
+  position: relative;
+  overflow: hidden;
+}
+.d-progress-bar .bar {
+  position: absolute;
+  overflow: hidden;
+  left: 0px;
+  top: 0px;
+}
+.d-progress-bar .msg {
+  display: block;
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  width: 100%;
+  vertical-align: middle;
+  text-align: center;
+}
+.d-progress-bar .bar-msg {
+  display: block;
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  width: 100%;
+  vertical-align: middle;
+  text-align: center;
+}
+.d-progress-bar {
+  height: 18px;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  background-color: #f7f7f7;
+}
+.d-progress-bar .bar {
+  -webkit-transition-duration: 0.5s;
+  -moz-transition-duration: 0.5s;
+  -ms-transition-duration: 0.5s;
+  -o-transition-duration: 0.5s;
+  transition-duration: 0.5s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+  -webkit-transition-property: width, height;
+  -moz-transition-property: width, height;
+  -ms-transition-property: width, height;
+  -o-transition-property: width, height;
+  transition-property: width, height;
+  height: 18px;
+  background-color: #f5f5f5;
+}
+.d-progress-bar .msg {
+  line-height: 18px;
+  color: #333333;
+}
+.d-progress-bar .bar-msg {
+  line-height: 18px;
+  color: #333333;
+}
+.d-sub-view {
+  background-color: #ffffff;
+}
+.d-sub-view .loading-indicator {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  margin-left: -18px;
+  margin-top: -18px;
+}
+.d-sub-view .loading-indicator > .spinner {
+  width: 36px;
+  height: 36px;
+  box-sizing: border-box;
+  border: solid 2px transparent;
+  border-top-color: #f5f5f5;
+  border-left-color: #f5f5f5;
+  border-radius: 50%;
+  -webkit-animation: loading-icon 400ms linear infinite;
+  -moz-animation: loading-icon 400ms linear infinite;
+  -ms-animation: loading-icon 400ms linear infinite;
+  -o-animation: loading-icon 400ms linear infinite;
+}
+.d-sub-view .error-message {
+  margin: 4px;
+}
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/block-view.css b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/block-view.css
new file mode 100644
index 0000000..9d44f0a
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/block-view.css
@@ -0,0 +1,73 @@
+/*
+ * This file is part of Dorado 7.x (http://dorado7.bsdn.org).
+ * 
+ * Copyright (c) 2002-2012 BSTEK Corp. All rights reserved.
+ * 
+ * This file is dual-licensed under the AGPLv3 (http://www.gnu.org/licenses/agpl-3.0.html) 
+ * and BSDN commercial (http://www.bsdn.org/licenses) licenses.
+ * 
+ * If you are unsure which license is appropriate for your use, please contact the sales department
+ * at http://www.bstek.com/contact.
+ */
+.d-block-view .block {
+  z-index: 100;
+}
+.d-block-view .block-decorator {
+  position: absolute;
+}
+.d-block-view .block-decorator-hover {
+  z-index: 0;
+}
+.d-block-view .block-decorator-current {
+  z-index: 1;
+}
+.d-block-view .block-decorator {
+  display: none;
+}
+.d-block-view-dragging-item {
+  background: #f7f7f7;
+}
+.d-block-view-dragging-insert-indicator-v {
+  position: absolute;
+  width: 2px;
+  background: #ff8040;
+}
+.d-block-view-dragging-insert-indicator-h {
+  position: absolute;
+  height: 2px;
+  background: #ff8040;
+}
+.d-block-view {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.d-block-view .block {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  background-color: #f7f7f7;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-block-view .block-hover {
+  border: 0;
+  background-color: #f5f5f5;
+}
+.d-block-view .block-current {
+  border: 0;
+  color: #333333;
+  background-color: #f5f5f5;
+}
+.d-block-view .block-drag-over {
+  border: 0;
+  background-color: #f5f5f5;
+}
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/color-picker.css b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/color-picker.css
new file mode 100644
index 0000000..4d66f87
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/color-picker.css
@@ -0,0 +1,1256 @@
+/*
+ * This file is part of Dorado 7.x (http://dorado7.bsdn.org).
+ * 
+ * Copyright (c) 2002-2012 BSTEK Corp. All rights reserved.
+ * 
+ * This file is dual-licensed under the AGPLv3 (http://www.gnu.org/licenses/agpl-3.0.html) 
+ * and BSDN commercial (http://www.bsdn.org/licenses) licenses.
+ * 
+ * If you are unsure which license is appropriate for your use, please contact the sales department
+ * at http://www.bstek.com/contact.
+ */
+/* label */
+.d-label {
+  height: 30px;
+  line-height: 30px;
+}
+/* text-box */
+.d-text-box {
+  position: relative;
+  text-align: left;
+  height: 28px;
+  line-height: 28px;
+}
+.d-text-box > .editor-wrapper {
+  display: block;
+}
+.d-text-box > .editor-wrapper > .editor {
+  background: transparent;
+  white-space: nowrap;
+  border: 0;
+  margin: 0;
+  width: 100%;
+  line-height: 28px;
+  padding: 0;
+}
+.d-text-box .d-trigger {
+  position: absolute;
+  top: 0;
+  right: 0;
+  cursor: pointer;
+  overflow: hidden;
+  width: 28px;
+  height: 28px;
+  border-width: 0;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.d-text-box .d-trigger .d-icon {
+  width: 28px;
+  height: 28px;
+  line-height: 28px !important;
+}
+.d-text-box .blank-text {
+  font-style: italic;
+}
+.d-text-box .d-dirty-flag {
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  border-bottom-color: #1ab394;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+}
+.d-text-box {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  border: 1px #bfbfbf solid;
+  background-color: #ffffff;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-text-box > .editor-wrapper > .editor {
+  color: #333333;
+}
+.d-text-box > .editor-wrapper > .blank-text {
+  color: #999999 !important;
+}
+.d-text-box.d-text-box-hover {
+  border-color: #dddddd;
+  background-color: #ffffff;
+}
+.d-text-box.d-text-box-focused {
+  border-color: #dddddd;
+  background-color: #ffffff;
+}
+.d-text-box.d-text-box-warn {
+  border-color: #ecc463;
+  background-color: #faefd5;
+}
+.d-text-box.d-text-box-warn .d-dirty-flag {
+  border-bottom-color: #f8ac59;
+}
+.d-text-box.d-text-box-error {
+  border-color: #ff6267;
+  background-color: #ffe1e2;
+}
+.d-text-box.d-text-box-error .d-dirty-flag {
+  border-bottom-color: #ed5565;
+}
+.d-text-box.d-text-box-readonly {
+  border-color: #e6e6e6;
+  background: #ffffff;
+}
+.d-text-box .d-trigger {
+  color: #333333;
+  background-color: rgba(0, 0, 0, 0);
+}
+.d-text-box .d-trigger:hover {
+  color: #333333;
+  background-color: #f5f5f5;
+}
+.d-text-box .d-trigger:active {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  color: #333333;
+  background-color: #e1e1e1;
+}
+.d-text-box .d-trigger.d-opened {
+  color: #333333;
+  background-color: #e1e1e1;
+}
+/* text-area */
+.d-text-area {
+  height: 32px;
+}
+.d-text-area .textarea {
+  color: #333333;
+  background: transparent;
+  border-width: 0;
+  margin: 0;
+  padding: 0;
+  resize: none;
+}
+.d-text-area .blank-text {
+  font-style: italic;
+}
+.d-text-area .d-trigger-panel {
+  position: absolute;
+  top: 0;
+  right: 0;
+  width: 30px;
+  height: 100%;
+}
+.d-text-area .d-trigger-panel .d-trigger {
+  display: block;
+  border-width: 0;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.d-text-area .d-trigger-panel .d-trigger .d-icon {
+  margin-top: 0;
+  width: 28px;
+  height: 28px;
+  line-height: 28px !important;
+}
+.d-text-area .d-dirty-flag {
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  border-bottom-color: #1ab394;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+}
+.d-text-area {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  border: 1px #bfbfbf solid;
+  background-color: #ffffff;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-text-area .text-area {
+  color: #333333;
+}
+.d-text-area .blank-text {
+  color: #999999 !important;
+}
+.d-text-area.d-text-area-hover {
+  border-color: #dddddd;
+  background-color: #ffffff;
+}
+.d-text-area.d-text-area-focused {
+  border-color: #dddddd;
+  background-color: #ffffff;
+}
+.d-text-area.d-text-area-warn {
+  border-color: #ecc463;
+  background-color: #faefd5;
+}
+.d-text-area.d-text-area-error {
+  border-color: #ff6267;
+  background-color: #ffe1e2;
+}
+.d-text-area.d-text-area-readonly {
+  border-color: #e6e6e6;
+  background: #ffffff;
+}
+.d-text-area .d-trigger {
+  color: #333333;
+  background-color: rgba(0, 0, 0, 0);
+}
+.d-text-area .d-trigger:hover {
+  color: #333333;
+  background-color: #f5f5f5;
+}
+.d-text-area .d-trigger:active {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  color: #333333;
+  background-color: #e1e1e1;
+}
+.d-text-area .d-trigger.d-opened {
+  color: #333333;
+  background-color: #e1e1e1;
+}
+/* trigger */
+.d-trigger-icon-drop {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-drop:before {
+  content: "\e6a4";
+}
+.d-trigger-icon-drop:before {
+  content: "\e6a4";
+}
+.d-trigger-icon-search {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-search:before {
+  content: "\e617";
+}
+.d-trigger-icon-search:before {
+  content: "\e617";
+}
+.d-trigger-icon-date {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-date:before {
+  content: "\e6a4";
+}
+.d-trigger-icon-date:before {
+  content: "\e6a4";
+}
+.d-trigger-icon-custom {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-custom:before {
+  content: "\e6b0";
+}
+.d-trigger-icon-custom:before {
+  content: "\e6b0";
+}
+.d-trigger-icon-clear {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-clear:before {
+  content: "\e605";
+}
+.d-trigger-icon-clear:before {
+  content: "\e605";
+}
+.d-trigger-icon-filter {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-filter:before {
+  content: "\e61f";
+}
+.d-trigger-icon-filter:before {
+  content: "\e61f";
+}
+.d-trigger-icon-reset {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-reset:before {
+  content: "\e614";
+}
+.d-trigger-icon-reset:before {
+  content: "\e614";
+}
+/* checkbox */
+.d-checkbox {
+  position: relative;
+  display: inline-block;
+  white-space: nowrap;
+  overflow: hidden;
+  cursor: default;
+  min-width: 14px;
+  height: 14px;
+  padding: 8px 2px;
+}
+.d-checkbox .icon {
+  float: left;
+  width: 14px;
+  height: 14px;
+}
+.d-checkbox .caption {
+  position: relative;
+  top: -1px;
+  margin-left: 4px;
+  white-space: nowrap;
+  word-wrap: break-word;
+}
+.d-checkbox-dirty:after {
+  content: "";
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  border-bottom-color: #1ab394;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+}
+.d-checkbox-center {
+  float: none;
+  position: relative;
+  left: 50%;
+  margin-left: -7px;
+  padding: 0;
+}
+.d-checkbox-icononly {
+  width: 14px;
+  height: 14px;
+  padding: 0 0;
+}
+.d-checkbox-readonly .icon {
+  border-color: #e6e6e6;
+  background: #ffffff;
+}
+.d-checkbox:before {
+  content: "";
+  display: block;
+  position: absolute;
+  box-sizing: border-box;
+  width: 14px;
+  height: 14px;
+  border: 1px #bfbfbf solid;
+  background-color: #ffffff;
+}
+.d-checkbox .icon {
+  position: relative;
+  line-height: 14px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: transparent;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-checkbox .icon:before {
+  content: "\f00c";
+}
+.d-checkbox .icon:before {
+  content: "\f00c";
+}
+.d-checkbox .icon.checked {
+  color: #2a394f;
+}
+.d-checkbox .icon.halfchecked:before {
+  content: "";
+  display: block;
+  position: absolute;
+  margin: 4px;
+  width: 6px;
+  height: 6px;
+  background-color: rgba(42, 57, 79, 0.5);
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+}
+.d-checkbox:hover:before,
+.d-checkbox-focused:before {
+  border-color: #f5f5f5;
+  background-color: #ffffff;
+}
+.d-checkbox:hover .icon.checked,
+.d-checkbox-focused .icon.checked {
+  color: #2a394f;
+}
+.d-checkbox:hover .icon.halfchecked:before,
+.d-checkbox-focused .icon.halfchecked:before {
+  background-color: rgba(42, 57, 79, 0.5);
+}
+/* radio-group */
+.d-radiogroup {
+  overflow: visible;
+  padding: 0 3px;
+}
+.d-radiogroup:before {
+  content: "";
+  display: table;
+}
+.d-radiogroup:after {
+  content: "";
+  display: table;
+  clear: both;
+}
+.d-radiogroup .d-radio {
+  overflow: hidden;
+  cursor: default;
+  min-width: 14px;
+  height: 30px;
+  line-height: 30px;
+  white-space: nowrap;
+}
+.d-radiogroup .d-radio .icon {
+  float: left;
+  display: inline-block;
+  width: 14px;
+  height: 14px;
+  margin-top: 8px;
+}
+.d-radiogroup .d-radio .text {
+  margin-left: 4px;
+  margin-right: 7px;
+}
+.d-radiogroup .d-radio-readonly .icon {
+  border-color: #e6e6e6;
+  background: #ffffff;
+}
+.d-radiogroup-dirty {
+  position: relative;
+}
+.d-radiogroup-dirty:after {
+  content: "";
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  border-bottom-color: #1ab394;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+}
+.d-radiogroup-flow .d-radio {
+  float: left;
+}
+.d-radio .icon {
+  box-sizing: border-box;
+  -webkit-border-radius: 14px;
+  -moz-border-radius: 14px;
+  border-radius: 14px;
+  width: 14px;
+  height: 14px;
+  border: 1px #bfbfbf solid;
+  background-color: #ffffff;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-radio .icon:before {
+  content: "";
+  display: block;
+  position: absolute;
+  margin: 2px;
+  -webkit-border-radius: 8px;
+  -moz-border-radius: 8px;
+  border-radius: 8px;
+  width: 8px;
+  height: 8px;
+  background-color: #2a394f;
+  opacity: 0;
+  filter: alpha(opacity=0);
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+  -webkit-transition-property: opacity;
+  -moz-transition-property: opacity;
+  -ms-transition-property: opacity;
+  -o-transition-property: opacity;
+  transition-property: opacity;
+}
+.d-radio .icon.checked:before {
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.d-radio .text {
+  color: #333333;
+}
+.d-radio:hover:before,
+.d-radio-focused:before {
+  background-color: #ffffff;
+}
+.d-radio:hover .icon,
+.d-radio-focused .icon {
+  border-color: #f5f5f5;
+}
+.d-radio:hover .icon:before,
+.d-radio-focused .icon:before {
+  background-color: #2a394f;
+}
+/* data-message */
+.d-data-message .d-message {
+  height: 30px;
+  line-height: 30px;
+}
+.d-data-message .d-message .icon {
+  float: left;
+  width: 24px;
+  height: 30px;
+  background-repeat: no-repeat;
+  background-position: center center;
+}
+.d-data-message .d-message .icon-info {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #1c84c6;
+}
+.d-data-message .d-message .icon-info:before {
+  content: "\e607";
+}
+.d-data-message .d-message .icon-info:before {
+  content: "\e607";
+}
+.d-data-message .d-message .icon-ok {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #1ab394;
+}
+.d-data-message .d-message .icon-ok:before {
+  content: "\e604";
+}
+.d-data-message .d-message .icon-ok:before {
+  content: "\e604";
+}
+.d-data-message .d-message .icon-warn {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #f8ac59;
+}
+.d-data-message .d-message .icon-warn:before {
+  content: "\e609";
+}
+.d-data-message .d-message .icon-warn:before {
+  content: "\e609";
+}
+.d-data-message .d-message .icon-error {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #ed5565;
+}
+.d-data-message .d-message .icon-error:before {
+  content: "\e606";
+}
+.d-data-message .d-message .icon-error:before {
+  content: "\e606";
+}
+.d-data-message .d-message .icon-validating {
+  padding-left: 7px;
+  padding-top: 7px;
+}
+.d-data-message .d-message .icon-validating > .spinner {
+  width: 16px;
+  height: 16px;
+  box-sizing: border-box;
+  border: solid 2px transparent;
+  border-top-color: #f5f5f5;
+  border-left-color: #f5f5f5;
+  border-radius: 50%;
+  -webkit-animation: loading-icon 400ms linear infinite;
+  -moz-animation: loading-icon 400ms linear infinite;
+  -ms-animation: loading-icon 400ms linear infinite;
+  -o-animation: loading-icon 400ms linear infinite;
+}
+.d-data-message .d-message .icon-validating > .spinner {
+  width: 16px;
+  height: 16px;
+  box-sizing: border-box;
+  border: solid 2px transparent;
+  border-top-color: #f5f5f5;
+  border-left-color: #f5f5f5;
+  border-radius: 50%;
+  -webkit-animation: loading-icon 400ms linear infinite;
+  -moz-animation: loading-icon 400ms linear infinite;
+  -ms-animation: loading-icon 400ms linear infinite;
+  -o-animation: loading-icon 400ms linear infinite;
+}
+/* form-element */
+.d-form-element {
+  position: relative;
+  overflow: hidden;
+}
+.d-form-element .form-label {
+  height: 32px;
+  line-height: 32px;
+  padding-right: 12px;
+}
+.d-form-element .form-label-left {
+  float: left;
+  height: 100%;
+}
+.d-form-element .form-label-align-left {
+  text-align: left;
+}
+.d-form-element .form-label-align-center {
+  text-align: center;
+}
+.d-form-element .form-label-align-right {
+  text-align: right;
+}
+.d-form-element .form-label-required {
+  position: relative;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-form-element .form-label-required:before {
+  content: "\e683";
+  font-family: entypo;
+}
+.d-form-element .form-label-required:before {
+  content: "\e683";
+  font-family: entypo;
+}
+.d-form-element .form-label-required:before {
+  position: absolute;
+  right: 0;
+  color: #f8ac59;
+  -webkit-transform: scale(0.8);
+  -moz-transform: scale(0.8);
+  -ms-transform: scale(0.8);
+  -o-transform: scale(0.8);
+  transform: scale(0.8);
+}
+.d-form-element .form-content {
+  display: block;
+  zoom: 1;
+}
+.d-form-element .form-content-right {
+  height: 100%;
+}
+.d-form-element .form-content .form-editor {
+  height: 100%;
+  overflow: hidden;
+}
+.d-form-element .form-content .form-editor-left {
+  height: 100%;
+}
+.d-form-element .form-hint-right {
+  position: absolute;
+  top: 0;
+  right: 0;
+  height: 100%;
+}
+.d-form-element .form-hint-bottom {
+  width: 100%;
+}
+/***
+Spectrum Colorpicker v1.2.0
+https://github.com/bgrins/spectrum
+Author: Brian Grinstead
+License: MIT
+***/
+.sp-container {
+  display: inline-block;
+  *display: inline;
+  *zoom: 1;
+  /* https://github.com/bgrins/spectrum/issues/40 */
+
+  z-index: 1050;
+  overflow: hidden;
+}
+.sp-container .sp-flat {
+  position: relative;
+}
+/* http://ansciath.tumblr.com/post/7347495869/css-aspect-ratio */
+.sp-top {
+  position: relative;
+  width: 100%;
+  display: inline-block;
+  margin-bottom: 3px;
+}
+.sp-top-inner {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+}
+.sp-color {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 20%;
+}
+.sp-hue {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 84%;
+  height: 100%;
+}
+.sp-clear-enabled .sp-hue {
+  top: 33px;
+  height: 77.5%;
+}
+.sp-fill {
+  padding-top: 80%;
+}
+.sp-sat,
+.sp-val {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+}
+.sp-alpha {
+  display: none;
+  position: absolute;
+  bottom: -14px;
+  right: 0;
+  left: 0;
+  height: 7px;
+}
+.sp-alpha-inner {
+  border: solid 1px #1c84c6;
+}
+.sp-alpha-handle {
+  position: absolute;
+  top: -4px;
+  bottom: -4px;
+  width: 6px;
+  left: 50%;
+  cursor: pointer;
+  border: 1px solid #dddddd;
+  background: white;
+  opacity: .8;
+}
+.sp-alpha-enabled .sp-top {
+  margin-bottom: 18px;
+}
+.sp-alpha-enabled .sp-alpha {
+  display: block;
+}
+.sp-clear {
+  display: none;
+}
+.sp-clear.sp-clear-display {
+  background-position: center;
+}
+.sp-clear-enabled .sp-clear {
+  display: block;
+  position: absolute;
+  top: 0px;
+  right: 0;
+  bottom: 0;
+  left: 84%;
+  height: 28px;
+}
+/* Don't allow text selection */
+.sp-container,
+.sp-replacer,
+.sp-preview,
+.sp-dragger,
+.sp-slider,
+.sp-alpha,
+.sp-clear,
+.sp-alpha-handle,
+.sp-container.sp-dragging .sp-input,
+.sp-container button {
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+.sp-container.sp-input-disabled .sp-input-container,
+.sp-container.sp-buttons-disabled .sp-button-container,
+.sp-palette-only .sp-picker-container,
+.sp-palette-disabled .sp-palette-container,
+.sp-initial-disabled .sp-initial {
+  display: none;
+}
+/* Gradients for hue, saturation and value instead of images.  Not pretty... but it works */
+.sp-sat {
+  background-image: -webkit-linear-gradient(left, #ffffff, rgba(204, 154, 129, 0));
+  background-image: -moz-linear-gradient(left, #ffffff, rgba(204, 154, 129, 0));
+  background-image: -moz-linear-gradient(to right, #ffffff, rgba(204, 154, 129, 0));
+  background-image: -o-linear-gradient(to right, #ffffff, rgba(204, 154, 129, 0));
+  background-image: linear-gradient(to right, #ffffff, rgba(204, 154, 129, 0));
+  background-repeat: repeat;
+  -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)";
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#FFFFFFFF', endColorstr='#00CC9A81');
+}
+.sp-val {
+  background-image: -webkit-linear-gradient(bottom, #000000, rgba(204, 154, 129, 0));
+  background-image: -moz-linear-gradient(bottom, #000000, rgba(204, 154, 129, 0));
+  background-image: -moz-linear-gradient(to top, #000000, rgba(204, 154, 129, 0));
+  background-image: -o-linear-gradient(to top, #000000, rgba(204, 154, 129, 0));
+  background-image: linear-gradient(to top, #000000, rgba(204, 154, 129, 0));
+  background-repeat: repeat;
+  -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)";
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00CC9A81', endColorstr='#FF000000');
+}
+.sp-hue {
+  background-image: -webkit-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
+  background-image: -moz-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
+  background-image: -moz-linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
+  background-image: -o-linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
+  background-image: linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
+  background-repeat: repeat;
+}
+/* IE filters do not support multiple color stops.
+   Generate 6 divs, line them up, and do two color gradients for each.
+   Yes, really.
+ */
+.sp-1 {
+  height: 17%;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000', endColorstr='#ffff00');
+}
+.sp-2 {
+  height: 16%;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff00', endColorstr='#00ff00');
+}
+.sp-3 {
+  height: 17%;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ff00', endColorstr='#00ffff');
+}
+.sp-4 {
+  height: 17%;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffff', endColorstr='#0000ff');
+}
+.sp-5 {
+  height: 16%;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0000ff', endColorstr='#ff00ff');
+}
+.sp-6 {
+  height: 17%;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ff', endColorstr='#ff0000');
+}
+.sp-hidden {
+  display: none !important;
+}
+/* Clearfix hack */
+.sp-cf:before,
+.sp-cf:after {
+  content: "";
+  display: table;
+}
+.sp-cf:after {
+  clear: both;
+}
+.sp-cf {
+  *zoom: 1;
+}
+/* Mobile devices, make hue slider bigger so it is easier to slide */
+@media (max-device-width: 480px) {
+  .sp-color {
+    right: 40%;
+  }
+  .sp-hue {
+    left: 63%;
+  }
+  .sp-fill {
+    padding-top: 60%;
+  }
+}
+.sp-dragger {
+  border-radius: 5px;
+  height: 5px;
+  width: 5px;
+  border: 1px solid #fff;
+  background: #000;
+  cursor: pointer;
+  position: absolute;
+  top: 0;
+  left: 0;
+}
+.sp-slider {
+  position: absolute;
+  top: 0;
+  cursor: pointer;
+  height: 3px;
+  left: -1px;
+  right: -1px;
+  border: 1px solid #dddddd;
+  background: #fff;
+  opacity: .8;
+}
+/*
+Theme authors:
+Here are the basic themeable display options (colors, fonts, global widths).
+See http://bgrins.github.io/spectrum/themes/ for instructions.
+*/
+.sp-container,
+.sp-container button,
+.sp-container input,
+.sp-color,
+.sp-hue,
+.sp-clear {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.d-color-editor {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+/* d-color-picker */
+.sp-container {
+  position: relative;
+  background-color: #f7f7f7;
+  padding: 0;
+  /* Input */
+
+  /* Palettes */
+
+  /* Initial */
+
+  /* Buttons */
+
+}
+.sp-container .sp-color,
+.sp-container .sp-hue,
+.sp-container .sp-clear {
+  border: solid 1px #1c84c6;
+}
+.sp-container .sp-input-container {
+  float: right;
+  width: 100px;
+  margin-bottom: 4px;
+}
+.sp-container .sp-initial-disabled .sp-input-container {
+  width: 100%;
+}
+.sp-container .sp-input {
+  height: 32px;
+  background-color: #ffffff;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  border: 1px solid #bfbfbf;
+  color: #333333;
+  padding: 4px 5px;
+  margin: 0;
+  width: 100%;
+}
+.sp-container .sp-input:hover .sp-input:focus {
+  background-color: #ffffff;
+  border-color: #dddddd;
+}
+.sp-container .sp-input.sp-validation-error {
+  background-color: #ffe1e2;
+  border-color: #ff393f;
+}
+.sp-container .sp-picker-container,
+.sp-container .sp-palette-container {
+  float: left;
+  position: relative;
+  padding: 10px;
+  padding-bottom: 300px;
+  margin-bottom: -290px;
+}
+.sp-container .sp-picker-container {
+  width: 172px;
+  border-left: solid 1px #ffffff;
+}
+.sp-container .sp-palette-container {
+  border-right: solid 1px #1c84c6;
+}
+.sp-container .sp-palette .sp-thumb-el {
+  display: block;
+  position: relative;
+  float: left;
+  width: 24px;
+  height: 15px;
+  margin: 3px;
+  cursor: pointer;
+  border: solid 2px transparent;
+}
+.sp-container .sp-palette .sp-thumb-el:hover,
+.sp-container .sp-palette .sp-thumb-el.sp-thumb-active {
+  border-color: #dddddd;
+}
+.sp-container .sp-thumb-el {
+  position: relative;
+}
+.sp-container .sp-initial {
+  float: left;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  border: solid 1px #1c84c6;
+}
+.sp-container .sp-initial span {
+  width: 30px;
+  height: 25px;
+  border: none;
+  display: block;
+  float: left;
+  margin: 0;
+}
+.sp-container .sp-initial .sp-clear-display {
+  background-position: center;
+}
+.sp-container .sp-button-container {
+  float: right;
+  padding-top: 2px;
+}
+.sp-container .sp-button-container .button-cancel {
+  margin-right: 2px;
+}
+.sp-container .sp-palette {
+  *width: 500px;
+  max-width: 500px;
+}
+.sp-container .sp-palette .sp-thumb-el {
+  width: 16px;
+  height: 16px;
+  margin: 2px 1px;
+  border: solid 1px #1c84c6;
+}
+.sp-container .sp-palette span:hover,
+.sp-container .sp-palette span.sp-thumb-active {
+  border-color: #dddddd;
+}
+.sp-container .sp-palette .sp-thumb-inner {
+  background-position: 50% 50%;
+  background-repeat: no-repeat;
+}
+.sp-container .sp-clear-display {
+  background-repeat: no-repeat;
+  background-position: center;
+  background-image: url(data:image/gif;base64,R0lGODlhFAAUAPcAAAAAAJmZmZ2dnZ6enqKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq/Hx8fLy8vT09PX19ff39/j4+Pn5+fr6+vv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAUABQAAAihAP9FoPCvoMGDBy08+EdhQAIJCCMybCDAAYUEARBAlFiQQoMABQhKUJBxY0SPICEYHBnggEmDKAuoPMjS5cGYMxHW3IiT478JJA8M/CjTZ0GgLRekNGpwAsYABHIypcAgQMsITDtWJYBR6NSqMico9cqR6tKfY7GeBCuVwlipDNmefAtTrkSzB1RaIAoXodsABiZAEFB06gIBWC1mLVgBa0AAOw==);
+}
+.sp-container .sp-alpha,
+.sp-container .sp-thumb-el {
+  position: relative;
+  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);
+}
+.sp-container .sp-alpha-inner,
+.sp-container .sp-thumb-inner {
+  display: block;
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+}
+/* Replacer (the little preview div that shows up instead of the <input>) */
+.sp-replacer {
+  margin: 0;
+  overflow: hidden;
+  cursor: pointer;
+  padding: 2px;
+  display: inline-block;
+  *zoom: 1;
+  *display: inline;
+  background-color: #ffffff;
+  border: solid 1px #bfbfbf;
+  color: #333333;
+  vertical-align: middle;
+}
+.sp-replacer:hover,
+.sp-replacer.sp-active {
+  background-color: #ffffff;
+  border-color: #dddddd;
+}
+.sp-replacer.sp-disabled {
+  cursor: default;
+  border-color: silver;
+  color: silver;
+}
+.sp-replacer .sp-dd {
+  padding: 0;
+  float: left;
+  font-size: 0;
+  width: 16px;
+  height: 24px;
+  line-height: 24px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #333333;
+}
+.sp-replacer .sp-dd:before {
+  content: "\e6a4";
+}
+.sp-replacer .sp-dd:before {
+  content: "\e6a4";
+}
+.sp-replacer .sp-preview {
+  box-sizing: border-box;
+  width: 30px;
+  height: 24px;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  border: solid 1px #1c84c6;
+  margin-right: 2px;
+  margin-top: 1px;
+  float: left;
+  position: relative;
+  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);
+}
+.sp-replacer .sp-preview-inner {
+  display: block;
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/core.css b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/core.css
new file mode 100644
index 0000000..9519c64
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/core.css
@@ -0,0 +1,141 @@
+/*
+ * This file is part of Dorado 7.x (http://dorado7.bsdn.org).
+ * 
+ * Copyright (c) 2002-2012 BSTEK Corp. All rights reserved.
+ * 
+ * This file is dual-licensed under the AGPLv3 (http://www.gnu.org/licenses/agpl-3.0.html) 
+ * and BSDN commercial (http://www.bsdn.org/licenses) licenses.
+ * 
+ * If you are unsure which license is appropriate for your use, please contact the sales department
+ * at http://www.bstek.com/contact.
+ */
+*:focus {
+  outline: none;
+}
+.d-rendering *,
+.d-rendering *:before,
+.d-rendering *:after {
+  -webkit-transition: none !important;
+  -moz-transition: none !important;
+  -ms-transition: none !important;
+  -o-transition: none !important;
+  transition: none !important;
+}
+html,
+body {
+  height: 100%;
+}
+body,
+input,
+textarea,
+button {
+  font-size: 10.5pt;
+  font-family: "Microsoft YaHei", Arial, sans-serif;
+  color: #333333;
+  background-color: #ffffff;
+}
+.d-ie input::-ms-clear {
+  display: none;
+}
+.d-shadow-drop {
+  -webkit-box-shadow: 8px 8px 15px 0 rgba(0, 0, 0, 0.8);
+  -moz-box-shadow: 8px 8px 15px 0 rgba(0, 0, 0, 0.8);
+  box-shadow: 8px 8px 15px 0 rgba(0, 0, 0, 0.8);
+}
+.d-shadow-sides {
+  -webkit-box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.8);
+  -moz-box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.8);
+  box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.8);
+}
+.d-shadow-frame {
+  -webkit-box-shadow: 0 0 17px 0 rgba(0, 0, 0, 0.8);
+  -moz-box-shadow: 0 0 17px 0 rgba(0, 0, 0, 0.8);
+  box-shadow: 0 0 17px 0 rgba(0, 0, 0, 0.8);
+}
+.d-modal-mask {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  margin: 0;
+  opacity: 0.1;
+  filter: alpha(opacity=10);
+  background: #000000;
+  -webkit-transition-duration: 1s;
+  -moz-transition-duration: 1s;
+  -ms-transition-duration: 1s;
+  -o-transition-duration: 1s;
+  transition-duration: 1s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-modal-mask-transparent {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  margin: 0;
+  opacity: 0;
+  filter: alpha(opacity=0);
+  background: #ffffff;
+}
+.d-animate-zoom-proxy {
+  position: absolute;
+  left: -99999px;
+  top: -99999px;
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+  box-sizing: border-box;
+  background-color: #ffffff;
+}
+@-webkit-keyframes loading-icon {
+  0% {
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+  100% {
+    -webkit-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-moz-keyframes loading-icon {
+  0% {
+    -moz-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+  100% {
+    -moz-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-o-keyframes loading-icon {
+  0% {
+    -o-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+  100% {
+    -o-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-ms-keyframes loading-icon {
+  0% {
+    -ms-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+  100% {
+    -ms-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@keyframes loading-icon {
+  0% {
+    transform: rotate(0deg);
+  }
+  100% {
+    transform: rotate(360deg);
+  }
+}
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/debugger.css b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/debugger.css
new file mode 100644
index 0000000..a582c00
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/debugger.css
@@ -0,0 +1,271 @@
+/*
+ * This file is part of Dorado 7.x (http://dorado7.bsdn.org).
+ * 
+ * Copyright (c) 2002-2012 BSTEK Corp. All rights reserved.
+ * 
+ * This file is dual-licensed under the AGPLv3 (http://www.gnu.org/licenses/agpl-3.0.html) 
+ * and BSDN commercial (http://www.bsdn.org/licenses) licenses.
+ * 
+ * If you are unsure which license is appropriate for your use, please contact the sales department
+ * at http://www.bstek.com/contact.
+ */
+.d-debugger-log-clear-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-debugger-log-clear-icon:before {
+  content: "\f12d";
+}
+.d-debugger-log-lock-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-debugger-log-lock-icon:before {
+  content: "\f023";
+}
+.d-debugger-log-debug-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #1ab394;
+}
+.d-debugger-log-debug-icon:before {
+  content: "\f188";
+}
+.d-debugger-log-info-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #1c84c6;
+}
+.d-debugger-log-info-icon:before {
+  content: "\f129";
+}
+.d-debugger-log-warn-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #f8ac59;
+}
+.d-debugger-log-warn-icon:before {
+  content: "\f071";
+}
+.d-debugger-log-error-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #ed5565;
+}
+.d-debugger-log-error-icon:before {
+  content: "\f00d";
+}
+.d-debugger-script-run-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-debugger-script-run-icon:before {
+  content: "\f04b";
+}
+.d-debugger-script-clear-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-debugger-script-clear-icon:before {
+  content: "\f12d";
+}
+.d-debugger-view-export-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-debugger-view-export-icon:before {
+  content: "\f0ad";
+}
+.d-debugger-view-refresh-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-debugger-view-refresh-icon:before {
+  content: "\f021";
+}
+.d-debugger-view-add-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-debugger-view-add-icon:before {
+  content: "\f067";
+}
+.d-debugger-view-delete-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-debugger-view-delete-icon:before {
+  content: "\f068";
+}
+.d-debugger-view-edit-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-debugger-view-edit-icon:before {
+  content: "\f040";
+}
+.d-debugger-hotkey-refresh-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-debugger-hotkey-refresh-icon:before {
+  content: "\f021";
+}
+.d-debugger-logger {
+  overflow: auto;
+}
+.d-debugger-logger .log {
+  border-bottom: 1px solid transparent;
+  line-height: 20px;
+  position: relative;
+}
+.d-debugger-logger .log .icon {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 20px;
+  height: 20px;
+}
+.d-debugger-logger .log .msg {
+  margin-left: 20px;
+}
+.d-debugger-logger .log-debug .icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #1ab394;
+}
+.d-debugger-logger .log-debug .icon:before {
+  content: "\f188";
+}
+.d-debugger-logger .log-info .icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #1c84c6;
+}
+.d-debugger-logger .log-info .icon:before {
+  content: "\f129";
+}
+.d-debugger-logger .log-warn .icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #f8ac59;
+}
+.d-debugger-logger .log-warn .icon:before {
+  content: "\f071";
+}
+.d-debugger-logger .log-error .icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #ed5565;
+}
+.d-debugger-logger .log-error .icon:before {
+  content: "\f00d";
+}
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/desktop-support.css b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/desktop-support.css
new file mode 100644
index 0000000..47f1033
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/desktop-support.css
@@ -0,0 +1,166 @@
+/*
+ * This file is part of Dorado 7.x (http://dorado7.bsdn.org).
+ * 
+ * Copyright (c) 2002-2012 BSTEK Corp. All rights reserved.
+ * 
+ * This file is dual-licensed under the AGPLv3 (http://www.gnu.org/licenses/agpl-3.0.html) 
+ * and BSDN commercial (http://www.bsdn.org/licenses) licenses.
+ * 
+ * If you are unsure which license is appropriate for your use, please contact the sales department
+ * at http://www.bstek.com/contact.
+ */
+.fa {
+  text-align: center;
+  font-size: 14px;
+}
+.d-modern-scroller .slider {
+  background: #333333;
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+}
+.d-modern-scroller-expand .track {
+  background: #333333;
+  opacity: 0.05;
+  filter: alpha(opacity=5);
+}
+.d-modern-scroller-expand .slider {
+  opacity: 0.25;
+  filter: alpha(opacity=25);
+}
+.d-task-group {
+  position: absolute;
+}
+.d-task-group-icon.d-daemon-task-indicator .icon > .spinner {
+  width: 24px;
+  height: 24px;
+  box-sizing: border-box;
+  border: solid 2px transparent;
+  border-top-color: #f5f5f5;
+  border-left-color: #f5f5f5;
+  border-radius: 50%;
+  -webkit-animation: loading-icon 400ms linear infinite;
+  -moz-animation: loading-icon 400ms linear infinite;
+  -ms-animation: loading-icon 400ms linear infinite;
+  -o-animation: loading-icon 400ms linear infinite;
+}
+.d-task-group-icon.d-main-task-indicator .icon > .spinner {
+  width: 32px;
+  height: 32px;
+  box-sizing: border-box;
+  border: solid 2px transparent;
+  border-top-color: #f5f5f5;
+  border-left-color: #f5f5f5;
+  border-radius: 50%;
+  -webkit-animation: loading-icon 400ms linear infinite;
+  -moz-animation: loading-icon 400ms linear infinite;
+  -ms-animation: loading-icon 400ms linear infinite;
+  -o-animation: loading-icon 400ms linear infinite;
+}
+.d-task-group-panel .task-list {
+  padding: 3px 0 3px 10px;
+  margin: 0;
+  list-style: none;
+}
+.d-task-group-panel .task-list .task-item {
+  width: 100%;
+}
+.d-task-group-panel .task-list .task-item .interval-span {
+  float: right;
+}
+.d-task-group-panel.d-daemon-task-indicator {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  color: #333333;
+  background-color: rgba(251, 251, 251, 0.8);
+  padding: 4px;
+  width: 200px;
+  margin: 0;
+  overflow: hidden;
+}
+.d-task-group-panel.d-daemon-task-indicator .icon {
+  display: none;
+}
+.d-task-group-panel.d-main-task-indicator {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  color: #333333;
+  background-color: rgba(255, 255, 255, 0.8);
+  padding: 8px 8px 8px 46px;
+  width: 300px;
+  margin: 0;
+  overflow: hidden;
+}
+.d-task-group-panel.d-main-task-indicator .icon {
+  position: absolute;
+  left: 12px;
+  top: 50%;
+  margin-top: -12px;
+}
+.d-task-group-panel.d-main-task-indicator .icon > .spinner {
+  width: 24px;
+  height: 24px;
+  box-sizing: border-box;
+  border: solid 2px transparent;
+  border-top-color: #f5f5f5;
+  border-left-color: #f5f5f5;
+  border-radius: 50%;
+  -webkit-animation: loading-icon 400ms linear infinite;
+  -moz-animation: loading-icon 400ms linear infinite;
+  -ms-animation: loading-icon 400ms linear infinite;
+  -o-animation: loading-icon 400ms linear infinite;
+}
+.d-dragging-indicator {
+  cursor: pointer;
+  position: absolute;
+}
+.d-dragging-indicator .icon {
+  width: 24px;
+  height: 24px;
+  cursor: pointer;
+  opacity: 0.8;
+  filter: alpha(opacity=80);
+}
+.d-dragging-indicator .accept-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  font-size: 200%;
+  color: #1ab394;
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+}
+.d-dragging-indicator .accept-icon:before {
+  content: "\f00c";
+}
+.d-dragging-indicator .denied-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  font-size: 200%;
+  color: #ed5565;
+}
+.d-dragging-indicator .denied-icon:before {
+  content: "\f05e";
+}
+.d-dragging-indicator .content-container {
+  position: absolute;
+  opacity: 0.8;
+  filter: alpha(opacity=80);
+}
+.d-dragging-indicator .default-content {
+  width: 50px;
+  height: 28px;
+  background-color: #ff8040;
+}
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/form-desktop.css b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/form-desktop.css
new file mode 100644
index 0000000..1742dd2
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/form-desktop.css
@@ -0,0 +1,1268 @@
+/*
+ * This file is part of Dorado 7.x (http://dorado7.bsdn.org).
+ * 
+ * Copyright (c) 2002-2012 BSTEK Corp. All rights reserved.
+ * 
+ * This file is dual-licensed under the AGPLv3 (http://www.gnu.org/licenses/agpl-3.0.html) 
+ * and BSDN commercial (http://www.bsdn.org/licenses) licenses.
+ * 
+ * If you are unsure which license is appropriate for your use, please contact the sales department
+ * at http://www.bstek.com/contact.
+ */
+/*
+ * This file is part of Dorado 7.x (http://dorado7.bsdn.org).
+ * 
+ * Copyright (c) 2002-2012 BSTEK Corp. All rights reserved.
+ * 
+ * This file is dual-licensed under the AGPLv3 (http://www.gnu.org/licenses/agpl-3.0.html) 
+ * and BSDN commercial (http://www.bsdn.org/licenses) licenses.
+ * 
+ * If you are unsure which license is appropriate for your use, please contact the sales department
+ * at http://www.bstek.com/contact.
+ */
+/* label */
+.d-label {
+  height: 30px;
+  line-height: 30px;
+}
+/* text-box */
+.d-text-box {
+  position: relative;
+  text-align: left;
+  height: 30px;
+  line-height: 30px;
+}
+.d-text-box > .editor-wrapper {
+  display: block;
+}
+.d-text-box > .editor-wrapper > .editor {
+  background: transparent;
+  white-space: nowrap;
+  border: 0;
+  margin: 0;
+  width: 100%;
+  line-height: 30px;
+  padding: 0;
+}
+.d-text-box .d-trigger {
+  position: absolute;
+  top: 0;
+  right: 0;
+  cursor: pointer;
+  overflow: hidden;
+  width: 28px;
+  height: 30px;
+  border-width: 0;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.d-text-box .d-trigger .d-icon {
+  width: 28px;
+  height: 28px;
+  line-height: 30px !important;
+}
+.d-text-box .blank-text {
+  font-style: italic;
+}
+.d-text-box .d-dirty-flag {
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  border-bottom-color: #1ab394;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+}
+.d-text-box {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  border: 1px #bfbfbf solid;
+  background-color: #ffffff;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-text-box > .editor-wrapper > .editor {
+  color: #333333;
+}
+.d-text-box > .editor-wrapper > .blank-text {
+  color: #999999 !important;
+}
+.d-text-box.d-text-box-hover {
+  border-color: #dddddd;
+  background-color: #ffffff;
+}
+.d-text-box.d-text-box-focused {
+  border-color: #dddddd;
+  background-color: #ffffff;
+}
+.d-text-box.d-text-box-warn {
+  border-color: #ecc463;
+  background-color: #faefd5;
+}
+.d-text-box.d-text-box-warn .d-dirty-flag {
+  border-bottom-color: #f8ac59;
+}
+.d-text-box.d-text-box-error {
+  border-color: #ff6267;
+  background-color: #ffe1e2;
+}
+.d-text-box.d-text-box-error .d-dirty-flag {
+  border-bottom-color: #ed5565;
+}
+.d-text-box.d-text-box-readonly {
+  border-color: #e6e6e6;
+  background: #ffffff;
+}
+.d-text-box .d-trigger {
+  color: #333333;
+  background-color: rgba(0, 0, 0, 0);
+}
+.d-text-box .d-trigger:hover {
+  color: #333333;
+  background-color: #f5f5f5;
+}
+.d-text-box .d-trigger:active {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  color: #333333;
+  background-color: #e1e1e1;
+}
+.d-text-box .d-trigger.d-opened {
+  color: #333333;
+  background-color: #e1e1e1;
+}
+/* text-area */
+.d-text-area {
+  height: 32px;
+}
+.d-text-area .textarea {
+  color: #333333;
+  background: transparent;
+  border-width: 0;
+  margin: 0;
+  padding: 0;
+  resize: none;
+}
+.d-text-area .blank-text {
+  font-style: italic;
+}
+.d-text-area .d-trigger-panel {
+  position: absolute;
+  top: 0;
+  right: 0;
+  width: 30px;
+  height: 100%;
+}
+.d-text-area .d-trigger-panel .d-trigger {
+  display: block;
+  border-width: 0;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.d-text-area .d-trigger-panel .d-trigger .d-icon {
+  margin-top: 0;
+  width: 28px;
+  height: 28px;
+  line-height: 30px !important;
+}
+.d-text-area .d-dirty-flag {
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  border-bottom-color: #1ab394;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+}
+.d-text-area {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  border: 1px #bfbfbf solid;
+  background-color: #ffffff;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-text-area .text-area {
+  color: #333333;
+}
+.d-text-area .blank-text {
+  color: #999999 !important;
+}
+.d-text-area.d-text-area-hover {
+  border-color: #dddddd;
+  background-color: #ffffff;
+}
+.d-text-area.d-text-area-focused {
+  border-color: #dddddd;
+  background-color: #ffffff;
+}
+.d-text-area.d-text-area-warn {
+  border-color: #ecc463;
+  background-color: #faefd5;
+}
+.d-text-area.d-text-area-error {
+  border-color: #ff6267;
+  background-color: #ffe1e2;
+}
+.d-text-area.d-text-area-readonly {
+  border-color: #e6e6e6;
+  background: #ffffff;
+}
+.d-text-area .d-trigger {
+  color: #333333;
+  background-color: rgba(0, 0, 0, 0);
+}
+.d-text-area .d-trigger:hover {
+  color: #333333;
+  background-color: #f5f5f5;
+}
+.d-text-area .d-trigger:active {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  color: #333333;
+  background-color: #e1e1e1;
+}
+.d-text-area .d-trigger.d-opened {
+  color: #333333;
+  background-color: #e1e1e1;
+}
+/* trigger */
+.d-trigger-icon-drop {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-drop:before {
+  content: "\e6a4";
+}
+.d-trigger-icon-drop:before {
+  content: "\e6a4";
+}
+.d-trigger-icon-search {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-search:before {
+  content: "\e617";
+}
+.d-trigger-icon-search:before {
+  content: "\e617";
+}
+.d-trigger-icon-date {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-date:before {
+  content: "\e6a4";
+}
+.d-trigger-icon-date:before {
+  content: "\e6a4";
+}
+.d-trigger-icon-custom {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-custom:before {
+  content: "\e6b0";
+}
+.d-trigger-icon-custom:before {
+  content: "\e6b0";
+}
+.d-trigger-icon-clear {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-clear:before {
+  content: "\e605";
+}
+.d-trigger-icon-clear:before {
+  content: "\e605";
+}
+.d-trigger-icon-filter {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-filter:before {
+  content: "\e61f";
+}
+.d-trigger-icon-filter:before {
+  content: "\e61f";
+}
+.d-trigger-icon-reset {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-reset:before {
+  content: "\e614";
+}
+.d-trigger-icon-reset:before {
+  content: "\e614";
+}
+/* checkbox */
+.d-checkbox {
+  position: relative;
+  display: inline-block;
+  white-space: nowrap;
+  overflow: hidden;
+  cursor: default;
+  min-width: 14px;
+  height: 14px;
+  padding: 8px 2px;
+}
+.d-checkbox .icon {
+  float: left;
+  width: 14px;
+  height: 14px;
+}
+.d-checkbox .caption {
+  position: relative;
+  top: -1px;
+  margin-left: 4px;
+  white-space: nowrap;
+  word-wrap: break-word;
+}
+.d-checkbox-dirty:after {
+  content: "";
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  border-bottom-color: #1ab394;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+}
+.d-checkbox-center {
+  float: none;
+  position: relative;
+  left: 50%;
+  margin-left: -7px;
+  padding: 0;
+}
+.d-checkbox-icononly {
+  width: 14px;
+  height: 14px;
+  padding: 0 0;
+}
+.d-checkbox-readonly .icon {
+  border-color: #e6e6e6;
+  background: #ffffff;
+}
+.d-checkbox:before {
+  content: "";
+  display: block;
+  position: absolute;
+  box-sizing: border-box;
+  width: 14px;
+  height: 14px;
+  border: 1px #bfbfbf solid;
+  background-color: #ffffff;
+}
+.d-checkbox .icon {
+  position: relative;
+  line-height: 14px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: transparent;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-checkbox .icon:before {
+  content: "\f00c";
+}
+.d-checkbox .icon:before {
+  content: "\f00c";
+}
+.d-checkbox .icon.checked {
+  color: #2a394f;
+}
+.d-checkbox .icon.halfchecked:before {
+  content: "";
+  display: block;
+  position: absolute;
+  margin: 4px;
+  width: 6px;
+  height: 6px;
+  background-color: rgba(42, 57, 79, 0.5);
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+}
+.d-checkbox:hover:before,
+.d-checkbox-focused:before {
+  border-color: #f5f5f5;
+  background-color: #ffffff;
+}
+.d-checkbox:hover .icon.checked,
+.d-checkbox-focused .icon.checked {
+  color: #2a394f;
+}
+.d-checkbox:hover .icon.halfchecked:before,
+.d-checkbox-focused .icon.halfchecked:before {
+  background-color: rgba(42, 57, 79, 0.5);
+}
+/* radio-group */
+.d-radiogroup {
+  overflow: visible;
+  padding: 0 3px;
+}
+.d-radiogroup:before {
+  content: "";
+  display: table;
+}
+.d-radiogroup:after {
+  content: "";
+  display: table;
+  clear: both;
+}
+.d-radiogroup .d-radio {
+  overflow: hidden;
+  cursor: default;
+  min-width: 14px;
+  height: 30px;
+  line-height: 30px;
+  white-space: nowrap;
+}
+.d-radiogroup .d-radio .icon {
+  float: left;
+  display: inline-block;
+  width: 14px;
+  height: 14px;
+  margin-top: 8px;
+}
+.d-radiogroup .d-radio .text {
+  margin-left: 4px;
+  margin-right: 7px;
+}
+.d-radiogroup .d-radio-readonly .icon {
+  border-color: #e6e6e6;
+  background: #ffffff;
+}
+.d-radiogroup-dirty {
+  position: relative;
+}
+.d-radiogroup-dirty:after {
+  content: "";
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  border-bottom-color: #1ab394;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+}
+.d-radiogroup-flow .d-radio {
+  float: left;
+}
+.d-radio .icon {
+  box-sizing: border-box;
+  -webkit-border-radius: 14px;
+  -moz-border-radius: 14px;
+  border-radius: 14px;
+  width: 14px;
+  height: 14px;
+  border: 1px #bfbfbf solid;
+  background-color: #ffffff;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-radio .icon:before {
+  content: "";
+  display: block;
+  position: absolute;
+  margin: 2px;
+  -webkit-border-radius: 8px;
+  -moz-border-radius: 8px;
+  border-radius: 8px;
+  width: 8px;
+  height: 8px;
+  background-color: #2a394f;
+  opacity: 0;
+  filter: alpha(opacity=0);
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+  -webkit-transition-property: opacity;
+  -moz-transition-property: opacity;
+  -ms-transition-property: opacity;
+  -o-transition-property: opacity;
+  transition-property: opacity;
+}
+.d-radio .icon.checked:before {
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.d-radio .text {
+  color: #333333;
+}
+.d-radio:hover:before,
+.d-radio-focused:before {
+  background-color: #ffffff;
+}
+.d-radio:hover .icon,
+.d-radio-focused .icon {
+  border-color: #f5f5f5;
+}
+.d-radio:hover .icon:before,
+.d-radio-focused .icon:before {
+  background-color: #2a394f;
+}
+/* data-message */
+.d-data-message .d-message {
+  height: 30px;
+  line-height: 30px;
+}
+.d-data-message .d-message .icon {
+  float: left;
+  width: 24px;
+  height: 30px;
+  background-repeat: no-repeat;
+  background-position: center center;
+}
+.d-data-message .d-message .icon-info {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #1c84c6;
+}
+.d-data-message .d-message .icon-info:before {
+  content: "\e607";
+}
+.d-data-message .d-message .icon-info:before {
+  content: "\e607";
+}
+.d-data-message .d-message .icon-ok {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #1ab394;
+}
+.d-data-message .d-message .icon-ok:before {
+  content: "\e604";
+}
+.d-data-message .d-message .icon-ok:before {
+  content: "\e604";
+}
+.d-data-message .d-message .icon-warn {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #f8ac59;
+}
+.d-data-message .d-message .icon-warn:before {
+  content: "\e609";
+}
+.d-data-message .d-message .icon-warn:before {
+  content: "\e609";
+}
+.d-data-message .d-message .icon-error {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #ed5565;
+}
+.d-data-message .d-message .icon-error:before {
+  content: "\e606";
+}
+.d-data-message .d-message .icon-error:before {
+  content: "\e606";
+}
+.d-data-message .d-message .icon-validating {
+  padding-left: 7px;
+  padding-top: 7px;
+}
+.d-data-message .d-message .icon-validating > .spinner {
+  width: 16px;
+  height: 16px;
+  box-sizing: border-box;
+  border: solid 2px transparent;
+  border-top-color: #f5f5f5;
+  border-left-color: #f5f5f5;
+  border-radius: 50%;
+  -webkit-animation: loading-icon 400ms linear infinite;
+  -moz-animation: loading-icon 400ms linear infinite;
+  -ms-animation: loading-icon 400ms linear infinite;
+  -o-animation: loading-icon 400ms linear infinite;
+}
+.d-data-message .d-message .icon-validating > .spinner {
+  width: 16px;
+  height: 16px;
+  box-sizing: border-box;
+  border: solid 2px transparent;
+  border-top-color: #f5f5f5;
+  border-left-color: #f5f5f5;
+  border-radius: 50%;
+  -webkit-animation: loading-icon 400ms linear infinite;
+  -moz-animation: loading-icon 400ms linear infinite;
+  -ms-animation: loading-icon 400ms linear infinite;
+  -o-animation: loading-icon 400ms linear infinite;
+}
+/* form-element */
+.d-form-element {
+  position: relative;
+  overflow: hidden;
+}
+.d-form-element .form-label {
+  height: 32px;
+  line-height: 32px;
+  padding-right: 12px;
+}
+.d-form-element .form-label-left {
+  float: left;
+  height: 100%;
+}
+.d-form-element .form-label-align-left {
+  text-align: left;
+}
+.d-form-element .form-label-align-center {
+  text-align: center;
+}
+.d-form-element .form-label-align-right {
+  text-align: right;
+}
+.d-form-element .form-label-required {
+  position: relative;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-form-element .form-label-required:before {
+  content: "\e683";
+  font-family: entypo;
+}
+.d-form-element .form-label-required:before {
+  content: "\e683";
+  font-family: entypo;
+}
+.d-form-element .form-label-required:before {
+  position: absolute;
+  right: 0;
+  color: #f8ac59;
+  -webkit-transform: scale(0.8);
+  -moz-transform: scale(0.8);
+  -ms-transform: scale(0.8);
+  -o-transform: scale(0.8);
+  transform: scale(0.8);
+}
+.d-form-element .form-content {
+  display: block;
+  zoom: 1;
+}
+.d-form-element .form-content-right {
+  height: 100%;
+}
+.d-form-element .form-content .form-editor {
+  height: 100%;
+  overflow: hidden;
+}
+.d-form-element .form-content .form-editor-left {
+  height: 100%;
+}
+.d-form-element .form-hint-right {
+  position: absolute;
+  top: 0;
+  right: 0;
+  height: 100%;
+}
+.d-form-element .form-hint-bottom {
+  width: 100%;
+}
+/* Spinner */
+.d-text-box .slots-container .text {
+  display: inline-block;
+  vertical-align: top;
+  line-height: 30px;
+  height: 30px;
+}
+.d-text-box .slots-container .slot {
+  display: inline-block;
+  line-height: 30px;
+  height: 30px;
+  cursor: pointer;
+  padding: 0 1px;
+}
+.d-text-box .d-spinner-trigger {
+  width: 28px;
+  height: 30px;
+}
+.d-text-box .up-button {
+  width: 28px;
+  height: 15px;
+  line-height: 15px;
+  font-size: 1%;
+  cursor: pointer;
+}
+.d-text-box .up-button .icon {
+  width: 100%;
+  height: 100%;
+  line-height: 15px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-text-box .up-button .icon:before {
+  content: "\e602";
+}
+.d-text-box .up-button .icon:before {
+  content: "\e602";
+}
+.d-text-box .down-button {
+  width: 28px;
+  height: 15px;
+  line-height: 15px;
+  font-size: 1%;
+  cursor: pointer;
+}
+.d-text-box .down-button .icon {
+  width: 100%;
+  height: 100%;
+  line-height: 15px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-text-box .down-button .icon:before {
+  content: "\e601";
+}
+.d-text-box .down-button .icon:before {
+  content: "\e601";
+}
+.d-text-box .slots-container .slot-selected {
+  background-color: #328efd;
+  background-image: url(form/spinner-selected-slot-bg.gif);
+  background-repeat: repeat-x;
+  background-position: 0 2px;
+  color: #ffffff;
+}
+.d-text-box .d-spinner-trigger .up-button .icon,
+.d-text-box .d-spinner-trigger .down-button .icon {
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+  color: #333333;
+  background-color: rgba(0, 0, 0, 0);
+}
+.d-text-box .d-spinner-trigger .up-button .icon:hover,
+.d-text-box .d-spinner-trigger .down-button .icon:hover {
+  color: #333333;
+  background-color: #f5f5f5;
+}
+.d-text-box .d-spinner-trigger .up-button .icon:active,
+.d-text-box .d-spinner-trigger .down-button .icon:active {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  color: #333333;
+  background-color: #e1e1e1;
+}
+/* drop-down */
+.d-drop-down-box {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  border: 4px #ffffff solid;
+  background-color: #ffffff;
+}
+/* month-picker */
+.d-month-picker {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  table-layout: fixed;
+  color: #333333;
+  background-color: #ffffff;
+}
+.d-month-picker .number-row td {
+  text-align: center;
+  cursor: pointer;
+  line-height: 20px;
+  padding: 1px;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-month-picker .number-row td:hover {
+  background-color: #f5f5f5;
+}
+.d-month-picker .number-row td.selected {
+  color: #333333;
+  background-color: #f5f5f5;
+}
+/* year-picker */
+.d-year-picker {
+  table-layout: fixed;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  color: #333333;
+  background-color: #ffffff;
+}
+.d-year-picker .btn-row {
+  height: 20px;
+}
+.d-year-picker .prev-year-button {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-year-picker .prev-year-button:before {
+  content: "\e6a3";
+}
+.d-year-picker .prev-year-button:before {
+  content: "\e6a3";
+}
+.d-year-picker .next-year-button {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-year-picker .next-year-button:before {
+  content: "\e6a6";
+}
+.d-year-picker .next-year-button:before {
+  content: "\e6a6";
+}
+.d-year-picker .number-row td {
+  text-align: center;
+  cursor: pointer;
+  line-height: 20px;
+  padding: 1px;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-year-picker .number-row td:hover {
+  background-color: #f5f5f5;
+}
+.d-year-picker .number-row td.selected {
+  color: #333333;
+  background-color: #f5f5f5;
+}
+/* year-month-picker */
+.d-year-month-picker td {
+  height: 20px;
+}
+.d-year-month-picker .month-table {
+  width: 49%;
+  table-layout: fixed;
+}
+.d-year-month-picker .month-table .number-row td {
+  text-align: center;
+  cursor: pointer;
+  line-height: 20px;
+  padding: 1px;
+}
+.d-year-month-picker .year-table {
+  width: 49%;
+  float: right;
+  table-layout: fixed;
+}
+.d-year-month-picker .year-table .btn-row {
+  height: 20px;
+}
+.d-year-month-picker .year-table .number-row td {
+  text-align: center;
+  cursor: pointer;
+  line-height: 20px;
+  padding: 1px;
+}
+.d-year-month-picker .btns-pane {
+  float: left;
+  clear: left;
+  bottom: 0;
+  text-align: center;
+  width: 100%;
+}
+.d-year-month-picker .btns-pane .d-button {
+  margin: 4px 5px 4px 0;
+}
+.d-year-month-picker {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  color: #333333;
+  background-color: #ffffff;
+}
+.d-year-month-picker .year-table {
+  border-left: 1px solid #ffffff;
+}
+/* date-picker */
+.d-date-picker {
+  position: relative;
+  border-collapse: collapse;
+}
+.d-date-picker .year-month-block {
+  text-align: center;
+  width: 100%;
+  height: 26px;
+  padding-top: 3px;
+}
+.d-date-picker .year-month-block .pre-button-div {
+  float: left;
+  padding-left: 4px;
+  margin-right: -40px;
+}
+.d-date-picker .year-month-block .next-button-div {
+  float: right;
+  padding-right: 4px;
+  margin-left: -40px;
+}
+.d-date-picker .year-month-block .pre-year-button,
+.d-date-picker .year-month-block .next-year-button {
+  position: relative;
+  left: -5px;
+  letter-spacing: -10px;
+}
+.d-date-picker .year-month-block .pre-year-button {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-date-picker .year-month-block .pre-year-button:before {
+  content: "\e6a3\e6a3";
+}
+.d-date-picker .year-month-block .pre-year-button:before {
+  content: "\e6a3\e6a3";
+}
+.d-date-picker .year-month-block .pre-month-button {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-date-picker .year-month-block .pre-month-button:before {
+  content: "\e6a3";
+}
+.d-date-picker .year-month-block .pre-month-button:before {
+  content: "\e6a3";
+}
+.d-date-picker .year-month-block .next-month-button {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-date-picker .year-month-block .next-month-button:before {
+  content: "\e6a6";
+}
+.d-date-picker .year-month-block .next-month-button:before {
+  content: "\e6a6";
+}
+.d-date-picker .year-month-block .next-year-button {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-date-picker .year-month-block .next-year-button:before {
+  content: "\e6a6\e6a6";
+}
+.d-date-picker .year-month-block .next-year-button:before {
+  content: "\e6a6\e6a6";
+}
+.d-date-picker .year-month-block .year-month-label {
+  width: auto;
+  cursor: pointer;
+  text-align: center;
+  height: 26px;
+  line-height: 26px;
+  margin: 0 44px;
+}
+.d-date-picker .date-header {
+  table-layout: fixed;
+  border-collapse: collapse;
+  text-align: center;
+  cursor: pointer;
+  width: 100%;
+  height: 18px;
+}
+.d-date-picker .date-header td {
+  height: 18px;
+  text-align: center;
+}
+.d-date-picker .date-block {
+  position: relative;
+  overflow: hidden;
+  width: 100%;
+  height: 108px;
+  border-width: 0;
+}
+.d-date-picker .date-block .date-table {
+  position: absolute;
+  left: 0;
+  top: 0;
+  table-layout: fixed;
+  border-collapse: collapse;
+  text-align: center;
+  cursor: pointer;
+  width: 200%;
+}
+.d-date-picker .date-block .date-table td {
+  height: 18px;
+  text-align: center;
+}
+.d-date-picker .date-block .date-table td.unselectable {
+  cursor: default;
+}
+.d-date-picker .spinner-block {
+  position: absolute;
+  height: 30px;
+  left: 5px;
+  bottom: 0;
+}
+.d-date-picker .spinner-block .d-text-box {
+  margin-top: 5px;
+}
+.d-date-picker .button-block {
+  float: right;
+  height: 30px;
+}
+.d-date-picker .button-block .d-button {
+  cursor: pointer;
+  margin: 4px 5px 4px 0;
+}
+.d-date-picker .d-year-month-picker {
+  position: absolute;
+  left: 0;
+  top: 0;
+  border: 0;
+}
+.d-date-picker {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  background-color: #ffffff;
+}
+.d-date-picker .year-month-block {
+  background-color: #ffffff;
+}
+.d-date-picker .year-month-block .year-month-label {
+  font-size: 110%;
+  color: #333333;
+  font-weight: bold;
+}
+.d-date-picker .date-header {
+  color: #333333;
+  background-color: #ffffff;
+  border-bottom: 1px solid rgba(28, 132, 198, 0.5);
+}
+.d-date-picker .date-block .date-table td {
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-date-picker .date-block .date-table td:hover {
+  background-color: #f5f5f5;
+}
+.d-date-picker .date-block .date-table td.selected-date {
+  color: #333333;
+  background-color: #f5f5f5;
+}
+.d-date-picker .date-block .date-table td.pre-month,
+.d-date-picker .date-block .date-table td.next-month {
+  color: #d9d9d9;
+}
+.d-date-picker .date-block .date-table td.unselectable {
+  color: #d9d9d9;
+}
+.d-drop-down-box .d-date-picker,
+.d-drop-down-box .d-date-picker .d-year-month-picker {
+  width: 100%;
+}
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/form.css b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/form.css
new file mode 100644
index 0000000..9d40829
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/form.css
@@ -0,0 +1,737 @@
+/*
+ * This file is part of Dorado 7.x (http://dorado7.bsdn.org).
+ * 
+ * Copyright (c) 2002-2012 BSTEK Corp. All rights reserved.
+ * 
+ * This file is dual-licensed under the AGPLv3 (http://www.gnu.org/licenses/agpl-3.0.html) 
+ * and BSDN commercial (http://www.bsdn.org/licenses) licenses.
+ * 
+ * If you are unsure which license is appropriate for your use, please contact the sales department
+ * at http://www.bstek.com/contact.
+ */
+/* label */
+.d-label {
+  height: 30px;
+  line-height: 30px;
+}
+/* text-box */
+.d-text-box {
+  position: relative;
+  text-align: left;
+  height: 28px;
+  line-height: 28px;
+}
+.d-text-box > .editor-wrapper {
+  display: block;
+}
+.d-text-box > .editor-wrapper > .editor {
+  background: transparent;
+  white-space: nowrap;
+  border: 0;
+  margin: 0;
+  width: 100%;
+  line-height: 28px;
+  padding: 0;
+}
+.d-text-box .d-trigger {
+  position: absolute;
+  top: 0;
+  right: 0;
+  cursor: pointer;
+  overflow: hidden;
+  width: 28px;
+  height: 28px;
+  border-width: 0;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.d-text-box .d-trigger .d-icon {
+  width: 28px;
+  height: 28px;
+  line-height: 28px !important;
+}
+.d-text-box .blank-text {
+  font-style: italic;
+}
+.d-text-box .d-dirty-flag {
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  border-bottom-color: #1ab394;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+}
+.d-text-box {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  border: 1px #bfbfbf solid;
+  background-color: #ffffff;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-text-box > .editor-wrapper > .editor {
+  color: #333333;
+}
+.d-text-box > .editor-wrapper > .blank-text {
+  color: #999999 !important;
+}
+.d-text-box.d-text-box-hover {
+  border-color: #dddddd;
+  background-color: #ffffff;
+}
+.d-text-box.d-text-box-focused {
+  border-color: #dddddd;
+  background-color: #ffffff;
+}
+.d-text-box.d-text-box-warn {
+  border-color: #ecc463;
+  background-color: #faefd5;
+}
+.d-text-box.d-text-box-warn .d-dirty-flag {
+  border-bottom-color: #f8ac59;
+}
+.d-text-box.d-text-box-error {
+  border-color: #ff6267;
+  background-color: #ffe1e2;
+}
+.d-text-box.d-text-box-error .d-dirty-flag {
+  border-bottom-color: #ed5565;
+}
+.d-text-box.d-text-box-readonly {
+  border-color: #e6e6e6;
+  background: #ffffff;
+}
+.d-text-box .d-trigger {
+  color: #333333;
+  background-color: rgba(0, 0, 0, 0);
+}
+.d-text-box .d-trigger:hover {
+  color: #333333;
+  background-color: #f5f5f5;
+}
+.d-text-box .d-trigger:active {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  color: #333333;
+  background-color: #e1e1e1;
+}
+.d-text-box .d-trigger.d-opened {
+  color: #333333;
+  background-color: #e1e1e1;
+}
+/* text-area */
+.d-text-area {
+  height: 32px;
+}
+.d-text-area .textarea {
+  color: #333333;
+  background: transparent;
+  border-width: 0;
+  margin: 0;
+  padding: 0;
+  resize: none;
+}
+.d-text-area .blank-text {
+  font-style: italic;
+}
+.d-text-area .d-trigger-panel {
+  position: absolute;
+  top: 0;
+  right: 0;
+  width: 30px;
+  height: 100%;
+}
+.d-text-area .d-trigger-panel .d-trigger {
+  display: block;
+  border-width: 0;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.d-text-area .d-trigger-panel .d-trigger .d-icon {
+  margin-top: 0;
+  width: 28px;
+  height: 28px;
+  line-height: 28px !important;
+}
+.d-text-area .d-dirty-flag {
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  border-bottom-color: #1ab394;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+}
+.d-text-area {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  border: 1px #bfbfbf solid;
+  background-color: #ffffff;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-text-area .text-area {
+  color: #333333;
+}
+.d-text-area .blank-text {
+  color: #999999 !important;
+}
+.d-text-area.d-text-area-hover {
+  border-color: #dddddd;
+  background-color: #ffffff;
+}
+.d-text-area.d-text-area-focused {
+  border-color: #dddddd;
+  background-color: #ffffff;
+}
+.d-text-area.d-text-area-warn {
+  border-color: #ecc463;
+  background-color: #faefd5;
+}
+.d-text-area.d-text-area-error {
+  border-color: #ff6267;
+  background-color: #ffe1e2;
+}
+.d-text-area.d-text-area-readonly {
+  border-color: #e6e6e6;
+  background: #ffffff;
+}
+.d-text-area .d-trigger {
+  color: #333333;
+  background-color: rgba(0, 0, 0, 0);
+}
+.d-text-area .d-trigger:hover {
+  color: #333333;
+  background-color: #f5f5f5;
+}
+.d-text-area .d-trigger:active {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  color: #333333;
+  background-color: #e1e1e1;
+}
+.d-text-area .d-trigger.d-opened {
+  color: #333333;
+  background-color: #e1e1e1;
+}
+/* trigger */
+.d-trigger-icon-drop {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-drop:before {
+  content: "\e6a4";
+}
+.d-trigger-icon-search {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-search:before {
+  content: "\e617";
+}
+.d-trigger-icon-date {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-date:before {
+  content: "\e6a4";
+}
+.d-trigger-icon-custom {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-custom:before {
+  content: "\e6b0";
+}
+.d-trigger-icon-clear {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-clear:before {
+  content: "\e605";
+}
+.d-trigger-icon-filter {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-filter:before {
+  content: "\e61f";
+}
+.d-trigger-icon-reset {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-reset:before {
+  content: "\e614";
+}
+/* checkbox */
+.d-checkbox {
+  position: relative;
+  display: inline-block;
+  white-space: nowrap;
+  overflow: hidden;
+  cursor: default;
+  min-width: 14px;
+  height: 14px;
+  padding: 8px 2px;
+}
+.d-checkbox .icon {
+  float: left;
+  width: 14px;
+  height: 14px;
+}
+.d-checkbox .caption {
+  position: relative;
+  top: -1px;
+  margin-left: 4px;
+  white-space: nowrap;
+  word-wrap: break-word;
+}
+.d-checkbox-dirty:after {
+  content: "";
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  border-bottom-color: #1ab394;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+}
+.d-checkbox-center {
+  float: none;
+  position: relative;
+  left: 50%;
+  margin-left: -7px;
+  padding: 0;
+}
+.d-checkbox-icononly {
+  width: 14px;
+  height: 14px;
+  padding: 0 0;
+}
+.d-checkbox-readonly .icon {
+  border-color: #e6e6e6;
+  background: #ffffff;
+}
+.d-checkbox:before {
+  content: "";
+  display: block;
+  position: absolute;
+  box-sizing: border-box;
+  width: 14px;
+  height: 14px;
+  border: 1px #bfbfbf solid;
+  background-color: #ffffff;
+}
+.d-checkbox .icon {
+  position: relative;
+  line-height: 14px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: transparent;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-checkbox .icon:before {
+  content: "\f00c";
+}
+.d-checkbox .icon.checked {
+  color: #2a394f;
+}
+.d-checkbox .icon.halfchecked:before {
+  content: "";
+  display: block;
+  position: absolute;
+  margin: 4px;
+  width: 6px;
+  height: 6px;
+  background-color: rgba(42, 57, 79, 0.5);
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+}
+.d-checkbox:hover:before,
+.d-checkbox-focused:before {
+  border-color: #f5f5f5;
+  background-color: #ffffff;
+}
+.d-checkbox:hover .icon.checked,
+.d-checkbox-focused .icon.checked {
+  color: #2a394f;
+}
+.d-checkbox:hover .icon.halfchecked:before,
+.d-checkbox-focused .icon.halfchecked:before {
+  background-color: rgba(42, 57, 79, 0.5);
+}
+/* radio-group */
+.d-radiogroup {
+  overflow: visible;
+  padding: 0 3px;
+}
+.d-radiogroup:before {
+  content: "";
+  display: table;
+}
+.d-radiogroup:after {
+  content: "";
+  display: table;
+  clear: both;
+}
+.d-radiogroup .d-radio {
+  overflow: hidden;
+  cursor: default;
+  min-width: 14px;
+  height: 30px;
+  line-height: 30px;
+  white-space: nowrap;
+}
+.d-radiogroup .d-radio .icon {
+  float: left;
+  display: inline-block;
+  width: 14px;
+  height: 14px;
+  margin-top: 8px;
+}
+.d-radiogroup .d-radio .text {
+  margin-left: 4px;
+  margin-right: 7px;
+}
+.d-radiogroup .d-radio-readonly .icon {
+  border-color: #e6e6e6;
+  background: #ffffff;
+}
+.d-radiogroup-dirty {
+  position: relative;
+}
+.d-radiogroup-dirty:after {
+  content: "";
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  border-bottom-color: #1ab394;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+}
+.d-radiogroup-flow .d-radio {
+  float: left;
+}
+.d-radio .icon {
+  box-sizing: border-box;
+  -webkit-border-radius: 14px;
+  -moz-border-radius: 14px;
+  border-radius: 14px;
+  width: 14px;
+  height: 14px;
+  border: 1px #bfbfbf solid;
+  background-color: #ffffff;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-radio .icon:before {
+  content: "";
+  display: block;
+  position: absolute;
+  margin: 2px;
+  -webkit-border-radius: 8px;
+  -moz-border-radius: 8px;
+  border-radius: 8px;
+  width: 8px;
+  height: 8px;
+  background-color: #2a394f;
+  opacity: 0;
+  filter: alpha(opacity=0);
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+  -webkit-transition-property: opacity;
+  -moz-transition-property: opacity;
+  -ms-transition-property: opacity;
+  -o-transition-property: opacity;
+  transition-property: opacity;
+}
+.d-radio .icon.checked:before {
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.d-radio .text {
+  color: #333333;
+}
+.d-radio:hover:before,
+.d-radio-focused:before {
+  background-color: #ffffff;
+}
+.d-radio:hover .icon,
+.d-radio-focused .icon {
+  border-color: #f5f5f5;
+}
+.d-radio:hover .icon:before,
+.d-radio-focused .icon:before {
+  background-color: #2a394f;
+}
+/* data-message */
+.d-data-message .d-message {
+  height: 30px;
+  line-height: 30px;
+}
+.d-data-message .d-message .icon {
+  float: left;
+  width: 24px;
+  height: 30px;
+  background-repeat: no-repeat;
+  background-position: center center;
+}
+.d-data-message .d-message .icon-info {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #1c84c6;
+}
+.d-data-message .d-message .icon-info:before {
+  content: "\e607";
+}
+.d-data-message .d-message .icon-ok {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #1ab394;
+}
+.d-data-message .d-message .icon-ok:before {
+  content: "\e604";
+}
+.d-data-message .d-message .icon-warn {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #f8ac59;
+}
+.d-data-message .d-message .icon-warn:before {
+  content: "\e609";
+}
+.d-data-message .d-message .icon-error {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #ed5565;
+}
+.d-data-message .d-message .icon-error:before {
+  content: "\e606";
+}
+.d-data-message .d-message .icon-validating {
+  padding-left: 7px;
+  padding-top: 7px;
+}
+.d-data-message .d-message .icon-validating > .spinner {
+  width: 16px;
+  height: 16px;
+  box-sizing: border-box;
+  border: solid 2px transparent;
+  border-top-color: #f5f5f5;
+  border-left-color: #f5f5f5;
+  border-radius: 50%;
+  -webkit-animation: loading-icon 400ms linear infinite;
+  -moz-animation: loading-icon 400ms linear infinite;
+  -ms-animation: loading-icon 400ms linear infinite;
+  -o-animation: loading-icon 400ms linear infinite;
+}
+/* form-element */
+.d-form-element {
+  position: relative;
+  overflow: hidden;
+}
+.d-form-element .form-label {
+  height: 32px;
+  line-height: 32px;
+  padding-right: 12px;
+}
+.d-form-element .form-label-left {
+  float: left;
+  height: 100%;
+}
+.d-form-element .form-label-align-left {
+  text-align: left;
+}
+.d-form-element .form-label-align-center {
+  text-align: center;
+}
+.d-form-element .form-label-align-right {
+  text-align: right;
+}
+.d-form-element .form-label-required {
+  position: relative;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-form-element .form-label-required:before {
+  content: "\e683";
+  font-family: entypo;
+}
+.d-form-element .form-label-required:before {
+  position: absolute;
+  right: 0;
+  color: #f8ac59;
+  -webkit-transform: scale(0.8);
+  -moz-transform: scale(0.8);
+  -ms-transform: scale(0.8);
+  -o-transform: scale(0.8);
+  transform: scale(0.8);
+}
+.d-form-element .form-content {
+  display: block;
+  zoom: 1;
+}
+.d-form-element .form-content-right {
+  height: 100%;
+}
+.d-form-element .form-content .form-editor {
+  height: 100%;
+  overflow: hidden;
+}
+.d-form-element .form-content .form-editor-left {
+  height: 100%;
+}
+.d-form-element .form-hint-right {
+  position: absolute;
+  top: 0;
+  right: 0;
+  height: 100%;
+}
+.d-form-element .form-hint-bottom {
+  width: 100%;
+}
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/form/spinner-selected-slot-bg.gif b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/form/spinner-selected-slot-bg.gif
new file mode 100644
index 0000000..edb93f6
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/form/spinner-selected-slot-bg.gif
Binary files differ
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/grid.css b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/grid.css
new file mode 100644
index 0000000..2a78de0
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/grid.css
@@ -0,0 +1,710 @@
+/*
+ * This file is part of Dorado 7.x (http://dorado7.bsdn.org).
+ * 
+ * Copyright (c) 2002-2012 BSTEK Corp. All rights reserved.
+ * 
+ * This file is dual-licensed under the AGPLv3 (http://www.gnu.org/licenses/agpl-3.0.html) 
+ * and BSDN commercial (http://www.bsdn.org/licenses) licenses.
+ * 
+ * If you are unsure which license is appropriate for your use, please contact the sales department
+ * at http://www.bstek.com/contact.
+ */
+.d-grid {
+  position: relative;
+}
+.d-grid .header-table .header {
+  white-space: nowrap;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-grid .header-table .header .caption {
+  margin-left: 4px;
+}
+.d-grid .header-table .header .caption-required {
+  padding-left: 7px;
+  position: relative;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-grid .header-table .header .caption-required:before {
+  content: "\e683";
+  font-family: entypo;
+}
+.d-grid .header-table .header .caption-required:before {
+  position: absolute;
+  left: -7px;
+  top: 2px;
+  color: #f8ac59;
+  -webkit-transform: scale(0.7);
+  -moz-transform: scale(0.7);
+  -ms-transform: scale(0.7);
+  -o-transform: scale(0.7);
+  transform: scale(0.7);
+}
+.d-grid .header-table .sorted-header .sort-state {
+  display: inline-block;
+  margin-left: 2px;
+  width: 8px;
+  height: 8px;
+}
+.d-grid .header-table .sorted-header .sort-state-asc {
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-grid .header-table .sorted-header .sort-state-asc:before {
+  content: "\e6a1";
+  font-family: entypo;
+}
+.d-grid .header-table .sorted-header .sort-state-desc {
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-grid .header-table .sorted-header .sort-state-desc:before {
+  content: "\e6a0";
+  font-family: entypo;
+}
+.d-grid .header-table .header-option-button {
+  cursor: pointer;
+  width: 14px;
+}
+.d-grid .filter-bar .filter-bar-cell {
+  height: 30px;
+}
+.d-grid .filter-bar .filter-bar-cell .d-text-box {
+  border-width: 0;
+}
+.d-grid .data-table {
+  line-height: 30px;
+  width: 100%;
+}
+.d-grid .data-table .dummy-row {
+  background: #efefef;
+}
+.d-grid .data-table .group-header-row .cell {
+  font-size: 110%;
+  font-weight: bold;
+  height: 30px;
+  padding-left: 6px;
+}
+.d-grid .data-table .cell.wrappable {
+  white-space: normal;
+  word-wrap: break-word;
+  word-break: normal;
+}
+.d-grid .data-table .indicator {
+  height: 20px;
+}
+.d-grid .data-table .indicator-new {
+  line-height: 26px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-grid .data-table .indicator-new:before {
+  content: "\e60c";
+}
+.d-grid .data-table .indicator-modified {
+  line-height: 26px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-grid .data-table .indicator-modified:before {
+  content: "\e60a";
+}
+.d-grid .data-table .indicator-warn {
+  line-height: 26px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-grid .data-table .indicator-warn:before {
+  content: "\e609";
+}
+.d-grid .data-table .indicator-error {
+  line-height: 26px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-grid .data-table .indicator-error:before {
+  content: "\e606";
+}
+.d-grid .data-table .d-checkbox-icononly {
+  margin-top: 6px;
+}
+.d-grid .cell {
+  padding-left: 2px;
+  padding-right: 2px;
+  /* do not modify, may cause problems in safari/chrome */
+
+  white-space: nowrap;
+}
+.d-grid .footer-table .footer {
+  white-space: nowrap;
+}
+.d-grid .preparing-area {
+  background-color: #efefef;
+}
+.d-grid .float-filter-panel {
+  position: absolute;
+  left: 20px;
+}
+.d-grid .float-filter-panel .filter-button .d-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-grid .float-filter-panel .filter-button .d-icon:before {
+  content: "\f0b0";
+}
+.d-grid .float-filter-panel .reset-button .d-icon {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-grid .float-filter-panel .reset-button .d-icon:before {
+  content: "\f12d";
+}
+.d-grid-col-drag-top {
+  position: relative;
+  width: 9px;
+  height: 9px;
+}
+.d-grid-col-drag-top:before {
+  content: "";
+  width: 1px;
+  height: 0;
+  border: 5px solid transparent;
+  border-top-color: #ff8040;
+  position: absolute;
+  top: 3px;
+  left: -1px;
+}
+.d-grid-col-drag-bottom {
+  position: relative;
+  width: 9px;
+  height: 9px;
+}
+.d-grid-col-drag-bottom:before {
+  content: "";
+  width: 1px;
+  height: 0;
+  border: 5px solid transparent;
+  border-bottom-color: #ff8040;
+  position: absolute;
+  top: -4px;
+  left: -1px;
+}
+.d-grid-col-drop-indicator {
+  background-color: #ff8040;
+}
+.d-grid-col-drag-helper {
+  background-color: #e6e6e6;
+  border: 1px rgba(0, 0, 0, 0) solid;
+}
+.d-grid-col-resize-handler {
+  background-color: #ffffff;
+  cursor: e-resize;
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+}
+.d-grid-col-resize-helper {
+  border-left: 1px black solid;
+  border-right: 1px black solid;
+  background-color: grey;
+  opacity: 0.25;
+  filter: alpha(opacity=25);
+}
+.d-grid-col-drag-helper {
+  cursor: pointer;
+  opacity: 0.8;
+  filter: alpha(opacity=80);
+}
+.d-grid-cell-editor {
+  height: 30px !important;
+}
+.d-grid-cell-editor .d-text-box {
+  height: 28px;
+  line-height: 28px;
+}
+.d-grid-menu-sort-asc {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-grid-menu-sort-asc:before {
+  content: "\f160";
+}
+.d-grid-menu-sort-desc {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-grid-menu-sort-desc:before {
+  content: "\f161";
+}
+.d-grid-menu-fix {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-grid-menu-fix:before {
+  content: "\f08d";
+}
+.d-grid-menu-group {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-grid-menu-group:before {
+  content: "\f03c";
+}
+.d-grid-menu-column {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  -webkit-transform: rotate(90deg);
+  -moz-transform: rotate(90deg);
+  -ms-transform: rotate(90deg);
+  -o-transform: rotate(90deg);
+  transform: rotate(90deg);
+  position: relative;
+  top: 3px;
+}
+.d-grid-menu-column:before {
+  content: "\f0c9";
+}
+.d-grid {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  background-color: #f7f7f7;
+  color: #333333;
+}
+.d-grid .header-table .header {
+  color: #333333;
+  background-color: #d9d9d9;
+  border-left: 1px transparent solid;
+  border-right: 1px #f3f3f3 solid;
+  border-bottom: 1px #f3f3f3 solid;
+}
+.d-grid .header-table .hover-header,
+.d-grid .header-table .menu-open-header {
+  background-color: #e6e6e6;
+}
+.d-grid .header-table .header-option-button {
+  border-left: 1px #c0c0c0 solid;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+}
+.d-grid .header-table .header-option-button:before {
+  content: "\e601";
+  font-family: entypo;
+}
+.d-grid .header-table .header-option-button:before {
+  position: absolute;
+  right: 1px;
+  bottom: 2px;
+}
+.d-grid .header-table .indicator .cell {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  font-size: 12px;
+}
+.d-grid .header-table .indicator .cell:before {
+  content: "\e633";
+}
+.d-grid .header-table .row-num .cell {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  -webkit-transform: rotate(90deg);
+  -moz-transform: rotate(90deg);
+  -ms-transform: rotate(90deg);
+  -o-transform: rotate(90deg);
+  transform: rotate(90deg);
+  font-size: 12px;
+}
+.d-grid .header-table .row-num .cell:before {
+  content: "\e6b0";
+}
+.d-grid .header-table .row-selector .cell {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  font-size: 12px;
+}
+.d-grid .header-table .row-selector .cell:before {
+  content: "\e604";
+}
+.d-grid .filter-bar {
+  background-color: #e3e3e3;
+}
+.d-grid .data-table .row {
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+  background: #ffffff;
+}
+.d-grid .data-table .row td {
+  border-left: 1px transparent solid;
+  border-right: 1px rgba(0, 0, 0, 0) solid;
+  border-bottom: 1px rgba(0, 0, 0, 0) solid;
+}
+.d-grid .data-table .row .current-cell {
+  background-color: #ffffff;
+}
+.d-grid .data-table .odd-row {
+  background: #ffffff;
+}
+.d-grid .data-table .hover-row {
+  background: #f5f5f5;
+}
+.d-grid .data-table .hover-row td {
+  border-top-color: rgba(0, 0, 0, 0);
+}
+.d-grid .data-table .selected-row {
+  background: #ffffff;
+}
+.d-grid .data-table .current-row {
+  background-color: #f5f5f5;
+}
+.d-grid .data-table .selected-row,
+.d-grid .data-table .current-row {
+  color: #333333;
+}
+.d-grid .data-table .selected-row .node-button:hover,
+.d-grid .data-table .current-row .node-button:hover {
+  border-color: #333333;
+}
+.d-grid .data-table .selected-row .node-button:active,
+.d-grid .data-table .current-row .node-button:active {
+  border-color: #333333;
+  background: rgba(51, 51, 51, 0.1);
+}
+.d-grid .data-table .selected-row .node-button.button-expanding > .spinner,
+.d-grid .data-table .current-row .node-button.button-expanding > .spinner {
+  width: 16px;
+  height: 16px;
+  box-sizing: border-box;
+  border: solid 2px transparent;
+  border-top-color: #333333;
+  border-left-color: #333333;
+  border-radius: 50%;
+  -webkit-animation: loading-icon 400ms linear infinite;
+  -moz-animation: loading-icon 400ms linear infinite;
+  -ms-animation: loading-icon 400ms linear infinite;
+  -o-animation: loading-icon 400ms linear infinite;
+}
+.d-grid .data-table .drag-over-row {
+  background-color: #f5f5f5;
+}
+.d-grid .data-table .group-header-row .cell {
+  border-bottom: 2px #f5f5f5 solid;
+}
+.d-grid .data-table .group-footer-row {
+  color: #f5f5f5;
+}
+.d-grid .data-table .cell-flag-dirty {
+  position: relative;
+}
+.d-grid .data-table .cell-flag-dirty:before {
+  content: "";
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+  border-bottom-color: #1ab394;
+}
+.d-grid .data-table .cell-flag-warn {
+  position: relative;
+}
+.d-grid .data-table .cell-flag-warn:before {
+  content: "";
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+  border-bottom-color: #f8ac59;
+}
+.d-grid .data-table .cell-flag-error {
+  position: relative;
+}
+.d-grid .data-table .cell-flag-error:before {
+  content: "";
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+  border-bottom-color: #ed5565;
+}
+.d-grid .data-table .indicator-new {
+  color: #1ab394;
+}
+.d-grid .data-table .indicator-modified {
+  color: #1ab394;
+}
+.d-grid .data-table .indicator-warn {
+  color: #f8ac59;
+}
+.d-grid .data-table .indicator-error {
+  color: #ed5565;
+}
+.d-grid .data-table .selected-row .cell-flag-dirty,
+.d-grid .data-table .current-row .cell-flag-dirty {
+  position: relative;
+}
+.d-grid .data-table .selected-row .cell-flag-dirty:before,
+.d-grid .data-table .current-row .cell-flag-dirty:before {
+  content: "";
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+  border-bottom-color: #3cffbc;
+}
+.d-grid .data-table .selected-row .cell-flag-warn,
+.d-grid .data-table .current-row .cell-flag-warn {
+  position: relative;
+}
+.d-grid .data-table .selected-row .cell-flag-warn:before,
+.d-grid .data-table .current-row .cell-flag-warn:before {
+  content: "";
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+  border-bottom-color: #ffe105;
+}
+.d-grid .data-table .selected-row .cell-flag-error,
+.d-grid .data-table .current-row .cell-flag-error {
+  position: relative;
+}
+.d-grid .data-table .selected-row .cell-flag-error:before,
+.d-grid .data-table .current-row .cell-flag-error:before {
+  content: "";
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+  border-bottom-color: #ff9e9e;
+}
+.d-grid .data-table .selected-row .indicator-new,
+.d-grid .data-table .current-row .indicator-new {
+  color: #333333;
+}
+.d-grid .data-table .selected-row .indicator-modified,
+.d-grid .data-table .current-row .indicator-modified {
+  color: #333333;
+}
+.d-grid .data-table .selected-row .indicator-warn,
+.d-grid .data-table .current-row .indicator-warn {
+  color: #333333;
+}
+.d-grid .data-table .selected-row .indicator-error,
+.d-grid .data-table .current-row .indicator-error {
+  color: #333333;
+}
+.d-grid .footer-table .footer {
+  color: #333333;
+  background-color: #d9d9d9;
+  border-top: 1px #e6e6e6 solid;
+  border-left: 1px transparent solid;
+  border-right: 1px #f3f3f3 solid;
+}
+.d-grid .float-filter-panel {
+  height: 32px;
+  background-color: #e3e3e3;
+  -webkit-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.8);
+  -moz-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.8);
+  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.8);
+}
+.d-grid .float-filter-panel .d-icon-button {
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+  color: #000000;
+}
+.d-grid .float-filter-panel .d-icon-button:hover {
+  color: #333333;
+  border-color: #0588d7;
+  background-color: #0588d7;
+}
+.d-grid .float-filter-panel .d-icon-button:active {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  background-color: #046faf;
+}
+.d-criterion-panel {
+  width: 315px;
+  padding: 4px;
+}
+.d-criterion-panel .d-buttons-container {
+  text-align: right;
+  padding: 0 3px;
+}
+.d-criterion-panel .d-icon-add {
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-criterion-panel .d-icon-add:before {
+  content: "\f067";
+}
+.d-criterion-panel .d-criterion .delete-button {
+  cursor: pointer;
+  width: 24px;
+  height: 24px;
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+  line-height: 20px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-criterion-panel .d-criterion .delete-button:before {
+  content: "\f068";
+}
+.d-criterion-panel .d-criterion .delete-button-hover {
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/layout.css b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/layout.css
new file mode 100644
index 0000000..369aaca
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/layout.css
@@ -0,0 +1,28 @@
+/*
+ * This file is part of Dorado 7.x (http://dorado7.bsdn.org).
+ * 
+ * Copyright (c) 2002-2012 BSTEK Corp. All rights reserved.
+ * 
+ * This file is dual-licensed under the AGPLv3 (http://www.gnu.org/licenses/agpl-3.0.html) 
+ * and BSDN commercial (http://www.bsdn.org/licenses) licenses.
+ * 
+ * If you are unsure which license is appropriate for your use, please contact the sales department
+ * at http://www.bstek.com/contact.
+ */
+.d-anchor-layout {
+  position: relative;
+}
+.d-dock-layout {
+  position: relative;
+  overflow: hidden;
+}
+.d-form-layout {
+  table-layout: fixed;
+}
+.d-form-layout-region {
+  height: 100%;
+}
+.d-hbox-layout {
+  display: inline-block;
+  text-align: left;
+}
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/list.css b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/list.css
new file mode 100644
index 0000000..d8f3d1f
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/list.css
@@ -0,0 +1,128 @@
+/*
+ * This file is part of Dorado 7.x (http://dorado7.bsdn.org).
+ * 
+ * Copyright (c) 2002-2012 BSTEK Corp. All rights reserved.
+ * 
+ * This file is dual-licensed under the AGPLv3 (http://www.gnu.org/licenses/agpl-3.0.html) 
+ * and BSDN commercial (http://www.bsdn.org/licenses) licenses.
+ * 
+ * If you are unsure which license is appropriate for your use, please contact the sales department
+ * at http://www.bstek.com/contact.
+ */
+.d-list-scrolling-indicator {
+  position: absolute;
+  width: 100px;
+  height: 36px;
+  line-height: 36px;
+  text-align: center;
+  color: #333333;
+  background-color: #f7f7f7;
+  opacity: 0.8;
+  filter: alpha(opacity=80);
+}
+.d-list-dragging-item {
+  white-space: nowrap;
+  padding: 2px 4px;
+  background: #ffffff;
+}
+.d-list-dragging-insert-indicator {
+  position: absolute;
+  height: 1px;
+  background: #ff8040;
+}
+.d-list-loading .mask {
+  opacity: 0.1;
+  filter: alpha(opacity=10);
+  background: #000000;
+}
+.d-list-loading .tip {
+  width: 200px;
+  height: 36px;
+  line-height: 36px;
+  color: #333333;
+  background: #ffffff;
+  padding: 4px 8px;
+}
+.d-list-loading .icon {
+  float: left;
+  margin: 6px;
+}
+.d-list-loading .icon > .spinner {
+  width: 24px;
+  height: 24px;
+  box-sizing: border-box;
+  border: solid 2px transparent;
+  border-top-color: #f5f5f5;
+  border-left-color: #f5f5f5;
+  border-radius: 50%;
+  -webkit-animation: loading-icon 400ms linear infinite;
+  -moz-animation: loading-icon 400ms linear infinite;
+  -ms-animation: loading-icon 400ms linear infinite;
+  -o-animation: loading-icon 400ms linear infinite;
+}
+.d-list-loading .label {
+  text-align: left;
+  margin-left: 42px;
+  height: 36px;
+}
+.d-list-box {
+  position: relative;
+}
+.d-list-box .data-table {
+  width: 100%;
+}
+.d-list-box .data-table .row td {
+  white-space: nowrap;
+  padding-left: 2px;
+  padding-right: 2px;
+}
+.d-list-box .data-table .highlighting-row td {
+  background: none;
+}
+.d-list-box .preparing-area {
+  background-color: #efefef;
+}
+.d-list-box {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  background-color: #f7f7f7;
+  color: #333333;
+}
+.d-list-box .data-table .row {
+  background: #ffffff;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-list-box .data-table .odd-row {
+  background: #ffffff;
+}
+.d-list-box .data-table .hover-row {
+  background: #f5f5f5;
+}
+.d-list-box .data-table .hover-row td {
+  border-top-color: rgba(0, 0, 0, 0);
+}
+.d-list-box .data-table .selected-row {
+  color: #333333;
+  background: #ffffff;
+}
+.d-list-box .data-table .current-row {
+  color: #333333;
+  background-color: #f5f5f5;
+}
+.d-list-box .data-table .drag-over-row {
+  background: #f5f5f5;
+}
+.d-list-box .data-table .drag-over-row td {
+  border-top-color: rgba(0, 0, 0, 0);
+  border-bottom-color: rgba(0, 0, 0, 0);
+}
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/meta-info.json b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/meta-info.json
new file mode 100644
index 0000000..735c46d
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/meta-info.json
@@ -0,0 +1,5 @@
+{
+	"clientType": "desktop",
+	"userAgent": "-ie8",
+	"dependedPackages": "entypo-support,font-awesome-support,nprogress"
+}
\ No newline at end of file
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/nprogress.css b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/nprogress.css
new file mode 100644
index 0000000..2f1199f
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/nprogress.css
@@ -0,0 +1,29 @@
+/* Make clicks pass-through */
+#nprogress {
+  pointer-events: none;
+  /* Fancy blur effect */
+
+}
+#nprogress .bar {
+  background: #29d;
+  position: fixed;
+  z-index: 1031;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 2px;
+}
+#nprogress .bar > .peg {
+  display: block;
+  position: absolute;
+  right: 0px;
+  width: 100px;
+  height: 100%;
+  box-shadow: 0 0 10px #29d, 0 0 5px #29d;
+  opacity: 1.0;
+  -webkit-transform: rotate(3deg) translate(0px, -4px);
+  -moz-transform: rotate(3deg) translate(0px, -4px);
+  -ms-transform: rotate(3deg) translate(0px, -4px);
+  -o-transform: rotate(3deg) translate(0px, -4px);
+  transform: rotate(3deg) translate(0px, -4px);
+}
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/support.js b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/support.js
new file mode 100644
index 0000000..80289f1
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/support.js
@@ -0,0 +1,6 @@
+$setting["widget.MessageBox.defaultModalType"] = "dark";
+$setting["widget.ListBox.defaultRowHeight"] = 30;
+$setting["widget.Grid.defaultRowHeight"] = 30;
+$setting["widget.Tree.defaultRowHeight"] = 30;
+$setting["widget.TextEditor.triggerWidth"] = 28;
+$setting["common.taskIndicator.daemon.type"] = "icon";
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tag-editor.css b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tag-editor.css
new file mode 100644
index 0000000..4b9f55b
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tag-editor.css
@@ -0,0 +1,952 @@
+/*
+ * This file is part of Dorado 7.x (http://dorado7.bsdn.org).
+ *
+ * Copyright (c) 2002-2012 BSTEK Corp. All rights reserved.
+ *
+ * This file is dual-licensed under the AGPLv3 (http://www.gnu.org/licenses/agpl-3.0.html)
+ * and BSDN commercial (http://www.bsdn.org/licenses) licenses.
+ *
+ * If you are unsure which license is appropriate for your use, please contact the sales department
+ * at http://www.bstek.com/contact.
+ */
+/*
+ * This file is part of Dorado 7.x (http://dorado7.bsdn.org).
+ * 
+ * Copyright (c) 2002-2012 BSTEK Corp. All rights reserved.
+ * 
+ * This file is dual-licensed under the AGPLv3 (http://www.gnu.org/licenses/agpl-3.0.html) 
+ * and BSDN commercial (http://www.bsdn.org/licenses) licenses.
+ * 
+ * If you are unsure which license is appropriate for your use, please contact the sales department
+ * at http://www.bstek.com/contact.
+ */
+/* label */
+.d-label {
+  height: 30px;
+  line-height: 30px;
+}
+/* text-box */
+.d-text-box {
+  position: relative;
+  text-align: left;
+  height: 28px;
+  line-height: 28px;
+}
+.d-text-box > .editor-wrapper {
+  display: block;
+}
+.d-text-box > .editor-wrapper > .editor {
+  background: transparent;
+  white-space: nowrap;
+  border: 0;
+  margin: 0;
+  width: 100%;
+  line-height: 28px;
+  padding: 0;
+}
+.d-text-box .d-trigger {
+  position: absolute;
+  top: 0;
+  right: 0;
+  cursor: pointer;
+  overflow: hidden;
+  width: 28px;
+  height: 28px;
+  border-width: 0;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.d-text-box .d-trigger .d-icon {
+  width: 28px;
+  height: 28px;
+  line-height: 28px !important;
+}
+.d-text-box .blank-text {
+  font-style: italic;
+}
+.d-text-box .d-dirty-flag {
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  border-bottom-color: #1ab394;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+}
+.d-text-box {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  border: 1px #bfbfbf solid;
+  background-color: #ffffff;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-text-box > .editor-wrapper > .editor {
+  color: #333333;
+}
+.d-text-box > .editor-wrapper > .blank-text {
+  color: #999999 !important;
+}
+.d-text-box.d-text-box-hover {
+  border-color: #dddddd;
+  background-color: #ffffff;
+}
+.d-text-box.d-text-box-focused {
+  border-color: #dddddd;
+  background-color: #ffffff;
+}
+.d-text-box.d-text-box-warn {
+  border-color: #ecc463;
+  background-color: #faefd5;
+}
+.d-text-box.d-text-box-warn .d-dirty-flag {
+  border-bottom-color: #f8ac59;
+}
+.d-text-box.d-text-box-error {
+  border-color: #ff6267;
+  background-color: #ffe1e2;
+}
+.d-text-box.d-text-box-error .d-dirty-flag {
+  border-bottom-color: #ed5565;
+}
+.d-text-box.d-text-box-readonly {
+  border-color: #e6e6e6;
+  background: #ffffff;
+}
+.d-text-box .d-trigger {
+  color: #333333;
+  background-color: rgba(0, 0, 0, 0);
+}
+.d-text-box .d-trigger:hover {
+  color: #333333;
+  background-color: #f5f5f5;
+}
+.d-text-box .d-trigger:active {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  color: #333333;
+  background-color: #e1e1e1;
+}
+.d-text-box .d-trigger.d-opened {
+  color: #333333;
+  background-color: #e1e1e1;
+}
+/* text-area */
+.d-text-area {
+  height: 32px;
+}
+.d-text-area .textarea {
+  color: #333333;
+  background: transparent;
+  border-width: 0;
+  margin: 0;
+  padding: 0;
+  resize: none;
+}
+.d-text-area .blank-text {
+  font-style: italic;
+}
+.d-text-area .d-trigger-panel {
+  position: absolute;
+  top: 0;
+  right: 0;
+  width: 30px;
+  height: 100%;
+}
+.d-text-area .d-trigger-panel .d-trigger {
+  display: block;
+  border-width: 0;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.d-text-area .d-trigger-panel .d-trigger .d-icon {
+  margin-top: 0;
+  width: 28px;
+  height: 28px;
+  line-height: 28px !important;
+}
+.d-text-area .d-dirty-flag {
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  border-bottom-color: #1ab394;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+}
+.d-text-area {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  border: 1px #bfbfbf solid;
+  background-color: #ffffff;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-text-area .text-area {
+  color: #333333;
+}
+.d-text-area .blank-text {
+  color: #999999 !important;
+}
+.d-text-area.d-text-area-hover {
+  border-color: #dddddd;
+  background-color: #ffffff;
+}
+.d-text-area.d-text-area-focused {
+  border-color: #dddddd;
+  background-color: #ffffff;
+}
+.d-text-area.d-text-area-warn {
+  border-color: #ecc463;
+  background-color: #faefd5;
+}
+.d-text-area.d-text-area-error {
+  border-color: #ff6267;
+  background-color: #ffe1e2;
+}
+.d-text-area.d-text-area-readonly {
+  border-color: #e6e6e6;
+  background: #ffffff;
+}
+.d-text-area .d-trigger {
+  color: #333333;
+  background-color: rgba(0, 0, 0, 0);
+}
+.d-text-area .d-trigger:hover {
+  color: #333333;
+  background-color: #f5f5f5;
+}
+.d-text-area .d-trigger:active {
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  color: #333333;
+  background-color: #e1e1e1;
+}
+.d-text-area .d-trigger.d-opened {
+  color: #333333;
+  background-color: #e1e1e1;
+}
+/* trigger */
+.d-trigger-icon-drop {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-drop:before {
+  content: "\e6a4";
+}
+.d-trigger-icon-drop:before {
+  content: "\e6a4";
+}
+.d-trigger-icon-search {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-search:before {
+  content: "\e617";
+}
+.d-trigger-icon-search:before {
+  content: "\e617";
+}
+.d-trigger-icon-date {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-date:before {
+  content: "\e6a4";
+}
+.d-trigger-icon-date:before {
+  content: "\e6a4";
+}
+.d-trigger-icon-custom {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-custom:before {
+  content: "\e6b0";
+}
+.d-trigger-icon-custom:before {
+  content: "\e6b0";
+}
+.d-trigger-icon-clear {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-clear:before {
+  content: "\e605";
+}
+.d-trigger-icon-clear:before {
+  content: "\e605";
+}
+.d-trigger-icon-filter {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-filter:before {
+  content: "\e61f";
+}
+.d-trigger-icon-filter:before {
+  content: "\e61f";
+}
+.d-trigger-icon-reset {
+  line-height: 28px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-trigger-icon-reset:before {
+  content: "\e614";
+}
+.d-trigger-icon-reset:before {
+  content: "\e614";
+}
+/* checkbox */
+.d-checkbox {
+  position: relative;
+  display: inline-block;
+  white-space: nowrap;
+  overflow: hidden;
+  cursor: default;
+  min-width: 14px;
+  height: 14px;
+  padding: 8px 2px;
+}
+.d-checkbox .icon {
+  float: left;
+  width: 14px;
+  height: 14px;
+}
+.d-checkbox .caption {
+  position: relative;
+  top: -1px;
+  margin-left: 4px;
+  white-space: nowrap;
+  word-wrap: break-word;
+}
+.d-checkbox-dirty:after {
+  content: "";
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  border-bottom-color: #1ab394;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+}
+.d-checkbox-center {
+  float: none;
+  position: relative;
+  left: 50%;
+  margin-left: -7px;
+  padding: 0;
+}
+.d-checkbox-icononly {
+  width: 14px;
+  height: 14px;
+  padding: 0 0;
+}
+.d-checkbox-readonly .icon {
+  border-color: #e6e6e6;
+  background: #ffffff;
+}
+.d-checkbox:before {
+  content: "";
+  display: block;
+  position: absolute;
+  box-sizing: border-box;
+  width: 14px;
+  height: 14px;
+  border: 1px #bfbfbf solid;
+  background-color: #ffffff;
+}
+.d-checkbox .icon {
+  position: relative;
+  line-height: 14px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: transparent;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-checkbox .icon:before {
+  content: "\f00c";
+}
+.d-checkbox .icon:before {
+  content: "\f00c";
+}
+.d-checkbox .icon.checked {
+  color: #2a394f;
+}
+.d-checkbox .icon.halfchecked:before {
+  content: "";
+  display: block;
+  position: absolute;
+  margin: 4px;
+  width: 6px;
+  height: 6px;
+  background-color: rgba(42, 57, 79, 0.5);
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+}
+.d-checkbox:hover:before,
+.d-checkbox-focused:before {
+  border-color: #f5f5f5;
+  background-color: #ffffff;
+}
+.d-checkbox:hover .icon.checked,
+.d-checkbox-focused .icon.checked {
+  color: #2a394f;
+}
+.d-checkbox:hover .icon.halfchecked:before,
+.d-checkbox-focused .icon.halfchecked:before {
+  background-color: rgba(42, 57, 79, 0.5);
+}
+/* radio-group */
+.d-radiogroup {
+  overflow: visible;
+  padding: 0 3px;
+}
+.d-radiogroup:before {
+  content: "";
+  display: table;
+}
+.d-radiogroup:after {
+  content: "";
+  display: table;
+  clear: both;
+}
+.d-radiogroup .d-radio {
+  overflow: hidden;
+  cursor: default;
+  min-width: 14px;
+  height: 30px;
+  line-height: 30px;
+  white-space: nowrap;
+}
+.d-radiogroup .d-radio .icon {
+  float: left;
+  display: inline-block;
+  width: 14px;
+  height: 14px;
+  margin-top: 8px;
+}
+.d-radiogroup .d-radio .text {
+  margin-left: 4px;
+  margin-right: 7px;
+}
+.d-radiogroup .d-radio-readonly .icon {
+  border-color: #e6e6e6;
+  background: #ffffff;
+}
+.d-radiogroup-dirty {
+  position: relative;
+}
+.d-radiogroup-dirty:after {
+  content: "";
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  border-bottom-color: #1ab394;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+}
+.d-radiogroup-flow .d-radio {
+  float: left;
+}
+.d-radio .icon {
+  box-sizing: border-box;
+  -webkit-border-radius: 14px;
+  -moz-border-radius: 14px;
+  border-radius: 14px;
+  width: 14px;
+  height: 14px;
+  border: 1px #bfbfbf solid;
+  background-color: #ffffff;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-radio .icon:before {
+  content: "";
+  display: block;
+  position: absolute;
+  margin: 2px;
+  -webkit-border-radius: 8px;
+  -moz-border-radius: 8px;
+  border-radius: 8px;
+  width: 8px;
+  height: 8px;
+  background-color: #2a394f;
+  opacity: 0;
+  filter: alpha(opacity=0);
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+  -webkit-transition-property: opacity;
+  -moz-transition-property: opacity;
+  -ms-transition-property: opacity;
+  -o-transition-property: opacity;
+  transition-property: opacity;
+}
+.d-radio .icon.checked:before {
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.d-radio .text {
+  color: #333333;
+}
+.d-radio:hover:before,
+.d-radio-focused:before {
+  background-color: #ffffff;
+}
+.d-radio:hover .icon,
+.d-radio-focused .icon {
+  border-color: #f5f5f5;
+}
+.d-radio:hover .icon:before,
+.d-radio-focused .icon:before {
+  background-color: #2a394f;
+}
+/* data-message */
+.d-data-message .d-message {
+  height: 30px;
+  line-height: 30px;
+}
+.d-data-message .d-message .icon {
+  float: left;
+  width: 24px;
+  height: 30px;
+  background-repeat: no-repeat;
+  background-position: center center;
+}
+.d-data-message .d-message .icon-info {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #1c84c6;
+}
+.d-data-message .d-message .icon-info:before {
+  content: "\e607";
+}
+.d-data-message .d-message .icon-info:before {
+  content: "\e607";
+}
+.d-data-message .d-message .icon-ok {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #1ab394;
+}
+.d-data-message .d-message .icon-ok:before {
+  content: "\e604";
+}
+.d-data-message .d-message .icon-ok:before {
+  content: "\e604";
+}
+.d-data-message .d-message .icon-warn {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #f8ac59;
+}
+.d-data-message .d-message .icon-warn:before {
+  content: "\e609";
+}
+.d-data-message .d-message .icon-warn:before {
+  content: "\e609";
+}
+.d-data-message .d-message .icon-error {
+  line-height: 30px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #ed5565;
+}
+.d-data-message .d-message .icon-error:before {
+  content: "\e606";
+}
+.d-data-message .d-message .icon-error:before {
+  content: "\e606";
+}
+.d-data-message .d-message .icon-validating {
+  padding-left: 7px;
+  padding-top: 7px;
+}
+.d-data-message .d-message .icon-validating > .spinner {
+  width: 16px;
+  height: 16px;
+  box-sizing: border-box;
+  border: solid 2px transparent;
+  border-top-color: #f5f5f5;
+  border-left-color: #f5f5f5;
+  border-radius: 50%;
+  -webkit-animation: loading-icon 400ms linear infinite;
+  -moz-animation: loading-icon 400ms linear infinite;
+  -ms-animation: loading-icon 400ms linear infinite;
+  -o-animation: loading-icon 400ms linear infinite;
+}
+.d-data-message .d-message .icon-validating > .spinner {
+  width: 16px;
+  height: 16px;
+  box-sizing: border-box;
+  border: solid 2px transparent;
+  border-top-color: #f5f5f5;
+  border-left-color: #f5f5f5;
+  border-radius: 50%;
+  -webkit-animation: loading-icon 400ms linear infinite;
+  -moz-animation: loading-icon 400ms linear infinite;
+  -ms-animation: loading-icon 400ms linear infinite;
+  -o-animation: loading-icon 400ms linear infinite;
+}
+/* form-element */
+.d-form-element {
+  position: relative;
+  overflow: hidden;
+}
+.d-form-element .form-label {
+  height: 32px;
+  line-height: 32px;
+  padding-right: 12px;
+}
+.d-form-element .form-label-left {
+  float: left;
+  height: 100%;
+}
+.d-form-element .form-label-align-left {
+  text-align: left;
+}
+.d-form-element .form-label-align-center {
+  text-align: center;
+}
+.d-form-element .form-label-align-right {
+  text-align: right;
+}
+.d-form-element .form-label-required {
+  position: relative;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.d-form-element .form-label-required:before {
+  content: "\e683";
+  font-family: entypo;
+}
+.d-form-element .form-label-required:before {
+  content: "\e683";
+  font-family: entypo;
+}
+.d-form-element .form-label-required:before {
+  position: absolute;
+  right: 0;
+  color: #f8ac59;
+  -webkit-transform: scale(0.8);
+  -moz-transform: scale(0.8);
+  -ms-transform: scale(0.8);
+  -o-transform: scale(0.8);
+  transform: scale(0.8);
+}
+.d-form-element .form-content {
+  display: block;
+  zoom: 1;
+}
+.d-form-element .form-content-right {
+  height: 100%;
+}
+.d-form-element .form-content .form-editor {
+  height: 100%;
+  overflow: hidden;
+}
+.d-form-element .form-content .form-editor-left {
+  height: 100%;
+}
+.d-form-element .form-hint-right {
+  position: absolute;
+  top: 0;
+  right: 0;
+  height: 100%;
+}
+.d-form-element .form-hint-bottom {
+  width: 100%;
+}
+.d-tag-editor {
+  height: auto;
+  min-height: 28px;
+  background-repeat: repeat-x;
+  text-align: left;
+  overflow-x: hidden;
+  overflow-y: visible;
+}
+.d-tag-editor .tag-container {
+  line-height: 28px;
+  padding: 0 1px 1px 0;
+  margin: 0;
+  position: relative;
+  overflow: visible;
+  white-space: normal;
+}
+.d-tag-editor .tag-container .tag {
+  cursor: pointer;
+  float: left;
+  display: block;
+  position: relative;
+  white-space: nowrap;
+  height: 26px;
+  line-height: 26px;
+  overflow: hidden;
+  margin: 1px 0 0 1px;
+  padding: 0 3px;
+}
+.d-tag-editor .tag-container .tag .tag-label {
+  zoom: 1;
+}
+.d-tag-editor .tag-container .tag .close {
+  float: right;
+  margin-top: 5px;
+  border-radius: 16px;
+  width: 16px;
+  height: 16px;
+}
+.d-tag-editor .tag-container .tag-readonly .close {
+  display: none;
+}
+.d-tag-editor .tag-container .editor {
+  float: left;
+  background: none;
+  white-space: nowrap;
+  border: 0;
+  margin: 1px;
+  height: 26px;
+  line-height: 26px;
+  color: #333333;
+}
+.d-tag-editor .tag-container .blank-text {
+  font-style: italic;
+  color: #d9d9d9;
+}
+.d-tag-editor .d-dirty-flag {
+  width: 0;
+  height: 0;
+  border: 4px solid transparent;
+  border-bottom-color: #1ab394;
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  -webkit-transform: rotate(-45deg);
+  -moz-transform: rotate(-45deg);
+  -ms-transform: rotate(-45deg);
+  -o-transform: rotate(-45deg);
+  transform: rotate(-45deg);
+}
+.d-tag-editor {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  border: 1px #bfbfbf solid;
+  background-color: #ffffff;
+}
+.d-tag-editor .tag-container .tag {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  background: #f5f5f5;
+  color: #333333;
+}
+.d-tag-editor .tag-container .tag .close {
+  line-height: 16px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #c1f0e0;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-tag-editor .tag-container .tag .close:before {
+  content: "\e605";
+}
+.d-tag-editor .tag-container .tag .close:before {
+  content: "\e605";
+}
+.d-tag-editor .tag-container .tag .close:hover {
+  color: #ffffff;
+}
+.d-tag-editor .tag-container .tag-error {
+  background-color: #ed5565;
+  color: #ffffff;
+  text-decoration: line-through;
+}
+.d-tag-editor .tag-container .tag-required {
+  background-color: #07c181;
+  color: #ffffff;
+}
+.d-tag-editor.d-tag-editor-hover {
+  border-color: #dddddd;
+  background-color: #ffffff;
+}
+.d-tag-editor.d-tag-editor-focused {
+  border-color: #dddddd;
+  background-color: #ffffff;
+}
+.d-tag-editor.d-tag-editor-warn {
+  border-color: #ecc463;
+  background-color: #faefd5;
+}
+.d-tag-editor.d-tag-editor-error {
+  border-color: #ff6267;
+  background-color: #ffe1e2;
+}
+.d-tag-editor.d-tag-editor-readonly {
+  border-color: #bfbfbf;
+  background: #ffffff;
+}
+.d-tag-editor .d-trigger {
+  position: absolute;
+  top: 0;
+  right: 0;
+  cursor: pointer;
+  overflow: hidden;
+  width: 28px;
+  height: 28px;
+}
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree.css b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree.css
new file mode 100644
index 0000000..ce5609d
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree.css
@@ -0,0 +1,215 @@
+/*
+ * This file is part of Dorado 7.x (http://dorado7.bsdn.org).
+ * 
+ * Copyright (c) 2002-2012 BSTEK Corp. All rights reserved.
+ * 
+ * This file is dual-licensed under the AGPLv3 (http://www.gnu.org/licenses/agpl-3.0.html) 
+ * and BSDN commercial (http://www.bsdn.org/licenses) licenses.
+ * 
+ * If you are unsure which license is appropriate for your use, please contact the sales department
+ * at http://www.bstek.com/contact.
+ */
+/*
+ * This file is part of Dorado 7.x (http://dorado7.bsdn.org).
+ *
+ * Copyright (c) 2002-2012 BSTEK Corp. All rights reserved.
+ *
+ * This file is dual-licensed under the AGPLv3 (http://www.gnu.org/licenses/agpl-3.0.html)
+ * and BSDN commercial (http://www.bsdn.org/licenses) licenses.
+ *
+ * If you are unsure which license is appropriate for your use, please contact the sales department
+ * at http://www.bstek.com/contact.
+ */
+.d-tree {
+  position: relative;
+}
+.d-tree .data-table {
+  width: 100%;
+  border-collapse: collapse;
+}
+.d-tree .data-table td {
+  white-space: nowrap;
+  padding-left: 2px;
+  padding-right: 2px;
+}
+.d-tree .preparing-area {
+  background-color: #efefef;
+}
+.d-tree-expanding-placeholder {
+  background: #ffffff;
+}
+.d-tree-node .node-button {
+  position: relative;
+  top: 2px;
+  margin-left: 3px;
+  margin-right: 3px;
+  width: 16px;
+  height: 16px;
+  cursor: pointer;
+  box-sizing: border-box;
+  border: 1px solid transparent;
+  border-radius: 50%;
+  line-height: 14px;
+  text-align: center;
+  font-size: 14px;
+  font-family: entypo;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+  visibility: hidden;
+}
+.d-tree-node .node-button:before {
+  content: "\e603";
+}
+.d-tree-node .node-button:hover {
+  border-color: rgba(51, 51, 51, 0.5);
+}
+.d-tree-node .node-button:active {
+  border-color: #333333;
+  background: rgba(51, 51, 51, 0.1);
+}
+.d-tree-node .node-button.expand-button {
+  visibility: visible;
+}
+.d-tree-node .node-button.collapse-button {
+  visibility: visible;
+  -webkit-transform: rotate(90deg);
+  -moz-transform: rotate(90deg);
+  -ms-transform: rotate(90deg);
+  -o-transform: rotate(90deg);
+  transform: rotate(90deg);
+}
+.d-tree-node .node-button.button-expanding {
+  border-color: transparent;
+  -webkit-transition-duration: 0;
+  -moz-transition-duration: 0;
+  -ms-transition-duration: 0;
+  -o-transition-duration: 0;
+  transition-duration: 0;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+}
+.d-tree-node .node-button.button-expanding > .spinner {
+  width: 16px;
+  height: 16px;
+  box-sizing: border-box;
+  border: solid 2px transparent;
+  border-top-color: #f5f5f5;
+  border-left-color: #f5f5f5;
+  border-radius: 50%;
+  -webkit-animation: loading-icon 400ms linear infinite;
+  -moz-animation: loading-icon 400ms linear infinite;
+  -ms-animation: loading-icon 400ms linear infinite;
+  -o-animation: loading-icon 400ms linear infinite;
+}
+.d-tree-node .node-button.button-expanding:before {
+  display: none;
+}
+.d-tree-node .node-icon {
+  position: relative;
+  width: 20px;
+  height: 20px;
+  line-height: 20px;
+  margin-right: 2px;
+  background-repeat: no-repeat;
+  background-position: center center;
+}
+.d-tree-node .tree-line {
+  display: inline-block;
+  background-repeat: no-repeat;
+  background-position: -19px center;
+  height: 100%;
+  opacity: 0.6;
+  filter: alpha(opacity=60);
+}
+.d-tree-node .d-checkbox-icononly {
+  position: relative;
+  top: 3px;
+  margin-right: 4px;
+}
+.d-tree {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  color: #333333;
+}
+.d-tree > div {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.d-tree .row {
+  -webkit-transition-duration: 0.3s;
+  -moz-transition-duration: 0.3s;
+  -ms-transition-duration: 0.3s;
+  -o-transition-duration: 0.3s;
+  transition-duration: 0.3s;
+  -webkit-transition-property: background-color, border-color, color, -webkit-box-shadow, -webkit-transform;
+  -moz-transition-property: background-color, border-color, color, -moz-box-shadow, -moz-transform;
+  -ms-transition-property: background-color, border-color, color, -ms-box-shadow, -ms-transform;
+  -o-transition-property: background-color, border-color, color, -o-box-shadow, -o-transform;
+  transition-property: background-color, border-color, color, box-shadow, transform;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  color: #333333;
+  background-color: #ffffff;
+}
+.d-tree .row .node-icon {
+  color: rgba(51, 51, 51, 0.7);
+}
+.d-tree .hover-row {
+  background: #f5f5f5;
+}
+.d-tree .selected-row {
+  color: #333333;
+  background-color: #ffffff;
+}
+.d-tree .current-row {
+  color: #333333;
+  background-color: #f5f5f5;
+}
+.d-tree .selected-row .node-icon,
+.d-tree .current-row .node-icon {
+  color: rgba(51, 51, 51, 0.7);
+}
+.d-tree .selected-row .node-button:hover,
+.d-tree .current-row .node-button:hover {
+  border-color: #333333;
+}
+.d-tree .selected-row .node-button:active,
+.d-tree .current-row .node-button:active {
+  border-color: #333333;
+  background: rgba(51, 51, 51, 0.1);
+}
+.d-tree .selected-row .node-button.button-expanding > .spinner,
+.d-tree .current-row .node-button.button-expanding > .spinner {
+  width: 16px;
+  height: 16px;
+  box-sizing: border-box;
+  border: solid 2px transparent;
+  border-top-color: #333333;
+  border-left-color: #333333;
+  border-radius: 50%;
+  -webkit-animation: loading-icon 400ms linear infinite;
+  -moz-animation: loading-icon 400ms linear infinite;
+  -ms-animation: loading-icon 400ms linear infinite;
+  -o-animation: loading-icon 400ms linear infinite;
+}
+.d-tree .drag-over-row {
+  background-color: #f5f5f5;
+}
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line1.png b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line1.png
new file mode 100644
index 0000000..4eba062
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line1.png
Binary files differ
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line11.png b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line11.png
new file mode 100644
index 0000000..5077ba6
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line11.png
Binary files differ
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line2.png b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line2.png
new file mode 100644
index 0000000..3d1a9f1
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line2.png
Binary files differ
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line21.png b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line21.png
new file mode 100644
index 0000000..dba918e
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line21.png
Binary files differ
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line3.png b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line3.png
new file mode 100644
index 0000000..16fffd5
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line3.png
Binary files differ
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line31.png b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line31.png
new file mode 100644
index 0000000..6c29901
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line31.png
Binary files differ
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line4.png b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line4.png
new file mode 100644
index 0000000..9e2464d
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/tree/tree-line4.png
Binary files differ
diff --git a/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/widget-support.css b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/widget-support.css
new file mode 100644
index 0000000..6824782
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/dorado/skins/ruoyi/widget-support.css
@@ -0,0 +1,62 @@
+/*
+ * This file is part of Dorado 7.x (http://dorado7.bsdn.org).
+ * 
+ * Copyright (c) 2002-2012 BSTEK Corp. All rights reserved.
+ * 
+ * This file is dual-licensed under the AGPLv3 (http://www.gnu.org/licenses/agpl-3.0.html) 
+ * and BSDN commercial (http://www.bsdn.org/licenses) licenses.
+ * 
+ * If you are unsure which license is appropriate for your use, please contact the sales department
+ * at http://www.bstek.com/contact.
+ */
+.d-view {
+  width: 100%;
+  height: 100%;
+  position: relative;
+}
+.d-container {
+  margin: 0;
+  overflow: hidden;
+}
+.d-floating {
+  position: absolute !important;
+  top: -99999px;
+  left: -99999px;
+}
+.d-relative {
+  position: relative;
+}
+.d-disabled {
+  cursor: default !important;
+}
+.d-fix-text-align {
+  text-align: left;
+}
+.d-exception-content {
+  height: 64px;
+  padding: 16px 32px 16px 112px;
+  position: relative;
+}
+.d-exception-icon {
+  position: absolute;
+  top: 16px;
+  left: 32px;
+  width: 64px;
+  height: 64px;
+  line-height: 64px;
+  text-align: center;
+  font-size: 14px;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  font-size: 64px;
+  color: #ed5565;
+}
+.d-exception-icon:before {
+  content: "\f057";
+}
+.d-exception-text {
+  position: relative;
+}
diff --git a/fzzy-igdss-web/src/main/resources/lib/dorado-skin-ruoyi-1.0.10.jar b/fzzy-igdss-web/src/main/resources/lib/dorado-skin-ruoyi-1.0.10.jar
deleted file mode 100644
index 99bdf14..0000000
--- a/fzzy-igdss-web/src/main/resources/lib/dorado-skin-ruoyi-1.0.10.jar
+++ /dev/null
Binary files differ
diff --git a/fzzy-igdss-web/src/main/resources/templates/work/no-business.html b/fzzy-igdss-web/src/main/resources/templates/work/no-business.html
new file mode 100644
index 0000000..8df74cc
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/templates/work/no-business.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html lang="zh_CN">
+<head>
+    <meta charset="utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <title>鏅烘収绮簱绠$悊绯荤粺</title>
+    <style>
+        body {
+            background-color: #f8f9fa;
+            font-family: 'Microsoft YaHei', 'Helvetica Neue', Arial, sans-serif;
+        }
+        .container {
+            min-height: 100vh;
+            display: flex;
+            flex-direction: column;
+            justify-content: center;
+            align-items: center;
+            padding: 20px;
+            box-sizing: border-box;
+        }
+       </style>
+</head>
+<body>
+<div class="container">
+    <h3>褰撳墠宸ュ崟娌℃湁涓氬姟璇︾粏鈥︹��</h3>
+</div>
+</body>
+</html>
\ No newline at end of file

--
Gitblit v1.9.3