421 lines
14 KiB
JavaScript
421 lines
14 KiB
JavaScript
/*
|
||
* @Descripttion :
|
||
* @Author : liuzhifang
|
||
* @Date : 2022-08-11 11:01:01
|
||
* @LastEditors : liuzhifang
|
||
* @LastEditTime : 2022-08-11 16:28:56
|
||
*/
|
||
|
||
/**
|
||
* 参数编辑点击
|
||
* @param event
|
||
*/
|
||
function clickParamEdit(obj){
|
||
$(".param-box").toggle();
|
||
}
|
||
|
||
/**
|
||
* 拼接产品参数数据
|
||
* @param attrParamId
|
||
*/
|
||
function initAttrParams(attrParamId){
|
||
//产品id
|
||
let id = $("input[name='id']").val();
|
||
if(id != undefined){//编辑
|
||
foxui.dialog({
|
||
title: '参数替换',
|
||
content: `您确定要替换所有预设参数吗`,
|
||
cancelText: '取消',
|
||
confirmText: '确定',
|
||
type: 'danger',
|
||
confirm: function (callback) {
|
||
getAttrParams(attrParamId);
|
||
callback();
|
||
},
|
||
cancel: function () {},
|
||
});
|
||
}else{
|
||
getAttrParams(attrParamId);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @description: 绑定编辑参数组
|
||
* @param {*}
|
||
* @return {*}
|
||
* @Date: 2022-01-14 16:50:22
|
||
*/
|
||
function paramGroupEdit(event){
|
||
event.stopPropagation();//阻止冒泡
|
||
const id = $(event.target).closest('.foxui-drag-item').attr('data-id');
|
||
const title = $(event.target).closest('.foxui-drag-content').find('.parts-name').text();
|
||
modifyParamGroup(id, title);
|
||
}
|
||
|
||
// 获取数据后整体更新参数表格(异步获取数据) 注:typeId:11、默认输入; 12、手动输入; 13、下拉选择
|
||
// addParamInit([
|
||
// { id: 1, title: '品牌', typeId: 11, value: '黔狐' },
|
||
// { id: 2, title: '规格', typeId: 11, value: '件' },
|
||
// { id: 3, title: '产地', typeId: 12, value: '' },
|
||
// { id: 4, title: '颜色', typeId: 11, value: '黑色' },
|
||
// { id: 5, title: '保质期', typeId: 11, value: '90天' },
|
||
// { id: 6, title: '厚薄', typeId: 11, value: '超薄型' },
|
||
// { id: 7, title: '生产企业', typeId: 11, value: '贵州黔狐科技股份有限公司' },
|
||
// {
|
||
// id: 8,
|
||
// title: '产品颜色',
|
||
// typeId: 13,
|
||
// value: '黑色',
|
||
// valueId: 1,
|
||
// selectList: [
|
||
// { id: 1, text: '黑色' },
|
||
// { id: 2, text: '红色' },
|
||
// ],
|
||
// },
|
||
// ]);
|
||
|
||
/**
|
||
* @description: 参数表格初始化 或 整体更新
|
||
* @param {*} dataList
|
||
* @return {*}
|
||
* @Date: 2022-01-14 14:48:16
|
||
*/
|
||
function addParamInit(dataList) {
|
||
$('#paramTable .foxui-table-tbody').empty().append(_addParamHtml(dataList));
|
||
}
|
||
|
||
/**
|
||
* @description: 绑定删除参数 -> 右侧
|
||
* @param {*}
|
||
* @return {*}
|
||
* @Date: 2022-01-14 15:26:42
|
||
*/
|
||
$(document).on('click', '#paramTable button.delete', function () {
|
||
const $item = $(this).closest('.foxui-table-tr'),
|
||
id = $item.attr('data-id'),
|
||
title = $item.find('.param-title input').val();
|
||
|
||
foxui.dialog({
|
||
title: '删除',
|
||
content: `您确定要删除 ${title} 参数吗`,
|
||
confirmText: '删除',
|
||
cancelText: '取消',
|
||
buttonType: 'danger',
|
||
confirm: function (callback) {
|
||
callback();
|
||
// 添加异步请求
|
||
$item.slideUp('fast', function () {
|
||
$(this).remove();
|
||
});
|
||
foxui.message({
|
||
text: '删除成功',
|
||
type: 'success',
|
||
});
|
||
},
|
||
});
|
||
});
|
||
|
||
/**
|
||
* @description: 新增参数 -> 右侧
|
||
* @param {*}
|
||
* @return {*}
|
||
* @Date: 2022-01-14 15:18:53
|
||
*/
|
||
$(document).on('click', '#addParam button', function () {
|
||
const $tbody = $('#paramTable .foxui-table-tbody');
|
||
$tbody.append(_addParamHtml([{}]));
|
||
$tbody.find('.foxui-table-tr:last-child').css('display', 'none').slideDown('fast');
|
||
});
|
||
|
||
/**
|
||
* @description: 绑定新增参数组 -> 左侧
|
||
* @param {*}
|
||
* @return {*}
|
||
* @Date: 2022-01-14 16:37:36
|
||
*/
|
||
$(document).on('click', '#addParamGroup', function () {
|
||
modifyParamGroup();
|
||
});
|
||
|
||
/**
|
||
* @description: 绑定编辑参数组 -> 左侧
|
||
* @param {*}
|
||
* @return {*}
|
||
* @Date: 2022-01-14 16:50:22
|
||
*/
|
||
$(document).on('click', '#paramGroupTable .edit', function () {
|
||
const id = $(this).closest('.foxui-drag-item').attr('data-id');
|
||
const title = $(this).closest('.foxui-drag-content').find('.parts-name').text();
|
||
modifyParamGroup(id, title);
|
||
});
|
||
|
||
/**
|
||
* @description: 绑定删除参数组
|
||
* @param {*}
|
||
* @return {*}
|
||
* @Date: 2022-01-14 16:24:35
|
||
*/
|
||
$(document).on('click', '#paramGroupTable button.delete', function () {
|
||
const $item = $(this).closest('.foxui-drag-item');
|
||
const id = $item.attr('data-id');
|
||
const title = $item.find('.parts-name').text();
|
||
foxui.dialog({
|
||
title: '删除',
|
||
content: `您确定要删除 ${title} 所有参数吗`,
|
||
cancelText: '取消',
|
||
confirmText: '删除',
|
||
buttonType: 'danger',
|
||
confirm: function (callback) {
|
||
callback();
|
||
// 添加异步请求
|
||
$item.slideUp('fast', function () {
|
||
$(this).remove();
|
||
});
|
||
foxui.message({
|
||
text: '删除成功',
|
||
type: 'success',
|
||
});
|
||
},
|
||
cancel: function () {},
|
||
});
|
||
});
|
||
|
||
/**
|
||
* @description: 添加参数 html -> 右侧
|
||
* @param {*} dataList
|
||
* @return {*}
|
||
* @Date: 2022-01-14 14:40:18
|
||
*/
|
||
function _addParamHtml(dataList) {
|
||
dataList = dataList || [];
|
||
let htmlArr = [];
|
||
dataList.forEach(item => {
|
||
htmlArr.push(`
|
||
<li class="foxui-table-tr foxui-drag-item" data-id="${item.id || ''}">
|
||
<div class="foxui-table-td">
|
||
<span class="foxui-drag-handle foxui-icon-liebiao-o"></span>
|
||
</div>
|
||
<div class="foxui-table-td param-title">
|
||
<input class="foxui-size-small" value="${item.title || ''}" />
|
||
</div>
|
||
<div class="foxui-table-td param-val">
|
||
${_judgeTypeHtml(item)}
|
||
</div>
|
||
<div class="foxui-table-td">
|
||
<button class="foxui-text-primary foxui-size-small delete">删除</button>
|
||
</div>
|
||
</li>
|
||
`);
|
||
});
|
||
return htmlArr.join('');
|
||
}
|
||
|
||
/**
|
||
* @description: 根据判断typeId,生成相应的表单
|
||
* @param {*} item
|
||
* @return {*}
|
||
* @Date: 2022-02-09 16:20:49
|
||
*/
|
||
function _judgeTypeHtml(item) {
|
||
const { typeId, value, valueId, selectList } = item;
|
||
let html = '';
|
||
if (typeId === 13) {
|
||
let itemHtmlArr = [];
|
||
selectList.forEach(select => {
|
||
itemHtmlArr.push(`
|
||
<li class="foxui-select-item" data-id="${select.id}">${select.text}</li>
|
||
`);
|
||
});
|
||
html = `
|
||
<div class="foxui-select">
|
||
<div class="foxui-select-handle foxui-select-icon">
|
||
<input class="foxui-select-input foxui-size-small" readonly="readonly" data-id="${valueId || ''}" value="${value || ''}" />
|
||
</div>
|
||
<div class="foxui-select-menu">
|
||
<ul class="foxui-select-slide">
|
||
${itemHtmlArr.join('')}
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
`;
|
||
} else {
|
||
html = `<input class="foxui-size-small" value="${value || ''}" />`;
|
||
}
|
||
return html;
|
||
}
|
||
|
||
/**
|
||
* @description: 新增/编辑参数预设弹框 html -> 弹框
|
||
* @param {*} title
|
||
* @param {*} dataList
|
||
* @return {*}
|
||
* @Date: 2022-01-14 17:07:15
|
||
*/
|
||
function _modifyParamGroupHtml(title, dataList) {
|
||
return `
|
||
<div class="param-preset-box">
|
||
<div class="section-main-item margin-top-0">
|
||
<div class="foxui-input-group">
|
||
<div class="input-label">
|
||
<label class="foxui-required">预设名称:</label>
|
||
</div>
|
||
<div class="input-box">
|
||
<div class="foxui-input-suffix">
|
||
<input maxlength="10" class="foxui-size-small" placeholder="" required value="${title || ''}" name="attrName"/>
|
||
<i class="foxui-suffix-icon foxui-suffix-count">0/10</i>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="section-main-item">
|
||
<div class="foxui-input-group foxui-align-items-start">
|
||
<div class="input-label">
|
||
<label>参数列表:</label>
|
||
</div>
|
||
<div class="block-box foxui-border">
|
||
<div class="foxui-table foxui-table-border-bottom">
|
||
<ul class="foxui-table-thead">
|
||
<li class="foxui-table-tr">
|
||
<div class="foxui-table-th"></div>
|
||
<div class="foxui-table-th">参数名称</div>
|
||
<div class="foxui-table-th">参数类型</div>
|
||
<div class="foxui-table-th">参数值</div>
|
||
<div class="foxui-table-th">操作</div>
|
||
</li>
|
||
</ul>
|
||
<ul class="foxui-table-tbody foxui-drag foxui-drag-container">
|
||
${_modifyParamGroupTrHtml(dataList)}
|
||
</ul>
|
||
</div>
|
||
<div class="add-param">
|
||
<button class="foxui-text-primary" onclick="_handleAddParamPop(event)">
|
||
<i class="foxui-icon-jiahao-o"></i>
|
||
<span>添加参数</span>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
`;
|
||
}
|
||
|
||
/**
|
||
* @description: 新增/编辑参数预设弹框tr的 html
|
||
* @param {*} dataList
|
||
* @return {*}
|
||
* @Date: 2022-01-14 22:52:25
|
||
*/
|
||
function _modifyParamGroupTrHtml(dataList) {
|
||
dataList = dataList || [];
|
||
let htmlArr = [];
|
||
dataList.forEach(item => {
|
||
htmlArr.push(`
|
||
<li class="foxui-table-tr foxui-drag-item" data-id="${item.id}">
|
||
<div class="foxui-table-td">
|
||
<span class="foxui-drag-handle foxui-icon-liebiao-o"></span>
|
||
</div>
|
||
<div class="foxui-table-td param-title">
|
||
<input name="paramName" class="foxui-size-small" value="${item.title || ''}" />
|
||
</div>
|
||
<div class="foxui-table-td">
|
||
<div class="foxui-select">
|
||
<div class="foxui-select-handle foxui-select-icon">
|
||
<input name="type" class="foxui-select-input foxui-size-small" readonly="readonly" data-id="${item.typeId || ''}" value="${item.type || ''}" />
|
||
</div>
|
||
<div class="foxui-select-menu">
|
||
<ul class="foxui-select-slide">
|
||
<li class="foxui-select-item" data-id="11" onclick="_handleTypeChange(event)">默认输入</li>
|
||
<li class="foxui-select-item" data-id="12" onclick="_handleTypeChange(event)">手动输入</li>
|
||
<li class="foxui-select-item" data-id="13" onclick="_handleTypeChange(event)">下拉选择</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="foxui-table-td">
|
||
${_paramValueBySelectHtml(item.type, item.value)}
|
||
</div>
|
||
<div class="foxui-table-td">
|
||
<button class="foxui-text-primary foxui-size-small delete" onclick="_handleDeleteParamPop(event)">删除</button>
|
||
</div>
|
||
</li>
|
||
`);
|
||
});
|
||
return htmlArr.join('');
|
||
}
|
||
|
||
/**
|
||
* @description: 通过 type 生成参数预设参数值 html
|
||
* @param {*} type
|
||
* @param {*} value
|
||
* @return {*}
|
||
* @Date: 2022-01-14 23:22:34
|
||
*/
|
||
function _paramValueBySelectHtml(type, value) {
|
||
let html = '<p>/</p>';
|
||
if (type === '默认输入') {
|
||
html = `<input name="dfvalue" class="foxui-size-small" placeholder="请输入默认参数值" value="${value || ''}" />`;
|
||
} else if (type === '手动输入') {
|
||
html = '<p>/</p>';
|
||
} else if (type === '下拉选择') {
|
||
html = `<textarea name="dfvalue" autocomplete="off" rows="2" maxlength="120" placeholder="一行一个可选值">${value || ''}</textarea>`;
|
||
}
|
||
return html;
|
||
}
|
||
|
||
/**
|
||
* @description: 参数预设弹框新增字段
|
||
* @param {*} event
|
||
* @return {*}
|
||
* @Date: 2022-01-15 00:23:25
|
||
*/
|
||
function _handleAddParamPop(event) {
|
||
const target = event.target;
|
||
const html = _modifyParamGroupTrHtml([{}]);
|
||
const $mainItem = $(target).closest('.section-main-item');
|
||
$mainItem.find('.foxui-table .foxui-table-tbody').append(html);
|
||
$mainItem.find('.foxui-table .foxui-table-tbody .foxui-table-tr:last-child').css('display', 'none').slideDown('fast');
|
||
}
|
||
|
||
/**
|
||
* @description: 参数预设弹框删除字段
|
||
* @param {*} event
|
||
* @return {*}
|
||
* @Date: 2022-01-15 00:18:29
|
||
*/
|
||
function _handleDeleteParamPop(event) {
|
||
const target = event.target;
|
||
const $item = $(target).closest('.foxui-table-tr');
|
||
foxui.dialog({
|
||
title: '删除',
|
||
content: `您确定要删除吗`,
|
||
cancelText: '取消',
|
||
confirmText: '删除',
|
||
buttonType: 'danger',
|
||
confirm: function (callback) {
|
||
callback();
|
||
$item.slideUp('fast', function () {
|
||
$(this).remove();
|
||
});
|
||
foxui.message({
|
||
text: '删除成功',
|
||
type: 'success',
|
||
});
|
||
},
|
||
cancel: function () {},
|
||
});
|
||
}
|
||
|
||
/**
|
||
* @description: 绑定监听type,改变更新html
|
||
* @param {*}
|
||
* @return {*}
|
||
* @Date: 2022-01-14 23:44:42
|
||
*/
|
||
function _handleTypeChange(event) {
|
||
const target = event.target;
|
||
const type = $(target).text();
|
||
const html = _paramValueBySelectHtml(type);
|
||
$(target).closest('.foxui-table-td').next('.foxui-table-td').empty().append(html);
|
||
}
|