layui弹框表单提交后关闭
时间: 2023-09-22 15:06:58 AIGC 浏览: 218
在layui中,弹框表单提交后可以通过以下步骤实现关闭:
1. 监听表单提交事件,例如:
```
form.on('submit(form-submit)', function(data){
// 表单提交后的处理逻辑
// ...
// 关闭弹框
layer.closeAll('page');
});
```
这里的 `form-submit` 是表单的 lay-filter 属性值,用于绑定表单提交事件。
2. 在表单提交成功后,调用 `layer.closeAll('page')` 方法关闭弹框。
完整的代码示例:
```
// 监听表单提交事件
form.on('submit(form-submit)', function(data){
// 表单提交后的处理逻辑
// ...
// 关闭弹框
layer.closeAll('page');
});
// 显示弹框
layer.open({
type: 1,
title: '弹框标题',
content: $('#form-container'),
});
```
其中,`#form-container` 是包含表单的 HTML 元素的选择器。
相关问题
layui 弹框里面的按钮
layui是一个轻量级的前端 UI 框架,它提供了简洁易用的 API 来创建和定制弹框(laybox)。layui的弹框通常包含一个或多个按钮,这些按钮可以根据需求设置不同的功能,例如确认、取消、提交等。以下是一些常见的按钮及其用途:
1. **确定按钮**(ok 或 confirm):用户点击后执行确定操作,一般用于确认对话框或表单提交前的确认操作。
2. **取消按钮**(cancel 或 close):用户点击后关闭弹框,不执行任何默认操作。
3. **提交按钮**(submit 或 save):在表单相关的弹框中,用于提交表单数据到服务器。
4. **加载按钮**(loading 或 process):显示加载状态,当数据正在处理或加载时,让用户知道操作正在进行。
5. **自定义按钮**:开发者还可以根据应用需求自定义按钮类型和回调函数,例如执行某个特定的操作或者跳转到其他页面。
每个按钮可以通过配置对象来定义,包括文本、图标、样式、事件处理函数等。使用layui时,可以通过`laybox.open`方法打开弹框,并在配置对象中指定按钮选项。例如:
```javascript
layui.use('laybox', function () {
var laybox = layui.laybox;
laybox.open({
type: 1, // 弹框类型,1表示普通对话框
title: '提示信息',
content: '这是一段内容...',
btn: ['确定', '取消'], // 定义按钮数组
btnAlign: 'c', // 按钮对齐方式,如'c'居中
skin: 'layui-layer-rim', // 自定义样式
btnClose: true, // 是否允许点击遮罩关闭
done: function (index, layero, obj) { // 确定按钮的回调
console.log(obj.index); // 获取点击的按钮索引
},
cancel: function (index, layero, obj) { // 取消按钮回调
//...
}
});
});
```
layui弹框,填入内容后返回父页面
layui是一个轻量级的前端UI框架,它提供了一套简单易用的API用于创建各种弹窗(dialog)。在layui中,你可以使用`layer.open()`函数打开一个弹框,并通过设置回调函数来处理用户填写的内容。
下面是一个简单的例子,展示如何打开一个带表单的弹框,用户输入后点击确认按钮,数据会通过回调传回父页面:
```javascript
// 弹出带表单的layui弹框
layer.open({
type: 2, // 2代表iframe层
title: '请输入信息',
shadeClose: true, // 点击遮罩关闭
area: ['50%', 'auto'], // 自适应宽高
content: '<form id="myForm"><input type="text" name="info"></form>', // 弹框内HTML内容
btn: ['确定', '取消'], // 取消按钮
success: function(index) { // 当弹框加载成功时执行
$('#myForm').on('submit', function(e) { // 监听表单提交事件
e.preventDefault(); // 阻止默认提交行为
var info = $('input[name="info"]').val(); // 获取输入值
if (info) {
// 提交数据并关闭弹框,这里只是一个示例,实际场景下你需要将数据发送到服务器或父页面
layer.close(index);
parent.layer.msg('信息已保存:' + info); // 在父窗口显示消息
}
});
}
});
// 在这里,parent表示当前弹框所在的父页面,`layer`对象可以访问到父页面的`layer`实例
```
阅读全文
相关推荐














