tom
2024-08-04 c754242fa7e366862dc8b2b147a9c4b922c82980
module/md/page/customer/page/deposit_magnagement.html
@@ -1,9 +1,8 @@
<!doctype html>
   <!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) {
@@ -12,149 +11,92 @@
         };
         
         function initVue() {
            pageVue = new TabTableVue({
            new ListVue({
               el: "#vbody",
               data: {
                  dataname: "v_guarantee",
                  title: "保证金管理",
                  orderby: "",
                  filterfieldClick: {},
                  tablefieldClick: {},
                  formfieldClick: {},
                  //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"},
                  dataRequest: [],
                  dataRequestObj:{},
                     {code: "List", name: "保证金明细", dataname: "md_target_dealer", filterTxt: "", orderby: ""},
                     {code: "Flow", 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: "F", field: "state_code", name: "状态编码", width: "70"},
                            {isshow: "T", field: "state_name", name: "状态名称", type:"tag", tagtype: '{^草稿^:^info^,^生效^:^success^,^关闭^:^danger^}', width: "80"},
                     // {isshow: "T", field: "state_code", name: "状态编码", width: "70",filter_field:'state_code',filter_operator:'=',input_type:'capsuletag',input_type_filter:'select',options_key:'standard',options_pattern:'{^草稿^:^info^,^生效^:^success^,^审批中^:^warning^}'},
                     //{isshow: "T", field: "template_id", name: "模板-ID", width: "100"},
                     {isshow: "T", field: "month", name: "申请日期", width: "100"},
                     {isshow: "T", field: "code", name: "台账编码", width: "100"},
                     {isshow: "T", field: "name", name: "申请类型", width: "100"},
                     {isshow: "T", field: "code", name: "推广商编码", width: "100"},
                     {isshow: "T", field: "name", name: "推广商名称", width: "220"},
                     {isshow: "T", field: "amt", name: "金额", width: "100",formatter:'formatter_money',align:'right',prefix:'¥'},
                     {isshow: "T", field: "remark", name: "备注", width: "100",formatter:'formatter_money',align:'right',isminwidth:'T'},
                  ],
                  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: {},
                  isCustomer: false,
               },
               created() {},
               created() {
                  this.isCustomer = window.top.vue.isCustomer
               },
               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;
                              //预加载数据后给哪些字段设置options或formatterjson
                              
                              if(me.tabs.length>0){
                                 me.activeTabName = me.tabs[0].code;
                              }
                              //初始化Tabs
                              me.initTabsPage(function() {
                                 //获取数据
                                 me.initData();
                              });
                              me.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
                                 hideLoading();
                              });
                              me.initData();
                           });
                        }
                        else {
                           if(me.tabs.length>0){
                              me.activeTabName = me.tabs[0].code;
                           }
                           //初始化Tabs
                           me.initTabsPage(function() {
                              //获取数据
                              me.initData();
                           });
                           me.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
                              hideLoading();
                           });
                           me.initData();
                        }
                        me.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
                           hideLoading();
                        });
                     })
                  }
               },
               methods:{
                  onhandleClick() {
                     this.initData();
                  },
                  initData() {
                     var me = this;
                            me.tableButtonClick();
                     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);
                     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) {
                                 if (f.field == "state_name") {
                                    f.filterfield = "state_code";
                                    f.options = me.dataRequestObj.machine_state;
                                 }
                                 filterFields_.push(clone(f));
                              }
                              else {
                                 var filter_f = clone(f);
                                 filter_f.isshow = "F";
                                 filterFields_.push(filter_f);
                              }
                              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);
                           if (!me.filterFields || (me.filterFields && me.filterFields.length == 0)) {
                              me.filterFields = clone(filterFields_);
                              me.tableFields = clone(tableFields_);
                              //字段数组转字段obj,目的为了筛选时获取字段属性
                              me.fieldsToFieldsObj();
                              //设置字段事件
                              me.tableFieldClick();
                           }
                        }
                        }
                        //字段数组转字段obj,目的为了筛选时获取字段属性
                        me.fieldsToFieldsObj();
                        //设置字段事件
                        me.tableFieldClick();
                        
                        if (callback) {
                           callback();
@@ -164,48 +106,82 @@
                  
                  tableFieldClick() {
                     var me = this;
                     var tablefieldClick = {};
                     this.selectTabObj.tablefieldClick = tablefieldClick[this.activeTabName];
                     //表格字段事件设置
                     this.tablefieldClick = {
                        state_name: {//状态
                           val: {//有值时的点击事件
                              notclick_val: ["草稿","录入"],//不可点击的值,1、是数组["11","22"];2、以“;”分隔的字符串"111;222"
                              notclick_bindfield: [],
                              onclick: function(obj) {
                                 var config = {
                                    totab: false,
                                    width: "1100px",
                                    height: "520px",
                                    icon: "icon-product",
                                    text: "流程步骤",
                                    id: "popup_workflow_step_user" + obj.row.id,
                                    url: "module/tool/page/popup_workflow_step_user.html?v=2023020703",
                                    data: obj.row,
                                    delta: {},//{machine_code: "Org_Account_Open"},
                                    sceneCode: "browse",//"refuseedit",//"approval", //"add"//"browse",
                                    callback: function(obj, callback) {
                                       if (callback) {
                                          callback();
                                       }
                                    }
                                 };
                                 me.doPopupByPublic(config);
                              },
                           },
                        },
                     };
                  },
                        tableButtonClick() {
                            var me = this;
                     var tablebuttonClick = {};
                            tablebuttonClick.List = [
                                {
                                    isbuttonshow:  true,
                                    type:"primary",
                           code: "add",
                                    isselected: false,
                                    classname: "",
                           onclick: function(obj) {
                              me.openCustomer('add',obj.selectedList[0])
                           }
                                },
                            ]
                            me.selectTabObj.tablebuttonClick = tablebuttonClick[this.activeTabName]
                        },
                        openCustomer(sceneCode, obj) {
                  rowClick(obj){
                     var me = this;
                     me.selectedrow = obj.row;
                  },
                  addCustomer(){
                     let me = this;
                     var row = {}
                     if (sceneCode == "edit" || sceneCode == "browse") {
                        row = me.selectTabObj.selectedrow;
                        if(!row){
                           Root.message({
                              type: 'warning',
                              message: '请选择一条数据'
                           });
                           return;
                        }
                     }
                     var config = {
                        totab: true, //true: 以Tab导航的方式打开
                        width: "1100px",
                        height: "520px",
                        width: "1000px",
                        height: "500px",
                        icon: "icon-product",
                        text: "保证金" + (row.customer_code ? ("-" + row.customer_code) : ""),
                        id: "deposit_apply" + (row.id? row.id : "add") + sceneCode,
                        url: "module/md/page/customer/page/deposit_apply.html",
                        text: "商业新增",
                        id: "customer_edit",//totab: true时需设置,用于判断是否已打开此页面
                        url: "module/md/page/customer/page/customer_edit.html",
                        data: {},
                        delta: {},
                        sceneCode: "add",//"refuseedit",//"approval", //"add"//"browse",
                        callback: function(obj, callback) {
                           me.onQuery();
                           if (callback) {
                              callback();
                           }
                        }
                     };
                     me.doPopupByPublic(config);
                  },
                  editData(sceneCode){
                     var me = this;
                     var row = me.selectedrow;
                     if(!row){
                        Root.message({
                           type: 'warning',
                           message: '请选择一条数据'
                        });
                        return;
                     }
                     var config = {
                        totab: true, //true: 以Tab导航的方式打开
                        width: "900px",
                        height: "500px",
                        icon: "icon-product",
                        text: "客户编辑",
                        id: "customer_edit" + row.id,//totab: true时需设置,用于判断是否已打开此页面
                        url: "module/md/page/customer/page/customer_edit.html",
                        data: row,
                        delta: {},
                        sceneCode: sceneCode,//"refuseedit",//"approval", //"add"//"browse",
@@ -218,76 +194,92 @@
                     };
                     me.doPopupByPublic(config);
                  },
                  onDownload() {
                     let me = this;
                     var filter_ = "1 = 1";
                     filter_ = this.getFilterData(filter_);
                     console.log("download", filter_);
                     let param = {
                        sign: "md_org_data",
                        filename: '经销商新增导出' + String(new Date().getTime()),
                        filter: filter_,
                        orderby: "update_time desc",
                        token: Root.getToken()
                     }
                     me.textdownloadForm(param);
                  },
                  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/exportSheetsExcel?token=" + Root.getToken();
                     form.submit(); // form表单提交
                     document.body.removeChild(form); // 移除创建的元素
                  },
               }
            });
         };
         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;">
   <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>
                  <el-button v-show="cbuttons_r.export ? cbuttons_r.export : false" @click="onDownload" :icon="buttonsconfig.export.icon">{{buttonsconfig.export.name}}</el-button>
               </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"
                  v-if="isRefresh"
                  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"
                  :table-fields="tableFields"
                  :table-data="tableData"
                  :is-edit-table-data="isEditTableData"
                  :table-field-click="tablefieldClick"
                  :pagesize="pagesize"
                  :pagenum="pagenum"
                  :total="total"
                  :table-height="tableHeight"
                  :is-highlight-row="true"
                  :isdraggableorder="cbuttons_r.Set"
                  :filtersobj="selectTabObj.filterObj"
                        :table-buttons-click="selectTabObj.tablebuttonClick"
                  
                  v-on:get-data="getData"
                  v-on:edit-data="editData"
                  v-on:row-click="rowClick"
                  v-on:del-data="delData"
                  v-on:cell-click="cellClick"
                  v-on:row-click="rowClick"
                  v-on:order-fields="orderTableFields"
               >
               </h-table>
            </div>
         </div>
      </div>
      </div>
      <div id="page_loading" style="position: absolute; top:0px; width: 100vw; height: 50vh;">
         <div class="spinner">
           <div class="cube1"></div>
@@ -295,5 +287,17 @@
         </div>
      </div>
      
      <style>
         [v-cloak] {
            display: none !important;
         }
         .prefixclass {
            width: 10px;
            height: 10px;
            border-radius: 5px;
            background-color: #e6372b;
            display: inline-block;
         }
      </style>
   </body>
</html>