123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504 |
- <head>
- <link rel="stylesheet" href="/static/css/common.css"/>
- <link rel="stylesheet" href="/static/layui/css/layui.css" media="all"/>
- <script type="text/javascript" src="/static/layui/layui.js"></script>
- <script type="text/javascript" src="/static/js/jquery.min.js"></script>
- <style type="text/css">
- .layout_dialog {
- background: linear-gradient(39deg, #081531 0%, #233d76 100%);
- overflow: hidden;
- outline: 0;
- border-radius: 2px;
- position: fixed !important;
- z-index: 10000;
- color: #B9E3FF;
- border: 1px solid #62A9FF;
- display: none;
- left: 50%;
- top: 50%;
- }
- .layout_close {
- background-image: url(/static/images/btn_close.png);
- width: 14px;
- height: 14px;
- float: right;
- background-repeat: no-repeat;
- margin: 12px 15px 0 0;
- cursor: pointer;
- }
- .person_info_title {
- float: left;
- width: 100%;
- height: 3rem;
- line-height: 3rem;
- background-color: rgb(29, 38, 71);
- text-align: center;
- color: #fff;
- letter-spacing: 1px;
- font-size: 1rem;
- }
- .clearn {
- background: #000000 !important;
- opacity: 0.7;
- width: 100%;
- height: 100%;
- z-index: 102;
- position: absolute;
- left: 0;
- top: 0;
- line-height: 0;
- font-size: 0;
- overflow: hidden;
- display: none;
- }
- </style>
- </head>
- <div class="layui-form hidden" lay-filter="example" style="margin:20px auto 0 auto;width:93%;" id="add_container_logic">
- <input type="hidden" id="id" name="id">
- <input type="hidden" id="check_object" name="check_object">
- <div class="layui-row">
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">* 节点:</label>
- <div class="layui-col-xs7">
- <input type="text" lay-verify="required" id="node_name" maxlength="50" placeholder="请输入" class="layui-input layui-form-danger">
- <span class="input_hint">与SCD文件中节点名称保持一致</span>
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">属性名:</label>
- <div class="layui-col-xs7">
- <input type="text" id="attr_name" maxlength="100" placeholder="请输入" class="layui-input layui-form-danger" value="">
- <span class="input_hint">属性名固定以'attr_'开始,其中大写字母均用'_'加小写形式</span>
- <span class="input_hint">多个属性条件之间使用'|'分隔</span>
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">校验范围:</label>
- <div class="layui-col-xs7">
- <input type="text" id="check_area" maxlength="255" placeholder="请输入" class="layui-input layui-form-danger">
- <span class="input_hint">为空时表示检查所有节点</span>
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">* 启用状态:</label>
- <div class="layui-col-xs7">
- <select id="enable">
- <option value="1">启用</option>
- <option value="0">禁用</option>
- </select>
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">告警等级:</label>
- <div class="layui-col-xs7">
- <select id="alert_level">
- <option value="error">错误</option>
- <option value="waring">警告</option>
- <option value="hint">提醒</option>
- </select>
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">校验规则:</label>
- <div class="layui-col-xs7">
- <div><input value="0" lay-filter="check_rules" type="checkbox" id="is_exists" >是否已定义</div>
- <div><input value="0" lay-filter="check_rules" type="checkbox" id="is_ref" >是否被引用</div>
- <div><input value="0" lay-filter="check_rules" type="checkbox" id="is_unique" >是否重复</div>
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">规则描述:</label>
- <div class="layui-col-xs7">
- <input type="text" id="check_desc" name="check_desc" maxlength="200" placeholder="请输入" class="layui-input layui-form-danger">
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">结果模板:</label>
- <div class="layui-col-xs7">
- <input type="text" id="hint_text" name="hint_text" maxlength="200" placeholder="请输入" class="layui-input layui-form-danger">
- </div>
- </div>
- </div>
- </div>
- <div class="layui-row" style="bottom: 0px;width:100%;text-align: center;line-height: 50px;">
- <button class="layui-btn layui-btn-normal" style="height: 30px;line-height: 28px;background-color: #ccc;margin:0px 5px 0 0;;opacity: 1;"
- onclick="parent.layer.closeAll();">取消</button>
- <button lay-submit lay-filter="saveButton" style="height: 30px;line-height: 28px;background-color: #1E9FFF;margin:0px 5px 0 0;opacity: 1;border: 1px solid #1E9FFF;" class="layui-btn layui-btn-normal">确定</button>
- </div>
- </div>
- <div class="layui-form hidden" lay-filter="example" style="margin:20px auto 0 auto;width:93%;" id="add_container_syntax">
- <input type="hidden" id="id" name="id" >
- <div class="layui-row">
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">* 规则名称:</label>
- <div class="layui-col-xs7">
- <input type="text" lay-verify="required" id="check_name" maxlength="50" placeholder="请输入" class="layui-input layui-form-danger">
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">* 规则描述:</label>
- <div class="layui-col-xs7">
- <input type="text" lay-verify="required" id="check_desc" maxlength="255" placeholder="请输入" class="layui-input layui-form-danger">
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">校验标准:</label>
- <div class="layui-col-xs7">
- <!--<select id="apply_standard">
- <option value="">请选择</option>
- </select>-->
- <input type="text" id="apply_standard" maxlength="255" placeholder="请输入" class="layui-input layui-form-danger">
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">校验标准条款:</label>
- <div class="layui-col-xs7">
- <input type="text" id="apply_standard_no" maxlength="255" placeholder="请输入" class="layui-input layui-form-danger">
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">规则类型:</label>
- <div class="layui-col-xs7">
- <select id="check_type">
- <option value="">请选择</option>
- </select>
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">* 校验对象类型:</label>
- <div class="layui-col-xs7">
- <select id="object_type">
- <option value="node">节点</option>
- <option value="attr">节点属性</option>
- <option value="nodevalue">节点值</option>
- </select>
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">* 校验对象名称:</label>
- <div class="layui-col-xs7">
- <input type="text" lay-verify="required" id="object_name" name="object_name" maxlength="255" placeholder="请输入" class="layui-input layui-form-danger">
- <span class="input_hint">与SCD文件中节点或者属性名保持一致</span>
- <span class="input_hint">多个属性联合校验时,使用'&&'连接</span>
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">上级节点:</label>
- <div class="layui-col-xs7">
- <input type="text" id="node_path" name="node_path" maxlength="255" placeholder="请输入" class="layui-input layui-form-danger" value="">
- <span class="input_hint">与SCD文件中节点名保持一致。多个节点使用','分隔</span>
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">* 启用状态:</label>
- <div class="layui-col-xs7">
- <select id="enable">
- <option value="1">启用</option>
- <option value="0">禁用</option>
- </select>
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">告警等级:</label>
- <div class="layui-col-xs7">
- <select id="alert_level">
- <option value="error">错误</option>
- <option value="waring">警告</option>
- <option value="hint">提醒</option>
- </select>
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">专用方法名:</label>
- <div class="layui-col-xs7">
- <input type="text" id="func_name" name="object_name" maxlength="50" placeholder="请输入" class="layui-input layui-form-danger">
- <span class="input_hint">非通用规则,需要专用程序实现校验时填写,方法名由开发人员提供</span>
- <span class="input_hint">由专用方法校验的规则后续内容均不用再填写</span>
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">关联校验范围:</label>
- <div class="layui-col-xs7">
- <input type="text" id="check_area" maxlength="255" placeholder="请输入" class="layui-input layui-form-danger">
- <span class="input_hint">为空时表示检查所有节点</span>
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">* 校验规则:</label>
- <div class="layui-col-xs7" id="check_rules">
- <div><input value="0" type="checkbox" lay-filter="check_rules" id="is_exists" >是否已定义</div>
- <div><input value="0" type="checkbox" lay-filter="check_rules" id="is_ref" >是否被引用</div>
- <div><input value="0" type="checkbox" lay-filter="check_rules" id="is_notnull" >不能为空</div>
- <div><input value="0" type="checkbox" lay-filter="check_rules" id="c_data_type" >数据类型
- <div class="layui-col-xs6 hidden" style="float: right;"><select id="data_type">
- <option value="">无限制</option>
- <option value="int">整型</option>
- <option value="bool">布尔型</option>
- <option value="float">单精度数字</option>
- <option value="16">16进制</option>
- </select></div>
- </div>
- <div><input value="0" type="checkbox" lay-filter="check_rules" id="c_data_lenght" >长度限制
- <div class="layui-col-xs6 hidden" style="float: right;">
- <input value="" type="text" id="min_len" placeholder="最小长度" class="layui-input" style="width: 40%;font-size: 0.7rem;float: left;">
- <span style="width: 20%;float: left;line-height: 32px;color: #666;"> 到 </span>
- <input value="" type="text" id="max_len" placeholder="最大长度" class="layui-input" style="width: 40%;font-size: 0.7rem;float: left;">
- </div>
- </div>
- <div><input value="0" type="checkbox" lay-filter="check_rules" id="c_data_area" >取值范围
- <div class="layui-col-xs6 hidden" style="float: right;">
- <input value="" type="text" id="min_value" placeholder="最小值" class="layui-input" style="width: 40%;font-size: 0.7rem;float: left;">
- <span style="width: 20%;float: left;line-height: 32px;color: #666;"> 到 </span>
- <input value="" type="text" id="max_value" placeholder="最大值" class="layui-input" style="width: 40%;font-size: 0.7rem;float: left;">
- </div>
- </div>
- <div><input value="0" type="checkbox" lay-filter="check_rules" id="isunique_by_global" >全局唯一</div>
- <div><input value="0" type="checkbox" lay-filter="check_rules" id="isunique_by_parent" >仅父节点内唯一</div>
- <div><input value="0" type="checkbox" lay-filter="check_rules" id="c_data_const_value" >值校验:固定值
- <div class="layui-col-xs6 hidden" style="float: right;">
- <input value="" type="text" id="const_value" placeholder="请输入" class="layui-input" style="font-size: 0.8rem;float: left;" maxlength="255">
- </div>
- </div>
- <div><input value="0" type="checkbox" lay-filter="check_rules" id="c_data_emun_value" >值校验:枚举值
- <div class="layui-col-xs6 hidden" style="float: right;">
- <input value="" type="text" id="emun_value" placeholder="请输入,多个值间','分隔" class="layui-input" style="font-size: 0.8rem;float: left;" maxlength="255">
- </div>
- </div>
- <div><input value="0" type="checkbox" lay-filter="check_rules" id="c_data_regexp_value" >值校验:正则式
- <div class="layui-col-xs6 hidden" style="float: right;">
- <input value="" type="text" id="regexp_value" placeholder="请输入" class="layui-input" style="font-size: 0.8rem;float: left;" maxlength="255">
- </div>
- </div>
- </div>
- </div>
- </div>
- <div class="layui-col-md12">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">结果输出模板:</label>
- <div class="layui-col-xs7">
- <input type="text" id="hint_text" name="hint_text" maxlength="255" placeholder="请输入" class="layui-input layui-form-danger">
- </div>
- </div>
- </div>
- </div>
- <div class="layui-row" style="bottom: 0px;width:100%;text-align: center;line-height: 50px;">
- <button class="layui-btn layui-btn-normal" style="height: 30px;line-height: 28px;background-color: #ccc;margin:0px 5px 0 0;;opacity: 1;"
- onclick="parent.layer.closeAll();">取消</button>
- <button lay-submit lay-filter="saveButton" style="height: 30px;line-height: 28px;background-color: #1E9FFF;margin:0px 5px 0 0;opacity: 1;border: 1px solid #1E9FFF;" class="layui-btn layui-btn-normal">确定</button>
- </div>
- </div>
- <script type="text/javascript">
- var opt=parent.ActiveCurdObject.Row==null?"add":"edit";//操作
- var ruleType=parent.ActiveCurdObject.opt.data.ruleType;
- $(document).ready(function () {
- $("#add_container_"+ruleType).removeClass("hidden").find("#rule_type").val(ruleType);
- //判断是新增还是修改
- var tableId = parent.ActiveCurdObject.Row!=null ? parent.ActiveCurdObject.Row.id : "";
- //如果确定该新增为从表数据,则务必检查并执行以下操作
- if(parent.ActiveCurdObject.MasterData!=null){
- for (var key in parent.ActiveCurdObject.MasterData) {
- value = parent.ActiveCurdObject.MasterData[key];
- var yy1=$("#add_container_"+ruleType+" #" + key.toLowerCase());
- if (yy1.length == 1) yy1.val(value);
- }
- }
- if(parent.check_type_list!=null){
- var check_type_options=["<option value=''>请选择</option>"];
- for (var i = 0; i < parent.check_type_list.length; i++) {
- check_type_options.push("<option value='"+parent.check_type_list[i].id+"'>"+parent.check_type_list[i].name+"</option>");
- }
- $("#check_type").html(check_type_options.join(""));
- layui.form.render("select");
- }
- /*
- if(parent.apply_standard_list!=null){
- var apply_standard_options=["<option value=''>请选择</option>"];
- for (var i = 0; i < parent.apply_standard_list.length; i++) {
- apply_standard_options.push("<option value='"+parent.apply_standard_list[i].id+"'>"+parent.apply_standard_list[i].name+"</option>");
- }
- $("#apply_standard").html(apply_standard_options.join(""));
- layui.form.render("select");
- }
- */
- layui.use(['layer', 'form'], function () {
- if (tableId != 0 && tableId != "") {
- //修改时,回填信息
- parent.ActiveCurdObject.One(tableId,function(returnData){
- if (returnData["code"]==0 && returnData["data"].length>0) {
- var data = returnData["data"][0], value = null;
- if (data != null && data != "") {
- if(ruleType=="syntax"){
- //如果是语法语义规则,需要针对校验规则的复选条件重新组装一下数据,否则不能正确的回填数据及显示
- if(data["data_type"]!="") data["c_data_type"]=1;
- if(data["min_len"]!="0" || data["max_len"]!="0") data["c_data_lenght"]=1;
- if($.trim(data["min_value"])!="" && $.trim(data["max_value"])!="") data["c_data_area"]=1;
- if(data["const_value"]!="") data["c_data_const_value"]=1;
- if(data["emun_value"]!="") data["c_data_emun_value"]=1;
- if(data["regexp_value"]!="") data["c_data_regexp_value"]=1;
- if(data["min_len"]!="0" && data["max_len"]=="0") data["max_len"]="";
- }
- for (var key in data) {
- value = data[key];
- var yy1=$("#add_container_"+ruleType+" #" + key.toLowerCase());
- if (yy1.length == 1) {
- yy1.val(value);
- if(value==1 &&( yy1[0].type=="checkbox" || yy1[0].type=="radio")){
- yy1.attr("checked",true).next().next().removeClass("hidden");
- }
- }
- }
- if(data["check_object"]!=null && data["check_object"]!=""){
- var tmpLst=data["check_object"].split(":");
- $("#add_container_"+ruleType+" #node_name").val(tmpLst[0]);
- if(tmpLst.length>1 && tmpLst[1].indexOf(".")>0) $("#add_container_"+ruleType+" #attr_name").val(tmpLst[1]);
- }
- layui.form.render("select");
- layui.form.render("checkbox");
- }
- }else{
- layer.msg("数据加载错误:"+returnData.msg)
- }
- });
- }
- layui.form.render("checkbox");
- layui.form.on("checkbox(check_rules)",function(data){
- var ele=data.othis,v=data.value;
- if(data.elem.checked){
- data.elem.value=1;
- ele.next().removeClass("hidden");
- }else{
- data.elem.value=0;
- ele.next().addClass("hidden").find("input,select").val("");
- }
- });
- //保存事件
- layui.form.on('submit(saveButton)', function (data) {
- var parameter = {};
- $("#add_container_"+ruleType+" input,#add_container_"+ruleType+" select").each(function(){
- var eid=$.trim($(this).attr("id"));
- if (eid==""){
- return;
- }
- parameter[eid]=$.trim($(this).val());
- });
- if(ruleType=="logic"){
- if(parameter["node_name"]==""||parameter["skeepday"]==""||parameter["tablename"]==""||parameter["colname"]==""){
- layer.msg("必填项不能为空!");
- return false;
- }
- if(parameter["attr_name"]=="") parameter["check_object"] = parameter["node_name"]+":"+parameter["node_name"];
- else{
- parameter["check_object"] = parameter["node_name"]+":"+parameter["attr_name"];
- }
- }else{
- if(parameter["object_name"]==""){
- layer.msg("必填项不能为空!");
- return false;
- }
- var isSelectCheckItem=0;
- $("#check_rules input[type='checkbox']:checked").each(function(){
- isSelectCheckItem += $(this).val()*1;
- });
- if($.trim(parameter["func_name"])=="" && isSelectCheckItem==0){
- layer.msg("请选择至少一项校验规则!");
- return false;
- }
- if(parameter["c_data_lenght"]=="1" ){
- if(parameter["min_len"]=="" && parameter["max_len"]==""){
- layer.msg("最小长度和最大长度不能为空!");
- return false;
- }
- if(parameter["min_len"]=="0" && parameter["max_len"]=="0"){
- layer.msg("最小长度和最大长度不能同时为0!");
- return false;
- }
- if(parameter["min_len"]<0 || parameter["max_len"]<0){
- layer.msg("最小长度和最大长度不能小于0!");
- return false;
- }
- if(parameter["min_len"].indexOf(".")>-1 || parameter["max_len"].indexOf(".")>-1){
- layer.msg("最小长度和最大长度只能为正整数!");
- return false;
- }
- if(parameter["min_len"]> parameter["max_len"]){
- layer.msg("最小长度不能大于最大长度!");
- return false;
- }
- }
- delete(parameter["c_data_lenght"]); //该数据不提交
- if(parameter["c_data_area"]=="1" ){
- if(parameter["min_value"]=="" || parameter["max_value"]==""){
- layer.msg("最小值和最大值不能为空!");
- return false;
- }
- }
- delete(parameter["c_data_area"]); //该数据不提交
- if(parameter["c_data_const_value"]=="1" && parameter["const_value"]==""){
- layer.msg("固定值不能为空!");
- return false;
- }
- delete(parameter["c_data_const_value"]);//该数据不提交
- if(parameter["c_data_emun_value"]=="1" && parameter["emun_value"]==""){
- layer.msg("枚举值不能为空!");
- return false;
- }
- parameter["emun_value"]=parameter["emun_value"].replace(/,/gi,",");
- delete(parameter["c_data_emun_value"]);//该数据不提交
- if(parameter["c_data_regexp_value"]=="1" && parameter["regexp_value"]==""){
- layer.msg("正则式不能为空!");
- return false;
- }
- delete(parameter["c_data_regexp_value"]);//该数据不提交
- }
- parent.ActiveCurdObject.Save(parameter,function(){
- parent.ActiveCurdObject.Reset();
- });
- });
- });
- });
- </script>
|