以之前对话中的收费项目管理为模版,修改该代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>收费项目明细管理</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<style>
.x-nav { padding: 0 20px; position: relative; z-index: 99; border-bottom: 1px solid #e5e5e5; line-height: 60px; }
.x-body { padding: 20px; }
.layui-table td, .layui-table th { padding: 9px 15px; }
.td-manage a { margin: 0 5px; }
.dialog-mask {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0,0,0,0.5);
z-index: 999;
display: flex;
justify-content: center;
align-items: center;
}
.dialog-content {
background: #fff;
padding: 20px;
border-radius: 5px;
width: 800px;
max-height: 90vh;
overflow-y: auto;
}
.x-red { color: red; }
</style>
</head>
<body>
首页
收费管理
收费项目明细列表
刷新
添加收费项目明细
ID
所属小区
收费项目
应收金额(¥)
实收金额(¥)
缴费时间
操作
{{ item.id }}
{{ item.x_id}}
{{ item.m_id }}
{{ item. e_amount}}
{{ item.a_amount }}
{{ item.pay_Time }}
{{ dialogTitle }}
<form class="layui-form layui-form-pane">
<input type="hidden" v-model="formData.id">
<label class="layui-form-label">
*所属小区
</label>
<input type="text" v-model="formData.x_id" placeholder="请输入所属小区编号"
class="layui-input" lay-verify="required">
<label class="layui-form-label">
*收费项目编号
</label>
<input type="text" v-model="formData.m_id" placeholder="请输入项目编号"
class="layui-input" lay-verify="required">
<label class="layui-form-label">
*应付费用
</label>
<input type="text" v-model="formData.e_amount" placeholder="请输入应付金额"
class="layui-input" lay-verify="required">
<label class="layui-form-label">
*实付费用
</label>
<input type="text" v-model="formData.a_amount" placeholder="请输入实付金额"
class="layui-input" lay-verify="required">
<label class="layui-form-label">
*支付时间
</label>
<input class="layui-input" v-model="formData.pay_Time" placeholder="点击选择日期"
id="checkInDate" lay-verify="required">
<button class="layui-btn layui-btn-primary" type="button" @click="dialogVisible = false">取消</button>
<button class="layui-btn" type="button" @click="submitForm">确定</button>
</form>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
<script src="https://www.layuicdn.com/layui-v2.6.8/layui.js"></script>
<script>
// 获取收费明细数据(与原逻辑一致)
function getDetailData() {
const data = localStorage.getItem('detailData');
const defaultData = [
{ id: '3', x_id: '林科大小区', m_id: '厕所广告位1', e_amount: 500, a_amount: 500,pay_Time: '2020-01-05' },
{ id: '2', x_id: '林科大小区', m_id: '垃圾桶', e_amount: 50, a_amount: 50,pay_Time: '2020-01-05' },
{ id: '1', x_id: '林科大万府', m_id: '停车位', e_amount: 500, a_amount: 500,pay_Time: '2020-01-05' }
];
try {
return data ? JSON.parse(data) : defaultData;
} catch (error) {
console.error('localStorage数据解析失败,使用默认数据', error);
return defaultData;
}
}
new Vue({
el: '#app',
data: {
proList: getDetailData(),
dialogVisible: false,
dialogTitle: '编辑收费项目',
currentIndex: -1,
formData: {
id: '',
x_id: '',
m_id: '',
a_amount:'',
e_amount: '',
pay_Time: ''
}
},
mounted() {
this.initLayui();
},
methods: {
initLayui() {
layui.use(['form', 'laydate', 'layer'], () => {
window.layer = layui.layer;
// 预加载laydate模块(关键:为弹框初始化做准备)
this.laydate = layui.laydate;
layui.form.render();
});
},
refresh() {
this.detailList = getDetailData();
layer.msg('刷新成功', {icon: 1});
},
// editItem(index) {
// const item = this.detailList[index];
// window.open(pro_detail_edit.html?id=${item.id}, '_blank');
// },
editItem(index) {
this.dialogTitle = '编辑收费项目';
this.currentIndex = index;
this.formData = JSON.parse(JSON.stringify(this.detailList[index]));
this.dialogVisible = true;
// 关键修改:弹框显示后初始化日期选择器
this.$nextTick(() => {
// 重新渲染日期选择器并设置当前值
this.laydate.render({
elem: '#checkInDate', // 绑定输入框的id
max: '2099-12-31',
value: this.formData.pay_Time, // 显示当前记录的创建时间
done: (value) => {
this.formData.pay_Time = value; // 选择日期后更新数据
}
});
});
},
deleteItem(index) {
const _this = this;
layer.confirm('确定要删除这条记录吗?', function(){
_this.detailList.splice(index, 1);
localStorage.setItem('detailData', JSON.stringify(_this.detailList));
_this.detailList = [..._this.detailList];
layer.msg('删除成功', {icon: 1});
});
},
submitForm() {
if (!this.validateForm()) return;
this.proList.splice(this.currentIndex, 1, this.formData);
localStorage.setItem('proData', JSON.stringify(this.detailList));
this.dialogVisible = false;
this.detailList = [...this.detailList];
layer.msg('编辑成功', {icon: 1});
},
validateForm() {
if (!this.formData.x_id) {
layer.msg('请输入所属小区', {icon: 5});
return false;
}
if (!this.formData.m_id) {
layer.msg('请输入项目编号', {icon: 5});
return false;
}
if (!this.formData.a_amount) {
layer.msg('请输入应付金额', {icon: 5});
return false;
}
if (!this.formData.e_amount) {
layer.msg('请输入实付金额', {icon: 5});
return false;
}
if (!this.formData.m_id) {
layer.msg('项目名称不能为空', {icon: 5});
return false;
}
if (!this.formData.pay_Time) {
layer.msg('请选择创建时间', {icon: 5});
return false;
}
return true;
},
}
}
);
</script>
</body>
</html>

