Quellcode durchsuchen

前段框架微调整

吴学文 vor 7 Jahren
Ursprung
Commit
e761d1d783

+ 16 - 8
WebService/src/main/java/com/java110/web/core/VueComponentElement.java

@@ -1,6 +1,5 @@
 package com.java110.web.core;
 
-import com.java110.common.util.Assert;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -9,14 +8,13 @@ import org.thymeleaf.dom.Document;
 import org.thymeleaf.dom.Element;
 import org.thymeleaf.dom.Macro;
 import org.thymeleaf.dom.Node;
+import org.thymeleaf.exceptions.TemplateProcessingException;
 import org.thymeleaf.processor.element.AbstractMarkupSubstitutionElementProcessor;
 import org.thymeleaf.util.DOMUtils;
 
 import java.io.StringReader;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
  * 组件 自定义标签功能类
@@ -69,6 +67,7 @@ public class VueComponentElement extends AbstractMarkupSubstitutionElementProces
         if (js != null) {
 
             js = dealJs(js, element);
+            js = dealJsAddComponentCode(js, element);
             js = "<script type=\"text/javascript\">//<![CDATA[ \n" + js + "//]]>\n</script>";
             Node nodeJs = new Macro(js);
             nodes.add(nodeJs);
@@ -106,11 +105,14 @@ public class VueComponentElement extends AbstractMarkupSubstitutionElementProces
                 continue;
             }
             String[] types = type.split(":");
-            if (!element.hasAttribute(types[0].trim())) {
-                throw new RuntimeException("未配置组件属性" + types[0]);
+            String attrKey = types[0].replace(" ", "").replace("\n", "");
+            if (!element.hasAttribute(attrKey)) {
+                String componentName = element.getAttributeValue("name");
+                logger.error("组件[%s]未配置组件属性 %s", componentName, attrKey);
+                throw new TemplateProcessingException("组件[" + componentName + "]未配置组件属性" + attrKey);
             }
-            String vcType = element.getAttributeValue(types[0]);
-            js = js.replace(types[0], vcType);
+            String vcType = element.getAttributeValue(attrKey);
+            js = js.replace(attrKey, "'" + vcType + "'");
 
         }
         return js;
