dever 2 tahun lalu
induk
melakukan
77a9312408

+ 3 - 1
assets/layadmin/html/inc/script.html

@@ -38,5 +38,7 @@
 <script type="text/javascript" src="../script/lib/excel/xlsx.min.js"></script>
 <script type="text/javascript" src="../script/lib/excel/excel.js?v16"></script>
 
+<script type="text/javascript" src="../script/lib/layui/xm-select/xm-select.js"></script>
+
 <!-- 加载主要js,很乱,后续优化 -->
-<script type="text/javascript" src="../script/lib/manage/main.js?v669"></script>
+<script type="text/javascript" src="../script/lib/manage/main.js?700"></script>

+ 4 - 4
assets/layadmin/html/project/database/list.html

@@ -4,7 +4,7 @@
 <html>
 <head>
   <script class="include" system="" path="inc/" file="head">include()</script>
-  <link rel="stylesheet" href="../script/lib/layui/admin/modules/plugin/formselects/formselects.css" media="all" />
+  <!--<link rel="stylesheet" href="../script/lib/layui/admin/modules/plugin/formselects/formselects.css" media="all" />-->
 </head>
 <body> 
 <style id="addstyle">
@@ -188,12 +188,12 @@
     base: '../script/lib/layui/admin/' //静态资源所在路径
     ,version:false
   }).extend({
-    formSelects: 'plugin/formselects/formselects',
+    //formSelects: 'plugin/formselects/formselects',
     index: 'lib/index' //主入口模块
-  }).use(['index', 'contlist', 'table', 'form', 'formSelects', 'console'], function(){
+  }).use(['index', 'contlist', 'table', 'form', 'console'], function(){
     var table = layui.table;
     form = layui.form; 
-    var formSelects = layui.formSelects;
+    //var formSelects = layui.formSelects;
 
     if ($('#content_2').css('display') != 'none') {
       var bw = document.body.scrollWidth;

+ 4 - 4
assets/layadmin/html/project/database/update.html

@@ -4,7 +4,7 @@
 <html>
 <head>
   <script class="include" system="" path="inc/" file="head">include()</script>
-<link rel="stylesheet" href="../script/lib/layui/admin/modules/plugin/formselects/formselects.css" media="all" />
+<!--<link rel="stylesheet" href="../script/lib/layui/admin/modules/plugin/formselects/formselects.css" media="all" />-->
   <style>
     textarea{
       padding-top: 5px;
@@ -75,13 +75,13 @@
     ,version:true
   }).extend({
     index: 'lib/index', //主入口模块
-    formSelects: 'plugin/formselects/formselects',
+    //formSelects: 'plugin/formselects/formselects',
     skuTable: 'plugin/skuTable',
     sortable: 'plugin/sortable'
-  }).use(['index', 'contlist', 'table', 'form', 'formSelects', 'skuTable'], function(){
+  }).use(['index', 'contlist', 'table', 'form', 'skuTable'], function(){
     var table = layui.table;
     form = layui.form; 
-    var formSelects = layui.formSelects;
+    //var formSelects = layui.formSelects;
     skuTable = layui.skuTable;
 
     if ($('#sku_spec_type').length) {

+ 174 - 0
src/Lib/Input.php

@@ -970,6 +970,180 @@ class Input
      * @return string
      */
     public static function _select($param, $class = '', $hidden = '', $change = '')
+    {
+        $html = $class ? '<div class="' . $class . '">' : '';
+        $html .= $hidden;
+        $xm = true;
+
+        if (isset($param['option']) && isset($param['update']) && $param['update'] == 'select') {
+            $total = count($param['option']);
+            if ($total <= 30) {
+                $xm = false;
+            }
+        }
+
+        if ($xm && isset($param['update'])) {
+
+            $url = '';
+            //https://maplemei.gitee.io/xm-select/?select=#/basic/paging
+            if (isset($param['update_search'])) {
+                $search_value = '';
+                if (isset($param['value'])) {
+                    $search_value = $param['value'];
+                } elseif (isset($param['default'])) {
+                    $search_value = $param['default'];
+                }
+                if (strstr($param['update_search'], '{id}')) {
+                    $param['update_search'] = str_replace('{id}', 'where_id=' . $param['where_id'], $param['update_search']);
+                }
+                $url = Dever::url($param['update_search'] . '&yes='.$search_value.'&json=1');
+            }
+
+            $xm_data = array();
+            if (!$url && isset($param['option']) && $param['option']) {
+                foreach ($param['option'] as $k => $v) {
+                    if (is_array($v)) {
+                        $xm_data[] = array('name' => $v['name'], 'value' => $v['id']);
+                    } else {
+                        $xm_data[] = array('name' => $v, 'value' => $k);
+                    }
+                }
+            }
+
+            $xm_value = isset($param['value']) ? $param['value'] : $param['default'];
+            $xm_tips = '请选择';
+            $xm_data = Dever::json_encode($xm_data);
+            $xm_id = $param['name'];
+            $xm_radio = ($param['update'] == 'selects' ? false : true);
+            $xm_on = '';
+            if (isset($param['control']) && is_string($param['control'])) {
+                $xm_on = 'inputShow(e, \'' . $param['control'] . '\');';
+                $change = ' show_id="' . $param['control'] . '"';
+            } elseif (isset($param['load'])) {
+                $xm_on = 'loadChange(e, \'' . $param['load'] . '\');';
+            } elseif (isset($param['bind'])) {
+                $param['bind'][2] = isset($param['bind'][2]) ? str_replace('"', '\'', json_encode($param['bind'][2], true)) : false;
+                $xm_on = '' . $param['bind'][1] . '(e, ' . $param['bind'][2] . ', 1);';
+            }
+            if ($xm_on) {
+                $xm_on = 'function(data){
+                    var arr = data.arr;
+                    if (arr && arr.length > 0) {
+                        var xm_radio = '.$xm_radio.';
+                        if (xm_radio) {
+                            var e = $("#'.$xm_id.'");
+                            e.attr("v", arr[0].value);
+                            '.$xm_on.'
+                        }
+                    }
+                }';
+            }
+            $html .= '<div id="' . $param['name'] . '" '.$change.' class="xm-select-demo" style="width:200px"></div>';
+            $html .= '<script>
+            $(document).ready(function() {
+                layui.use(["table"], function() {
+                    init_xm("'.$xm_id.'", '.$xm_radio.', "'.$xm_tips.'", "'.$url.'", '.$xm_data.', ['.$xm_value.'], '.$xm_on.');
+                });
+            });
+            
+            </script>';
+        } else {
+            $child_class = '';
+            $style = '';
+            if (isset($param['child'])) {
+                $child_param['name'] = 'update_' . $param['child_name'];
+                isset($param['value']) && $param['value'] = $param['value'];
+                isset($param['child_value']) && $child_param['value'] = $param['child_value'];
+
+                $change = 'style="width:45%" id="' . $param['name'] . '" data-child="' . $child_param['name'] . '_child" ';
+                $child_class = ' change';
+            }
+
+            if (isset($param['control']) && is_string($param['control'])) {
+                $change = ' show_id="' . $param['control'] . '" onchange="inputShow($(this), \'' . $param['control'] . '\')"';
+            } elseif (isset($param['option_add'])) {
+                $change = ' onchange="addChange($(this))" ';
+                $style = 'width:25%';
+                $child_class .= ' change';
+            } elseif (isset($param['load'])) {
+                $change = ' onchange="loadChange($(this), \'' . $param['load'] . '\')" ';
+                $child_class .= ' change';
+            } elseif (isset($param['bind'])) {
+                $param['bind'][2] = isset($param['bind'][2]) ? str_replace('"', '\'', json_encode($param['bind'][2], true)) : false;
+                $change = $param['bind'][0] . '="' . $param['bind'][1] . '($(this), ' . $param['bind'][2] . ')" ';
+
+                $child_class .= ' change';
+            }
+
+            $html .= '<select class="update_value form-control ' . $child_class . '  ' . (isset($param['valid']) ? $param['valid'] : '') . '" name="' . $param['name'] . '" id="' . $param['name'] . '"  ' . $change . '  style="' . $style . '" data-validation-placeholder="0">';
+
+            if (isset($param['option'])) {
+
+                if (!isset($param['option'][-100]) && isset($param['lang']) && $param['lang']) {
+                    $html .= '<option value="0" selected>' . $param['lang'] . '</option>';
+                }
+
+                if (isset($param['option_add'])) {
+                    $html .= '<option value="0" data-type="add" data-url="'.Dever::url($param['option_add'][1]).'">' . $param['option_add'][0] . '</option>';
+                }
+
+                foreach ($param['option'] as $k => $v) {
+                    if (is_array($v)) {
+                        if (isset($v['lang']) && $v['lang']) {
+                            $value = $v['lang'];
+                        } else {
+                            $value = $v['name'];
+                        }
+                        
+                        isset($v['id']) && $k = $v['id'];
+                    } else {
+                        $value = $v;
+                    }
+                    $check = '';
+
+                    if ((isset($param['value']) && strstr(','. $param['value'] . ',', ',' . $k . ',')) || (isset($param['bit'][$k]) && isset($param['value']) && ($param['value'] & $k) > 0) || (empty($param['value']) && isset($param['default']) && strstr(',' . $param['default'] . ',', ',' . $k . ','))) {
+                        $check = 'selected';
+                    }
+
+                    $parent = '';
+                    if (isset($param['parent']) && $param['parent'] && isset($v[$param['parent']])) {
+                        $parent = $v[$param['parent']];
+                    }
+
+                    if (is_array($v)) {
+                        $value = isset($v['name']) ? $v['name'] : $v['lang'];
+                    } else {
+                        $value = $v;
+                    }
+
+                    $html .= '<option parent="'.$parent.'" value="' . $k . '" ' . $check . '>' . $value . '</option>';
+                }
+            }
+
+            $html .= '</select>';
+
+            if (isset($param['child'])) {
+                $child = $child_param['name'];
+                $hidden = self::hidden(array('name' => $child, 'class' => $child . '_child_value'));
+                foreach ($param['child'] as $k => $v) {
+                    $child_param['name'] = 'child-' . $k;
+                    $child_param['option'] = $v;
+
+                    $html .= self::select($child_param, $child . '_child ' . $child . '_child_' . $k . '" parent="' . $k . '" style="display:none;margin-top: -38px;margin-left: 47%;"', $hidden);
+                }
+            }
+        }
+
+        $html .= $class ? '</div>' : '';
+        return $html;
+    }
+
+    /**
+     * select
+     *
+     * @return string
+     *
+    public static function _select($param, $class = '', $hidden = '', $change = '')
     {
         $html = $class ? '<div class="' . $class . '">' : '';