ftl文件
<!DOCTYPE html>
<html lang="en">
<#include "/common/taglibs.ftl">
<head>
<meta charset="UTF-8">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<title>农村居住区</title>
<script src="${ctx}/plugins/jquery-3.3.1.min.js"></script>
<script src="${ctx}/plugins/vue/vue.js"></script>
<script src="${ctx}/plugins/layui/layui.js"></script>
<script src="${ctx}/plugins/common/custom_layui.js"></script>
<script src="${ctx}/plugins/nightMap/api.js"></script>
<script src="${ctx}/plugins/nightMap/heatmap_min.js"></script>
<script src="${ctx}/plugins/nightMap/mapv.js"></script>
<script src="${ctx}/plugins/nightMap/haidian.js"></script>
<script src="${ctx}/aiplatform/js/verifyList.js"></script>
<style>
.left-nav-ul .streetManage {
border-left: 2px #2080E7 solid;
}
.left-nav-ul .streetManage a {
color: #2080E7;
background-image: url(${ctx}/othersSys/images/icon-lajilou2.svg);
}
.layui-table-box th, .layui-table-box td {
text-align: center;
}
.layui-table-cell {
height: auto;
line-height: auto;
}
#addMap {
width: 100%;
}
.administrativeNumber{
width: 100%;
height: 50px;
line-height: 50px;
background-color: #e6f7ff;
border: 1px solid #c3e0eb;
padding-left: 10px;
}
</style>
</head>
<body class="body">
<iframe src="${ctx}/service/allNav" style="position: fixed;left: 0;top: 0;width: 18rem;height: 100%;" allowfullscreen allow="autoplay; fullscreen"></iframe>
<#-- <#include "/infoSys/nav2.ftl">-->
<#include "/infoSys/header.ftl">
{{config.title}}
<form class="layui-form search-form" onkeypress="return event.keyCode != 13;">
<label class="layui-form-label first-label">{{item.title}}:</label>
<select :name="item.prop" :id="item.prop" v-model="searchData[item.prop]" style="width:150px;height:30px" :lay-filter="'form_'+item.prop">
<option v-for="sItem in item.option" :value="sItem.value" >{{sItem.label}}</option>
</select>
<input type="text" :id="item.prop" :name="item.prop" v-model="searchData[item.prop]" :placeholder="请输入+item.title"
autocomplete="off" class="layui-input"/>
<#--阻止回车触发提交-->
<select lay-verify="" type="hidden">
</select>
<#-- <button type="button" class="layui-btn layui-btn-normal" id="taste_button" lay-submit="record"-->
<#-- lay-filter="record">语音-->
<#-- </button>-->
<#-- <button type="button" class="layui-btn layui-btn-normal" id="start_button" class="start-button"-->
<#-- style="display: none">停止-->
<#-- </button>-->
<button type="button" class="layui-btn layui-btn-normal" lay-submit="" lay-filter="formSearch">查询
</button>
<button type="reset" lay-submit lay-filter="formReset" class="layui-btn layui-btn-primary">重置</button>
</form>
<#-- 行政村总数:{{ count }}-->
新建
<#--
<#-- class="moreUpload">导入-->
导入
<#--
<#-- href="../../../excel/model_street_export.xlsx" download="街镇模板">模板下载-->
导出
<#-- 打印-->
<#-- 新建-->
<#-- 导入-->
<#-- 模板下载-->
<#-- 导出-->
<#-- 打印-->
<form class="layui-form" lay-filter="information" id="information" style="display:none;padding:35px 30px">
<label class="layui-form-label">* {{item.title}}</label>
<select :name="item.prop" :id="item.prop" style="width:150px;height:30px">
<option v-for="sItem in item.option" :value="sItem.value">{{sItem.label}}</option>
</select>
自定义内容
<input type="text" :name="item.prop" autocomplete="off" :lay-verify="item.rule" class="layui-input"/>
<button type="button" v-show="type!=='look'" class="layui-btn layui-btn-lg layui-btn-normal"
lay-submit="" lay-filter="up">提交
</button>
<button type="button" class="layui-btn layui-btn-lg layui-btn-normal" onclick="layer.closeAll()">取消
</button>
</form>
<button type="button" class="layui-btn layui-btn-normal" id="choice">选择文件</button>
<button type="button" class="layui-btn" id="checkFile">校验</button>
<button type="button" class="layui-btn" id="startUpload" @click="fnUploadFile">开始上传</button>
操作步骤:
1.选择需要上传的文件
2.选择完成后点击“校验”按钮
3.校验通过后点击“确认上传”
<script>
var menusButtonList = '${Session.buttonList?default("")}';
menusButtonList = menusButtonList ? JSON.parse(menusButtonList) : []
$(document).on("keypress", "form", function (event) {
return event.keyCode != 13;
})
</script>
<script src="${ctx}/infoSys/js/public.js"></script>
<script src="${ctx}/infoSys/js/countryPlanning/list.js"></script>
<script src="${ctx}/infoSys/js/add-map.js"></script>
<script src="${ctx}/plugins/rtasr/hmac-sha256.js"></script>
<script src="${ctx}/plugins/rtasr/HmacSHA1.js"></script>
<script src="${ctx}/plugins/rtasr/md5.js"></script>
<script src="${ctx}/plugins/rtasr/enc-base64-min.js"></script>
<script src="${ctx}/plugins/rtasr/index.js"></script>
<script src="${ctx}/infoSys/js/navPublic.js"></script>
</body>
</html>
js文件
const script = document.createElement('script');
script.src = ${ctx}/infoSys/js/commonJs/formConfig.js; // 替换为实际的JavaScript文件路径
document.head.appendChild(script);
script.onload = function() {
// 此处可以执行其他操作
const config = countryPlanningCfg
var vues = new Vue({
el: '#app',
// mixins: [myMixins],
// components:{
// upload
// },
watch:{
'searchData.streetName':function (n,o){
this.loadCommunityData(n)
}
},
computed:{
config:()=>{
return config
}
},
data: {
navList:[],//nav模块
paramList:{},//nav模块-url
tableHead: config.tableHead,
streetList: [],
communityList: [],
menuBtn: [],
btnJson: config.btnJson,
isHaveHandle: false,
searchListFlag: false,
searchLi: [],
printQuery: '',
cheakliat: "",
// searchData:{},
name: '',
imgShow: false,
type: '',
url: '',
uploadFile: new FormData(),
uploadsVar: '',
count:0,
searchData: {
name: '',
commName: '',
streetName: '',
},
},
mounted: function () {
// this.getNav()
this.menuListBtn()
this.table();
this.loadStreetData()
// 绑定街道下拉框 change 事件
const streetSelect = document.getElementById('streetName');
if (streetSelect) {
streetSelect.addEventListener('change', this.onStreetChange);
}
layui.use('form', () => {
const form = layui.form
form.render('select') // 页面加载时初始化所有下拉框
})
const self = this
layui.use(['form'], function () {
layui.form.on('select(form_streetName)', function (data) {
self.searchData.streetName = data.value
})
})
// this.selcetInit();
},
methods: {
selectChange(prop){
console.log(prop,'prop')
},
// 加载街道数据
loadStreetData() {
const self = this
$.ajax({
url: ctx + '/service/region/list',
type: 'GET',
data: {
grade: 3 // 街道等级为3
},
success: function (res) {
console.log(res,'resss')
if (res.code === 0) {
const streetOptions = res.data.map(item => ({
label: item.name,
value: item.coding,
coding: item.coding
}))
console.log('街道数据加载完成:', streetOptions)
// 更新街道下拉选项
const streetItem = self.config.searchForm.find(i => i.prop === 'streetName');
if (streetItem) streetItem.option = streetOptions;
// 更新搜索表单和编辑表单中的街道下拉选项
self.$set(
self.config.searchForm.find(item => item.prop === 'streetName'),
'option',
streetOptions
)
console.log(self.config.searchForm,'self.config.searchForm')
self.$set(
self.config.form.find(item => item.prop === 'streetName'),
'option',
streetOptions
)
self.$forceUpdate()
self.$nextTick(() => {
setTimeout(() => {
layui.form.render('select')
}, 100)
})
} else {
console.error('加载街道数据失败:', res.msg)
}
},
error: function (xhr, status, error) {
console.error('请求失败:', error)
}
})
},
// 根据街道编码加载社区数据
loadCommunityData(streetCoding) {
const self = this;
$.ajax({
url: ctx + '/service/region/list',
type: 'GET',
data: {
grade: 4, // 社区等级为4
coding: streetCoding // 传入街道编码
},
success: function (res) {
if (res.code === 0) {
const commOptions = res.data.map(item => ({
label: item.name,
value: item.id
}));
// 更新社区下拉选项
const commItem = self.config.searchForm.find(i => i.prop === 'commName');
if (commItem) {
commItem.option = commOptions;
}
// 更新搜索表单和编辑表单中的社区下拉选项
const searchCommItem = self.config.searchForm.find(item => item.prop === 'commName');
const formCommItem = self.config.form.find(item => item.prop === 'commName');
if (searchCommItem) {
searchCommItem.option.splice(0); // 清空旧数据
searchCommItem.option.push(...commOptions);
}
if (formCommItem) {
formCommItem.option.splice(0);
formCommItem.option.push(...commOptions);
}
self.$forceUpdate()
self.$nextTick(() => {
layui.form.render('select'); // 重新渲染下拉框
});
}
},
error: function (xhr, status, error) {
console.error('请求失败:', error);
}
});
},
// 监听街道选择变化
onStreetChange(event) {
console.log('111',event)
const streetValue = event.target.value; // 获取选中的街道值
const selectedStreet = this.config.searchForm
.find(item => item.prop === 'streetName')?.option
.find(item => item.value === streetValue);
if (selectedStreet && selectedStreet.coding) {
this.loadCommunityData(selectedStreet.coding); // 加载社区数据
} else {
// 清空社区下拉框
const communityItem = this.config.searchForm.find(item => item.prop === 'commName');
if (communityItem) communityItem.option = [];
const communityFormItem = this.config.form.find(item => item.prop === 'commName');
if (communityFormItem) communityFormItem.option = [];
}
self.$forceUpdate()
this.$nextTick(() => {
layui.form.render('select'); // 重新渲染下拉框
});
},
menuListBtn() {
this.$nextTick(() => {
let arr = []
menusButtonList.forEach((e) => {
if (e.menuId == menusIds) {
this.menuBtn.push(e)
if (e.attrType == 1) {
arr.push(e)
}
}
})
console.log(this.menuBtn)
this.menuBtn.forEach((e) => {
if (e.buttonClass == 'add') {
vues.btnJson.add = true
} else if (e.buttonClass == 'moreUpload') {
vues.btnJson.moreUpload = true
} else if (e.buttonClass == 'download') {
vues.btnJson.download = true
} else if (e.buttonClass == 'export') {
vues.btnJson.export = true
} else if (e.buttonClass == 'print') {
vues.btnJson.print = true
}
})
if (arr.length == 0) {
this.isHaveHandle = true;
this.tableHead[0].pop();
}
})
},
//显示大图片
showBigImage(e) {
layer.open({
type: 1,
title: false,
closeBtn: 0,
shadeClose: true, //点击阴影关闭
area: [$(e).width + 'px', $(e).height + 'px'], //宽高
content: "
"
});
},
//打印
prints() {
var v = document.createElement("div");
let self = this;
$.ajax({
url: ctx + config.list,
data: {limit: 999999, page: 1, ...self.searchData},
success: function (res) {
if (res.code == 0) {
if (res.data.length) {
// <head></head>
let str = '<html><body><head><style>tr,td{padding:3px}.layui-table {width: 100%;background-color: #fff;color: #666;margin: 10px 0;}.layui-table-cell {height: 28px;line-height: 28px;padding: 0 15px;position: relative;box-sizing: border-box}.layui-table-cell{top: -1px;padding: 0}.layui-table-cell .layui-table-link {color: #01AAED}</style></head>';
str += '';
str += '';
config.tableHead[0].forEach(item=>{
str += ${item.title}
})
str += ' ';
str += '';
str += '';
for (var i = 0; i < res.data.length; i++) {
str += '<tr class="layui-table" >';
config.tableHead[0].forEach(item=>{
if(item.type == 'numbers'){
str += ${i+1} ;
}
str += ${res.data[i][item.prop] ? res.data[i][item.prop]:'-'}
})
str += '';
}
str += '';
str += '</body></html>';
var h = window.open("打印窗口", "_blank");
h.document.write(str + $(v).prop("outerHTML"));
h.document.close();
console.log(h)
h.print();
h.close();
} else {
layerObj.failMsg("该条件下暂无数据,无法打印!");
}
}
;
}
});
},
//list
table: function () {
var self = this;
//默认list
var dataUrl = ctx + config.url.list;
const tableHeadArr = self.tableHead[0].map(item=>{
let templet = null
if(item.templet){
templet = item.templet
}else if(item.title=='操作'){
templet =function (res){
var btn = "";
btn += '详情';
return btn;
}
}else{
templet =function (res) {
return !res[item.prop] ? '-' : res[item.prop];
}
}
return {
...item,
templet:templet
}
})
layerObj.tableList([tableHeadArr], 'allTable', dataUrl, 'tool(allTable)',
function (res, curr, count) {
self.count = count
}, function (e) {
let id = e.data.id;
//查看
if (e.event === "look") {
self.alertFun(id, 'look',e.data)
}
//编辑
if (e.event === "edit") {
self.alertFun(id, 'edit')
}
// 删除
if (e.event === 'delete') {
layer.confirm('是否删除?', {
btn: ['确定', '取消'] //可以无限个按钮
}, function (index, layero) {
layerObj.ajaxSend(
'get',
ctx + ${config.url.delete}?id= + id,
'json',
{},
function (data) {
if (data.code === 1) {
layer.alert(data.msg);
} else {
self.table();
}
}
);
layer.close(index);
}, function (index) {
layer.close(index);
});
}
}, "allTable");
//搜索
layui.use(['form', 'table', 'upload'], function () {
var form = layui.form;
var table = layui.table;
var upload = layui.upload;
form.on("submit(formSearch)", function (data) {
table.reload("allTable", {
headers: self.tableHead,
url: dataUrl,
page: {curr: 1},
where: data.field,
done: function () {
}
}, 'data');
});
// 重置
form.on("submit(formReset)", function (data) {
self.condition = null
table.reload("allTable", {
headers: self.tableHead,
url: dataUrl,
page: {curr: 1},
where: self.condition,
done: function () {
}
}, 'data');
});
//导出
form.on("submit(export)", function (data) {
var name = $('input[name="name"]').val();
var cs = ctx + ${config.url.export}?name= + name;
window.open(cs);
});
//上传附件
var uploadInst = upload.render({
elem: '#uploadBtn'
, url: ctx + '/service/upload/minio/uploadAttach'
, accept: 'file' //普通文件
, choose: function (obj) {
obj.preview(function (index, file, result) {
self.fileName = file.name;
$('#attachUrl').html(file.name);
})
}
, done: function (res) {
if (res.code > 0) {
self.filePath = res.data.filePath
self.imgShow = true
$('#attachUrl').on('click', function () {
window.location.href = ctx + '/service/upload/minio/downloadReplaceFileName?filename=' + $('#attachUrl').text() + '&fileUrlName=' + res.data.fileName
})
layer.msg('上传成功');
}else {
layer.msg(res.msg);
}
}
});
});
},
//添加和编辑弹窗
alertFun(myid, type,data) {
var self = this;
self.type = type
document.getElementById("information").reset();
self.imgShow = false
$('#image').val("");
$("#roleIds,#roleNames").val("");
var titleName;
var postUrl = '';
if (type == 'edit') {
titleName = "编辑";
postUrl = ctx + config.url.edit
} else if (type == 'add'){
titleName = "新建";
postUrl = ctx + config.url.add
}else{
titleName = "查看";
}
$('#imageWrapper').html('<input type="hidden" name="image" id="image" />')
layui.use(['form', 'layer', 'upload', 'laydate'], function () {
let form = layui.form;
let layer = layui.layer;
let upload = layui.upload;
let laydate = layui.laydate;
var myLayer = layer.open({
title: titleName + "菜单",
type: 1,
area: ["900px", "700px"],
content: $("#information"),
success: function () {
if (myid && config.url.detail) {
//回显
$.ajax({
url: ctx + ${config.url.detail}?id= + myid,
success: function (res) {
const obj = {}
config.form.forEach((item,index)=>{
obj[item.prop] = res.data[item.prop] ? res.data[item.prop] : ''
})
form.val("information",obj);
//文件
var image = res.data.image;
self.filePath = image
if (image && image != "") {
self.imgShow = image ? true : false;
$('#attachUrl').html(image.split('_')[image.split('_').length - 1]);
$('#attachUrl').on('click', function () {
window.location.href = ctx + '/service/upload/minio/downloadReplaceFileName?filename=' + $('#attachUrl').text() + '&fileUrlName=' + image
})
}
self.$nextTick(() => {
form.render()
})
}
});
}else if(!config.url.detail){
const obj = {}
config.form.forEach((item,index)=>{
obj[item.prop] = data[item.prop] ? data[item.prop] : ''
})
form.val("information",obj);
} else {
form.val("information", {});
$('#attachUrl').html('');
self.imgShow = false;
self.$nextTick(() => {
form.render()
})
}
form.on('submit(up)', function (data) {
let paramObj = data.field;
paramObj.pid = self.pid;
paramObj.imageUrl = self.filePath;
if (myid) {
paramObj.id = myid;
}
layerObj.commonAjax('POST', postUrl, "json", paramObj, function (data) {
if (data.code == 0) {
layer.closeAll();
layerObj.successMsg("保存成功!");
self.table();
} else {
layerObj.failMsg(data.msg);
}
});
});
// 校验
form.verify(config.formVerify)
}
});
});
},
//点击搜索列表
queryBtn: function () {
var self = this;
self.searchListFlag = true;
$.ajax({
url: ctx + '/service/baiduMap/get/suggestion',
type: 'post',
data: {
"keyword": self.printQuery,
"region": "北京市",
"pageSize": 20,
"pageNum": 1
},
success: function (res) {
if (res.data.results) {
self.searchLi = res.data.results;
}
}
});
},
//确认选择li
chooseLi: function (item) {
var self = this;
self.searchListFlag = false;
var lng = item.location.longitude,
lat = item.location.latitude;
addPointFun(lng, lat);
$(".longitudeLatitude").val(lng + "," + lat);
$(".longitude").val(lng);
$(".latitude").val(lat);
self.printQuery = item.address;
$(".detailAddress").val(item.address);
bm.centerAndZoom(new BMap.Point(lng, lat), 14);
},
// 页面初始化
pageInit() {
var self = this;
layui.use(['form', 'upload', 'layer'], function () {
var upload = layui.upload;
self.uploadsVar = upload.render({
elem: '#choice',
accept: 'file',
acceptMime: 'application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
exts: 'xlsx|xls', //只允许上传excel文件,
auto: false,
bindAction: '#checkFile'
});
})
},
// 上传弹框
uploads() {
$('#choiceWrapper').html('<button type="button" class="layui-btn layui-btn-normal" id="choice">选择文件</button>');
this.uploadsVar = '';
$('.layui-upload-choose').html('');
$('#checkFileWrapper').html('<button type="button" class="layui-btn" id="checkFile">校验</button>');
this.pageInit()
this.$nextTick(() => {
$('#startUpload').css('display', 'none')
})
let self = this
layui.use(['form', 'upload', 'layer'], function () {
let form = layui.form;
let layer = layui.layer;
var upload = layui.upload;
var checkurl = ''
var myLayer = layer.open({
title: '上传文件',
type: 1,
area: ["680px", "250px"],
content: $("#UploadFile"),
success: function (res) {
// 校验接口
checkurl = ctx + '/service/base/street/checkExcelUpload'
self.uploadsVar.reload({
elem: '#choice',
accept: 'file',
acceptMime: 'application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
exts: 'xlsx|xls', //只允许上传excel文件,
url: checkurl,
auto: false,
bindAction: '#checkFile',
choose: (obj) => {
$('#startUpload').css('display', 'none')
self.uploadFile = new FormData();
var files = obj.pushFile();
var firstProp;
var count = 0;
// 获取第一个属性
for (var key in files) {
if (files.hasOwnProperty(key)) {
firstProp = key;
break;
}
}
// 统计文件数
for (var k in files) {
count++;
}
if (count > 1) {
delete files[firstProp];
}
//预读本地文件,如果是多文件,则会遍历。(不支持ie8/9)
obj.preview(function (index, file, result) {
self.uploadFile.append('file', file);
});
},
done: function (res, index) {
if (res.code == 0) {
layer.msg(res.msg);
$('#startUpload').css('display', 'inline-block')
} else {
layer.alert(res.msg);
$('#startUpload').css('display', 'none')
}
}
});
}
, end: () => {
$('#startUpload').css('display', 'none')
}
})
})
},
// 上传
fnUploadFile() {
var self = this
layui.use(['layer'], function () {
var layer = layui.layer;
// 上传接口
var url = ''
url = ctx + config.url.import
let key = self.uploadFile.getAll('file')[0];
$.ajax({
url: url,
method: 'post',
data: self.uploadFile,
contentType: false,
processData: false,
dataType: "json",
async: false,
success: (res) => {
if (res.code == 0) {
layer.msg(res.msg);
setTimeout(() => {
layer.closeAll();
self.table();
}, 2500);
} else {
layer.alert(res.msg);
}
},
fail: (res) => {
layer.alert(res.msg);
}
})
})
},
//nav-获取列表
getNav(){
let self = this
let url = document.location.toString()
let urlObj = url.split('?')
let paramObj
let paramList = {}//url参数集合
if(urlObj.length >0){
paramObj = urlObj[1].split('&')
paramObj.forEach((val,index)=>{
let arrList = val.split('=')
Object.defineProperty(paramList,arrList[0],{value:arrList[1]})
// paramList.arrList[0] = arrList[1]
})
}
self.paramList = paramList
//获取菜单列表并渲染
$.ajax({
url:ctx + "/service/authorityMenu/listByMenuId?menuId="+paramList.pid,
type:"get",
success:function (res) {
console.log('菜单请求返回值',res)
if(res.code == 0){
//修改数据内容 渲染nav选中项
res.data.forEach((val,index)=>{
if(val.childMenus.length>0){
val.childMenus.forEach((value)=>{
value.select = false;
if(value.id == self.paramList.cid||value.id == self.paramList.cPid){
value.select = true;
}
value.childMenus
})
}
})
self.navList = res.data
}
}
})
},
//nav-页面跳转
toUrl(items){
console.log(items)
if(items.url.indexOf('?') != -1){
window.location.href = ctx + items.url+'&pid='+this.paramList.pid+'&cid='+items.id+'&cPid='+items.pid
}else{
window.location.href = ctx + items.url+'?pid='+this.paramList.pid+'&cid='+items.id+'&cPid='+items.pid
}
},
//nav-渲染nav选中项
changeNavState(items){
items.select = !items.select
},
//时间戳转日期函数
DateFormat(sjc) {
var date = new Date(sjc);
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? '0' + m : m;
var d = date.getDate();
d = d < 10 ? ("0" + d) : d;
var h = date.getHours();
h = h < 10 ? ("0" + h) : h;
var min = date.getMinutes();
min = min < 10 ? ("0" + min) : min;
var s = date.getSeconds();
s = s < 10 ? ("0" + s) : s;
var str = y + "-" + m + "-" + d + " " + h + ":" + min + ":" + s;
return str;
},
},
})
};
点击街镇和社区下拉选择后进行查询选择的数据