@@ -125,7 +127,13 @@ public class VueComponentElement extends AbstractMarkupSubstitutionElementProces
      */
     private String dealJsAddComponentCode(String js, Element element) {
 
-        return "";
+        if (!element.hasAttribute("code")) {
+            return js;
+        }
+
+        String code = element.getAttributeValue("code");
+
+        return js.replace("@vc_", code);
     }
 
     /**

+ 41 - 0
WebService/src/main/resources/components/add-room/addRoom.html

@@ -0,0 +1,41 @@
+<div id = "addRoomModel" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true" >
+    <div class="modal-dialog modal-lg">
+        <div class="modal-content">
+            <div class="modal-body">
+                <h3 class="m-t-none m-b ">添加房屋</h3>
+                <div class="ibox-content">
+                    <div>
+                        <div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">单元编号</label>
+                                <div class="col-sm-10"><input v-model="addRoomInfo.unitNum" type="text" placeholder="必填,请填写单元编号" class="form-control"></div>
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">总层数</label>
+                                <div class="col-sm-10"><input v-model="addRoomInfo.layerCount" type="number" placeholder="必填,请填写单元总层数" class="form-control"></div>
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">电梯</label>
+                                <div class="col-sm-10">
+                                    <select class="custom-select" v-model="addRoomInfo.lift">
+                                        <option selected value="">必填,请选择是否有电梯</option>
+                                        <option value="1010">有</option>
+                                        <option value="2020">无</option>
+                                    </select>
+                                </div>
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">备注</label>
+                                <div class="col-sm-10"><input v-model="addRoomInfo.remark" type="text" placeholder="请填写备注信息" class="form-control"></div>
+                            </div>
+                            <div class="ibox-content">
+                                <button class="btn btn-primary float-right" type="button" v-on:click="addRoom()" ><i class="fa fa-check"></i>&nbsp;保存</button>
+                                <button type="button" class="btn btn-warning float-right" style="margin-right:20px;" data-dismiss="modal">取消</button>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>

+ 122 - 0
WebService/src/main/resources/components/add-room/addRoom.js

@@ -0,0 +1,122 @@
+(function(vc,vm){
+
+    vc.extends({
+        data:{
+            addRoomInfo:{
+                floorId:'',
+                roomNum:'',
+                layerCount:'',
+                lift:'',
+                remark:'',
+                communityId:''
+            }
+        },
+         _initMethod:function(){
+
+         },
+         _initEvent:function(){
+             vc.on('addRoom','addRoomModel',function(_params){
+                vc.component.refreshAddRoomInfo();
+                $('#addRoomModel').modal('show');
+                vc.component.addRoomInfo.floorId = _params.floorId;
+                vc.component.addRoomInfo.communityId = vc.getCurrentCommunity().communityId;
+            });
+        },
+        methods:{
+            addRoomValidate:function(){
+                        return vc.validate.validate({
+                            addRoomInfo:vc.component.addRoomInfo
+                        },{
+                            'addRoomInfo.floorId':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"小区楼不能为空"
+                                }
+                            ],
+                            'addRoomInfo.roomNum':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"单元编号不能为空"
+                                },
+                                {
+                                    limit:"maxLength",
+                                    param:"12",
+                                    errInfo:"单元编号长度不能超过12位"
+                                },
+                            ],
+                            'addRoomInfo.layerCount':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"单元楼层高度不能为空"
+                                },
+                                {
+                                    limit:"num",
+                                    param:"",
+                                    errInfo:"单元楼层高度必须为数字"
+                                }
+                            ],
+                            'addRoomInfo.lift':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"必须选择单元是否电梯"
+                                }
+                            ],
+                            'addRoomInfo.remark':[
+                                {
+                                    limit:"maxLength",
+                                    param:"200",
+                                    errInfo:"备注长度不能超过200位"
+                                },
+                            ]
+
+                        });
+             },
+            addRoom:function(){
+                if(!vc.component.addRoomValidate()){
+                    vc.message(vc.validate.errInfo);
+                    return ;
+                }
+
+                vc.http.post(
+                    'addRoom',
+                    'save',
+                    JSON.stringify(vc.component.addRoomInfo),
+                    {
+                        emulateJSON:true
+                     },
+                     function(json,res){
+                        //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
+                        if(res.status == 200){
+                            //关闭model
+                            $('#addRoomModel').modal('hide');
+                            vc.emit('room','loadRoom',{
+                                floorId:vc.component.addRoomInfo.floorId
+                            });
+                            return ;
+                        }
+                        vc.message(json);
+                     },
+                     function(errInfo,error){
+                        console.log('请求失败处理');
+
+                        vc.message(errInfo);
+                     });
+            },
+            refreshAddRoomInfo:function(){
+                vc.component.addRoomInfo= {
+                  floorId:'',
+                  roomNum:'',
+                  layerCount:'',
+                  lift:'',
+                  remark:'',
+                  communityId:''
+                }
+            }
+        }
+    });
+
+})(window.vc,window.vc.component);

+ 5 - 2
WebService/src/main/resources/components/room-select-floor/roomSelectFloor.html

@@ -37,6 +37,9 @@
             </div>
         </div>
     </div>
-    <vc:create name="searchFloor"></vc:create>
-    <!--<vc:create name="addRoom"></vc:create>-->
+    <vc:create name="searchFloor"
+               @emitChooseFloor="roomSelectFloor"
+               @emitLoadData="room"
+    ></vc:create>
+    <vc:create name="addRoom"></vc:create>
 </div>

+ 4 - 4
WebService/src/main/resources/components/room-select-floor/roomSelectFloor.js

@@ -5,7 +5,7 @@
 
     vc.extends({
         propTypes: {
-            @OpenAddUnitModelName:string
+            @OpenAddRoomModelName:'string'
         },
         data:{
             floorInfo:{
@@ -18,7 +18,7 @@
 
         },
         _initEvent:function(){
-            vc.on('unitSelectFloor','chooseFloor',function(_floor){
+            vc.on('roomSelectFloor','chooseFloor',function(_floor){
                 vc.component.floorInfo = _floor;
             });
 
@@ -28,8 +28,8 @@
             openSearchFloorModel:function(){
                 vc.emit('searchFloor','openSearchFloorModel',{});
             },
-            openAddUnitModel:function(){
-                vc.emit(@OpenAddUnitModelName,'addUnitModel',{
+            openAddRoomModel:function(){
+                vc.emit(@OpenAddRoomModelName,'addRoomModel',{
                     floorId:vc.component.floorInfo.floorId
                 });
             },

+ 1 - 10
WebService/src/main/resources/components/room/room.html

@@ -1,19 +1,10 @@
 <div id="component" class="wrapper wrapper-content animated fadeInRight ecommerce">
     <vc:create name="roomSelectFloor"
-               @OpenAddUnitModelName="AddRoom"
+               @OpenAddRoomModelName="addRoom"
     ></vc:create>
     <div class="row">
         <div class="col-lg-12">
             <div class="ibox">
-                <div class="ibox-title">
-                    <h5>房屋信息</h5>
-                    <div class="ibox-tools" style="top:10px;">
-                        <button type="button" class="btn btn-primary btn-sm" v-on:click="_openAddRoomModal()">
-                            <i class="glyphicon glyphicon-plus"></i>
-                            添加房屋
-                        </button>
-                    </div>
-                </div>
                 <div class="ibox-content">
 
                     <table class="footable table table-stripped toggle-arrow-tiny" data-page-size="15">

+ 4 - 1
WebService/src/main/resources/components/room/room.js

@@ -9,12 +9,15 @@
             }
         },
         _initMethod:function(){
-            vc.component.listRoom();
+
         },
         _initEvent:function(){
             vc.on('room','listRoom',function(_param){
                   vc.component.listRoom();
             });
+            vc.on('room','loadData',function(_param){
+                vc.component.listRoom(_param);
+            });
         },
         methods:{
             listRoom:function(){

+ 2 - 1
WebService/src/main/resources/components/search-floor/searchFloor.html

@@ -55,4 +55,5 @@
                 </div>
             </div>
         </div>
-    </div>
+    </div>
+</div>

+ 6 - 2
WebService/src/main/resources/components/search-floor/searchFloor.js

@@ -1,5 +1,9 @@
 (function(vc){
     vc.extends({
+        propTypes: {
+           @emitChooseFloor:'string',
+           @emitLoadData:'string'
+        },
         data:{
             searchFloorInfo:{
                 floors:[],
@@ -41,8 +45,8 @@
                            );
             },
             chooseFloor:function(_floor){
-                vc.emit('unitSelectFloor','chooseFloor',_floor);
-                vc.emit('unit','loadUnit',{
+                vc.emit(@emitChooseFloor,'chooseFloor',_floor);
+                vc.emit(@emitLoadData,'loadData',{
                     floorId:_floor.floorId
                 });
                 $('#searchFloorModel').modal('hide');

+ 4 - 1
WebService/src/main/resources/components/unit-select-floor/unitSelectFloor.html

@@ -37,6 +37,9 @@
             </div>
         </div>
     </div>
-    <vc:create name="searchFloor"></vc:create>
+    <vc:create name="searchFloor"
+               @emitChooseFloor="unitSelectFloor"
+               @emitLoadData="unit"
+    ></vc:create>
     <vc:create name="addUnit"></vc:create>
 </div>

+ 4 - 0
WebService/src/main/resources/components/unit/unit.js

@@ -11,9 +11,13 @@
 
         },
         _initEvent:function(){
+
             vc.on('unit','loadUnit',function(_param){
                 vc.component._loadUnits(_param);
             });
+            vc.on('unit','loadData',function(_param){
+                vc.component._loadUnits(_param);
+            });
         },
         methods:{
             _loadUnits:function(_param){

+ 1 - 0
WebService/src/main/resources/static/js/vc-core.js

@@ -26,6 +26,7 @@
     vc.emit = function(_componentName,_value,_param){
         vc.component.$emit(_componentName+'_'+_value,_param);
     };
+
 })(window.vc);
 
 /**