Files
cursoradminapiformjifengqiang/app/manager/view/package_callback/edit.html
2025-02-10 10:39:00 +08:00

160 lines
6.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{extend name="../../admin/view/main"}
{block name="content"}
<form class="layui-form layui-card" action="{:request()->url()}" data-auto="true" method="post">
<div class="layui-card-body">
<input type="hidden" name="id" value="{$vo.id|default=''}">
<div class="layui-form-item">
<label class="layui-form-label">选择包名</label>
<div class="layui-input-block">
<div id="packageSelect"></div>
<input type="hidden" name="package_id" id="selectedPackageId" value="{$vo.package_id|default=''}">
<input type="hidden" name="package_name" id="selectedPackageName" value="{$vo.package_name|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">事件名称</label>
<div class="layui-input-block">
<input type="text" name="event_name" required lay-verify="required" placeholder="请输入事件名称" class="layui-input" value="{$vo.event_name|default=''}">
<tip>例如install, register, purchase </tip>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">回传地址</label>
<div class="layui-input-block">
<input type="text" name="callback_url" required lay-verify="required|callback_url" placeholder="请输入回传地址" class="layui-input" value="{$vo.callback_url|default=''}">
<tip>
完整的回传接口地址例如http://api.example.com/callback<br>
支持变量替换,如 {package_name}, {event_name} <br>
详细说明请查看完整回传指南
</tip>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="启用" {if $vo.status eq 1}checked{/if}>
<input type="radio" name="status" value="0" title="停用" {if $vo.status eq 0}checked{/if}>
</div>
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="layui-form-item text-center">
<button class="layui-btn" lay-submit lay-filter="formSubmit">保存数据</button>
<button class="layui-btn layui-btn-danger" type="button" data-close>取消编辑</button>
</div>
</form>
{/block}
{block name="script"}
<style>
.layui-form tip {
display: block;
padding: 10px;
margin-top: 10px;
color: #666;
background-color: #f8f8f8;
border-radius: 2px;
line-height: 1.8;
}
.layui-badge {
margin: 2px;
font-family: Consolas, monospace;
}
</style>
<script>
$(function () {
layui.use(['form', 'xmSelect'], function () {
let form = layui.form;
// 定义包名选择器
const packageSelect = xmSelect.render({
el: '#packageSelect',
name: 'package_id',
radio: true,
clickClose: true,
filterable: true,
tips: '请选择包名',
data: [],
direction: 'auto',
model: { label: { type: 'text' } },
initValue: [{$vo.package_id|default=0}], // 设置初始选中值
on: function(data) {
if(data.arr.length > 0) {
let selected = data.arr[0];
$('#selectedPackageId').val(selected.value);
$('#selectedPackageName').val(selected.package_name);
} else {
$('#selectedPackageId').val('');
$('#selectedPackageName').val('');
}
form.render();
}
});
// 加载包名列表并选中当前包名
function loadPackageList() {
$.get('{:url("searchPackages")}', {
init: 1,
edit_id: '{$vo.id|default=0}' // 传递当前编辑的ID
}, function(res) {
if (res.code === 1) {
let data = res.data.map(function(item) {
return {
name: item.package_name + ' (' + item.name + ')',
value: item.id,
package_name: item.package_name,
selected: item.id == '{$vo.package_id|default=0}' // 标记当前选中项
};
});
packageSelect.update({
data: data,
autoRow: true
});
}
}, 'json');
}
// 初始加载包名列表
loadPackageList();
// 表单验证
form.verify({
callback_url: function(value) {
if (!/^https?:\/\/.+/.test(value)) {
return '请输入正确的URL地址';
}
}
});
// 表单提交
form.on('submit(formSubmit)', function(data) {
let formData = data.field;
$.ajax({
url: '{:url("edit")}',
type: 'POST',
data: formData,
dataType: 'json',
success: function(res) {
if (res.code === 1) {
layer.msg(res.info, {icon: 1, time: 1500}, function() {
parent.layer.close(parent.layer.getFrameIndex(window.name));
parent.location.reload();
});
} else {
layer.msg(res.info, {icon: 2, time: 1500});
}
}
});
return false;
});
});
});
</script>
{/block}