New file |
| | |
| | | <!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() { |
| | | pageVue = new TabTableVue({ |
| | | el: "#vbody", |
| | | data: { |
| | | title: "推广商评估", |
| | | |
| | | //Tab项设置 |
| | | tabs_d: [ |
| | | // {code: "Input", name: "草稿", dataname: "md_target_dealer", filterTxt: "(state_code='Input' or state_code = 'Rejected')", orderby: "update_time desc"}, |
| | | // // {code: "UnderApproval", name: "审批中", dataname: "so_implant", filterTxt: "state_code='UnderApproval'", orderby: "doc_date desc"}, |
| | | // // {code: "Open", name: "审批完成", dataname: "so_implant", filterTxt: "state_code='Open'", orderby: "doc_date desc"}, |
| | | // // {code: "Closed", name: "失效", dataname:"so_implant", filterTxt: "state_code='Open'",}, |
| | | // {code: "All", name: "全部", dataname: "md_target_dealer", filterTxt: "1 = 1", orderby: "update_time desc"}, |
| | | |
| | | {code: "Current", name: "当前评估", dataname: "md_target_dealer", filterTxt: "", orderby: ""}, |
| | | {code: "History", name: "历史评估", dataname: "md_target_dealer", filterTxt: "", orderby: ""}, |
| | | // {code: "Apply", name: "指标申请", dataname: "md_target_apply", filterTxt: "1 = 1", orderby: "update_time desc"}, |
| | | ], |
| | | tabs: [], |
| | | tabsobj: {}, |
| | | |
| | | filterFields: [], |
| | | tableFields: [], |
| | | default_filterFields: [ |
| | | {isshow: "T", field: "year", name: "年份", filterfield:"", filteroperator: "like"}, |
| | | {isshow: "T", field: "customer_code", name: "推广商编码", filterfield:"", filteroperator: "like"}, |
| | | {isshow: "T", field: "customer_name", name: "推广商名称", filterfield:"", filteroperator: "like"}, |
| | | ], |
| | | default_tableFields: [ |
| | | //{isshow: "T", field: "category_id", name: "协议类型-ID", width: "100"}, |
| | | {isshow: "T", field: "year", name: "年份", width: "70"}, |
| | | //{isshow: "T", field: "template_id", name: "模板-ID", width: "100"}, |
| | | {isshow: "T", field: "month", name: "月份", width: "70"}, |
| | | {isshow: "T", field: "customer_code", name: "推广商编码", width: "100"}, |
| | | {isshow: "T", field: "customer_name", name: "推广商名称", width: "220"}, |
| | | {isshow: "T", field: "score", name: "综合得分", width: "100"}, |
| | | {isshow: "T", field: "rank", name: "等级划分", width: "100"}, |
| | | {isshow: "T", field: "sale_employe", name: "归属人员", width: "100"}, |
| | | //{isshow: "T", field: "state_code", name: "协议状态-编码", width: "100"}, |
| | | // {isshow: "T", field: "state_name", name: "客观评估", type:"tag", tagtype: '{^草稿^:^info^,^生效^:^success^,^关闭^:^danger^}', width: "80"}, |
| | | {isshow: "T", field: "", name: "客观评估", headercolor: "#bdf1ff", children: [ |
| | | {isshow: "T", field: "completion_rate", name: "完成率", width: "100", headercolor: "#bdf1ff"}, |
| | | {isshow: "T", field: "exploitation_rate", name: "开发率", width: "100", headercolor: "#bdf1ff"}, |
| | | {isshow: "T", field: "growth_rate", name: "增长率", width: "100", headercolor: "#bdf1ff"}, |
| | | {isshow: "T", field: "reach_rate", name: "达标占比", width: "100", headercolor: "#bdf1ff",formatter:"formatter_percent",align:"right",suffix:"%"}, |
| | | ]}, |
| | | {isshow: "T", field: "", name: "主观评估", headercolor: "#e5ffab", children: [ |
| | | {isshow: "T", field: "customer_item", name: "客户评估", width: "100", headercolor: "#e5ffab"}, |
| | | {isshow: "T", field: "hospital_item", name: "医院评估", width: "100", headercolor: "#e5ffab"}, |
| | | {isshow: "T", field: "employee_item", name: "销售评估", width: "100", headercolor: "#e5ffab"}, |
| | | |
| | | ]}, |
| | | ], |
| | | cbuttons_r: {}, |
| | | ctabs_r: {}, |
| | | dataRequest: [ |
| | | // { |
| | | // name: "machine_state", |
| | | // dataname: "v_state_machine_state", |
| | | // // url: "root/data/newEntity", |
| | | // // paramsobj: {dataname: "md_org_data", type_code:"Distributor"}, |
| | | // isnotoption: false, //true:不是选项 |
| | | // code:"code",//是下拉选项时设置 |
| | | // label:"name",//是下拉选项时设置 |
| | | // // orderby: "index_no", |
| | | // filter: "parent_id='md_target_dealer'", |
| | | // }, |
| | | ], |
| | | dataRequestObj: {}, |
| | | }, |
| | | created() {}, |
| | | |
| | | mounted() { |
| | | var me = this; |
| | | if (window.top.tab.selected.option.page_id) { |
| | | this.title = window.top.tab.selected.option.menutitle |
| | | 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 = me.tabs_d; |
| | | //预加载数据 |
| | | if (me.dataRequest && me.dataRequest.length) { |
| | | var result = {}; |
| | | me.loadRequestData(me.dataRequest, result, function(data) { |
| | | me.dataRequestObj = data; |
| | | |
| | | if(me.tabs.length>0){ |
| | | me.activeTabName = me.tabs[0].code; |
| | | } |
| | | //初始化Tabs |
| | | me.initTabsPage(function() { |
| | | //获取数据 |
| | | me.initData(); |
| | | }); |
| | | me.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭 |
| | | hideLoading(); |
| | | }); |
| | | }); |
| | | } |
| | | else { |
| | | if(me.tabs.length>0){ |
| | | me.activeTabName = me.tabs[0].code; |
| | | } |
| | | //初始化Tabs |
| | | me.initTabsPage(function() { |
| | | //获取数据 |
| | | me.initData(); |
| | | }); |
| | | me.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭 |
| | | hideLoading(); |
| | | }); |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | |
| | | methods:{ |
| | | onhandleClick() { |
| | | this.initData(); |
| | | }, |
| | | |
| | | initData() { |
| | | var me = this; |
| | | this.doQueryByTab(function(result, callback) {//查询后的回调,用于获取字段的 |
| | | if (result.meta && result.meta[me.selectTabObj.dataname] && result.meta[me.selectTabObj.dataname].fields) { |
| | | var metas = clone(result.meta[me.selectTabObj.dataname].fields); |
| | | var filterFields_ = []; |
| | | var tableFields_ = []; |
| | | |
| | | metas.map(f=>{ |
| | | f.isshow = "T"; |
| | | tableFields_.push(clone(f)); |
| | | }) |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | |
| | | //字段数组转字段obj,目的为了筛选时获取字段属性 |
| | | me.fieldsToFieldsObj(); |
| | | |
| | | //设置字段事件 |
| | | me.tableFieldClick(); |
| | | |
| | | if (callback) { |
| | | callback(); |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | tableFieldClick() { |
| | | var me = this; |
| | | var tablefieldClick = {}; |
| | | this.selectTabObj.tablefieldClick = tablefieldClick[this.activeTabName]; |
| | | }, |
| | | |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | loadJsCss(function () { |
| | | initVue(); |
| | | }); |
| | | </script> |
| | | <style> |
| | | /* 在vue.js中 v-cloak 这个指令是防止页面加载时出现 vuejs 的变量名而设计的 */ |
| | | [v-cloak] { |
| | | display: none !important; |
| | | } |
| | | .el-tabs__nav-scroll { |
| | | overflow: hidden; |
| | | position: relative; |
| | | padding-left: 20px; |
| | | } |
| | | </style> |
| | | |
| | | </head> |
| | | |
| | | <body style="margin: 0px;"> |
| | | <div v-cloak id="vbody"> |
| | | <div id="page_root"> |
| | | <div class="topbar"> |
| | | <span :class="page_title == 'right' ? 'h_page_title_right' : 'h_page_title_left'"><span class="h_page_title_txt">{{title}}</span></span> |
| | | |
| | | <div :class="page_title == 'right' ? 'h_page_button_left' : 'h_page_button_right'"> |
| | | <el-button-group style="margin-left: 3px"> |
| | | <el-button v-show="cbuttons_r.export" @click="onDownload" :icon="buttonsconfig.export.icon">{{buttonsconfig.export.name}}</el-button> |
| | | </el-button-group> |
| | | </div> |
| | | </div> |
| | | <div> |
| | | <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="h_dialog__body"> |
| | | <h-table |
| | | v-if="isRefresh && selectTabObj.tableFields" |
| | | ref="table1" |
| | | :table-fields="selectTabObj.tableFields" |
| | | :table-data="selectTabObj.tableData" |
| | | :is-edit-table-data="selectTabObj.isEditTableData" |
| | | :pagesize="selectTabObj.pagesize" |
| | | :pagenum="selectTabObj.pagenum" |
| | | :total="selectTabObj.total" |
| | | :table-height="selectTabObj.tableHeight" |
| | | :table-field-click="selectTabObj.tablefieldClick" |
| | | :is-show-index="selectTabObj.isShowIndex" |
| | | :tableloading="tableloading" |
| | | :is-highlight-row="selectTabObj.isHighlightRow" |
| | | :isdraggableorder="cbuttons_r.Set" |
| | | :filtersobj="selectTabObj.filterObj" |
| | | |
| | | v-on:get-data="getData" |
| | | v-on:edit-data="editData" |
| | | v-on:row-click="rowClick" |
| | | v-on:del-data="delData" |
| | | 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> |