123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289 |
- layui.define(['form'], function (exports) {
- var form = layui.form,
- $ = layui.jquery,
- index = 0,
- oldId,
- MOD_NAME = 'labelGeneration',
- formField = {
- label: {
- id: '-1',
- tag: "label",
- },
- },
- labelGeneration = {
- set: function (options) {
- var that = this;
- that.config = $.extend({}
- , that.config
- , options);
- return that;
- }
- //事件监听
- , on: function (events
- , callback) {
- return layui.onevent.call(this
- , MOD_NAME
- , events
- , callback);
- }
- },
- Class = function (options) {
- var that = this;
- that.config = $.extend({}
- , that.config
- , labelGeneration.config
- , options);
- that.render();
- },
- thisIns = function () {
- var that = this
- , options = that.config;
- return {
- reload: function (options) {
- that.reload.call(that
- , options);
- }, getOptions: function () {
- return options || null;
- }, getData: function () {
- return options.data || null;
- }
- }
- }
- Class.prototype.config = {
- version: "1.0.0"
- , Author: "谁家没一个小强"
- , generateId: 0
- , data: []
- , isEnter: false
- };
- /* 自动生成ID 当前页面自动排序*/
- Class.prototype.autoId = function (tag) {
- var that = this,
- options = that.config;
- options.generateId = options.generateId + 1;
- return tag + '_' + options.generateId;
- }
- Class.prototype.components = {
- label: {
- render: function (json,options) {
- var _html = '<blockquote class="layui-elem-quote">';
- _html += '<div class="layui-form layui-form-pane layui-form-item">';
- _html += '<label class="layui-form-label">输入手机号</label>';
- _html += '<div class="layui-input-inline">';
- if (options.isEnter) {
- _html += '<input type="text" id="{0}" lay-verify="required" placeholder="按回车生成手机号" autocomplete="off" class="layui-input">'
- .format(json.id);
- } else {
- _html += '<input type="text" id="{0}" lay-verify="required" placeholder="通过按钮生成标签" autocomplete="off" class="layui-input">'
- .format(json.id);
- }
- _html += '</div>';
- if (!options.isEnter) {
- _html += '<button type="button" id="{0}-button" class="layui-btn layui-btn-normal">确定</button>'.format(json.id);
- }
- // _html += '<label class="layui-form-label">颜色选择</label>';
- // _html += '<div class="layui-input-inline">';
- // _html += '<select lay-filter="{0}-switchTest">'.format(json.id);
- // _html += '<option value="" selected>墨绿色</option>';
- // _html += '<option value="layui-btn-primary">原始色</option>';
- // _html += '<option value="layui-btn-normal">天蓝色</option>';
- // _html += '<option value="layui-btn-warm">暖黄色</option>';
- // _html += '<option value="layui-btn-danger">红色</option>';
- // _html += '</select>';
- // _html += '</div>';
- _html += '</div>';
- _html += '<div id="{0}-content"></div>'.format(json.id);
- _html += '</blockquote>';
- return _html;
- },
- update: function (json) {
- },
- /* 获取对象 */
- jsonData: function (id, that) {
- //分配一个新的ID
- var _json = JSON.parse(JSON.stringify(formField.label));
- _json.id = id == undefined ? that.autoId(_json.tag) : id;
- that.checkId(_json,that);
- return _json;
- }
- }
- };
- /* 判定id是否重复*/
- Class.prototype.checkId = function (json,that) {
- if ($("#" + json.id + "-content").length != 0) {
- json.id = that.autoId(json.tag);
- that.checkId(json);
- } else {
- return;
- }
- }
- // Class.prototype.bindGridSortEvent = function (json) {
- // var that = this
- // , options = that.config;
- // var formItemSort = Sortable.create(document.getElementById(json.id + "-content"), {
- // group: {
- // name: 'group' + json.id
- // },
- // animation: 1000,
- // onEnd: function (evt) {
- // var _values = $("#" + json.id + "-content").find("div");
- // var ops = [];
- // for (var i = 0; i < _values.length; i++) {
- // ops.push({"ngColor": $(_values[i]).attr("ng-color"), "value": $(_values[i]).text()});
- // }
- // options.data = ops;
- // }
- // });
- // }
- /* 绑定事件*/
- Class.prototype.deleteValue = function (value, ngValue) {
- var that = this
- , options = that.config;
- for (var i = 0; i < options.data.length; i++) {
- if (options.data[i].value === value && options.data[i].ngColor === ngValue) {
- options.data.splice(i, 1);
- break;
- }
- }
- }
- /* 绑定事件*/
- Class.prototype.bindPropertyEvent = function (_json) {
- var that = this
- , options = that.config;
- var colorClass = "";
- if (options.isEnter) {
- $("#" + _json.id).keypress(function (event) {
- if (event.which === 13) {
- var _value = $(this).val();
- if (!_value) {
- layer.msg('请输入手机号!')
- return;
- }
- if (!/^1[3456789]\d{9}$/.test(_value)) {
- layer.msg('手机号格式错误!')
- return;
- }
- let arr = $("#" + _json.id + "-content .layui-btn")
- for (let i = 0; i < arr.length; i++) {
- if ($(arr[i]).text().trim() == _value) {
- layer.msg('输入手机号重复!')
- return
- }
- }
-
- index = index + 1;
- var _html = '<div class="layui-btn {0} none-transition" id="{2}" ng-index="{3}" ng-color="{0}">{1}<i class="layui-icon layui-icon-close"></i></div>'
- .format(colorClass, _value, _json.id + index, index);
- $("#" + _json.id + "-content").append(_html);
- $("#" + _json.id).val('');
- options.data.push({"ngColor": colorClass, "value": _value});
- $("#" + _json.id + index + " .layui-icon-close").click(function () {
- that.deleteValue($(this).parent().text(), $(this).parent().attr("ng-color"));
- $(this).parent().remove();
- });
- }
- });
- } else {
- $("#" + _json.id + "-button").click(function (event) {
- var _value = $("#" + _json.id).val();
- index = index + 1;
- var _html = '<div class="layui-btn {0} none-transition" id="{2}" ng-index="{3}" ng-color="{0}">{1}<i class="layui-icon layui-icon-close"></i></div>'
- .format(colorClass, _value, _json.id + index, index);
- $("#" + _json.id + "-content").append(_html);
- options.data.push({"ngColor": colorClass, "value": _value});
- $("#" + _json.id + index + " .layui-icon-close").click(function () {
- that.deleteValue($(this).parent().text(), $(this).parent().attr("ng-color"));
- $(this).parent().remove();
- });
- });
- }
- form.on('select(' + _json.id + '-switchTest)', function (data) {
- colorClass = data.value;
- });
- for (var i = 0; i < options.data.length; i++) {
- index = index + 1;
- var _html = '<div class="layui-btn {0} none-transition" id="{2}" ng-index="{3}" ng-color="{0}">{1}<i class="layui-icon layui-icon-close"></i></div>'
- .format(options.data[i].ngColor, options.data[i].value, _json.id + index, index);
- $("#" + _json.id + "-content").append(_html);
- $("#" + _json.id + index + " .layui-icon-close").click(function () {
- that.deleteValue($(this).parent().text(), $(this).parent().attr("ng-color"));
- $(this).parent().remove();
- });
- }
- }
- /* 渲染组件 */
- Class.prototype.renderComponents = function () {
- var that = this
- , options = that.config;
- var elem = $(options.elem);
- elem.empty();
- var jsonData = that.components['label'].jsonData(undefined, that);
- elem.append(that.components['label'].render(jsonData,options));
- that.bindPropertyEvent(jsonData);
- // that.bindGridSortEvent(jsonData);
- form.render();
- }
- Class.prototype.reload = function (options) {
- var that = this;
- options = options || {};//如果是空的话,就赋值 {}
- that.config = $.extend({}
- , that.config
- , labelGeneration.config
- , options);
- that.render();
- }
- //核心入口 初始化一个 regionSelect 类
- labelGeneration.render = function (options) {
- var ins = new Class(options);
- return thisIns.call(ins);
- }
- /**
- * 渲染组件
- */
- Class.prototype.render = function (options) {
- var that = this
- , options = that.config;
- that.renderComponents();
- }
- String.prototype.format = function (args) {
- var result = this;
- if (arguments.length > 0) {
- if (arguments.length == 1 && typeof (args) == "object") {
- for (var key in args) {
- if (args[key] != undefined) {
- var reg = new RegExp("({" + key + "})"
- , "g");
- result = result.replace(reg
- , args[key]);
- }
- }
- } else {
- for (var i = 0; i < arguments.length; i++) {
- if (arguments[i] != undefined) {
- var reg = new RegExp("({[" + i + "]})"
- , "g");
- result = result.replace(reg
- , arguments[i]);
- }
- }
- }
- }
- return result;
- }
- exports(MOD_NAME, labelGeneration);
- });
|