var h_language = localStorage.getItem("userlanguage") || "zh"; util = window.top.util; FormatCenter = window.top.FormatCenter; Dictionary = window.top.Dictionary; baseUrl = window.top.baseUrl; interfaces = window.top.interface; buttonsconfig = window.top.buttonsconfig; Object.subClass = function(properties) { if (!properties) { return; } var clazz = properties.init; delete properties.init; if (!clazz) { clazz = new Function(); } prototyping = true; try { var prototype = new this(); } finally { prototyping = false; } for (var name in properties) { prototype[name] = properties[name]; } clazz.prototype = prototype; clazz.subClass = arguments.callee; return clazz; }; //不同的模板对应的初始化Vue //单表格主页 ListVue = Object.subClass({ init: function(config) { // 国际化 var locale_val_ = h_language; var i18n = null; if (typeof VueI18n === "function" ) { i18n = new VueI18n({ locale: locale_val_, // set locale messages: { zh: zh, // 中文语言包 en: en // 英文语言包 } }) } var default_ = { el: null, i18n: i18n, data: { //pageAttr.heightType:table/page都是为了设置表格的高度。 //table是以表格本身的条数计算高度。 //page是以页面给表格留下的高度为表格高度 pageAttr: { heightType: "page" }, //绑定的数据对象 dataname: null, //接口 dataurl: "root/data/getEntitySet", //版本 currentVersion: { value: "1.0", label: "1.0" }, versionList: [ {value: "1.0", label: "1.0"}, {value: "2.0", label: "2.0"}, {value: "3.0", label: "3.0"} ], //查询功能 filterFields:[], filterFieldsObj: {}, filterObj: {}, filterObjBydefault: {}, filterTxt: "", paramObjBydefault: {}, filterList:[ //注释:type: equal(等于)/in(在多个数据中)/like(模糊)/minval(最小值)/maxval(最大值)/mininclude(最小且包含该值)/maxinclude(最大且包含该值) //{field: "", val: "", type: ""} ], filterAttr: { columnnumber: 4, labelwidth: "100px", labelposition: "right",//"left",//"right", size: "medium", border: "0px solid #c6c6c600" }, formFields: [], formFieldsObj: {}, //列表功能 operationtype: "", isRefresh: true, tableAttr: {}, tableFields: [], tableFieldsObj: {}, tableData: [], tableHeight: 360, isedit: false, isEditTableData:false, isPagination: false, pagesize: 10, pagenum: 1, total: 0, selectedrow: {}, selectCellField: {}, selectCellData: {}, orderby: "", tableloading: false, filter_:"", pageCode: "", pageObj: {}, title: "", //窗口高度 clientHeight: 0, tabs: {}, buttons: {}, tabMapPagesizeObj: {}, preinstallPagesizeObj: { pagesize: 10, pagenum: 1, total: 0 }, //Tab项 tabList: [ {id: "1", label: "Tab1", name: "tab1"}, {id: "2", label: "Tab2", name: "tab2"}, {id: "3", label: "Tab3", name: "tab3"} ], tabMapButton:{ page_id: {}, }, tabMapTable:{ page_id: {}, }, tabMapQuery:{ page_id: [], }, tabMapQueryField:{ page_id: [], }, tabMapField:{ page_id: [], }, tabMapPagesize:{ page_id: {}, }, tabMapTableData:{ page_id: [], }, tabMapFilterData:{ page_id: {}, }, //tables tableList: [], pageId: "", activeTable: {}, dataname_records: "", paramRecordsObjBydefault: {}, approvaltype: "", filterFields_records: [], filterFieldsObj_records: {}, tableFields_records: [], tableFieldsObj_records: {}, approvalfields: [], tableData_records: [], tableHeight_records: 300, totaltab: "",// loading_save: false, loading_submit: false, //预加载 dataRequest: [], dataRequestObj: {}, data_tablename_map: {}, buttonsconfig: buttonsconfig, }, watch: { }, methods: { loadRequestData(dataRequest, result, callback) { this.doLoadRequestData(dataRequest, result, callback); }, doLoadRequestData(dataRequest, result, callback) { var me = this; if (dataRequest && dataRequest.length) { var item = dataRequest[0]; if (typeof(item) == "string") { result[item] = dataRoot.database[item]; dataRequest.remove(item); me.doLoadRequestData(dataRequest, result, callback); } else { if (item.isClientMode) { result[item.name] = dataRoot.database[item.name]; dataRequest.remove(item); me.doLoadRequestData(dataRequest, result, callback); }else if (item.url) { var params = item.paramsobj || {}; // params.isClientMode = false; Server.call("rootfee/" + item.url, params, function(result_) { console.log(result_); //是字典 if (result_ && result_.dictionary && result_.dictionary.items.length) { result[item.name] = result_.dictionary.items; //不是不是选项 if (!item.isnotoption) { //是选项 result_.dictionary.items.map(e=>{ if (!result.map) { result.map = {}; } if (!result.map[item.name]) { result.map[item.name] = {}; } e.code = e[item.code]; e.value = e[item.label]; result.map[item.name][e[item.code]] = e[item.label]; }) } } else { result[item.name] = result_; } dataRequest.remove(item); me.doLoadRequestData(dataRequest, result, callback); }); } else { var dataname_ = item.name; if (item.dataname) { dataname_ = item.dataname; } var params = { dataname: dataname_, } if(item.filter) { params.filter = item.filter } if(item.orderby) { params.orderby = item.orderby } var event_ = "root/data/getEntitySet"; if (item.url) { event_ = item.url; } Server.call("rootfee/" + event_, params, function(result_) { console.log(result_); if (result_ && result_.data.entityset && result_.data.entityset.length) { result[item.name] = result_.data.entityset; //不是不是选项(是选项) if (!item.isnotoption) { //是选项 result_.data.entityset.map(e=>{ if (!result.map) { result.map = {}; } if (!result.map[item.name]) { result.map[item.name] = {}; } e.code = e[item.code]; e.value = e[item.label]; result.map[item.name][e[item.code]] = e[item.label]; }) } } else { result[item.name] = []; } dataRequest.remove(item); me.doLoadRequestData(dataRequest, result, callback); }); } } } else { callback(result); } }, fieldsToFieldsObj() { //查询的字段转换 var filterFieldsObj_ = {}; var tableFieldsObj_ = {}; this.filterFieldsObj = {}; this.tableFieldsObj = {}; this.filterFields.map(f=>{ if (f.inputtype == "date") { f.type = "daterange"; f.filteroperator = "inScopeInclude"; } if (f.inputtypefilter) { f.type = f.inputtypefilter; } filterFieldsObj_[f.field] = f; }); this.filterFieldsObj = clone(filterFieldsObj_); if (this.tableFields && this.tableFields.length) { var tableFields_ = TreeToArray(this.tableFields, "field"); tableFields_.map(f=>{ tableFieldsObj_[f.field] = f; }); this.tableFieldsObj = clone(tableFieldsObj_); } }, //版本 versionSelect: function(obj) { this.currentVersion = obj; if (this.onVersionSelect) { this.onVersionSelect.call(this, obj); return } this.onInitQuery(); }, //功能 onDownload: function() { dealExportByPath("../../../template/area_tree.xlsx","测试数据"); }, onUpload: function() { Root.message('导入'); }, /////////////////// //获取资源 /////////////////// getResoures() { let me = this; this.getPageObj(); }, getPageObj() { var me = this; //页面信息 var params = { dataname: "page", filter: "code='" + this.pageCode + "'", //userId: this.userId } Server.call("rootfee/" + "root/data/getEntitySet", params, function(result) { console.log(result); if (result && result.data.entityset) { me.pageObj = result.data.entityset[0]; me.title = me.pageObj.name; if (window.top.userinfo.user.language && window.top.userinfo.user.language == "en") { me.title = me.pageObj.name_en; } me.pageId = me.pageObj.id; //获取ButtonsByPage //me.getButtonsByPage(me.pageObj.id); //获取TablesByPage //me.getTablesByPage(me.pageObj.id); me.$forceUpdate(); } }); }, getButtonsByPage(pageid) { var me = this; var resource_type = "button"; var roleCode = Root.role.id; var roleid_str = ""; roleCode.map(r=>{ if (!roleid_str) { roleid_str = r; } else { roleid_str += ";" + r; } }); var roleid_ = roleid_str.replace(/;/g,"','"); //按键 var params = { dataname: "buttonByPage",//buttonByPage/buttonByPanel filter: "resource_page.id='" + pageid + "' and EXISTS( SELECT 1 from resource_role r where r.type='" + resource_type + "' and r.role_id in ('" + roleid_ + "') and r.resource_id = t.id)" //userId: this.userId } Server.call("rootfee/" + "root/data/getEntitySet", params, function(result) { console.log(result); if (result && result.data.entityset) { result.data.entityset.map(e=>{ if (!me.tabMapButton[e.page_id]) { me.tabMapButton[e.page_id] = {}; } me.tabMapButton[e.page_id][e.id_name]=e; }); me.getButtonByTabName(me.pageId); me.$forceUpdate(); } }); }, getButtonByTabName(tab_name) { var me = this; me.buttons = {}; if (me.tabMapButton[tab_name]) { me.buttons = me.tabMapButton[tab_name]; } }, getTabsByPage(pageid) { var me = this; var resource_type = "tab"; var roleCode = Root.role.id; var roleid_str = ""; roleCode.map(r=>{ if (!roleid_str) { roleid_str = r; } else { roleid_str += ";" + r; } }); var roleid_ = roleid_str.replace(/;/g,"','"); //tab var params = { dataname: "tabs", //filter: "page_id='" + pageid + "'", filter: "page_id='" + pageid + "' and EXISTS( SELECT 1 from resource_role r where r.type='" + resource_type + "' and r.role_id in ('" + roleid_ + "') and r.resource_id = t.id)", orderby: "orderno" //userId: this.userId } Server.call("rootfee/" + "root/data/getEntitySet", params, function(result) { console.log(result); if (result && result.data.entityset) { me.tabList = result.data.entityset; me.activeTab = me.tabList[0].id_name; result.data.entityset.map(e=>{ me.tabs[e.id_name] = e; }); //获取ButtonsByPage me.getButtonsByPageTab(me.pageObj.id); //获取TablesByPage //me.getTablesByPage(me.pageObj.id); me.$forceUpdate(); } }); }, getButtonsByPageTab(pageid) { var me = this; var resource_type = "button"; var roleCode = Root.role.id; var roleid_str = ""; roleCode.map(r=>{ if (!roleid_str) { roleid_str = r; } else { roleid_str += ";" + r; } }); var roleid_ = roleid_str.replace(/;/g,"','"); //按键 var params = { dataname: "buttonByTab",//buttonByPage/buttonByPanel //filter: "resource_tab.page_id='" + pageid + "'", filter: "resource_tab.page_id='" + pageid + "' and EXISTS( SELECT 1 from resource_role r where r.type='" + resource_type + "' and r.role_id in ('" + roleid_ + "') and r.resource_id = t.id)" //userId: this.userId } Server.call("rootfee/" + "root/data/getEntitySet", params, function(result) { console.log(result); if (result && result.data.entityset) { //me.activeTab = me.tabList[0].id_name; result.data.entityset.map(e=>{ if (!me.tabMapButton[e.tabcode]) { me.tabMapButton[e.tabcode] = {}; } me.tabMapButton[e.tabcode][e.id_name]=e; }); me.getButtonByTabName(me.activeTab); me.$forceUpdate(); } }); }, /////////////////////////////////// refreshData: function() { this.filterObj = {}; if (this.onRefreshData) { this.onRefreshData.call(this, arguments); return } this.onQuery(); }, approvalData: function(code) { //1. this.operationtype = "approval"; //2. get config and go var config = new Config(), go = true; if (this.onApproveData) { go = this.onApproveData.call(this, config, code); } //3. popup if (go) { config.title = clone(config.text); config.operationtype = clone(this.operationtype); if (config.url && config.url.indexOf("http:") == -1) { config.url = "rootfee/" + config.url; } if (config.totab) { if (config.url) { if (config.text.length > 4) { config.text = config.text.substr(0, 4) + "..."; } } var callback_ = config.callback; var closecallback_ = config.closecallback; var parames = { totab: true,//config.totab, url: config.url, title: config.title,//config.title = clone(config.text); sceneCode: config.sceneCode, data: config.data, delta: config.delta, disabled: config.disabled, disabledone: config.disabledone, operationtype: "approval", parentOption: window.top.tab.selected.option, closecallback: function() { if (closecallback_) { closecallback_(); } }, callback: function(obj, callback) {//var callback_ = config.callback; if (callback_) { callback_(obj); } if (callback) { callback(); } } }; Root.popupParames = parames; window.top.tab.open(config); } else { this.doPopup(config); } } }, //表格是否编辑 setEditTableData: function() { if (this.onSetEditTableData) { this.onSetEditTableData.call(this, arguments); return } this.isRefresh = false; this.isEditTableData = !this.isEditTableData; this.tableDataAfter(); }, getData: function(page) { this.pagesize = page.pagesize; this.pagenum = page.pagenum; this.selectedrow = {}; this.doQuery(); }, //查询 onQuery: function(callback) { //查询 this.pagenum = 1; this.selectedrow = {}; this.doQuery(callback); }, onInitFilter: function() { //清空 this.filterObj = {}; this.selectedrow = {}; this.onQuery(); }, onEditFilter: function() { //选择查询字段 }, doQuery: function(callback) { let me = this; let filter_ = "1=1"; this.filterList = []; this.selectedrow = {}; for(var k in this.filterObj) { let k_val = this.filterObj[k]; /* let fieldObj_ = this.filterFieldsObj[k]; let type_ = fieldObj_.type; let field_ = fieldObj_.field; */ if (k_val && typeof(k_val) == "string") { //去除两端的空格 this.filterObj[k] = k_val = k_val.replace(/(^\s*)|(\s*$)/g, ""); //去除两端的Tab this.filterObj[k] = k_val = k_val.replace(/(^\t*)|(\t*$)/g, ""); } let fieldObj_ = this.filterFieldsObj[k]; if (!fieldObj_) { continue } if (!fieldObj_) { fieldObj_ = { field: k } } let type_ = fieldObj_.type; let valfield_ = fieldObj_.valfield; if (type_ == "popup" && valfield_) { k_val = this.filterObj[valfield_]; } let field_ = fieldObj_.field; let filteroperator_ = "equal"; let isnull = false; let ornullval_ = fieldObj_.ornullval; if (ornullval_) { var nullvals_ = ornullval_.split(";"); nullvals_.map(v=>{ if (v == k_val) { isnull = true; } }); } if (fieldObj_.filterfield) { field_ = fieldObj_.filterfield } if (fieldObj_.filteroperator) { filteroperator_ = fieldObj_.filteroperator } //传条件数组由后端拼接筛选数据 /* let filterListObj_ = { field: field_, val: k_val, type: filteroperator_ } this.filterList.push(filterListObj_); */ //传条件数据有前端拼接 if (k_val && k_val != "" && k_val.length) { filter_ = getFilterByFilterType(filter_, type_, field_, k_val, filteroperator_, isnull); } } if (Object.keys(this.filterObjBydefault).length) { for(var k in this.filterObjBydefault) { let k_val = this.filterObjBydefault[k]; if (k_val.indexOf(',') != -1) {//包含英文","用in filter_ += " and " + k + " in ('" + k_val +"')"; } else { filter_ += " and " + k + " ='" + k_val +"'"; } } } if (this.filterTxt) { filter_ += " and " + this.filterTxt; } var attachmeta_ = false; if (!this.tableFields || (this.tableFields && this.tableFields.length == 0)) { attachmeta_ = true; } let param_ = { dataname: this.dataname, filterList: this.filterList, filter: filter_, orderby: this.orderby, page: { pageno: this.pagenum, pagesize: this.pagesize }, attachMeta: attachmeta_ } if (Object.keys(this.paramObjBydefault).length) { for(var k in this.paramObjBydefault) { let k_val = this.paramObjBydefault[k]; param_[k] = k_val; } } me.tableData = []; //me.total = 0; me.tableloading = true; Server.call("rootfee/" + me.dataurl, param_, function(result) { console.log(result); me.tableloading = false; if (result && result.meta) { me.data_tablename_map = result.meta } if (result && result.data && result.data.entityset) { if (result.data.page && result.data.page.recordcount && me.pagenum > 1 && result.data.page.recordcount < (me.pagenum - 1) * me.pagesize) { me.pagenum = 1; me.doQuery(callback); return; } var data_ = result.data.entityset; me.tableData = data_; me.total = result.data.page ? result.data.page.recordcount : 0; } else { me.total = 0; } me.queryAfter(); if (callback) { callback(result, function() { me.tableDataAfter(); }); } }, function(){ me.tableloading = false; }); }, getFilterData: function(filter, isnotencode) { var filter_ = filter ? filter : "1=1"; for(var k in this.filterObj) { let k_val = this.filterObj[k]; if (k_val && typeof(k_val) == "string") { //去除两端的空格 this.filterObj[k] = k_val = k_val.replace(/(^\s*)|(\s*$)/g, ""); //去除两端的Tab this.filterObj[k] = k_val = k_val.replace(/(^\t*)|(\t*$)/g, ""); } let fieldObj_ = this.filterFieldsObj[k]; if (!fieldObj_) { continue } let type_ = fieldObj_.type; let valfield_ = fieldObj_.valfield; if (type_ == "popup" && valfield_) { k_val = this.filterObj[valfield_]; if (!this.filterObj[valfield_] && this.filterObj[k]) { k_val = this.filterObj[k]; } } let field_ = fieldObj_.field; let filteroperator_ = "equal"; let isnull = false; let ornullval_ = fieldObj_.ornullval; if (ornullval_) { var nullvals_ = ornullval_.split(";"); nullvals_.map(v=>{ if (v == k_val) { isnull = true; } }); } if (fieldObj_.filterfield) { field_ = fieldObj_.filterfield } if (fieldObj_.filteroperator) { filteroperator_ = fieldObj_.filteroperator } if (k_val && k_val != "" && k_val.length) { filter_ = getFilterByFilterType(filter_, type_, field_, k_val, filteroperator_, isnull); } } if (Object.keys(this.filterObjBydefault).length) { for(var k in this.filterObjBydefault) { let k_val = this.filterObjBydefault[k]; filter_ += " and " + k + " = '" + k_val +"'"; } } if (this.filterTxt) { filter_ += " and " + this.filterTxt; } if (isnotencode) { return filter_; } else { return encodeURI(filter_); } }, // tableDataAfter() { // let me = this; // var thistab = this.selectTabObj; // if (this.onTableDataAfter) { // this.onTableDataAfter.call(this, arguments); // return // } // if (thistab.tableFields.length > 0){ // this.$nextTick(function(){ // this.isRefresh = true; // this.$nextTick(function(){ // var tableHeight_ = 0; // let clientHeight = document.documentElement.clientHeight; // let height_topmenu = window.top.document.getElementsByClassName('toolbar-C').length ? window.top.document.getElementsByClassName('toolbar-C')[0].offsetHeight : 0; // let height_tabmenu = window.top.document.getElementsByClassName('tab-A-headerOuter').length ? window.top.document.getElementsByClassName('tab-A-headerOuter')[0].offsetHeight : 0; // let title_height = document.getElementsByClassName('topbar').length ? document.getElementsByClassName('topbar')[0].offsetHeight + document.getElementsByClassName('topbar')[0].offsetTop : 0; // let tabs_height = document.getElementsByClassName('el-tabs__header').length ? document.getElementsByClassName('el-tabs__header')[0].offsetHeight + 2 : 0; // let filter_height = document.getElementsByClassName('h_form_filter').length ? document.getElementsByClassName('h_form_filter')[0].offsetHeight : 0; // let footer_height = document.getElementsByClassName('el-dialog__footer').length ? document.getElementsByClassName('el-dialog__footer')[0].offsetHeight : 0; // let h_table_select = document.getElementsByClassName('h_table_select').length ? document.getElementsByClassName('h_table_select')[0].offsetHeight : 0; // let h_table_title = document.getElementsByClassName('h_table_title').length ? document.getElementsByClassName('h_table_title')[0].offsetHeight : 0; // let header_height = document.getElementsByClassName('el-dialog__header').length ? document.getElementsByClassName('el-dialog__header')[0].offsetHeight : 0; // let pagination_height = 0; // if (document.getElementsByClassName('z_table_pagination').length) { // pagination_height = document.getElementsByClassName('z_table_pagination')[0].offsetHeight; // } // // tableHeight_ = clientHeight - height_topmenu - title_height - tabs_height - pagination_height - footer_height - h_table_select - h_table_title - header_height; // tableHeight_ = clientHeight - filter_height - tabs_height - pagination_height - footer_height - h_table_select - h_table_title - header_height - 40; // me.selectTabObj.tableHeight = tableHeight_ + header_height; // me.$refs.table1.$el.getElementsByClassName('el-table__body-wrapper')[0].style['height'] = tableHeight_ + "px"; // }) // }) // } // }, queryAfter: function() { if (this.onQueryAfter) { this.onQueryAfter.call(this, arguments); return } }, tableDataAfter: function() { let me = this; if (this.onTableDataAfter) { this.onTableDataAfter.call(this, arguments); return } if (this.tableFields.length > 0){ this.$nextTick(function(){ this.isRefresh = true; this.$nextTick(function(){ if (me.pageAttr && me.pageAttr.heightType == "table") { me.tableHeight = settableHeight(me.$refs.table1.$el, me.pagesize); } else if (me.pageAttr && me.pageAttr.heightType == "page") { var el_list = []; if (me.$refs.form1 && me.$refs.form1.$el) { el_list.push(me.$refs.form1.$el); } me.tableHeight = setpageHeight(me.$refs.table1.$el, el_list, me.tableData.length, 5); // me.tableHeight = setpageHeight(); } else if (me.pageAttr && me.pageAttr.heightType == "popuppage") { var el_list = []; if (me.$refs.form1 && me.$refs.form1.$el) { el_list.push(me.$refs.form1.$el); } me.tableHeight = setpopuppageHeight(me.$refs.table1.$el, el_list, me.tableData.length, 5); } }) }) } else { var el_list = []; if (me.$refs.form1 && me.$refs.form1.$el) { el_list.push(me.$refs.form1.$el); } me.tableHeight = setpageHeight(me.$refs.table1.$el, el_list, 10, 5); } }, downloadPublic: function() { let now = new Date(); //当前日期 let nowYear = now.getFullYear(); //当前年 let nowMonth = now.getMonth() + 1; //当前月 let nowDay = now.getDate(); //当前日 let nowHour = now.getHours(); let nowMinute = now.getMinutes(); let nowSecond = now.getSeconds(); let param = { dataname: this.dataname, filename: this.title + nowYear + nowMonth + nowDay + nowHour + nowMinute + nowSecond, filter: this.getFilterData() } textdownloadForm(param); }, onInitFilterApprovalRecords: function() { //清空 this.filterObj = {}; this.onQueryApprovalRecords(); }, getApprovalRecordsData: function(page) { this.pagesize = page.pagesize; this.pagenum = page.pagenum; this.getMyApprovalRecords(); }, onQueryApprovalRecords: function(total_tab) { //查询 this.pagenum = 1; this.getMyApprovalRecords(total_tab); }, getMyApprovalRecords: function(total_tab) { let me = this; let filter_ = "1=1"; this.filterList = []; this.selectedrow = {}; filter_ += this.filter_; for(var k in this.filterObj) { let k_val = this.filterObj[k]; if (typeof(k_val) == "string") { //去除两端的空格 this.filterObj[k] = k_val = k_val.replace(/(^\s*)|(\s*$)/g, ""); //去除两端的Tab this.filterObj[k] = k_val = k_val.replace(/(^\t*)|(\t*$)/g, ""); } let fieldObj_ = this.filterFieldsObj_records[k]; if (!fieldObj_) { continue } let type_ = fieldObj_.type; let valfield_ = fieldObj_.valfield; if (type_ == "popup" && valfield_) { k_val = this.filterObj[valfield_]; } let field_ = fieldObj_.field; let filteroperator_ = "equal"; let isnull = false; let ornullval_ = fieldObj_.ornullval; if (ornullval_) { var nullvals_ = ornullval_.split(";"); nullvals_.map(v=>{ if (v == k_val) { isnull = true; } }); } if (fieldObj_.filterfield) { field_ = fieldObj_.filterfield } if (fieldObj_.filteroperator) { filteroperator_ = fieldObj_.filteroperator } //传条件数据有前端拼接 if (k_val && k_val != "" && k_val.length) { filter_ = getFilterByFilterType(filter_, type_, field_, k_val, filteroperator_, isnull); } } if (this.filterTxt) { filter_ += " and " + this.filterTxt; } var dataname_ = this.dataname; if (this.dataname_records) { dataname_ = this.dataname_records; } let param_ = { dataname: dataname_, //filterList: this.filterList, type: this.approvaltype, fields: this.approvalfields, filter: filter_, orderby: this.orderby, page: { pageno: this.pagenum, pagesize: this.pagesize }, //attachMeta: true } if (Object.keys(this.paramRecordsObjBydefault).length) { for(var k in this.paramRecordsObjBydefault) { let k_val = this.paramRecordsObjBydefault[k]; param_[k] = k_val; } } me.tableData_records = []; me.tableloading = true; Server.call("rootfee/" + "root/api/getMyHistory", param_, function(result) { console.log(result); me.tableloading = false; if (me[total_tab] || me[total_tab] == 0) { me[total_tab] = 0; if (me.totaltab == total_tab) { me.total = me[total_tab]; } } else { me.total = 0; } if (result && result.data && result.data.entityset) { var data_ = result.data.entityset; if (me[total_tab] || me[total_tab] == 0) { me[total_tab] = result.data.page ? result.data.page.recordcount : 0; if (me.totaltab == total_tab) { me.total = me[total_tab]; } } else { me.total = result.data.page ? result.data.page.recordcount : 0; } me.tableData_records = data_; me.tableData = data_; } me.tableDataAfter_records(); }, function(){ me.tableloading = false; }); }, tableDataAfter_records: function() { let me = this; if (this.onTableDataAfterRecords) { this.onTableDataAfterRecords.call(this, arguments); return } if (this.tableData_records.length > 0){ this.$nextTick(function(){ this.$nextTick(function(){ if (me.pageAttr && me.pageAttr.heightType == "table") { me.tableHeight_records = settableHeight(me.$refs.table_records.$el, me.pagesize); } else if (me.pageAttr && me.pageAttr.heightType == "page") { var el_list = []; el_list.push(me.$refs.form_records.$el); me.tableHeight_records = setpageHeight(me.$refs.table_records.$el, el_list); } me.isRefresh = true; }) }) } else if (me.pageAttr && me.pageAttr.heightType == "page") { var el_list = []; el_list.push(me.$refs.form_records.$el); me.tableHeight_records = setpageHeight(me.$refs.table_records.$el, el_list); me.isRefresh = true; } }, addData: function() { //1. this.operationtype = "add"; //this.selectedrow = {}; //2. get config and go var config = new Config(), go = true; if (this.onAddData) { go = this.onAddData.call(this, config); } //3. popup if (go) { config.title = clone(config.text); config.operationtype = clone(this.operationtype); if (config.url && config.url.indexOf("http:") == -1) { config.url = "rootfee/" + config.url; } if (config.totab) { if (config.url) { if (config.text.length > 4) { config.text = config.text.substr(0, 4) + "..."; } } var callback_ = config.callback; var closecallback_ = config.closecallback; var parames = { totab: true,//config.totab, url: config.url, title: config.title,//config.title = clone(config.text); sceneCode: config.sceneCode, data: config.data, delta: config.delta, disabled: config.disabled, disabledone: config.disabledone, operationtype: "add", parentOption: window.top.tab.selected.option, closecallback: function() { if (closecallback_) { closecallback_(); } }, callback: function(obj, callback) {//var callback_ = config.callback; if (callback_) { callback_(obj); } if (callback) { callback(); } } }; Root.popupParames = parames; window.top.tab.open(config); } else { this.doPopup(config); } } }, editData: function(scope) { //1. this.operationtype = "edit"; //this.selectedrow = scope.row; //2. get config and go var config = new Config(), go = true; if (this.onEditData) { go = this.onEditData.call(this, config, scope); } //3. popup if (go) { config.title = clone(config.text); config.operationtype = clone(this.operationtype); if (config.url && config.url.indexOf("http:") == -1) { config.url = "rootfee/" + config.url; } if (config.totab) { if (config.url) { if (config.text.length > 4) { config.text = config.text.substr(0, 4) + "..."; } } var callback_ = config.callback; var closecallback_ = config.closecallback; var parames = { totab: true,//config.totab, url: config.url, title: config.title,//config.title = clone(config.text); sceneCode: config.sceneCode, data: config.data, delta: config.delta, disabled: config.disabled, disabledone: config.disabledone, operationtype: "edit", parentOption: window.top.tab.selected.option, closecallback: function() { if (closecallback_) { closecallback_(); } }, callback: function(obj, callback) {//var callback_ = config.callback; if (callback_) { callback_(obj); } if (callback) { callback(); } } }; Root.popupParames = parames; window.top.tab.open(config); } else { this.doPopup(config); } } }, delData: function(scope) { let me = this; if (this.onDelData) { this.onDelData.call(this, scope); return } let row = scope.row; let index_ = scope.$index; let name_ = "该数据"; if (!this.dataname) { Root.message({ type: 'warning', message: '该事件需指定数据对象' }); return } if (!row.id) { Root.message({ type: 'warning', message: '该事件需存在数据ID' }); return } Root.confirm('确定删除吗?', '删除提示', { confirmButtonText: '删除', cancelButtonText: '取消', type: 'warning' }).then(() => { let param = { id: row.id, dataname: this.dataname, } Server.call("rootfee/" + "root/data/deleteEntity", param, function(result) { console.log(result); Root.message({ type: 'success', message: '删除成功!' }); me.doQuery(); }); }).catch(() => { Root.message({ type: 'info', message: '已取消删除' }); }); }, //公共的弹窗——上传附件 onPopupByUploadFile() { var me = this; var config = { totab: true, width: "900px", icon: "icon-product", text: "附件上传", id: "popupByUploadFile", url: "../tool/popup_uploadFile.html", data: {}, delta: {}, callback: function(obj, callback) { me.uploadFileAfter(obj); if (callback) { callback(); } } }; this.doPopupByPublic(config); }, //公共的弹窗关闭 docloseDialog(isbuttonclose) { var me = this; if (me.popupParames.totab){ Root.tab.removeItem(Root.tab.selected); Root.tab.open(me.popupParames.parentOption, false); } else { if (isbuttonclose) { Root.hidePopup(this.popupParames.closecallback); } else { Root.hidePopup(); } } }, //公共的弹窗 doPopupByPublic(config) { if (config.url && config.url.indexOf("http:") == -1) { config.url = "rootfee/" + config.url; } if (config.totab) { if (!config.title && config.text) { config.title = clone(config.text); } if (config.url) { if (config.text.length > 4) { config.text = config.text.substr(0, 4) + "..."; } } var callback_ = config.callback; var closecallback_ = config.closecallback; var parames = { totab: config.totab, url: config.url, title: config.title, sceneCode: config.sceneCode, data: config.data, delta: config.delta, disabled: config.disabled, disabledone: config.disabledone, operationtype: config.operationtype, parentOption: window.top.tab.selected.option, closecallback: function() { if (closecallback_) { closecallback_(); } }, callback: function(obj, callback) { if (callback_) { callback_(obj, callback); } } }; Root.popupParames = parames; window.top.tab.open(config); } else { this.doPopup(config); } }, /*------------流程----------------*/ flow_Submit: function(status_,code_,dataType_) { //status_:审批的字段 code_:提示语 let me = this; var row = this.selectedrow; var id = ""; if(dataType_ == "deliver"){ id = row.deo_id } else{ id = row.id } if (!row || !row.id) { Root.message({ type: 'warning', message: '请先选择一条数据' }); return false; } else if (row[status_] != "input" && (row[status_] == "refuse" && row.create_operate_name != window.top.userinfo.employee.name)) { //待调整只有创建人才可提交 Root.message({ type: 'warning', message: '当前状态不可提交' }); return false; } Root.confirm('确定提交-' + row[code_] + '-吗?', '提示', { confirmButtonText: "提交", cancelButtonText: '取消', type: 'warning' }).then(() => { let param = { orderId:id, eventType:"commit", dataType:dataType_, } Server.call("rootfee/" + "root/order/onEvent", param, function(result) { console.log(result); if (result.success){ Root.message({ type: 'success', message: '提交成功' }); }else{ Root.message({ type: 'warning', message: '提交失败' }); } me.onQuery(); }); }).catch(() => { Root.message({ type: 'info', message: '已取消' }); }); }, //审批通过 passApproval(dataType_,reason_) { let me = this; var id = ""; if(dataType_ == "deliver"){ id = this.formData.deo_id } else{ id = this.formData.id } let param = { orderId:id, eventType:"approvalSuccess", dataType:dataType_, extra:{ variableMap:{ reason:reason_} }, } Server.call("rootfee/" + "root/order/onEvent", param, function(result) { console.log(result); if (result.success){ Root.message({ type: 'success', message: '审批成功' }); }else{ Root.message({ type: 'warning', message: '审批失败' }); } this.reasonvisible = false; Root.tab.removeItem(Root.tab.selected); }); }, //审批拒绝 refuseApproval(dataType_,reason_) { let me = this; var row = this.selectedrow; var id = ""; if(dataType_ == "deliver"){ id = this.formData.deo_id } else{ id = this.formData.id } let param = { orderId:id, eventType:"approvalFail", dataType:dataType_, extra:{ variableMap:{ reason:reason_} }, } Server.call("rootfee/" + "root/order/onEvent", param, function(result) { console.log(result); Root.message({ type: 'success', message: '拒绝审批成功' }); this.reasonvisible = false; Root.tab.removeItem(Root.tab.selected); }); }, //作废 Cancel: function(status_,code_) { let me = this; var row = this.selectedrow; if (!row || !row.id) { Root.message({ type: 'warning', message: '请先选择一条数据' }); return false; } else if (row[status_] != "refuse") { Root.message({ type: 'warning', message: '当前状态不可作废' }); return false; } Root.confirm('确定作废-' + row[code_] + '-吗?', '提示', { confirmButtonText: "作废", cancelButtonText: '取消', type: 'warning' }).then(() => { let param = { orderId:row.id, eventType:"cancellation", dataType:"sales", } Server.call("rootfee/" + "root/order/onEvent", param, function(result) { console.log(result); Root.message({ type: 'success', message: '作废成功' }); me.onQuery(); }); }).catch(() => { Root.message({ type: 'info', message: '已取消' }); }); }, //弹窗 showFilterPopup: function(obj) { if (this.onshowFilterPopup) { this.onshowFilterPopup.call(this, obj); return; } }, orderbyChange: function(obj) { if (this.onOrderbyChange) { this.onOrderbyChange.call(this, obj); return; } else { var order_field = ""; var order_ = ""; var delorder = false; var orderbylist = []; var neworderbylist = []; // if (this.orderby) { // orderbylist = this.orderby.split(","); // orderbylist.map(o=>{ // o = o.replace(/(^\s*)|(\s*$)/g, ""); // }); // } if (obj.field.filterfield) { order_ = clone(obj.field.filterfield); order_field = clone(obj.field.filterfield); } else { order_ = clone(obj.field.field); order_field = clone(obj.field.field); } if (obj.order == "ascending") {//正序 } else if(obj.order == "descending") {//倒序 order_ += " desc"; } else { delorder = true; } var isyou_ = false; if (orderbylist.length) { orderbylist.map(o=>{ var ol_ = []; ol_ = o.split(" "); if (ol_[0] != order_field) { neworderbylist.push(o); } else { isyou_ = true; if (!delorder) { neworderbylist.push(order_); } } }); } else if (!delorder) { isyou_ = true; neworderbylist.push(order_); } if (!isyou_) { neworderbylist.push(order_); } var orderby_ = ""; neworderbylist.map(no=>{ if (!orderby_) { orderby_ = no; } else { orderby_ += "," + no; } }) this.orderby = orderby_; this.onQuery(); } }, orderFilterFields(obj) { if (this.onOrderFilterFields) { this.onOrderFilterFields.call(this, obj); return; } else { obj.data_list.map(f=>{ if (!f.filteroperator) { f.filteroperator = "like"; } }) this.filterFields = obj.data_list } }, orderTableFields(obj) { if (this.onOrderTableFields) { this.onOrderTableFields.call(this, obj); return; } else { this.tableFields = obj.data_list this.isRefresh = false; this.$nextTick(function(){ this.isRefresh = true; }) } }, rowClick: function(obj) { // if(this.selectedrow.id && this.selectedrow.id == obj.row.id && "1" == "2") { // this.selectedrow = {}; // } // else { this.selectedrow = obj.row; if (this.onRowClick) { this.onRowClick.call(this, obj); return; } // } }, rowDblclick: function(obj) { if(this.selectedrow.id && this.selectedrow.id == obj.row.id && "1" == "2") { this.selectedrow = {}; } else { this.selectedrow = obj.row; if (this.onRowDblClick) { this.onRowDblClick.call(this, obj); return; } } }, cellElClick: function(obj) { //1. get stlected if (!obj.column.property){ return; } this.selectCellField = this.tableFieldsObj[obj.column.property]; this.selectCellData = obj.column.property ? obj.row[obj.column.property] : {}; //2. get config and go var config = new Config(), go = true; //2. fire if (this.oncellElClick) { go = this.oncellElClick.call(this, config, obj); } else { if (this.selectCellField.clickContext && this.selectCellField.clickContext.type == "popup") { config.combine({ url: this.selectCellField.clickContext.url, sceneCode: this.selectCellField.clickContext.sceneCode, data: obj.row, delta: this.selectCellField.clickContext.delta ? this.selectCellField.clickContext.delta : {}, width: this.selectCellField.clickContext.width + "px" }) } else go = false; } //3. popup if (go) { this.doPopup(config); } }, cellClick: function(obj) { //1. get stlected if (!obj.column.property){ return; } this.selectCellField = this.tableFieldsObj[obj.column.property]; this.selectCellData = obj.column.property ? obj.row[obj.column.property] : {}; //2. get config and go var config = new Config(), go = true; //2. fire if (this.onCellClick) { go = this.onCellClick.call(this, config, obj); } else { if (this.selectCellField.clickContext && this.selectCellField.clickContext.type == "popup") { config.combine({ url: this.selectCellField.clickContext.url, sceneCode: this.selectCellField.clickContext.sceneCode, data: obj.row, delta: this.selectCellField.clickContext.delta ? this.selectCellField.clickContext.delta : {}, width: this.selectCellField.clickContext.width + "px" }) } else go = false; } //3. popup if (go) { config.title = clone(config.text); config.operationtype = clone(this.operationtype); if (config.url && config.url.indexOf("http:") == -1) { config.url = "rootfee/" + config.url; } if (config.totab) { if (config.url) { if (config.text.length > 4) { config.text = config.text.substr(0, 4) + "..."; } } var callback_ = config.callback; var closecallback_ = config.closecallback; var parames = { totab: true,//config.totab, url: config.url, title: config.title,//config.title = clone(config.text); sceneCode: config.sceneCode, data: config.data, delta: config.delta, disabled: config.disabled, disabledone: config.disabledone, operationtype: "edit", parentOption: window.top.tab.selected.option, closecallback: function() { if (closecallback_) { closecallback_(); } }, callback: function(obj, callback) {//var callback_ = config.callback; if (callback_) { callback_(obj); } if (callback) { callback(); } } }; Root.popupParames = parames; window.top.tab.open(config); } else { this.doPopup(config); } } }, h_procedure: function(field_, original_val, new_val, confirm_field, confirm_type, success_val, businessType) { let me = this; let row = this.selectedrow; if (!row.id) { Root.message({ type: 'warning', message: '请先选择一条数据' }) return; } if (this.selectedrow[field_] && this.selectedrow[field_] != original_val) { Root.message({ type: 'warning', message: this.selectedrow[field_] }) return; } Root.confirm('确定' + confirm_type + '-' + row[confirm_field] + '-吗?', confirm_type + '提示', { confirmButtonText: confirm_type, cancelButtonText: '取消', type: 'warning' }).then(() => { var key = "y32P59DT"; var param_act = { businessId: row.id, businessType: businessType, } Server.call("rootfee/" + "rootact/act/start/"+ key, param_act, function(result1) { console.log(result1); let paramObj = {}; for (var k in me.selectedrow) { paramObj[k] = me.selectedrow[k]; } paramObj[field_] = new_val; paramObj.flow_id = result1.data.activitiId; let param = paramObj; // param.isClientMode = false; param.dataname = me.dataname; Server.call("rootfee/" + "root/data/updateEntity/"+ me.dataname, param, function(result) { console.log(result); me.onQuery(); }); Root.message({ type: 'success', message: success_val }); }); }).catch(() => { Root.message({ type: 'info', message: '已取消' }); }); }, doPopup(popupObj) { var me = this; var callback_ = popupObj.callback; var closecallback_ = popupObj.closecallback; var width_ = popupObj.width ? popupObj.width : "900px"; var height_ = popupObj.height ? popupObj.height : "900vh"; var show_close_ = popupObj.show_close ? popupObj.show_close : false; var parames = { width: width_, // width: "900px", height: height_, text: popupObj.text, title: popupObj.title, url: popupObj.url, sceneCode: popupObj.sceneCode, data: popupObj.data, delta: popupObj.delta, disabled: popupObj.disabled, disabledone: popupObj.disabledone, filter: popupObj.filter || "", show_close: show_close_, closecallback: function() { if (closecallback_) { closecallback_(); } }, callback: function(obj, callback) { if (callback_) { callback_(obj); } if (callback) { callback(); } } }; Root.popupParames = parames; Root.showPopup(parames); }, saveRowTable_popup: function(obj) { var me = this; var formData_ = obj.row; var operationtype_ = this.operationtype; if (operationtype_ == "edit") {//修改 var paramObj = {}; for (var k in formData_) { paramObj[k] = formData_[k]; } var param = paramObj; // param.isClientMode = false; Server.call("rootfee/" + "root/data/updateEntity/" + this.dataname, param, function(result) { console.log(result); me.onQuery(); }); } else if (operationtype_ == "approval") {//审批 var paramObj = {}; for (var k in formData_) { paramObj[k] = formData_[k]; } var param = paramObj; // param.isClientMode = false; Server.call("rootfee/" + "root/data/updateEntity/" + this.dataname, param, function(result) { console.log(result); me.onQuery(); }); //for (var k in formData_) { // this.selectedrow[k] = formData_[k]; //} } else {//新增 var param = formData_; // param.isClientMode = false; Server.call("rootfee/" + "root/data/insertEntity/" + this.dataname, param, function(result) { console.log(result); me.onQuery(); }); } }, } } // config = util.combineObj(config, default_); Object.subClass.call(this); // /* var demand = { dataname: config.data.dataname, dataRequest: config.data.dataRequest, tabaleFieldsName: config.data.tabaleFieldsName, filterFieldsName: config.data.filterFieldsName } var meta = getMeta(demand); config.methods.onServerInitData.call(config, meta); config.vue = new Vue(config); */ /* //从data.js中获取字段配置(已弃用) var demand = { dataname: config.data.dataname, tabaleFieldsName: config.data.tabaleFieldsName, filterFieldsName: config.data.filterFieldsName, formFieldsName: config.data.formFieldsName, } var result = {}; getMeta(demand, result, function(meta) { config.methods.onServerInitData.call(config, meta); config.vue = new Vue(config); return config; }); */ /* //从后端获取字段配置根据dataname var me = this; Server.call("rootfee/" + "root/data/getMeta/" + config.dataname, config.dataRequest, function(result) { if (result.success) { } config.onServerData.call(me, result.data); config.vue = new Vue(config); }) */ config.vue = new Vue(config); return config; }, }); TreeVue = Object.subClass({ init: function(config) { // 国际化 var locale_val_ = h_language; var i18n = null; if (typeof VueI18n === "function" ) { i18n = new VueI18n({ locale: locale_val_, // set locale messages: { zh: zh, // 中文语言包 en: en // 英文语言包 } }) } var default_ = { el: null, i18n: i18n, data: { //参数对象 popupParames: null, initTreeData: [], treeData: [], treeTxtFormatter: "{name}", isTreeReadonly: false, selectednode: null,// {}, isRefresh: true, isPagination: false, pagesize: 10, pagenum: 1, total: 0, selectCard: {}, tabObjList: [], tabRangeList: [], activeCollapseName: "1", selectedrow: null,// {}, orderby:"", filterList:[ //注释:type: equal(等于)/in(在多个数据中)/like(模糊)/minval(最小值)/maxval(最大值)/mininclude(最小且包含该值)/maxinclude(最大且包含该值) //{field: "", val: "", type: ""} ], treeHeight: null, filterTxt: "", filterObjBydefault: {}, paramObjBydefault: {}, //表单 formAttr: { istitle: false, title: "表单名称", columnnumber: 2, labelwidth: "100px", labelposition: "left",//"left",// right//top size: "mini", border: "0px solid #c6c6c600" }, formloading: false, rowData: {}, formFields: [], editTableButton: { edit: { isshow: false, txt:"编辑" }, del: { isshow: true, txt:"删除" }, save: { isshow: false, txt:"保存" }, }, defaultexpandedkeys: [], currentnodekey: "", data_tablename_map: {}, }, watch: { }, methods: { delData(scope, confirm, confirm_callback, cancel_callback) { var me = this; var c_ = { txt: confirm.txt ? confirm.txt : "删除提醒", confirmButtonText: confirm.confirmButtonText ? confirm.confirmButtonText : "删除", cancelButtonText: confirm.cancelButtonText ? confirm.cancelButtonText : "取消", type: confirm.type ? confirm.type : "warning" } this.$confirm(c_.txt, '提示', { confirmButtonText: c_.confirmButtonText, cancelButtonText: c_.cancelButtonText, type: c_.type }).then(() => { if (confirm_callback) { confirm_callback(); } else { Root.message({ type: 'warning', message: '缺少确定后事件' }); } }).catch(() => { if (cancel_callback) { cancel_callback(); } else { Root.message({ type: 'info', message: '已取消删除' }); } }); }, fieldsToFieldsObj() { //字段转换 var formFieldsObj_ = {}; var tableFieldsObj_ = {}; this.formFieldsObj_ = {}; this.tableFieldsObj = {}; this.formFields.map(f=>{ if (f.inputtypefilter) { f.type = f.inputtypefilter; } formFieldsObj_[f.field] = f; }); this.formFieldsObj = clone(formFieldsObj_); if (this.tableFields && this.tableFields.length) { var tableFields_ = TreeToArray(this.tableFields, "field"); tableFields_.map(f=>{ tableFieldsObj_[f.field] = f; }); this.tableFieldsObj = clone(tableFieldsObj_); } }, getRowDataById(id, callback) { var me = this; var attachmeta_ = false; if (!this.formFields || (this.formFields && this.formFields.length == 0)) { attachmeta_ = true; } let param_ = { dataname: this.dataname, attachMeta: attachmeta_ } if (id) { param_.id = id; } else { param_.filter = "1<>1"; } if (!attachmeta_ && !id) { return } // if (!id) { // return // } // let param_ = { // dataname: this.dataname, // id: id, // //attachMeta: true // } me.formloading = true; Server.call("rootfee/" + "root/data/getEntity", param_, function(result) { console.log(result); me.formloading = false; if (result && result.data && result.data) { me.rowData = clone(result.data) } if (callback) { callback(result); } }); }, getRowData(filter, callback) { var me = this; var filter_ = "1=1"; if (filter) { filter_ += " and " + filter; } if (Object.keys(this.filterObjBydefault).length) { for(var k in this.filterObjBydefault) { let k_val = this.filterObjBydefault[k]; if (k_val.indexOf(',') != -1) {//包含英文","用in filter_ += " and " + k + " in ('" + k_val +"')"; } else { filter_ += " and " + k + " ='" + k_val +"'"; } } } if (this.filterTxt) { filter_ += " and " + this.filterTxt; } if (filter_ == "1=1") { filter_ = "1<>1" } let param_ = { dataname: this.dataname, filter: filter_, // attachMeta: true } if (Object.keys(this.paramObjBydefault).length) { for(var k in this.paramObjBydefault) { let k_val = this.paramObjBydefault[k]; param_[k] = k_val; } } me.formloading = true; Server.call("rootfee/" + "root/data/getEntity", param_, function(result) { console.log(result); me.formloading = false; if (result && result.data && result.data) { me.rowData = clone(result.data) } if (callback) { callback(result); } }); }, getFilterData: function(filter, filterObj, filterFieldsObj) { var filter_ = filter ? filter : "1=1"; for(var k in filterObj) { let k_val = filterObj[k]; if (k_val && typeof(k_val) == "string") { //去除两端的空格 filterObj[k] = k_val = k_val.replace(/(^\s*)|(\s*$)/g, ""); //去除两端的Tab filterObj[k] = k_val = k_val.replace(/(^\t*)|(\t*$)/g, ""); } let fieldObj_ = filterFieldsObj[k]; if (!fieldObj_) { continue } let type_ = fieldObj_.type; let valfield_ = fieldObj_.valfield; if (type_ == "popup" && valfield_) { k_val = filterObj[valfield_]; if (!filterObj[valfield_] && filterObj[k]) { k_val = filterObj[k]; } } let field_ = fieldObj_.field; let filteroperator_ = "equal"; let isnull = false; let ornullval_ = fieldObj_.ornullval; if (ornullval_) { var nullvals_ = ornullval_.split(";"); nullvals_.map(v=>{ if (v == k_val) { isnull = true; } }); } if (fieldObj_.filterfield) { field_ = fieldObj_.filterfield } if (fieldObj_.filteroperator) { filteroperator_ = fieldObj_.filteroperator } if (k_val && k_val != "" && k_val.length) { filter_ = getFilterByFilterType(filter_, type_, field_, k_val, filteroperator_, isnull); } } if (Object.keys(this.filterObjBydefault).length) { for(var k in this.filterObjBydefault) { let k_val = this.filterObjBydefault[k]; filter_ += " and " + k + " = '" + k_val +"'"; } } if (this.filterTxt) { filter_ += " and " + this.filterTxt; } return encodeURI(filter_); }, //仅天境项目框架用 tabCardClick(card) { if (card){ var parames = clone(card); parames.totab = true; parames.title = parames.name; /* var parames = { url: card.url, title: card.name, sceneCode: card.sceneCode, data: card.data, delta: card.delta }; */ Root.popupParames = parames; }else { Root.popupParames = {}; } //需要有选中数据才能打开 if (card.openfilter && card.openfilter == 'selectedrow') { if (!this.selectedrow) { this.$message({ message: '请先选中一条数据', type: 'warning' }); return } } if (card.opentype == "showthis") {//本页面内打开 this.page_url = card.url; if (this.selectCard.url) {//若已存在选中card,则replacepage window.top.mainvue.methods.setPageNavigation("showthis_replace", card, window.top.mainvue.data) } else { window.top.mainvue.methods.setPageNavigation("showthis_add", card, window.top.mainvue.data) } this.selectCard = card; } else if (card.opentype == "replacepage") {//替换本页面 window.top.mainvue.methods.setPageNavigation("replace", card, window.top.mainvue.data) } else if (card.opentype == "add") {//新子目录打开 if (this.selectCard.url) {//若已存在选中card,则replacepage window.top.mainvue.methods.setPageNavigation("replace", card, window.top.mainvue.data) } else { window.top.mainvue.methods.setPageNavigation("add", card, window.top.mainvue.data) } } else if (card.opentype == "openpage") {//新浏览器打开 //window.open(); } }, //滚动设置Tab handleScroll(callback) { var me = this; let scrollbarEl = this.$refs.myScrollbar.wrap; scrollbarEl.onscroll=()=>{ if (callback) { callback(scrollbarEl.scrollTop); } for (var ti = me.tabRangeList.length - 1; ti > -1; ti--) { var top_ = me.tabRangeList[ti]; if (scrollbarEl.scrollTop > top_) { me.activeName = me.tabObjList[ti]; return } } return } }, //锚点预设 initScrollbarTab() { var me = this; let scrollbarEl = this.$refs.myScrollbar.wrap; const scrollbar_bottom = scrollbarEl.scrollHeight - scrollbarEl.clientHeight; var tabOffsetTopObj = {}; var tabOffsetTopObjByTab = {}; var tabObjList = []; var tabRangeList = []; this.tabList.map(function(tabobj) { var ref_ = me.$refs[tabobj.code]; var ref_array = Array.isArray(ref_); if (ref_array) { ref_ = ref_[0]; } var offsetTop = ref_.offsetTop; if (ref_.offsetTop > scrollbar_bottom) { offsetTop = scrollbar_bottom; } if (offsetTop > scrollbarEl.clientHeight) { offsetTop = offsetTop - (scrollbarEl.clientHeight/2) } if (!tabOffsetTopObj[offsetTop]) { tabOffsetTopObj[offsetTop] = tabobj.code; tabOffsetTopObjByTab[tabobj.code] = offsetTop; tabRangeList.push(offsetTop); tabObjList.push(tabobj.code); } }) this.tabRangeList = tabRangeList; this.tabObjList = tabObjList; }, getTableHeight(type, ref_container, callback) { var tableHeight = null; var container_height = ref_container.offsetHeight; if (type == "htype0") {// tableHeight = container_height; } else if (type == "htype1") {// let pagination_height = 0; if (ref_container.getElementsByClassName('z_table_pagination').length) { pagination_height = ref_container.getElementsByClassName('z_table_pagination')[0].offsetHeight; } tableHeight = container_height - pagination_height; } else if (type == "htype2") {// let title_height = document.getElementsByClassName('v_header').length ? document.getElementsByClassName('v_header')[0].offsetHeight : 0; tableHeight = container_height - title_height; } callback(tableHeight - 10); }, //根据权限设置功能模块 setModularByToken(formButton, tableFields, callback) { var tabs = Root.pageobj.tabs; var buttons = Root.pageobj.buttons; var formButton_ = clone(formButton); var tableFields_ = clone(tableFields); var tablebuttons_list = []; var tablebuttons_obj = {}; if (buttons && buttons.length > 0) { buttons.map(function(obj) { if (obj.name == "insert" && obj.active) { formButton_.add = true; } else if (obj.name == "query" && obj.active) { tablebuttons_obj.query = true; } else if (obj.name == "delete" && obj.active) { tablebuttons_obj.delete = true; formButton_.delete = true; } else if (obj.name == "edit" && obj.active) { tablebuttons_obj.update = true; } }) for (var button_name in tablebuttons_obj) { if (button_name == "query") { tablebuttons_list.push({name: "查看", code: "query"}); } else if (button_name == "delete") { tablebuttons_list.push({name: "删除", code: "delete"}); } else if (button_name == "update") { tablebuttons_list.push({name: "修改", code: "update"}); } } } tableFields_.map(function(fieldobj) { if (fieldobj.issystem && tablebuttons_list.length > 0) { fieldobj.isshow = "T"; fieldobj.buttons = tablebuttons_list; } }) callback(formButton_, tableFields_) }, onQuery(callback, ispage) { this.pagenum = 1; this.total = 0; this.selectedrow = {}; this.doQuery(callback, ispage); }, doQuery(callback, ispage) { let me = this; this.selectedrow = {}; let filter_ = "1=1"; this.filterList = []; for(var k in this.filterObj) { let k_val = this.filterObj[k]; if (k_val && typeof(k_val) == "string") { //去除两端的空格 this.filterObj[k] = k_val = k_val.replace(/(^\s*)|(\s*$)/g, ""); //去除两端的Tab this.filterObj[k] = k_val = k_val.replace(/(^\t*)|(\t*$)/g, ""); } let fieldObj_ = this.filterFieldsObj[k]; let type_ = fieldObj_.type; let field_ = fieldObj_.field; let filteroperator_ = "equal"; if (fieldObj_.filterfield) { field_ = fieldObj_.filterfield } if (fieldObj_.filteroperator) { filteroperator_ = fieldObj_.filteroperator } //传条件数组由后端拼接筛选数据 /* let filterListObj_ = { field: field_, val: k_val, type: filteroperator_ } this.filterList.push(filterListObj_); */ //传条件数据有前端拼接 if (k_val && k_val != "" && k_val.length) { filter_ = getFilterByFilterType(filter_, type_, field_, k_val, filteroperator_, isnull); } } if (Object.keys(this.filterObjBydefault).length) { for(var k in this.filterObjBydefault) { let k_val = this.filterObjBydefault[k]; if(k_val == null || k_val == "null") { filter_ += " and " + k + " is null"; }else { filter_ += " and " + k + " = '" + k_val +"'"; } } } if (this.filterTxt) { filter_ += " and " + this.filterTxt; } let param_ = { dataname: this.dataname, filter: filter_,//this.filterList, orderby: this.orderby, //attachMeta: true } if (ispage) { param_.page = { pagepageno: this.pagenum, pageSize: this.pagesize } } me.initTreeData = []; Server.call("rootfee/" + "root/data/getEntitySet", param_, function(result) { console.log(result); if (result && result.meta) { me.data_tablename_map = result.meta } if (result && result.data && result.data.entityset) { if (result.data.page && result.data.page.recordcount && me.pagenum > 1 && result.data.page.recordcount < (me.pagenum - 1) * me.pagesize) { me.pagenum = 1; me.doQuery(callback); return; } var data_ = result.data.entityset; me.total = result.data.page ? result.data.page.recordcount : 0; me.initTreeData = data_; me.treeData = me.initTreeData; } else { me.total = 0; } me.queryAfter(); if (callback) { callback(result, function() { me.tableDataAfter(); }); } }); }, queryAfter: function() { if (this.onQueryAfter) { this.onQueryAfter.call(this, arguments); return } }, tableDataAfter: function() { let me = this; if (this.onTableDataAfter) { this.onTableDataAfter.call(this, arguments); return } this.$nextTick(function(){ this.isRefresh = true; this.$nextTick(function(){ var tableHeight_ = 0; let clientHeight = document.documentElement.clientHeight; let title_height = document.getElementsByClassName('topbar').length ? document.getElementsByClassName('topbar')[0].offsetHeight + document.getElementsByClassName('topbar')[0].offsetTop : 0; let tabs_height = document.getElementsByClassName('el-tabs__header').length ? document.getElementsByClassName('el-tabs__header')[0].offsetHeight + 2 : 0; tableHeight_ = clientHeight - tabs_height - title_height - 16; this.treeHeight = tableHeight_; me.isRefresh = false; me.$nextTick(function(){ me.isRefresh = true; }) }) }) }, addData: function(data, node) { if (this.onAddData) { this.onAddData(data, node); } }, editData: function(data, node) { if (this.onEditData) { this.onEditData(data, node); } }, delData: function(data, node) { let me = this; let name_ = "该数据"; if (this.onDelData) { this.onDelData(data, node); return } if (!this.dataname) { this.$message({ type: 'warning', message: '该事件需指定数据对象' }); return } if (!data.id) { this.$message({ type: 'warning', message: '该事件需存在数据ID' }); return } this.$confirm('确定删除' + name_ + '吗?', '删除提示', { confirmButtonText: '删除', cancelButtonText: '取消', type: 'warning' }).then(() => { let param = { id: data.id, dataname: me.dataname, } Server.call("rootfee/" + "root/data/deleteEntity", param, function(result) { console.log(result); me.$message({ message: '删除成功', type: 'success' }); me.doQuery(); }); }).catch(() => { me.$message({ type: 'info', message: '已取消删除' }); }); }, //公共的弹窗——上传附件 onPopupByUploadFile() { var me = this; var config = { totab: true, width: "900px", icon: "icon-product", text: "附件上传", id: "popupByUploadFile", url: "../tool/popup_uploadFile.html", data: {}, delta: {}, callback: function(obj, callback) { me.uploadFileAfter(obj); if (callback) { callback(); } } }; this.doPopupByPublic(config); }, } }; config = util.combineObj(config, default_);//config为主,default_是默认 Object.subClass.call(this); config.vue = new InitRootVue(config); return config; } }); //存在Tab的表格主页 TabTableVue = Object.subClass({ init: function(config) { // 国际化 var locale_val_ = h_language; var i18n = null; if (typeof VueI18n === "function" ) { i18n = new VueI18n({ locale: locale_val_, // set locale messages: { zh: zh, // 中文语言包 en: en // 英文语言包 } }) } var default_ = { el: null, i18n: i18n, data: { title: "", //单Tab属性设置 tab_attr: { name: "Tab一", code: "tab1", dataname: "", //接口 dataurl: "root/data/getEntitySet", //查询 filterFields: [], filterFieldsObj: {}, filterObj: {}, isdraggableorder_filter: false, filterfieldClick: {}, //绑定的页面 pageurl: "", orderby: "", filterObjBydefault: {}, filterTxt: "", paramObjBydefault: {}, //表格 tableFields: [], tableFieldsObj: {}, tableData: [], isEditTableData: false, isdraggableorder_table: false, pagesize: 10, pagenum: 1, total: 0, tableHeight: 360, isPagination: false, isHighlightRow: true, isShowIndex: false, iseditfield: false, selectedrow: {}, tablefieldClick: {}, //表单 formAttr: { istitle: false, title: "表单名称", columnnumber: 2, labelwidth: "100px", labelposition: "left",//"left",// right//top size: "mini", border: "0px solid #c6c6c600" }, formFields: [], formData: {}, formfieldClick: {}, //按键 buttons: {} }, paramObjBydefault: {}, //Tab项设置 tabs: [], tabsobj: {}, tabspageobj: {}, //运行Tab项 activeTabName: "", selectTabObj: {}, //pageAttr.heightType:table/page都是为了设置表格的高度。 //table是以表格本身的条数计算高度。 //page是以页面给表格留下的高度为表格高度 pageAttr: { heightType: "page" }, pageCode: "demo_tab1", dataname: "", //查询功能 filterList:[ //注释:type: equal(等于)/in(在多个数据中)/like(模糊)/minval(最小值)/maxval(最大值)/mininclude(最小且包含该值)/maxinclude(最大且包含该值) //{field: "", val: "", type: ""} ], filterAttr: { columnnumber: 4, labelwidth: "100px", labelposition: "right", size: "medium", border: "3px solid #c6c6c600" }, //列表功能 isRefresh: true, tableAttr: {}, //窗口高度 clientHeight: 0, tableloading: false, operationtype: "", //预加载 dataRequest: [], dataRequestObj: {}, data_tablename_map: {}, }, watch: { }, methods: { loadRequestData(dataRequest, result, callback) { this.doLoadRequestData(dataRequest, result, callback); }, doLoadRequestData(dataRequest, result, callback) { var me = this; if (dataRequest && dataRequest.length) { var item = dataRequest[0]; if (typeof(item) == "string") { result[item] = dataRoot.database[item]; dataRequest.remove(item); me.doLoadRequestData(dataRequest, result, callback); } else { if (item.isClientMode) { result[item.name] = dataRoot.database[item.name]; dataRequest.remove(item); me.doLoadRequestData(dataRequest, result, callback); }else if (item.url) { var params = item.paramsobj || {}; // params.isClientMode = false; Server.call("rootfee/" + item.url, params, function(result_) { console.log(result_); //是字典 if (result_ && result_.dictionary && result_.dictionary.items.length) { result[item.name] = result_.dictionary.items; //不是不是选项 if (!item.isnotoption) { //是选项 result_.dictionary.items.map(e=>{ if (!result.map) { result.map = {}; } if (!result.map[item.name]) { result.map[item.name] = {}; } e.code = e[item.code]; e.value = e[item.label]; result.map[item.name][e[item.code]] = e[item.label]; }) } } else { result[item.name] = result_; } dataRequest.remove(item); me.doLoadRequestData(dataRequest, result, callback); }); } else { var dataname_ = item.name; if (item.dataname) { dataname_ = item.dataname; } var params = { dataname: dataname_, } if(item.filter) { params.filter = item.filter } if(item.orderby) { params.orderby = item.orderby } var event_ = "root/data/getEntitySet"; if (item.url) { event_ = item.url; } Server.call("rootfee/" + event_, params, function(result_) { console.log(result_); if (result_ && result_.data.entityset && result_.data.entityset.length) { result[item.name] = result_.data.entityset; //不是不是选项 if (!item.isnotoption) { //是选项 result_.data.entityset.map(e=>{ if (!result.map) { result.map = {}; } if (!result.map[item.name]) { result.map[item.name] = {}; } e.code = e[item.code]; e.value = e[item.label]; result.map[item.name][e[item.code]] = e[item.label]; }) } } else { result[item.name] = []; } dataRequest.remove(item); me.doLoadRequestData(dataRequest, result, callback); }); } } } else { callback(result); } }, fieldsToFieldsObj() { //查询的字段转换 var filterFieldsObj_ = {}; var tableFieldsObj_ = {}; this.selectTabObj.filterFieldsObj = {}; this.selectTabObj.tableFieldsObj = {}; this.selectTabObj.filterFields.map(f=>{ if (f.inputtype == "date") { f.type = "daterange"; f.filteroperator = "inScopeInclude"; } if (f.inputtypefilter) { f.type = f.inputtypefilter; } filterFieldsObj_[f.field] = f; }); this.selectTabObj.filterFieldsObj = clone(filterFieldsObj_); if (this.selectTabObj.tableFields && this.selectTabObj.tableFields.length) { var tableFields_ = TreeToArray(this.selectTabObj.tableFields, "field"); tableFields_.map(f=>{ tableFieldsObj_[f.field] = f; }); this.selectTabObj.tableFieldsObj = clone(tableFieldsObj_); } }, //功能 onDownload: function() { dealExportByPath("../../../template/area_tree.xlsx","测试数据"); }, onUpload: function() { Root.message('导入'); }, refreshData: function() { this.filterObj = {}; if (this.onRefreshData) { this.onRefreshData.call(this, arguments); return } this.onQuery(); }, /////////////////// /////////////////// orderFilterFields(obj) { if (this.onOrderFilterFields) { this.onOrderFilterFields.call(this, obj); return; } else { this.selectTabObj.filterFields = obj.data_list } }, orderTableFields(obj) { if (this.onOrderTableFields) { this.onOrderTableFields.call(this, obj); return; } else { this.selectTabObj.tableFields = obj.data_list this.isRefresh = false; this.$nextTick(function(){ this.isRefresh = true; }) } }, getResoures() { let me = this; this.getPageObj(); }, getPageObj() { var me = this; //页面信息 var params = { dataname: "page", filter: "code='" + this.pageCode + "'", //userId: this.userId } Server.call("rootfee/" + "root/data/getEntitySet", params, function(result) { console.log(result); if (result && result.data.entityset) { me.pageObj = result.data.entityset[0]; me.title = me.pageObj.name; if (window.top.userinfo.user.language && window.top.userinfo.user.language == "en") { me.title = me.pageObj.name_en; } //获取TabsByPage //me.getTabsByPage(me.pageObj.id); } }); }, initTabsPage(callback) { var me = this; this.tabsobj = {}; this.tabspageobj = {}; this.tabs.map(t=>{ this.tabsobj[t.code] = t; var tab_attr_ = clone(this.tab_attr); for (var attr in t) { tab_attr_[attr] = t[attr]; } this.tabspageobj[t.code] = clone(tab_attr_); }) if (!this.activeTabName) { this.activeTabName = this.tabs[0].code; } this.selectTabObj = this.tabspageobj[this.activeTabName]; if (callback) { callback(); } }, //查询 onQuery() { //1.获取当前Tab this.selectTabObj; this.selectTabObj.pagenum = 1; this.doQueryByTab(); }, onInitFilter() { //1.获取当前Tab this.selectTabObj; //清空 this.selectTabObj.filterObj = {}; this.selectTabObj.pagenum = 1; this.doQueryByTab(); }, onEditFilter() { //选择查询字段 }, handleClick(tab, event) { this.activeTabName = tab.name; this.selectTabObj = this.tabspageobj[this.activeTabName]; if (!this.selectTabObj.pageurl) { this.onhandleClick(); } else { this.tableDataAfter(); } }, getData(page) { this.selectTabObj.pagesize = page.pagesize; this.selectTabObj.pagenum = page.pagenum; this.doQueryByTab(); }, doQueryByTab(callback, errorcallback) { let me = this; if (!this.selectTabObj) { this.selectTabObj = {} } var thistab = this.selectTabObj; let filter_ = "1=1"; this.filterList = []; this.selectedrow = {}; thistab.selectedrow = {}; for(var k in thistab.filterObj) { let k_val = thistab.filterObj[k]; if (k_val && typeof(k_val) == "string") { //去除两端的空格 thistab.filterObj[k] = k_val = k_val.replace(/(^\s*)|(\s*$)/g, ""); //去除两端的Tab thistab.filterObj[k] = k_val = k_val.replace(/(^\t*)|(\t*$)/g, ""); } let fieldObj_ = thistab.filterFieldsObj[k]; if (!fieldObj_) { continue } if (!fieldObj_) { fieldObj_ = { field: k } } let type_ = fieldObj_.type; let valfield_ = fieldObj_.valfield; if (type_ == "popup" && valfield_) { k_val = thistab.filterObj[valfield_]; } let field_ = fieldObj_.field; let filteroperator_ = "equal"; let isnull = false; let ornullval_ = fieldObj_.ornullval; if (ornullval_) { var nullvals_ = ornullval_.split(";"); nullvals_.map(v=>{ if (v == k_val) { isnull = true; } }); } if (fieldObj_.filterfield) { field_ = fieldObj_.filterfield } if (fieldObj_.filteroperator) { filteroperator_ = fieldObj_.filteroperator } //传条件数组由后端拼接筛选数据 /* let filterListObj_ = { field: field_, val: k_val, type: filteroperator_ } this.filterList.push(filterListObj_); */ //传条件数据有前端拼接 if (k_val && k_val != "" && k_val.length) { filter_ = getFilterByFilterType(filter_, type_, field_, k_val, filteroperator_, isnull); } } if (thistab.filterObjBydefault && Object.keys(thistab.filterObjBydefault).length) { for(var k in thistab.filterObjBydefault) { let k_val = thistab.filterObjBydefault[k]; if (k_val.indexOf(',') != -1) {//包含英文","用in filter_ += " and " + k + " in ('" + k_val +"')"; } else { filter_ += " and " + k + " ='" + k_val +"'"; } } } if (thistab.filterTxt) { filter_ += " and " + thistab.filterTxt; } if (me.filterTxt) { filter_ += " and " + me.filterTxt; } var attachmeta_ = false; if (!thistab.tableFields || (thistab.tableFields && thistab.tableFields.length == 0)) { attachmeta_ = true; } let param_ = { filterList: this.filterList, filter: filter_, page: { pageno: thistab.pagenum, pagesize: thistab.pagesize }, attachMeta: attachmeta_ } if (thistab.orderby) { param_.orderby = thistab.orderby; } if (thistab.dataname) { param_.dataname = thistab.dataname; } if (thistab.paramObjBydefault && Object.keys(thistab.paramObjBydefault).length) { for(var k in thistab.paramObjBydefault) { let k_val = thistab.paramObjBydefault[k]; param_[k] = k_val; } } if (Object.keys(this.paramObjBydefault).length) { for(var k in this.paramObjBydefault) { let k_val = this.paramObjBydefault[k]; param_[k] = k_val; } } thistab.tableData = []; //me.total = 0; me.tableloading = true; Server.call("rootfee/" + thistab.dataurl, param_, function(result) { console.log(result); me.tableloading = false; if (result && result.meta) { me.data_tablename_map = result.meta } if (result && result.data && result.data.entityset) { if (result.data.page && result.data.page.recordcount && thistab.pagenum > 1 && result.data.page.recordcount < (thistab.pagenum - 1) * thistab.pagesize) { thistab.pagenum = 1; me.doQueryByTab(callback); return; } var data_ = result.data.entityset; thistab.tableData = data_; thistab.total = result.data.page ? result.data.page.recordcount : 0; } else { thistab.total = 0; } if (callback) { callback(result, function() { me.tableDataAfter(); }); } }, function(errorresult){ me.tableloading = false; if (errorcallback) { errorcallback(errorresult, function() { me.tableDataAfter(); }); } }); }, getFilterData: function(filter) { let me = this; if (!this.selectTabObj) { this.selectTabObj = {} } var thistab = this.selectTabObj; this.filterList = []; this.selectedrow = {}; thistab.selectedrow = {}; var filter_ = filter ? filter : "1=1"; for(var k in thistab.filterObj) { let k_val = thistab.filterObj[k]; if (k_val && typeof(k_val) == "string") { //去除两端的空格 thistab.filterObj[k] = k_val = k_val.replace(/(^\s*)|(\s*$)/g, ""); //去除两端的Tab thistab.filterObj[k] = k_val = k_val.replace(/(^\t*)|(\t*$)/g, ""); } let fieldObj_ = thistab.filterFieldsObj[k]; if (!fieldObj_) { continue } if (!fieldObj_) { fieldObj_ = { field: k } } let type_ = fieldObj_.type; let valfield_ = fieldObj_.valfield; if (type_ == "popup" && valfield_) { k_val = thistab.filterObj[valfield_]; } let field_ = fieldObj_.field; let filteroperator_ = "equal"; let isnull = false; let ornullval_ = fieldObj_.ornullval; if (ornullval_) { var nullvals_ = ornullval_.split(";"); nullvals_.map(v=>{ if (v == k_val) { isnull = true; } }); } if (fieldObj_.filterfield) { field_ = fieldObj_.filterfield } if (fieldObj_.filteroperator) { filteroperator_ = fieldObj_.filteroperator } //传条件数组由后端拼接筛选数据 /* let filterListObj_ = { field: field_, val: k_val, type: filteroperator_ } this.filterList.push(filterListObj_); */ //传条件数据有前端拼接 if (k_val && k_val != "" && k_val.length) { filter_ = getFilterByFilterType(filter_, type_, field_, k_val, filteroperator_, isnull); } } if (thistab.filterObjBydefault && Object.keys(thistab.filterObjBydefault).length) { for(var k in thistab.filterObjBydefault) { let k_val = thistab.filterObjBydefault[k]; if (k_val.indexOf(',') != -1) {//包含英文","用in filter_ += " and " + k + " in ('" + k_val +"')"; } else { filter_ += " and " + k + " ='" + k_val +"'"; } } } if (thistab.filterTxt) { filter_ += " and " + thistab.filterTxt; } if (me.filterTxt) { filter_ += " and " + me.filterTxt; } return encodeURI(filter_); }, tableDataAfter() { let me = this; var thistab = this.selectTabObj; if (this.onTableDataAfter) { this.onTableDataAfter.call(this, arguments); return } if (thistab.tableFields.length > 0){ // if (document.getElementsByClassName('el-table__header').length) { // document.getElementsByClassName('el-table__header')[0].style.width= "max-content"; // } // this.selectTabObj.tableHeight = 0; this.$nextTick(function(){ this.isRefresh = true; this.$nextTick(function(){ var tableHeight_ = 0; let clientHeight = document.documentElement.clientHeight; let height_topmenu = window.top.document.getElementsByClassName('toolbar-C').length ? window.top.document.getElementsByClassName('toolbar-C')[0].offsetHeight : 0; let height_tabmenu = window.top.document.getElementsByClassName('tab-A-headerOuter').length ? window.top.document.getElementsByClassName('tab-A-headerOuter')[0].offsetHeight : 0; let title_height = document.getElementsByClassName('topbar').length ? document.getElementsByClassName('topbar')[0].offsetHeight + document.getElementsByClassName('topbar')[0].offsetTop : 0; let tabs_height = document.getElementsByClassName('el-tabs__header').length ? document.getElementsByClassName('el-tabs__header')[0].offsetHeight + 2 : 0; let filter_height = document.getElementsByClassName('h_form_filter').length ? document.getElementsByClassName('h_form_filter')[0].offsetHeight : 0; let footer_height = document.getElementsByClassName('el-dialog__footer').length ? document.getElementsByClassName('el-dialog__footer')[0].offsetHeight : 0; let h_table_select = document.getElementsByClassName('h_table_select').length ? document.getElementsByClassName('h_table_select')[0].offsetHeight : 0; let h_table_title = document.getElementsByClassName('h_table_title').length ? document.getElementsByClassName('h_table_title')[0].offsetHeight : 0; let header_height = document.getElementsByClassName('el-dialog__header').length ? document.getElementsByClassName('el-dialog__header')[0].offsetHeight : 0; let header_height_topbar = document.getElementsByClassName('topbar').length ? document.getElementsByClassName('topbar')[0].offsetHeight : 0; let table_header_height = document.getElementsByClassName('el-table__header-wrapper').length ? document.getElementsByClassName('el-table__header-wrapper')[0].offsetHeight : 0; let pagination_height = 0; if (document.getElementsByClassName('z_table_pagination').length) { pagination_height = document.getElementsByClassName('z_table_pagination')[0].offsetHeight; } // tableHeight_ = clientHeight - height_topmenu - title_height - tabs_height - pagination_height - footer_height - h_table_select - h_table_title - header_height; tableHeight_ = clientHeight - filter_height - tabs_height - pagination_height - footer_height - h_table_select - h_table_title - header_height - header_height_topbar - table_header_height - 10; // if (tabs_height) { // tableHeight_ = tableHeight_ - title_height // } me.selectTabObj.tableHeight = tableHeight_ + table_header_height; if (me.$refs.table1) { me.$refs.table1.$el.getElementsByClassName('el-table__body-wrapper')[0].style['height'] = tableHeight_ + "px"; me.$refs.table1.$el.getElementsByClassName('el-table__body-wrapper')[0].style['height'] = tableHeight_ + "px"; } me.isRefresh = false; me.$nextTick(function(){ me.isRefresh = true; // let table_header_height2 = document.getElementsByClassName('el-table__header-wrapper').length ? document.getElementsByClassName('el-table__header-wrapper')[0].offsetHeight : 0; // me.selectTabObj.tableHeight; // let tableHeight2_ = me.selectTabObj.tableHeight - table_header_height2; // me.$refs.table1.$el.getElementsByClassName('el-table__body-wrapper')[0].style['height'] = tableHeight2_ + "px"; }) }) }) } else { this.$nextTick(function(){ this.isRefresh = true; this.$nextTick(function(){ var tableHeight_ = 0; let clientHeight = document.documentElement.clientHeight; let height_topmenu = window.top.document.getElementsByClassName('toolbar-C').length ? window.top.document.getElementsByClassName('toolbar-C')[0].offsetHeight : 0; let height_tabmenu = window.top.document.getElementsByClassName('tab-A-headerOuter').length ? window.top.document.getElementsByClassName('tab-A-headerOuter')[0].offsetHeight : 0; let title_height = document.getElementsByClassName('topbar').length ? document.getElementsByClassName('topbar')[0].offsetHeight + document.getElementsByClassName('topbar')[0].offsetTop : 0; let tabs_height = document.getElementsByClassName('el-tabs__header').length ? document.getElementsByClassName('el-tabs__header')[0].offsetHeight + 2 : 0; let filter_height = document.getElementsByClassName('h_form_filter').length ? document.getElementsByClassName('h_form_filter')[0].offsetHeight : 0; let footer_height = document.getElementsByClassName('el-dialog__footer').length ? document.getElementsByClassName('el-dialog__footer')[0].offsetHeight : 0; let h_table_select = document.getElementsByClassName('h_table_select').length ? document.getElementsByClassName('h_table_select')[0].offsetHeight : 0; let h_table_title = document.getElementsByClassName('h_table_title').length ? document.getElementsByClassName('h_table_title')[0].offsetHeight : 0; let header_height = document.getElementsByClassName('el-dialog__header').length ? document.getElementsByClassName('el-dialog__header')[0].offsetHeight : 0; let table_header_height = document.getElementsByClassName('el-table__header-wrapper').length ? document.getElementsByClassName('el-table__header-wrapper')[0].offsetHeight : 0; let pagination_height = 0; tableHeight_ = clientHeight - filter_height - tabs_height - pagination_height - footer_height - h_table_select - h_table_title - header_height - table_header_height - 40 - 10; me.selectTabObj.tableHeight = tableHeight_ + table_header_height; me.isRefresh = false; me.$nextTick(function(){ me.isRefresh = true; }) }) }) } }, addData() { //1. this.operationtype = "add"; //this.selectedrow = {}; //2. get config and go var config = new Config(), go = true; if (this.onAddData) { go = this.onAddData.call(this, config); } //3. popup if (go) { config.title = clone(config.text); config.operationtype = clone(this.operationtype); if (config.url && config.url.indexOf("http:") == -1) { config.url = "rootfee/" + config.url; } if (config.totab) { if (config.url) { if (config.text.length > 4) { config.text = config.text.substr(0, 4) + "..."; } } var callback_ = config.callback; var closecallback_ = config.closecallback; var parames = { totab: true, url: config.url, title: config.title, sceneCode: config.sceneCode, data: config.data, delta: config.delta, disabled: config.disabled, disabledone: config.disabledone, operationtype: "add", parentOption: window.top.tab.selected.option, closecallback: function() { if (closecallback_) { closecallback_(); } }, callback: function(obj, callback) { if (callback_) { callback_(obj); } if (callback) { callback(); } } }; Root.popupParames = parames; window.top.tab.open(config); } else { this.doPopup(config); } } }, editData: function(scope) { //1. this.operationtype = "edit"; //this.selectedrow = scope.row; //2. get config and go var config = new Config(), go = true; if (this.onEditData) { go = this.onEditData.call(this, config, scope); } //3. popup if (go) { config.title = clone(config.text); config.operationtype = clone(this.operationtype); if (config.url && config.url.indexOf("http:") == -1) { config.url = "rootfee/" + config.url; } if (config.totab) { if (config.url) { if (config.text.length > 4) { config.text = config.text.substr(0, 4) + "..."; } } var callback_ = config.callback; var closecallback_ = config.closecallback; var parames = { totab: true,//config.totab, url: config.url, title: config.title,//config.title = clone(config.text); sceneCode: config.sceneCode, data: config.data, delta: config.delta, disabled: config.disabled, disabledone: config.disabledone, operationtype: "edit", parentOption: window.top.tab.selected.option, closecallback: function() { if (closecallback_) { closecallback_(); } }, callback: function(obj, callback) {//var callback_ = config.callback; if (callback_) { callback_(obj); } if (callback) { callback(); } } }; Root.popupParames = parames; window.top.tab.open(config); } else { this.doPopup(config); } } }, delData: function(scope) { let me = this; if (this.onDelData) { this.onDelData.call(this, scope); return } let row = scope.row; let index_ = scope.$index; let name_ = "该数据"; if (!this.selectTabObj.dataname) { Root.message({ type: 'warning', message: '该事件需指定数据对象' }); return } if (!row.id) { Root.message({ type: 'warning', message: '该事件需存在数据ID' }); return } Root.confirm('确定删除吗?', '删除提示', { confirmButtonText: '删除', cancelButtonText: '取消', type: 'warning' }).then(() => { let param = { id: row.id, dataname: this.selectTabObj.dataname, } Server.call("rootfee/" + "root/data/deleteEntity", param, function(result) { console.log(result); Root.message({ type: 'success', message: '删除成功!' }); me.doQueryByTab(); }); // Root.message({ // type: 'success', // message: '删除成功!' // }); // me.doQueryByTab(); }).catch(() => { Root.message({ type: 'info', message: '已取消删除' }); }); }, //作废 Cancel: function(status_,code_) { let me = this; var row = this.selectTabObj.selectedrow; if (!row || !row.id) { Root.message({ type: 'warning', message: '请先选择一条数据' }); return false; } else if (row[status_] != "refuse") { Root.message({ type: 'warning', message: '当前状态不可作废' }); return false; } Root.confirm('确定作废-' + row[code_] + '-吗?', '提示', { confirmButtonText: "作废", cancelButtonText: '取消', type: 'warning' }).then(() => { // let param = { // orderId:row.id, // eventType:"cancellation", // dataType:"sales", // } // Server.call("rootfee/" + "root/order/onEvent", param, function(result) { // console.log(result); // Root.message({ // type: 'success', // message: '作废成功' // }); // me.onQuery(); // }); Root.message({ type: 'success', message: '作废成功' }); me.doQueryByTab(); }).catch(() => { Root.message({ type: 'info', message: '已取消' }); }); }, orderbyChange: function(obj) { if (this.onOrderbyChange) { this.onOrderbyChange.call(this, obj); return; } else { var order_field = ""; var order_ = ""; var delorder = false; var orderbylist = []; var neworderbylist = []; if (this.orderby) { orderbylist = this.orderby.split(","); orderbylist.map(o=>{ o = o.replace(/(^\s*)|(\s*$)/g, ""); }); } if (obj.field.filterfield) { order_ = clone(obj.field.filterfield); order_field = clone(obj.field.filterfield); } else { order_ = clone(obj.field.field); order_field = clone(obj.field.field); } if (obj.order == "ascending") {//正序 } else if(obj.order == "descending") {//倒序 order_ += " desc"; } else { delorder = true; } var isyou_ = false; if (orderbylist.length) { orderbylist.map(o=>{ var ol_ = []; ol_ = o.split(" "); if (ol_[0] != order_field) { neworderbylist.push(o); } else { isyou_ = true; if (!delorder) { neworderbylist.unshift(order_); } } }); } else if (!delorder) { isyou_ = true; neworderbylist.unshift(order_); } if (!isyou_) { neworderbylist.unshift(order_); } var orderby_ = ""; neworderbylist.map(no=>{ if (!orderby_) { orderby_ = no; } else { orderby_ += "," + no; } }) this.orderby = orderby_; this.onQuery(); } }, rowClick: function(obj) { // if(this.selectTabObj.selectedrow.id && this.selectTabObj.selectedrow.id == obj.row.id) { // this.selectTabObj.selectedrow = {}; // } // else { this.selectTabObj.selectedrow = obj.row; if (this.onRowClick) { this.onRowClick.call(this, obj); return; } // } }, rowDblclick: function(obj) { this.selectTabObj.selectedrow = obj.row; if (this.onRowDblClick) { this.onRowDblClick.call(this, obj); return; } }, } } config = util.combineObj(config, default_);//config为主,default_是默认 Object.subClass.call(this); config.vue = new InitRootVue(config); return config; }, }); //存在分步的主页 StepsTableVue = Object.subClass({ init: function(config) { // 国际化 var locale_val_ = h_language; var i18n = null; if (typeof VueI18n === "function" ) { i18n = new VueI18n({ locale: locale_val_, // set locale messages: { zh: zh, // 中文语言包 en: en // 英文语言包 } }) } var default_ = { el: null, i18n: i18n, data: { title: "", //单Tab属性设置 direction: "horizontal",//vertical竖列/horizontal横列 step_attr: { name: "Tab一", code: "tab1", dataname: "", //接口 dataurl: "root/data/getEntitySet", //按键 buttons: {} }, step_table: { //查询 filterFields: [], filterFieldsObj: {}, filterObj: {}, isdraggableorder_filter: false, filterfieldClick: {}, orderby: "", filterObjBydefault: {}, filterTxt: "", paramObjBydefault: {}, filterAttr:{ columnnumber: 4, labelwidth: "100px", labelposition: "right", size: "medium", border: "3px solid #c6c6c600" }, //表格 tableFields: [], tableFieldsObj: {}, tableData: [], isEditTableData: false, isdraggableorder_table: false, pagesize: 10, pagenum: 1, total: 0, tableHeight: 360, isPagination: false, isHighlightRow: true, isShowIndex: false, iseditfield: false, selectedrow: {}, tablefieldClick: {}, }, step_form: { //表单 formAttr: { istitle: false, title: "表单名称", columnnumber: 2, labelwidth: "140px", labelposition: "left",//"left",// right//top size: "mini", border: "10px solid #c6c6c600" }, formFields: [], formData: {}, formfieldClick: {}, }, paramObjBydefault: {}, filterTxt: "", //Tab项设置 steps: [], stepspageobj: [], //运行Tab项 activestep: 0, selectTabObj: {}, //pageAttr.heightType:table/page都是为了设置表格的高度。 //table是以表格本身的条数计算高度。 //page是以页面给表格留下的高度为表格高度 pageAttr: { heightType: "page" }, pageCode: "demo_tab1", dataname: "", //查询功能 filterList:[ //注释:type: equal(等于)/in(在多个数据中)/like(模糊)/minval(最小值)/maxval(最大值)/mininclude(最小且包含该值)/maxinclude(最大且包含该值) //{field: "", val: "", type: ""} ], filterAttr: { columnnumber: 4, labelwidth: "100px", labelposition: "right", size: "medium", border: "3px solid #c6c6c600" }, //列表功能 isRefresh: true, tableAttr: {}, //窗口高度 clientHeight: 0, tableloading: false, operationtype: "", //预加载 dataRequest: [], dataRequestObj: {}, data_tablename_map: {}, }, watch: { }, methods: { loadRequestData(dataRequest, result, callback) { this.doLoadRequestData(dataRequest, result, callback); }, doLoadRequestData(dataRequest, result, callback) { var me = this; if (dataRequest && dataRequest.length) { var item = dataRequest[0]; if (typeof(item) == "string") { result[item] = dataRoot.database[item]; dataRequest.remove(item); me.doLoadRequestData(dataRequest, result, callback); } else { if (item.isClientMode) { result[item.name] = dataRoot.database[item.name]; dataRequest.remove(item); me.doLoadRequestData(dataRequest, result, callback); } else { var dataname_ = item.name; if (item.dataname) { dataname_ = item.dataname; } var params = { dataname: dataname_, } if(item.filter) { params.filter = item.filter } if(item.orderby) { params.orderby = item.orderby } var event_ = "root/data/getEntitySet"; if (item.url) { event_ = item.url; } Server.call("rootfee/" + event_, params, function(result_) { console.log(result_); if (result_ && result_.data.entityset && result_.data.entityset.length) { result[item.name] = result_.data.entityset; //不是不是选项 if (!item.isnotoption) { //是选项 result_.data.entityset.map(e=>{ if (!result.map) { result.map = {}; } if (!result.map[item.name]) { result.map[item.name] = {}; } result.map[item.name][e[item.code]] = e[item.label]; }) } } else { result[item.name] = result_; } dataRequest.remove(item); me.doLoadRequestData(dataRequest, result, callback); }); } } } else { callback(result); } }, fieldsToFieldsObj() { //查询的字段转换 var filterFieldsObj_ = {}; var tableFieldsObj_ = {}; this.selectTabObj.filterFieldsObj = {}; this.selectTabObj.tableFieldsObj = {}; this.selectTabObj.filterFields.map(f=>{ if (f.inputtype == "date") { f.type = "daterange"; f.filteroperator = "inScopeInclude"; } if (f.inputtypefilter) { f.type = f.inputtypefilter; } filterFieldsObj_[f.field] = f; }); this.selectTabObj.filterFieldsObj = clone(filterFieldsObj_); if (this.selectTabObj.tableFields && this.selectTabObj.tableFields.length) { var tableFields_ = TreeToArray(this.selectTabObj.tableFields, "field"); tableFields_.map(f=>{ tableFieldsObj_[f.field] = f; }); this.selectTabObj.tableFieldsObj = clone(tableFieldsObj_); } }, //功能 onDownload: function() { dealExportByPath("../../../template/area_tree.xlsx","测试数据"); }, onUpload: function() { Root.message('导入'); }, refreshData: function() { this.filterObj = {}; if (this.onRefreshData) { this.onRefreshData.call(this, arguments); return } this.onQuery(); }, /////////////////// /////////////////// orderFilterFields(obj) { if (this.onOrderFilterFields) { this.onOrderFilterFields.call(this, obj); return; } else { this.selectTabObj.filterFields = obj.data_list } }, orderTableFields(obj) { if (this.onOrderTableFields) { this.onOrderTableFields.call(this, obj); return; } else { this.selectTabObj.tableFields = obj.data_list this.isRefresh = false; this.$nextTick(function(){ this.isRefresh = true; }) } }, getResoures() { let me = this; this.getPageObj(); }, getPageObj() { var me = this; //页面信息 var params = { dataname: "page", filter: "code='" + this.pageCode + "'", //userId: this.userId } Server.call("rootfee/" + "root/data/getEntitySet", params, function(result) { console.log(result); if (result && result.data.entityset) { me.pageObj = result.data.entityset[0]; me.title = me.pageObj.name; if (window.top.userinfo.user.language && window.top.userinfo.user.language == "en") { me.title = me.pageObj.name_en; } //获取stepsByPage //me.getstepsByPage(me.pageObj.id); } }); }, initStepsPage(callback) { var me = this; this.stepspageobj = []; for (var i = 0; i < this.steps.length; i++) { var step = this.steps[i]; //通用属性 var step_attr_ = clone(this.step_attr); //根据每项的类型加载专属属性 var step_type = step.type ? step.type.split(";") : []; step_type.map(st=>{ if (st == "form") { //表单 var step_form_ = clone(this.step_form); for (var attrf in step_form_) { step_attr_[attrf] = step_form_[attrf]; } } else if (st == "table") { //表格 var step_table_ = clone(this.step_table); for (var attrt in step_table_) { step_attr_[attrt] = step_table_[attrt]; } } }) //设置自己的属性 for (var attr in step) { step_attr_[attr] = step[attr]; } this.stepspageobj[i] = clone(step_attr_); } if (!this.activestep) { this.activestep = 0; } this.selectTabObj = this.stepspageobj[this.activestep]; if (callback) { callback(); } }, //查询 onQuery() { //1.获取当前Tab this.selectTabObj; this.selectTabObj.pagenum = 1; this.doQueryByStep(); }, onInitFilter() { //1.获取当前Tab this.selectTabObj; //清空 this.selectTabObj.filterObj = {}; this.selectTabObj.pagenum = 1; this.doQueryByStep(); }, onEditFilter() { //选择查询字段 }, //下一步 nextStepClick() { if (this.onNextStepClick) { this.onNextStepClick(); return } this.activestep += 1; this.selectTabObj = this.stepspageobj[this.activestep]; this.doQueryByStep(); }, //上一步 upStepClick() { if (this.onUpStepClick) { this.onUpStepClick(); return } this.activestep -= 1; this.selectTabObj = this.stepspageobj[this.activestep]; this.doQueryByStep(); }, getData(page) { this.selectTabObj.pagesize = page.pagesize; this.selectTabObj.pagenum = page.pagenum; this.doQueryByStep(); }, doQueryByStep(callback) { let me = this; var thistab = this.selectTabObj; if (thistab.dataname || thistab.dataurl) { this.doQueryByStepTo(callback); } else { if (callback) { callback(); } } }, doQueryByStepTo(callback) { let me = this; var thistab = this.selectTabObj; let filter_ = "1=1"; this.filterList = []; this.selectedrow = {}; thistab.selectedrow = {}; for(var k in thistab.filterObj) { let k_val = thistab.filterObj[k]; if (k_val && typeof(k_val) == "string") { //去除两端的空格 thistab.filterObj[k] = k_val = k_val.replace(/(^\s*)|(\s*$)/g, ""); //去除两端的Tab thistab.filterObj[k] = k_val = k_val.replace(/(^\t*)|(\t*$)/g, ""); } let fieldObj_ = thistab.filterFieldsObj[k]; if (!fieldObj_) { continue } if (!fieldObj_) { fieldObj_ = { field: k } } let type_ = fieldObj_.type; let valfield_ = fieldObj_.valfield; if (type_ == "popup" && valfield_) { k_val = thistab.filterObj[valfield_]; } let field_ = fieldObj_.field; let filteroperator_ = "equal"; let isnull = false; let ornullval_ = fieldObj_.ornullval; if (ornullval_) { var nullvals_ = ornullval_.split(";"); nullvals_.map(v=>{ if (v == k_val) { isnull = true; } }); } if (fieldObj_.filterfield) { field_ = fieldObj_.filterfield } if (fieldObj_.filteroperator) { filteroperator_ = fieldObj_.filteroperator } //传条件数组由后端拼接筛选数据 /* let filterListObj_ = { field: field_, val: k_val, type: filteroperator_ } this.filterList.push(filterListObj_); */ //传条件数据有前端拼接 if (k_val && k_val != "" && k_val.length) { filter_ = getFilterByFilterType(filter_, type_, field_, k_val, filteroperator_, isnull); } } if (thistab.filterObjBydefault && Object.keys(thistab.filterObjBydefault).length) { for(var k in thistab.filterObjBydefault) { let k_val = thistab.filterObjBydefault[k]; if (k_val.indexOf(',') != -1) {//包含英文","用in filter_ += " and " + k + " in ('" + k_val +"')"; } else { filter_ += " and " + k + " ='" + k_val +"'"; } } } if (thistab.filterTxt) { filter_ += " and " + thistab.filterTxt; } if (me.filterTxt) { filter_ += " and " + me.filterTxt; } var attachmeta_ = false; if (!thistab.tableFields || (thistab.tableFields && thistab.tableFields.length == 0)) { attachmeta_ = true; } let param_ = { filterList: this.filterList, filter: filter_, attachMeta: attachmeta_ } if (thistab.pagesize && thistab.pagenum) { param_.page = { pageno: thistab.pagenum, pagesize: thistab.pagesize } } if (thistab.orderby) { param_.orderby = thistab.orderby; } if (thistab.dataname) { param_.dataname = thistab.dataname; } if (thistab.paramObjBydefault && Object.keys(thistab.paramObjBydefault).length) { for(var k in thistab.paramObjBydefault) { let k_val = thistab.paramObjBydefault[k]; param_[k] = k_val; } } if (Object.keys(this.paramObjBydefault).length) { for(var k in this.paramObjBydefault) { let k_val = this.paramObjBydefault[k]; param_[k] = k_val; } } thistab.tableData = []; //me.total = 0; me.tableloading = true; Server.call("rootfee/" + thistab.dataurl, param_, function(result) { console.log(result); me.tableloading = false; if (result && result.meta) { me.data_tablename_map = result.meta } if (result && result.data && result.data.entityset) { if (result.data.page && result.data.page.recordcount && thistab.pagenum > 1 && result.data.page.recordcount < (thistab.pagenum - 1) * thistab.pagesize) { thistab.pagenum = 1; me.doQueryByStep(callback); return; } var data_ = result.data.entityset; thistab.tableData = data_; thistab.total = result.data.page ? result.data.page.recordcount : 0; } else { thistab.total = 0; } if (callback) { callback(result, function() { me.tableDataAfter(); }); } }, function(){ me.tableloading = false; }); }, tableDataAfter() { let me = this; var thistab = this.selectTabObj; if (this.onTableDataAfter) { this.onTableDataAfter.call(this, arguments); return } if (thistab.tableFields && thistab.tableFields.length > 0){ // if (document.getElementsByClassName('el-table__header').length) { // document.getElementsByClassName('el-table__header')[0].style.width= "max-content"; // } // this.selectTabObj.tableHeight = 0; this.$nextTick(function(){ this.isRefresh = true; this.$nextTick(function(){ var tableHeight_ = 0; let clientHeight = document.documentElement.clientHeight; let height_topmenu = window.top.document.getElementsByClassName('toolbar-C').length ? window.top.document.getElementsByClassName('toolbar-C')[0].offsetHeight : 0; let height_tabmenu = window.top.document.getElementsByClassName('tab-A-headerOuter').length ? window.top.document.getElementsByClassName('tab-A-headerOuter')[0].offsetHeight : 0; let title_height = document.getElementsByClassName('topbar').length ? document.getElementsByClassName('topbar')[0].offsetHeight + document.getElementsByClassName('topbar')[0].offsetTop : 0; let steps_height = document.getElementsByClassName('el-tabs__header').length ? document.getElementsByClassName('el-tabs__header')[0].offsetHeight + 2 : 0; let filter_height = document.getElementsByClassName('h_form_filter').length ? document.getElementsByClassName('h_form_filter')[0].offsetHeight : 0; let footer_height = document.getElementsByClassName('el-dialog__footer').length ? document.getElementsByClassName('el-dialog__footer')[0].offsetHeight : 0; let h_table_select = document.getElementsByClassName('h_table_select').length ? document.getElementsByClassName('h_table_select')[0].offsetHeight : 0; let h_table_title = document.getElementsByClassName('h_table_title').length ? document.getElementsByClassName('h_table_title')[0].offsetHeight : 0; let header_height = document.getElementsByClassName('el-dialog__header').length ? document.getElementsByClassName('el-dialog__header')[0].offsetHeight : 0; let table_header_height = document.getElementsByClassName('el-table__header-wrapper').length ? document.getElementsByClassName('el-table__header-wrapper')[0].offsetHeight : 0; let pagination_height = 0; if (document.getElementsByClassName('z_table_pagination').length) { pagination_height = document.getElementsByClassName('z_table_pagination')[0].offsetHeight; } // tableHeight_ = clientHeight - height_topmenu - title_height - steps_height - pagination_height - footer_height - h_table_select - h_table_title - header_height; tableHeight_ = clientHeight - filter_height - steps_height - pagination_height - footer_height - h_table_select - h_table_title - header_height - table_header_height - 40 - 10; me.selectTabObj.tableHeight = tableHeight_ + table_header_height; if (me.$refs.table1) { me.$refs.table1.$el.getElementsByClassName('el-table__body-wrapper')[0].style['height'] = tableHeight_ + "px"; me.$refs.table1.$el.getElementsByClassName('el-table__body-wrapper')[0].style['height'] = tableHeight_ + "px"; } me.isRefresh = false; me.$nextTick(function(){ me.isRefresh = true; // let table_header_height2 = document.getElementsByClassName('el-table__header-wrapper').length ? document.getElementsByClassName('el-table__header-wrapper')[0].offsetHeight : 0; // me.selectTabObj.tableHeight; // let tableHeight2_ = me.selectTabObj.tableHeight - table_header_height2; // me.$refs.table1.$el.getElementsByClassName('el-table__body-wrapper')[0].style['height'] = tableHeight2_ + "px"; }) }) }) } }, addData() { //1. this.operationtype = "add"; //this.selectedrow = {}; //2. get config and go var config = new Config(), go = true; if (this.onAddData) { go = this.onAddData.call(this, config); } //3. popup if (go) { config.title = clone(config.text); config.operationtype = clone(this.operationtype); if (config.url && config.url.indexOf("http:") == -1) { config.url = "rootfee/" + config.url; } if (config.totab) { if (config.url) { if (config.text.length > 4) { config.text = config.text.substr(0, 4) + "..."; } } var callback_ = config.callback; var closecallback_ = config.closecallback; var parames = { totab: true, url: config.url, title: config.title, sceneCode: config.sceneCode, data: config.data, delta: config.delta, disabled: config.disabled, disabledone: config.disabledone, operationtype: "add", parentOption: window.top.tab.selected.option, closecallback: function() { if (closecallback_) { closecallback_(); } }, callback: function(obj, callback) { if (callback_) { callback_(obj); } if (callback) { callback(); } } }; Root.popupParames = parames; window.top.tab.open(config); } else { this.doPopup(config); } } }, editData: function(scope) { //1. this.operationtype = "edit"; //this.selectedrow = scope.row; //2. get config and go var config = new Config(), go = true; if (this.onEditData) { go = this.onEditData.call(this, config, scope); } //3. popup if (go) { config.title = clone(config.text); config.operationtype = clone(this.operationtype); if (config.url && config.url.indexOf("http:") == -1) { config.url = "rootfee/" + config.url; } if (config.totab) { if (config.url) { if (config.text.length > 4) { config.text = config.text.substr(0, 4) + "..."; } } var callback_ = config.callback; var closecallback_ = config.closecallback; var parames = { totab: true,//config.totab, url: config.url, title: config.title,//config.title = clone(config.text); sceneCode: config.sceneCode, data: config.data, delta: config.delta, disabled: config.disabled, disabledone: config.disabledone, operationtype: "edit", parentOption: window.top.tab.selected.option, closecallback: function() { if (closecallback_) { closecallback_(); } }, callback: function(obj, callback) {//var callback_ = config.callback; if (callback_) { callback_(obj); } if (callback) { callback(); } } }; Root.popupParames = parames; window.top.tab.open(config); } else { this.doPopup(config); } } }, delData: function(scope) { let me = this; if (this.onDelData) { this.onDelData.call(this, scope); return } let row = scope.row; let index_ = scope.$index; let name_ = "该数据"; if (!this.selectTabObj.dataname) { Root.message({ type: 'warning', message: '该事件需指定数据对象' }); return } if (!row.id) { Root.message({ type: 'warning', message: '该事件需存在数据ID' }); return } Root.confirm('确定删除吗?', '删除提示', { confirmButtonText: '删除', cancelButtonText: '取消', type: 'warning' }).then(() => { let param = { id: row.id, dataname: this.selectTabObj.dataname, } Server.call("rootfee/" + "root/data/deleteEntity", param, function(result) { console.log(result); Root.message({ type: 'success', message: '删除成功!' }); me.doQueryByStep(); }); // Root.message({ // type: 'success', // message: '删除成功!' // }); // me.doQueryByStep(); }).catch(() => { Root.message({ type: 'info', message: '已取消删除' }); }); }, //作废 Cancel: function(status_,code_) { let me = this; var row = this.selectTabObj.selectedrow; if (!row || !row.id) { Root.message({ type: 'warning', message: '请先选择一条数据' }); return false; } else if (row[status_] != "refuse") { Root.message({ type: 'warning', message: '当前状态不可作废' }); return false; } Root.confirm('确定作废-' + row[code_] + '-吗?', '提示', { confirmButtonText: "作废", cancelButtonText: '取消', type: 'warning' }).then(() => { // let param = { // orderId:row.id, // eventType:"cancellation", // dataType:"sales", // } // Server.call("rootfee/" + "root/order/onEvent", param, function(result) { // console.log(result); // Root.message({ // type: 'success', // message: '作废成功' // }); // me.onQuery(); // }); Root.message({ type: 'success', message: '作废成功' }); me.doQueryByStep(); }).catch(() => { Root.message({ type: 'info', message: '已取消' }); }); }, orderbyChange: function(obj) { if (this.onOrderbyChange) { this.onOrderbyChange.call(this, obj); return; } else { var order_field = ""; var order_ = ""; var delorder = false; var orderbylist = []; var neworderbylist = []; if (this.orderby) { orderbylist = this.orderby.split(","); orderbylist.map(o=>{ o = o.replace(/(^\s*)|(\s*$)/g, ""); }); } if (obj.field.filterfield) { order_ = clone(obj.field.filterfield); order_field = clone(obj.field.filterfield); } else { order_ = clone(obj.field.field); order_field = clone(obj.field.field); } if (obj.order == "ascending") {//正序 } else if(obj.order == "descending") {//倒序 order_ += " desc"; } else { delorder = true; } var isyou_ = false; if (orderbylist.length) { orderbylist.map(o=>{ var ol_ = []; ol_ = o.split(" "); if (ol_[0] != order_field) { neworderbylist.push(o); } else { isyou_ = true; if (!delorder) { neworderbylist.unshift(order_); } } }); } else if (!delorder) { isyou_ = true; neworderbylist.unshift(order_); } if (!isyou_) { neworderbylist.unshift(order_); } var orderby_ = ""; neworderbylist.map(no=>{ if (!orderby_) { orderby_ = no; } else { orderby_ += "," + no; } }) this.orderby = orderby_; this.onQuery(); } }, rowClick: function(obj) { // if(this.selectTabObj.selectedrow.id && this.selectTabObj.selectedrow.id == obj.row.id) { // this.selectTabObj.selectedrow = {}; // } // else { this.selectTabObj.selectedrow = obj.row; if (this.onRowClick) { this.onRowClick.call(this, obj); return; } // } }, rowDblclick: function(obj) { this.selectTabObj.selectedrow = obj.row; if (this.onRowDblClick) { this.onRowDblClick.call(this, obj); return; } }, } } config = util.combineObj(config, default_);//config为主,default_是默认 Object.subClass.call(this); config.vue = new InitRootVue(config); return config; }, }); //版本主页模板 TabTimelineTableVue = Object.subClass({ init: function(config) { // 国际化 var locale_val_ = h_language; var i18n = null; if (typeof VueI18n === "function" ) { i18n = new VueI18n({ locale: locale_val_, // set locale messages: { zh: zh, // 中文语言包 en: en // 英文语言包 } }) } var default_ = { el: null, i18n: i18n, data: { title: "", //单Tab属性设置 tab_attr: { name: "Tab一", code: "tab1", dataname: "", //接口 dataurl: "root/data/getEntitySet", //查询 filterFields: [], filterFieldsObj: {}, filterObj: {}, isdraggableorder_filter: false, filterfieldClick: {}, orderby: "", filterObjBydefault: {}, filterTxt: "", paramObjBydefault: {}, //表格 tableFields: [], tableFieldsObj: {}, tableData: [], isEditTableData: false, isdraggableorder_table: false, pagesize: 10, pagenum: 1, total: 0, tableHeight: 360, isPagination: false, isHighlightRow: true, isShowIndex: false, iseditfield: false, selectedrow: {}, tablefieldClick: {}, //按键 buttons: {} }, paramObjBydefault: {}, //Tab项设置 tabs: [], tabsobj: {}, tabspageobj: {}, //运行Tab项 activeTabName: "", selectTabObj: {}, //pageAttr.heightType:table/page都是为了设置表格的高度。 //table是以表格本身的条数计算高度。 //page是以页面给表格留下的高度为表格高度 pageAttr: { heightType: "page" }, pageCode: "demo_tab1", dataname: "", //查询功能 filterList:[ //注释:type: equal(等于)/in(在多个数据中)/like(模糊)/minval(最小值)/maxval(最大值)/mininclude(最小且包含该值)/maxinclude(最大且包含该值) //{field: "", val: "", type: ""} ], filterAttr: { columnnumber: 4, labelwidth: "100px", labelposition: "right", size: "medium", border: "3px solid #c6c6c600" }, //列表功能 isRefresh: true, tableAttr: {}, //窗口高度 clientHeight: 0, tableloading: false, operationtype: "", //预加载 dataRequest: [], dataRequestObj: {}, data_tablename_map: {}, }, watch: { }, methods: { loadRequestData(dataRequest, result, callback) { this.doLoadRequestData(dataRequest, result, callback); }, doLoadRequestData(dataRequest, result, callback) { var me = this; if (dataRequest && dataRequest.length) { var item = dataRequest[0]; if (typeof(item) == "string") { result[item] = dataRoot.database[item]; dataRequest.remove(item); me.doLoadRequestData(dataRequest, result, callback); } else { if (item.isClientMode) { result[item.name] = dataRoot.database[item.name]; dataRequest.remove(item); me.doLoadRequestData(dataRequest, result, callback); } else { var dataname_ = item.name; if (item.dataname) { dataname_ = item.dataname; } var params = { dataname: dataname_, } if(item.filter) { params.filter = item.filter } if(item.orderby) { params.orderby = item.orderby } var event_ = "root/data/getEntitySet"; if (item.url) { event_ = item.url; } Server.call("rootfee/" + event_, params, function(result_) { console.log(result_); if (result_ && result_.data.entityset && result_.data.entityset.length) { result[item.name] = result_.data.entityset; //不是不是选项 if (!item.isnotoption) { //是选项 result_.data.entityset.map(e=>{ if (!result.map) { result.map = {}; } if (!result.map[item.name]) { result.map[item.name] = {}; } result.map[item.name][e[item.code]] = e[item.label]; }) } } else { result[item.name] = result_; } dataRequest.remove(item); me.doLoadRequestData(dataRequest, result, callback); }); } } } else { callback(result); } }, fieldsToFieldsObj() { //查询的字段转换 var filterFieldsObj_ = {}; var tableFieldsObj_ = {}; this.selectTabObj.filterFieldsObj = {}; this.selectTabObj.tableFieldsObj = {}; this.selectTabObj.filterFields.map(f=>{ if (f.inputtype == "date") { f.type = "daterange"; f.filteroperator = "inScopeInclude"; } if (f.inputtypefilter) { f.type = f.inputtypefilter; } filterFieldsObj_[f.field] = f; }); this.selectTabObj.filterFieldsObj = clone(filterFieldsObj_); if (this.selectTabObj.tableFields && this.selectTabObj.tableFields.length) { var tableFields_ = TreeToArray(this.selectTabObj.tableFields, "field"); tableFields_.map(f=>{ tableFieldsObj_[f.field] = f; }); this.selectTabObj.tableFieldsObj = clone(tableFieldsObj_); } }, //功能 onDownload: function() { dealExportByPath("../../../template/area_tree.xlsx","测试数据"); }, onUpload: function() { Root.message('导入'); }, refreshData: function() { this.filterObj = {}; if (this.onRefreshData) { this.onRefreshData.call(this, arguments); return } this.onQuery(); }, /////////////////// /////////////////// orderFilterFields(obj) { if (this.onOrderFilterFields) { this.onOrderFilterFields.call(this, obj); return; } else { this.selectTabObj.filterFields = obj.data_list } }, orderTableFields(obj) { if (this.onOrderTableFields) { this.onOrderTableFields.call(this, obj); return; } else { this.selectTabObj.tableFields = obj.data_list this.isRefresh = false; this.$nextTick(function(){ this.isRefresh = true; }) } }, getResoures() { let me = this; this.getPageObj(); }, getPageObj() { var me = this; //页面信息 var params = { dataname: "page", filter: "code='" + this.pageCode + "'", //userId: this.userId } Server.call("rootfee/" + "root/data/getEntitySet", params, function(result) { console.log(result); if (result && result.data.entityset) { me.pageObj = result.data.entityset[0]; me.title = me.pageObj.name; if (window.top.userinfo.user.language && window.top.userinfo.user.language == "en") { me.title = me.pageObj.name_en; } //获取TabsByPage //me.getTabsByPage(me.pageObj.id); } }); }, initTabsPage(callback) { var me = this; this.tabsobj = {}; this.tabspageobj = {}; this.tabs.map(t=>{ this.tabsobj[t.code] = t; var tab_attr_ = clone(this.tab_attr); for (var attr in t) { tab_attr_[attr] = t[attr]; } this.tabspageobj[t.code] = clone(tab_attr_); }) if (!this.activeTabName) { this.activeTabName = this.tabs[0].code; } this.selectTabObj = this.tabspageobj[this.activeTabName]; if (callback) { callback(); } }, //查询 onQuery() { //1.获取当前Tab this.selectTabObj; this.selectTabObj.pagenum = 1; this.doQueryByTab(); }, onInitFilter() { //1.获取当前Tab this.selectTabObj; //清空 this.selectTabObj.filterObj = {}; this.selectTabObj.pagenum = 1; this.doQueryByTab(); }, onEditFilter() { //选择查询字段 }, handleClick(tab, event) { this.activeTabName = tab.name; this.selectTabObj = this.tabspageobj[this.activeTabName]; this.onhandleClick(); }, getData(page) { this.selectTabObj.pagesize = page.pagesize; this.selectTabObj.pagenum = page.pagenum; this.doQueryByTab(); }, doQueryByTab(callback) { let me = this; var thistab = this.selectTabObj; let filter_ = "1=1"; this.filterList = []; this.selectedrow = {}; thistab.selectedrow = {}; for(var k in thistab.filterObj) { let k_val = thistab.filterObj[k]; if (k_val && typeof(k_val) == "string") { //去除两端的空格 thistab.filterObj[k] = k_val = k_val.replace(/(^\s*)|(\s*$)/g, ""); //去除两端的Tab thistab.filterObj[k] = k_val = k_val.replace(/(^\t*)|(\t*$)/g, ""); } let fieldObj_ = thistab.filterFieldsObj[k]; if (!fieldObj_) { continue } if (!fieldObj_) { fieldObj_ = { field: k } } let type_ = fieldObj_.type; let valfield_ = fieldObj_.valfield; if (type_ == "popup" && valfield_) { k_val = thistab.filterObj[valfield_]; } let field_ = fieldObj_.field; let filteroperator_ = "equal"; let isnull = false; let ornullval_ = fieldObj_.ornullval; if (ornullval_) { var nullvals_ = ornullval_.split(";"); nullvals_.map(v=>{ if (v == k_val) { isnull = true; } }); } if (fieldObj_.filterfield) { field_ = fieldObj_.filterfield } if (fieldObj_.filteroperator) { filteroperator_ = fieldObj_.filteroperator } //传条件数组由后端拼接筛选数据 /* let filterListObj_ = { field: field_, val: k_val, type: filteroperator_ } this.filterList.push(filterListObj_); */ //传条件数据有前端拼接 if (k_val && k_val != "" && k_val.length) { filter_ = getFilterByFilterType(filter_, type_, field_, k_val, filteroperator_, isnull); } } if (thistab.filterObjBydefault && Object.keys(thistab.filterObjBydefault).length) { for(var k in thistab.filterObjBydefault) { let k_val = thistab.filterObjBydefault[k]; if (k_val.indexOf(',') != -1) {//包含英文","用in filter_ += " and " + k + " in ('" + k_val +"')"; } else { filter_ += " and " + k + " ='" + k_val +"'"; } } } if (thistab.filterTxt) { filter_ += " and " + thistab.filterTxt; } if (me.filterTxt) { filter_ += " and " + me.filterTxt; } var attachmeta_ = false; if (!thistab.tableFields || (thistab.tableFields && thistab.tableFields.length == 0)) { attachmeta_ = true; } let param_ = { filterList: this.filterList, filter: filter_, page: { pageno: thistab.pagenum, pagesize: thistab.pagesize }, attachMeta: attachmeta_ } if (thistab.orderby) { param_.orderby = thistab.orderby; } if (thistab.dataname) { param_.dataname = thistab.dataname; } if (thistab.paramObjBydefault && Object.keys(thistab.paramObjBydefault).length) { for(var k in thistab.paramObjBydefault) { let k_val = thistab.paramObjBydefault[k]; param_[k] = k_val; } } if (Object.keys(this.paramObjBydefault).length) { for(var k in this.paramObjBydefault) { let k_val = this.paramObjBydefault[k]; param_[k] = k_val; } } thistab.tableData = []; //me.total = 0; me.tableloading = true; Server.call("rootfee/" + thistab.dataurl, param_, function(result) { console.log(result); me.tableloading = false; if (result && result.meta) { me.data_tablename_map = result.meta } if (result && result.data && result.data.entityset) { if (result.data.page && result.data.page.recordcount && thistab.pagenum > 1 && result.data.page.recordcount < (thistab.pagenum - 1) * thistab.pagesize) { thistab.pagenum = 1; me.doQueryByTab(callback); return; } var data_ = result.data.entityset; thistab.tableData = data_; thistab.total = result.data.page ? result.data.page.recordcount : 0; } else { thistab.total = 0; } if (callback) { callback(result, function() { me.tableDataAfter(); }); } }, function(){ me.tableloading = false; }); }, tableDataAfter() { let me = this; var thistab = this.selectTabObj; if (this.onTableDataAfter) { this.onTableDataAfter.call(this, arguments); return } //// var tableHeight_ = 0; let clientHeight = document.documentElement.clientHeight; let title_height = document.getElementsByClassName('topbar').length ? document.getElementsByClassName('topbar')[0].offsetHeight + document.getElementsByClassName('topbar')[0].offsetTop : 0; let tabs_height = document.getElementsByClassName('el-tabs__header').length ? document.getElementsByClassName('el-tabs__header')[0].offsetHeight + 2 : 0; tableHeight_ = clientHeight - tabs_height - title_height - 10; this.tabHeight = tableHeight_; ////// }, addData() { //1. this.operationtype = "add"; //this.selectedrow = {}; //2. get config and go var config = new Config(), go = true; if (this.onAddData) { go = this.onAddData.call(this, config); } //3. popup if (go) { config.title = clone(config.text); config.operationtype = clone(this.operationtype); if (config.url && config.url.indexOf("http:") == -1) { config.url = "rootfee/" + config.url; } if (config.totab) { if (config.url) { if (config.text.length > 4) { config.text = config.text.substr(0, 4) + "..."; } } var callback_ = config.callback; var closecallback_ = config.closecallback; var parames = { totab: true, url: config.url, title: config.title, sceneCode: config.sceneCode, data: config.data, delta: config.delta, disabled: config.disabled, disabledone: config.disabledone, operationtype: "add", parentOption: window.top.tab.selected.option, closecallback: function() { if (closecallback_) { closecallback_(); } }, callback: function(obj, callback) { if (callback_) { callback_(obj); } if (callback) { callback(); } } }; Root.popupParames = parames; window.top.tab.open(config); } else { this.doPopup(config); } } }, editData: function(scope) { //1. this.operationtype = "edit"; //this.selectedrow = scope.row; //2. get config and go var config = new Config(), go = true; if (this.onEditData) { go = this.onEditData.call(this, config, scope); } //3. popup if (go) { config.title = clone(config.text); config.operationtype = clone(this.operationtype); if (config.url && config.url.indexOf("http:") == -1) { config.url = "rootfee/" + config.url; } if (config.totab) { if (config.url) { if (config.text.length > 4) { config.text = config.text.substr(0, 4) + "..."; } } var callback_ = config.callback; var closecallback_ = config.closecallback; var parames = { totab: true,//config.totab, url: config.url, title: config.title,//config.title = clone(config.text); sceneCode: config.sceneCode, data: config.data, delta: config.delta, disabled: config.disabled, disabledone: config.disabledone, operationtype: "edit", parentOption: window.top.tab.selected.option, closecallback: function() { if (closecallback_) { closecallback_(); } }, callback: function(obj, callback) {//var callback_ = config.callback; if (callback_) { callback_(obj); } if (callback) { callback(); } } }; Root.popupParames = parames; window.top.tab.open(config); } else { this.doPopup(config); } } }, delData: function(scope) { let me = this; if (this.onDelData) { this.onDelData.call(this, scope); return } let row = scope.row; let index_ = scope.$index; let name_ = "该数据"; if (!this.selectTabObj.dataname) { Root.message({ type: 'warning', message: '该事件需指定数据对象' }); return } if (!row.id) { Root.message({ type: 'warning', message: '该事件需存在数据ID' }); return } Root.confirm('确定删除吗?', '删除提示', { confirmButtonText: '删除', cancelButtonText: '取消', type: 'warning' }).then(() => { let param = { id: row.id, dataname: this.selectTabObj.dataname, } Server.call("rootfee/" + "root/data/deleteEntity", param, function(result) { console.log(result); Root.message({ type: 'success', message: '删除成功!' }); me.doQueryByTab(); }); // Root.message({ // type: 'success', // message: '删除成功!' // }); // me.doQueryByTab(); }).catch(() => { Root.message({ type: 'info', message: '已取消删除' }); }); }, //作废 Cancel: function(status_,code_) { let me = this; var row = this.selectTabObj.selectedrow; if (!row || !row.id) { Root.message({ type: 'warning', message: '请先选择一条数据' }); return false; } else if (row[status_] != "refuse") { Root.message({ type: 'warning', message: '当前状态不可作废' }); return false; } Root.confirm('确定作废-' + row[code_] + '-吗?', '提示', { confirmButtonText: "作废", cancelButtonText: '取消', type: 'warning' }).then(() => { // let param = { // orderId:row.id, // eventType:"cancellation", // dataType:"sales", // } // Server.call("rootfee/" + "root/order/onEvent", param, function(result) { // console.log(result); // Root.message({ // type: 'success', // message: '作废成功' // }); // me.onQuery(); // }); Root.message({ type: 'success', message: '作废成功' }); me.doQueryByTab(); }).catch(() => { Root.message({ type: 'info', message: '已取消' }); }); }, orderbyChange: function(obj) { if (this.onOrderbyChange) { this.onOrderbyChange.call(this, obj); return; } else { var order_field = ""; var order_ = ""; var delorder = false; var orderbylist = []; var neworderbylist = []; if (this.orderby) { orderbylist = this.orderby.split(","); orderbylist.map(o=>{ o = o.replace(/(^\s*)|(\s*$)/g, ""); }); } if (obj.field.filterfield) { order_ = clone(obj.field.filterfield); order_field = clone(obj.field.filterfield); } else { order_ = clone(obj.field.field); order_field = clone(obj.field.field); } if (obj.order == "ascending") {//正序 } else if(obj.order == "descending") {//倒序 order_ += " desc"; } else { delorder = true; } var isyou_ = false; if (orderbylist.length) { orderbylist.map(o=>{ var ol_ = []; ol_ = o.split(" "); if (ol_[0] != order_field) { neworderbylist.push(o); } else { isyou_ = true; if (!delorder) { neworderbylist.unshift(order_); } } }); } else if (!delorder) { isyou_ = true; neworderbylist.unshift(order_); } if (!isyou_) { neworderbylist.unshift(order_); } var orderby_ = ""; neworderbylist.map(no=>{ if (!orderby_) { orderby_ = no; } else { orderby_ += "," + no; } }) this.orderby = orderby_; this.onQuery(); } }, rowClick: function(obj) { // if(this.selectTabObj.selectedrow.id && this.selectTabObj.selectedrow.id == obj.row.id) { // this.selectTabObj.selectedrow = {}; // } // else { this.selectTabObj.selectedrow = obj.row; if (this.onRowClick) { this.onRowClick.call(this, obj); return; } // } }, } } config = util.combineObj(config, default_);//config为主,default_是默认 Object.subClass.call(this); config.vue = new InitRootVue(config); return config; }, }); //表单详情 FormVue = Object.subClass({ init: function(config) { // 国际化 var locale_val_ = h_language; var i18n = null; if (typeof VueI18n === "function" ) { i18n = new VueI18n({ locale: locale_val_, // set locale messages: { zh: zh, // 中文语言包 en: en // 英文语言包 } }) } var default_ = { el: null, i18n: i18n, data: { //参数对象 popupParames: null, dataname: "", table_dataname: "", dataurl: "root/data/getEntity", selectCard: {}, tabObjList: [], tabRangeList: [], activeCollapseName: "1", selectedrow: null,// {}, orderby:"", filterList:[ //注释:type: equal(等于)/in(在多个数据中)/like(模糊)/minval(最小值)/maxval(最大值)/mininclude(最小且包含该值)/maxinclude(最大且包含该值) //{field: "", val: "", type: ""} ], tableHeight: null, filterTxt: "", filterObjBydefault: {}, paramObjBydefault: {}, formloading: false, rowData: {}, formFields: [], editTableButton: { edit: { isshow: false, txt:"编辑" }, del: { isshow: true, txt:"删除" }, save: { isshow: false, txt:"保存" }, }, data_tablename_map: {}, }, watch: { }, methods: { delData(scope, confirm, confirm_callback, cancel_callback) { var me = this; var c_ = { txt: confirm.txt ? confirm.txt : "删除提醒", confirmButtonText: confirm.confirmButtonText ? confirm.confirmButtonText : "删除", cancelButtonText: confirm.cancelButtonText ? confirm.cancelButtonText : "取消", type: confirm.type ? confirm.type : "warning" } this.$confirm(c_.txt, '提示', { confirmButtonText: c_.confirmButtonText, cancelButtonText: c_.cancelButtonText, type: c_.type }).then(() => { if (confirm_callback) { confirm_callback(); } else { Root.message({ type: 'warning', message: '缺少确定后事件' }); } }).catch(() => { if (cancel_callback) { cancel_callback(); } else { Root.message({ type: 'info', message: '已取消删除' }); } }); }, fieldsToFieldsObj() { //字段转换 var formFieldsObj_ = {}; var tableFieldsObj_ = {}; this.formFieldsObj_ = {}; this.tableFieldsObj = {}; this.formFields.map(f=>{ if (f.inputtypefilter) { f.type = f.inputtypefilter; } formFieldsObj_[f.field] = f; }); this.formFieldsObj = clone(formFieldsObj_); if (this.tableFields && this.tableFields.length) { var tableFields_ = TreeToArray(this.tableFields, "field"); tableFields_.map(f=>{ tableFieldsObj_[f.field] = f; }); this.tableFieldsObj = clone(tableFieldsObj_); } }, getRowDataById(id, callback) { var me = this; var attachmeta_ = false; if (!this.formFields || (this.formFields && this.formFields.length == 0)) { attachmeta_ = true; } let param_ = { dataname: this.dataname, attachMeta: attachmeta_ } if (id) { param_.id = id; } else { param_.filter = "1<>1"; } if (!attachmeta_ && !id) { return } me.formloading = true; Server.call("rootfee/" + me.dataurl, param_, function(result) { console.log(result); me.formloading = false; if (result && result.meta) { me.data_tablename_map = result.meta } if (result && result.data && result.data) { me.rowData = clone(result.data) } if (callback) { callback(result); } }); }, getRowData(filter, callback) { var me = this; var filter_ = "1=1"; if (filter) { filter_ += " and " + filter; } if (Object.keys(this.filterObjBydefault).length) { for(var k in this.filterObjBydefault) { let k_val = this.filterObjBydefault[k]; if (k_val.indexOf(',') != -1) {//包含英文","用in filter_ += " and " + k + " in ('" + k_val +"')"; } else { filter_ += " and " + k + " ='" + k_val +"'"; } } } if (this.filterTxt) { filter_ += " and " + this.filterTxt; } if (filter_ == "1=1") { filter_ = "1<>1" } var attachmeta_ = false; if (!this.formFields || (this.formFields && this.formFields.length == 0)) { attachmeta_ = true; } let param_ = { dataname: this.dataname, filter: filter_, attachMeta: attachmeta_ } if (Object.keys(this.paramObjBydefault).length) { for(var k in this.paramObjBydefault) { let k_val = this.paramObjBydefault[k]; param_[k] = k_val; } } me.formloading = true; Server.call("rootfee/" + me.dataurl, param_, function(result) { console.log(result); me.formloading = false; if (result && result.meta) { me.data_tablename_map = result.meta } if (result && result.data && result.data) { me.rowData = clone(result.data) } if (callback) { callback(result); } }); }, getFilterData: function(filter, filterObj, filterFieldsObj) { var filter_ = filter ? filter : "1=1"; for(var k in filterObj) { let k_val = filterObj[k]; if (k_val && typeof(k_val) == "string") { //去除两端的空格 filterObj[k] = k_val = k_val.replace(/(^\s*)|(\s*$)/g, ""); //去除两端的Tab filterObj[k] = k_val = k_val.replace(/(^\t*)|(\t*$)/g, ""); } let fieldObj_ = filterFieldsObj[k]; if (!fieldObj_) { continue } let type_ = fieldObj_.type; let valfield_ = fieldObj_.valfield; if (type_ == "popup" && valfield_) { k_val = filterObj[valfield_]; if (!filterObj[valfield_] && filterObj[k]) { k_val = filterObj[k]; } } let field_ = fieldObj_.field; let filteroperator_ = "equal"; let isnull = false; let ornullval_ = fieldObj_.ornullval; if (ornullval_) { var nullvals_ = ornullval_.split(";"); nullvals_.map(v=>{ if (v == k_val) { isnull = true; } }); } if (fieldObj_.filterfield) { field_ = fieldObj_.filterfield } if (fieldObj_.filteroperator) { filteroperator_ = fieldObj_.filteroperator } if (k_val && k_val != "" && k_val.length) { filter_ = getFilterByFilterType(filter_, type_, field_, k_val, filteroperator_, isnull); } } if (Object.keys(this.filterObjBydefault).length) { for(var k in this.filterObjBydefault) { let k_val = this.filterObjBydefault[k]; filter_ += " and " + k + " = '" + k_val +"'"; } } if (this.filterTxt) { filter_ += " and " + this.filterTxt; } return encodeURI(filter_); }, //仅天境项目框架用 tabCardClick(card) { if (card){ var parames = clone(card); parames.totab = true; parames.title = parames.name; /* var parames = { url: card.url, title: card.name, sceneCode: card.sceneCode, data: card.data, delta: card.delta }; */ Root.popupParames = parames; }else { Root.popupParames = {}; } //需要有选中数据才能打开 if (card.openfilter && card.openfilter == 'selectedrow') { if (!this.selectedrow) { this.$message({ message: '请先选中一条数据', type: 'warning' }); return } } if (card.opentype == "showthis") {//本页面内打开 this.page_url = card.url; if (this.selectCard.url) {//若已存在选中card,则replacepage window.top.mainvue.methods.setPageNavigation("showthis_replace", card, window.top.mainvue.data) } else { window.top.mainvue.methods.setPageNavigation("showthis_add", card, window.top.mainvue.data) } this.selectCard = card; } else if (card.opentype == "replacepage") {//替换本页面 window.top.mainvue.methods.setPageNavigation("replace", card, window.top.mainvue.data) } else if (card.opentype == "add") {//新子目录打开 if (this.selectCard.url) {//若已存在选中card,则replacepage window.top.mainvue.methods.setPageNavigation("replace", card, window.top.mainvue.data) } else { window.top.mainvue.methods.setPageNavigation("add", card, window.top.mainvue.data) } } else if (card.opentype == "openpage") {//新浏览器打开 //window.open(); } }, //滚动设置Tab handleScroll(callback) { var me = this; let scrollbarEl = this.$refs.myScrollbar.wrap; scrollbarEl.onscroll=()=>{ if (callback) { callback(scrollbarEl.scrollTop); } for (var ti = me.tabRangeList.length - 1; ti > -1; ti--) { var top_ = me.tabRangeList[ti]; if (scrollbarEl.scrollTop > top_) { me.activeName = me.tabObjList[ti]; return } } return } }, //锚点预设 initScrollbarTab() { var me = this; let scrollbarEl = this.$refs.myScrollbar.wrap; const scrollbar_bottom = scrollbarEl.scrollHeight - scrollbarEl.clientHeight; var tabOffsetTopObj = {}; var tabOffsetTopObjByTab = {}; var tabObjList = []; var tabRangeList = []; this.tabList.map(function(tabobj) { var ref_ = me.$refs[tabobj.code]; var ref_array = Array.isArray(ref_); if (ref_array) { ref_ = ref_[0]; } var offsetTop = ref_.offsetTop; if (ref_.offsetTop > scrollbar_bottom) { offsetTop = scrollbar_bottom; } if (offsetTop > scrollbarEl.clientHeight) { offsetTop = offsetTop - (scrollbarEl.clientHeight/2) } if (!tabOffsetTopObj[offsetTop]) { tabOffsetTopObj[offsetTop] = tabobj.code; tabOffsetTopObjByTab[tabobj.code] = offsetTop; tabRangeList.push(offsetTop); tabObjList.push(tabobj.code); } }) this.tabRangeList = tabRangeList; this.tabObjList = tabObjList; }, getTableHeight(type, ref_container, callback) { var tableHeight = null; var container_height = ref_container.offsetHeight; if (type == "htype0") {// tableHeight = container_height; } else if (type == "htype1") {// let pagination_height = 0; if (ref_container.getElementsByClassName('z_table_pagination').length) { pagination_height = ref_container.getElementsByClassName('z_table_pagination')[0].offsetHeight; } tableHeight = container_height - pagination_height; } else if (type == "htype2") {// let title_height = document.getElementsByClassName('v_header').length ? document.getElementsByClassName('v_header')[0].offsetHeight : 0; tableHeight = container_height - title_height; } callback(tableHeight - 10); }, //根据权限设置功能模块 setModularByToken(formButton, tableFields, callback) { var tabs = Root.pageobj.tabs; var buttons = Root.pageobj.buttons; var formButton_ = clone(formButton); var tableFields_ = clone(tableFields); var tablebuttons_list = []; var tablebuttons_obj = {}; if (buttons && buttons.length > 0) { buttons.map(function(obj) { if (obj.name == "insert" && obj.active) { formButton_.add = true; } else if (obj.name == "query" && obj.active) { tablebuttons_obj.query = true; } else if (obj.name == "delete" && obj.active) { tablebuttons_obj.delete = true; formButton_.delete = true; } else if (obj.name == "edit" && obj.active) { tablebuttons_obj.update = true; } }) for (var button_name in tablebuttons_obj) { if (button_name == "query") { tablebuttons_list.push({name: "查看", code: "query"}); } else if (button_name == "delete") { tablebuttons_list.push({name: "删除", code: "delete"}); } else if (button_name == "update") { tablebuttons_list.push({name: "修改", code: "update"}); } } } tableFields_.map(function(fieldobj) { if (fieldobj.issystem && tablebuttons_list.length > 0) { fieldobj.isshow = "T"; fieldobj.buttons = tablebuttons_list; } }) callback(formButton_, tableFields_) }, addData: function() { //2. get config and go var config = new Config(), go = true; if (this.onAddData) { go = this.onAddData.call(this, config); } //3. popup if (go) { config.title = clone(config.text); config.operationtype = clone(this.operationtype); if (config.url && config.url.indexOf("http:") == -1) { config.url = "rootfee/" + config.url; } if (config.totab) { var callback_ = config.callback; var closecallback_ = config.closecallback; var parames = { totab: true,//config.totab, url: config.url, title: config.title,//config.title = clone(config.text); sceneCode: config.sceneCode, data: config.data, delta: config.delta, disabled: config.disabled, disabledone: config.disabledone, operationtype: "add", parentOption: window.top.tab.selected.option, closecallback: function() { if (closecallback_) { closecallback_(); } }, callback: function(obj, callback) {//var callback_ = config.callback; if (callback_) { callback_(obj); } if (callback) { callback(); } } }; Root.popupParames = parames; window.top.tab.open(config); } else { /* var config = { width: "800px", height: "500px", text: "附件预览", url: "../tool/popup_file_pdf.html", data: row, delta: {}, callback: function(obj, callback) { if (callback) { callback(); } } }; */ this.doPopup(config); } } }, getData: function(page) { this.pagesize = page.pagesize; this.pagenum = page.pagenum; this.doQuery(); }, onQuery() { var me = this; if(me.filterFields != undefined && me.filterFields.length > 0) { for(var i=0; i < me.filterFields.length; i++) { let fieldObj_ = me.filterFields[i]; me.filterFieldsObj[fieldObj_.field] = fieldObj_; } } this.pagesize = 10; this.pagenum = 0; this.total = 0; me.doQuery(); }, doQuery: function() { let me = this; this.selectedrow = {}; let filter_ = "1=1"; this.filterList = []; for(var k in this.filterObj) { let k_val = this.filterObj[k]; if (k_val && typeof(k_val) == "string") { //去除两端的空格 this.filterObj[k] = k_val = k_val.replace(/(^\s*)|(\s*$)/g, ""); //去除两端的Tab this.filterObj[k] = k_val = k_val.replace(/(^\t*)|(\t*$)/g, ""); } let fieldObj_ = this.filterFieldsObj[k]; let type_ = fieldObj_.type; let field_ = fieldObj_.field; let filteroperator_ = "equal"; if (fieldObj_.filterfield) { field_ = fieldObj_.filterfield } if (fieldObj_.filteroperator) { filteroperator_ = fieldObj_.filteroperator } //传条件数组由后端拼接筛选数据 /* let filterListObj_ = { field: field_, val: k_val, type: filteroperator_ } this.filterList.push(filterListObj_); */ //传条件数据有前端拼接 if (k_val && k_val != "" && k_val.length) { filter_ = getFilterByFilterType(filter_, type_, field_, k_val, filteroperator_, isnull); } } if (Object.keys(this.filterObjBydefault).length) { for(var k in this.filterObjBydefault) { let k_val = this.filterObjBydefault[k]; if(k_val == null || k_val == "null") { filter_ += " and " + k + " is null"; }else { filter_ += " and " + k + " = '" + k_val +"'"; } } } if (this.filterTxt) { filter_ += " and " + this.filterTxt; } let param_ = { dataname: this.dataname, filter: filter_,//this.filterList, orderby: this.orderby, page: { pagepageno: this.pagenum, pageSize: this.pagesize }, //attachMeta: true } me.tableData = []; Server.call("rootfee/" + "root/data/getEntitySet", param_, function(result) { console.log(result); if (result && result.data) { if (result.data.page && result.data.page.recordcount && me.pagenum > 1 && result.data.page.recordcount < (me.pagenum - 1) * me.pagesize) { me.pagenum = 1; me.doQuery(); return; } var data_ = result.data.entityset; me.total = result.data.page ? result.data.page.recordcount : 0; me.tableData = data_; } else { me.total = 0; } }); }, // tableFields_buttons: function(){ // let me = this; // let param_ = { // // dataname: this.dataname // } // Server.call("rootfee/" + "root/data/getEntitySet", param_, function(result) { // console.log(result); // var buttons_ = [ // {name: "修改", code: "update", disabled:false}, // {name: "删除", code: "delete", disabled:true}, // {name: "查看", code: "query", disabled:false}, // ]; // var tableFields_ = me.tableFields; // tableFields_[0].buttons = buttons_; // me.tableFields = tableFields_; // }); // }, editData: function(scope) { var config = new Config(), go = true; if (this.onEditData) { go = this.onEditData.call(this, config, scope); } //3. popup if (go) { if (config.url && config.url.indexOf("http:") == -1) { config.url = "rootfee/" + config.url; } if (config.totab) { // var callback_ = config.callback; var closecallback_ = config.closecallback; // var parames = { // name: config.name, // totab: config.totab, // url: config.url, // sceneCode: config.sceneCode, // data: config.data, // disabled: config.disabled, // opentype: "add", // callback: function(obj, callback) {//var callback_ = config.callback; // if (callback_) { // callback_(obj); // } // if (callback) { // callback(); // } // } // }; Root.popupParames = config; this.tabCardClick(config); } else { this.doPopup(config); } } }, delData: function(row,field,tips) { let me = this; let name_ = "该数据"; if (!this.dataname) { this.$message({ type: 'warning', message: '该事件需指定数据对象' }); return } if (!row.id) { this.$message({ type: 'warning', message: '该事件需存在数据ID' }); return } if (field && row[field]) { name_ = "_" + row[field] + "_" + tips; } this.$confirm('确定删除' + name_ + '吗?', '删除提示', { confirmButtonText: '删除', cancelButtonText: '取消', type: 'warning' }).then(() => { let param = { id: row.id, dataname: me.dataname, } Server.call("rootfee/" + "root/data/deleteEntity", param, function(result) { console.log(result); me.$message({ message: '删除成功', type: 'success' }); me.doQuery(); }); }).catch(() => { me.$message({ type: 'info', message: '已取消删除' }); }); }, //公共的弹窗——上传附件 onPopupByUploadFile() { var me = this; var config = { totab: true, width: "900px", icon: "icon-product", text: "附件上传", id: "popupByUploadFile", url: "../tool/popup_uploadFile.html", data: {}, delta: {}, callback: function(obj, callback) { me.uploadFileAfter(obj); if (callback) { callback(); } } }; this.doPopupByPublic(config); }, } }; config = util.combineObj(config, default_);//config为主,default_是默认 Object.subClass.call(this); config.vue = new InitRootVue(config); return config; } }); FormTabVue = Object.subClass({ init: function(config) { // 国际化 var locale_val_ = h_language; var i18n = null; if (typeof VueI18n === "function" ) { i18n = new VueI18n({ locale: locale_val_, // set locale messages: { zh: zh, // 中文语言包 en: en // 英文语言包 } }) } var default_ = { el: null, i18n: i18n, data: { //如果是多明细的表单,单Tab属性设置 tab_attr: { name: "Tab一", code: "tab1", dataname: "", //接口 dataurl: "root/data/getEntitySet", //查询 filterFields: [], filterFieldsObj: {}, filterObj: {}, isdraggableorder_filter: false, filterfieldClick: {}, orderby: "", filterObjBydefault: {}, filterTxt: "", paramObjBydefault: {}, //表格 tableFields: [], tableFieldsObj: {}, tableData: [], isEditTableData: false, isdraggableorder_table: false, pagesize: 10, pagenum: 1, total: 0, tableHeight: 360, isPagination: false, isHighlightRow: true, isShowIndex: false, iseditfield: false, selectedrow: {}, tablefieldClick: {}, //表单 formAttr: { istitle: false, title: "表单名称", columnnumber: 2, labelwidth: "100px", labelposition: "left",//"left",// right//top size: "mini", border: "0px solid #c6c6c600" }, formFields: [], formData: {}, formfieldClick: {}, //按键 buttons: {} }, //Tab项设置 tabs: [], tabsobj: {}, tabspageobj: {}, //运行Tab项 activeTabName: "", selectTabObj: {}, //参数对象 popupParames: null, dataname: "", table_dataname: "", dataurl: "root/data/getEntity", selectCard: {}, tabObjList: [], tabRangeList: [], activeCollapseName: "1", selectedrow: null,// {}, orderby:"", filterList:[ //注释:type: equal(等于)/in(在多个数据中)/like(模糊)/minval(最小值)/maxval(最大值)/mininclude(最小且包含该值)/maxinclude(最大且包含该值) //{field: "", val: "", type: ""} ], tableHeight: null, filterTxt: "", filterObjBydefault: {}, paramObjBydefault: {}, formloading: false, rowData: {}, formFields: [], editTableButton: { edit: { isshow: false, txt:"编辑" }, del: { isshow: true, txt:"删除" }, save: { isshow: false, txt:"保存" }, }, data_tablename_map: {}, }, watch: { }, methods: { delData(scope, confirm, confirm_callback, cancel_callback) { var me = this; var c_ = { txt: confirm.txt ? confirm.txt : "删除提醒", confirmButtonText: confirm.confirmButtonText ? confirm.confirmButtonText : "删除", cancelButtonText: confirm.cancelButtonText ? confirm.cancelButtonText : "取消", type: confirm.type ? confirm.type : "warning" } this.$confirm(c_.txt, '提示', { confirmButtonText: c_.confirmButtonText, cancelButtonText: c_.cancelButtonText, type: c_.type }).then(() => { if (confirm_callback) { confirm_callback(); } else { Root.message({ type: 'warning', message: '缺少确定后事件' }); } }).catch(() => { if (cancel_callback) { cancel_callback(); } else { Root.message({ type: 'info', message: '已取消删除' }); } }); }, fieldsToFieldsObj() { //字段转换 var formFieldsObj_ = {}; var tableFieldsObj_ = {}; this.formFieldsObj_ = {}; this.tableFieldsObj = {}; this.formFields.map(f=>{ if (f.inputtypefilter) { f.type = f.inputtypefilter; } formFieldsObj_[f.field] = f; }); this.formFieldsObj = clone(formFieldsObj_); if (this.tableFields && this.tableFields.length) { var tableFields_ = TreeToArray(this.tableFields, "field"); tableFields_.map(f=>{ tableFieldsObj_[f.field] = f; }); this.tableFieldsObj = clone(tableFieldsObj_); } }, initTabsPage(callback) { var me = this; this.tabsobj = {}; this.tabspageobj = {}; this.tabs.map(t=>{ this.tabsobj[t.code] = t; var tab_attr_ = clone(this.tab_attr); for (var attr in t) { tab_attr_[attr] = t[attr]; } this.tabspageobj[t.code] = clone(tab_attr_); }) if (!this.activeTabName) { this.activeTabName = this.tabs[0].code; } this.selectTabObj = this.tabspageobj[this.activeTabName]; if (callback) { callback(); } }, handleClick(tab, event) { this.activeTabName = tab.name; this.selectTabObj = this.tabspageobj[this.activeTabName]; this.onhandleClick(); }, rowClick: function(obj) { // if(this.selectTabObj.selectedrow.id && this.selectTabObj.selectedrow.id == obj.row.id) { // this.selectTabObj.selectedrow = {}; // } // else { this.selectTabObj.selectedrow = obj.row; if (this.onRowClick) { this.onRowClick.call(this, obj); return; } // } }, getRowDataById(id, callback) { var me = this; var attachmeta_ = false; if (!this.formFields || (this.formFields && this.formFields.length == 0)) { attachmeta_ = true; } let param_ = { dataname: this.dataname, attachMeta: attachmeta_ } if (id) { param_.id = id; } else { param_.filter = "1<>1"; } if (!attachmeta_ && !id) { return } me.formloading = true; Server.call("rootfee/" + me.dataurl, param_, function(result) { console.log(result); me.formloading = false; if (result && result.meta) { me.data_tablename_map = result.meta } if (result && result.data && result.data) { me.rowData = clone(result.data) } if (callback) { callback(result); } }); }, getRowData(filter, callback) { var me = this; var filter_ = "1=1"; if (filter) { filter_ += " and " + filter; } if (Object.keys(this.filterObjBydefault).length) { for(var k in this.filterObjBydefault) { let k_val = this.filterObjBydefault[k]; if (k_val.indexOf(',') != -1) {//包含英文","用in filter_ += " and " + k + " in ('" + k_val +"')"; } else { filter_ += " and " + k + " ='" + k_val +"'"; } } } if (this.filterTxt) { filter_ += " and " + this.filterTxt; } if (filter_ == "1=1") { filter_ = "1<>1" } var attachmeta_ = false; if (!this.formFields || (this.formFields && this.formFields.length == 0)) { attachmeta_ = true; } let param_ = { dataname: this.dataname, filter: filter_, attachMeta: attachmeta_ } if (Object.keys(this.paramObjBydefault).length) { for(var k in this.paramObjBydefault) { let k_val = this.paramObjBydefault[k]; param_[k] = k_val; } } me.formloading = true; Server.call("rootfee/" + me.dataurl, param_, function(result) { console.log(result); me.formloading = false; if (result && result.meta) { me.data_tablename_map = result.meta } if (result && result.data && result.data) { me.rowData = clone(result.data) } if (callback) { callback(result); } }); }, getFilterData: function(filter, filterObj, filterFieldsObj) { var filter_ = filter ? filter : "1=1"; for(var k in filterObj) { let k_val = filterObj[k]; if (k_val && typeof(k_val) == "string") { //去除两端的空格 filterObj[k] = k_val = k_val.replace(/(^\s*)|(\s*$)/g, ""); //去除两端的Tab filterObj[k] = k_val = k_val.replace(/(^\t*)|(\t*$)/g, ""); } let fieldObj_ = filterFieldsObj[k]; if (!fieldObj_) { continue } let type_ = fieldObj_.type; let valfield_ = fieldObj_.valfield; if (type_ == "popup" && valfield_) { k_val = filterObj[valfield_]; if (!filterObj[valfield_] && filterObj[k]) { k_val = filterObj[k]; } } let field_ = fieldObj_.field; let filteroperator_ = "equal"; let isnull = false; let ornullval_ = fieldObj_.ornullval; if (ornullval_) { var nullvals_ = ornullval_.split(";"); nullvals_.map(v=>{ if (v == k_val) { isnull = true; } }); } if (fieldObj_.filterfield) { field_ = fieldObj_.filterfield } if (fieldObj_.filteroperator) { filteroperator_ = fieldObj_.filteroperator } if (k_val && k_val != "" && k_val.length) { filter_ = getFilterByFilterType(filter_, type_, field_, k_val, filteroperator_, isnull); } } if (Object.keys(this.filterObjBydefault).length) { for(var k in this.filterObjBydefault) { let k_val = this.filterObjBydefault[k]; filter_ += " and " + k + " = '" + k_val +"'"; } } if (this.filterTxt) { filter_ += " and " + this.filterTxt; } return encodeURI(filter_); }, //仅天境项目框架用 tabCardClick(card) { if (card){ var parames = clone(card); parames.totab = true; parames.title = parames.name; /* var parames = { url: card.url, title: card.name, sceneCode: card.sceneCode, data: card.data, delta: card.delta }; */ Root.popupParames = parames; }else { Root.popupParames = {}; } //需要有选中数据才能打开 if (card.openfilter && card.openfilter == 'selectedrow') { if (!this.selectedrow) { this.$message({ message: '请先选中一条数据', type: 'warning' }); return } } if (card.opentype == "showthis") {//本页面内打开 this.page_url = card.url; if (this.selectCard.url) {//若已存在选中card,则replacepage window.top.mainvue.methods.setPageNavigation("showthis_replace", card, window.top.mainvue.data) } else { window.top.mainvue.methods.setPageNavigation("showthis_add", card, window.top.mainvue.data) } this.selectCard = card; } else if (card.opentype == "replacepage") {//替换本页面 window.top.mainvue.methods.setPageNavigation("replace", card, window.top.mainvue.data) } else if (card.opentype == "add") {//新子目录打开 if (this.selectCard.url) {//若已存在选中card,则replacepage window.top.mainvue.methods.setPageNavigation("replace", card, window.top.mainvue.data) } else { window.top.mainvue.methods.setPageNavigation("add", card, window.top.mainvue.data) } } else if (card.opentype == "openpage") {//新浏览器打开 //window.open(); } }, //滚动设置Tab handleScroll(callback) { var me = this; let scrollbarEl = this.$refs.myScrollbar.wrap; scrollbarEl.onscroll=()=>{ if (callback) { callback(scrollbarEl.scrollTop); } for (var ti = me.tabRangeList.length - 1; ti > -1; ti--) { var top_ = me.tabRangeList[ti]; if (scrollbarEl.scrollTop > top_) { me.activeName = me.tabObjList[ti]; return } } return } }, //锚点预设 initScrollbarTab() { var me = this; let scrollbarEl = this.$refs.myScrollbar.wrap; const scrollbar_bottom = scrollbarEl.scrollHeight - scrollbarEl.clientHeight; var tabOffsetTopObj = {}; var tabOffsetTopObjByTab = {}; var tabObjList = []; var tabRangeList = []; this.tabList.map(function(tabobj) { var ref_ = me.$refs[tabobj.code]; var ref_array = Array.isArray(ref_); if (ref_array) { ref_ = ref_[0]; } var offsetTop = ref_.offsetTop; if (ref_.offsetTop > scrollbar_bottom) { offsetTop = scrollbar_bottom; } if (offsetTop > scrollbarEl.clientHeight) { offsetTop = offsetTop - (scrollbarEl.clientHeight/2) } if (!tabOffsetTopObj[offsetTop]) { tabOffsetTopObj[offsetTop] = tabobj.code; tabOffsetTopObjByTab[tabobj.code] = offsetTop; tabRangeList.push(offsetTop); tabObjList.push(tabobj.code); } }) this.tabRangeList = tabRangeList; this.tabObjList = tabObjList; }, getTableHeight(type, ref_container, callback) { var tableHeight = null; var container_height = ref_container.offsetHeight; if (type == "htype0") {// tableHeight = container_height; } else if (type == "htype1") {// let pagination_height = 0; if (ref_container.getElementsByClassName('z_table_pagination').length) { pagination_height = ref_container.getElementsByClassName('z_table_pagination')[0].offsetHeight; } tableHeight = container_height - pagination_height; } else if (type == "htype2") {// let title_height = document.getElementsByClassName('v_header').length ? document.getElementsByClassName('v_header')[0].offsetHeight : 0; tableHeight = container_height - title_height; } callback(tableHeight - 10); }, //根据权限设置功能模块 setModularByToken(formButton, tableFields, callback) { var tabs = Root.pageobj.tabs; var buttons = Root.pageobj.buttons; var formButton_ = clone(formButton); var tableFields_ = clone(tableFields); var tablebuttons_list = []; var tablebuttons_obj = {}; if (buttons && buttons.length > 0) { buttons.map(function(obj) { if (obj.name == "insert" && obj.active) { formButton_.add = true; } else if (obj.name == "query" && obj.active) { tablebuttons_obj.query = true; } else if (obj.name == "delete" && obj.active) { tablebuttons_obj.delete = true; formButton_.delete = true; } else if (obj.name == "edit" && obj.active) { tablebuttons_obj.update = true; } }) for (var button_name in tablebuttons_obj) { if (button_name == "query") { tablebuttons_list.push({name: "查看", code: "query"}); } else if (button_name == "delete") { tablebuttons_list.push({name: "删除", code: "delete"}); } else if (button_name == "update") { tablebuttons_list.push({name: "修改", code: "update"}); } } } tableFields_.map(function(fieldobj) { if (fieldobj.issystem && tablebuttons_list.length > 0) { fieldobj.isshow = "T"; fieldobj.buttons = tablebuttons_list; } }) callback(formButton_, tableFields_) }, addData: function() { //2. get config and go var config = new Config(), go = true; if (this.onAddData) { go = this.onAddData.call(this, config); } //3. popup if (go) { config.title = clone(config.text); config.operationtype = clone(this.operationtype); if (config.url && config.url.indexOf("http:") == -1) { config.url = "rootfee/" + config.url; } if (config.totab) { var callback_ = config.callback; var closecallback_ = config.closecallback; var parames = { totab: true,//config.totab, url: config.url, title: config.title,//config.title = clone(config.text); sceneCode: config.sceneCode, data: config.data, delta: config.delta, disabled: config.disabled, disabledone: config.disabledone, operationtype: "add", parentOption: window.top.tab.selected.option, closecallback: function() { if (closecallback_) { closecallback_(); } }, callback: function(obj, callback) {//var callback_ = config.callback; if (callback_) { callback_(obj); } if (callback) { callback(); } } }; Root.popupParames = parames; window.top.tab.open(config); } else { /* var config = { width: "800px", height: "500px", text: "附件预览", url: "../tool/popup_file_pdf.html", data: row, delta: {}, callback: function(obj, callback) { if (callback) { callback(); } } }; */ this.doPopup(config); } } }, getData: function(page) { this.pagesize = page.pagesize; this.pagenum = page.pagenum; this.doQuery(); }, onQuery() { var me = this; if(me.filterFields != undefined && me.filterFields.length > 0) { for(var i=0; i < me.filterFields.length; i++) { let fieldObj_ = me.filterFields[i]; me.filterFieldsObj[fieldObj_.field] = fieldObj_; } } this.pagesize = 10; this.pagenum = 0; this.total = 0; me.doQuery(); }, doQuery: function() { let me = this; this.selectedrow = {}; let filter_ = "1=1"; this.filterList = []; for(var k in this.filterObj) { let k_val = this.filterObj[k]; if (k_val && typeof(k_val) == "string") { //去除两端的空格 this.filterObj[k] = k_val = k_val.replace(/(^\s*)|(\s*$)/g, ""); //去除两端的Tab this.filterObj[k] = k_val = k_val.replace(/(^\t*)|(\t*$)/g, ""); } let fieldObj_ = this.filterFieldsObj[k]; let type_ = fieldObj_.type; let field_ = fieldObj_.field; let filteroperator_ = "equal"; if (fieldObj_.filterfield) { field_ = fieldObj_.filterfield } if (fieldObj_.filteroperator) { filteroperator_ = fieldObj_.filteroperator } //传条件数组由后端拼接筛选数据 /* let filterListObj_ = { field: field_, val: k_val, type: filteroperator_ } this.filterList.push(filterListObj_); */ //传条件数据有前端拼接 if (k_val && k_val != "" && k_val.length) { filter_ = getFilterByFilterType(filter_, type_, field_, k_val, filteroperator_, isnull); } } if (Object.keys(this.filterObjBydefault).length) { for(var k in this.filterObjBydefault) { let k_val = this.filterObjBydefault[k]; if(k_val == null || k_val == "null") { filter_ += " and " + k + " is null"; }else { filter_ += " and " + k + " = '" + k_val +"'"; } } } if (this.filterTxt) { filter_ += " and " + this.filterTxt; } let param_ = { dataname: this.dataname, filter: filter_,//this.filterList, orderby: this.orderby, page: { pagepageno: this.pagenum, pageSize: this.pagesize }, //attachMeta: true } me.tableData = []; Server.call("rootfee/" + "root/data/getEntitySet", param_, function(result) { console.log(result); if (result && result.data) { if (result.data.page && result.data.page.recordcount && me.pagenum > 1 && result.data.page.recordcount < (me.pagenum - 1) * me.pagesize) { me.pagenum = 1; me.doQuery(); return; } var data_ = result.data.entityset; me.total = result.data.page ? result.data.page.recordcount : 0; me.tableData = data_; } else { me.total = 0; } }); }, // tableFields_buttons: function(){ // let me = this; // let param_ = { // // dataname: this.dataname // } // Server.call("rootfee/" + "root/data/getEntitySet", param_, function(result) { // console.log(result); // var buttons_ = [ // {name: "修改", code: "update", disabled:false}, // {name: "删除", code: "delete", disabled:true}, // {name: "查看", code: "query", disabled:false}, // ]; // var tableFields_ = me.tableFields; // tableFields_[0].buttons = buttons_; // me.tableFields = tableFields_; // }); // }, editData: function(scope) { var config = new Config(), go = true; if (this.onEditData) { go = this.onEditData.call(this, config, scope); } //3. popup if (go) { if (config.url && config.url.indexOf("http:") == -1) { config.url = "rootfee/" + config.url; } if (config.totab) { // var callback_ = config.callback; var closecallback_ = config.closecallback; // var parames = { // name: config.name, // totab: config.totab, // url: config.url, // sceneCode: config.sceneCode, // data: config.data, // disabled: config.disabled, // opentype: "add", // callback: function(obj, callback) {//var callback_ = config.callback; // if (callback_) { // callback_(obj); // } // if (callback) { // callback(); // } // } // }; Root.popupParames = config; this.tabCardClick(config); } else { this.doPopup(config); } } }, delData: function(row,field,tips) { let me = this; let name_ = "该数据"; if (!this.dataname) { this.$message({ type: 'warning', message: '该事件需指定数据对象' }); return } if (!row.id) { this.$message({ type: 'warning', message: '该事件需存在数据ID' }); return } if (field && row[field]) { name_ = "_" + row[field] + "_" + tips; } this.$confirm('确定删除' + name_ + '吗?', '删除提示', { confirmButtonText: '删除', cancelButtonText: '取消', type: 'warning' }).then(() => { let param = { id: row.id, dataname: me.dataname, } Server.call("rootfee/" + "root/data/deleteEntity", param, function(result) { console.log(result); me.$message({ message: '删除成功', type: 'success' }); me.doQuery(); }); }).catch(() => { me.$message({ type: 'info', message: '已取消删除' }); }); }, //公共的弹窗——上传附件 onPopupByUploadFile() { var me = this; var config = { totab: true, width: "900px", icon: "icon-product", text: "附件上传", id: "popupByUploadFile", url: "../tool/popup_uploadFile.html", data: {}, delta: {}, callback: function(obj, callback) { me.uploadFileAfter(obj); if (callback) { callback(); } } }; this.doPopupByPublic(config); }, } }; config = util.combineObj(config, default_);//config为主,default_是默认 Object.subClass.call(this); config.vue = new InitRootVue(config); return config; } }); //通用界面模板(包含通用业务的模板) BasicsVue = Object.subClass({ init: function(config) { // 国际化 var locale_val_ = h_language; var i18n = null; if (typeof VueI18n === "function" ) { i18n = new VueI18n({ locale: locale_val_, // set locale messages: { zh: zh, // 中文语言包 en: en // 英文语言包 } }) } var default_ = { el: null, i18n: i18n, data: { //参数对象 popupParames: null, selectCard: {}, tabObjList: [], tabRangeList: [], activeCollapseName: "1", selectedrow: null,// {}, orderby:"", filterList:[ //注释:type: equal(等于)/in(在多个数据中)/like(模糊)/minval(最小值)/maxval(最大值)/mininclude(最小且包含该值)/maxinclude(最大且包含该值) //{field: "", val: "", type: ""} ], tableHeight: null, filterTxt: "", filterObjBydefault: {}, paramObjBydefault: {}, formloading: false, rowData: {}, formFields: [], editTableButton: { edit: { isshow: false, txt:"编辑" }, del: { isshow: true, txt:"删除" }, save: { isshow: false, txt:"保存" }, }, data_tablename_map: {}, }, watch: { }, methods: { delData(scope, confirm, confirm_callback, cancel_callback) { var me = this; var c_ = { txt: confirm.txt ? confirm.txt : "删除提醒", confirmButtonText: confirm.confirmButtonText ? confirm.confirmButtonText : "删除", cancelButtonText: confirm.cancelButtonText ? confirm.cancelButtonText : "取消", type: confirm.type ? confirm.type : "warning" } this.$confirm(c_.txt, '提示', { confirmButtonText: c_.confirmButtonText, cancelButtonText: c_.cancelButtonText, type: c_.type }).then(() => { if (confirm_callback) { confirm_callback(); } else { Root.message({ type: 'warning', message: '缺少确定后事件' }); } }).catch(() => { if (cancel_callback) { cancel_callback(); } else { Root.message({ type: 'info', message: '已取消删除' }); } }); }, fieldsToFieldsObj() { //字段转换 var formFieldsObj_ = {}; var tableFieldsObj_ = {}; this.formFieldsObj_ = {}; this.tableFieldsObj = {}; this.formFields.map(f=>{ if (f.inputtypefilter) { f.type = f.inputtypefilter; } formFieldsObj_[f.field] = f; }); this.formFieldsObj = clone(formFieldsObj_); if (this.tableFields && this.tableFields.length) { var tableFields_ = TreeToArray(this.tableFields, "field"); tableFields_.map(f=>{ tableFieldsObj_[f.field] = f; }); this.tableFieldsObj = clone(tableFieldsObj_); } }, getRowDataById(id, callback) { var me = this; var attachmeta_ = false; if (!this.formFields || (this.formFields && this.formFields.length == 0)) { attachmeta_ = true; } let param_ = { dataname: this.dataname, attachMeta: attachmeta_ } if (id) { param_.id = id; } else { param_.filter = "1<>1"; } if (!attachmeta_ && !id) { return } me.formloading = true; Server.call("rootfee/" + "root/data/getEntity", param_, function(result) { console.log(result); me.formloading = false; if (result && result.meta) { me.data_tablename_map = result.meta } if (result && result.data && result.data) { me.rowData = clone(result.data) } if (callback) { callback(result); } }); }, getRowData(filter, callback) { var me = this; var filter_ = "1=1"; if (filter) { filter_ += " and " + filter; } if (Object.keys(this.filterObjBydefault).length) { for(var k in this.filterObjBydefault) { let k_val = this.filterObjBydefault[k]; if (k_val.indexOf(',') != -1) {//包含英文","用in filter_ += " and " + k + " in ('" + k_val +"')"; } else { filter_ += " and " + k + " ='" + k_val +"'"; } } } if (this.filterTxt) { filter_ += " and " + this.filterTxt; } if (filter_ == "1=1") { filter_ = "1<>1" } let param_ = { dataname: this.dataname, filter: filter_, // attachMeta: true } if (Object.keys(this.paramObjBydefault).length) { for(var k in this.paramObjBydefault) { let k_val = this.paramObjBydefault[k]; param_[k] = k_val; } } me.formloading = true; Server.call("rootfee/" + "root/data/getEntity", param_, function(result) { console.log(result); me.formloading = false; if (result && result.meta) { me.data_tablename_map = result.meta } if (result && result.data && result.data) { me.rowData = clone(result.data) } if (callback) { callback(result); } }); }, getFilterData: function(filter, filterObj, filterFieldsObj) { var filter_ = filter ? filter : "1=1"; for(var k in filterObj) { let k_val = filterObj[k]; if (k_val && typeof(k_val) == "string") { //去除两端的空格 filterObj[k] = k_val = k_val.replace(/(^\s*)|(\s*$)/g, ""); //去除两端的Tab filterObj[k] = k_val = k_val.replace(/(^\t*)|(\t*$)/g, ""); } let fieldObj_ = filterFieldsObj[k]; if (!fieldObj_) { continue } let type_ = fieldObj_.type; let valfield_ = fieldObj_.valfield; if (type_ == "popup" && valfield_) { k_val = filterObj[valfield_]; if (!filterObj[valfield_] && filterObj[k]) { k_val = filterObj[k]; } } let field_ = fieldObj_.field; let filteroperator_ = "equal"; let isnull = false; let ornullval_ = fieldObj_.ornullval; if (ornullval_) { var nullvals_ = ornullval_.split(";"); nullvals_.map(v=>{ if (v == k_val) { isnull = true; } }); } if (fieldObj_.filterfield) { field_ = fieldObj_.filterfield } if (fieldObj_.filteroperator) { filteroperator_ = fieldObj_.filteroperator } if (k_val && k_val != "" && k_val.length) { filter_ = getFilterByFilterType(filter_, type_, field_, k_val, filteroperator_, isnull); } } if (Object.keys(this.filterObjBydefault).length) { for(var k in this.filterObjBydefault) { let k_val = this.filterObjBydefault[k]; filter_ += " and " + k + " = '" + k_val +"'"; } } if (this.filterTxt) { filter_ += " and " + this.filterTxt; } return encodeURI(filter_); }, //仅天境项目框架用 tabCardClick(card) { if (card){ var parames = clone(card); parames.totab = true; parames.title = parames.name; /* var parames = { url: card.url, title: card.name, sceneCode: card.sceneCode, data: card.data, delta: card.delta }; */ Root.popupParames = parames; }else { Root.popupParames = {}; } //需要有选中数据才能打开 if (card.openfilter && card.openfilter == 'selectedrow') { if (!this.selectedrow) { this.$message({ message: '请先选中一条数据', type: 'warning' }); return } } if (card.opentype == "showthis") {//本页面内打开 this.page_url = card.url; if (this.selectCard.url) {//若已存在选中card,则replacepage window.top.mainvue.methods.setPageNavigation("showthis_replace", card, window.top.mainvue.data) } else { window.top.mainvue.methods.setPageNavigation("showthis_add", card, window.top.mainvue.data) } this.selectCard = card; } else if (card.opentype == "replacepage") {//替换本页面 window.top.mainvue.methods.setPageNavigation("replace", card, window.top.mainvue.data) } else if (card.opentype == "add") {//新子目录打开 if (this.selectCard.url) {//若已存在选中card,则replacepage window.top.mainvue.methods.setPageNavigation("replace", card, window.top.mainvue.data) } else { window.top.mainvue.methods.setPageNavigation("add", card, window.top.mainvue.data) } } else if (card.opentype == "openpage") {//新浏览器打开 //window.open(); } }, //滚动设置Tab handleScroll(callback) { var me = this; let scrollbarEl = this.$refs.myScrollbar.wrap; scrollbarEl.onscroll=()=>{ if (callback) { callback(scrollbarEl.scrollTop); } for (var ti = me.tabRangeList.length - 1; ti > -1; ti--) { var top_ = me.tabRangeList[ti]; if (scrollbarEl.scrollTop > top_) { me.activeName = me.tabObjList[ti]; return } } return } }, //锚点预设 initScrollbarTab() { var me = this; let scrollbarEl = this.$refs.myScrollbar.wrap; const scrollbar_bottom = scrollbarEl.scrollHeight - scrollbarEl.clientHeight; var tabOffsetTopObj = {}; var tabOffsetTopObjByTab = {}; var tabObjList = []; var tabRangeList = []; this.tabList.map(function(tabobj) { var ref_ = me.$refs[tabobj.code]; var ref_array = Array.isArray(ref_); if (ref_array) { ref_ = ref_[0]; } var offsetTop = ref_.offsetTop; if (ref_.offsetTop > scrollbar_bottom) { offsetTop = scrollbar_bottom; } if (offsetTop > scrollbarEl.clientHeight) { offsetTop = offsetTop - (scrollbarEl.clientHeight/2) } if (!tabOffsetTopObj[offsetTop]) { tabOffsetTopObj[offsetTop] = tabobj.code; tabOffsetTopObjByTab[tabobj.code] = offsetTop; tabRangeList.push(offsetTop); tabObjList.push(tabobj.code); } }) this.tabRangeList = tabRangeList; this.tabObjList = tabObjList; }, getTableHeight(type, ref_container, callback) { var tableHeight = null; var container_height = ref_container.offsetHeight; if (type == "htype0") {// tableHeight = container_height; } else if (type == "htype1") {// let pagination_height = 0; if (ref_container.getElementsByClassName('z_table_pagination').length) { pagination_height = ref_container.getElementsByClassName('z_table_pagination')[0].offsetHeight; } tableHeight = container_height - pagination_height; } else if (type == "htype2") {// let title_height = document.getElementsByClassName('v_header').length ? document.getElementsByClassName('v_header')[0].offsetHeight : 0; tableHeight = container_height - title_height; } callback(tableHeight - 10); }, //根据权限设置功能模块 setModularByToken(formButton, tableFields, callback) { var tabs = Root.pageobj.tabs; var buttons = Root.pageobj.buttons; var formButton_ = clone(formButton); var tableFields_ = clone(tableFields); var tablebuttons_list = []; var tablebuttons_obj = {}; if (buttons && buttons.length > 0) { buttons.map(function(obj) { if (obj.name == "insert" && obj.active) { formButton_.add = true; } else if (obj.name == "query" && obj.active) { tablebuttons_obj.query = true; } else if (obj.name == "delete" && obj.active) { tablebuttons_obj.delete = true; formButton_.delete = true; } else if (obj.name == "edit" && obj.active) { tablebuttons_obj.update = true; } }) for (var button_name in tablebuttons_obj) { if (button_name == "query") { tablebuttons_list.push({name: "查看", code: "query"}); } else if (button_name == "delete") { tablebuttons_list.push({name: "删除", code: "delete"}); } else if (button_name == "update") { tablebuttons_list.push({name: "修改", code: "update"}); } } } tableFields_.map(function(fieldobj) { if (fieldobj.issystem && tablebuttons_list.length > 0) { fieldobj.isshow = "T"; fieldobj.buttons = tablebuttons_list; } }) callback(formButton_, tableFields_) }, addData: function() { //2. get config and go var config = new Config(), go = true; if (this.onAddData) { go = this.onAddData.call(this, config); } //3. popup if (go) { config.title = clone(config.text); config.operationtype = clone(this.operationtype); if (config.url && config.url.indexOf("http:") == -1) { config.url = "rootfee/" + config.url; } if (config.totab) { var callback_ = config.callback; var closecallback_ = config.closecallback; var parames = { totab: true,//config.totab, url: config.url, title: config.title,//config.title = clone(config.text); sceneCode: config.sceneCode, data: config.data, delta: config.delta, disabled: config.disabled, disabledone: config.disabledone, operationtype: "add", parentOption: window.top.tab.selected.option, closecallback: function() { if (closecallback_) { closecallback_(); } }, callback: function(obj, callback) {//var callback_ = config.callback; if (callback_) { callback_(obj); } if (callback) { callback(); } } }; Root.popupParames = parames; window.top.tab.open(config); } else { /* var config = { width: "800px", height: "500px", text: "附件预览", url: "../tool/popup_file_pdf.html", data: row, delta: {}, callback: function(obj, callback) { if (callback) { callback(); } } }; */ this.doPopup(config); } } }, getData: function(page) { this.pagesize = page.pagesize; this.pagenum = page.pagenum; this.selectedrow = {}; this.doQuery(); }, onQuery() { var me = this; if(me.filterFields != undefined && me.filterFields.length > 0) { for(var i=0; i < me.filterFields.length; i++) { let fieldObj_ = me.filterFields[i]; me.filterFieldsObj[fieldObj_.field] = fieldObj_; } } this.pagesize = 10; this.pagenum = 0; this.total = 0; me.doQuery(); }, doQuery: function() { let me = this; this.selectedrow = {}; let filter_ = "1=1"; this.filterList = []; for(var k in this.filterObj) { let k_val = this.filterObj[k]; if (k_val && typeof(k_val) == "string") { //去除两端的空格 this.filterObj[k] = k_val = k_val.replace(/(^\s*)|(\s*$)/g, ""); //去除两端的Tab this.filterObj[k] = k_val = k_val.replace(/(^\t*)|(\t*$)/g, ""); } let fieldObj_ = this.filterFieldsObj[k]; let type_ = fieldObj_.type; let field_ = fieldObj_.field; let filteroperator_ = "equal"; if (fieldObj_.filterfield) { field_ = fieldObj_.filterfield } if (fieldObj_.filteroperator) { filteroperator_ = fieldObj_.filteroperator } //传条件数组由后端拼接筛选数据 /* let filterListObj_ = { field: field_, val: k_val, type: filteroperator_ } this.filterList.push(filterListObj_); */ //传条件数据有前端拼接 if (k_val && k_val != "" && k_val.length) { filter_ = getFilterByFilterType(filter_, type_, field_, k_val, filteroperator_, isnull); } } if (Object.keys(this.filterObjBydefault).length) { for(var k in this.filterObjBydefault) { let k_val = this.filterObjBydefault[k]; if(k_val == null || k_val == "null") { filter_ += " and " + k + " is null"; }else { filter_ += " and " + k + " = '" + k_val +"'"; } } } if (this.filterTxt) { filter_ += " and " + this.filterTxt; } let param_ = { dataname: this.dataname, filter: filter_,//this.filterList, orderby: this.orderby, page: { pagepageno: this.pagenum, pageSize: this.pagesize }, //attachMeta: true } me.tableData = []; Server.call("rootfee/" + "root/data/getEntitySet", param_, function(result) { console.log(result); if (result && result.data) { if (result.data.page && result.data.page.recordcount && me.pagenum > 1 && result.data.page.recordcount < (me.pagenum - 1) * me.pagesize) { me.pagenum = 1; me.doQuery(); return; } var data_ = result.data.entityset; me.total = result.data.page ? result.data.page.recordcount : 0; me.tableData = data_; } else { me.total = 0; } }); }, // tableFields_buttons: function(){ // let me = this; // let param_ = { // // dataname: this.dataname // } // Server.call("rootfee/" + "root/data/getEntitySet", param_, function(result) { // console.log(result); // var buttons_ = [ // {name: "修改", code: "update", disabled:false}, // {name: "删除", code: "delete", disabled:true}, // {name: "查看", code: "query", disabled:false}, // ]; // var tableFields_ = me.tableFields; // tableFields_[0].buttons = buttons_; // me.tableFields = tableFields_; // }); // }, editData: function(scope) { var config = new Config(), go = true; if (this.onEditData) { go = this.onEditData.call(this, config, scope); } //3. popup if (go) { if (config.url && config.url.indexOf("http:") == -1) { config.url = "rootfee/" + config.url; } if (config.totab) { // var callback_ = config.callback; // var closecallback_ = config.closecallback; // var parames = { // name: config.name, // totab: config.totab, // url: config.url, // sceneCode: config.sceneCode, // data: config.data, // disabled: config.disabled, // opentype: "add", // callback: function(obj, callback) {//var callback_ = config.callback; // if (callback_) { // callback_(obj); // } // if (callback) { // callback(); // } // } // }; Root.popupParames = config; this.tabCardClick(config); } else { this.doPopup(config); } } }, delData: function(row,field,tips) { let me = this; let name_ = "该数据"; if (!this.dataname) { this.$message({ type: 'warning', message: '该事件需指定数据对象' }); return } if (!row.id) { this.$message({ type: 'warning', message: '该事件需存在数据ID' }); return } if (field && row[field]) { name_ = "_" + row[field] + "_" + tips; } this.$confirm('确定删除' + name_ + '吗?', '删除提示', { confirmButtonText: '删除', cancelButtonText: '取消', type: 'warning' }).then(() => { let param = { id: row.id, dataname: me.dataname, } Server.call("rootfee/" + "root/data/deleteEntity", param, function(result) { console.log(result); me.$message({ message: '删除成功', type: 'success' }); me.doQuery(); }); }).catch(() => { me.$message({ type: 'info', message: '已取消删除' }); }); }, //公共的弹窗——上传附件 onPopupByUploadFile() { var me = this; var config = { totab: true, width: "900px", icon: "icon-product", text: "附件上传", id: "popupByUploadFile", url: "../tool/popup_uploadFile.html", data: {}, delta: {}, callback: function(obj, callback) { me.uploadFileAfter(obj); if (callback) { callback(); } } }; this.doPopupByPublic(config); }, } }; config = util.combineObj(config, default_);//config为主,default_是默认 Object.subClass.call(this); config.vue = new InitRootVue(config); return config; } }); //默认配置模板(包含所有不含业务的事件) InitRootVue = Object.subClass({ init: function(config) { // 国际化 var locale_val_ = h_language; var i18n = null; if (typeof VueI18n === "function" ) { i18n = new VueI18n({ locale: locale_val_, // set locale messages: { zh: zh, // 中文语言包 en: en // 英文语言包 } }) } var initRootVue = { el: null, i18n: i18n, data: { //弹窗界面参数 popupParames: {}, //pageAttr.heightType:table/page都是为了设置表格的高度。 //table是以表格本身的条数计算高度。 //page是以页面给表格留下的高度为表格高度 pageAttr: { heightType: "page" }, //源数据 pageCode: "demo_tab1", // loading_save: false, loading_submit: false, //预加载 dataRequest: [], dataRequestObj: {}, data_tablename_map: {}, buttonsconfig: buttonsconfig, }, directives: { drag(el){ let oDiv = el; //当前元素 let self = this; //上下文 //禁止选择网页上的文字 document.onselectstart = function() { return false; }; oDiv.onmousedown = function(e){ //鼠标按下,计算当前元素距离可视区的距离 let disX = e.clientX - oDiv.offsetLeft; let disY = e.clientY - oDiv.offsetTop; document.onmousemove = function(e){ //通过事件委托,计算移动的距离 let l = e.clientX - disX; let t = e.clientY - disY; //移动当前元素 oDiv.style.left = l + "px"; oDiv.style.top = t + "px"; } document.onmouseup = function(e){ document.onmousemove = null; document.onmouseup = null; }; //return false不加的话可能导致黏连,就是拖到一个地方时div粘在鼠标上不下来,相当于onmouseup失效 return false; }; } }, watch: { }, methods: { //预加载 loadRequestData(dataRequest, result, callback) { this.doLoadRequestData(dataRequest, result, callback); }, doLoadRequestData(dataRequest, result, callback) { var me = this; if (dataRequest && dataRequest.length) { var item = dataRequest[0]; if (typeof(item) == "string") { result[item] = dataRoot.database[item]; dataRequest.remove(item); me.doLoadRequestData(dataRequest, result, callback); } else { if (item.isClientMode) { result[item.name] = dataRoot.database[item.name]; dataRequest.remove(item); me.doLoadRequestData(dataRequest, result, callback); }else if (item.url) { var params = item.paramsobj || {}; // params.isClientMode = false; Server.call("rootfee/" + item.url, params, function(result_) { console.log(result_); //是字典 if (result_ && result_.dictionary && result_.dictionary.items.length) { result[item.name] = result_.dictionary.items; //不是不是选项 if (!item.isnotoption) { //是选项 result_.dictionary.items.map(e=>{ if (!result.map) { result.map = {}; } if (!result.map[item.name]) { result.map[item.name] = {}; } e.code = e[item.code]; e.value = e[item.label]; result.map[item.name][e[item.code]] = e[item.label]; }) } } else { result[item.name] = result_; } dataRequest.remove(item); me.doLoadRequestData(dataRequest, result, callback); }); } else { var dataname_ = item.name; if (item.dataname) { dataname_ = item.dataname; } var params = { dataname: dataname_, } if(item.filter) { params.filter = item.filter } if(item.orderby) { params.orderby = item.orderby } var event_ = "root/data/getEntitySet"; if (item.url) { event_ = item.url; } Server.call("rootfee/" + event_, params, function(result_) { console.log(result_); if (result_ && result_.data.entityset && result_.data.entityset.length) { result[item.name] = result_.data.entityset; //不是不是选项 if (!item.isnotoption) { //是选项 result_.data.entityset.map(e=>{ if (!result.map) { result.map = {}; } if (!result.map[item.name]) { result.map[item.name] = {}; } e.code = e[item.code]; e.value = e[item.label]; result.map[item.name][e[item.code]] = e[item.label]; }) } } dataRequest.remove(item); me.doLoadRequestData(dataRequest, result, callback); }); } } } else { callback(result); } }, //加载字段By DataName getMetaByDataName(dataname, callback, errorcallback) { var me = this; var param_ = { dataname: dataname, attachMeta: true, } Server.call("rootfee/" + "root/data/getEntitySet", param_, function(result) { callback(result); }, function(result) { if (errorcallback) { errorcallback(result); } }) }, //公用弹窗关闭 docloseDialog(isbuttonclose) { var me = this; if (me.popupParames.totab){ Root.tab.removeItem(Root.tab.selected); Root.tab.open(me.popupParames.parentOption, false); } else { if (isbuttonclose) { Root.hidePopup(this.popupParames.closecallback); } else { Root.hidePopup(); } } }, //公共的弹窗 doPopupByPublic(config) { if (config.url && config.url.indexOf("http:") == -1) { config.url = "rootfee/" + config.url; } if (config.totab) { if (!config.title && config.text) { config.title = clone(config.text); } if (config.url) { if (config.text.length > 4) { config.text = config.text.substr(0, 4) + "..."; } } var callback_ = config.callback; var closecallback_ = config.closecallback; var parames = { totab: config.totab, url: config.url, title: config.title, sceneCode: config.sceneCode, data: config.data, delta: config.delta, disabled: config.disabled, disabledone: config.disabledone, operationtype: config.operationtype, parentOption: window.top.tab.selected.option, filter: config.filter || "", dataname: config.dataname || "", closecallback: function() { if (closecallback_) { closecallback_(); } }, callback: function(obj, callback) { if (callback_) { callback_(obj, callback); } } }; Root.popupParames = parames; window.top.tab.open(config); } else { this.doPopup(config); } }, doPopup(popupObj) { var me = this; var callback_ = popupObj.callback; var closecallback_ = popupObj.closecallback; var width_ = popupObj.width ? popupObj.width : "900px"; var height_ = popupObj.height ? popupObj.height : "450px"; var show_close_ = popupObj.show_close ? popupObj.show_close : false; var parames = { width: width_, height: height_, show_close: show_close_,//弹窗时是否隐藏右上角的“×”关闭符号 text: popupObj.text, title: popupObj.title, url: popupObj.url, sceneCode: popupObj.sceneCode, data: popupObj.data, delta: popupObj.delta, disabled: popupObj.disabled, disabledone: popupObj.disabledone, filter: popupObj.filter || "", dataname: popupObj.dataname || "", closecallback: function() { if (closecallback_) { closecallback_(); } }, callback: function(obj, callback) { if (callback_) { callback_(obj); } if (callback) { callback(); } } }; Root.popupParames = parames; Root.showPopup(parames); }, //附件上传 popupByUploadFile(delta_, callback_) { var me = this; //var analysistype_ = ""; //var delta_ = {filetypelist: []}; //delta_ = {filetypelist: [".png", ".jpg"], analysistype: analysistype_} var config = { totab: false, width: "1500px", icon: "icon-product", text: "附件上传", id: "popupByUploadFile", url: "root/pape/tool/popup_uploadFile.html", data: {}, delta: delta_, callback: function(obj, callback) { if (callback_) { callback_(obj); } if (callback) { callback(); } } }; this.doPopup(config); }, //附件下载 downloadFileByFileid(fileid) { handleDownload(fileid); }, //图片预览 showImgByFileid(file_id) { var me = this; var fileids_ = []; if (!file_id) { Root.message({ type: 'warning', message: '没有附件文件' }); return } if(file_id instanceof Array) { fileids_ = file_id; } else if (file_id instanceof String) { fileids_.push(file_id); } if (fileids_.length == 0) { Root.message({ type: 'warning', message: '没有附件文件' }); return } var row_ = { filetype: "img", fileids: fileids_ }; var config = { totab: false, width: "1500px", icon: "icon-product", text: "附件预览", id: "showImgByFileid" + file_id, url: "root/pape/tool/popup_file.html", data: row_, delta: {}, callback: function(obj, callback) { if (callback_) { callback_(obj); } if (callback) { callback(); } } }; this.doPopup(config); }, //运行SQL (删除/更新数据) runBySQL(sqlname, filter, callback) { var params = { dataname: sqlname, filter: filter } Server.call("rootfee/" + interfaces.procedure, params, function(result) { console.log(result); if(callback) { callback(result); } }); }, //数据加载By dataname,获取多条 getEntitySetByDataname(dataname, data_config, callback) { var page_ = null; /* data_config = { filter: "", orderby: "", pagenum: 1, pagesize: 10 } */ if (!data_config) { data_config = {}; } if (data_config.pagenum && data_config.pagesize) { page_ = { no: data_config.pagenum, pagesize: data_config.pagesize } } var params = { dataname: dataname, filter: data_config.filter ? data_config.filter : null, orderby: data_config.orderby ? data_config.orderby : null, page: page_ } Server.call("rootfee/" + "root/data/getEntitySet", params, function(result) { console.log(result); if(callback) { callback(result); } }); }, //数据加载By dataname,获取单条 getEntityByDataname(dataname, id, callback) { var params = { dataname: dataname, id: id } Server.call("rootfee/" + "root/data/getEntity", params, function(result) { console.log(result); if(callback) { callback(result); } }); }, //数据加载By SQL getEntitySetBySQL(sqlname, sql_config, callback) { var page_ = null; /* sql_config = { filter: "", orderby: "", pagenum: 1, pagesize: 10 } */ if (!sql_config) { sql_config = {}; } if (sql_config.pagenum && sql_config.pagesize) { page_ = { no: sql_config.pagenum, pagesize: sql_config.pagesize } } var params = { dataname: sqlname, filter: sql_config.filter ? sql_config.filter : null, orderby: sql_config.orderby ? sql_config.orderby : null, page: page_, returntype:"EntitySet" } Server.call("rootfee/" + "root/data/procedure", params, function(result) { console.log(result); if(callback) { callback(result); } }); }, //数据添加修改 By dataname,单表数据 saveEntityByDataname(dataname, entity, callback) { var params = { dataname: dataname, entity: entity } Server.call("rootfee/" + "root/data/saveEntity", params, function(result) { console.log(result); if(callback) { callback(result); } }); }, //数据添加修改 By dataname,主从表数据 saveEntityDetailByDataname(dataname, entity, details, callback) { var params = { dataname: dataname, entity: entity, details: details } Server.call("rootfee/" + "root/data/saveEntity", params, function(result) { console.log(result); if(callback) { callback(result); } }); }, //数据修改 By dataname,单表数据,单条数据修改(entity中必须包含数据id) updataEntityByDataname(dataname, entity, callback) { var params = { dataname: dataname, entity: entity } Server.call("rootfee/" + "root/data/updataEntity", params, function(result) { console.log(result); if(callback) { callback(result); } }); }, //数据修改 By SQL,单表数据,根据where条件修改 updataEntityBySQL(tablename, filterfieldvalues, filter, callback) { var params = { dataname: "updateByRaw", tablename: tablename, filterfieldvalues: filterfieldvalues, filter: filter } Server.call("rootfee/" + interfaces.procedure, params, function(result) { console.log(result); if(callback) { callback(result); } }); }, //单条数据删除 By dataname deleteEntityByDataname(dataname, id, callback) { var params = { dataname: dataname, id: id } Server.call("rootfee/" + "root/data/deleteEntity", params, function(result) { console.log(result); if(callback) { callback(result); } }); /* var param_2 = { dataname: 'resource_role', filter: "1=1 and role_id = '" + me.selectRole.id + "'", } Server.call("rootfee/" + "root/data/deleteEntity", param_2, function(result) { console.log(result); if (result && result.data) { me.getRoleAndUser(); } }); */ }, //条件数据删除 By SQL deleteEntitySetBySQL(tablename, filter, callback) { var params = { dataname: "deleteByRaw", tablename: tablename, filter: filter } Server.call("rootfee/" + interfaces.procedure, params, function(result) { console.log(result); if(callback) { callback(result); } }); }, //关闭 弹窗/Tab导航 closeDialog() { var me = this; if (this.popupParames.totab){ Root.tab.removeItem(Root.tab.selected); Root.tab.open(me.popupParames.parentOption, false); } else { Root.hidePopup(); } }, //调回调的关闭 saveAfter(obj) { var me = this; if(this.popupParames.callback) { if (!obj) { let obj = {} } this.popupParames.callback(obj, function() { me.closeDialog(); }); } else { this.closeDialog(); } }, } }; config = util.combineObj(config, initRootVue); Object.subClass.call(this); // 全局注册组件 //Vue.component('vuedraggable', window.vuedraggable) config.vue = new Vue(config); return config; } }); Config = Object.subClass({ init: function(config) { }, combine: function(obj, override) { if (!obj) { return; } override = (override == undefined) ? false : override; for (var name in obj) { if (override || this[name] === undefined) { this[name] = obj[name]; } } } }); Record = Object.subClass({ init: function(config) { this.vue = config; this.raw = {}; this.data = {}; this.prior = {}; this.face = {}; }, setData: function(raw) { this.raw = raw; var data = this.data = {}; var prior = this.prior = {}; var face = this.face = {}; for (var prop in raw) { var fieldMeta = this.getFieldMeta(prop); if (!fieldMeta) { continue; } var value = raw[prop]; data[prop] = value; prior[prop] = value; if (fieldMeta.formatter) { face[prop] = FormatCenter.format(value, fieldMeta.formatter); } else if (fieldMeta.dict) { face[prop] = Dictionary.getLabel(value, fieldMeta.dict); } else { face[prop] = value; } } }, getFace: function() { return this.face; }, getData: function() { return this.data; }, setEditData: function(data) { this.data = data; }, apply: function() { var data = this.data; var face = this.face; for (var prop in data) { var value = data[prop]; if (value == this.prior[prop]) { continue; } this.prior[prop] = value; var fieldMeta = this.getFieldMeta(prop); if (!fieldMeta) { continue; } if (fieldMeta.formatter) { value = FormatCenter.format(value, fieldMeta.formatter); } else if (fieldMeta.dict) { value = Dictionary.getLabel(value, fieldMeta.dict); } face[prop] = value; } }, getChanged: function() { var result = {}, raw = this.raw, data = this.data; for (var prop in data) { if (data[prop] == raw[prop]) { continue; } result[prop] = data[prop]; } if (raw.id && !result.id) { result.id = raw.id; } }, commit: function() { var raw = this.raw, data = this.data, prior = this.prior; for (var prop in data) { raw[prop] = prior[prop] = data[prop]; } }, cancel: function() { this.setData(this.raw); }, getFieldMeta: function(prop) { return this.vue.formFieldsObj[prop]; }, }); //通用事件 function getFilterByFilterType(filter_, type_, field_, k_val, filteroperator_, isnull) { if (type_ == "daterange" && k_val.length) {//期间筛选 // var k_val_a = k_val[0]; var k_val_b = k_val[1]; if (filteroperator_ == "inScope") {//期间之内,不包含两端 filter_ += " and (" + field_ + ">'" + k_val_a + "' and " + field_ + "<'" + k_val_b + "')"; } else if (filteroperator_ == "outScope") {//期间之外,不包含两端 filter_ += " and (" + field_ + "<'" + k_val_a + "' or " + field_ + ">'" + k_val_b + "')"; } else if (filteroperator_ == "inScopeInclude") {//期间之内,包含两端 var k_val_a_ = new Date(k_val_a); var k_val_b_ = new Date(k_val_b); //var preDate = new Date(k_val_a_.getTime() - 24*60*60*1000); //前一天 var nextDate = new Date(k_val_b_.getTime() + 24*60*60*1000); //后一天 //当天的凌晨 k_val_a = dateFormat(k_val_a_, "yyyy-MM-dd") ; //后一天的凌晨 k_val_b = dateFormat(nextDate, "yyyy-MM-dd"); //filter_ += " and ((" + field_ + ">'" + k_val_a + "' and " + field_ + "<'" + k_val_b + "') or (" + field_ + "='" + k_val_a + "' or " + field_ + "='" + k_val_b + "'))"; // filter_ += " and ((" + field_ + ">'" + k_val_a + "' and " + field_ + "<'" + k_val_b + "') or (" + field_ + "='" + k_val_a + "'))"; filter_ += " and (" + field_ + ">='" + k_val_a + "' and " + field_ + "<'" + k_val_b + "')"; } } else if (isnull && type_ != "daterange") { //注释:type: equal(等于)/in(在多个数据中)/like(模糊)/minval(最小值)/maxval(最大值)/mininclude(最小且包含该值)/maxinclude(最大且包含该值) if (filteroperator_ == "like") { filter_ += " and (" + field_ + " like '%" + k_val +"%' or " + field_ + " is null)"; } else if (filteroperator_ == "in") { if (k_val.length > 0) { let k_val_str = ""; k_val.map(v=>{ if (!k_val_str) { k_val_str = v; } else { k_val_str += "','" + v; } }) filter_ += " and (" + field_ + " in ('" + k_val_str +"') or " + field_ + " is null)"; } } else if (filteroperator_ == "minval") { filter_ += " and (" + field_ + " > '" + k_val +"' or " + field_ + " is null)"; } else if (filteroperator_ == "maxval") { filter_ += " and (" + field_ + " < '" + k_val +"' or " + field_ + " is null)"; } else if (filteroperator_ == "mininclude") { filter_ += " and ((" + field_ + " > '" + k_val +"' or " + field_ + " = '" + k_val +"') or " + field_ + " is null)"; } else if (filteroperator_ == "maxinclude") { filter_ += " and ((" + field_ + " < '" + k_val +"' or " + field_ + " = '" + k_val +"') or " + field_ + " is null)"; } else { filter_ += " and (" + field_ + " = '" + k_val +"' or " + field_ + " is null)"; } } else if (type_ != "daterange") { //注释:type: equal(等于)/in(在多个数据中)/like(模糊)/minval(最小值)/maxval(最大值)/mininclude(最小且包含该值)/maxinclude(最大且包含该值) if (filteroperator_ == "like") { filter_ += " and " + field_ + " like '%" + k_val +"%'"; } else if (filteroperator_ == "in") { if (k_val.length > 0) { let k_val_str = ""; k_val.map(v=>{ if (!k_val_str) { k_val_str = v; } else { k_val_str += "','" + v; } }) filter_ += " and " + field_ + " in ('" + k_val_str +"')"; } } else if (filteroperator_ == "minval") { filter_ += " and " + field_ + " > '" + k_val +"'"; } else if (filteroperator_ == "maxval") { filter_ += " and " + field_ + " < '" + k_val +"'"; } else if (filteroperator_ == "mininclude") { // filter_ += " and (" + field_ + " > '" + k_val +"' or " + field_ + " = '" + k_val +"') "; filter_ += " and (" + field_ + " >= '" + k_val +"') "; } else if (filteroperator_ == "maxinclude") { // filter_ += " and (" + field_ + " < '" + k_val +"' or " + field_ + " = '" + k_val +"') "; filter_ += " and (" + field_ + " <= '" + k_val +"') "; } else if (filteroperator_ == "earlywarning") { if (k_val == ">30") { filter_ += " and (" + field_ + " > 30) "; } else if (k_val == ">0") { filter_ += " and (" + field_ + " < 30 and " + field_ + " > 0) "; } else if (k_val == "<0") { filter_ += " and (" + field_ + " < 0 ) "; } } else if (filteroperator_ == "selecttofieldor" ) { var field_2_ = ""; if (k_val.length) { k_val.map(vf=>{ if (!field_2_) { field_2_ = vf + "='T'"; } else { field_2_ += " or " + vf + "='T'"; } }) filter_ += " and (" + field_2_ + ") "; } } else if (filteroperator_ == "cascaderleaf") { filter_ += " and " + field_ + " = '" + k_val[k_val.length-1] +"'"; } else { filter_ += " and " + field_ + " = '" + k_val +"'"; } } return filter_; }; //静态页面加载等待黑色转圈圈 function hideLoading() { document.getElementById('page_root').style.display = "block"; document.getElementById('page_loading').style.display = "none"; }; function uploadFile(vue, formData, callback, error_callback) { uploadAxios.post(baseUrl +'root/io/uploadOneFile?token=' + Root.getToken(), formData).then(data_ => { vue.$message({ showClose: true, message: '上传成功!', type: 'success' }); if (callback) { callback(data_); } }).catch(error => { vue.$message({ showClose: true, message: ':请求出现错误:' + error, type: 'error' }); console.error(error); if (error_callback) { error_callback(error); } }); } /* function uploadFileAnalysis(vue, formData, callback, error_callback) { uploadAxios.post(baseUrl +'client/parseLicense', formData).then(data_ => { vue.$message({ showClose: true, message: '上传成功!', type: 'success' }); if (callback) { callback(data_); } }).catch(error => { vue.$message({ showClose: true, message: ':请求出现错误:' + error, type: 'error' }); console.error(error); if (error_callback) { error_callback(error); } }); } */ function listTOGroup(array_, id, parentId, label) { let parId = ""; let obj = {}; let result = []; if (!id) { id = "id"; } let list = JSON.parse(JSON.stringify(array_)); list.map(el => { obj[el[id]] = el; }) let openId = ""; for (let i = 0, len = list.length; i < len; i++) { let parentId_ = list[i][parentId]; //设置显示字段 list[i].value = list[i][id]; list[i].label = list[i][label]; if (parentId_ == parId || !parentId_) { obj[list[i][id]].children = []; result.push(list[i]); continue; } else if (obj[parentId_]) { if (!obj[parentId_].children) { obj[parentId_].children = []; } obj[parentId_].children.push(list[i]); } } return result; } function listTOListGroup(array_, groupfield, label) { let result = []; let resultval = []; let resultobj = {}; let parentval = " "; if (!label) { label = "groupname"; } let list = JSON.parse(JSON.stringify(array_)); list.map(el => { if (!el[groupfield]) { el[groupfield] = parentval; } }) for (let i = 0, len = list.length; i < len; i++) { let groupval_ = list[i][groupfield]; if (!resultobj[groupval_]) { resultval.push(groupval_); resultobj[groupval_] = [] } resultobj[groupval_].push(list[i]); } resultval.map(v=>{ var l_ = {}; l_[label] = v; l_.children = resultobj[v]; result.push(l_); }) return result; } function listTOtableGroup(array_, groupfield, children) { let result = []; let resultval = []; let resultobj = {}; if (!array_ || array_.length == 0 ) { return result; } if (!groupfield) { groupfield = "table_formgroup_name"; } // let list = JSON.parse(JSON.stringify(array_)); let list = array_; for (let i = 0, len = list.length; i < len; i++) { let groupval_ = list[i][groupfield]; if (!groupval_) { result.push(list[i]); } else { if (!resultobj[groupval_]) { // resultval.push(groupval_); resultobj[groupval_] = []; var f_ = { isshow: "T", field: groupval_, name: groupval_, type: "table_formgroup", width: "200", isminwidth: true } f_[children] = resultobj[groupval_] result.push(f_); } resultobj[groupval_].push(list[i]); } } // resultval.map(v=>{ // var l_ = {}; // l_[label] = v; // l_.children = resultobj[v]; // result.push(l_); // }) return result; } function listGroupToObjByIndex(array_, groupFieldByFilter) { //先按groupFieldByFilter对array_排序 /* array_: 原列表数据 groupFieldByFilter = "name,code,aaa"//合并条件(当合并条件字段的值都相等时才能合并) do_array_: 排序后的新列表数据 group_obj: { //条件的值拼接的字符串: [该组首行的合并行数, 合并列数] namevalcodevalaaaval: [3, 1], } */ var result = {}; var do_array_ = []; var array_group = []; var array_group_obj = {}; var group_obj = {}; if (!array_) { return } let list = JSON.parse(JSON.stringify(array_)); var groupFieldByFilter_list = groupFieldByFilter.split(","); list.map(l=>{ var result_k = ""; groupFieldByFilter_list.map(gf=>{ var g = gf; if (typeof(g) == "string") { g = g.replace(/(^\s*)|(\s*$)/g, ""); } result_k += l[g]; }) if (!array_group_obj[result_k]) { array_group.push(result_k); array_group_obj[result_k] = []; array_group_obj[result_k].push(l); } else { array_group_obj[result_k].push(l); } }) var i_num = 0; array_group.map(ag=>{ var cont_ = array_group_obj[ag].length; group_obj[ag] = []; group_obj[ag][0] = clone(i_num); group_obj[ag][1] = clone(i_num + cont_ - 1); i_num += cont_; array_group_obj[ag].map(ao=>{ do_array_.push(ao) }) }) result = { tabledata: do_array_, spanMethodGroupObj: group_obj } return result; } function parentTree(arr, id) { //arr 所有的树数据 id 某个子节点的id var temp = []; var callback = function (nowArr, id) { //先定义个函数寻找子节点位置 找到后 再找改节点父元素位置 以此类推 for (var i = 0; i < nowArr.length; i++) { var item = nowArr[i]; if (item.id === id) { temp.unshift(item.id); callback(arr, item.parent_id); //pid 父级ID break; } else { if (item.children) { callback(item.children, id); //menus 子节点字段名称 } } } }; callback(arr, id); return temp; //最后返回 } function TreeToArray(tree, id, children) {//id: 唯一标识的字段,children:子元素的字段 var array_ = []; var arrayobj_ = {}; var id_ = "id"; var children_ = "children"; if (id) { id_ = id; } if (children) { children_ = children; } tree.map(t=>{ if (t[id_] && !arrayobj_[t[id_]]) { arrayobj_[t[id_]] = t; array_.push(t); } if (t[children_] && t[children_].length) { doTreeToArray(id_, children_, t[children_], arrayobj_, array_); } }) return array_; //最后返回 } function doTreeToArray(id_, children_, tree, arrayobj_, array_) { tree.map(t=>{ if (t[id_] && !arrayobj_[t[id_]]) { arrayobj_[t[id_]] = t; array_.push(t); } if (t[children_] && t[children_].length) { doTreeToArray(id_, children_, t[children_], arrayobj_, array_); } }) } function list2Options(array_, value, label) { var result = array_.map(function(one) { return { value: one[value], label: one[label] } }); return result; } function clone(obj) { var result, oClass = isClass(obj); //确定result的类型 if (oClass === "Object") { result = {}; } else if (oClass === "Array") { result = []; } else { return obj; } for (var key in obj) { var copy = obj[key]; if (isClass(copy) == "Object") { result[key] = arguments.callee(copy); //递归调用 } else if (isClass(copy) == "Array") { result[key] = arguments.callee(copy); } else { result[key] = obj[key]; } } return result; }; function isClass(o) { if (o === null) return "Null"; if (o === undefined) return "Undefined"; return Object.prototype.toString.call(o).slice(8, -1); } function formatterRate(rate, fixed) { if (!fixed) { fixed = 1; } if (rate == "") { return ""; } if (rate == 0) { return 0; } if (isNaN(rate)) { return 0; } return (rate * 10000 / 100).toFixed(fixed); } function formatters(rate, fixed) { if (!fixed) { fixed = 1; } if (rate == "") { return ""; } if (isNaN(rate)) { return rate; } if (parseInt(rate) == rate) { return rate; } return (rate * 100 / 100).toFixed(fixed); } function sortNumber(a, b) { return a - b } function groupArr(list, field) { var obj = {}; for (var i = 0; i < list.length; i++) { var keys = Object.keys(list[i]); for (var j = 0; j < keys.length; j++) { var item = keys[j] if (item == field) { obj[list[i][item]] = { list: obj[list[i][field]] ? obj[list[i][field]].list : [], type: list[i][field] }; } } obj[list[i][field]].list.push(list[i]) } var att = []; for (item in obj) { att.push({ list: obj[item].list, type: obj[item].type, }) } return att; } function dealExportByBlob(res) { let fileName = decodeURI(res.headers['content-disposition'].split('filename=')[1]) // let fileName = decodeURI(res.headers['content-disposition'].match(/filename=(\S*)(?=(.xls|.xlsx))/)[1]) let blob = new Blob([res.data], { type: 'application/vnd.ms-excel;charset=UTF-8' }) if (window.navigator.msSaveBlob) { // 没有此判断的话,ie11下的导出没有效果 window.navigator.msSaveBlob(blob, fileName) } else { let downloadElement = document.createElement('a') let href = window.URL.createObjectURL(blob) // 创建下载的链接 downloadElement.href = href downloadElement.download = fileName // 下载后文件名 document.body.appendChild(downloadElement) downloadElement.click() // 点击下载 document.body.removeChild(downloadElement) // 下载完成移除元素 window.URL.revokeObjectURL(href) // 释放掉blob对象 } } /* let params = { dataname:"salesOrder", filter:"code like '%D2112280036%' and state = 'Input'and (sap_code = 'Z01' or sap_code = 'Z50' or sap_code = 'Z02')" } */ function textdownloadForm(params) {//post文件流下载 let form = document.createElement('form'); form.id = 'form_download'; form.name = 'form_download'; document.body.appendChild(form); // 循环创建input框 for (let obj in params) { if (params.hasOwnProperty(obj)) { let input = document.createElement('input') input.type = 'hidden' input.name = obj; input.value = params[obj] form.appendChild(input) } }; form.method = 'post'; //请求方式 form.action = window.top.config.url_root + "root/exports/exportExcel?token=" + Root.getToken(); form.submit(); // form表单提交 document.body.removeChild(form); // 移除创建的元素 } function dealExportByPath(fileurl, fileName) { let downloadElement = document.createElement('a') downloadElement.href = fileurl downloadElement.download = fileName // 下载后文件名 document.body.appendChild(downloadElement) downloadElement.click() // 点击下载 document.body.removeChild(downloadElement) // 下载完成移除元素 } function randomData(length, multiple, fixed) { if (!length) { length = 1; } if (!multiple) { multiple = 1; } if (!fixed) { fixed = 0; } if (length == 1) { return getOneRandom(multiple, fixed); } var data = []; for (var i = 0; i < length; i++) { data[i] = getOneRandom(multiple, fixed); } return data; } function getOneRandom(multiple, fixed) { return parseFloat((Math.random() * multiple).toFixed(fixed)); } function uuid(len, radix) { var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); var uuid = [], i; radix = radix || chars.length; if (len) { // Compact form for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix]; } else { // rfc4122, version 4 form var r; // rfc4122 requires these characters uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; uuid[14] = '4'; // Fill in random data. At i==19 set the high bits of clock sequence as // per rfc4122, sec. 4.1.5 for (i = 0; i < 36; i++) { if (!uuid[i]) { r = 0 | Math.random() * 16; uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; } } } return uuid.join(''); } function uuid_short() { return uuid(32); } function isObject(obj) { return Object.prototype.toString.call(obj) === '[object Object]'; } function str2JSON(str) { if(str == ""|| str == undefined) { return null; } return JSON.parse(str); } function getArrDifference(array1, array2) { var result = []; for(var i = 0; i < array2.length; i++){ var obj = array2[i]; var num = obj.id; var isExist = false; for(var j = 0; j < array1.length; j++){ var aj = array1[j]; var n = aj.field_id; if(n == num){ isExist = true; break; } } if(!isExist){ result.push(obj); } } return result; } function groupBy( array , f ) { let groups = {}; array.forEach( function( o ) { let group = JSON.stringify( f(o) ); groups[group] = groups[group] || []; groups[group].push( o ); }); return Object.keys(groups).map( function( group ) { return groups[group]; }); } Array.prototype.contains = function (obj) { var i = this.length; while (i--) { if (this[i] === obj) { return true; } } return false; } function dateformatter(date, type){ if(!type) { type = 0; } if(0 == type) { return dateFormatCommon(date); } if(1 == type) { return dateFormatEn(date); } if(2 == type) { return dateFormatCn(date); } if(-1 == type) { return new Date(Date.parse(date.replace(/-/g, "/"))); } } function dateFormatCommon(date) { var nowdate = new Date(date).toLocaleDateString().replace(/\//g, '-') return nowdate } function dateFormatEn(date) { var nowdate = new Date(date).toLocaleDateString() return nowdate } function dateFormatCn(now) { y = now.getFullYear(), m = ("0" + (now.getMonth() + 1)).slice(-2), d = ("0" + now.getDate()).slice(-2); return y + "-" + m + "-" + d + " " + now.toTimeString().substr(0, 8); } function isAssetTypeAnImage(ext) { return [ 'png', 'jpg', 'jpeg', 'bmp', 'gif', 'webp', 'psd', 'svg', 'tiff']. indexOf(ext.toLowerCase()) !== -1; } function logOut() { window.top.location.href = "login.html"; localStorage.removeItem('user'); localStorage.removeItem('emp'); localStorage.removeItem('menu'); } function quotedStr(val) { return "'" + val + "'"; } function handleDownload(fileId) { var elemIF = document.createElement('iframe') elemIF.src = getDownloadFile(fileId); elemIF.style.display = 'none' document.body.appendChild(elemIF) } function handleDownloadUrl(fileId,isSrc) { var elemIF = document.createElement('iframe') elemIF.src = getDownloadFileUrl_2(fileId,isSrc); elemIF.style.display = 'none' document.body.appendChild(elemIF) } function handleDownloadPath(path) { var elemIF = document.createElement('iframe') elemIF.src = path; elemIF.style.display = 'none' document.body.appendChild(elemIF) } function getDownloadFile(fileId) { // return baseUrl + 'data/downloadFile?id=' + fileId; // var token_ = "111"; // if (localStorage.getItem("token")) { // token_ = localStorage.getItem("token"); // } return baseUrl + 'root/io/download?fileId=' + fileId; } function getDownloadFileUrl_2(fileId, isSrc, callback) {//&isSrc=true则返回路径否则返回流 if(isSrc) { var params = { ajaxtype: "post", fileId: fileId } Server.call("rootfee/" + "root/io/download", params, function(result_) { console.log(result_); if (callback) { callback(result_) } }) //return baseUrl + 'root/file/download?id=' + fileId + "&isSrc=true"; } else { // var token_ = "111"; // if (localStorage.getItem("token")) { // token_ = localStorage.getItem("token"); // } return baseUrl + 'root/io/download?fileId=' + fileId +'&action=saveas'; } } function getDownloadImgURL(fileId, callback) { let param = { id: fileId, dataname: "workorder_file" } Server.call("rootfee/" + "root/data/downloadImgURL/", param, function(result) { console.log(result); callback(result); }); } //image标签得到图片url地址 function getImgURL(fileObjList, ids, callback) { // this.fileObjList = ids.map(oneFileId => { // return { // id: oneFileId, // url: getDownloadImgURL(oneFileId) // } // }) let fileSize = ids.length; let fileList = []; ids.map(oneFileId => { let imgURL = ""; let param = { id: oneFileId, dataname: "workorder_file" } let returnValue = { id: oneFileId, url: "", name: "", size: "" } fileSize -= 1; Server.call("rootfee/" + "root/data/downloadImgURL/", param, function(result) { console.log(result); returnValue.url = result.data.fileurl; returnValue.name = result.data.name || " "; returnValue.size = result.data.size || " "; fileList.push(returnValue); if(fileSize == 0) { callback(fileList); } }); }); } //获取附件url地址 function getFileURL(fileId, callback) { let param = { id: fileId, } Server.call("rootfee/" + "root/data/downloadURL/", param, function(result) { console.log(result); var fileurl_ = result.data.fileurl; var userid = localStorage.getItem("id"); if (!userid) { window.location.href = "../../login.html"; } if (fileurl_.indexOf("?") > 0) { fileurl_ = fileurl_ + "&userId=" + userid; } else { fileurl_ = fileurl_ + "?userId=" + userid; } handleDownloadPath(fileurl_); }); } function toLogin() { window.top.location.href = "../../login.html"; } /// 项目使用 function addNotice(me, to_id, content, callback) { let params = { to_id: to_id, content: content }; let url = "work/push2Msg"; getUrl(me, url, params, result => { if(callback) { callback(result); } }) } Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index > -1) { this.splice(index, 1); } }; function getPageByToken(menuobj, callback) { Root.pageobj = {}; if (menuobj.code) { let me = this; let param_ = { pagename: menuobj.code } Server.call("rootfee/" + "root/front/getPage", param_, function(result) { if (result.page) { Root.pageobj = result.page; } callback(); }); } else { callback(); } }; function getPageByPageId(pageid, callback) { Root.pageobj = {}; let me = this; var pageobj_ = { tabs_r: {}, buttons_r: {} }; if (pageid) { let param_ = { pageId: pageid } Server.call("rootfee/" + "root/client/getPage", param_, function(result) { if (result.data && result.data.page) { Root.pageobj = result.data.page; if (result.data.page.tabs) { result.data.page.tabs.map(t=>{ pageobj_.tabs_r[t.code] = true; }) } if (result.data.page.buttons) { result.data.page.buttons.map(b=>{ pageobj_.buttons_r[b.code] = true; }) } } callback(pageobj_); }); } else { callback(pageobj_); } }; function getDataByFields(formData, formFields) { var dataobj_ = {}; if (formData) { dataobj_ = clone(formData); } formFields.map(fieldobj=>{ var field_ = fieldobj.field; var field_type_ = fieldobj.inputtype || fieldobj.type; if (field_type_ == "numberrange") { if (dataobj_[field_] && dataobj_[field_].length == 2) { if (dataobj_[field_][0] == null) { dataobj_[field_][0] = undefined; } if (dataobj_[field_][1] == null) { dataobj_[field_][1] = undefined; } } } if (typeof (dataobj_[field_]) == 'undefined') { if (field_type_ == "selectmultiple" || field_type_ == "cascader" || field_type_ == "checkboxobj" || field_type_ == "uploadfilelist") { dataobj_[field_] = []; } else if (field_type_ == "switch") { dataobj_[field_] = false; } else if (field_type_ != "number" && field_type_ != "numberrange") { dataobj_[field_] = ""; } else { dataobj_[field_] = null; } } }) return dataobj_; }; function getMainMenuById(menuid) { var menuobj = {}; if (window.top.vue.menusobj[menuid]) { menuobj = window.top.vue.menusobj[menuid]; } return menuobj; }; function getIconfont(iconfont) { var iconfontobj = { map:{}, list: [] }; if (iconfont.glyphs && iconfont.glyphs.length) { var map_ = {}; var list_ = []; iconfont.glyphs.map(i=>{ var i_ = iconfont.font_family + " " + iconfont.css_prefix_text + i.font_class; i.classname = i_; map_[i_] = i; list_.push(i_) }) iconfontobj.map = map_; iconfontobj.list = list_; } return iconfontobj; }; let supplierId = "99008321972863334"; let materialCheckList = [ // '99008321972863325', //成本单价 // '99008321972863326',//成本数量 '99008321972863386',//采购填报单价/参数 '99008321972863330',//本次到货数量 '99008321972863332',//到货单价 '99008321972863329',//本次要料数量 '99008321972863334',//供应商 '99008321972863335',//供应商送货码单号 ]