chenyongxing 7 éve
szülő
commit
1d47b8792d

+ 8 - 0
src/main/java/com/yihu/hos/config/BeanConfig.java

@ -1,6 +1,7 @@
package com.yihu.hos.config;
import com.yihu.hos.interceptor.AuditInterceptor;
import feign.Request;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@ -183,4 +184,11 @@ public class BeanConfig {
    }
    // 解决 feign.RetryableException: Read timed out错误
    @Bean
    Request.Options feignOptions() {
        return new Request.Options(1 * 10000, 1 * 100000);
    }
}

+ 59 - 2
src/main/java/com/yihu/hos/system/controller/AppApiController.java

@ -56,8 +56,13 @@ public class AppApiController extends BaseController {
        try{
            Map<String, Object> params = new HashMap<>();
            Map<String, Object> filtersMap = new HashMap<>();
            filtersMap.put("parentId",parentId);
            filtersMap.put("appId",appId);
            if(!StringUtils.isEmpty(parentId)){
                filtersMap.put("parentId",parentId);
            }
            if(!StringUtils.isEmpty(appId)){
                filtersMap.put("appId",appId);
            }
            String filters = JSONObject.fromObject(filtersMap).toString();
            params.put("filters",filters);
            String schemaName = LocalContext.getContext().getAttachment(ContextAttributes.SCHEMA);
@ -117,4 +122,56 @@ public class AppApiController extends BaseController {
        }
    }
    @RequestMapping("/existence")
    @ResponseBody
    public Object isExistence(String filters){
        try {
            Map<String, Object> filterMap = new HashMap<>();
            if(!StringUtils.isEmpty(filters)){
                String[] filterArray = filters.split(";");
                for(String par:filterArray){
                    String[] split = par.split("=");
                    if(!StringUtils.isEmpty(split[1])&&!"null".equals(split[1])){
                        filterMap.put(split[0],split[1]);
                    }
                }
            }
            String schemaName = LocalContext.getContext().getAttachment(ContextAttributes.SCHEMA);
            Envelop envelop = appApiFegin.getApiNoPage(JSONObject.fromObject(filterMap).toString(), null, schemaName);
            return toJson(envelop);
        } catch (Exception e) {
            e.printStackTrace();
            Envelop result = new Envelop();
            result.setSuccessFlg(false);
            result.setErrorMsg("系统错误");
            return toJson(result);
        }
    }
    @RequestMapping("/create")
    @ResponseBody
    public Object create(String model){
        Envelop envelop = new Envelop();
        try {
            String schemaName = LocalContext.getContext().getAttachment(ContextAttributes.SCHEMA);
            AppApi appApi = appApiFegin.create(model,schemaName);
            if(appApi!=null){
                envelop.setSuccessFlg(true);
                envelop.setObj(appApi);
            }else{
                envelop.setSuccessFlg(false);
                envelop.setObj(appApi);
                envelop.setErrorMsg("保存失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
            envelop.setSuccessFlg(false);
            envelop.setErrorMsg("系统错误");
        }
        return toJson(envelop);
    }
}

+ 2 - 7
src/main/java/com/yihu/hos/system/controller/AppController.java

@ -17,7 +17,6 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.client.RestTemplate;
@ -63,12 +62,12 @@ public class AppController extends BaseController {
    /**
     * 应用列表
     *
     * @param request
     * @param
     * @return
     */
    @RequestMapping("/getAppList")
    @ResponseBody
    public Result getAppList(HttpServletRequest request, String name, String status) {
    public Result getAppList(String fields, String filters, String sorts, int page, int rows, String extParms) {
        try {
            //todo  name   status 待传
@ -76,10 +75,6 @@ public class AppController extends BaseController {
            //params.put("name", name);
            //params.put("status", status);
            String pageStr = StringUtils.isEmpty(request.getParameter("page")) ? "1" : request.getParameter("page");
            String rowsStr = StringUtils.isEmpty(request.getParameter("rows")) ? "10" : request.getParameter("rows");
            Integer page = Integer.valueOf(pageStr);
            Integer rows = Integer.valueOf(rowsStr);
            String schemaName = LocalContext.getContext().getAttachment(ContextAttributes.SCHEMA);

+ 1 - 1
src/main/java/com/yihu/hos/system/model/AppApi.java

@ -35,7 +35,7 @@ public class AppApi {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public Integer getId() {
        return id;

+ 0 - 53
src/main/webapp/WEB-INF/ehr/jsp/system/app/api/appApiCss.jsp

@ -1,53 +0,0 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="utf-8"%>
<%@include file="/WEB-INF/ehr/commons/jsp/commonInclude.jsp" %>
<style>
    .image-create{
        display: inline-block;
        margin-left: -4px;
        margin-top: 10px;
        width: 20px;
        height: 30px;
        background: url(${staticRoot}/images/tianjia_btn.png) no-repeat;
    }
    .image-create:hover{
        cursor: pointer;
        background: url(${staticRoot}/images/tianjia_pre.png) no-repeat;
    }
    .retrieve-border{
        display:block;
        border: 1px solid #D6D6D6;
        border-bottom: 0px
    }
    .l-tree .l-tree-text-height{
        height: 22px;
        line-height: 22px;
    }
    .l-tree span{
        height: 22px;
        line-height: 22px;
    }
    .body-head input{
        border: 0;
        font-size: 12px;
        width: 120px;
    }
    .back{
        border-right: 1px solid #d3d3d3;
    }
    .l-grid-row-hide{display: none !important}
    .row-icon{
        width: 16px;
        height: 16px;
        float: left;
        margin-top: 12px;
        margin-right: 10px;
        margin-left: 5px;
    }
</style>

+ 22 - 22
src/main/webapp/WEB-INF/ehr/jsp/system/app/api/appApiJs.jsp

@ -258,7 +258,7 @@
                }
                var title = mode=='add'?'新增': mode=='modify'? '修改': '查看';
                em.dialog = $.ligerDialog.open({
                    height: 600,
                    height: 650,
                    width: 500,
                    title: title,
                    url: urls.gotoModify,
@ -337,35 +337,35 @@
            var m = em;
             $.subscribe('app:plf:api:modify', m.gotoModify);
             $.subscribe('app:plf:api:del', m.del);
        }
    }
    window.closeDialog = function (msg, data) {
        openedDialog.close();
        if (msg)
            $.Notice.success(msg);
        },
        closeDialog:function (msg, data) {
            em.dialog.close();
            if (msg)
                $.Notice.success(msg);
        if(data){
            if(em.params.frm==0){
                if(data.obj.type==1){
                    em.grid.appendRow(data.obj);
            if(data){
                if(em.params.frm==0){
                    if(data.obj.type==1){
                        em.grid.appendRow(data.obj);
                    }else{
                        var parent = master.tree.getRow(em.params.rowId);
                        master.tree.appendRow(data.obj, parent);
                        master.tree.select(parent);
                    }
                }else{
                    var parent = master.tree.getRow(em.params.rowId);
                    master.tree.appendRow(data.obj, parent);
                    master.tree.select(parent);
                }
            }else{
                var rowDom = em.grid.getRow(em.params.rowId);
                em.grid.updateRow(rowDom, data.obj);
                if(data.obj.type!=1){
                    rowDom = master.tree.getRow($('#t_'+ data.obj.id, $('#treeMenu')).parent().parent().parent().parent().attr('id').split('|')[2]);
                    master.tree.updateRow(rowDom, data.obj);
                    var rowDom = em.grid.getRow(em.params.rowId);
                    em.grid.updateRow(rowDom, data.obj);
                    if(data.obj.type!=1){
                        rowDom = master.tree.getRow($('#t_'+ data.obj.id, $('#treeMenu')).parent().parent().parent().parent().attr('id').split('|')[2]);
                        master.tree.updateRow(rowDom, data.obj);
                    }
                }
            }
        }
    }
    var resizeContent = function () {
        var contentW = $('#grid_content').width();
        var leftW = $('#div_left').width();

+ 9 - 11
src/main/webapp/WEB-INF/ehr/jsp/system/app/api/dialog.jsp

@ -47,8 +47,6 @@
      <input type="text" id="ipt_api_activityType" data-type="select" class="required" data-attr-scan="activityType">
    </div>
  </div>
  <div>
    <div class="m-form-group">
      <label>版本<spring:message code="spe.colon"/></label>
      <div class="l-text-wrapper m-form-control essential apiProto">
@ -72,23 +70,23 @@
    <div class="m-form-group">
      <label>描述<spring:message code="spe.colon"/></label>
      <div class="l-text-wrapper m-form-control essential">
      <div class="l-text-wrapper m-form-control essential" style="height: 100px;">
        <textarea id="ipt_api_description" class="required" data-attr-scan="description">
          </textarea>
      </div>
    </div>
  </div>
  <div class="m-form-group f-pa update-footer">
  <div class="m-form-bottom">
    <div class="m-form-control">
      <div id="btn_save" class="l-button u-btn u-btn-primary u-btn-large f-ib f-vam f-mr10" >
        <span>保存</span>
      </div>
      <div id="btn_cancel" class="l-button u-btn u-btn-cancel u-btn-large f-ib f-vam f-mr10" >
      <div id="btn_cancel" class="l-button l-button-no">
        <span>关闭</span>
      </div>
<%--      <div id="btnEditor" class="l-button" style="display: no">
        <span>编辑</span>
      </div>--%>
      <div id="btn_save" class="l-button">
        <span>保存</span>
      </div>
    </div>
  </div>

+ 0 - 8
src/main/webapp/WEB-INF/ehr/jsp/system/app/api/dialogCss.jsp

@ -1,8 +0,0 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="utf-8"%>
<%@include file="/WEB-INF/ehr/commons/jsp/commonInclude.jsp" %>
<style>
    .m-form-inline .m-form-group label{ width: 130px; }
    .update-footer{right: 10px;bottom: 0;}
    .add-image{margin-top: 4px;}
</style>

+ 32 - 17
src/main/webapp/WEB-INF/ehr/jsp/system/app/api/dialogJs.jsp

@ -1,19 +1,33 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8" %>
<%@include file="/WEB-INF/ehr/commons/jsp/commonInclude.jsp" %>
<script src="${staticRoot}/lib/ligerui/plugins/ligerComboBox.js"></script>
<script src="${staticRoot}/lib/ehrjs/customCombo.js"></script>
<script src="${staticRoot}/lib/plugin/scrollbar/jquery.mCustomScrollbar.js"></script>
<script src="${staticRoot}/lib/ehrjs/formFieldTools.js"></script>
<script src="${staticRoot}/lib/ehrjs/toolBar.js"></script>
<script src="${staticRoot}/lib/module/ajax.js"></script>
<script src="${staticRoot}/lib/module/baseObject.js"></script>
<script src="${staticRoot}/lib/module/dataModel.js"></script>
<style>
    .m-form-inline .m-form-group label{ width: 130px; }
    .update-footer{right: 10px;bottom: 0;}
    .add-image{margin-top: 4px;}
    .m-form-group{margin-left: 20px !important;}
</style>
<script type="text/javascript">
        var urls = {
            update: "${contextRoot}/app/api/update",
            create: "${contextRoot}/app/api/create",
            existence: "${contextRoot}/app/api/existence",
            apiEdit: "${contextRoot}/app/api/edit",
            list: "${contextRoot}/app/api/list",
            appCombo: "${contextRoot}/app/platform/list"
            appCombo: "${contextRoot}/app/getAppList"
        }
        var model = ${model};
        var mode = '${mode}';
        //todo cyx 从上个页面获取信息
        //var extParms = getEditParms();//其他信息
        var extParms = parent.em.params;
        var hasChildType;
        var getChild = function (){
            if(mode=='modify' || mode=='view' || extParms.upType==-1)
@ -47,7 +61,7 @@
                var field = $(elm).attr('id');
                var val = $('#' + field).val();
                if(field=='ipt_api_name' && val!=model.name){
                    return uniqValid4List(urls.existence, "name="+val+" g1;parentId="+ model.parentId, "该应用代码已存在!");
                    return uniqValid4List(urls.existence, "name="+val+";parentId="+ model.parentId, "该应用代码已存在!");
                }
            });
@ -57,8 +71,8 @@
        var initForm = function () {
            var vo = [
                {type: 'text', id: 'ipt_api_description', opts: {height: 100}},
                {type: 'select', id: 'ipt_api_type', dictId: 46, opts: {disabled: mode=='modify', onSuccess: function (data) {
                        if(mode=='new'){
                {type: 'select', id: 'ipt_api_type', dictId: 'APP_API_TYPE', opts: {disabled: mode=='modify', onSuccess: function (data) {
                        if(mode=='add'){
                            var newData = [];
                            switch (parseInt(extParms.upType)){
                                case -1: $.each(data, function (i, v) {if(v.code==2) newData.push(v);}); break;
@ -97,9 +111,9 @@
                        validator.reset();
                    }
                }},
                {type: 'select', id: 'ipt_api_openLevel', dictId: 40, opts:{initVal: mode=='new'? '1': undefined}},
                {type: 'select', id: 'ipt_api_auditLevel', dictId: 41, opts:{initVal: mode=='new'? '1': undefined}},
                {type: 'select', id: 'ipt_api_activityType', dictId: 43},
                {type: 'select', id: 'ipt_api_openLevel', dictId: 'OPEN_LEVEL', opts:{initVal: mode=='add'? '1': undefined}},
                {type: 'select', id: 'ipt_api_auditLevel', dictId: 'AUDIT_STATUS', opts:{initVal: mode=='add'? '1': undefined}},
                {type: 'select', id: 'ipt_api_activityType', dictId: 'APP_STATUS'},
                {type: 'text', id: 'ipt_api_version'},
                {type: 'select', id: 'ipt_api_protocol', dictId: 44},
                {type: 'select', id: 'ipt_api_method', dictId: 45},
@ -109,7 +123,7 @@
            if(extParms.upType==-1 || model.type==2)
                appCombo = $('#ipt_api_name').customCombo(
                        urls.appCombo, {fields: 'id,name', filters: 'sourceType=1'}, function (id, name) {
                            if(mode=='new')
                            if(mode=='add')
                                $('#ipt_api_name').blur();
                            if(appCombo.getLigerComboBox().getSelected())
                                $('#appId').val(appCombo.getLigerComboBox().getSelected().id);
@ -119,7 +133,7 @@
                                var parms = g.grid.get("parms");
                                parms.filters = 'sourceType=1;';
                                if(searchParm)
                                    parms.filters += 'name?'+searchParm+' g1';
                                    parms.filters += 'name?'+searchParm;
                                g.grid.set({
                                    parms: parms,
                                    newPage: 1
@ -134,31 +148,32 @@
        var initBtn = function () {
            initValidation();
            $('#btn_save').click(function () {
                saveForm({url: urls.update, $form: $form, modelName: 'model', validator: validator,
                saveForm({url: urls.create, $form: $form, modelName: 'model', validator: validator,
                    onSuccess: function (data) {
                        data.obj.openLevelName = $('#ipt_api_openLevel').ligerGetComboBoxManager().findTextByValue(data.obj.openLevel);
                        if(data.obj.type==1){
                            $.Notice.confirm("保存成功,是否继续编辑接口详细信息?", function (y) {
                                if(y){
                                    var url = urls.apiEdit + '?treePid=1&treeId=11&mode=modify';
                                    closeDialog();
                                    debugger
                                    parent.em.closeDialog();
                                    $("#contentPage").empty();
                                    $("#contentPage").load(url, data.obj);
                                }else
                                    closeDialog(undefined, data);
                            })
                        }else
                            closeDialog("保存成功!", data);
                            parent.em.closeDialog("保存成功!", data);
                    }});
            });
            $('#btn_cancel').click(function () {
                closeDialog();
                parent.em.dialog.close();
            });
        };
        var init = function () {
            if(mode=='new'){
            if(mode=='add'){
                model.parentId = extParms.upId;
                model.appId = extParms.appId;
            }

+ 0 - 3
src/main/webapp/WEB-INF/ehr/jsp/system/app/feature/appFeatureJs.jsp

@ -348,8 +348,5 @@
    $(function () {
        em.init();
        master.init();
        window.getEditParms = function () {
            return em.params;
        }
    });
</script>

+ 142 - 0
src/main/webapp/develop/lib/ehrjs/customCombo.js

@ -0,0 +1,142 @@
(function ($, win) {
    var child = undefined;
    var el;
    var Util = $.Util;
    var gridOpts = {
        columns: [
            {display : '名称', name :'name',width : 210, align: 'left'}
        ],
        allowAdjustColWidth : true,
        editorTopDiff : 41,
        headerRowHeight : 0,
        heightDiff : 0,
        pageSize: 15,
        pagesizeParmName : 'rows',
        record : "totalCount",
        root : "detailModelList",
        rowHeight : 30,
        height: 200,
        rownumbers :false,
        switchPageSizeApplyComboBox: false,
        width :"98%",
        url: undefined
    };
    var comboOpts = {
        condition: {
            inputWidth: 90 ,
            width:0,
            labelWidth:0,
            hideSpace:true,
            fields: [{ name: 'param', label:''}] //搜索框的字段, name 必须是服务器返回的字段
        },
        child: undefined,
        grid: undefined,
        valueField: 'id',
        textField: 'name',
        selectBoxHeight : 300,
        readonly: false,
        parms: {},
        onSelected: undefined,
        conditionSearchClick: function(g){
            var searchParm = g.rules.length > 0 ? g.rules[0].value : '';
            var parms = g.grid.get("parms");
            parms.searchParm = searchParm;
            g.grid.set({
                parms: parms,
                newPage: 1
            });
            g.grid.reload();
        }
    };
    function CustomCombo(el, url, options, grodOpt){
        var girdOptsCopy = grodOpt ? $.extend({}, gridOpts, grodOpt) : $.extend({}, gridOpts);
        var opts = $.extend({}, comboOpts, options);
        girdOptsCopy.url = url;
        opts.grid = girdOptsCopy;
        this.options = opts;
        this.ligerComboBox = el.ligerComboBox(this.options)
        this._el = el;
    }
    CustomCombo.prototype.getLigerComboBox = function () {
        return this.ligerComboBox;
    };
    CustomCombo.prototype.setValue = function (v) {
        this.ligerComboBox.setValue(v);
        return this;
    };
    CustomCombo.prototype.setText = function (t) {
        this.ligerComboBox.setText(t);
        return this;
    };
    CustomCombo.prototype.setValueText = function (v, t) {
        this.ligerComboBox.setValue(v);
        this.ligerComboBox.setText(t);
        return this;
    };
    CustomCombo.prototype.reload = function (parms) {
        var manager = this.ligerComboBox;
        var grid = manager.getGrid();
        if(grid)
            grid.set({
                newPage: 1,
                parms: parms
            });
        manager.set({parms: parms});
        manager.reload();
        manager.clear();
    };
    CustomCombo.prototype.on = function (eventKey, callFunc) {
        $(this.getLigerComboBox().unselect).on(eventKey, callFunc);
    };
    $.fn.customCombo = function (url, parms, selectedCall, child, readOnly, opts, grodOpt) {
        el = this;
        if(!selectedCall)
            selectedCall = function(id, name){
                if(!name || !id)
                    return;
                $(el).blur();
                if(child){
                    var childManager = child.ligerGetComboBoxManager();
                    var parms = childManager.get("parms");
                    var grid = childManager.getGrid();
                    grid.set({
                        //parms: parms,
                        newPage: 1
                    });
                    parms.parentId = id;
                    parms.parentName = name;
                    childManager.set({
                        parms: parms,
                        newPage: 1
                    });
                    childManager.reload();
                    childManager.clear();
                }
            }
        opts = $.extend({}, {
            parms: parms,
            child: child,
            onSelected: selectedCall,
            readonly: readOnly || false
        }, opts);
        var me = new CustomCombo(el, url, opts, grodOpt);
        if(child)
            me.on("changeValue",function () {
                child.ligerGetComboBoxManager().clear();
            });
        return me;
    }
})(jQuery, window);

+ 17 - 17
src/main/webapp/develop/lib/ehrjs/formFieldTools.js

@ -74,23 +74,23 @@ function initSelDom(el, url, params, opts){
 * @returns {ligerComboBox}
 */
function initSystemSelDom(el, dictId, opts){
    // var defaultOpts = {
    //     url: $.Context.PATH + '/dict/searchDictEntryList',
    //     valueField: 'code',
    //     textField: 'value',
    //     dataParmName: 'detailModelList',
    //     parms: {dictId: dictId, page: 1, rows: 500}
    // };
    // opts = $.extend({}, defaultOpts, opts);
    // if(opts.initVal){
    //     var onSucFun = opts.onSuccess;
    //     opts.onSuccess = function(data){
    //         this.selectValue(opts.initVal);
    //         if(onSucFun)
    //             this.call(onSucFun, data);
    //     }
    // }
    // return $(el).ligerComboBox(opts);
    var defaultOpts = {
        url: window.root + '/dict/getDictItemList',
        valueField: 'code',
        textField: 'value',
        dataParmName: 'detailModelList',
        parms: {dictId: dictId, page: 1, rows: 500}
    };
    opts = $.extend({}, defaultOpts, opts);
    if(opts.initVal){
        var onSucFun = opts.onSuccess;
        opts.onSuccess = function(data){
            this.selectValue(opts.initVal);
            if(onSucFun)
                this.call(onSucFun, data);
        }
    }
    return $(el).ligerComboBox(opts);
}
function initValidate($form, onElementValidateForAjax){