<!doctype html> <html> <head> <meta charset="utf-8"><meta http-equiv="Expires" content="0"><meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Cache-control" content="no-cache"><meta http-equiv="Cache" content="no-cache"> <title>销售订å•审批</title> <script type="text/javascript"> var pageVue = null; function loadJsCss(callback) { var jscss_urls = []; window.top.initJsCss(document, jscss_urls, callback); }; function initVue() { new ListVue({ el: "#vbody", data: { dataname: "so_order", title: "销售订å•审批", filterfieldClick: {}, tablefieldClick: {}, formfieldClick: {}, orderby: "doc_date desc", activeTabName: "", tabs_d: [ {code: "working", name: "审批ä¸"}, {code: "finished", name: "已办"}, ], tabs: [], userId: Root.userInfo.id, cbuttons_r: {}, ctabs_r: {}, }, created() {}, mounted() { var me = this; if (window.top.tab.selected.option.page_id) { getPageByPageId(window.top.tab.selected.option.page_id, function(result){ me.cbuttons_r = result.buttons_r; me.ctabs_r = result.tabs_r; var tabsarr = []; me.tabs_d.map(e=>{ if(me.ctabs_r[e.code]){ tabsarr.push(e) } }) me.tabs = tabsarr; // me.tabs = [ // {code: "working", name: "审批ä¸"}, // {code: "finished", name: "已办"}, // ] if(me.tabs.length > 0) { me.activeTabName = me.tabs[0].code; } //èŽ·å–æ•°æ® me.initData(); me.$nextTick(() => { // 以æœåŠ¡çš„æ–¹å¼è°ƒç”¨çš„ Loading 需è¦å¼‚æ¥å…³é— hideLoading(); }); }) } }, methods:{ initData() { var me = this; this.onQuery(function(result, callback) {//查询åŽçš„回调,用于获å–å—æ®µçš„ if (result.meta && result.meta[me.dataname] && result.meta[me.dataname].fields) { var metas = clone(result.meta[me.dataname].fields); var filterFields_ = []; var tableFields_ = []; metas.map(f=>{ f.isshow = "T"; if (f.isfilter) { filterFields_.push(clone(f)); } else { var filter_f = clone(f); filter_f.isshow = "F"; filterFields_.push(filter_f); } tableFields_.push(clone(f)); }) if (!me.filterFields || (me.filterFields && me.filterFields.length == 0)) { me.filterFields = clone(filterFields_); me.tableFields = clone(tableFields_); //å—æ®µæ•°ç»„è½¬å—æ®µobj,目的为了ç›é€‰æ—¶èŽ·å–å—æ®µå±žæ€§ me.fieldsToFieldsObj(); //è®¾ç½®å—æ®µäº‹ä»¶ me.tableFieldClick(); } } me.queryWorking() if (callback) { callback(); } }); }, afterOnQuery() { if (this.activeTabName == "working") { this.queryWorking(); } else if (this.activeTabName == "finished") { this.queryFinished(); } }, onInitFilter: function() { //清空 this.filterObj = {}; this.selectedrow = {}; this.afterOnQuery(); }, tableFieldClick() { var me = this; //ç›é€‰å—段事件设置 this.filterfieldClick = {}; me.filterFields.map(f=>{ if(!this.filterfieldClick[f.field]) { this.filterfieldClick[f.field] = {} } this.filterfieldClick[f.field].input = { onchange: function(obj) {//输入更改事件 me.onQuery(); } } }) //è¡¨æ ¼å—æ®µäº‹ä»¶è®¾ç½® this.tablefieldClick = { code: {//å—æ®µäº‹ä»¶è®¾ç½® val: {//有值时的点击事件 notclick_val: "",//ä¸å¯ç‚¹å‡»çš„值,1ã€æ˜¯æ•°ç»„["11","22"]ï¼›2ã€ä»¥â€œ;â€åˆ†éš”çš„å—符串"111;222" notclick_bindfield: [],//å½“è¯¥å—æ®µå€¼ç‰äºŽæŒ‡å®šå—段值时ä¸å¯ç‚¹å‡»["filterfield": "111"] onclick: function(obj) {//æ•°æ®å€¼ç‚¹å‡»äº‹ä»¶ me.showInfo(obj) }, }, }, state_name: { val: {//有值时的点击事件 notclick_val: "è‰ç¨¿",//ä¸å¯ç‚¹å‡»çš„值,1ã€æ˜¯æ•°ç»„["11","22"]ï¼›2ã€ä»¥â€œ;â€åˆ†éš”çš„å—符串"111;222" notclick_bindfield: [],//å½“è¯¥å—æ®µå€¼ç‰äºŽæŒ‡å®šå—段值时ä¸å¯ç‚¹å‡»["filterfield": "111"] onclick: function(obj) {//æ•°æ®å€¼ç‚¹å‡»äº‹ä»¶ me.showFlowImg(obj); }, }, } }; //表å•å—æ®µäº‹ä»¶è®¾ç½® this.formfieldClick = { }; }, showFlowImg(obj) { var me = this; var config = { totab: false, //true: 以Tabå¯¼èˆªçš„æ–¹å¼æ‰“å¼€ width: "900px", height: "600px", icon: "icon-product", text: "订å•ä¿¡æ¯", id: "sorder_list_info",//totab: trueæ—¶éœ€è®¾ç½®ï¼Œç”¨äºŽåˆ¤æ–æ˜¯å¦å·²æ‰“å¼€æ¤é¡µé¢ url: "module/order/page/img.html", data: obj.row, delta: {}, sceneCode: "browse",//"refuseedit",//"approval", //"add"//"browse", }; me.doPopupByPublic(config); }, handleClick(tab, event) { if (tab.name == 'working'){ this.queryWorking(); } else if (tab.name == 'finished'){ this.queryFinished(); } }, getFilter() { let filter_ = "1=1"; this.filterList = []; this.selectedrow = {}; 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, ""); } 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 fieldtype_ = "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_.fieldname) { field_ = fieldObj_.fieldname } if (fieldObj_.fieldtype) { fieldtype_ = fieldObj_.fieldtype } //ä¼ æ¡ä»¶æ•°æ®æœ‰å‰ç«¯æ‹¼æŽ¥ if (type_ == "daterange" && k_val.length) {//期间ç›é€‰ // var k_val_a = k_val[0]; var k_val_b = k_val[1]; if (fieldtype_ == "inScope") {//期间之内,ä¸åŒ…å«ä¸¤ç«¯ filter_ += " and (" + field_ + ">'" + k_val_a + "' and " + field_ + "<'" + k_val_b + "')"; } else if (fieldtype_ == "outScope") {//期间之外,ä¸åŒ…å«ä¸¤ç«¯ filter_ += " and (" + field_ + "<'" + k_val_a + "' or " + field_ + ">'" + k_val_b + "')"; } else if (fieldtype_ == "inScopeInclude") {//期间之内,包å«ä¸¤ç«¯ filter_ += " and ((" + field_ + ">'" + k_val_a + "' and " + field_ + "<'" + k_val_b + "') or (" + field_ + "='" + k_val_a + "' or " + field_ + "='" + k_val_b + "'))"; } } else if (isnull && type_ != "daterange") { //注释:type: equal(ç‰äºŽï¼‰/in(在多个数æ®ä¸ï¼‰/like(模糊)/minval(最å°å€¼ï¼‰/maxval(最大值)/mininclude(最å°ä¸”包å«è¯¥å€¼ï¼‰/maxinclude(最大且包å«è¯¥å€¼ï¼‰ if (fieldtype_ == "like") { filter_ += " and (" + field_ + " like '%" + k_val +"%' or " + field_ + " is null)"; } else if (fieldtype_ == "in") { filter_ += " and (" + field_ + " in ('" + k_val +"') or " + field_ + " is null)"; } else if (fieldtype_ == "minval") { filter_ += " and (" + field_ + " > '" + k_val +"' or " + field_ + " is null)"; } else if (fieldtype_ == "maxval") { filter_ += " and (" + field_ + " < '" + k_val +"' or " + field_ + " is null)"; } else if (fieldtype_ == "mininclude") { filter_ += " and ((" + field_ + " > '" + k_val +"' or " + field_ + " = '" + k_val +"') or " + field_ + " is null)"; } else if (fieldtype_ == "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 (fieldtype_ == "like") { filter_ += " and " + field_ + " like '%" + k_val +"%'"; } else if (fieldtype_ == "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 (fieldtype_ == "minval") { filter_ += " and " + field_ + " > '" + k_val +"'"; } else if (fieldtype_ == "maxval") { filter_ += " and " + field_ + " < '" + k_val +"'"; } else if (fieldtype_ == "mininclude") { filter_ += " and (" + field_ + " > '" + k_val +"' or " + field_ + " = '" + k_val +"') "; } else if (fieldtype_ == "maxinclude") { filter_ += " and (" + field_ + " < '" + k_val +"' or " + field_ + " = '" + k_val +"') "; } else if (fieldtype_ == "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 (fieldtype_ == "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 { filter_ += " and " + field_ + " = '" + k_val +"'"; } } } return filter_; }, queryWorking() { var me = this; let filter_ = this.getFilter(); var params1 = { type: "sales", dataName: "so_order", page: { no: me.pagenum, pagesize: me.pagesize }, filter: "(raw_emp_code = '"+ Root.userInfo.employee.code+"' or emp_code = '" + Root.userInfo.employee.code + "') and " + filter_, businessFilter: "1=1", orderby: "doc_date desc" } Server.call("root/workFlow/myWorkByType", params1, function(result) { console.log(result); if (result && result.data.entityset) { me.tableData = result.data.entityset; me.total = result.data.page.recordcount; } me.$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); } }) }); }, queryFinished() { var me = this; //let filter_ = this.getFilter(); var parames = { "type": "sales", "dataName": "so_order", "fields": [], "linkId": "", "filter": "1=1", "page": { "no":1, "pagesize":15 }, "orderby": "doc_date desc" } Server.call("root/workFlow/getMyHistory", parames, function(result) { console.log(result); if (!result) { return } let data = result.data.entityset; me.total = result.data.page.recordcount; if (data.length == 0) { me.tableData = [] return } let tableData_ = []; let ids = data.map(one => { if(one.act_flow_id) { return "'" + one.act_flow_id + "'"; } }).filter(one => { return one; }).join(", "); if(ids && ids.length > 0) { let params = { dataname: "so_order", filter: " flow_id in (" + ids + ")", orderby: "doc_date desc" } let tableData_; Server.call("root/data/getEntitySet", params, function(result_) { console.log(result_); if (result_ && result_.data && result_.data.entityset.length > 0) { var result_r = result_.data.entityset; // tableData_ = (result_r) me.tableData = result_r; } }); } }); }, onApproveData() { var me = this; var row = this.selectedrow; // popup var config = { totab: true, width:"900px", height:"900px", icon: "icon-product", text: "审批订å•", id: "sorder_list_info" + row.id, url: "module/order/page/sorder_list_info.html", sceneCode: "approval", data: row, delta: {}, callback: function(obj, callback) { me.queryWorking(); if(callback ) { callback(); } } }; me.doPopupByPublic(config); }, showInfo(obj) { var me = this; var config = { totab: false, //true: 以Tabå¯¼èˆªçš„æ–¹å¼æ‰“å¼€ width: "900px", height: "900px", icon: "icon-product", text: "订å•ä¿¡æ¯", id: "sorder_list_info",//totab: trueæ—¶éœ€è®¾ç½®ï¼Œç”¨äºŽåˆ¤æ–æ˜¯å¦å·²æ‰“å¼€æ¤é¡µé¢ url: "module/order/page/sorder_list_info.html", data: obj.row, delta: {}, sceneCode: "browse",//"refuseedit",//"approval", //"add"//"browse", }; me.doPopupByPublic(config); }, rowDbClick(obj) { this.selectedrow = obj.row; if (this.activeTabName != "working") return; this.onApproveData(); } } }); }; loadJsCss(function () { initVue(); }); </script> <style> /* 在vue.jsä¸ v-cloak 这个指令是防æ¢é¡µé¢åŠ è½½æ—¶å‡ºçŽ° vuejs çš„å˜é‡å而设计的 */ [v-cloak] { display: none !important; } </style> </head> <body style="margin: 0px;"> <div v-cloak id="vbody"> <div id="page_root"> <div class="topbar"> <span>{{title}}</span> <div style="float: right; margin-right: 18px;"> <el-button-group style="margin-left: 3px;" v-show="cbuttons_r.Approval"> <el-button v-if="activeTabName=='working'" :disabled="!(selectedrow.id)" @click="approvalData()">审 批</el-button> </el-button-group> </div> </div> <div style="margin-left: 1.4em;"> <el-tabs v-model="activeTabName" @tab-click="handleClick"> <el-tab-pane v-for="(tab, k) in tabs" :label="tab.name" :name="tab.code" :key="k"></el-tab-pane> </el-tabs> </div> <div class="topbar-line"> <div class="query-bar"> </div> </div> <div class="h_dialog__body"> <h-table v-if="isRefresh" ref="table1" :table-fields="tableFields" :table-data="tableData" :is-edit-table-data="isEditTableData" :pagesize="pagesize" :pagenum="pagenum" :total="total" :table-height="tableHeight" :table-field-click="tablefieldClick" :is-highlight-row="true" :isdraggableorder="cbuttons_r.Set" v-on:get-data="getData" v-on:edit-data="editData" v-on:del-data="delData" v-on:row-click="rowClick" v-on:row-dblclick="rowDbClick" v-on:order-fields="orderTableFields" > </h-table> </div> </div> </div> <div id="page_loading" style="position: absolute; top:0px; width: 100vw; height: 50vh;"> <div class="spinner"> <div class="cube1"></div> <div class="cube2"></div> </div> </div> </body> </html>