<!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 src="../../../jsnew/elementDefault.js?v=20220425"></script> <script src="../../../jsnew/vue/vue.js"></script> <script src="../../../jsnew/vue/element-ui/element-ui_15/index.js"></script> <script src="../../../jsnew/myelement.js?v=20220425"></script> <script src="../../../jsnew/page.js?v=20220425"></script> <!-- <script src="../../../setting.js"></script> --> <link href="../../../jsnew/vue/element-ui/element-ui_15/theme-chalk/index.css" rel="stylesheet"> <link href="../../../jsnew/myelement.css?v=20220426" rel="stylesheet"> <link href="../../../jsnew/theme.css?v=20220426" rel="stylesheet"> <link href="../../../css/iconfont.css" rel="stylesheet"> <link href="../../../jsnew/page.css?v=20220425" rel="stylesheet"> <link href="//at.alicdn.com/t/font_2374495_13ltsxm2eor.css" rel="stylesheet"> </head> <body style="margin: 0px;"> <div v-cloak id="vbody"> <div id="page_root"> <div class="topbar"> <span>{{title}}</span> </div> <div class="topbar-line"> <div class="query-bar"> <h-form-filter v-if="selectTabObj.filterFields" ref="form1" :form-attr="filterAttr" :table-fields="selectTabObj.filterFields" :form-data="selectTabObj.filterObj" :table-field-click="selectTabObj.filterfieldClick" :isdraggableorder="false" v-on:on-query="onQuery" v-on:on-init-query="onInitFilter" v-on:on-edit-query="onEditFilter" v-on:order-fields="orderFilterFields" > </h-form-filter> </div> <div style="display: flex; margin-bottom: 3px;"> <div style="width: 100%;"> <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> </div> <div class="h_dialog__body" :style="{height: t_height +'px', 'overflow-y': 'auto'}"> <template v-if="isRefresh && selectTabObj.tableFields"> <div v-for="(row, index) in selectTabObj.tableData" :key="'c' + index" class="" style="margin-bottom: 10px;" @click="onClickRowCard(row)"> <el-card :class="[selectTabObj.selectedrow && selectTabObj.selectedrow.id == row.id ? 'h_select_card' : '','h_table_card']" shadow="hover" style="position: relative;" > <div class="h_table_card_title"> <div style="width: 100%; height: 100%; display: flex;"> <div style="padding: 10px; display: inline-block;"> <el-tag> {{planMap[row.plan_id]}} </el-tag> </div> <div class="state" @click="state_click(row)" style="padding: 20px 5px; display: inline-block; color: red;"> {{row.state_name}} </div> <div style="padding: 20px 5px; display: inline-block; color: red;"> {{row.node_name ? '审批节点:' + row.node_name : row.act_node_name ? '审批节点:' + row.act_node_name : '审批节点:'}} </div> <div style="padding: 20px 5px; display: inline-block; color: red;"> {{row.emp_name ? '审批人:' + row.emp_name : row.act_assignee ? '审批人:' + row.act_assignee : '审批人:'}} </div> <div class="" @click="" style="padding: 20px 5px; display: inline-block; color: red;"> {{row.name}} </div> <div class="" @click="" style="padding: 20px 5px; display: inline-block; color: red;"> 创建时间:{{row.create_time?row.create_time.split(' ')[0]:""}} </div> <!-- <div style="padding: 20px 5px; display: inline-block; color: red;"> {{row.readed && row.readed == "T" ? '处ç†çжæ€ï¼šå¤„ç†ä¸' : '处ç†çжæ€ï¼šæœªå¤„ç†'}} </div> --> </div> </div> <el-row :gutter="20"> <el-col :span="2" class="h_table_card_front"> <!-- <div style="width: 100%; height: 100%;background-color: #b780e600;">å‰ç¼€</div> --> </el-col> <el-col :span="20" class="h_table_card_body"> <h-form :ref="'cf' + index" :form-attr="formAttr" :table-fields="selectTabObj.tableFields" :form-data="row" :table-field-click="selectTabObj.tablefieldClick" > </h-form> </el-col> <el-col v-if="selectTabObj.code=='UnderApproval'" :span="2" class="h_table_card_after" style="position: absolute; right: 5%; height: 100vh;"> <div style="width: 100%; background-color: #83e67300;"> <div> <el-button class="button-card" type="primary" @click="onApprove(row)" >审 批 </el-button> </div> </div> </el-col> </el-row> </el-card> </div> </template> </div> <div style="text-align: right; padding: 16px 0px;"> <el-pagination background layout="prev, pager, next" :total="selectTabObj.total" v-on:current-change="changePage" > </el-pagination> </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> <script type="text/javascript"> function initVue() { new TabTableVue({ el: "#vbody", data: { dataname: "getMyFeeTaskWorking", title: "折让计算审批", dataurl: "rootjemin/data/getEntitySet", tabs_d: [ {code: "UnderApproval", name: "审批ä¸", dataname: "getMyFeeTaskWorking", filterTxt: "emp_code = '" + window.top.vue.userinfo.employee.code + "'", orderby: "update_time desc", dataurl: "rootjemin/data/getEntitySet"}, {code: "Open", name: "已办", dataname: "getMyFeeTaskHistoryWork", filterTxt: "act_assignee = '" + window.top.vue.userinfo.employee.code + "'", orderby: "update_time desc", dataurl: "rootjemin/data/getEntitySet"}, ], d_tabs: { Input: true, UnderApproval: true, Open: true, Closed: true, All: true, }, tabs: [], tabsobj: {}, default_filterFields: [ { isshow: "T", field: "plan_id", name: "类型", type:"select"}, { isshow: "T", field: "month", name: "月份", type:"select", options: [ {value: "1", code: "1"}, {value: "2", code: "2"}, {value: "3", code: "3"}, {value: "4", code: "4"}, {value: "5", code: "5"}, {value: "6", code: "6"}, {value: "7", code: "7"}, {value: "8", code: "8"}, {value: "9", code: "9"}, {value: "10", code: "10"}, {value: "11", code: "11"}, {value: "12", code: "12"}, ], }, ], default_tableFields: [ {isshow: "T",field: "from_source",name: "æ¥æº",width: "150", type: "span", formatter: "formatter_json", formatpattern: "from_source"}, {isshow: "F",field: "state_name",name: "状æ€",width: "150", type: "span"}, {isshow: "T",field: "amt",name: "折让汇总",width: "150", type: "span", formatter: "formatter_money"}, {isshow: "T", field: "start_date",name: "开始时间", width: "100", align: "center", isminwidth: true, type: "span", formatter: "formatter_date"}, {isshow: "T", field: "end_date",name: "ç»“æŸæ—¶é—´", width: "100", align: "center", isminwidth: true, type: "span", formatter: "formatter_date"}, ], filterfieldClick: {}, tablefieldClick: {}, formfieldClick: {}, formAttr: { istitle: false, title: "表å•åç§°", columnnumber: 4, labelwidth: "80px", labelposition: "left",//"left",// right//top size: "mini", border: "1px solid #c6c6c600" }, tableData: [], t_height:null, selectType: false, formFields: [], default_formFields:[ {isshow: "T", required: true, field: "plan_id", name: "类型", type: "select"} ], formAttr_temp: {//å˜æ›´ç”³è¯·å¼¹çª—属性 columnnumber: 1, labelwidth: "100px", labelposition: "left",//"left",// right//top size: "mini", border: "10px solid #c6c6c600", }, formData: {}, selectInfo: false, formFields_info:[ {isshow: "T", required: true, field: "plan_id", name: "类型", type: "select"}, {isshow: "T", required: true, field: "year_month", name: "年月", type: "month"}, ], formAttr_info: {//å˜æ›´ç”³è¯·å¼¹çª—属性 columnnumber: 1, labelwidth: "100px", labelposition: "left",//"left",// right//top size: "mini", border: "10px solid #c6c6c600", }, formData_info: {}, dataRequest: [ { name: "fee_model_plan", url: "rootjemin/data/getEntitySet", paramsobj: {dataname: "fee_model_plan", filter: ""}, isnotoption: false, //true:䏿˜¯é€‰é¡¹ } ], planMap: {}, emp_code: localStorage.getItem('emp_code'), roleid: localStorage.getItem('roleid'), undertake: false, operate: false }, created() { if (this.roleid && this.roleid.indexOf("2beaab4dcbd44a2285818ea480e5364c") != -1) { this.undertake = true this.dataname = "v_fee_task_emp" this.filterTxt = " state_code = 'Distributed' and check_emp_code = '" + this.emp_code + "' " } else { this.operate = true } }, mounted() { var me = this; me.t_height = document.documentElement.clientHeight*1 - 180; me.ctabs_r = me.d_tabs; var tabsarr = []; me.tabs_d.map(e=>{ if(me.ctabs_r[e.code]){ tabsarr.push(e) } }) me.tabs = tabsarr; if(me.tabs.length>0){ me.activeTabName = me.tabs[0].code; } if (this.dataRequest && this.dataRequest.length) { var result = {}; this.loadRequestData(this.dataRequest, result, function(data) { me.dataRequestObj = data; //é¢„åŠ è½½æ•°æ®åŽç»™å“ªäº›å—段设置options或formatterjson //åˆå§‹åŒ–Tabs me.initTabsPage(function() { //èŽ·å–æ•°æ® me.initData(); }); }); } else { //åˆå§‹åŒ–Tabs me.initTabsPage(function() { //èŽ·å–æ•°æ® me.initData(); }); } me.$nextTick(() => { // 以æœåŠ¡çš„æ–¹å¼è°ƒç”¨çš„ Loading 需è¦å¼‚æ¥å…³é— hideLoading(); }); }, methods:{ onhandleClick() { this.initData(); }, onInitFilter() { //清空 this.filterObj = {}; this.selectedrow = {}; this.initData(); }, onQuery() { this.initData(); }, closeDialog() { var me = this; me.selectType = false; me.selectInfo = false; }, setType() { var me = this; if (!this.formData.plan_id) { Root.message({ type: 'error', message: '请选择类型' }); return } me.selectType = false; me.addData(); }, setInfo() { var me = this; var bo_form_change = this.$refs.form_temp1.checkForm(); if (!bo_form_change) { Root.message({ type: 'error', message: '请填写必填项' }); return } document.getElementById("btn_file").click() me.selectInfo = false; }, initData() { var me = this; this.doQueryByTab(function(result, callback) {//查询åŽçš„回调,用于获å–å—æ®µçš„ if (result.meta && result.meta[me.selectTabObj.dataname.toLowerCase()] && result.meta[me.selectTabObj.dataname.toLowerCase()].fields) { var metas = clone(result.meta[me.selectTabObj.dataname.toLowerCase()].fields); var filterFields_ = []; var tableFields_ = []; me.default_formFields.map(f => { if (f.field == 'plan_id') { me.dataRequestObj.fee_model_plan.data.entityset.map(e => { e.value = e.name e.code = e.id me.planMap[e.id] = e.name }) f.options = me.dataRequestObj.fee_model_plan.data.entityset } }) me.default_filterFields.map(f => { if (f.field == 'plan_id') { me.dataRequestObj.fee_model_plan.data.entityset.map(e => { e.value = e.name e.code = e.id }) f.options = me.dataRequestObj.fee_model_plan.data.entityset } }) if (!me.selectTabObj.filterFields || (me.selectTabObj.filterFields && me.selectTabObj.filterFields.length == 0)) { me.selectTabObj.filterFields = clone(me.default_filterFields); me.selectTabObj.tableFields = clone(me.default_tableFields); me.formFields = clone(me.default_formFields); //å—æ®µæ•°ç»„è½¬å—æ®µobj me.fieldsToFieldsObj(); //è®¾ç½®å—æ®µäº‹ä»¶ me.tableFieldClick(); } } if (callback) { callback(); } }); }, importSelect() { this.selectInfo = true; }, changePage(pageNo) { this.selectTabObj.pagenum = pageNo this.onQuery() }, state_click(row){ var me = this; var config = { totab: false, //true: 以Tabå¯¼èˆªçš„æ–¹å¼æ‰“å¼€ width: "900px", height: "500px", icon: "icon-product", text: "", id: row.id,//totab: trueæ—¶éœ€è®¾ç½®ï¼Œç”¨äºŽåˆ¤æ–æ˜¯å¦å·²æ‰“å¼€æ¤é¡µé¢ url: "../approval_new/ApprovalList_page_new.html?flow_id=" + row.flow_id, data: row, delta: {}, sceneCode: "change",//"refuseedit",//"approval", //"add"//"browse", callback: function(obj, callback) { if (callback) { callback(); } } }; me.doPopupByPublic(config); }, tableFieldClick() { var me = this; var tablefieldClick = {}; //è¡¨æ ¼å—æ®µäº‹ä»¶è®¾ç½® tablefieldClick = { code: {//å—æ®µäº‹ä»¶è®¾ç½® val: {//有值时的点击事件 isonclick: true, onclick: function(obj) {//æ•°æ®å€¼ç‚¹å‡»äº‹ä»¶ me.selectTabObj.code=='UnderApproval'? me.onApprove(obj.data) : me.showInfo(obj) }, }, }, }; this.selectTabObj.tablefieldClick = tablefieldClick; }, beforeAddData() { let formData = clone(this.formData) formData.plan_id = "" formData.plan_name = "" this.formData = formData this.selectType = true; }, returnData() { var me = this; // var row = me.selectedrow; var config = { totab: false, //true: 以Tabå¯¼èˆªçš„æ–¹å¼æ‰“å¼€ width: "900px", height: "650px", icon: "icon-product", text: "返还信æ¯", id: "",//totab: trueæ—¶éœ€è®¾ç½®ï¼Œç”¨äºŽåˆ¤æ–æ˜¯å¦å·²æ‰“å¼€æ¤é¡µé¢ // url: "../tradeDiscount/discount/popup_return_data_info.html", url: "../tradeDiscount/discount/popup_return_step_info.html", data: "", delta: {}, sceneCode: "add",//"refuseedit",//"approval", //"add"//"browse", callback: function(obj, callback) { if (callback) { callback(); } } }; me.doPopupByPublic(config); }, onApprove(row) { var me = this; var config = { totab: true, //true: 以Tabå¯¼èˆªçš„æ–¹å¼æ‰“å¼€ width: "900px", height: "900px", icon: "icon-product", text: me.planMap[row.plan_id] + "审批", id: "discount_type_info_approval" + row.id,//totab: trueæ—¶éœ€è®¾ç½®ï¼Œç”¨äºŽåˆ¤æ–æ˜¯å¦å·²æ‰“å¼€æ¤é¡µé¢ url: '../tradeDiscount/discount/discount_type_info.html', data: row, delta: {undertake: me.undertake, operate: me.operate}, sceneCode: "approval",//"refuseedit",//"approval", //"add"//"browse", callback: function(obj, callback) { me.onQuery(); if (callback) { callback(); } } }; me.doPopupByPublic(config); }, addData() { let me = this; var config = { totab: true, //true: 以Tabå¯¼èˆªçš„æ–¹å¼æ‰“å¼€ width: "900px", height: "900px", icon: "icon-product", text: me.formData.plan_name + "ä¿¡æ¯æ–°å¢ž", id: me.formData.plan_id || "",//totab: trueæ—¶éœ€è®¾ç½®ï¼Œç”¨äºŽåˆ¤æ–æ˜¯å¦å·²æ‰“å¼€æ¤é¡µé¢ url: '../tradeDiscount/discount/discount_type_info.html', data: "", delta: me.formData, sceneCode: "add",//"refuseedit",//"approval", //"add"//"browse", callback: function(obj, callback) { me.onQuery(); if (callback) { callback(); } } }; me.doPopupByPublic(config); }, onEditData(config, scope) { var me = this; var row = scope.row; //1. empty row if (!row || !row.id) { Root.message({ type: 'warning', message: '请选择è¦ç¼–辑的数æ®' }); return false; } //3. popup var config = { totab: false, //true: 以Tabå¯¼èˆªçš„æ–¹å¼æ‰“å¼€ width: "500px", height: "300px", icon: "icon-product", text: "产å“线信æ¯", id: "product_edit" + row.id,//totab: trueæ—¶éœ€è®¾ç½®ï¼Œç”¨äºŽåˆ¤æ–æ˜¯å¦å·²æ‰“å¼€æ¤é¡µé¢ url: "module/md/page/product/page/product_edit.html", data: row, delta: null, sceneCode: "edit",//"refuseedit",//"approval", //"add"//"browse", callback: function(obj, callback) { me.onQuery(); if (callback) { callback(); } } }; me.doPopupByPublic(config); }, onClickRowCard(row) { this.selectedrow = clone(row); this.$forceUpdate(); }, } }); }; initVue(); </script> <style> /* 在vue.jsä¸ v-cloak 这个指令是防æ¢é¡µé¢åŠ è½½æ—¶å‡ºçŽ° vuejs çš„å˜é‡å而设计的 */ [v-cloak] { display: none !important; } .h_form_filter { padding-top: 1px; } /* .el-button--mini { color: #FFF; background-color: #2984e2; border-color: #409EFF; } */ .state { text-decoration: underline; cursor: pointer; } .state:hover { cursor: pointer; font-weight: bolder; } .h_table_card:hover { cursor: pointer; } .h_select_card { border: 2px solid rgb(72, 172, 211); } /* .el-card__body { padding: 5px; } .button-card { width: 80px; } */ .el-card { border-radius: 8px; } </style> </body> </html>