function setConfig(params) { return Object.assign( {}, { skin: 'terrace', multiselect: true, // imagePath: "../../prologui/dist/vendors/dhtmlx/grid/skins/web/imgs", type: 'get', //数据提交方式,默认为get params: (function() { return { // "warehouseId": getLocalStrongSelectedWarehouseIds().toString(), // // "company_id": Prolog.getLocalStorage('userinfo').p_organizationid, // 默认值是0 // "deleteFlag": 0 } })(), //查询提交参数,分页参数默认为pageNum,pageSize page: true, //是否启用分页 totalCount: 'totalCount', //总记录数字段,默认totalCount toolbar: [] }, params ) } Prolog.download = function(url, fileName, hasAuth) { var xhr = new XMLHttpRequest() xhr.open('GET', url, true) //get请求,请求地址,是否异步 if (hasAuth) { xhr.setRequestHeader('Authorization', localStorage.getItem('authorization')) } xhr.responseType = 'blob' // 返回类型blo xhr.onload = function() { // 请求完成处理函数 if (this.status === 200) { var blob = this.response // 获取返回值 const a = document.getElementById('down') a.href = URL.createObjectURL(blob) a.download = fileName a.click() // URL.revokeObjectUrl(blob) } } // 发送ajax请求 xhr.send() } /* elem 指向容器选择器,如:elem: '#id'。也可以是DOM对象 string/object - url 服务端上传接口,返回的数据规范请详见下文 string - data 请求上传接口的额外参数。如:data: {id: 'xxx'} headers 接口的请求头。如:headers: {token: 'sasasas'}。注:该参数为 layui 2.2.6 开始新增 accept 指定允许上传时校验的文件类型,可选值有:images(图片)、file(所有文件)、video(视频)、audio(音频) string images acceptMime 规定打开文件选择框时,筛选出的文件类型,值为用逗号隔开的 MIME 类型列表。如: acceptMime: 'image/*'(只显示图片文件) acceptMime: 'image/jpg, image/png'(只显示 jpg 和 png 文件) 注:该参数为 layui 2.2.6 开始新增 string images exts 允许上传的文件后缀。一般结合 accept 参数类设定。假设 accept 为 file 类型时,那么你设置 exts: 'zip|rar|7z' 即代表只允许上传压缩格式的文件。如果 accept 未设定,那么限制的就是图片的文件格式 string jpg|png|gif|bmp|jpeg auto 是否选完文件后自动上传。如果设定 false,那么需要设置 bindAction 参数来指向一个其它按钮提交上传 boolean true bindAction 指向一个按钮触发上传,一般配合 auto: false 来使用。值为选择器或DOM对象,如:bindAction: '#btn' string/object - field 设定文件域的字段名 string file size 设置文件最大可允许上传的大小,单位 KB。不支持ie8/9 number 0(即不限制) multiple 是否允许多文件上传。设置 true即可开启。不支持ie8/9 boolean false number 设置同时可上传的文件数量,一般配合 multiple 参数出现。注意:该参数为 layui 2.2.3 开始新增 number 0(即不限制) drag 是否接受拖拽的文件上传,设置 false 可禁用。不支持ie8/9 boolean true 回调 choose 选择文件后的回调函数。返回一个object参数,详见下文 function - before 文件提交上传前的回调。返回一个object参数(同上),详见下文 function - done 执行上传请求后的回调。返回三个参数,分别为:res(服务端响应信息)、index(当前文件的索引)、upload(重新上传的方法,一般在文件上传失败后使用)。详见下文 function - error 执行上传请求出现异常的回调(一般为网络异常、URL 404等)。返回两个参数,分别为:index(当前文件的索引)、upload(重新上传的方法)。详见下文 function - */ Prolog.upload = function(opts, hasAuth) { var upload = layui.upload //得到 upload 对象 if (hasAuth) { if (opts.headers) opts.headers['Authorization'] = 'Bearer ' + localStorage.getItem('authorization') else opts.headers = { Authorization: 'Bearer ' + localStorage.getItem('authorization') } } //创建一个上传组件 upload.render(opts) } /** * * @param {function} GridPlant hdw个人使用工厂函数 */ function GridPlant(obj) { ;(this.isI18n = window.isI18n || false), //多语言默认false // enableSideBar: true, (this.idS = '') // this.rowId = '' this.PlgGridInstance = obj.instance this.addBtnUrl = obj.addBtnUrl this.delBtnUrl = obj.delBtnUrl this.downBtnUrl = obj.downBtnUrl this.exportBtnUrl = obj.exportBtnUrl this.importBtnUrl = obj.importBtnUrl this.fileText = obj.fileText || 'fileText' //中文模块名称 this.moduleName = obj.moduleName //查日志使用的英文模块名称 this.formDataArea = [750, 350] if (obj.instance.opts.formDataArea && obj.instance.opts.formDataArea.length > 0) { this.formDataArea[0] = obj.instance.opts.formDataArea[0] //弹框width this.formDataArea[1] = obj.instance.opts.formDataArea[1] //弹框height } this.t = (function(is) { if (is) { return (this.t = function(text) { return i18next.t(text) }) } else { return (this.t = function(text) { return text }) } })(this.isI18n) this.logBtn = function() { var _this = this if (!this.moduleName) { throw new Error('this.moduleName模块名称没定义') } var popUps = function(id, modulesName, contentContainer) { if (!id || !modulesName || !contentContainer) { throw new Error('当前传递的参数缺少值') } layer.open({ type: 1, //此处以iframe举例 title: `
【${_this.t(modulesName)}】${_this.t('修改记录')}
`, area: ['470px', '430px'], shade: 0.3, shadeClose: true, offset: 'auto', content: contentContainer }) } var paramsObj = { systemId: SYSTEMID, // 系统id bussinessKey1: this.moduleName, // 当前模块名 bussinessKey2: this.rowId // 当前记录的id } var clearloading = Prolog.loading2() Prolog.syncAjax({ url: APIS.ServiceLog.list + '?' + $.param(paramsObj), type: 'get', before: function() {}, success: function(res) { if (res.success) { var obj = res.data var contentContainer = '' if (obj.length > 0) { obj.forEach(function(val) { contentContainer += `
  • 时间:${val.createTime}----操作人: ${val.userName}

    ${val.description}

  • ` }) } else { contentContainer = `
  • 暂无日志

  • ` } popUps(_this.rowId, _this.fileText, contentContainer) } else { console.error(res) } clearloading() }, error: function(res) { console.error(res) clearloading() } }) } this.addBtn = function() { this.formatForm(0, 'POST', this.t('新增'), this.addBtnUrl) } this.editBtn = function(type = 'PUT') { this.formatForm(1, type, this.t('编辑'), this.addBtnUrl) } this.delBtn = function(type = 'POST', param) { this.formatForm(3, type, this.t('是否删除数据'), this.delBtnUrl, param) } this.selectAllBtn = function() { this.formatForm(4, 'GET', '', this.addBtnUrl) } this.resetBtn = function() { this.formatForm(5, 'GET', '', this.addBtnUrl) } ;(this.exportBtn = function() { Prolog.download( this.exportBtnUrl + '?' + $.param(this.PlgGridInstance.getParams()), this.fileText + new Date().format('yyyy_MM_dd') + '.xls', true ) }), (this.downBtn = function() { Prolog.download(this.downBtnUrl, `${this.fileText}.xls`, true) }) this.deleteFlag = function(name, vlaue) { this.selectAllBtn() } } GridPlant.prototype.init = function() { var _this = this //分页点击d _this.PlgGridInstance.PageBarJump(function(obj, first) { _this.chekIds() _this.getRowId() }) //注册layuiDate日期挂件 var closeLoad Prolog.upload( { elem: $('#' + _this.PlgGridInstance.getPanelId() + ' .upload'), url: _this.importBtnUrl, accept: 'file', //普通文件 exts: 'xls|xlsx', multiple: true, acceptMime: '.xls,.xlsx', before: function() { closeLoad = Prolog.loading2() }, done: function(res, index, upload) { if (res.success) { layer.msg(res.message) } else { layer.open({ type: 1, shade: false, title: false, //不显示标题 content: res.message }) } _this.PlgGridInstance.reload() closeLoad() }, error: function(index, upload) { closeLoad() upload() } }, true ) setLayuiDate && setLayuiDate(_this.PlgGridInstance.getToolBarForm(), _this.PlgGridInstance.opts.toolbar, 'time') //注册事件 //头部工具条按扭事件 _this.PlgGridInstance.attachToolBarEvent('onchange', function(name, value) { if (name && _this.hasOwnProperty(name)) { _this[name](name, value) } return _this }) //如果有右边栏 if (_this.PlgGridInstance.opts.enableSideBar) { _this.PlgGridInstance.attachSideBarEvent('onButtonClick', function(name) { if (name && _this.hasOwnProperty(name)) { _this[name]() } }) } _this.PlgGridInstance.attachToolBarEvent('onButtonClick', function(name) { if (name && _this.hasOwnProperty(name)) { _this[name]() } else if (name == 'plg-more-001') { _this.PlgGridInstance.resetSize() } return _this }) _this.PlgGridInstance.attachEvent('onRowSelect', function(id, ind) { _this.getRowId() }) _this.PlgGridInstance.attachEvent('onCheck', function(rId, cInd) { _this.chekIds() }) _this.PlgGridInstance.attachEvent('onRowDblClicked', function(rId) { if (_this.PlgGridInstance.getSelectedRowData().deleteFlag === 1) { _this.logBtn() } else { _this.editBtn() } }) _this.PlgGridInstance.attachEvent('onHeaderClick', function(ind, obj) { if (ind === 1) { _this.chekIds() } return _this }) return _this } GridPlant.prototype.beforeRender = function(callback) { if (typeof callback == 'function') { this.beforeRender = callback this.beforeRender() return this } } //使用layui的data function setLayuiDate(GridForm, arr, portName, typeValue) { if (!typeValue) typeValue = 'input' arr.forEach(function(item, index) { if (item.type == typeValue && item.name == portName) { var f = item.dateFormat || 'yyyy/MM/dd', t = item.dateType || 'date' GridForm.getInput(portName).setAttribute('readonly', true) layui.laydate.render({ elem: GridForm.getInput(portName), type: t, lang: i18next.language, format: f, value: item.value, // theme: '#0959a7', //showBottom: false, change: function(value, date, endDate) { $('.layui-laydate-content') .off() .on('click', 'li', function() { value.substring(0, 19) value.replace(/-/g, '/') GridForm.setItemValue(portName, value ? value : '') $('.layui-laydate').remove() //删除 }) }, done: function(value, date, endDate) { value.substring(0, 19) value.replace(/-/g, '/') GridForm.setItemValue(portName, value ? value : '') } }) return false } else { if (item.list && item.list.length > 0) { setLayuiDate(GridForm, item.list, portName) } return false } }) } GridPlant.prototype.formatForm = function( num, type, title, protUrl, param = { id: this.idS } ) { var _this = this //num=0 add num=1 edit num=3 del num=4 搜索 reset=5重制 if (num === 3) { //del layer.confirm( title, { title: _this.t('提示'), btn: [_this.t('确定'), _this.t('取消')] //按钮 }, function(index) { var close = PlgDialog.loading2() Prolog.ajax({ url: protUrl, type: type, data: param, dataType: 'json', success: function(data) { if (data.success) { _this.PlgGridInstance.reload() _this.chekIds() } layer.msg(_this.t(data.message)) close() layer.close(index) _this.delBtnAfter() }, error: function() { close() } }) }, function() { close() } ) return } else if (num === 4) { //搜索 // var WarehouseIds=getLocalStrongSelectedWarehouseIds(); // getLocalStrongSelectedWarehouseIds()&& this.PlgGridInstance.getToolBarForm().setItemValue("warehouseId", WarehouseIds.toString()) var fdata = this.PlgGridInstance.getToolBarForm().getFormData() if (fdata.startTime && fdata.endTime) { if (fdata.endTime.valueOf() - fdata.startTime.valueOf() < 0) { PlgDialog.msg('结束时间不得早于开始时间,请重新选择') this.PlgGridInstance.getToolBarForm() .getInput('startTime') .select() return false } } if (fdata['time']) { fdata['time'] = new Date(fdata['time']) } var obj = {} for (key in fdata) { if (fdata[key]) { obj[key] = fdata[key] } } this.selectAllBtnAfter(obj) var getToolBarForm = this.PlgGridInstance.getToolBarForm().getDForm() // //如果是无效数据就把chark隐藏 // if (obj.deleteFlag && obj.deleteFlag === 1) { // this.PlgGridInstance.setColumnHidden(1, true); // getToolBarForm.hideItem("downBtn") // getToolBarForm.hideItem("exportBtn") // getToolBarForm.hideItem("exportBtn") // getToolBarForm.hideItem("addBtn") // getToolBarForm.hideItem("importBtn"); // getToolBarForm.hideItem("editBtn"); // getToolBarForm.hideItem("delBtn"); // } else { // obj.deleteFlag = 0; // this.PlgGridInstance.setColumnHidden(1, false); // getToolBarForm.showItem("downBtn") // getToolBarForm.showItem("exportBtn") // getToolBarForm.showItem("exportBtn") // getToolBarForm.showItem("addBtn") // getToolBarForm.showItem("importBtn"); // getToolBarForm.showItem("editBtn"); // getToolBarForm.showItem("delBtn"); // } this.PlgGridInstance.setParams(obj) this.PlgGridInstance.reload() this.getRowId() this.chekIds() return } else if (num === 5) { var dform = this.PlgGridInstance.getToolBarForm() if (_this.PlgGridInstance.opts.enableSideBar) dform = this.PlgGridInstance.getSideBarForm() dform.clear() dform.getDForm().checkItem('deleteFlag', 0) dform.setItemValue('warehouseId', getLocalStrongSelectedWarehouseIds()) return } _this.PlgGridInstance.showDialog(num, title, _this.formDataArea[0], _this.formDataArea[1], { url: protUrl, type: type, saveAfter: function(gridForm, data) { if (data.time && typeof data.time === 'string') { data.time = new Date(data.time) } if (data.id == '') { data.id = 0 } if (data.warehouseName == '') { data.warehouseName = WAREHOUSE_CATEGORY.length > 0 && WAREHOUSE_CATEGORY[0].text } if(num==0){ if(data.authorizedGrantTypes && data.authorizedGrantTypes.length>0){ data.authorizedGrantTypes = data.authorizedGrantTypes.join(","); }else{ data.authorizedGrantTypes = 'client_credentials'; } } _this.showDialogSaveBtn(gridForm, data) return data }, resetAfter: _this.showDialogResetBtn }) //新增或修改弹出时的From表单 var GridForm = _this.PlgGridInstance.getGridForm() setLayuiDate && setLayuiDate(GridForm, _this.PlgGridInstance.opts.formData, 'time') _this.showDialogAfter && _this.showDialogAfter(GridForm) if (num === 1 && type == 'PUT') { _this.editBtnAfter && _this.editBtnAfter(GridForm) } GridForm.attachEvent('onchange', function(name, value, state) { if (name == 'warehouseId') { var opt = Array.prototype.slice.call(GridForm.getSelect('warehouseId').children).filter(function(item) { return value == item.value }) GridForm.setItemValue('warehouseName', opt[0].text) } else if (name == 'typeId') { var opt = Array.prototype.slice.call(GridForm.getSelect('typeId').children).filter(function(item) { return value == item.value }) GridForm.setItemValue('type', opt[0].text) } _this.formOnChange && _this.formOnChange(name, value, GridForm) return }) return } GridPlant.prototype.showDialogAfter = function(callback) { if (typeof callback === 'function') { return (this.showDialogAfter = callback) } } ;(GridPlant.prototype.showDialogSaveBtn = function(callback) { if (typeof callback === 'function') { return (this.showDialogSaveBtn = callback) } else { return null } }), (GridPlant.prototype.selectAllBtnAfter = function(callback) { if (typeof callback === 'function') { return (this.selectAllBtnAfter = callback) } else { return null } }), (GridPlant.prototype.editBtnAfter = function(callback) { if (typeof callback === 'function') { return (this.editBtnAfter = callback) } }) GridPlant.prototype.delBtnAfter = function(callback) { if (typeof callback === 'function') { return (this.delBtnAfter = callback) } else { return null } } GridPlant.prototype.showDialogResetBtn = function(callback) { if (typeof callback === 'function') { this.showDialogResetBtn = callback return this } } GridPlant.prototype.formOnChange = function(callback) { if (typeof callback === 'function') { return (this.formOnChange = callback) } } GridPlant.prototype.getRowId = function() { this.rowId = this.PlgGridInstance.getSelectedRowId() if (this.rowId && this.rowId.indexOf(',') == -1) { this.PlgGridInstance.getToolBarForm().enableItem('logBtn') //如果是无效数据就禁用编辑按钮 if (this.PlgGridInstance.getSelectedRowData().deleteFlag !== 1) { this.PlgGridInstance.getToolBarForm().enableItem('editBtn') } } else { this.PlgGridInstance.getToolBarForm().disableItem('logBtn') this.PlgGridInstance.getToolBarForm().disableItem('editBtn') } return this } GridPlant.prototype.chekIds = function() { this.idS = this.PlgGridInstance.getCheckedIds() if (this.idS) { this.PlgGridInstance.getToolBarForm().enableItem('delBtn') } else { this.PlgGridInstance.getToolBarForm().disableItem('delBtn') } return this } // 获取版本号 function getVersion() { var version if (!version) { $.ajaxSettings.async = false $.get('/ops/getVersion', function(res) { version = res.version }) $.ajaxSettings.async = true } return version } //表格圖片配置 ;(Prolog.GridImageBasePath = './prologui/dist/images/PlgGrid/'), (Prolog.reloadToken = function() { Prolog.token = 'Bearer ' + localStorage.getItem('authorization') }), /** * 判断是否已登录(支持携带access_token和expir登录) */ (Prolog.isLogined = function() { var tk = null var exp = null var P_GET = Prolog.getRequestParams() if (P_GET['access_token'] && P_GET['expir']) { tk = P_GET['access_token'] exp = P_GET['expir'] localStorage.setItem('authorization', tk) localStorage.setItem('token_expir', exp) } else { tk = 'Bearer ' + localStorage.getItem('authorization') exp = localStorage.getItem('token_expir') } if (tk != null && tk != '' && exp != null && exp != '') { var expir = parseInt(exp) var b = new Date().getTime() > expir ? false : true return b } else { return false } })