zhangyanpeng
2024-08-20 f9d42f7a3929dacb96446e873ab992f9560ac9c9
调整
4个文件已修改
4个文件已添加
2797 ■■■■■ 已修改文件
css/myelement.css 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
js/config.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
js/myelement.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
module/fee/page/fee_execute.html 334 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
module/fee/page/popup/popup_edit_fee_execute.html 951 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
module/fee/page/popup/popup_edit_fee_qty.html 951 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
module/flow/page/cleanHome.html 528 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
module/system/page/main.html 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
css/myelement.css
@@ -390,7 +390,16 @@
.h_table .el-input--mini .el-input__inner {
    height: 24px;
    line-height: 24px;
    text-align: right;
    padding-left: 5px;
    padding-right: 5px;
}
.h_table .el-input-number .el-input-number__decrease,
.h_table .el-input-number .el-input-number__increase {
    display: none;
}
.h_table .el-input--mini .el-input__icon {
    line-height: 26px;
}
js/config.js
@@ -14,7 +14,7 @@
config = {
    jscssversion: "2024080201", //.js/.css文件的版本号,去除前端缓存的一种机制
    jscssversion: "2024081901", //.js/.css文件的版本号,去除前端缓存的一种机制
    isupgrading: false, //是否升级中
    appName: "TPP",
    title: "营销一体化运营平台",
js/myelement.js
@@ -1985,7 +1985,7 @@
            // 数据加载时的转圈圈
            '<div v-loading="istableloading" v-if="istableloading" class="h_table_loading"></div> '+
            // 表格工具栏 - 标题、功能组、多选
            '<div v-if="isshowtool && ((tableAttr.istitle && tableAttr.title) || (istablebuttons && tablebuttons.length) || ((isbasicfilterfields && (tableAttr.toolbarobj && tableAttr.toolbarobj.isbasicfilterfields) && tableBasicFilterFields.length) || (isfilterfield && (tableAttr.toolbarobj && tableAttr.toolbarobj.isfilterfield))) || (tableAttr.tag && tableAttr.tag.name)) || ((tableAttr.toolbarobj && ((isbasicfilterfields && tableAttr.toolbarobj.isbasicfilterfields) || (tableAttr.toolbarobj.more_datalist && tableAttr.toolbarobj.more_datalist.length))) || (isshowShoppingcart && (tableAttr.isSelection || isSelection)) || (tableToolButtons && tableToolButtons.length))"  class="h_h_table" :ref="\'h_tabletool\' + href"> '+
            '<div v-if="isshowtool && ((tableAttr.istitle && tableAttr.title) || (istablebuttons && tablebuttons.length) || ((isbasicfilterfields && (tableAttr.toolbarobj && tableAttr.toolbarobj.isbasicfilterfields) && tableBasicFilterFields.length) || (isfilterfield && (tableAttr.toolbarobj && tableAttr.toolbarobj.isfilterfield))) || (tableAttr.tag && tableAttr.tag.name)) || ((tableAttr.toolbarobj &&  (tableAttr.toolbarobj.more_datalist && tableAttr.toolbarobj.more_datalist.length)) || (isshowShoppingcart && (tableAttr.isSelection || isSelection)) || (tableToolButtons && tableToolButtons.length))"  class="h_h_table aaa" :ref="\'h_tabletool\' + href"> '+
                // 表格本身功能(标题、字段顺序、表刷新、表标签)
                '<div v-if="(tableAttr.istitle && tableAttr.title) || (istablebuttons && tablebuttons.length) || ((isbasicfilterfields && (tableAttr.toolbarobj && tableAttr.toolbarobj.isbasicfilterfields) && tableBasicFilterFields.length) || (isfilterfield && (tableAttr.toolbarobj && tableAttr.toolbarobj.isfilterfield))) || (tableAttr.tag && tableAttr.tag.name)" class="h_table_tool_left">'+
                    // 标题
module/fee/page/fee_execute.html
New file
@@ -0,0 +1,334 @@
<!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: "fee_guide_settle_execute",
                        title: "执行单",
                        orderby: "",
                        filterfieldClick: {},
                        tablefieldClick: {},
                        formfieldClick: {},
                        dataRequest: [],
                        dataRequestObj:{},
                        filterFields: [],
                        tableFields: [],
                        cbuttons_r: {},
                        ctabs_r: {},
                        isCustomer: false,
                    },
                    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;
                                //预加载数据
                                if (me.dataRequest && me.dataRequest.length) {
                                    var result = {};
                                    me.loadRequestData(me.dataRequest, result, function(data) {
                                        me.dataRequestObj = data;
                                        //预加载数据后给哪些字段设置options或formatterjson
                                        me.initData();
                                    });
                                }
                                else {
                                    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.field == "md_org_account__bu_name") {
                                            f.optionsgroup = "bu"
                                        }
                                        if (f.field == "md_org_account__company_name") {
                                            f.optionsgroup = "company"
                                        }
                                        if (f.field == "province") {
                                            f.options = me.dataRequestObj.md_province
                                        }
                                        if (f.field == "is_editable") {
                                            f.isshow = "F"
                                        }
                                        if (me.isCustomer && f.field == "md_position_hierarchy__position_path") {
                                            f.isshow = "F"
                                            f.isfilter = false
                                        }
                                        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.filterFields || (me.filterFields && me.filterFields.length == 0)) {
                                        me.filterFields = clone(filterFields_);
                                        me.tableFields = clone(tableFields_);
                                        //字段数组转字段obj,目的为了筛选时获取字段属性
                                        me.fieldsToFieldsObj();
                                        //设置字段事件
                                        me.tableFieldClick();
                                    }
                                }
                                if (callback) {
                                    callback();
                                }
                            });
                        },
                        tableFieldClick() {
                            var me = this;
                            //表格字段事件设置
                            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);
                                        },
                                    },
                                },
                                code: {//字段事件设置
                                    val: {//有值时的点击事件
                                        notclick_val: "",//不可点击的值,1、是数组["11","22"];2、以“;”分隔的字符串"111;222"
                                        notclick_bindfield: [],//当该字段值等于指定字段值时不可点击["filterfield": "111"]
                                        onclick: function(obj) {//数据值点击事件
                                            var sceneCode_ = "browse";
                                            //如果是创建人且是录入状态或退回状态则是编辑状态
                                            if (obj.row.creator_id == window.top.vue.userinfo.id && (obj.row.state_code == "Input" || obj.row.state_code == "input" || obj.row.state_code == "Rejected")) {
                                                sceneCode_ = "edit";
                                            }
                                            var config = {
                                                totab: true, //true: 以Tab导航的方式打开
                                                width: "1100px",
                                                height: "520px",
                                                icon: "icon-product",
                                                text: "商业信息 " + (obj.row.name ? obj.row.name : ""),
                                                id: "customer_edit_browse" + obj.row.id,//totab: true时需设置,用于判断是否已打开此页面
                                                url: "module/md/page/customer/page/customer_edit.html",
                                                data: obj.row,
                                                delta: {closeCode:"1"},
                                                sceneCode: sceneCode_,//"refuseedit",//"approval", //"add"//"browse",
                                                callback: function(obj, callback) {
                                                    me.onQuery();
                                                    if (callback) {
                                                        callback();
                                                    }
                                                }
                                            };
                                            me.doPopupByPublic(config);
                                        },
                                    },
                                },
                            };
                        },
                        rowClick(obj) {
                            var me = this;
                            me.selectedrow = obj.row;
                        },
                        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: "popup_edit_fee_qty" + sceneCode + row.id,//totab: true时需设置,用于判断是否已打开此页面
                                url: "module/fee/page/popup/popup_edit_fee_qty.html",
                                data: row,
                                delta: {},
                                sceneCode: sceneCode,//"refuseedit",//"approval", //"add"//"browse",
                                callback: function(obj, callback) {
                                    me.onQuery();
                                    if (callback) {
                                        callback();
                                    }
                                }
                            };
                            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>
    </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 :disabled="!(selectedrow.id)" @click="editData('edit') " :icon="buttonsconfig.alter.icon":icon="buttonsconfig.alter.icon">{{buttonsconfig.alter.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 class="h_dialog__body">
                    <h-table
                        v-if="isRefresh"
                        ref="table1"
                        :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="false"
                        v-on:get-data="getData"
                        v-on:cell-click="cellClick"
                        v-on:row-click="rowClick"
                    >
                    </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>
        <style>
            [v-cloak] {
                display: none !important;
            }
            .prefixclass {
                width: 10px;
                height: 10px;
                border-radius: 5px;
                background-color: #e6372b;
                display: inline-block;
            }
        </style>
    </body>
</html>
module/fee/page/popup/popup_edit_fee_execute.html
New file
@@ -0,0 +1,951 @@
<!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 FormVue({
                    el: "#vbody",
                    data: {
                        dataname: "fee_guide_settle_execute",
                        table_dataname: "fee_working_out_base_execute",
                        title: "执行单信息",
                        dataRequest: [
                            {
                                name: "fee_working_out_base_execute", // 业务负责人字段
                                dataname: "fee_working_out_base_execute",
                                url: "root/data/getEntitySet",
                                paramsobj: {dataname: "fee_working_out_base_execute", attachMeta: true, filter: "1<>1"},
                                isnotoption: true, //true:不是选项
                            }
                        ],
                        meta_fee_working_out_base_execute: [],
                        options_md_org_master: [],
                        md_bu_org_obj: {},
                        options_md_bu: [],
                        productobj_map: {},
                        md_bu_product_obj: {},
                        md_bu_product_bu_obj: {},
                        md_prod_sku_obj: {},
                        formAttr: {
                            istitle: false,
                            title: "表单名称",
                            columnnumber: 3,
                            labelwidth: "100px",
                            labelposition: "left",//"left",// right//top
                            size: "mini",
                            border: "10px solid #c6c6c600",
                            borderleft: "0px"
                        },
                        formFields: [],
                        newformData: {
                            state_code: "Input",
                            state_name: "录入",
                            is_active: true,
                            source: "手动录入",
                            type_code: "Customer", // Standard标准价目表、Customer经销商价目表
                        },
                        formData: {},
                        isRefresh: true,
                        tableFields: [],
                        tableData: [],
                        //字段设置
                        tablefieldClick: {},
                        pagesize: 10,
                        pagenum: 1,
                        total: 0,
                        tableHeight: 200,
                        tableloading: false,
                        //按键权限设置
                        isedit: false,//提交前编辑,保存/提交
                        isrefuseedit: false,//拒绝后编辑,保存/再次提交
                        isapproval: false,//审批,同意/拒绝/转办/退回
                        iscommit: false,//提交标记
                        //弹窗参数
                        popupParames: {},
                        formfieldClick: {},
                        dheight: null,
                        agreementdata: {},
                        options_product: [],
                        //审批相关变量
                        reasonvisible:false,//审批通过或拒绝填写原因
                        approveremark: '',//填写理由
                        passOrRefuse:false,
                        loading_pass: false,
                    },
                    created() {
                        this.popupParames = clone(Root.popupParames);
                        // this.title = this.popupParames.title || this.popupParames.text
                        if (this.popupParames.data) {
                            if (this.popupParames.data._datano) {
                                this.title = this.title + this.popupParames.data._datano;
                            }
                            this.formData = clone(this.popupParames.data);
                        }
                        if (this.popupParames.delta && this.popupParames.delta.dataname) {
                            this.dataname = clone(this.popupParames.delta.dataname);
                        }
                        if (this.popupParames.delta && this.popupParames.delta.agreementdata) {
                            this.agreementdata = clone(this.popupParames.delta.agreementdata);
                        }
                        if (this.popupParames.delta && this.popupParames.delta.options_product) {
                            this.options_product = clone(this.popupParames.delta.options_product);
                        }
                        if (this.popupParames.sceneCode) {
                            if (this.popupParames.sceneCode == "add") {//新增
                                var newEntity_ = {
                                    name: "newEntity",
                                    url: "root/data/newEntity",
                                    paramsobj: {dataname: this.dataname},
                                    isnotoption: true, //true:不是选项
                                }
                                this.dataRequest.push(newEntity_);
                                for (var k in this.popupParames.data) {
                                    this.newformData[k] = this.popupParames.data[k]
                                }
                                this.isedit = true;
                            }
                            else if (this.popupParames.sceneCode == "browse") {//只读
                                this.formAttr.disabled = true;
                            }
                            else if (this.popupParames.sceneCode == "edit" || this.popupParames.sceneCode == "editbyagreement") {//编辑
                                this.isedit = true;
                            }
                            else if (this.popupParames.sceneCode == "approval") {//审批
                                this.formAttr.disabled = true;
                                this.isapproval = true;
                                if (this.formData.current_step_name && this.formData.current_step_name == "运营部门复核") {
                                    this.isedit = true;
                                }
                            }
                            else if (this.popupParames.sceneCode == "refuseedit") {//拒绝后的编辑
                                this.isrefuseedit = true;
                            }
                        }
                    },
                    mounted() {
                        var me = this;
                        var title_h = 0;
                        if (me.popupParames.totab) {
                            title_h = 42;
                        }
                        me.dheight = document.documentElement.clientHeight - 50 - title_h;
                        //预加载数据
                        if (this.dataRequest && this.dataRequest.length) {
                            var result = {};
                            this.loadRequestData(this.dataRequest, result, function(data) {
                                me.dataRequestObj = data;
                                //预加载数据后给哪些字段设置options或formatterjson
                                if (me.dataRequestObj.newEntity) {
                                    var formData = clone(me.dataRequestObj.newEntity.data[me.dataname]);
                                    if (me.newformData) {
                                        let formData_ = clone(formData);
                                        for (var k in me.newformData) {
                                            if (!formData_[k]) {
                                                formData_[k] = me.newformData[k];
                                            }
                                        }
                                        me.formData = formData_;
                                    }
                                }
                                // 获取变更的字段
                                if (me.dataRequestObj.fee_working_out_base_execute) {
                                    let meta_ = me.dataRequestObj.fee_working_out_base_execute.meta.fee_working_out_base_execute.fields;
                                    meta_.map(f=>{
                                        f.isshow = "T";
                                        if (f.field == "_qty_trans" || f.field == "_qty_cal" || f.field == "_qty_final" || f.field == "_amt_final") {
                                            f.isfixed = "right";
                                        }
                                    })
                                    me.meta_fee_working_out_base_execute = clone(meta_)
                                }
                                me.initData();
                            });
                        }
                        else {
                            this.initData();
                        }
                        // 以服务的方式调用的 Loading 需要异步关闭
                        this.$nextTick(() => {
                            hideLoading();
                        });
                    },
                    methods:{
                        //关闭弹窗
                        closeDialog() {
                            var me = this;
                            if (me.popupParames.totab){
                                Root.tab.removeItem(Root.tab.selected);
                                Root.tab.open(me.popupParames.parentOption, false);
                            }
                            else {
                                Root.hidePopup();
                            }
                        },
                        //关闭前调回调
                        saveAfter() {
                            var me = this;
                            if(this.popupParames.callback) {
                                let obj = {
                                    //row: this.formData
                                }
                                this.popupParames.callback(obj, function() {
                                    me.closeDialog();
                                });
                            }
                            else {
                                me.closeDialog();
                            }
                        },
                        initData() {
                            let me = this;
                            var id_ = null;
                            if (this.formData.id) {
                                id_ = this.formData.id;
                            }
                            this.getRowDataById(id_, function(result) { //查询后的回调,用于获取字段的
                                if (result.meta && result.meta[me.dataname] && result.meta[me.dataname].fields) {
                                    var metas = clone(result.meta[me.dataname].fields);
                                    var formFields_ = [];
                                    metas.map(f=>{
                                        f.isshow = "T";
                                        if (f.field == "company_id") {
                                            // f.isshow = "F";
                                            f.options = me.options_md_org_master
                                        }
                                        if (f.field == "product_id") {
                                            f.props = {label: "value", value: "code", multiple: false};
                                            if (me.options_product.length) {
                                                f.options = clone(me.options_product);
                                            }
                                            else if (me.formData.bu_id && me.md_bu_product_obj[me.formData.bu_id]) {
                                                f.options = clone(me.md_bu_product_obj[me.formData.bu_id].children);
                                            }
                                            else {
                                                f.options = [];
                                            }
                                        }
                                        // if (f.field == "customer_name" && (me.popupParames.sceneCode == "addbyagreement" || me.popupParames.sceneCode == "editbyagreement")) {
                                        //     f.disabled = true;
                                        // }
                                        // if ((f.field == "date_from" || f.field == "date_to") && (me.popupParames.sceneCode == "addbyagreement" || me.popupParames.sceneCode == "editbyagreement")) {
                                        //     f.isshow = false;
                                        // }
                                        formFields_.push(clone(f));
                                    })
                                    if (!me.formFields || (me.formFields && me.formFields.length == 0)) {
                                        me.formFields = clone(formFields_);
                                        me.tableFields = clone(me.meta_fee_working_out_base_execute);
                                        //设置字段事件
                                        me.tableFieldClick();
                                    }
                                    if (me.formData.company_id) {
                                        var formFields_ = clone(me.formFields);
                                        formFields_.map(f=>{
                                            if (f.field == "bu_id") {
                                                if (me.md_bu_org_obj[me.formData.company_id] && me.md_bu_org_obj[me.formData.company_id].length) {
                                                    f.options = clone(me.md_bu_org_obj[me.formData.company_id])
                                                }
                                            }
                                        })
                                        me.formFields = clone(formFields_);
                                    }
                                    if (me.formData.product_id) {
                                        var select_p_ = [me.formData.product_id];
                                        me.formData.product_id = clone(select_p_);
                                        var formFields_ = clone(me.formFields);
                                        formFields_.map(f=>{
                                            if (f.field == "spec") {
                                                if (me.formData.product_id) {
                                                    f.options = clone(me.md_prod_sku_obj[me.formData.product_id[0]]);
                                                }
                                                else {
                                                    f.options = [];
                                                }
                                            }
                                        })
                                        me.formFields = clone(formFields_);
                                    }
                                    me.onTableQuery();
                                }
                            })
                        },
                        tableFieldClick() {
                            var me = this;
                            //表单字段事件设置
                            this.formfieldClick = {
                                type_code: {
                                    select: {
                                        onchange: function(obj,refreshCallback) {//下拉展开事件
                                            obj.data.type_name = obj.selectoption.value || "";
                                            var formFields_ = clone(me.formFields);
                                            formFields_.map(f=>{
                                                if (f.field == "account_name") { // f.field == "company_id" || f.field == "bu_id" ||
                                                    if (obj.data.type_code == "Onsite") { // 优惠价格
                                                        f.required = false
                                                    }
                                                    else {
                                                        f.required = true
                                                    }
                                                }
                                            })
                                            me.formFields = clone(formFields_);
                                        },
                                    },
                                },
                                _qty_trans: {
                                    val: {
                                        onchange: function(obj) {
                                            var formData_ = clone(me.formData);
                                            formData_._qty_trans = formData_._qty_trans * 1;
                                            if (formData_._qty_cal) {
                                                formData_._qty_final = (formData_._qty_cal * 1) - (formData_._qty_trans * 1)
                                                formData_._amt_final = formData_._qty_final  * formData_._taxunitprice
                                            }
                                            me.formData = clone(formData_);
                                        }
                                    },
                                    input: {
                                        onchange: function(obj) {
                                            var formData_ = clone(me.formData);
                                            formData_._qty_trans = formData_._qty_trans * 1;
                                            if (formData_._qty_cal) {
                                                formData_._qty_final = (formData_._qty_cal * 1) - (formData_._qty_trans * 1)
                                                formData_._amt_final = formData_._qty_final  * formData_._taxunitprice
                                            }
                                            me.formData = clone(formData_);
                                        }
                                    }
                                },
                            };
                            this.tablefieldClick = {
                                _qty_trans: {
                                    input: {
                                        onchange: function(obj) {
                                            obj.row._qty_trans = obj.row._qty_trans * 1;
                                            if (obj.row._qty_cal) {
                                                obj.row._qty_final = (obj.row._qty_cal * 1) - (obj.row._qty_trans * 1)
                                                obj.row._amt_final = obj.row._qty_final  * obj.row._taxunitprice
                                            }
                                            me.saveTableRow(obj.row);
                                        }
                                    }
                                },
                            }
                        },
                        saveTableRow(row) {
                            var me = this;
                            var entity_ = clone(row);
                            var entity = {
                                _qty_trans: entity_._qty_trans,
                                _qty_final: entity_._qty_final,
                                _amt_final: entity_._amt_final,
                                id: entity_.id
                            };
                            let param = {
                                dataname: me.table_dataname,
                                data: {},
                            }
                            if (entity.id) {
                                param.id = entity.id
                            }
                            param.data[me.table_dataname] = entity;
                            Server.call("root/data/saveEntity", param, function(result) {
                            }, function(errorresult) {
                                console.log("错误信息", errorresult);
                                if (errorresult.messages && errorresult.messages.count && errorresult.messages.count.error) {
                                    if (errorresult.messages.list) {
                                        var config = {
                                            totab: false,
                                            icon: "icon-product",
                                            text: "错误信息",
                                            url: "module/tool/page/popup_error_messages.html",
                                            data: {},
                                            delta: errorresult.messages.list,
                                            callback: function(obj, callback) {
                                                if (callback) {
                                                    callback();
                                                }
                                            }
                                        };
                                        me.doPopupByPublic(config);
                                    }
                                }
                                else if (errorresult.exists_errors && errorresult.exists_errors.length) {
                                    var messages_list = []
                                    var index_ = 0;
                                    errorresult.exists_errors.map(r=>{
                                        index_ ++;
                                        var messages_ = {
                                            step: index_,
                                            level: "Error",
                                            message: r.title + "【" + r.errors[0].record_no +  r.errors[0].record_name?r.errors[0].record_name: '' + "】"
                                        }
                                        messages_list.push(messages_)
                                    })
                                    var config = {
                                        totab: false,
                                        // width: "1200px",
                                        // height: 800,
                                        icon: "icon-product",
                                        text: "错误信息",
                                        url: "module/tool/page/popup_error_messages.html",
                                        data: {},
                                        delta: messages_list,
                                        callback: function(obj, callback) {
                                            if (callback) {
                                                callback();
                                            }
                                        }
                                    };
                                    me.doPopupByPublic(config);
                                }
                                else {
                                    Root.message({
                                        type: 'error',
                                        message: '调整失败'
                                    });
                                }
                            });
                        },
                        openAccount(sceneCode, obj, callback) {
                            var me = this;
                            var data_ = {};
                            var config = {
                                totab: false, //true: 以Tab导航的方式打开
                                width: "800px",
                                height: "520px",
                                icon: "icon-product",
                                text: "经销商选择",
                                id: "popup_account",//totab: true时需设置,用于判断是否已打开此页面
                                url: "module/md/page/popup/page/popup_account.html",
                                data: data_,
                                delta: {},
                                // filter: "org_id='"+ me.selectedrow.org_id + "' and bu_id='" + me.selectedrow.bu_id + "'",
                                filter: "md_org_account.state_code='Open'",
                                sceneCode: sceneCode,//"refuseedit",//"approval", //"add"//"browse",
                                callback: function(popupobj, popupcallback) {
                                    callback(popupobj);
                                    if (popupcallback) {
                                        popupcallback();
                                    }
                                }
                            };
                            me.doPopupByPublic(config);
                        },
                        openOrg(sceneCode, obj, callback) {
                            var me = this;
                            var config = {
                                totab: false, //true: 以Tab导航的方式打开
                                width: "800px",
                                height: "520px",
                                icon: "icon-product",
                                text: "选择配送商",
                                id: "popup_customer",//totab: true时需设置,用于判断是否已打开此页面
                                url: "module/md/page/popup/page/popup_customer.html",
                                data: {},
                                delta: "",
                                // filter: "category_code='"+ me.positiondata.org_id + "' and bu_id='" + me.positiondata.bu_id + "'",
                                filter: "is_distributor='T'",
                                sceneCode: "add",//"refuseedit",//"approval", //"add"//"browse",
                                callback: function(popupobj, popupcallback) {
                                    callback(popupobj);
                                    if (popupcallback) {
                                        popupcallback();
                                    }
                                }
                            };
                            me.doPopupByPublic(config);
                        },
                        openHospital(sceneCode, obj, callback) {
                            var me = this;
                            var data_ = {};
                            var config = {
                                totab: false, //true: 以Tab导航的方式打开
                                width: "800px",
                                height: "520px",
                                icon: "icon-product",
                                text: "医院选择",
                                id: "popup_hospital",//totab: true时需设置,用于判断是否已打开此页面
                                url: "module/md/page/popup/page/popup_hospital.html",
                                data: data_,
                                delta: {},
                                // filter: "org_id='"+ me.selectedrow.org_id + "' and bu_id='" + me.selectedrow.bu_id + "'",
                                filter: "",
                                sceneCode: sceneCode,//"refuseedit",//"approval", //"add"//"browse",
                                callback: function(popupobj, popupcallback) {
                                    callback(popupobj);
                                    if (popupcallback) {
                                        popupcallback();
                                    }
                                }
                            };
                            me.doPopupByPublic(config);
                        },
                        open_productlist(obj) {
                            var me = this;
                            Root.showPopup({
                                url: "../md/product/popup/sku_list.html",
                                width: 800,
                                height: 550,
                                callback: function(obj, callback) {
                                    let formData_ = clone(me.formData);
                                    formData_.product_id = obj.row.id;
                                    formData_.product_code = obj.row.md_code;
                                    formData_.product_name = obj.row.md_description;
                                    //formData_.spec = obj.row.pack_specification;
                                    me.formData = formData_;
                                    if (callback) {
                                        callback();
                                    }
                                }
                            });
                        },
                        getData: function(page) {
                            this.pagesize = page.pagesize;
                            this.pagenum = page.pagenum;
                            // if (page.filtersobj) {
                            //     this.filterObj = page.filtersobj;
                            // }
                            // this.selectedrow = {};
                            this.onTableQuery();
                        },
                        onTableQuery() {
                            var me = this
                            let filter_ = "task_id='" + this.formData.id + "'";
                            let param_ = {
                                dataname: this.table_dataname,
                                filter: filter_,
                                orderby: "_dataNo",
                                page: {
                                    pageno: this.pagenum,
                                    pagesize: this.pagesize
                                },
                                attachMeta: false
                            }
                            me.tableData = [];
                            me.tableloading = true;
                            Server.call("root/data/getEntitySet", param_, function(result) {
                                me.tableloading = false;
                                if (result && result.data && result.data.entityset) {
                                    var data_ = result.data.entityset;
                                    me.tableData = data_;
                                    me.total = result.data.page ? result.data.page.recordcount : 0;
                                }
                                else {
                                    me.total = 0;
                                }
                            }, function(){
                                me.tableloading = false;
                            });
                        },
                        //提交
                        submitRowTable() {
                            var me = this;
                            var bo_ = this.$refs.form1.checkForm();
                            if (!bo_) {
                                bo_ = false;
                                Root.message({
                                    type: 'error',
                                    message: '请填写必填项'
                                });
                                return
                            }
                            this.iscommit = true;
                            this.saveRowTable();
                        },
                        //保存
                        saveRowTable(callback) {
                            var me = this;
                            var operator_ = "saveEntity";//保存
                            // if(me.iscommit) {
                            //     operator_ = "commit";//提交
                            // }
                            var entity_ = clone(this.formData);
                            var entity = {
                                _qty_trans: entity_._qty_trans,
                                _qty_final: entity_._qty_final,
                                _amt_final: entity_._amt_final,
                                id: entity_.id
                            };
                            let param = {
                                dataname: me.dataname,
                                data: {},
                            }
                            if (me.formData.id) {
                                param.id = me.formData.id
                            }
                            param.data[me.dataname] = entity;
                            Server.call("root/data/" + operator_, param, function(result) {
                                console.log(result);
                                if (result.success) {
                                    if (callback) {
                                        callback()
                                    }
                                    else {
                                        if(me.iscommit){
                                            me.iscommit = false;
                                            Root.message({
                                                type: 'success',
                                                message: '提交成功'
                                            });
                                            me.saveAfter();
                                        }
                                        else {
                                            Root.message({
                                                type: 'success',
                                                message: '保存成功'
                                            });
                                            me.saveAfter();
                                        }
                                    }
                                }
                            }, function(errorresult) {
                                console.log("错误信息", errorresult);
                                if (errorresult.messages && errorresult.messages.count && errorresult.messages.count.error) {
                                    if (errorresult.messages.list) {
                                        me.iscommit = false;
                                        var config = {
                                            totab: false,
                                            // width: "1200px",
                                            // height: 800,
                                            icon: "icon-product",
                                            text: "错误信息",
                                            url: "module/tool/page/popup_error_messages.html",
                                            data: {},
                                            delta: errorresult.messages.list,
                                            callback: function(obj, callback) {
                                                if (callback) {
                                                    callback();
                                                }
                                            }
                                        };
                                        me.doPopupByPublic(config);
                                    }
                                }
                                else if (errorresult.exists_errors && errorresult.exists_errors.length) {
                                    var messages_list = []
                                    var index_ = 0;
                                    errorresult.exists_errors.map(r=>{
                                        index_ ++;
                                        var messages_ = {
                                            step: index_,
                                            level: "Error",
                                            message: r.title + "【" + r.errors[0].record_no +  r.errors[0].record_name?r.errors[0].record_name: '' + "】"
                                        }
                                        messages_list.push(messages_)
                                    })
                                    me.iscommit = false;
                                    var config = {
                                        totab: false,
                                        // width: "1200px",
                                        // height: 800,
                                        icon: "icon-product",
                                        text: "错误信息",
                                        url: "module/tool/page/popup_error_messages.html",
                                        data: {},
                                        delta: messages_list,
                                        callback: function(obj, callback) {
                                            if (callback) {
                                                callback();
                                            }
                                        }
                                    };
                                    me.doPopupByPublic(config);
                                }
                                else {
                                    me.iscommit = false;
                                    Root.message({
                                        type: 'error',
                                        message: '提交失败'
                                    });
                                }
                            });
                        },
                        // 通过或拒绝
                        onShowApproval(passOrRefuse) {
                            this.approveremark = "";
                            this.reasonvisible = true;//审批备注填写弹窗
                            this.passOrRefuse = passOrRefuse;// commit下一个状态;approve通过;gohome;//拒绝 goback;//回退
                        },
                        saveReason() {
                            this.loading_pass = true;
                            if(this.passOrRefuse == "commit" || this.passOrRefuse == "approve"){
                                this.doApproval();
                            }
                            else{
                                if(this.approveremark != ""){
                                    this.doApproval();
                                }
                                else{
                                    Root.message({
                                        type: 'warning',
                                        message: '请填写原因'
                                    });
                                    this.loading_pass = false;
                                }
                            }
                        },
                        doApproval(bo) {
                            var me = this;
                            // if (this.isedit) {
                            //     this.saveRowTable(function() {
                            //         me.doRunApproval();
                            //     });
                            // }
                            // else {
                                me.doRunApproval();
                            // }
                        },
                        getMachine(callback) {
                            var me = this;
                            let param = {
                                dataname: me.dataname,
                            }
                            Server.call("root/state/getMachine", param, function(result) {
                                var next_step = {}; // 向下流程
                                var up_step = {}; // 向上流程
                                if (result && result.machine && result.machine.detail) {
                                    result.machine.detail.map(md=>{
                                        next_step[md.from_code] = md.to_code;
                                        up_step[md.to_code] = md.from_code;
                                    })
                                    callback(next_step, up_step);
                                }
                            })
                        },
                        doRunApproval() {
                            var me = this;
                            let param = {
                                dataname: me.dataname,
                                id: me.formData.id,
                                // to_state: to_state_,
                                remark: this.approveremark
                            }
                            //
                            // return
                            Server.call("root/data/" + this.passOrRefuse, param, function(result) {
                                me.loading_pass = false;
                                console.log(result);
                                if (me.passOrRefuse == "commit" || me.passOrRefuse == "approve") {
                                    Root.message({
                                        type: 'success',
                                        message: '审批成功'
                                    });
                                }
                                else if (me.passOrRefuse == "goback") {
                                    Root.message({
                                        type: 'success',
                                        message: '已退回'
                                    });
                                }
                                else if (me.passOrRefuse == "gohome") {
                                    Root.message({
                                        type: 'success',
                                        message: '已拒绝'
                                    });
                                }
                                me.saveAfter();
                            }, function(errorresult) {
                                console.log("错误信息", errorresult);
                                me.loading_pass = false;
                                if (errorresult.messages && errorresult.messages.count && errorresult.messages.count.error) {
                                    if (errorresult.messages.list) {
                                        var config = {
                                            totab: false,
                                            // width: "1200px",
                                            // height: 800,
                                            icon: "icon-product",
                                            text: "错误信息",
                                            url: "module/tool/page/popup_error_messages.html",
                                            data: {},
                                            delta: errorresult.messages.list,
                                            callback: function(obj, callback) {
                                                if (callback) {
                                                    callback();
                                                }
                                            }
                                        };
                                        me.doPopupByPublic(config);
                                    }
                                }
                                else {
                                    Root.message({
                                        type: 'error',
                                        message: '审批失败'
                                    });
                                }
                            });
                        },
                    }
                });
            };
            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 ref="popup_body" style="padding: 0 20px;">
                    <div v-if="popupParames.totab" class="el-dialog__header">
                        <div class="dialog-title">
                          <i class="iconfont icon-customermanagement"></i>
                          <span> {{title}}</span>
                        </div>
                    </div>
                    <div :style="{height: dheight + 'px', 'overflow-y': 'auto'}">
                        <div class="el-dialog__body">
                            <h-form
                                ref="form1"
                                :form-attr="formAttr"
                                :table-fields="formFields"
                                :form-data="formData"
                                :table-field-click="formfieldClick"
                            >
                            </h-form>
                        </div>
                        <div class="h_BU">
                            <div style="padding: 0px;">
                                <h-table
                                    v-if="isRefresh"
                                    ref="table1"
                                    :table-fields="tableFields"
                                    :table-data="tableData"
                                    :is-within-edit-table-data="isedit"
                                    :table-field-click="tablefieldClick"
                                    :pagesize="pagesize"
                                    :pagenum="pagenum"
                                    :total="total"
                                    :table-height="dheight - 252 - 64"
                                    :is-highlight-row="true"
                                    :isdraggableorder="false"
                                    :isshowtool="false"
                                    :isshow-shoppingcart="false"
                                    v-on:get-data="getData"
                                >
                                </h-table>
                                <!--
                                 :is-edit-table-data="isWithinEditTableData"
                                 -->
                            </div>
                        </div>
                    </div>
                    <el-dialog title="填写原因" :visible.sync="reasonvisible" height="50%">
                        <el-input
                        type="textarea"
                        :autosize="{ minRows: 2, maxRows: 10}"
                        placeholder="请输入原因"
                        v-model="approveremark">
                        </el-input>
                        <div slot="footer" class="dialog-footer" >
                        <el-button type="default" @click="reasonvisible = false">取 消</el-button>
                        <el-button type="primary" :loading="loading_pass" @click="saveReason">确 定</el-button>
                        </div>
                    </el-dialog>
                    <div class="el-dialog__footer">
                        <el-button-group style="margin-right: 80px;" >
                            <el-button  size="small" v-if="isapproval" type="warning" plain @click="onShowApproval('gohome')">退回到申请人</el-button>
                            <el-button  size="small" v-if="isapproval" type="danger" plain @click="onShowApproval('goback')">退回到上一步</el-button>
                        </el-button-group>
                        <el-button size="small" type="default" @click="closeDialog">取 消</el-button>
                        <!-- <el-button size="small" v-if="isedit || isrefuseedit" type="primary" :loading="loading_save" @click="saveRowTable()":icon="buttonsconfig.save.icon">{{buttonsconfig.save.name}}</el-button>
                        <el-button size="small" v-if="isedit && !formData.agreement_id" type="success" :loading="loading_submit" @click="submitRowTable":icon="buttonsconfig.submit.icon">{{buttonsconfig.submit.name}}</el-button>
                         -->
                        <el-button size="small" v-if="isrefuseedit" type="success" @click="">再次提交</el-button>
                        <el-button size="small" v-if="isapproval" type="success" @click="onShowApproval('approve')">通 过</el-button>
                        <!-- <el-button size="small" v-if="isapproval" type="primary" @click="">转 办</el-button> -->
                    </div>
                </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>
module/fee/page/popup/popup_edit_fee_qty.html
New file
@@ -0,0 +1,951 @@
<!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 FormVue({
                    el: "#vbody",
                    data: {
                        dataname: "fee_guide_settle_qty",
                        table_dataname: "fee_working_out_base_qty",
                        title: "数量单信息",
                        dataRequest: [
                            {
                                name: "fee_working_out_base_qty", // 业务负责人字段
                                dataname: "fee_working_out_base_qty",
                                url: "root/data/getEntitySet",
                                paramsobj: {dataname: "fee_working_out_base_qty", attachMeta: true, filter: "1<>1"},
                                isnotoption: true, //true:不是选项
                            }
                        ],
                        meta_fee_working_out_base_qty: [],
                        options_md_org_master: [],
                        md_bu_org_obj: {},
                        options_md_bu: [],
                        productobj_map: {},
                        md_bu_product_obj: {},
                        md_bu_product_bu_obj: {},
                        md_prod_sku_obj: {},
                        formAttr: {
                            istitle: false,
                            title: "表单名称",
                            columnnumber: 3,
                            labelwidth: "100px",
                            labelposition: "left",//"left",// right//top
                            size: "mini",
                            border: "10px solid #c6c6c600",
                            borderleft: "0px"
                        },
                        formFields: [],
                        newformData: {
                            state_code: "Input",
                            state_name: "录入",
                            is_active: true,
                            source: "手动录入",
                            type_code: "Customer", // Standard标准价目表、Customer经销商价目表
                        },
                        formData: {},
                        isRefresh: true,
                        tableFields: [],
                        tableData: [],
                        //字段设置
                        tablefieldClick: {},
                        pagesize: 10,
                        pagenum: 1,
                        total: 0,
                        tableHeight: 200,
                        tableloading: false,
                        //按键权限设置
                        isedit: false,//提交前编辑,保存/提交
                        isrefuseedit: false,//拒绝后编辑,保存/再次提交
                        isapproval: false,//审批,同意/拒绝/转办/退回
                        iscommit: false,//提交标记
                        //弹窗参数
                        popupParames: {},
                        formfieldClick: {},
                        dheight: null,
                        agreementdata: {},
                        options_product: [],
                        //审批相关变量
                        reasonvisible:false,//审批通过或拒绝填写原因
                        approveremark: '',//填写理由
                        passOrRefuse:false,
                        loading_pass: false,
                    },
                    created() {
                        this.popupParames = clone(Root.popupParames);
                        // this.title = this.popupParames.title || this.popupParames.text
                        if (this.popupParames.data) {
                            if (this.popupParames.data._datano) {
                                this.title = this.title + this.popupParames.data._datano;
                            }
                            this.formData = clone(this.popupParames.data);
                        }
                        if (this.popupParames.delta && this.popupParames.delta.dataname) {
                            this.dataname = clone(this.popupParames.delta.dataname);
                        }
                        if (this.popupParames.delta && this.popupParames.delta.agreementdata) {
                            this.agreementdata = clone(this.popupParames.delta.agreementdata);
                        }
                        if (this.popupParames.delta && this.popupParames.delta.options_product) {
                            this.options_product = clone(this.popupParames.delta.options_product);
                        }
                        if (this.popupParames.sceneCode) {
                            if (this.popupParames.sceneCode == "add") {//新增
                                var newEntity_ = {
                                    name: "newEntity",
                                    url: "root/data/newEntity",
                                    paramsobj: {dataname: this.dataname},
                                    isnotoption: true, //true:不是选项
                                }
                                this.dataRequest.push(newEntity_);
                                for (var k in this.popupParames.data) {
                                    this.newformData[k] = this.popupParames.data[k]
                                }
                                this.isedit = true;
                            }
                            else if (this.popupParames.sceneCode == "browse") {//只读
                                this.formAttr.disabled = true;
                            }
                            else if (this.popupParames.sceneCode == "edit" || this.popupParames.sceneCode == "editbyagreement") {//编辑
                                this.isedit = true;
                            }
                            else if (this.popupParames.sceneCode == "approval") {//审批
                                this.formAttr.disabled = true;
                                this.isapproval = true;
                                if (this.formData.current_step_name && this.formData.current_step_name == "运营部门复核") {
                                    this.isedit = true;
                                }
                            }
                            else if (this.popupParames.sceneCode == "refuseedit") {//拒绝后的编辑
                                this.isrefuseedit = true;
                            }
                        }
                    },
                    mounted() {
                        var me = this;
                        var title_h = 0;
                        if (me.popupParames.totab) {
                            title_h = 42;
                        }
                        me.dheight = document.documentElement.clientHeight - 50 - title_h;
                        //预加载数据
                        if (this.dataRequest && this.dataRequest.length) {
                            var result = {};
                            this.loadRequestData(this.dataRequest, result, function(data) {
                                me.dataRequestObj = data;
                                //预加载数据后给哪些字段设置options或formatterjson
                                if (me.dataRequestObj.newEntity) {
                                    var formData = clone(me.dataRequestObj.newEntity.data[me.dataname]);
                                    if (me.newformData) {
                                        let formData_ = clone(formData);
                                        for (var k in me.newformData) {
                                            if (!formData_[k]) {
                                                formData_[k] = me.newformData[k];
                                            }
                                        }
                                        me.formData = formData_;
                                    }
                                }
                                // 获取变更的字段
                                if (me.dataRequestObj.fee_working_out_base_qty) {
                                    let meta_ = me.dataRequestObj.fee_working_out_base_qty.meta.fee_working_out_base_qty.fields;
                                    meta_.map(f=>{
                                        f.isshow = "T";
                                        if (f.field == "_qty_trans" || f.field == "_qty_cal" || f.field == "_qty_final" || f.field == "_amt_final") {
                                            f.isfixed = "right";
                                        }
                                    })
                                    me.meta_fee_working_out_base_qty = clone(meta_)
                                }
                                me.initData();
                            });
                        }
                        else {
                            this.initData();
                        }
                        // 以服务的方式调用的 Loading 需要异步关闭
                        this.$nextTick(() => {
                            hideLoading();
                        });
                    },
                    methods:{
                        //关闭弹窗
                        closeDialog() {
                            var me = this;
                            if (me.popupParames.totab){
                                Root.tab.removeItem(Root.tab.selected);
                                Root.tab.open(me.popupParames.parentOption, false);
                            }
                            else {
                                Root.hidePopup();
                            }
                        },
                        //关闭前调回调
                        saveAfter() {
                            var me = this;
                            if(this.popupParames.callback) {
                                let obj = {
                                    //row: this.formData
                                }
                                this.popupParames.callback(obj, function() {
                                    me.closeDialog();
                                });
                            }
                            else {
                                me.closeDialog();
                            }
                        },
                        initData() {
                            let me = this;
                            var id_ = null;
                            if (this.formData.id) {
                                id_ = this.formData.id;
                            }
                            this.getRowDataById(id_, function(result) { //查询后的回调,用于获取字段的
                                if (result.meta && result.meta[me.dataname] && result.meta[me.dataname].fields) {
                                    var metas = clone(result.meta[me.dataname].fields);
                                    var formFields_ = [];
                                    metas.map(f=>{
                                        f.isshow = "T";
                                        if (f.field == "company_id") {
                                            // f.isshow = "F";
                                            f.options = me.options_md_org_master
                                        }
                                        if (f.field == "product_id") {
                                            f.props = {label: "value", value: "code", multiple: false};
                                            if (me.options_product.length) {
                                                f.options = clone(me.options_product);
                                            }
                                            else if (me.formData.bu_id && me.md_bu_product_obj[me.formData.bu_id]) {
                                                f.options = clone(me.md_bu_product_obj[me.formData.bu_id].children);
                                            }
                                            else {
                                                f.options = [];
                                            }
                                        }
                                        // if (f.field == "customer_name" && (me.popupParames.sceneCode == "addbyagreement" || me.popupParames.sceneCode == "editbyagreement")) {
                                        //     f.disabled = true;
                                        // }
                                        // if ((f.field == "date_from" || f.field == "date_to") && (me.popupParames.sceneCode == "addbyagreement" || me.popupParames.sceneCode == "editbyagreement")) {
                                        //     f.isshow = false;
                                        // }
                                        formFields_.push(clone(f));
                                    })
                                    if (!me.formFields || (me.formFields && me.formFields.length == 0)) {
                                        me.formFields = clone(formFields_);
                                        me.tableFields = clone(me.meta_fee_working_out_base_qty);
                                        //设置字段事件
                                        me.tableFieldClick();
                                    }
                                    if (me.formData.company_id) {
                                        var formFields_ = clone(me.formFields);
                                        formFields_.map(f=>{
                                            if (f.field == "bu_id") {
                                                if (me.md_bu_org_obj[me.formData.company_id] && me.md_bu_org_obj[me.formData.company_id].length) {
                                                    f.options = clone(me.md_bu_org_obj[me.formData.company_id])
                                                }
                                            }
                                        })
                                        me.formFields = clone(formFields_);
                                    }
                                    if (me.formData.product_id) {
                                        var select_p_ = [me.formData.product_id];
                                        me.formData.product_id = clone(select_p_);
                                        var formFields_ = clone(me.formFields);
                                        formFields_.map(f=>{
                                            if (f.field == "spec") {
                                                if (me.formData.product_id) {
                                                    f.options = clone(me.md_prod_sku_obj[me.formData.product_id[0]]);
                                                }
                                                else {
                                                    f.options = [];
                                                }
                                            }
                                        })
                                        me.formFields = clone(formFields_);
                                    }
                                    me.onTableQuery();
                                }
                            })
                        },
                        tableFieldClick() {
                            var me = this;
                            //表单字段事件设置
                            this.formfieldClick = {
                                type_code: {
                                    select: {
                                        onchange: function(obj,refreshCallback) {//下拉展开事件
                                            obj.data.type_name = obj.selectoption.value || "";
                                            var formFields_ = clone(me.formFields);
                                            formFields_.map(f=>{
                                                if (f.field == "account_name") { // f.field == "company_id" || f.field == "bu_id" ||
                                                    if (obj.data.type_code == "Onsite") { // 优惠价格
                                                        f.required = false
                                                    }
                                                    else {
                                                        f.required = true
                                                    }
                                                }
                                            })
                                            me.formFields = clone(formFields_);
                                        },
                                    },
                                },
                                _qty_trans: {
                                    val: {
                                        onchange: function(obj) {
                                            var formData_ = clone(me.formData);
                                            formData_._qty_trans = formData_._qty_trans * 1;
                                            if (formData_._qty_cal) {
                                                formData_._qty_final = (formData_._qty_cal * 1) - (formData_._qty_trans * 1)
                                                formData_._amt_final = formData_._qty_final  * formData_._taxunitprice
                                            }
                                            me.formData = clone(formData_);
                                        }
                                    },
                                    input: {
                                        onchange: function(obj) {
                                            var formData_ = clone(me.formData);
                                            formData_._qty_trans = formData_._qty_trans * 1;
                                            if (formData_._qty_cal) {
                                                formData_._qty_final = (formData_._qty_cal * 1) - (formData_._qty_trans * 1)
                                                formData_._amt_final = formData_._qty_final  * formData_._taxunitprice
                                            }
                                            me.formData = clone(formData_);
                                        }
                                    }
                                },
                            };
                            this.tablefieldClick = {
                                _qty_trans: {
                                    input: {
                                        onchange: function(obj) {
                                            obj.row._qty_trans = obj.row._qty_trans * 1;
                                            if (obj.row._qty_cal) {
                                                obj.row._qty_final = (obj.row._qty_cal * 1) - (obj.row._qty_trans * 1)
                                                obj.row._amt_final = obj.row._qty_final  * obj.row._taxunitprice
                                            }
                                            me.saveTableRow(obj.row);
                                        }
                                    }
                                },
                            }
                        },
                        saveTableRow(row) {
                            var me = this;
                            var entity_ = clone(row);
                            var entity = {
                                _qty_trans: entity_._qty_trans,
                                _qty_final: entity_._qty_final,
                                _amt_final: entity_._amt_final,
                                id: entity_.id
                            };
                            let param = {
                                dataname: me.table_dataname,
                                data: {},
                            }
                            if (entity.id) {
                                param.id = entity.id
                            }
                            param.data[me.table_dataname] = entity;
                            Server.call("root/data/saveEntity", param, function(result) {
                            }, function(errorresult) {
                                console.log("错误信息", errorresult);
                                if (errorresult.messages && errorresult.messages.count && errorresult.messages.count.error) {
                                    if (errorresult.messages.list) {
                                        var config = {
                                            totab: false,
                                            icon: "icon-product",
                                            text: "错误信息",
                                            url: "module/tool/page/popup_error_messages.html",
                                            data: {},
                                            delta: errorresult.messages.list,
                                            callback: function(obj, callback) {
                                                if (callback) {
                                                    callback();
                                                }
                                            }
                                        };
                                        me.doPopupByPublic(config);
                                    }
                                }
                                else if (errorresult.exists_errors && errorresult.exists_errors.length) {
                                    var messages_list = []
                                    var index_ = 0;
                                    errorresult.exists_errors.map(r=>{
                                        index_ ++;
                                        var messages_ = {
                                            step: index_,
                                            level: "Error",
                                            message: r.title + "【" + r.errors[0].record_no +  r.errors[0].record_name?r.errors[0].record_name: '' + "】"
                                        }
                                        messages_list.push(messages_)
                                    })
                                    var config = {
                                        totab: false,
                                        // width: "1200px",
                                        // height: 800,
                                        icon: "icon-product",
                                        text: "错误信息",
                                        url: "module/tool/page/popup_error_messages.html",
                                        data: {},
                                        delta: messages_list,
                                        callback: function(obj, callback) {
                                            if (callback) {
                                                callback();
                                            }
                                        }
                                    };
                                    me.doPopupByPublic(config);
                                }
                                else {
                                    Root.message({
                                        type: 'error',
                                        message: '调整失败'
                                    });
                                }
                            });
                        },
                        openAccount(sceneCode, obj, callback) {
                            var me = this;
                            var data_ = {};
                            var config = {
                                totab: false, //true: 以Tab导航的方式打开
                                width: "800px",
                                height: "520px",
                                icon: "icon-product",
                                text: "经销商选择",
                                id: "popup_account",//totab: true时需设置,用于判断是否已打开此页面
                                url: "module/md/page/popup/page/popup_account.html",
                                data: data_,
                                delta: {},
                                // filter: "org_id='"+ me.selectedrow.org_id + "' and bu_id='" + me.selectedrow.bu_id + "'",
                                filter: "md_org_account.state_code='Open'",
                                sceneCode: sceneCode,//"refuseedit",//"approval", //"add"//"browse",
                                callback: function(popupobj, popupcallback) {
                                    callback(popupobj);
                                    if (popupcallback) {
                                        popupcallback();
                                    }
                                }
                            };
                            me.doPopupByPublic(config);
                        },
                        openOrg(sceneCode, obj, callback) {
                            var me = this;
                            var config = {
                                totab: false, //true: 以Tab导航的方式打开
                                width: "800px",
                                height: "520px",
                                icon: "icon-product",
                                text: "选择配送商",
                                id: "popup_customer",//totab: true时需设置,用于判断是否已打开此页面
                                url: "module/md/page/popup/page/popup_customer.html",
                                data: {},
                                delta: "",
                                // filter: "category_code='"+ me.positiondata.org_id + "' and bu_id='" + me.positiondata.bu_id + "'",
                                filter: "is_distributor='T'",
                                sceneCode: "add",//"refuseedit",//"approval", //"add"//"browse",
                                callback: function(popupobj, popupcallback) {
                                    callback(popupobj);
                                    if (popupcallback) {
                                        popupcallback();
                                    }
                                }
                            };
                            me.doPopupByPublic(config);
                        },
                        openHospital(sceneCode, obj, callback) {
                            var me = this;
                            var data_ = {};
                            var config = {
                                totab: false, //true: 以Tab导航的方式打开
                                width: "800px",
                                height: "520px",
                                icon: "icon-product",
                                text: "医院选择",
                                id: "popup_hospital",//totab: true时需设置,用于判断是否已打开此页面
                                url: "module/md/page/popup/page/popup_hospital.html",
                                data: data_,
                                delta: {},
                                // filter: "org_id='"+ me.selectedrow.org_id + "' and bu_id='" + me.selectedrow.bu_id + "'",
                                filter: "",
                                sceneCode: sceneCode,//"refuseedit",//"approval", //"add"//"browse",
                                callback: function(popupobj, popupcallback) {
                                    callback(popupobj);
                                    if (popupcallback) {
                                        popupcallback();
                                    }
                                }
                            };
                            me.doPopupByPublic(config);
                        },
                        open_productlist(obj) {
                            var me = this;
                            Root.showPopup({
                                url: "../md/product/popup/sku_list.html",
                                width: 800,
                                height: 550,
                                callback: function(obj, callback) {
                                    let formData_ = clone(me.formData);
                                    formData_.product_id = obj.row.id;
                                    formData_.product_code = obj.row.md_code;
                                    formData_.product_name = obj.row.md_description;
                                    //formData_.spec = obj.row.pack_specification;
                                    me.formData = formData_;
                                    if (callback) {
                                        callback();
                                    }
                                }
                            });
                        },
                        getData: function(page) {
                            this.pagesize = page.pagesize;
                            this.pagenum = page.pagenum;
                            // if (page.filtersobj) {
                            //     this.filterObj = page.filtersobj;
                            // }
                            // this.selectedrow = {};
                            this.onTableQuery();
                        },
                        onTableQuery() {
                            var me = this
                            let filter_ = "task_id='" + this.formData.id + "'";
                            let param_ = {
                                dataname: this.table_dataname,
                                filter: filter_,
                                orderby: "_dataNo",
                                page: {
                                    pageno: this.pagenum,
                                    pagesize: this.pagesize
                                },
                                attachMeta: false
                            }
                            me.tableData = [];
                            me.tableloading = true;
                            Server.call("root/data/getEntitySet", param_, function(result) {
                                me.tableloading = false;
                                if (result && result.data && result.data.entityset) {
                                    var data_ = result.data.entityset;
                                    me.tableData = data_;
                                    me.total = result.data.page ? result.data.page.recordcount : 0;
                                }
                                else {
                                    me.total = 0;
                                }
                            }, function(){
                                me.tableloading = false;
                            });
                        },
                        //提交
                        submitRowTable() {
                            var me = this;
                            var bo_ = this.$refs.form1.checkForm();
                            if (!bo_) {
                                bo_ = false;
                                Root.message({
                                    type: 'error',
                                    message: '请填写必填项'
                                });
                                return
                            }
                            this.iscommit = true;
                            this.saveRowTable();
                        },
                        //保存
                        saveRowTable(callback) {
                            var me = this;
                            var operator_ = "saveEntity";//保存
                            // if(me.iscommit) {
                            //     operator_ = "commit";//提交
                            // }
                            var entity_ = clone(this.formData);
                            var entity = {
                                _qty_trans: entity_._qty_trans,
                                _qty_final: entity_._qty_final,
                                _amt_final: entity_._amt_final,
                                id: entity_.id
                            };
                            let param = {
                                dataname: me.dataname,
                                data: {},
                            }
                            if (me.formData.id) {
                                param.id = me.formData.id
                            }
                            param.data[me.dataname] = entity;
                            Server.call("root/data/" + operator_, param, function(result) {
                                console.log(result);
                                if (result.success) {
                                    if (callback) {
                                        callback()
                                    }
                                    else {
                                        if(me.iscommit){
                                            me.iscommit = false;
                                            Root.message({
                                                type: 'success',
                                                message: '提交成功'
                                            });
                                            me.saveAfter();
                                        }
                                        else {
                                            Root.message({
                                                type: 'success',
                                                message: '保存成功'
                                            });
                                            me.saveAfter();
                                        }
                                    }
                                }
                            }, function(errorresult) {
                                console.log("错误信息", errorresult);
                                if (errorresult.messages && errorresult.messages.count && errorresult.messages.count.error) {
                                    if (errorresult.messages.list) {
                                        me.iscommit = false;
                                        var config = {
                                            totab: false,
                                            // width: "1200px",
                                            // height: 800,
                                            icon: "icon-product",
                                            text: "错误信息",
                                            url: "module/tool/page/popup_error_messages.html",
                                            data: {},
                                            delta: errorresult.messages.list,
                                            callback: function(obj, callback) {
                                                if (callback) {
                                                    callback();
                                                }
                                            }
                                        };
                                        me.doPopupByPublic(config);
                                    }
                                }
                                else if (errorresult.exists_errors && errorresult.exists_errors.length) {
                                    var messages_list = []
                                    var index_ = 0;
                                    errorresult.exists_errors.map(r=>{
                                        index_ ++;
                                        var messages_ = {
                                            step: index_,
                                            level: "Error",
                                            message: r.title + "【" + r.errors[0].record_no +  r.errors[0].record_name?r.errors[0].record_name: '' + "】"
                                        }
                                        messages_list.push(messages_)
                                    })
                                    me.iscommit = false;
                                    var config = {
                                        totab: false,
                                        // width: "1200px",
                                        // height: 800,
                                        icon: "icon-product",
                                        text: "错误信息",
                                        url: "module/tool/page/popup_error_messages.html",
                                        data: {},
                                        delta: messages_list,
                                        callback: function(obj, callback) {
                                            if (callback) {
                                                callback();
                                            }
                                        }
                                    };
                                    me.doPopupByPublic(config);
                                }
                                else {
                                    me.iscommit = false;
                                    Root.message({
                                        type: 'error',
                                        message: '提交失败'
                                    });
                                }
                            });
                        },
                        // 通过或拒绝
                        onShowApproval(passOrRefuse) {
                            this.approveremark = "";
                            this.reasonvisible = true;//审批备注填写弹窗
                            this.passOrRefuse = passOrRefuse;// commit下一个状态;approve通过;gohome;//拒绝 goback;//回退
                        },
                        saveReason() {
                            this.loading_pass = true;
                            if(this.passOrRefuse == "commit" || this.passOrRefuse == "approve"){
                                this.doApproval();
                            }
                            else{
                                if(this.approveremark != ""){
                                    this.doApproval();
                                }
                                else{
                                    Root.message({
                                        type: 'warning',
                                        message: '请填写原因'
                                    });
                                    this.loading_pass = false;
                                }
                            }
                        },
                        doApproval(bo) {
                            var me = this;
                            // if (this.isedit) {
                            //     this.saveRowTable(function() {
                            //         me.doRunApproval();
                            //     });
                            // }
                            // else {
                                me.doRunApproval();
                            // }
                        },
                        getMachine(callback) {
                            var me = this;
                            let param = {
                                dataname: me.dataname,
                            }
                            Server.call("root/state/getMachine", param, function(result) {
                                var next_step = {}; // 向下流程
                                var up_step = {}; // 向上流程
                                if (result && result.machine && result.machine.detail) {
                                    result.machine.detail.map(md=>{
                                        next_step[md.from_code] = md.to_code;
                                        up_step[md.to_code] = md.from_code;
                                    })
                                    callback(next_step, up_step);
                                }
                            })
                        },
                        doRunApproval() {
                            var me = this;
                            let param = {
                                dataname: me.dataname,
                                id: me.formData.id,
                                // to_state: to_state_,
                                remark: this.approveremark
                            }
                            //
                            // return
                            Server.call("root/data/" + this.passOrRefuse, param, function(result) {
                                me.loading_pass = false;
                                console.log(result);
                                if (me.passOrRefuse == "commit" || me.passOrRefuse == "approve") {
                                    Root.message({
                                        type: 'success',
                                        message: '审批成功'
                                    });
                                }
                                else if (me.passOrRefuse == "goback") {
                                    Root.message({
                                        type: 'success',
                                        message: '已退回'
                                    });
                                }
                                else if (me.passOrRefuse == "gohome") {
                                    Root.message({
                                        type: 'success',
                                        message: '已拒绝'
                                    });
                                }
                                me.saveAfter();
                            }, function(errorresult) {
                                console.log("错误信息", errorresult);
                                me.loading_pass = false;
                                if (errorresult.messages && errorresult.messages.count && errorresult.messages.count.error) {
                                    if (errorresult.messages.list) {
                                        var config = {
                                            totab: false,
                                            // width: "1200px",
                                            // height: 800,
                                            icon: "icon-product",
                                            text: "错误信息",
                                            url: "module/tool/page/popup_error_messages.html",
                                            data: {},
                                            delta: errorresult.messages.list,
                                            callback: function(obj, callback) {
                                                if (callback) {
                                                    callback();
                                                }
                                            }
                                        };
                                        me.doPopupByPublic(config);
                                    }
                                }
                                else {
                                    Root.message({
                                        type: 'error',
                                        message: '审批失败'
                                    });
                                }
                            });
                        },
                    }
                });
            };
            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 ref="popup_body" style="padding: 0 20px;">
                    <div v-if="popupParames.totab" class="el-dialog__header">
                        <div class="dialog-title">
                          <i class="iconfont icon-customermanagement"></i>
                          <span> {{title}}</span>
                        </div>
                    </div>
                    <div :style="{height: dheight + 'px', 'overflow-y': 'auto'}">
                        <div class="el-dialog__body">
                            <h-form
                                ref="form1"
                                :form-attr="formAttr"
                                :table-fields="formFields"
                                :form-data="formData"
                                :table-field-click="formfieldClick"
                            >
                            </h-form>
                        </div>
                        <div class="h_BU">
                            <div style="padding: 0px;">
                                <h-table
                                    v-if="isRefresh"
                                    ref="table1"
                                    :table-fields="tableFields"
                                    :table-data="tableData"
                                    :is-within-edit-table-data="isedit"
                                    :table-field-click="tablefieldClick"
                                    :pagesize="pagesize"
                                    :pagenum="pagenum"
                                    :total="total"
                                    :table-height="dheight - 252 - 64"
                                    :is-highlight-row="true"
                                    :isdraggableorder="false"
                                    :isshowtool="false"
                                    :isshow-shoppingcart="false"
                                    v-on:get-data="getData"
                                >
                                </h-table>
                                <!--
                                 :is-edit-table-data="isWithinEditTableData"
                                 -->
                            </div>
                        </div>
                    </div>
                    <el-dialog title="填写原因" :visible.sync="reasonvisible" height="50%">
                        <el-input
                        type="textarea"
                        :autosize="{ minRows: 2, maxRows: 10}"
                        placeholder="请输入原因"
                        v-model="approveremark">
                        </el-input>
                        <div slot="footer" class="dialog-footer" >
                        <el-button type="default" @click="reasonvisible = false">取 消</el-button>
                        <el-button type="primary" :loading="loading_pass" @click="saveReason">确 定</el-button>
                        </div>
                    </el-dialog>
                    <div class="el-dialog__footer">
                        <el-button-group style="margin-right: 80px;" >
                            <el-button  size="small" v-if="isapproval" type="warning" plain @click="onShowApproval('gohome')">退回到申请人</el-button>
                            <el-button  size="small" v-if="isapproval" type="danger" plain @click="onShowApproval('goback')">退回到上一步</el-button>
                        </el-button-group>
                        <el-button size="small" type="default" @click="closeDialog">取 消</el-button>
                        <!-- <el-button size="small" v-if="isedit || isrefuseedit" type="primary" :loading="loading_save" @click="saveRowTable()":icon="buttonsconfig.save.icon">{{buttonsconfig.save.name}}</el-button>
                        <el-button size="small" v-if="isedit && !formData.agreement_id" type="success" :loading="loading_submit" @click="submitRowTable":icon="buttonsconfig.submit.icon">{{buttonsconfig.submit.name}}</el-button>
                         -->
                        <el-button size="small" v-if="isrefuseedit" type="success" @click="">再次提交</el-button>
                        <el-button size="small" v-if="isapproval" type="success" @click="onShowApproval('approve')">通 过</el-button>
                        <!-- <el-button size="small" v-if="isapproval" type="primary" @click="">转 办</el-button> -->
                    </div>
                </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>
