official_website/static/js/diy_form_edit.js

884 lines
36 KiB
JavaScript
Raw Normal View History

2024-12-02 13:57:08 +08:00
/*
* @Descripttion :
* @Author : liuzhifang
* @Date : 2022-06-15 11:19:09
* @LastEditors : QianFox Team
* @LastEditTime : 2024-08-13 09:21:59
*/
// 添加字段
$('.select-field-box .field-item').on('click', function () {
let $this = $(this),
$diyContainer = $('#previewDiyForm'),
$formContainer = $('#diyFormSet'),
type = $this.attr('data-type'),
diyId = 'diyid' + new Date().getTime(),
fieldHtml = '',
itemHtml = '';
switch (type) {
case 'inputtext':
fieldHtml = _inputPreviewHtml();
break;
case 'textarea':
fieldHtml = _textareaPreviewHtml();
break;
case 'radio':
fieldHtml = _radioPreviewHtml();
break;
case 'checkbox':
fieldHtml = _checkboxPreviewHtml();
break;
case 'select':
fieldHtml = _selectPreviewHtml();
break;
case 'switch':
fieldHtml = _switchPreviewHtml();
break;
case 'datepicker':
case 'timepicker':
case 'datetimepicker':
fieldHtml = _datetimepickerPreviewHtml(type);
break;
case 'image':
fieldHtml = _imagePreviewHtml();
break;
case 'color':
fieldHtml = _colorPreviewHtml();
break;
}
switch (type) {
case 'inputtext':
itemHtml = _inputDiyHtml();
break;
case 'textarea':
itemHtml = _textareaDiyHtml();
break;
case 'radio':
itemHtml = _radioDiyHtml();
break;
case 'checkbox':
itemHtml = _checkboxDiyHtml();
break;
case 'select':
itemHtml = _selectDiyHtml();
break;
case 'switch':
itemHtml = _switchDiyHtml();
break;
case 'datepicker':
case 'timepicker':
case 'datetimepicker':
itemHtml = _datetimepickerDiyHtml(type);
break;
case 'image':
itemHtml = _imageDiyHtml();
break;
case 'color':
itemHtml = _colorDiyHtml();
break;
}
if (fieldHtml && itemHtml) {
$diyContainer.append(`<div class="item" id="${diyId}" data-type="${type}" style="display:none">` + fieldHtml + '</div>');
$formContainer.append(
[
`<li class="foxui-drag-item" data-diyid="${diyId}" data-type="${type}" style="display:none">`,
'<div class="foxui-drag-content">',
'<div class="foxui-row foxui-gutter-6 foxui-align-items-center">',
itemHtml,
'</div>',
'</div>',
'</li>',
].join('')
);
$(`#${diyId}`).slideDown();
$(`.foxui-drag-item[data-diyid="${diyId}"]`).slideDown();
}
});
// 修改label
$(document).on('input', '#diyFormSet .form-label', function () {
let $this = $(this),
value = $this.val(),
id = $this.closest('.foxui-drag-item').attr('data-diyid');
$(`#${id} .form-label`).text(value);
});
// 修改 placeholder
$(document).on('input', '#diyFormSet .form-input-placeholder', function () {
let $this = $(this),
value = $this.val(),
id = $this.closest('.foxui-drag-item').attr('data-diyid');
$(`#${id} .form-input-placeholder`).attr('placeholder', value);
});
// 修改是否必填
$(document).on('click', '#diyFormSet .form-label-require', function () {
let $this = $(this),
isChecked = $this.is('.is-checked'),
id = $this.closest('.foxui-drag-item').attr('data-diyid'),
$label = $(`#${id} .form-label`);
isChecked ? $label.addClass('foxui-required') : $label.removeClass('foxui-required');
});
// 删除选项
$(document).on('click', '#diyFormSet .delete-option-btn', function () {
let $this = $(this),
$option = $this.closest('.foxui-input-group'),
index = $option.index(),
id = $this.closest('.foxui-drag-item').attr('data-diyid'),
len = $(`#${id}`).find('.form-option').length;
$(`#${id}`)
.find('.form-option')
.eq(index)
.fadeOut(function () {
$(this).remove();
});
$option.slideUp(function () {
$(this).remove();
});
if (len <= 2) {
$('#diyFormSet').find('.delete-option-btn').attr('disabled', true).addClass('is-disabled');
}
});
// 添加选项
$(document).on('click', '#diyFormSet .add-option-btn', function () {
let $this = $(this),
$optionContainer = $this.parent().siblings('.option-box'),
$option = $optionContainer.find('.foxui-input-group'),
type = $this.attr('data-type'),
len = $option.length,
id = $this.closest('.foxui-drag-item').attr('data-diyid'),
html = '',
optionHtml = '';
if (len < 2) {
$option.find('.delete-option-btn').attr('disabled', false).removeClass('is-disabled');
}
if (type === 'radio') {
html = [
'<div class="foxui-input-group" style="display:none">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">选项</div>',
'<input class="foxui-size-small form-input-option" placeholder="请输入" value="选项" />',
'</div>',
'<button class="foxui-text-primary foxui-size-small delete-option-btn margin-left-8">删除</button>',
'</div>',
].join('');
optionHtml = [
'<div class="foxui-radio form-option" style="display:none">',
'<span class="foxui-radio-input">',
'<i class="foxui-radio-icon"></i>',
'<input type="radio" value="" />',
'</span>',
'<span class="foxui-radio-label option-label">选项</span>',
'</div>',
].join('');
} else if (type === 'checkbox') {
html = [
'<div class="foxui-input-group" style="display:none">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">选项</div>',
'<input class="foxui-size-small form-input-option" placeholder="请输入" value="选项" />',
'</div>',
'<button class="foxui-text-primary foxui-size-small delete-option-btn">删除</button>',
'</div>',
].join('');
optionHtml = [
'<div class="foxui-checkbox form-option" style="display:none">',
'<span class="foxui-checkbox-input">',
'<i class="foxui-checkbox-icon"></i>',
'<input type="checkbox" value="" />',
'</span>',
'<span class="foxui-checkbox-label option-label">选项</span>',
'</div>',
].join('');
} else if (type === 'select') {
html = [
'<div class="foxui-input-group" style="display:none">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">选项</div>',
'<input class="foxui-size-small form-input-option" placeholder="请输入" value="选项" />',
'</div>',
'<button class="foxui-text-primary foxui-size-small delete-option-btn margin-left-8">删除</button>',
'</div>',
].join('');
optionHtml = ['<li class="foxui-select-item form-option" style="display:none"><span class="option-label">选项</span></li>'].join('');
}
$optionContainer.append(html);
$optionContainer.find('.foxui-input-group:last-child').slideDown();
$(`#${id}`).find('.form-option-group').append(optionHtml);
$(`#${id} .form-option-group .form-option:last-child`).fadeIn();
});
// 修改选项
$(document).on('input', '#diyFormSet .option-box .form-input-option', function () {
let $this = $(this),
index = $this.closest('.foxui-input-group').index(),
value = $this.val(),
id = $this.closest('.foxui-drag-item').attr('data-diyid');
$(`#${id} .form-option`).eq(index).find('.option-label').text(value);
});
// 修改图片数量
$(document).on('input', '#diyFormSet .image-count', function () {
let $this = $(this),
count = $this.val(),
id = $this.closest('.foxui-drag-item').attr('data-diyid');
$(`#${id} .foxui-images`).attr('data-count', count);
});
// input 预览 html
function _inputPreviewHtml() {
return [
'<div class="foxui-input-group">',
'<label class="foxui-required form-label">单行文本:</label>',
'<input class="foxui-size-small form-input-placeholder" placeholder="请输入" style="flex:1" value="" />',
'</div>',
].join('');
}
// input 表单设置 html
function _inputDiyHtml() {
return [
'<div class="foxui-col-xs-2 foxui-col-sm-2 display-flex foxui-justify-content-center">',
'<span class="foxui-drag-handle foxui-icon-liebiao-o"></span>',
'</div>',
'<div class="foxui-col-xs-2 foxui-col-sm-2">',
'<span>单行文本</span>',
'</div>',
'<div class="foxui-col-xs-5 foxui-col-sm-5">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">标题</div>',
'<input class="foxui-size-small form-label title" placeholder="请输入" value="单行文本" />',
'</div>',
'</div>',
'</div>',
'<div class="foxui-col-xs-9 foxui-col-sm-9">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">说明</div>',
'<input class="foxui-size-small explain" placeholder="请输入说明文字" value="" />',
'</div>',
'</div>',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">提示语</div>',
'<input class="foxui-size-small form-input-placeholder tip" placeholder="请输入" value="请输入" />',
'</div>',
'</div>',
'</div>',
'<div class="foxui-col-xs-4 foxui-col-sm-4">',
'<div class="display-flex foxui-justify-content-center">',
'<div class="foxui-switch is-checked form-label-require">',
'<input type="checkbox" value="" checked="checked" class="foxui-switch-input required" />',
'<span class="foxui-switch-core"></span>',
'</div>',
'<label class="margin-left-8">必填</label>',
'</div>',
'</div>',
'<div class="foxui-col-xs-2 foxui-col-sm-2 display-flex foxui-justify-content-center">',
'<button class="foxui-text-primary foxui-size-small delete-item-btn">删除</button>',
'</div>',
].join('');
}
// textarea 预览 html
function _textareaPreviewHtml() {
return [
'<div class="foxui-input-group foxui-align-items-start">',
'<label class="foxui-required form-label">多行文本:</label>',
'<div class="foxui-textarea" style="flex:1">',
'<textarea class="form-input-placeholder" autocomplete="off" rows="3" placeholder="请输入"></textarea>',
'</div>',
'</div>',
].join('');
}
// textarea 表单设置 html
function _textareaDiyHtml() {
return [
'<div class="foxui-col-xs-2 foxui-col-sm-2 display-flex foxui-justify-content-center">',
'<span class="foxui-drag-handle foxui-icon-liebiao-o"></span>',
'</div>',
'<div class="foxui-col-xs-2 foxui-col-sm-2">',
'<span>多行文本</span>',
'</div>',
'<div class="foxui-col-xs-5 foxui-col-sm-5">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">标题</div>',
'<input class="foxui-size-small form-label title" placeholder="请输入" value="多行文本" />',
'</div>',
'</div>',
'</div>',
'<div class="foxui-col-xs-9 foxui-col-sm-9">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">说明</div>',
'<input class="foxui-size-small explain" placeholder="请输入说明文字" value="" />',
'</div>',
'</div>',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">提示语</div>',
'<input class="foxui-size-small form-input-placeholder tip" placeholder="请输入" value="请输入" />',
'</div>',
'</div>',
'</div>',
'<div class="foxui-col-xs-4 foxui-col-sm-4">',
'<div class="display-flex foxui-justify-content-center">',
'<div class="foxui-switch is-checked form-label-require">',
'<input type="checkbox" value="" class="foxui-switch-input required" />',
'<span class="foxui-switch-core"></span>',
'</div>',
'<label class="margin-left-8">必填</label>',
'</div>',
'</div>',
'<div class="foxui-col-xs-2 foxui-col-sm-2 display-flex foxui-justify-content-center">',
'<button class="foxui-text-primary foxui-size-small delete-item-btn">删除</button>',
'</div>',
].join('');
}
// radio 预览 html
function _radioPreviewHtml() {
return [
'<div class="foxui-input-group">',
'<label class="foxui-required form-label">单选:</label>',
'<div class="foxui-radio-group form-option-group radio-box-multi-line" style="flex:1">',
'<div class="foxui-radio form-option">',
'<span class="foxui-radio-input">',
'<i class="foxui-radio-icon"></i>',
'<input type="radio" value="" />',
'</span>',
'<span class="foxui-radio-label option-label">选项</span>',
'</div>',
'<div class="foxui-radio form-option">',
'<span class="foxui-radio-input">',
'<i class="foxui-radio-icon"></i>',
'<input type="radio" value="" />',
'</span>',
'<span class="foxui-radio-label option-label">选项</span>',
'</div>',
'</div>',
'</div>',
].join('');
}
// radio 表单设置 html
function _radioDiyHtml() {
return [
'<div class="foxui-col-xs-2 foxui-col-sm-2 display-flex foxui-justify-content-center">',
'<span class="foxui-drag-handle foxui-icon-liebiao-o"></span>',
'</div>',
'<div class="foxui-col-xs-2 foxui-col-sm-2">',
'<span>单选</span>',
'</div>',
'<div class="foxui-col-xs-5 foxui-col-sm-5">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">标题</div>',
'<input class="foxui-size-small form-label title" placeholder="请输入" value="单选" />',
'</div>',
'</div>',
'</div>',
'<div class="foxui-col-xs-9 foxui-col-sm-9">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">说明</div>',
'<input class="foxui-size-small explain" placeholder="请输入说明文字" value="" />',
'</div>',
'</div>',
'<div class="option-box margin-top-10">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">选项</div>',
'<input class="foxui-size-small form-input-option" placeholder="请输入" value="选项" />',
'</div>',
'<button class="foxui-text-primary foxui-size-small delete-option-btn margin-left-8">删除</button>',
'</div>',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">选项</div>',
'<input class="foxui-size-small form-input-option" placeholder="请输入" value="选项" />',
'</div>',
'<button class="foxui-text-primary foxui-size-small delete-option-btn margin-left-8">删除</button>',
'</div>',
'</div>',
'<div>',
'<button class="foxui-text-primary add-option-btn" data-type="radio"><i class="foxui-icon-jiahao-o"></i><span>添加选项</span></button>',
'</div>',
'</div>',
'<div class="foxui-col-xs-4 foxui-col-sm-4">',
'<div class="display-flex foxui-justify-content-center">',
'<div class="foxui-switch is-checked form-label-require">',
'<input type="checkbox" value="" checked="checked" class="foxui-switch-input required" />',
'<span class="foxui-switch-core"></span>',
'</div>',
'<label class="margin-left-8">必填</label>',
'</div>',
'</div>',
'<div class="foxui-col-xs-2 foxui-col-sm-2">',
'<button class="foxui-text-primary foxui-size-small delete-item-btn">删除</button>',
'</div>',
].join('');
}
// checkbox 预览 html
function _checkboxPreviewHtml() {
return [
'<div class="foxui-input-group">',
'<label class="foxui-required form-label">多选项:</label>',
'<div class="foxui-checkbox-group form-option-group checkbox-box-multi-line" style="flex:1">',
'<div class="foxui-checkbox form-option">',
'<span class="foxui-checkbox-input">',
'<i class="foxui-checkbox-icon"></i>',
'<input type="checkbox" value="" />',
'</span>',
'<span class="foxui-checkbox-label option-label">选项</span>',
'</div>',
'<div class="foxui-checkbox form-option">',
'<span class="foxui-checkbox-input">',
'<i class="foxui-checkbox-icon"></i>',
'<input type="checkbox" value="" />',
'</span>',
'<span class="foxui-checkbox-label option-label">选项</span>',
'</div>',
'</div>',
'</div>',
].join('');
}
// checkbox 表单设置 html
function _checkboxDiyHtml() {
return [
'<div class="foxui-col-xs-2 foxui-col-sm-2 display-flex foxui-justify-content-center">',
'<span class="foxui-drag-handle foxui-icon-liebiao-o"></span>',
'</div>',
'<div class="foxui-col-xs-2 foxui-col-sm-2">',
'<span>多选</span>',
'</div>',
'<div class="foxui-col-xs-5 foxui-col-sm-5">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">标题</div>',
'<input class="foxui-size-small form-label title" placeholder="请输入" value="多选" />',
'</div>',
'</div>',
'</div>',
'<div class="foxui-col-xs-9 foxui-col-sm-9">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">说明</div>',
'<input class="foxui-size-small explain" placeholder="请输入说明文字" value="" />',
'</div>',
'</div>',
'<div class="option-box margin-top-10">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">选项</div>',
'<input class="foxui-size-small form-input-option" placeholder="请输入" value="选项" />',
'</div>',
'<button class="foxui-text-primary foxui-size-small delete-option-btn margin-left-8">删除</button>',
'</div>',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">选项</div>',
'<input class="foxui-size-small form-input-option" placeholder="请输入" value="选项" />',
'</div>',
'<button class="foxui-text-primary foxui-size-small delete-option-btn margin-left-8">删除</button>',
'</div>',
'</div>',
'<div>',
'<button class="foxui-text-primary add-option-btn" data-type="checkbox"><i class="foxui-icon-jiahao-o"></i><span>添加选项</span></button>',
'</div>',
'</div>',
'<div class="foxui-col-xs-4 foxui-col-sm-4">',
'<div class="display-flex foxui-justify-content-center">',
'<div class="foxui-switch is-checked form-label-require">',
'<input type="checkbox" value="" checked="checked" class="foxui-switch-input required" />',
'<span class="foxui-switch-core"></span>',
'</div>',
'<label class="margin-left-8">必填</label>',
'</div>',
'</div>',
'<div class="foxui-col-xs-2 foxui-col-sm-2">',
'<button class="foxui-text-primary foxui-size-small delete-item-btn">删除</button>',
'</div>',
].join('');
}
// select 预览 html
function _selectPreviewHtml() {
return [
'<div class="foxui-input-group">',
'<label class="foxui-required form-label">下拉框:</label>',
'<div class="foxui-select" style="flex: 1">',
'<div class="foxui-select-handle foxui-select-icon">',
'<input class="foxui-select-input foxui-size-small form-input-placeholder" readonly="readonly" placeholder="请选择" value="" />',
'</div>',
'<div class="foxui-select-menu">',
'<ul class="foxui-select-slide form-option-group">',
'<li class="foxui-select-item form-option"><span class="option-label">选项</span></li>',
'<li class="foxui-select-item form-option"><span class="option-label">选项</span></li>',
'</ul>',
'</div>',
'</div>',
'</div>',
].join('');
}
// select 表单设置 html
function _selectDiyHtml() {
return [
'<div class="foxui-col-xs-2 foxui-col-sm-2 display-flex foxui-justify-content-center">',
'<span class="foxui-drag-handle foxui-icon-liebiao-o"></span>',
'</div>',
'<div class="foxui-col-xs-2 foxui-col-sm-2">',
'<span>下拉框</span>',
'</div>',
'<div class="foxui-col-xs-5 foxui-col-sm-5">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">标题</div>',
'<input class="foxui-size-small form-label title" placeholder="请输入" value="下拉框" />',
'</div>',
'</div>',
'</div>',
'<div class="foxui-col-xs-9 foxui-col-sm-9">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">说明</div>',
'<input class="foxui-size-small explain" placeholder="请输入说明文字" value="" />',
'</div>',
'</div>',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">提示语</div>',
'<input class="foxui-size-small form-input-placeholder tip" placeholder="请输入" value="请选择" />',
'</div>',
'</div>',
'<div class="option-box margin-top-10">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">选项</div>',
'<input class="foxui-size-small form-input-option" placeholder="请输入" value="选项" />',
'</div>',
'<button class="foxui-text-primary foxui-size-small delete-option-btn margin-left-8">删除</button>',
'</div>',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">选项</div>',
'<input class="foxui-size-small form-input-option" placeholder="请输入" value="选项" />',
'</div>',
'<button class="foxui-text-primary foxui-size-small delete-option-btn margin-left-8">删除</button>',
'</div>',
'</div>',
'<div>',
'<button class="foxui-text-primary add-option-btn" data-type="select"><i class="foxui-icon-jiahao-o"></i><span>添加选项</span></button>',
'</div>',
'</div>',
'<div class="foxui-col-xs-4 foxui-col-sm-4">',
'<div class="display-flex foxui-justify-content-center">',
'<div class="foxui-switch is-checked form-label-require">',
'<input type="checkbox" checked="checked" value="" class="foxui-switch-input required" />',
'<span class="foxui-switch-core"></span>',
'</div>',
'<label class="margin-left-8">必填</label>',
'</div>',
'</div>',
'<div class="foxui-col-xs-2 foxui-col-sm-2">',
'<button class="foxui-text-primary foxui-size-small delete-item-btn">删除</button>',
'</div>',
].join('');
}
// switch 预览 html
function _switchPreviewHtml() {
return [
'<div class="foxui-input-group">',
'<label class="foxui-required form-label">Switch开关</label>',
'<div class="switch" style="flex:1">',
'<div class="foxui-switch is-checked">',
'<input type="checkbox" checked="checked" value="" class="foxui-switch-input" />',
'<span class="foxui-switch-core"></span>',
'</div>',
'</div>',
'</div>',
].join('');
}
// switch 表单设置 html
function _switchDiyHtml() {
return [
'<div class="foxui-col-xs-2 foxui-col-sm-2 display-flex foxui-justify-content-center">',
'<span class="foxui-drag-handle foxui-icon-liebiao-o"></span>',
'</div>',
'<div class="foxui-col-xs-2 foxui-col-sm-2">',
'<span>Switch开关</span>',
'</div>',
'<div class="foxui-col-xs-5 foxui-col-sm-5">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">标题</div>',
'<input class="foxui-size-small form-label title" placeholder="请输入" value="Switch开关" />',
'</div>',
'</div>',
'</div>',
'<div class="foxui-col-xs-9 foxui-col-sm-9">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">说明</div>',
'<input class="foxui-size-small explain" placeholder="请输入说明文字" value="" />',
'</div>',
'</div>',
'</div>',
'<div class="foxui-col-xs-4 foxui-col-sm-4">',
'<div class="display-flex foxui-justify-content-center">',
'<div class="foxui-switch is-checked form-label-require">',
'<input type="checkbox" checked="checked" value="" class="foxui-switch-input required" />',
'<span class="foxui-switch-core"></span>',
'</div>',
'<label class="margin-left-8">必填</label>',
'</div>',
'</div>',
'<div class="foxui-col-xs-2 foxui-col-sm-2">',
'<button class="foxui-text-primary foxui-size-small delete-item-btn">删除</button>',
'</div>',
].join('');
}
// datepicker、timepicker、datetimepicker 预览 html
function _datetimepickerPreviewHtml(type) {
return [
'<div class="foxui-input-group">',
`<label class="foxui-required form-label">${type === 'datepicker' ? '日期' : type === 'timepicker' ? '时间' : '日期时间'}</label>`,
`<div class="foxui-picker ${type === 'datepicker' ? 'foxui-date-picker' : type === 'timepicker' ? 'foxui-time-picker has-seconds' : 'foxui-datetime-picker has-seconds'}" style="flex:1">`,
'<div class="foxui-picker-handle foxui-input-prefix">',
`<i class="${type === 'datepicker' ? 'foxui-icon-rili-o' : type === 'timepicker' ? 'foxui-icon-gongzuo-o' : 'foxui-icon-riqi-o'} foxui-prefix-icon"></i>`,
'<input class="foxui-size-small form-input-placeholder" readonly="readonly" placeholder="请选择" value="" />',
'<i class="foxui-icon-close-circle foxui-suffix-icon foxui-suffix-clear"></i>',
'</div>',
'</div>',
'</div>',
].join('');
}
// datepicker、timepicker、datetimepicker 表单设置 html
function _datetimepickerDiyHtml(type) {
return [
'<div class="foxui-col-xs-2 foxui-col-sm-2 display-flex foxui-justify-content-center">',
'<span class="foxui-drag-handle foxui-icon-liebiao-o"></span>',
'</div>',
'<div class="foxui-col-xs-2 foxui-col-sm-2">',
`<span>${type === 'datepicker' ? '日期' : type === 'timepicker' ? '时间' : type === 'datetimepicker' ? '日期时间' : ''}</span>`,
'</div>',
'<div class="foxui-col-xs-5 foxui-col-sm-5">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">标题</div>',
`<input class="foxui-size-small form-label title" placeholder="请输入" value="${
type === 'datepicker' ? '日期' : type === 'timepicker' ? '时间' : type === 'datetimepicker' ? '日期时间' : ''
}" />`,
'</div>',
'</div>',
'</div>',
'<div class="foxui-col-xs-9 foxui-col-sm-9">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">说明</div>',
'<input class="foxui-size-small explain" placeholder="请输入说明文字" value="" />',
'</div>',
'</div>',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">提示语</div>',
'<input class="foxui-size-small form-input-placeholder tip" placeholder="请输入" value="请选择" />',
'</div>',
'</div>',
'</div>',
'<div class="foxui-col-xs-4 foxui-col-sm-4">',
'<div class="display-flex foxui-justify-content-center">',
'<div class="foxui-switch is-checked form-label-require">',
'<input type="checkbox" checked="checked" value="" class="foxui-switch-input required" />',
'<span class="foxui-switch-core"></span>',
'</div>',
'<label class="margin-left-8">必填</label>',
'</div>',
'</div>',
'<div class="foxui-col-xs-2 foxui-col-sm-2">',
'<button class="foxui-text-primary foxui-size-small delete-item-btn">删除</button>',
'</div>',
].join('');
}
// image 预览 html
function _imagePreviewHtml() {
return [
'<div class="foxui-input-group foxui-align-items-start">',
'<label class="foxui-required form-label">图片文件:</label>',
'<div class="foxui-images">',
'<div class="foxui-images-card">',
'<ul class="foxui-images-list">',
'<div class="foxui-images-handle">',
'<div class="foxui-images-handle-inner">',
'<i class="foxui-icon-jiahao-o"></i>',
'<span class="text">添加图片</span>',
'</div>',
'</div>',
'</ul>',
'</div>',
' </div>',
' </div>'
].join('');
}
// image 表单设置 html
function _imageDiyHtml() {
return [
'<div class="foxui-col-xs-2 foxui-col-sm-2 display-flex foxui-justify-content-center">',
'<span class="foxui-drag-handle foxui-icon-liebiao-o"></span>',
'</div>',
'<div class="foxui-col-xs-2 foxui-col-sm-2">',
'<span>图片文件</span>',
'</div>',
'<div class="foxui-col-xs-5 foxui-col-sm-5">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">标题</div>',
'<input class="foxui-size-small form-label title" placeholder="请输入" value="图片文件" />',
'</div>',
'</div>',
'</div>',
'<div class="foxui-col-xs-9 foxui-col-sm-9">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">说明</div>',
'<input class="foxui-size-small explain" placeholder="请输入说明文字" value="" />',
'</div>',
'</div>',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">上传图片数量</div>',
'<input class="foxui-size-small image-count" placeholder="请输入说明文字" value="1" />',
'</div>',
'</div>',
'</div>',
'<div class="foxui-col-xs-4 foxui-col-sm-4">',
'<div class="display-flex foxui-justify-content-center">',
'<div class="foxui-switch is-checked form-label-require">',
'<input type="checkbox" checked="checked" value="" class="foxui-switch-input required" />',
'<span class="foxui-switch-core"></span>',
'</div>',
'<label class="margin-left-8">必填</label>',
'</div>',
'</div>',
'<div class="foxui-col-xs-2 foxui-col-sm-2">',
'<button class="foxui-text-primary foxui-size-small delete-item-btn">删除</button>',
'</div>',
].join('');
}
// color 预览 html
function _colorPreviewHtml() {
return [
'<div class="foxui-input-group">',
'<label class="foxui-required form-label">颜色选择:</label>',
'<div class="foxui-color">',
'<div class="foxui-color-handle is-alpha">',
'<span class="foxui-color-show"></span>',
'<i class="foxui-icon-close" style="display: none"></i>',
'<span class="foxui-color-background"></span>',
'<input class="foxui-color-input" value="" />',
'</div>',
'</div>',
'</div>',
].join('');
}
// color 表单设置 html
function _colorDiyHtml() {
return [
'<div class="foxui-col-xs-2 foxui-col-sm-2 display-flex foxui-justify-content-center">',
'<span class="foxui-drag-handle foxui-icon-liebiao-o"></span>',
'</div>',
'<div class="foxui-col-xs-2 foxui-col-sm-2">',
'<span>颜色选择</span>',
'</div>',
'<div class="foxui-col-xs-5 foxui-col-sm-5">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">标题</div>',
'<input class="foxui-size-small form-label title" placeholder="请输入" value="颜色选择" />',
'</div>',
'</div>',
'</div>',
'<div class="foxui-col-xs-9 foxui-col-sm-9">',
'<div class="foxui-input-group">',
'<div class="foxui-input-prepend">',
'<div class="foxui-prepend-inner is-grey">说明</div>',
'<input class="foxui-size-small explain" placeholder="请输入说明文字" value="" />',
'</div>',
'</div>',
'</div>',
'<div class="foxui-col-xs-4 foxui-col-sm-4">',
'<div class="display-flex foxui-justify-content-center">',
'<div class="foxui-switch is-checked form-label-require">',
'<input type="checkbox" value="" checked="checked" class="foxui-switch-input required" />',
'<span class="foxui-switch-core"></span>',
'</div>',
'<label class="margin-left-8">必填</label>',
'</div>',
'</div>',
'<div class="foxui-col-xs-2 foxui-col-sm-2">',
'<button class="foxui-text-primary foxui-size-small delete-item-btn">删除</button>',
'</div>',
].join('');
}
// 滚动定位
let $selectFieldBox = $('.select-field-box'),
sHeight = $selectFieldBox.height();
$('.diy_form_edit_content .foxui-col-sm-16 .section').on('scroll', function () {
let scollTop = $(this).scrollTop();
if (scollTop >= 260) {
$selectFieldBox.addClass('is-fixed');
$selectFieldBox.closest('.section-main').css('height', `${sHeight}px`);
} else {
$selectFieldBox.removeClass('is-fixed');
$selectFieldBox.closest('.section-main').css('height', `auto`);
}
});
// 拖拽排序
$(document).on('dragend', '.foxui-drag.foxui-drag-container', function () {
let diyidList = [],
htmlList = [];
$('#diyFormSet .foxui-drag-item').each(function () {
diyidList.push($(this).attr('data-diyid'));
});
$('#previewDiyForm .item').each(function () {
htmlList.push(this);
});
// 清空
$('#previewDiyForm').empty();
// 追加节点
diyidList.forEach(id => {
htmlList.forEach(html => {
if ($(html).attr('id') === id) {
$('#previewDiyForm').append(html);
return false;
}
});
});
});