// 兼容所有浏览器关闭页面方法 function ClosePage() { if (navigator.userAgent.indexOf("MSIE") > 0) { if (navigator.userAgent.indexOf("MSIE 6.0") > 0) { window.opener = null; window.close(); } else { window.open('', '_top'); window.top.close(); } } else if (navigator.userAgent.indexOf("Firefox") > 0) { window.location.href = 'about:blank '; //火狐默认状态非window.open的页面window.close是无效的 //window.history.go(-2); } else { window.opener = null; window.open('', '_self', ''); window.close(); } }; //指定数组,根据指定条件筛选,返回符合条件的数组 function h_query(datalist, filterobj) { let result = []; result = datalist.filter(item => { let bo = true; for(var k in filterobj) { let k_val = filterobj[k]; let bo_ = item[k].toLowerCase().indexOf(k_val.toLowerCase()) > -1; if (!bo_) { return false; } } return bo; }); return result; }; //拼接 GetUrl function SplicingGetUrlToStr(url_, param) { var urlstr = ""; if (url_.indexOf("?") != -1 ) { for (p in param) { url_ += "&" + p + "=" + encodeURI(param[p]); } } else { var url_param = ""; for (p in param) { if (!url_param) { url_param = p + "=" + encodeURI(param[p]); } else { url_param += "&" + p + "=" + encodeURI(param[p]); } } url_ += "?" + url_param; } urlstr = url_; return urlstr; } function setpageHeight(table_el, array_el) { var tableHeight_ = 0; let clientHeight = document.documentElement.clientHeight; let title_height = document.getElementsByClassName('topbar').length ? document.getElementsByClassName('topbar')[0].offsetHeight : 0; let tabs_height = document.getElementsByClassName('el-tabs').length ? document.getElementsByClassName('el-tabs')[0].offsetHeight : 0; let footer_height = document.getElementsByClassName('el-dialog__footer').length ? document.getElementsByClassName('el-dialog__footer')[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 (table_el.getElementsByClassName('z_table_pagination').length) { pagination_height = table_el.getElementsByClassName('z_table_pagination')[0].offsetHeight; } tableHeight_ = clientHeight - title_height - tabs_height - pagination_height - footer_height - header_height - 10; if(array_el && array_el.length) { array_el.map(el=>{ let el_height = el.offsetHeight; tableHeight_ -= el_height; }) } return tableHeight_; }; // function settableHeight(root_el, pagesize) { let tableHeight2_ = 0; let header_height = root_el.getElementsByClassName('el-table__header-wrapper')[0].offsetHeight; var row_height_ = 40; if (root_el.getElementsByClassName('el-table__row')[0] && root_el.getElementsByClassName('el-table__row')[0].offsetHeight) { row_height_ = root_el.getElementsByClassName('el-table__row')[0].offsetHeight + 0.5; } let row_height = row_height_; let body_width = root_el.getElementsByClassName('el-table__body')[0].offsetWidth; let body_wrapper_width = root_el.getElementsByClassName('el-table__body-wrapper')[0].offsetWidth; tableHeight2_ = header_height + (row_height * pagesize) + pagesize/4.5; if ((body_width - body_wrapper_width)>5){ tableHeight2_ += 20; } return tableHeight2_; }; function createCode (code) { var code_ = ""; //日期转为单号 var day = new Date(); var Year = 0; var Month = 0; var Day = 0; Year = day.getFullYear(); Month = day.getMonth() + 1; Day = day.getDate(); code_ += Year; if (Month >= 10) { code_ += Month; } else { code_ += "0" + Month; } if (Day >= 10) { code_ += Day; } else { code_ += "0" + Day; } var random = 0; do random = Math.floor(Math.random()*10000); while( random < 1000 ); if (code) { code_ = code + code_+ random; } return code_; } function createDate () { var aDate = new Date(); var date_ = dateFormat(aDate,"yyyy-MM-dd"); return date_; } function createDatetime () { var aDate = new Date(); var date_ = dateFormat(aDate,"yyyy-MM-dd hh:mm:ss"); return date_; } function createYearByYear () { var aDate = new Date(); var date_ = dateFormat(aDate,"yyyy") * 1; var month_ = dateFormat(aDate,"MM") * 1; var year = ""; if (month_ > 11 ) { year = date_ + 1 } else { year = date_ } return year; } function createYearByQuarter () { var aDate = new Date(); var date_ = dateFormat(aDate,"yyyy") * 1; var month_ = dateFormat(aDate,"MM") * 1; var year = ""; if (month_ > 9 ) { year = date_ + 1 } else { year = date_ } return year; } function createQuarter () { var aDate = new Date(); var date_ = dateFormat(aDate,"MM") * 1; var quarter = ""; if (date_ < 4) { quarter = 2 } else if (date_ < 7) { quarter = 3 } else if (date_ < 10) { quarter = 4 } else { quarter = 1 } return quarter; } function createMonth () { var aDate = new Date(); var date_ = dateFormat(aDate,"MM") * 1; var month = ""; if(date_ > 11) { month = 1 }else { month = date_ + 1 } return month; } /*********** default setting ************/ function getElementDefault(el) { var defaultObj = {}; // 通用设置 if (el.ztypename) { let ztypename = el.ztypename; if (currencyDefault[ztypename]) { let currencyDefaultObj = currencyDefault[ztypename]; for (var key in currencyDefaultObj) { defaultObj[key] = currencyDefaultObj[key]; } } } //自定义模板设置 if (el.zdefault) { let zdefault = el.zdefault; if (ElementDefault[zdefault]) { let ElementDefaultObj = ElementDefault[zdefault]; for (var key in ElementDefaultObj) { defaultObj[key] = ElementDefaultObj[key]; } } } return defaultObj; }; var ElTypes = {//可配置项 button: {//按键 ztypename: String, zdefault: String, small: String, type: String,//default, primary, success size: String, icon: String, nativeType: String, loading: Boolean, disabled: Boolean, plain: Boolean, autofocus: Boolean, round: Boolean, circle: Boolean, }, }; //组件通用设置 var currencyDefault = { ElButton: { size: "mini", type: "primary",//default }, ElInput: { size: "mini", }, ElCascader: { size: "mini", }, ElSelect: { size: "mini", }, ElDatePicker: { size: "mini", }, ElInputNumber: { size: "mini", }, ElAutocomplete: { size: "mini", }, ElAutocompleteSuggestions: { size: "mini", }, }; //自定义模板设置 var ElementDefault = { buttonmould_refresh: { type: "success", icon: "el-icon-refresh" }, buttonmould1: { size: "mini", type: "success", }, buttonmould2: { size: "small", type: "success", }, buttonmould3: { size: "medium", type: "success", } }; //组件的格式化 formatter_json = window.top.formatter_json; dateFormat = window.top.dateFormat; formatter_money = window.top.formatter_money; formatter_TF1 = window.top.formatter_TF1; formatter_TF2 = window.top.formatter_TF2; formatter_Target = window.top.formatter_Target; formatter_CommitState = window.top.formatter_CommitState; formatter_OrderState = window.top.formatter_OrderState; formatter_Grade = window.top.formatter_Grade; formatter_date = window.top.formatter_date; formatter_isreconciliation = window.top.formatter_isreconciliation; formatter_businessline = window.top.formatter_businessline; formatter_matchstatus = window.top.formatter_matchstatus; formatter_OTCorCF = window.top.formatter_OTCorCF; formatter_saletype = window.top.formatter_saletype; formatter_salesBusinessType = window.top.formatter_salesBusinessType; formatter_pass = window.top.formatter_pass; formatter_deliverySended = window.top.formatter_deliverySended; formatter_deliveryStatus = window.top.formatter_deliveryStatus; formatter_invoiceStatus = window.top.formatter_invoiceStatus; formatter_returnType = window.top.formatter_returnType; formatter_businessType = window.top.formatter_businessType; formatter_agreeStatus = window.top.formatter_agreeStatus; formatter_businessStatus = window.top.formatter_businessStatus; formatter_demandProductState = window.top.formatter_demandProductState; formatter_sourceType = window.top.formatter_sourceType; formatter_invoiceType = window.top.formatter_invoiceType; formatter_licenceType = window.top.formatter_licenceType; formatter_produceType = window.top.formatter_produceType; formatter_needType = window.top.formatter_needType; formatter_TagPriceType = window.top.formatter_TagPriceType; formatter_CashType = window.top.formatter_CashType; formatter_RebateType = window.top.formatter_RebateType; formatter_ControlType = window.top.formatter_ControlType; formatter_transType = window.top.formatter_transType; formatter_percentage = window.top.formatter_percentage; formatter_settleType = window.top.formatter_settleType; formatter_gender = window.top.formatter_gender; formatter_rate = window.top.formatter_rate; formatter_Receipt = window.top.formatter_Receipt; formatter_productStatus = window.top.formatter_productStatus; function formatter_Splicing(row, column, cellValue, index) { return row.sku = row.name + row.spec; }; /*********** h-select ************/ Vue.component("h-select", { template: [ '', '
', '', '{{itm.label}}', '', '', '
', '', '
'].join(""), props: { datalist: Array }, data() { return { visible: false, selected: null } }, methods: { fireitemselect(v) { this.selected = v; this.visible = false; this.$emit('itemselect', v); } } }); /*********** h-iconselect ************/ Vue.component("h-iconselect", {//图标点击下拉组件 template: ''+ '
'+ ''+ '{{itm.label}}'+ ''+ ''+ '
'+ ''+ '
', props: { datalist: Array, icon: String }, data() { return { visible: false, } }, methods: { fireitemselect(v) { this.visible = false; this.$emit('itemselect', v); }, } }); /*********** h-table ************/ Vue.component("h-table", {//列表组件1 template: '
'+ ' '+ ' '+ ' '+ // ':header-cell-style="{background:\'#FAFAFA\',color:\'black\',\'text-align\':\'center\'}"> '+ ' '+ ' '+ ' '+ /* ' '+ ' '+ */ ' '+ '
'+ '
'+ ' '+ '
'+ '请添加数据 '+ '
'+ '
'+ '
'+ '
'+ ' '+ '
'+ '
', props: { tableAttr: { type: Object, default: function(){ return {}; } }, isOldContrast: {//是否对比差异isOldContrast//tableDataOld type: Boolean, default: false }, tableDataOld: {//对比差异的历史数据 type: Object, default: function(){ return {}; } }, "layout": {//无数据的图片 type: String, default: "total, sizes, prev, pager, next, jumper" }, "tableFields": Array,//字段 "tableData": Array,//数据 "selectTableData": {//选中的数据 type: Array, default: function(){ return []; } }, "url_img2": {//无数据的图片 type: String, default: "" }, "href": {//无数据的图片 type: String, default: "table1" }, "showSummary": {//是否在表尾显示合计行tableAttr type: Boolean, default: false }, "tableloading": {//多选tableAttr type: Boolean, default: false }, "isSelection": {//多选tableAttr type: Boolean, default: false }, "isShowIndex": {//序号tableAttr type: Boolean, default: false }, "isWithinEditTableData": {//表内编辑 type: Boolean, default: false }, "isEditTableData": {//编辑/删除按键 type: Boolean, default: false }, "isHighlightRow": {//选中高亮tableAttr type: Boolean, default: false }, "isPagination": {//是否显示分页 type: Boolean, default: true }, "editTableButton": {//编辑界面行按键(编辑,删除) type: Object, default: function(){ return { edit: { isshow:true, txt:"编辑" }, del: { isshow:true, txt:"删除" }, save: { isshow:true, txt:"保存" }, } } }, tableHeight: { type: Number, default: 100 }, pagesize: { type: Number, default: 10 }, pagenum: { type: Number, default: 1 }, total: { type: Number, default: 0 }, }, data() { return { zpagesize: this.pagesize, zpagenum: this.pagenum, summaries: [] } }, computed: { isShowTable() { if (this.$refs.ref_notTableData) { this.setNotTableData(); } return this.tableData.length > 0 ? true : true; //false; }, doTableFields() { this.tableFields.map(e=>{ if (e.formatterjson) { e.formatter_f = function(a,b,c,d) { var json_ = e.formatterjson; return formatter_json(a,b,c,d, json_) } } else if (e.formatter) { if (e.formatter == "formatter_money") { e.formatter_f = function(a,b,c,d) {return formatter_money(a,b,c,d)} } else if (e.formatter == "formatter_TF1") { e.formatter_f = function(a,b,c,d) {return formatter_TF1(a,b,c,d)} } else if (e.formatter == "formatter_TF2") { e.formatter_f = function(a,b,c,d) {return formatter_TF2(a,b,c,d)} } else if (e.formatter == "formatter_Target") { e.formatter_f = function(a,b,c,d) {return formatter_Target(a,b,c,d)} } else if(e.formatter == "formatter_CommitState") { e.formatter_f = function(a,b,c,d) {return formatter_CommitState(a,b,c,d)} } else if(e.formatter == "formatter_OrderState") { e.formatter_f = function(a,b,c,d) {return formatter_OrderState(a,b,c,d)} } else if(e.formatter == "formatter_Grade") { e.formatter_f = function(a,b,c,d) {return formatter_Grade(a,b,c,d)} } else if(e.formatter == "formatter_date") { e.formatter_f = function(a,b,c,d) {return formatter_date(a,b,c,d)} } else if(e.formatter == "formatter_Splicing") { e.formatter_f = function(a,b,c,d) {return formatter_Splicing(a,b,c,d)} } else if(e.formatter == "formatter_isreconciliation") { e.formatter_f = function(a,b,c,d) {return formatter_isreconciliation(a,b,c,d)} } else if(e.formatter == "formatter_businessline") { e.formatter_f = function(a,b,c,d) {return formatter_businessline(a,b,c,d)} } else if(e.formatter == "formatter_matchstatus") { e.formatter_f = function(a,b,c,d) {return formatter_matchstatus(a,b,c,d)} } else if(e.formatter == "formatter_OTCorCF") { e.formatter_f = function(a,b,c,d) {return formatter_OTCorCF(a,b,c,d)} } else if(e.formatter == "formatter_saletype") { e.formatter_f = function(a,b,c,d) {return formatter_saletype(a,b,c,d)} } else if(e.formatter == "formatter_salesBusinessType") { e.formatter_f = function(a,b,c,d) {return formatter_salesBusinessType(a,b,c,d)} } else if(e.formatter == "formatter_pass") { e.formatter_f = function(a,b,c,d) {return formatter_pass(a,b,c,d)} } else if(e.formatter == "formatter_deliverySended") { e.formatter_f = function(a,b,c,d) {return formatter_deliverySended(a,b,c,d)} } else if(e.formatter == "formatter_deliveryStatus") { e.formatter_f = function(a,b,c,d) {return formatter_deliveryStatus(a,b,c,d)} } else if(e.formatter == "formatter_invoiceStatus") { e.formatter_f = function(a,b,c,d) {return formatter_invoiceStatus(a,b,c,d)} } else if(e.formatter == "formatter_returnType") { e.formatter_f = function(a,b,c,d) {return formatter_returnType(a,b,c,d)} } else if(e.formatter == "formatter_businessType") { e.formatter_f = function(a,b,c,d) {return formatter_businessType(a,b,c,d)} } else if(e.formatter == "formatter_agreeStatus") { e.formatter_f = function(a,b,c,d) {return formatter_agreeStatus(a,b,c,d)} } else if(e.formatter == "formatter_businessStatus") { e.formatter_f = function(a,b,c,d) {return formatter_businessStatus(a,b,c,d)} } else if(e.formatter == "formatter_gender") { e.formatter_f = function(a,b,c,d) {return formatter_gender(a,b,c,d)} } else if(e.formatter == "formatter_rate") { e.formatter_f = function(a,b,c,d) {return formatter_rate(a,b,c,d)} } else if(e.formatter == "formatter_demandProductState") { e.formatter_f = function(a,b,c,d) {return formatter_demandProductState(a,b,c,d)} } else if(e.formatter == "formatter_sourceType") { e.formatter_f = function(a,b,c,d) {return formatter_sourceType(a,b,c,d)} } else if(e.formatter == "formatter_invoiceType") { e.formatter_f = function(a,b,c,d) {return formatter_invoiceType(a,b,c,d)} } else if(e.formatter == "formatter_licenceType") { e.formatter_f = function(a,b,c,d) {return formatter_licenceType(a,b,c,d)} } else if(e.formatter == "formatter_produceType") { e.formatter_f = function(a,b,c,d) {return formatter_produceType(a,b,c,d)} } else if(e.formatter == "formatter_needType") { e.formatter_f = function(a,b,c,d) {return formatter_needType(a,b,c,d)} } else if(e.formatter == "formatter_TagPriceType") { e.formatter_f = function(a,b,c,d) {return formatter_TagPriceType(a,b,c,d)} } else if(e.formatter == "formatter_CashType") { e.formatter_f = function(a,b,c,d) {return formatter_CashType(a,b,c,d)} } else if(e.formatter == "formatter_RebateType") { e.formatter_f = function(a,b,c,d) {return formatter_RebateType(a,b,c,d)} } else if(e.formatter == "formatter_ControlType") { e.formatter_f = function(a,b,c,d) {return formatter_ControlType(a,b,c,d)} } else if(e.formatter == "formatter_transType") { e.formatter_f = function(a,b,c,d) {return formatter_transType(a,b,c,d)} } else if(e.formatter == "formatter_percentage") { e.formatter_f = function(a,b,c,d) {return formatter_percentage(a,b,c,d)} } else if(e.formatter == "formatter_settleType") { e.formatter_f = function(a,b,c,d) {return formatter_settleType(a,b,c,d)} } else if(e.formatter == "formatter_Receipt") { e.formatter_f = function(a,b,c,d) {return formatter_Receipt(a,b,c,d)} } else if(e.formatter == "formatter_productStatus") { e.formatter_f = function(a,b,c,d) {return formatter_productStatus(a,b,c,d)} } } }) return this.tableFields; } }, mounted() { this.setNotTableData(); }, watch: { selectTableData(newVal, oldVal){ if (this.selectTableData && this.selectTableData.length) { this.toggleSelection(this.selectTableData); } else { this.toggleSelection(); } }, }, methods: { tableRowClassName({row, rowIndex}) { if (row.h_classname) { return row.h_classname; } return ''; }, cellClass(obj) { let field = obj.column.property; let row_ = this.doTableFields.filter(item => { return item.field == field; }); let class_ = ""; //业务上的样式,如:可点击,存在上下限等 if(row_.length > 0 && row_[0].iscellclick) { class_ = "h_cellclick"; } if(row_.length > 0 && (row_[0].maxval || row_[0].minval)) { if((row_[0].maxval && obj.row[field] * 1 > row_[0].maxval * 1) || (row_[0].minval && obj.row[field] * 1 < row_[0].minval * 1)) { class_ += " h_overflowval"; } else class_ += " h_notoverflowval"; } if(row_.length > 0 && row_[0].formatter == "formatter_TF2") { if(obj.row[field] == "T") { class_ += " h_stamp"; } } if (row_.length > 0 && row_[0].iscellclick && !row_[0].isclick) { if(!obj.row[field] || obj.row[field] == "") { class_ += " h_notclick"; } //notclick_val: ["input", "aaa"] if (row_[0].notclick_val && row_[0].notclick_val.length) { var bo_ = false; var val_ = obj.row[field]; row_[0].notclick_val.map(v=>{ if (val_ == v) { bo_ = true; } }); if (bo_) { class_ += " h_notclick"; } } //notclick_bindfield: [{field: "folw_id", val: null},{}] if (row_[0].notclick_bindfield && row_[0].notclick_bindfield.length) { var bo_ = false; row_[0].notclick_bindfield.map(b=>{ var val_ = obj.row[b.field]; if (val_ == b.val) { bo_ = true; } }); if (bo_) { class_ += " h_notclick"; } } } //如果存在自定义的class if(row_.length > 0 && row_[0].cssname) { class_ += " " + row_[0].cssname; } //如果存在差异则背景高亮isOldContrast//tableDataOld if(this.isOldContrast) { var row_n = obj.row; if (this.tableDataOld[row_n.id]) {//如果存在历史数据 var row_o = this.tableDataOld[row_n.id]; if (row_n[field] != row_o[field]) { class_ += "z_contrast_tablecall"; } } } return class_; }, setNotTableData() { var me = this; if (this.tableData.length == 0) { //this.$refs.ref_notTableData.style['height'] = this.tableHeight + "px"; //this.$refs.ref_notTableData.style['min-height'] = this.tableHeight + "px"; //this.$refs.ref_notTableData.style['padding-top'] = (this.tableHeight * 0.3)+"px"; this.$refs.ref_notTableData.style['width'] = "100%"; } else { //设置默认值 this.tableData.map(d=>{ me.tableFields.map(f=>{ //isassignment: 是否默认值替换原值 ,如果有保存会被替换 if (!d[f.field] && f.defaultval && f.isassignment) { //defaultval_filter: 默认值的条件第一层数组的元素是or, 里面的数组元素是and //type: 是条件,如果没有则是等于val值时可替换, "isnull"为空时,"isnotnull" 不为空时 if (f.defaultval_filter) {//:[[{field: "", val: ""},{field: "", val: ""}], [{}]] var defaultval_filter_ = f.defaultval_filter; if (f.defaultval_filter instanceof String) { defaultval_filter_ = JSON.parse(f.defaultval_filter); } defaultval_filter_.map(m=>{ var bo_m = true; m.map(mf=>{ if (!mf.type) { if (d[mf.field] != mf.val) { bo_m = false } } else if (mf.type == "isnull") { if (d[mf.field]) { bo_m = false } } else if (mf.type == "isnotnull") { if (!d[mf.field]) { bo_m = false } } }); if (bo_m) { d[f.field] = f.defaultval } else { //单条设置不显示默认值的字段 if (!d.z_h_notdefaultval) { d.z_h_notdefaultval = {}; } d.z_h_notdefaultval[f.field] = true; } }) } else { d[f.field] = f.defaultval } } }) }); this.$refs.ref_notTableData.style['height'] = "0px"; this.$refs.ref_notTableData.style['min-height'] = "0px"; this.$refs.ref_notTableData.style['padding-top'] = "0px"; this.$refs.ref_notTableData.style['width'] = "0px"; } }, rowClick(row, column, event) { let obj = { row: row, column: column, event: event } this.$emit('row-click', obj); }, headerCellStyle(obj) { var aa = obj; var style_ = { 'background':'#FAFAFA', 'color':'black', 'text-align':'center' } let field = obj.column.property; let row_ = this.doTableFields.filter(item => { return item.field == field; }); if (row_.length && row_[0].headercolor) { style_.background = row_[0].headercolor; } return style_; }, rowDblclick(row, column, event) { let obj = { row: row, column: column, event: event } this.$emit('row-dblclick', obj); }, cellClick(row, column, cell, event) { let obj = { row: row, column: column, cell: cell, event: event } this.$emit('cell-click', obj); }, handleSelectionChange(selection) { this.$emit('selection-change', selection); }, editDataRow(code, scope){ if (code == "edit") { this.$emit('edit-data', scope); } else if (code == "delete") { this.$emit('del-data', scope); } }, cellInputChange(scope) {//row, column, $index 和 store(table 内部的状态管理) let field = scope.column.property; this.$emit('cell-input-change', scope); }, cellSelectChange(scope) { let field = scope.column.property; this.$emit('cell-select-change', scope); }, cellButtonClick(scope) { let field = scope.column.property; this.$emit('cell-button-click', scope); }, querySearch(queryString, cb, scope, tableField) { let field = scope.column.property; var obj = { queryString: queryString, cb: cb, scope: scope } var inputoptions = tableField.inputoptions; var results = queryString ? inputoptions.filter(this.createFilter(queryString)) : inputoptions; cb(results); this.$emit('cell-query-search', obj); }, createFilter(queryString) { return (restaurant) => { return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0); }; }, showpopup(scope) { let field = scope.column.property; this.$emit('cell-show-popup', scope); }, getSummaries(param) { const { columns, data } = param; const sums = []; var sumfields = {}; var issumfields = false; this.tableFields.map(e=>{ if (e.istablesum) { sumfields[e.field] = e; issumfields = true; } }); if (issumfields) { columns.forEach((column, index) => { if (index === 0) { sums[index] = '汇总'; return; } if (sumfields[column.property]) { const values = data.map(item => Number(item[column.property])); if (!values.every(value => isNaN(value))) { sums[index] = values.reduce((prev, curr) => { const value = Number(curr); if (!isNaN(value)) { return prev + curr; } else { return prev; } }, 0); var field = sumfields[column.property]; if (field.formatter && field.formatter=="formatter_money") { sums[index] = formatter_money(null, null, sums[index]); } else { sums[index] += ''; } } else { sums[index] = ''; } } else sums[index] = ''; }); } return sums; }, visibleChange(isshow, obj) {//下拉展开事件 if (isshow) { this.$emit("visible-change", obj); } }, /* remoteMethod(query, obj) { if (query !== '') { this.loading_filterable = true; setTimeout(() => { this.loading_filterable = false; this.options = this.list.filter(item => { return item.label.toLowerCase() .indexOf(query.toLowerCase()) > -1; }); }, 200); } else { this.options = []; } }, */ operate_(row, column, cellValue, index) { if(cellValue === "create") { return "新增数据"; } else if(cellValue === "delete") { return "删除数据"; } else if(cellValue === "update") { return "修改数据"; } else return ""; }, status_(row, column, cellValue, index) { if (cellValue == "working"){ return "正在审批"; } else if(cellValue == "refuse") { return "待修改"; } else if(cellValue == "open") { return "申请成功"; } else if(cellValue == "close") { return "撤销申请"; } return ""; }, toggleSelection(array, iscancelselect) { var ref = this.href; if (iscancelselect && array) { array.forEach(id_ => { this.tableData.map(e=>{ if(id_ == e.id) { this.$refs[ref].toggleRowSelection(e,false); } }); }); } else if (array) { array.forEach(id_ => { this.tableData.map(e=>{ if(id_ == e.id) { this.$refs[ref].toggleRowSelection(e,true); } }); }); } else { this.$refs[ref].clearSelection(); } }, toggleSelectionByRow(row) { var ref = this.href; this.$refs[ref].toggleRowSelection(row,true); }, /* 每页条数变更事件 */ handleSizeChange(val) { this.zpagesize = val; let page = { pagesize: this.zpagesize, pagenum: this.zpagenum } this.$emit('get-data', page); }, /* 页码变更事件*/ handleCurrentChange(val) { this.zpagenum = val; let page = { pagesize: this.zpagesize, pagenum: this.zpagenum } this.$emit('get-data', page); }, } }); /*********** h-form ************/ Vue.component("h-form", {//表单组件1 /* template: '
'+ '
{{formAttr.title}}
'+ ' '+ ' '+ ' '+ ' '+ ' '+ '
'+ ' '+ ' '+ ''+ ''+ ''+ ''+ ' '+ //''+ ''+ ''+ '
'+ ' '+ ''+ '
{{formData[fieldObj.isstamp]}}
'+ '
'+ ' '+ ' '+ ' '+ ' '+ ' '+ '{{formData[fieldObj.field]}} '+ ' '+ ' '+ ' '+ ' '+ ' '+ ' '+ ' '+ ' '+ ''+ '{{formData[fieldObj.field]}}'+ //''+ ' '+ '
'+ '
'+ '
'+ '
'+ '
', */ template: '
'+ '
{{formAttr.title}}
'+ ' '+ ' '+ ' '+ ' '+ ' '+ '
'+ ' '+ ' '+ ''+ ''+ ''+ ' '+ ''+ ''+ ''+ ''+ ''+ ' '+ //''+ ''+ ' '+ //''+ ''+ ''+ ''+ '
可用返利 :'+ '
'+ ''+ '
'+ ' '+ ''+ '
{{formDataFace[fieldObj.isstamp]}}
'+ '
'+ ' '+ ' '+ '{{r.name}} '+ ' '+ ' '+ ' '+ ' '+ ' '+ ' '+ ' '+ ' '+ ' '+ ' {{formDataFace[fieldObj.field]}}'+ //' '+ '
'+ '{{fieldObj.checkbox_text}} '+ ''+ '
{{formDataFace[fieldObj.isstamp]}}
'+ '
'+ ' '+ ' '+ ' '+ ' '+ ' '+ ' '+ ' '+ ' '+ '
'+ '{{formDataData[fieldObj.field]}}'+ '{{formDataData[fieldObj.field]}}'+ '
'+ ' '+ ' '+ ' '+ ' '+ ' '+ ' '+ ' '+ ' '+ ''+ ' '+ '
{{formDataData[fieldObj.field]}}'+ //''+ ' '+ '{{formDataData[fieldObj.field]}}'+ //''+ ' '+ ''+ '{{fieldObj.buttonname}} '+ '
'+ '
'+ '
'+ '
'+ '
', props: { formAttr: Object, tableFields: Array, isOldContrast: {//是否对比差异 type: Boolean, default: false }, formDataOld: {//对比差异的历史数据 type: Object, default: function(){ return {}; } }, isEndColspan: {//是否最后一行自动铺满 type: Boolean, default: true }, formData: Object, "href": {//无数据的图片 type: String, default: "form1" }, disabled: { type: Boolean, default: false }, width: { type: String, default: "100%" }, }, data() { return { isRefresh: true, tableFieldsFormat: [], fromFieldObj: {}, formFieldsObj: {}, record: null, formDataData: {}, formDataFace: {}, } }, computed: { tableFields2() { if(this.formAttr && this.tableFields.length > 0) { this.formLayout(); } } }, watch: { tableFields() { if(this.formAttr && this.tableFields.length > 0) { this.formLayout(); } }, formData() { if(this.formData) { this.formDataRecord(); } } }, mounted() { if(this.formAttr && this.tableFields.length > 0) { this.formLayout(); } }, methods: { formLayout() { //表单布局设置 let columnnumber_ = this.formAttr.columnnumber; let tableFieldsFormat_ = []; let rowObj_ = {}; let children_ = []; let i = 0; let field_i = 0; let tableFields_ = clone(this.tableFields); let formFieldsObj_ = {}; for (var r=0; r columnnumber_) {//如果合并列大于表单设置列数 field_.colspan = columnnumber_; } field_i += field_.colspan ? field_.colspan : 1;//如果有合并列数, 默认为1 if (field_i == columnnumber_) {//列数满一行 children_.push(field_); i = columnnumber_; } else {//不满一行, 看是否存在下一属性, //若有则看已有列数加下一合并列数是否超过设置列数,若超了则自动调整该属性的合并列,使下一属性换行。 //若没有下一属性,则调整该属性合并列 let nxt_r = r + 1; let field_nxt = {}; if(nxt_r < tableFields_.length) { for (var nxt_j = nxt_r; nxt_j < tableFields_.length; nxt_j++) { let field_nxtj = tableFields_[nxt_j]; if(field_nxtj.isshow!="T") { continue; } else { field_nxt = field_nxtj; break } } } if (field_nxt.field) { //let field_nxt = tableFields_[nxt_r]; if(field_nxt.colspan) { let field_i_nxt = field_i + field_nxt.colspan; if (field_i_nxt > columnnumber_) { field_.colspan = columnnumber_ - i; children_.push(field_); i = columnnumber_; } else { children_.push(field_); i++; } } else { children_.push(field_); i++; } } else { if (this.isEndColspan) { field_.colspan = columnnumber_ - i; } children_.push(field_); i = columnnumber_; } } if (i == columnnumber_) {//列数满一行,保留该行属性,新建下一空行 rowObj_.children = children_; tableFieldsFormat_.push(rowObj_); rowObj_ = {}; children_ = []; i = 0; field_i = 0; } } this.tableFieldsFormat = tableFieldsFormat_; this.formDataRecord(); }, formDataRecord() { /* if (this.formAttr && this.formAttr.formatter && this.formData) { this.formAttr.formatter(this.formData, this.tableFields); } */ let me = this; if (this.formData) { this.record = new Record(me); this.record.setData(this.formData); this.formDataData = this.formData;//this.record.getData(); this.rebate_available = this.formData.rebate_available; this.formDataFace = this.record.getFace(); } }, cellFaceClick(fieldObj) { var fromFieldObj_ = clone(this.fromFieldObj); if (fromFieldObj_[fieldObj.field].isEdit){ return; } this.record.setEditData(this.formDataData); this.record.apply(); this.formDataFace = this.record.getFace(); for (var field in fromFieldObj_) { fromFieldObj_[field].isEdit = false; } if (!fieldObj.disabled && !this.disabled && !this.formAttr.disabled) { fromFieldObj_[fieldObj.field].isEdit = true; } this.fromFieldObj = fromFieldObj_; }, refresh() { this.isRefresh = false; this.isRefresh = true; }, showpopup(obj) {//弹窗弹出事件 let val = this.formDataData[obj.field]; let popupObj = { obj: obj, val: val }; this.$emit('show-popup', popupObj); }, formCallClick(obj) {//指定属性值点击事件 let val = this.formDataData[obj.field]; let popupObj = { obj: obj, val: val }; this.$emit('formcall-click', popupObj); }, formCallClickBySpan(obj) {//指定属性值点击事件 let val = this.formDataData[obj.field]; let popupObj = { obj: obj, val: val }; this.$emit('formcallspan-click', popupObj); }, buttonClick(obj) {//按键点击事件 let val = this.formDataData[obj.field]; let popupObj = { obj: obj, val: val }; this.$emit('button-click', popupObj); }, setFormValByField(field, val) { this.formDataData[field] = val; this.isRefresh = false; this.isRefresh = true; }, setFormOptionsByField(fieldobj, result) { let tableFieldsFormat_ = this.tableFieldsFormat; tableFieldsFormat_.map(item => { item.children.map(item2 => { if (item2.field.toLowerCase().indexOf(fieldobj.field.toLowerCase()) > -1) { item2.options = result; } }); }); this.tableFieldsFormat = tableFieldsFormat_; }, visibleChange(isshow, obj) {//下拉展开事件 if (isshow) { //let val = this.formDataData[obj.field]; //let url = obj.dataurl; this.$emit("visible-change", obj); //根据url请求重新获取选择项 /* obj.options = [ {label: "选项1", value:"code1"}, {label: "选项2", value:"code2"}, {label: "选项3", value:"code3"}, {label: "选项4", value:"code4"} ]; */ /* let data = this.formData; let options = url.split("?"); let parendfield = options[1].split("="); let optionslist = dataRoot.database[options[0]]; let result = clone(optionslist); if (obj.selectparent) { let parentval = data[obj.selectparent]; result = optionslist.filter(item => { if (!parentval) { return false; } return item[parendfield[1]].toLowerCase().indexOf(parentval.toLowerCase()) > -1; }); } obj.options = result; */ /* var obj_ = { fieldobj: obj, data: this.formData } this.$emit('visible-change', obj_); */ //obj.options = } }, formchange(val, obj) { if (typeof(val) == "string") { //去除两端的空格 this.formData[obj.field] = val = val.replace(/(^\s*)|(\s*$)/g, ""); //去除中间的回车换行 //this.formData[obj.field] = val = val.replace(/[\r\n]/g,""); } var obj_ = { fieldobj: obj, data: this.formData } this.$emit("form-change", obj_); }, isformcheckboxchange(val, obj) { var obj_ = { fieldobj: obj, data: this.formData } this.$emit("form-checkbox-change", obj_); }, ischeckboxchange(val, obj) { obj.disabled = !val; }, ischeckboxchangeToEdit(val, obj) { obj.disabled = !val; this.cellFaceClick(obj); }, selectChange(val, obj) { this.formDataData[obj.field] = val; let me = this; if (obj.selectchildren) { obj.selectchildren.map(e=>{ let tableFieldsFormat_ = me.tableFieldsFormat; tableFieldsFormat_.map(item => { item.children.map(item2 => { if (item2.field.toLowerCase().indexOf(e.toLowerCase()) > -1) { if(item2.ismultiple) { me.formDataData[e] = []; } else { me.formDataData[e] = ""; } } }); }); }); } var obj_ = { fieldobj: obj, data: this.formData } this.$emit("select-change", obj_); this.isRefresh = false; this.isRefresh = true; }, checkForm() { var ref = this.href; var bo_ = true; this.$refs[ref].validate((valid) => { if (valid) { } else { bo_ = false; } }); return bo_; }, } }); /*********** h-form-filter ************/ Vue.component("h-form-filter", {//表单组件2(查询) template: '
'+ ' '+ ' '+ ' '+ ' '+ ' '+ '
'+ '' + '' + '
'+ '
'+ '
', props: { formAttr: Object, tableFields: Array, formData: Object, isReduce: {//是否允许展开 type: Boolean, default: false }, isFormOpen: {//是否展开 type: Boolean, default: true }, isbuttonquery: { type: Boolean, default: true }, disabled: { type: Boolean, default: false }, buttonloading: {//按键的转圈圈 type: Boolean, default: false }, width: { type: String, default: "100%" }, "href": {//无数据的图片 type: String, default: "form1" }, }, data() { return { isRefresh: true, tableFieldsFormat: [], z_isformOpen: true,//是否展开 } }, computed: { tableFields2() { if(this.formAttr && this.tableFields.length > 0) { this.formLayout(); } } }, watch: { tableFields() { if(this.formAttr && this.tableFields.length > 0) { this.formLayout(); } } }, mounted() { this.z_isformOpen = this.isFormOpen; if(this.formAttr && this.tableFields.length > 0) { this.formLayout(); } }, methods: { formLayout() { if (this.isReduce) { this.doFormOpenReduce(); } else { var tableFields_open_ = clone(this.tableFields); this.doFormLayout(tableFields_open_); } }, formOpenReduce() { this.z_isformOpen = !this.z_isformOpen; this.doFormOpenReduce(); }, doFormOpenReduce() { var me = this; if (this.z_isformOpen) {//展开 //获取全部字段 var tableFields_open_ = clone(this.tableFields); //表单布局设置 this.doFormLayout(tableFields_open_, function() { //如果有表格则表格高度设置 me.$emit("on-formlayout-after"); }); } else {//收起 //获取收起后字段 var tableFields_open_ = []; this.tableFields.map(t=>{ if (t.isopenshow) { tableFields_open_.push(t); } }); if (tableFields_open_.length == 0 && this.tableFields.length > 0) { tableFields_open_.push(this.tableFields[0]); } //表单布局设置 this.doFormLayout(tableFields_open_, function() { //如果有表格则表格高度设置 me.$emit("on-formlayout-after"); }); } }, doFormLayout(tableFields, callback) { //表单布局设置 let columnnumber_ = this.formAttr.columnnumber; let tableFieldsFormat_ = []; let rowObj_ = {}; let children_ = []; let i = 0; let field_i = 0; let tableFields_ = clone(tableFields); let button_ = {isshow: "T", field: "id"}; if(tableFields_) { tableFields_.push(button_); } for (var r=0; r columnnumber_) {//如果合并列大于表单设置列数 field_.colspan = columnnumber_; } field_i += field_.colspan ? field_.colspan : 1;//如果有合并列数, 默认为1 if (field_i == columnnumber_) {//列数满一行 children_.push(field_); i = columnnumber_; } else {//不满一行, 看是否存在下一属性, //若有则看已有列数加下一合并列数是否超过设置列数,若超了则自动调整该属性的合并列,使下一属性换行。 //若没有下一属性,则调整该属性合并列 let nxt_r = r + 1; let field_nxt = {}; if(nxt_r < tableFields_.length) { for (var nxt_j = nxt_r; nxt_j < tableFields_.length; nxt_j++) { let field_nxtj = tableFields_[nxt_j]; if(field_nxtj.isshow!="T") { continue; } else { field_nxt = field_nxtj; break } } } if (field_nxt.field) { //let field_nxt = tableFields_[nxt_r]; if(field_nxt.colspan) { let field_i_nxt = field_i + field_nxt.colspan; if (field_i_nxt > columnnumber_) { field_.colspan = columnnumber_ - i; children_.push(field_); i = columnnumber_; } else { children_.push(field_); i++; } } else { children_.push(field_); i++; } } else { field_.colspan = columnnumber_ - i; children_.push(field_); i = columnnumber_; } } if (i == columnnumber_) {//列数满一行,保留该行属性,新建下一空行 rowObj_.children = children_; tableFieldsFormat_.push(rowObj_); rowObj_ = {}; children_ = []; i = 0; field_i = 0; } } this.tableFieldsFormat = tableFieldsFormat_; if (callback) { this.$nextTick(function(){ callback(); }) } }, h_onQuery() { this.$emit("on-query"); }, h_onInitQuery() { this.$emit("on-init-query"); }, h_onEditQuery() { this.$emit("on-edit-query"); }, refresh() { this.isRefresh = false; this.isRefresh = true; }, showpopup(obj) {//弹窗弹出事件 let val = this.formData[obj.field]; let popupObj = { obj: obj, val: val }; this.$emit('show-popup', popupObj); }, setFormValByField(field, val) { this.formData[field] = val; this.isRefresh = false; this.isRefresh = true; }, setFormOptionsByField(fieldobj, result) { let tableFieldsFormat_ = this.tableFieldsFormat; tableFieldsFormat_.map(item => { item.children.map(item2 => { if (item2.field.toLowerCase().indexOf(fieldobj.field.toLowerCase()) > -1) { item2.options = result; } }); }); this.tableFieldsFormat = tableFieldsFormat_; }, visibleChange(isshow, obj) {//下拉展开事件 if (isshow) { //let val = this.formData[obj.field]; //let url = obj.dataurl; this.$emit("visible-change", obj); //根据url请求重新获取选择项 /* obj.options = [ {label: "选项1", value:"code1"}, {label: "选项2", value:"code2"}, {label: "选项3", value:"code3"}, {label: "选项4", value:"code4"} ]; */ /* let data = this.formData; let options = url.split("?"); let parendfield = options[1].split("="); let optionslist = dataRoot.database[options[0]]; let result = clone(optionslist); if (obj.selectparent) { let parentval = data[obj.selectparent]; result = optionslist.filter(item => { if (!parentval) { return false; } return item[parendfield[1]].toLowerCase().indexOf(parentval.toLowerCase()) > -1; }); } obj.options = result; */ /* var obj_ = { fieldobj: obj, data: this.formData } this.$emit('visible-change', obj_); */ //obj.options = } }, formchange(val, obj) { var obj_ = { fieldobj: obj, data: this.formData } //this.$emit("form-change", obj_); this.$emit("on-formchange", obj_); }, ischeckboxchange(val, obj) { obj.disabled = !val; }, selectChange(val, obj) { this.formData[obj.field] = val; let me = this; if (obj.selectchildren) { obj.selectchildren.map(e=>{ let tableFieldsFormat_ = me.tableFieldsFormat; tableFieldsFormat_.map(item => { item.children.map(item2 => { if (item2.field.toLowerCase().indexOf(e.toLowerCase()) > -1) { if(item2.ismultiple) { me.formData[e] = []; } else { me.formData[e] = ""; } } }); }); }); } var obj_ = { fieldobj: obj, data: this.formData } //this.$emit("select-change", obj_); this.$emit("on-formchange", obj_); this.isRefresh = false; this.isRefresh = true; }, checkForm() { var ref = this.href; var bo_ = true; this.$refs[ref].validate((valid) => { if (valid) { } else { bo_ = false; } }); return bo_; }, } }); /* ********** */ Root = window.top.Root; RootRole = window.top.RootRole; dataRoot = window.top.dataRoot; dataRootFields = window.top.dataRootFields; Server = window.top.Server; //dataRoot_lxc = window.top.dataRoot_lxc; //dataRoot_wxy = window.top.dataRoot_wxy; function getSetting(pageName) { var roleCode = Root.role.code; var result = { page: {}, buttons: {} }; if (!setting) { return result; } var pageSetting = setting[pageName]; if (!pageSetting) { return result; } result.page = pageSetting.page; var btnOptions = pageSetting.buttons; var buttons = result.buttons; for (var i = 0; i < btnOptions.length; i++) { var option = btnOptions[i]; if (option.isVisible && !arrayContains(option.isVisible, roleCode)) { continue; } var button = buttons[option.code] = {}; button.disabled = !option.isActive || !arrayContains(option.isActive, roleCode); } return result; } function arrayContains(array, value) { if (!array || !value) { return false; } var bo_ = false; for (var i = 0; i < array.length; i++) { value.map(e=>{ if (e == array[i]) { bo_ = true; } }); } return bo_; }