module/flow/page/cleanHome.html
New file
@@ -0,0 +1,528 @@
<!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">
            function loadJsCss(callback) {
                var jscss_urls = [
                    {id: "css_m1", type: "css", url: "root/css/tree.css"},
                ];
                window.top.initJsCss(document, jscss_urls, callback);
            };
            function initVue() {
                new TreeVue({
                    el: "#vbody",
                    data: {
                        dataname: "md_product_category",
                        title: "客户清洗平台",
                        dataRequest: [],
                        tree_title: "清洗进度",
                        treeTxtFormatter: "{name}:{cnt}",
                        isTreeReadonly: true,
                        isTreeRefresh: true,
                        initTreeData_d: [
                            {id: "C0", name: "流向总数", cnt: "1200",
                                children: [
                                    {id: "C01", name: "正确处理", cnt: "1200", dataname: "md_org_data", filtertxt: "1<>1",
                                    children: [
                                        {id: "C011", name: "去重客户", cnt: "1200", dataname: "md_org_data", filtertxt: "1<>1",
                                        children: [
                                            {id: "C0111", name: "自动匹配", cnt: "1180", dataname: "md_org_data", filtertxt: "1<>1"},
                                            {id: "C0112", name: "人工待处理", cnt: "12", dataname: "md_org_data", filtertxt: "1<>1"},
                                            {id: "C0113", name: "人工已处理", cnt: "0", dataname: "md_org_data", filtertxt: "1<>1"},
                                            {id: "C0114", name: "建议新增", cnt: "8", dataname: "md_org_data", filtertxt: "1<>1"},
                                        ]},
                                    ]},
                                    {id: "C1", name: "处理错误", cnt: "0", dataname: "md_org_data", filtertxt: "1<>1"},
                                ]
                            },
                        ],
                        isRefresh_table1: true,
                        tableFields_table1: [
                            {isshow: "T", field: "field1", name: "原始客户名称", align: "left",width: "100", isminwidth: true},
                            {isshow: "T", field: "field2", name: "最高分", align: "center", width: "80"},
                            {isshow: "T", field: "field3", name: "专有名词", align: "left", width: "100", isminwidth: true},
                            {isshow: "T", field: "field4", name: "渠道", align: "left", width: "120"},
                            {isshow: "T", field: "field5", name: "省份", align: "center", width: "100"},
                            {isshow: "T", field: "field6", name: "城市", align: "center", width: "100"},
                            {isshow: "T", field: "field7", name: "区县", align: "center", width: "100"},
                            {isshow: "T", field: "field8", name: "状态", align: "center", width: "100"},
                        ],
                        pagesize_table1: 10,
                        pagenum_table1: 1,
                        total_table1: 0,
                        tableHeight_table1: 100,
                        tablefieldClick_table1: {},
                        tableData_table1: [
                            {id: "001", field1: "宏佳顺医疗器械有限公司", field2: "89", field3: "宏佳顺,医疗器械", field4: "有限公司", field5: "江西省", field6: "", field7: "", field8: "待清洗" },
                            {id: "002", field1: "誉美医疗器械贸易有限公司", field2: "89", field3: "誉美,医疗器械,贸易", field4: "有限公司", field5: "湖南省", field6: "长沙市", field7: "", field8: "待清洗" },
                            {id: "003", field1: "德汇同创医疗器械有限公司", field2: "89", field3: "德汇同创", field4: "有限公司", field5: "广州省", field6: "", field7: "", field8: "待清洗" },
                            {id: "004", field1: "通泰慷医疗科技有限公司", field2: "89", field3: "通泰慷,医疗科技", field4: "有限公司", field5: "上海市", field6: "", field7: "", field8: "待清洗" },
                        ],
                        selectedrow_table1: {},
                        isRefresh_table2: true,
                        filterAttr: {
                            columnnumber: 4,
                            labelwidth: "80px",
                            labelposition: "right",//"left",//"right",
                            size: "medium",
                            border: "0px solid #c6c6c600"
                        },
                        filterFields_table2: [
                            {isshow: "T", field: "field1", name: "客户名称", filterfield: "", filteroperator: "like"},
                        ],
                        filterObj_table2: {},
                        tableFields_table2: [
                            {isshow: "T", field: "field1", name: "客户名称", align: "center",width: "150", isminwidth: true},
                            {isshow: "T", field: "field2", name: "省份", align: "center", width: "100"},
                            {isshow: "T", field: "field3", name: "城市", align: "center", width: "100"},
                            {isshow: "T", field: "field4", name: "区县", align: "center", width: "100"},
                            {isshow: "T", field: "field5", name: "渠道", align: "center", width: "120"},
                            {isshow: "T", field: "field6", name: "区县", align: "center", width: "100"},
                            {isshow: "T", field: "field7",name: "操作", type:"buttons", buttons: [{name:"推荐",code:"tj"},{name: "不推荐", code:"nbj"}]},
                        ],
                        pagesize_table2: 10,
                        pagenum_table2: 1,
                        total_table2: 0,
                        tableHeight_table2: 100,
                        tablefieldClick_table2: {},
                        tableData_table2: [],
                        selectedrow_table2: {},
                        isRefresh_table3: true,
                        tableAttr_table3: {
                            isborder: false
                        },
                        tableFields_table3: [
                            {isshow: "T", field: "field1", name: "分值", align: "center",width: "100", headercolor: "#0000"},
                            {isshow: "T", field: "field2", name: "客户名称", align: "center", width: "150", headercolor: "#0000"},
                            {isshow: "T", field: "field3", name: "专有名词", width: "100", isminwidth: true, headercolor: "#0000"},
                            {isshow: "T", field: "field5", name: "省份", align: "center", width: "100", headercolor: "#0000"},
                            {isshow: "T", field: "field6", name: "城市", align: "center", width: "100", headercolor: "#0000"},
                            {isshow: "T", field: "field7", name: "区县", align: "center", width: "100", headercolor: "#0000"},
                            {isshow: "T", field: "field8", name: "状态", align: "center", width: "100", headercolor: "#0000"},
                            {isshow: "T", field: "field9",name: "操作", align: "center", width: "100", headercolor: "#0000", type:"buttons", buttons: [{name:"推荐",code:"tj"},{name: "不推荐", code:"nbj"}]},
                        ],
                        tableHeight_table3: 100,
                        tableData_table3: [
                            {id: "1"},
                            {id: "2"},
                            {id: "3"},
                            {id: "4"},
                        ],
                        tablefieldClick_table3: {},
                        selectedrow_table3: {},
                    },
                    created() {
                        let clientHeight = document.documentElement.clientHeight;
                        this.treeHeight = clientHeight - 120;
                        // var currentcapacity = window.top.vue.userinfo.currentcapacity;
                        var dataRequest_ = {
                            name: "md_approval",
                            paramsobj: {
                                filter: "rolecode like '%|" + window.top.vue.userinfo.currentcapacity.code + "|%'"
                                // filter: "rolecode like '%|Capacity-QA|%'"
                            },
                            url: "root/workflow/getOutline",
                            isnotoption: true,
                        }
                        // this.dataRequest.push(dataRequest_);
                        this.tableHeight_table1 = this.treeHeight / 3 + 10;
                        this.tableHeight_table2 = this.treeHeight / 3 + 10;
                        this.tableHeight_table3 = this.treeHeight - this.tableHeight_table1 - this.tableHeight_table2 - 10;
                        this.fieldClick();
                    },
                    mounted() {
                        var me = this;
                        //预加载数据
                        if (this.dataRequest && this.dataRequest.length) {
                            var result = {};
                            this.loadRequestData(this.dataRequest, result, function(data) {
                                console.log("预加载数据:", data);
                                me.dataRequestObj = data;
                                // let md_approval_ = ArrayToTree(clone(data.md_approval.data), "name", "parent_id");
                                // me.initTreeData_d = md_approval_;
                                var medataRequest_ = []
                                me.initTreeData_d.map(nodes=>{
                                    if (nodes.children) {
                                        var isBadge_ = false;
                                        nodes.children.map(node=>{
                                            if (node.cnt) {
                                                isBadge_ = true;
                                                node.badgeval = node.cnt
                                            }
                                        })
                                        nodes.isBadge = isBadge_;
                                    }
                                })
                                me.initData();
                                // 以服务的方式调用的 Loading 需要异步关闭
                                me.$nextTick(() => {
                                    hideLoading();
                                });
                            });
                        }
                        else {
                            this.initData(); // 以服务的方式调用的 Loading 需要异步关闭
                            this.$nextTick(() => {
                                hideLoading();
                            });
                        }
                    },
                    methods:{
                        initData() {
                            var me = this;
                            me.treeData = me.initTreeData_d;
                            // this.onQuery(function(result, callback) {//查询后的回调,用于获取字段的
                            //     me.treeData = me.initTreeData_d;
                            //     if (callback) {
                            //         callback();
                            //     }
                            // });
                            // me.treeRefresh()
                        },
                        onTableDataAfter() {},
                        treeRefresh() {
                            var me = this;
                            var param_ = {
                                filter: "rolecode like '%|" + window.top.vue.userinfo.currentcapacity.code + "|%'"
                            }
                            Server.call("root/workflow/getOutline", param_, function(result) {
                                let md_approval_ = ArrayToTree(clone(result.data), "name", "parent_id");
                                var medataRequest_ = [];
                                md_approval_.map(nodes=>{
                                    if (nodes.children) {
                                        var isBadge_ = false;
                                        nodes.children.map(node=>{
                                            if (node.cnt) {
                                                isBadge_ = true;
                                                node.badgeval = node.cnt
                                            }
                                        })
                                        nodes.isBadge = isBadge_;
                                    }
                                })
                                me.isTreeRefresh = false;
                                me.treeData = md_approval_;
                                me.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
                                    me.defaultexpandedkeys = [me.selectednode.id];
                                    me.currentnodekey = me.selectednode.id;
                                    me.isTreeRefresh = true;
                                });
                                me.getData1ByNode();
                            })
                        },
                        onNodeClick(obj) {
                            var data = obj.data, node = obj.node, el = obj.el;
                            var val = data.name;
                            if (data.children && data.children.length) {
                                val = "";
                                data.children.map(r=>{
                                    if (val == "") {
                                        val = r.name;
                                    }
                                    else {
                                        val += "','" + r.name;
                                    }
                                })
                            }
                            // this.filterObjBydefault.category_name = val
                            this.selectednode = data;
                            this.pagenum_table1 = 1;
                            if (this.selectednode.dataname) {
                                // this.getTable1Meta();
                                // this.getData1ByNode();
                            }
                        },
                        getTable1Meta() {},
                        getData1ByNode() {},
                        getData1(page) {
                            this.pagesize_table1 = page.pagesize;
                            this.pagenum_table1 = page.pagenum;
                            this.getData1ByNode();
                        },
                        table1RowClick(obj) {
                            this.selectedrow_table1 = obj.row;
                            this.getData2ByRowTable1();
                        },
                        getData2(page) {
                            this.pagesize_table2 = page.pagesize;
                            this.pagenum_table2 = page.pagenum;
                        },
                        table2RowClick(obj) {
                            this.selectedrow_table2 = obj.row;
                        },
                        getData2ByRowTable1() {},
                        onQueryTable2() {},
                        onInitFilterTable2() {
                            //清空
                            this.filterObj = {};
                            this.selectedrow = {};
                            this.onQueryTable2();
                        },
                        getData3(page) {
                        },
                        table3RowClick(obj) {
                            this.selectedrow_table3 = obj.row;
                        },
                        fieldClick() {
                            this.tablefieldClick_table3 = {
                                field9: {
                                    buttons: {
                                        onclick: function(row, code) {
                                            Root.message({
                                                type: 'success',
                                                message: code
                                            });
                                        }
                                    }
                                }
                            }
                            this.tablefieldClick_table2 = {
                                field7: {
                                    buttons: {
                                        onclick: function(row, code) {
                                            Root.message({
                                                type: 'success',
                                                message: code
                                            });
                                        }
                                    }
                                }
                            }
                        },
                        //清洗
                        doWash() {
                            var me = this;
                            var config = {
                                totab: false, //true: 以Tab导航的方式打开
                                width: "900px",
                                height: "900px",
                                icon: "icon-product",
                                text: "清洗进度",
                                id: "test_page",//totab: true时需设置,用于判断是否已打开此页面
                                //url: "module/system/page/coming.html",
                                url: "module/flow/page/popup/washProcess.html",
                                data: {},
                                delta: {},
                                sceneCode: "edit", //"add"//"browse",
                                callback: function(obj, callback) {
                                    if (callback) {
                                        callback();
                                    }
                                }
                            };
                            me.doPopupByPublic(config);
                        }
                    }
                });
            };
            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;
            }
            .nodeLabel {
                max-width: 200px !important;
            }
            .h_table {
                margin-top: 0px !important;
                position: relative;
            }
            .el-table--small .el-table__cell {
                padding: 5px 0!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;">
                            <el-button type="primary" @click="doWash">清 洗</el-button>
                        </el-button-group>
                    </div> -->
                </div>
                <div class="h_dialog__body">
                    <div style="position: absolute;left: 10px; top:45px;width: 320px; bottom: 10px;border: 1px solid #ccc;">
                        <div style="height: 32px;line-height: 32px;border-bottom: 1px solid #ccc ;">
                            <span style="font-size: 14px;margin-left: 20px;">{{tree_title}}</span>
                        </div>
                        <div :style="{padding: '10px 0', height: treeHeight + 'px', overflow: 'auto'}">
                            <h-tree v-if="isTreeRefresh"
                                :tree-data="treeData"
                                :tree-txt-formatter="treeTxtFormatter"
                                :is-readonly="isTreeReadonly"
                                :default-expanded-keys="defaultexpandedkeys"
                                :currentnodekey="currentnodekey"
                                :default-expand-all="true"
                                @node-click="onNodeClick"
                                >
                            </h-tree>
                        </div>
                    </div>
                    <div style="position: absolute;left: 340px; top:45px; right: 10px; bottom: 10px;border: 1px solid #ccc;">
                        <div>
                            <div style="height: 32px;">
                                <div class="table_title" style="float: left;">
                                    <span>人工待清洗数据</span>
                                </div>
                                <div style="float: right; margin-right: 18px;">
                                    <el-button-group style="margin-left: 3px;">
                                        <el-button @click="">来十条</el-button>
                                    </el-button-group>
                                </div>
                            </div>
                            <h-table
                                v-if="isRefresh_table1 && tableFields_table1.length"
                                ref="table_table1"
                                :table-fields="tableFields_table1"
                                :table-data="tableData_table1"
                                :pagesize="pagesize_table1"
                                :pagenum="pagenum_table1"
                                :total="total_table1"
                                :table-height="tableHeight_table1 - 32"
                                :is-highlight-row="true"
                                :table-field-click="tablefieldClick_table1"
                                :is-pagination="false"
                                v-on:get-data="getData1"
                                v-on:row-click="table1RowClick"
                            >
                            </h-table>
                            <div :style="{height: (tableHeight_table3) + 'px'}">
                                <div style="height: 32px;line-height: 32px;margin-top: 10px;">
                                    <span style="font-weight: bold;margin-left: 20px;"><i class="el-icon-tickets"></i> 原始客户名称:</span>
                                    <span>{{selectedrow_table1.field1}}</span>
                                    <div style="float: right; margin-right: 18px;">
                                        <el-button-group style="margin-left: 3px;">
                                            <el-button @click="">建议新增</el-button>
                                            <el-button @click="">待 定</el-button>
                                            <el-button @click="">清空推荐</el-button>
                                        </el-button-group>
                                    </div>
                                </div>
                                <h-table
                                    v-if="isRefresh_table3 && tableFields_table3.length"
                                    ref="table_table3"
                                    :table-attr="tableAttr_table3"
                                    :table-fields="tableFields_table3"
                                    :table-data="tableData_table3"
                                    :table-height="tableHeight_table3 - 42"
                                    :is-highlight-row="true"
                                    :table-field-click="tablefieldClick_table3"
                                    :is-pagination="false"
                                    :is-show-index="true"
                                    :is-within-edit-table-data="true"
                                    v-on:get-data="getData3"
                                    v-on:row-click="table3RowClick"
                                >
                                </h-table>
                            </div>
                            <div :style="{height: (tableHeight_table2) + 'px'}">
                                <!-- <div style="height: 32px; margin-top: 20px;">
                                    <div class="table_title" style="float: left;">
                                        <span> <span v-if="selectedrow && selectedrow.field2">【{{selectedrow.field2}}】</span>对应审批人</span>
                                    </div>
                                </div> -->
                                <div class="topbar-line">
                                    <div class="query-bar">
                                        <h-form-filter v-if="filterFields_table2" ref="form1"
                                            :form-attr="filterAttr"
                                            :table-fields="filterFields_table2"
                                            :form-data="filterObj_table2"
                                            :isdraggableorder="false"
                                            v-on:on-query="onQueryTable2"
                                            v-on:on-init-query="onInitFilterTable2"
                                            >
                                        </h-form-filter>
                                    </div>
                                </div>
                                <h-table
                                    v-if="isRefresh_table1 && tableFields_table2.length"
                                    ref="table_table2"
                                    :table-fields="tableFields_table2"
                                    :table-data="tableData_table2"
                                    :table-height="tableHeight_table2 - 40"
                                    :is-highlight-row="true"
                                    :table-field-click="tablefieldClick_table2"
                                    :is-pagination="true"
                                    :is-within-edit-table-data="true"
                                    v-on:get-data="getData2"
                                    v-on:row-click="table2RowClick"
                                >
                                </h-table>
                            </div>
                        </div>
                    </div>
                </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>document.write('<script src="//' + (location.host || 'localhost').split(':')[0] + ':35929/livereload.js?snipver=1"></' + 'script>')</script><script>document.addEventListener('LiveReloadDisconnect', function() { setTimeout(function() { window.location.reload(); }, 500); })</script></body>
</html>
module/system/page/main.html
@@ -7,27 +7,27 @@
    <meta http-equiv="Cache-control" content="no-cache">
    <meta http-equiv="Cache" content="no-cache">
    <title>终端推广平台</title>
    <link href="../css/main.css?v=2024080301" rel="stylesheet">
    <link href="../../../css/control.css?v=2024080301" rel="stylesheet">
    <link href="../../../css/page.css?v=2024080301" rel="stylesheet">
    <link href="../../../css/icon/iconfont.css?v=2024080301" rel="stylesheet">
    <link href="../css/main.css?v=2024081901" rel="stylesheet">
    <link href="../../../css/control.css?v=2024081901" rel="stylesheet">
    <link href="../../../css/page.css?v=2024081901" rel="stylesheet">
    <link href="../../../css/icon/iconfont.css?v=2024081901" rel="stylesheet">
    <link href="../../../js/vue/element-ui/lib/theme-chalk/index.css" rel="stylesheet">
    <link href="../../../img/org/head.png" rel="shortcut icon" type="image/x-icon">
    <link href="../../../css/myelement.css?v=2024080301" rel="stylesheet">
    <link href="../../../css/myelement.css?v=2024081901" rel="stylesheet">
    
    <script src="../../../js/jquery-3.5.1.min.js"></script>
    <script src="../../../js/vue/vue.js"></script>
    
    <script src="../../../js/config.js?v=2024080301"></script>
    <script src="../../../js/config.js?v=2024081901"></script>
    <script src="../../../data/data.js"></script>
    <script src="../../../js/vue/elementDefault.js"></script>
    <script src="../../../js/vue/element-ui/lib/index.js"></script>
    <script src="../../../js/Sortable.js"></script>
    <script src="../../../js/vue/page.js?v=2024080301"></script>
    <script src="../../../js/foundation.js?v=2024080301"></script>
    <script src="../../../js/control.js?v=2024080301"></script>
    <script src="../../../js/vue/page.js?v=2024081901"></script>
    <script src="../../../js/foundation.js?v=2024081901"></script>
    <script src="../../../js/control.js?v=2024081901"></script>
    <script src="../../../js/loadJsCss.js"></script>
    <script src="../../../js/myelement.js?v=2024080301"></script>
    <script src="../../../js/myelement.js?v=2024081901"></script>
    
</head>