<div class="layui-fluid layui-anim febs-anim" id="febs-option-info" lay-title="活动选项编辑">
|
<div class="layui-row febs-container">
|
<div class="layui-col-md12">
|
<div class="layui-fluid" id="option-info">
|
<form class="layui-form" action="" lay-filter="option-info-form">
|
<div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
|
<ul class="layui-tab-title">
|
<li class="layui-this">基础信息</li>
|
</ul>
|
<div class="layui-tab-content">
|
<input type="text" name="id"
|
placeholder="" autoComplete="off" class="layui-input febs-hide">
|
<div class="layui-tab-item layui-show">
|
<blockquote class="layui-elem-quote blue-border">审核</blockquote>
|
<div class="layui-row layui-col-space10 layui-form-item">
|
<div class="layui-col-lg6">
|
<label class="layui-form-label febs-form-item-require">审核:</label>
|
<div class="layui-input-block">
|
<input type="radio" name="audit" value="1" title="待审核" checked />
|
<input type="radio" name="audit" value="2" title="同意" />
|
<input type="radio" name="audit" value="3" title="拒绝" />
|
</div>
|
</div>
|
<div class="layui-row layui-col-space10 layui-form-item">
|
<div class="layui-col-lg6">
|
<label class="layui-form-label febs-form-item-require">选项图片:</label>
|
<div class="layui-input-block">
|
<input type="text" lay-verify="required" name="image" autocomplete="off" class="layui-input" readonly>
|
</div>
|
</div>
|
<div class="layui-col-lg6">
|
<button type="button" class="layui-btn layui-btn-normal layui-btn" id="openImg">图片审核</button>
|
</div>
|
</div>
|
|
|
<div class="layui-row layui-col-space10 layui-form-item">
|
<div class="layui-col-lg6">
|
<label class="layui-form-label febs-form-item-require">选项视频:</label>
|
<div class="layui-input-block">
|
<input type="text" lay-verify="required" name="videoUrl" autocomplete="off" class="layui-input" readonly>
|
</div>
|
</div>
|
<div class="layui-col-lg6">
|
<button type="button" class="layui-btn layui-btn-normal layui-btn" id="openVideo">视频审核</button>
|
</div>
|
</div>
|
</div>
|
<blockquote class="layui-elem-quote blue-border">基础信息</blockquote>
|
<div class="layui-row layui-col-space10 layui-form-item">
|
<div class="layui-col-lg6">
|
<label class="layui-form-label febs-form-item-require">所属活动:</label>
|
<div class="layui-input-block">
|
<div id="activity-option"></div>
|
</div>
|
</div>
|
|
<div class="layui-col-lg6">
|
<label class="layui-form-label">序号:</label>
|
<div class="layui-input-block">
|
<!-- <input type="number" name="number" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" data-value="{$voteOption.number}">-->
|
<input type="number" name="number" placeholder="" autocomplete="off" class="layui-input" data-value="{$voteOption.number}" disabled>
|
</div>
|
</div>
|
</div>
|
<div class="layui-form-item">
|
<div class="layui-col-lg6">
|
<label class="layui-form-label febs-form-item-require">报名名称:</label>
|
<div class="layui-input-block">
|
<input type="text" name="registeredName" lay-verify="required" autocomplete="off" class="layui-input" >
|
</div>
|
</div>
|
<div class="layui-col-lg6">
|
<label class="layui-form-label febs-form-item-require">选项名称:</label>
|
<div class="layui-input-block">
|
<input type="text" name="beautyName" lay-verify="required" autocomplete="off" class="layui-input" >
|
</div>
|
</div>
|
|
</div>
|
<!-- <div class="layui-row layui-col-space10 layui-form-item">-->
|
<!-- <div class="layui-col-lg6">-->
|
<!-- <label class="layui-form-label febs-form-item-require">省:</label>-->
|
<!-- <div class="layui-input-block">-->
|
<!-- <input type="text" name="province" lay-verify="required" autocomplete="off" class="layui-input" >-->
|
<!-- </div>-->
|
<!-- </div>-->
|
|
<!-- <div class="layui-col-lg6">-->
|
<!-- <label class="layui-form-label febs-form-item-require">市:</label>-->
|
<!-- <div class="layui-input-block">-->
|
<!-- <input type="text" name="city" lay-verify="required" autocomplete="off" class="layui-input" >-->
|
<!-- </div>-->
|
<!-- </div>-->
|
<!-- </div>-->
|
<div class="layui-row layui-col-space10 layui-form-item">
|
<div class="layui-col-lg6">
|
<label class="layui-form-label">性别:</label>
|
<div class="layui-input-block">
|
<input type="radio" name="sex" value="1" title="男" />
|
<input type="radio" name="sex" value="2" title="女" />
|
<input type="radio" name="sex" value="3" title="保密" checked />
|
</div>
|
</div>
|
<div class="layui-form-item" id="area-picker">
|
<div class="layui-form-label">选择省/市</div>
|
<div class="layui-input-inline" style="width: 200px;">
|
<select name="province" class="province-selector" >
|
<option value="">--选择省--</option>
|
</select>
|
</div>
|
<div class="layui-input-inline" style="width: 200px;" >
|
<select name="city" class="city-selector">
|
<option value="">--选择市--</option>
|
</select>
|
</div>
|
<!-- <div class="layui-input-inline" style="width: 200px;" >-->
|
<!-- <select name="area" class="county-selector" data-value="浦东新区">-->
|
<!-- <option value="">--选择区--</option>-->
|
<!-- </select>-->
|
<!-- </div>-->
|
</div>
|
|
</div>
|
<div class="layui-row layui-col-space10 layui-form-item">
|
<div class="layui-col-lg6">
|
<label class="layui-form-label febs-form-item-require">详细地址:</label>
|
<div class="layui-input-block">
|
<input type="text" name="address" lay-verify="required" autocomplete="off" class="layui-input" >
|
</div>
|
</div>
|
<div class="layui-col-lg6">
|
<label class="layui-form-label febs-form-item-require">手机:</label>
|
<div class="layui-input-block">
|
<input type="text" name="mobilePhone" autocomplete="off" class="layui-input" >
|
</div>
|
</div>
|
|
</div>
|
<div class="layui-row layui-col-space10 layui-form-item">
|
|
<div class="layui-col-lg6">
|
<label class="layui-form-label">邮箱:</label>
|
<div class="layui-input-block">
|
<input type="text" name="email" autocomplete="off" class="layui-input" >
|
</div>
|
</div>
|
<div class="layui-col-lg6">
|
<label class="layui-form-label febs-form-item-require" style="white-space: nowrap;">是否签约MCN:</label>
|
<div class="layui-input-block">
|
<select name="ismcn" lay-verify="required" class="layui-input">
|
<option value="0">否</option>
|
<option value="1">是</option>
|
</select>
|
</div>
|
</div>
|
</div>
|
|
<!-- <div class="layui-row layui-col-space10 layui-form-item">-->
|
<!-- <div class="layui-col-lg6">-->
|
<!-- <label class="layui-form-label febs-form-item-require">排名:</label>-->
|
<!-- <div class="layui-input-block">-->
|
<!-- <input type="number" name="rank" autocomplete="off" class="layui-input" >-->
|
<!-- </div>-->
|
<!-- </div>-->
|
|
<!-- <div class="layui-col-lg6">-->
|
<!-- <label class="layui-form-label febs-form-item-require">票数差:</label>-->
|
<!-- <div class="layui-input-block">-->
|
<!-- <input type="number" name="diffPrevious" autocomplete="off" class="layui-input" >-->
|
<!-- </div>-->
|
<!-- </div>-->
|
<!-- </div>-->
|
<div class="layui-row layui-col-space10 layui-form-item">
|
<div class="layui-col-lg6">
|
<label class="layui-form-label febs-form-item-require">票数统计:</label>
|
<div class="layui-input-block">
|
<input type="number" name="voteCount" autocomplete="off" class="layui-input" >
|
</div>
|
</div>
|
</div>
|
|
<div class="layui-form-item">
|
<label class="layui-form-label">爱好:</label>
|
<div class="layui-input-block">
|
<label>
|
<textarea name="hobby" rows="5" autocomplete="off" class="layui-textarea" ></textarea>
|
</label>
|
</div>
|
</div>
|
<div class="layui-form-item">
|
<label class="layui-form-label febs-form-item-require">选项描述:</label>
|
<div class="layui-input-block">
|
<div style="border: 1px solid #ccc;">
|
<div id="toolbar-container" class="toolbar"></div>
|
<div id="text-container" class="text" style="height: 450px;"></div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
|
<div class="layui-form-item febs-hide">
|
<button class="layui-btn" lay-submit="" lay-filter="option-info-form-submit" id="submit">保存</button>
|
</div>
|
</form>
|
</div>
|
</div>
|
</div>
|
</div>
|
<style>
|
.blue-border {
|
border-left-color: #2db7f5;
|
font-size: 18px;
|
}
|
.layui-table-cell {
|
height:auto;
|
}
|
.layui-upload-list {
|
margin: 0 !important;
|
}
|
.multi-images {
|
margin: 0 5px !important;
|
}
|
</style>
|
<!-- 表格操作栏 end -->
|
<script data-th-inline="javascript">
|
layui.use(['febs', 'form', 'formSelects', 'validate', 'laydate', 'layedit', 'upload', 'table', 'xmSelect', 'layarea'], function () {
|
var $ = layui.jquery,
|
febs = layui.febs,
|
layer = layui.layer,
|
table = layui.table,
|
formSelects = layui.formSelects,
|
form = layui.form,
|
$view = $('#option-info'),
|
voteOption = [[${voteOption}]],
|
layedit = layui.layedit,
|
upload = layui.upload,
|
layarea = layui.layarea,
|
validate = layui.validate;
|
|
form.render();
|
const E = window.wangEditor;
|
const editor = new E('#toolbar-container', '#text-container'); // 传入两个元素
|
editor.config.showLinkImg = false;
|
editor.config.uploadFileName = 'file';
|
editor.config.customUploadImg = function (files, insertImgFn) {
|
// files 是 input 中选中的文件列表
|
// insertImgFn 是获取图片 url 后,插入到编辑器的方法
|
// 上传图片,返回结果,将图片插入到编辑器中
|
for (let i = 0; i < files.length; i++){
|
var form = new FormData();
|
form.append("file", files[0]);
|
$.ajax({
|
url:'/admin/goods/uploadFileBaseEsc',
|
type: "post",
|
processData: false,
|
contentType: false,
|
data: form,
|
dataType: 'json',
|
success(res) {
|
// 上传代码返回结果之后,将图片插入到编辑器中
|
insertImgFn(res.data.src, res.data.title, '')
|
}
|
})
|
}
|
};
|
editor.create();
|
|
formSelects.render();
|
|
let activityOptions = xmSelect.render({
|
el: '#activity-option',
|
language: 'zn',
|
prop : {
|
value : 'id',
|
children : 'child'
|
},
|
iconfont: {
|
parent: 'hidden',
|
},
|
tips: '请选择',
|
filterable: true,
|
radio: true,
|
clickClose: true,
|
tree: {
|
show: true,
|
//非严格模式
|
strict: false,
|
},
|
data: []
|
})
|
|
febs.get(ctx + 'admin/votesActivity/allActivities', null, function(res) {
|
activityOptions.update({
|
data : res.data,
|
autoRow: true,
|
});
|
initOptionInfo();
|
})
|
let obj1 = layarea.render({
|
elem: '#area-picker',
|
change: function (res) {
|
//选择结果
|
console.log(res);
|
}
|
});
|
layarea.render({
|
elem: '#area-picker',
|
data: {
|
province: "上海",
|
city: "上海",
|
county: "浦东新区",
|
},
|
change: function (res) {
|
//选择结果
|
console.log(res);
|
}
|
});
|
|
function initOptionInfo() {
|
console.log("voteOption:", voteOption); // 调试信息
|
form.val("option-info-form", {
|
"id": voteOption.id,
|
"activityId": voteOption.activityId,
|
"beautyName": voteOption.beautyName,
|
"registeredName": voteOption.registeredName,
|
"description": voteOption.description,
|
"voteCount": voteOption.voteCount,
|
"rank": voteOption.rank,
|
"diffPrevious": voteOption.diffPrevious,
|
"number": voteOption.number,
|
"mobilePhone": voteOption.mobilePhone,
|
"sex": voteOption.sex,
|
"hobby": voteOption.hobby,
|
"ismcn": voteOption.ismcn,
|
"address": voteOption.address,
|
"province": voteOption.province,
|
"city": voteOption.city,
|
"videoUrl": voteOption.videoUrl,
|
"audit": voteOption.audit,
|
"image": voteOption.image,
|
"email": voteOption.email
|
});
|
|
var arr = [];
|
arr.push(voteOption.activityId)
|
activityOptions.setValue(arr);
|
|
editor.txt.html(voteOption.description);
|
|
setTimeout(() => {
|
obj1.reload({
|
data: {
|
province: voteOption.province,
|
city: voteOption.city,
|
}
|
});
|
}, 200);
|
}
|
|
|
|
form.on('submit(option-info-form-submit)', function (data) {
|
data.field.activityId = activityOptions.getValue('valueStr');
|
data.field.description = editor.txt.html();
|
console.log(data.field);
|
$.ajax({
|
'url':ctx + 'admin/votesActivity/optionUpdate',
|
'type':'post',
|
'dataType':'json',
|
'headers' : {'Content-Type' : 'application/json;charset=utf-8'}, //接口json格式
|
'traditional': true,//ajax传递数组必须添加属性
|
'data':JSON.stringify(data.field),
|
'success':function (data) {
|
if(data.code==200){
|
layer.closeAll();
|
febs.alert.success(data.message);
|
$('#febs-activity-option').find('#query').click();
|
}else{
|
febs.alert.warn(data.message);
|
}
|
},
|
'error':function () {
|
febs.alert.warn('服务器繁忙');
|
}
|
})
|
return false;
|
});
|
|
// 添加点击事件监听器
|
$('#openImg').on('click', function() {
|
let imageUrl = voteOption.image;
|
//页面层
|
layer.open({
|
type: 1,
|
title: "图片",
|
skin: 'layui-layer-rim', //加上边框
|
area: ['100%', '100%'], //宽高
|
shadeClose: true, //开启遮罩关闭
|
end: function (index, layero) {
|
return false;
|
},
|
content: '<div style="text-align:center"><img src="' + imageUrl + '" /></div>'
|
});
|
});
|
|
// 添加点击事件监听器
|
$('#openVideo').on('click', function() {
|
let videoUrl = voteOption.videoUrl;
|
|
// 校验视频URL是否有效
|
if (!videoUrl || !isVideoUrlValid(videoUrl)) {
|
alert('视频地址无效,请检查!');
|
return;
|
}
|
|
// 使用更安全的方式生成HTML内容
|
let videoContent = $('<div>').append(
|
$('<video>', {
|
controls: true,
|
autoplay: true,
|
name: 'media',
|
style: "width: 30%;height: 30%;"
|
}).append(
|
$('<source>', {
|
src: videoUrl,
|
type: 'video/mp4'
|
})
|
)
|
).prop('outerHTML');
|
|
// 页面层
|
layer.open({
|
type: 1,
|
title: "视频",
|
skin: 'layui-layer-rim', // 加上边框
|
area: ['100%', '100%'],
|
shadeClose: true, // 开启遮罩关闭
|
content: `<div style="text-align:center">${videoContent}</div>`
|
});
|
});
|
|
// 视频URL校验函数
|
function isVideoUrlValid(url) {
|
try {
|
const urlObj = new URL(url);
|
return urlObj.protocol === 'http:' || urlObj.protocol === 'https:';
|
} catch (e) {
|
return false;
|
}
|
}
|
|
});
|
</script>
|