Files
2026-07-23 09:40:36 +08:00

403 lines
12 KiB
JavaScript
Raw Permalink 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.
mbui.define(['tool','layer','picker','userPicker'],function(exports){
let layer = mbui.layer,tool=mbui.tool,picker = mbui.picker,adminpicker = mbui.userPicker;
const opts={
"box":'editBox',//编辑容器id
"id":0,//编辑容器id
"url": '',
"radio":{},
"checbox":{},
"menu":{},
"callback":function(e){
layer.msg(e.msg);
if(e.code==0){
setTimeout(function(){
location.reload();
},1000)
}
}
};
const obj = {
//短文本
text: function (that) {
let me = this;
let field = that.data('field');
let text = that.data('text');
text = typeof(text) == "undefined" ? that.text():text;
layer.open({
type: 1,
title: '请输入内容',
area: ['360px', '158px'],
content: '<div><input class="mbui-input" id="oaEditText" value="' + text + '"/></div>',
btnAlign: 'c',
btn: ['保存','取消'],
yes: function () {
let val = $("#oaEditText").val();
if (val != '') {
let postData = {'id':me.sets.id,'scene':'oaedit'};
postData[field] = val;
tool.post(me.sets.url,postData,me.sets.callback);
} else {
layer.msg('请输入内容');
}
}
})
},
//长文本
textarea: function (that) {
let me = this;
let field = that.data('field');
let target = that.data('target');
let textarea='';
if (typeof(target) == "undefined") {
textarea = that.text();
}
else{
textarea = $('#'+target).text();
}
layer.open({
type: 1,
title: '请输入内容',
area: ['600px', '320px'],
content: '<div style="padding:5px;"><textarea class="mbui-textarea" id="oaEditTextarea" style="width: 100%; height: 200px;">' + textarea + '</textarea></div>',
btnAlign: 'c',
btn: ['保存','取消'],
yes: function () {
let val = $("#oaEditTextarea").val();
if (val != '') {
let postData = {'id':me.sets.id,'scene':'oaedit'};
postData[field] = val;
tool.post(me.sets.url,postData,me.sets.callback);
} else {
layer.msg('请输入内容');
}
}
})
},
//数字
num: function (that) {
let me = this;
let field = that.data('field');
let text = that.data('text');
text = typeof(text) == "undefined" ? that.text():text;
let min = that.data('min');
min = typeof(min) == "undefined" ? 0:min;
let max = that.data('max');
max = typeof(max) == "undefined" ? 100:max;
layer.open({
type: 1,
title: '请输入数字',
area: ['200px', '158px'],
content: '<div style="padding:5px;"><input class="mbui-input" oninput="this.value = this.value.replace(/[^0-9]/g,\'\')" id="oaEditNum" value="' + text + '"/></div>',
btnAlign: 'c',
btn: ['保存','取消'],
yes: function () {
let val = $("#oaEditNum").val();
if (val != '') {
if(min !='' && val<min){
layer.msg('输入数字不能小于'+min);
return false;
}
if(max !='' && val>max){
layer.msg('输入数字不能大于'+max);
return false;
}
let postData = {'id':me.sets.id,'scene':'oaedit'};
postData[field] = val;
tool.post(me.sets.url,postData,me.sets.callback);
} else {
layer.msg('请输入内容');
}
}
})
},
oadate: function (that) {
let me = this;
let type = that.data('type');
let min = that.data('min');
let max = that.data('max');
if (typeof(type) == "undefined" || type === '') {
type = 'date';
}
if (typeof(min) == "undefined" || min === '' || min === 1) {
min = '1970-01-01 00:00:00';
}
if (typeof(max) == "undefined" || max === '' || max === 100) {
max = '2099-12-31 23:59:59';
}
let field = that.data('field');
let text = that.data('text');
text = typeof(text) == "undefined" ? that.text():text;
picker.init({
elem: that, // 绑定元素
options: type, // 设置为日期选择器(日期选择器可设置:year、month、date、time、timesecond、datetime、datetimesecond
onSuccess: function(index, elem){ // 渲染成功回调
picker.show(index);
},
onClear: function(index){ // 停止滚动触发:index是当前对象的标识, i 是当前滑动的对象,result是前面的值集
let postData = {'id':me.sets.id,'scene':'oaedit'};
postData[field] = 0;
tool.post(me.sets.url,postData,me.sets.callback);
picker.remove(index);
},
onConfirm: function(index, val, result){ // 点击确认回调
let postData = {'id':me.sets.id,'scene':'oaedit'};
postData[field] = val;
tool.post(me.sets.url,postData,me.sets.callback);
picker.remove(index);
},
onCancel: function(index){ // 点击取消回调
picker.remove(index);
},
onShade: function(index){ // 点击遮罩回调
picker.remove(index);
},
minDate:min,
maxDate:max
})
},
adminpicker: function (that){
let me = this;
let field = that.data('field');
let ids = that.data('ids');
let names = that.data('names');
let min = that.data('min');
min = typeof(min) == "undefined" ? 1:min;
adminpicker({
type:min,
callback:function(ids,names,dids,departments){
let postData = {'id':me.sets.id,'scene':'oaedit'};
postData[field] = ids.join(',');
tool.post(me.sets.url,postData,me.sets.callback);
}
});
},
picker:function(that){
let me = this;
let field = that.data('field');
let api = that.data('api');
if(typeof(api) == "undefined"){
layer.msg('相关API参数未完善');
return false;
}
let min = that.data('min');
min = typeof(min) == "undefined" ? 1:min;
let loading;
$.ajax({
url: api,
type: 'get',
beforeSend:function(){
loading = layer.loading('加载中...');
},
success: function (e) {
if (e.code == 0) {
data = e.data;
if(min==1){
me.radio(that,data);
}
else{
me.checkbox(that,data);
}
}
},
complete:function(){
layer.close(loading);
}
})
},
radio:function(that,data){
let me = this;
let field = that.data('field');
let text = that.data('text');
text = typeof(text) == "undefined" ? that.text():text;
let arrayidx = that.data('array');
if(typeof(arrayidx) != "undefined" && arrayidx!=''){
data = me.sets.radio[arrayidx];
}
if (data.length == 0) {
layer.msg('无可选择的内容');
return false;
}
let len = data.length;
let editHtml = '<div class="mbui-layer-radio">'
while (len--) {
if (data[len].id == text) {
editHtml+='<div class="mbui-radio-checkbox"><label for="list_radio_'+data[len].id+'">'+data[len].title+'<input class="mbui-radio" type="radio" name="layer_radio" checked value="'+data[len].id+'" id="list_radio_'+data[len].id+'" /></label></div>';
}
else{
editHtml+='<div class="mbui-radio-checkbox"><label for="list_radio_'+data[len].id+'">'+data[len].title+'<input class="mbui-radio" type="radio" name="layer_radio" value="'+data[len].id+'" id="list_radio_'+data[len].id+'" /></label></div>';
}
}
editHtml+='</div>';
layer.open({
type:5,
content:editHtml,
btn:['确定','取消'],
yes:function(index){
let val = $('input[name="layer_radio"]:checked').val();
let postData = {'id':me.sets.id,'scene':'oaedit'};
postData[field] = val;
tool.post(me.sets.url,postData,me.sets.callback);
}
});
},
checkbox:function(that){
let me = this;
let field = that.data('field');
let text = that.data('text');
text = typeof(text) == "undefined" ? that.text():text;
let selected_array = text+''.split(',');
let arrayidx = that.data('array');
let data = me.sets.checkbox[arrayidx];
if (data.length == 0) {
layer.msg('无可选择的内容');
return false;
}
let len = data.length;
let editHtml = '<div class="mbui-layer-checkbox">'
while (len--) {
if (selected_array.includes(data[len].id)) {
editHtml+='<div class="mbui-radio-checkbox"><label for="list_checkbox_'+data[len].id+'">'+data[len].title+'<input class="mbui-checkbox" type="checkbox" name="layer_checkbox" checked value="'+data[len].id+'" id="list_radio_'+data[len].id+'" /></label></div>';
}
else{
editHtml+='<div class="mbui-radio-checkbox"><label for="list_checkbox_'+data[len].id+'">'+data[len].title+'<input class="mbui-checkbox" type="checkbox" name="layer_checkbox" value="'+data[len].id+'" id="list_checkbox_'+data[len].id+'" /></label></div>';
}
}
editHtml+='</div>';
layer.open({
type:5,
content:editHtml,
btn:['确定','取消'],
yes:function(index){
let checkedValues = $('input[name="layer_checkbox"]:checked').map(function(){
return $(this).val();
}).get();
let postData = {'id':me.sets.id,'scene':'oaedit'};
postData[field] = checkedValues.join(',');
tool.post(me.sets.url,postData,me.sets.callback);
}
});
},
menu: function (that) {
let me = this;
let arrayidx = that.data('array');
let data = me.sets.menu[arrayidx];
if (data.length == 0) {
layer.msg('无可选择的内容');
return false;
}
let len = data.length;
let editHtml = ''
while (len--) {
let item = $('#edit_'+data[len].field);
let types = item.data('types');
let text = item.data('text');
text = typeof(text) == "undefined" ? item.text():text;
let arrays = item.data('array');
arrays = typeof(arrays) == "undefined" ? '':arrays;
let api = item.data('api');
api = typeof(api) == "undefined" ? '':api;
let min = item.data('min');
min = typeof(min) == "undefined" ? 1:min;
let max = item.data('max');
max = typeof(max) == "undefined" ? 100:max;
editHtml+='<a href="javascript:void(0);" class="actionsheet-btn" data-field="'+data[len].field+'" data-types="'+types+'" data-array="'+arrays+'" data-text="'+text+'" data-min="'+min+'" data-max="'+max+'" data-api="'+api+'">'+data[len].title+'</a>';
}
layer.open({
type:4,
content: editHtml,
btn:['取消'],
success:function(elem,index){
$(elem).on('click','.actionsheet-btn',function(){
let thatmenu = $(this);
let types = thatmenu.data('types');
layer.close(index);
switch (types) {
case "num":
me.num(thatmenu);
break;
case "oadate":
me.oadate(thatmenu);
break;
case "textarea":
me.textarea(thatmenu);
break;
case "adminpicker":
me.adminpicker(thatmenu);
break;
case "picker":
me.picker(thatmenu);
break;
case "radio":
me.radio(thatmenu,[]);
break;
case "checkbox":
me.checkbox(thatmenu,[]);
break;
default:
me.text(thatmenu);
}
})
}
});
},
init: function (options) {
this.sets = $.extend({}, opts, options);
let me = this;
let editBox = $('#'+me.sets.box);
editBox.on('click','.click-edit',function(){
let that = $(this);
let types = that.data('types');
let role = that.data('role');
role = typeof(role) == "undefined" ? 1:role;
if(role==0){
layer.msg('你无权限操作');
return false;
}
switch (types) {
case "num":
me.num(that);
break;
case "oadate":
me.oadate(that);
break;
case "textarea":
me.textarea(that);
break;
case "adminpicker":
me.adminpicker(that);
break;
case "picker":
me.picker(that);
break;
case "radio":
me.radio(that,[]);
break;
case "checkbox":
me.checkbox(that,[]);
break;
case "menu":
me.menu(that);
break;
default:
me.text(that);
}
})
}
}
//输出接口
exports('oaEdit', obj);
});