zhangyanpeng
2024-08-04 d0fab39db8c50fb72d7311b0d4c80e475af47c76
调整
5个文件已修改
1个文件已添加
2015 ■■■■■ 已修改文件
module/flow/page/flow_inventory_list.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
module/md/page/customer/page/customer_list_account.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
module/md/page/product/page/batch_number.html 995 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
module/md/page/product/page/batch_number_edit.html 337 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
module/md/page/product/page/category_edit.html 653 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
module/system/page/main.html 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
module/flow/page/flow_inventory_list.html
@@ -27,7 +27,7 @@
                        },
                        tabs: [],
                        tabsobj: {},
                        isShowTab: false,
                        dataRequest: [],
                        authTableFields: [
                            {field: "code", name: "医院编码", isshow: "T", align: "center",width: "150"},
@@ -1033,16 +1033,16 @@
                        <span>报告日期:</span>
                        <span v-if="selectTabObj && selectTabObj.code == 'month'">{{newdate_month}}</span>
                        <span v-if="selectTabObj && selectTabObj.code == 'daily'">{{newdate_day}}</span>
                        <el-radio-group style="margin-left: 10px;"
                        <!-- <el-radio-group style="margin-left: 10px;"
                            v-if="selectTabObj && selectTabObj.filterObj && selectTabObj.code=='month'"
                            v-model="selectTabObj.filterObj.dataversion" size="mini" fill="#4cb108">
                            <el-radio-button label="月度初版">初版</el-radio-button>
                            <el-radio-button label="月度终版">终版</el-radio-button>
                        </el-radio-group>
                        </el-radio-group> -->
                    </div>
                </div>
                <div>
                <div v-show="isShowTab">
                    <el-tabs v-model="activeTabName" @tab-click="handleClick">
                        <el-tab-pane v-for="(tab, k) in tabs" :label="tab.name" :name="tab.code" :key="k"></el-tab-pane>
                    </el-tabs>
module/md/page/customer/page/customer_list_account.html
@@ -22,7 +22,7 @@
                            {code: "orglist", name: "储备", dataname: "md_org_customer", filterTxt: "", orderby: "md_org.update_time desc, md_org.code"},
                            // {code: "distributorlist", name: "配送商列表", dataname: "md_org_customer", filterTxt: "md_org.source='DMS' and md_org.state_code='Open'", orderby: "md_org.update_time desc, md_org.code"},
                            // {code: "nccsy", name: "NCC首营", dataname: "md_org_account_ncc", filterTxt: "1=1", orderby: "md_org_account_ncc.update_time desc, code"},
                            {code: "WaitOpen", name: "预合作", dataname: "md_org_account", filterTxt: "(md_org_account.state_code='OpeningApproval' or md_org_account.state_code='Open')", orderby: "md_org_account.update_time desc, md_org_account.code"},
                            {code: "WaitOpen", name: "预合作", dataname: "md_org_account", filterTxt: "(md_org_account.state_code='OpeningApproval' or md_org_account.state_code='Open' or md_org_account.state_code='CooperateApproval')", orderby: "md_org_account.update_time desc, md_org_account.code"},
                            {code: "Open", name: "合作中", dataname: "md_org_partnership", filterTxt: "md_org_account.state_code='Incooperation'", orderby: "md_org_account.update_time desc, md_org_account.code"},
                            {code: "Close", name: "已退出", dataname: "md_org_account", filterTxt: "md_org_account.state_code='Close'", orderby: "md_org_account.update_time desc, md_org_account.code"},
                            {code: "All", name: "全部", dataname: "md_org_account", filterTxt: "1=1", orderby: "md_org_account.update_time desc, md_org_account.code"},
module/md/page/product/page/batch_number.html
@@ -2,7 +2,7 @@
<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>
        <title>资料库</title>
        
        <script type="text/javascript">
            var pageVue = null;
@@ -14,57 +14,91 @@
            };
            
            function initVue() {
                new TreeVue({
                pageVue = new TabTableVue({
                    el: "#vbody",
                    data: {
                        // dataname: "md_prod_library",
                        dataname: "md_prod_category",
                        title: "产品检验报告",
                        tree_title: "产品类型",
                        title: "资料库",
                        dataname: "sys_dossier",
                        treeTxtFormatter: "{name}",
                        isTreeReadonly: true,
                        isTreeReadonly: false,
                        dataRequest: [
                            {
                                isClientMode: false,
                                name: "md_prod_category",
                                //url: "root/front/getOneDictionary",
                                //paramsobj: { code: "OrgType", },
                                isnotoption: false, //true:不是选项
                                code:"id",//是下拉选项时设置
                                label:"name",//是下拉选项时设置
                            },
                        ],
                        type_treedata: [],
                        defaultProps: {value: "name", label: "name"},
                        filterObjBydefault: {},
                        
                        dataname_p: "md_prod_library_detail",
                        pagesize_p: 10,
                        pagenum_p: 1,
                        total_p: 0,
                        tableData_p: [],
                        tableFields_p: [],
                        isRefresh_p: true,
                        tableHeight_p: 100,
                        tablefieldClick: {},
                        setSelectedRowId: null,
                        //filter
                        filterObj: {},
                        filterAttr: {
                            columnnumber: 3,
                            labelwidth: "100px",
                            labelposition: "right",
                            size: "medium",
                            border: "3px solid #c6c6c600"
                        },
                        filterFields: [],
                        filterfieldClick: {},
                        currentnodekey: "",
                        authorize_category_ids: "1<>1",
                        //Tab项设置
                        tabs: [
                            {code: "Open", name: "生效", dataname: "sys_dossier", orderby: "update_time", filterTxt: "state_code = 'Open'",},
                            {code: "Close", name: "作废", dataname: "sys_dossier", orderby: "update_time desc", filterTxt: "state_code = 'Cancel'",},
                            // {code: "Overdue", name: "逾期", dataname: "sys_dossier", orderby: "update_time desc", filterTxt: "date_to < NOW()", },
                            {code: "All", name: "全部", dataname: "sys_dossier", orderby: "update_time desc", filterTxt: "1=1",},
                        ],
                        tabsobj: {},
                        cbuttons_r: {},
                        ctabs_r: {},
                        report_url: {isshow: "T", field: "report_url", name: "模板设计", width: "100"},
                        clickChildNode: false,
                        currentnodekey: "",
                        nodeName: "",
                        maxlevel: 3,
                    },
                    created() {
                    },
                    
                    mounted() {
                        var me = this;
                        if (window.top.tab.selected.option.page_id) {
                            // this.page_id = window.top.tab.selected.option.page_id;
                            getPageByPageId(window.top.tab.selected.option.page_id, function(result){
                                me.activeTabName="Open";
                                me.cbuttons_r = result.buttons_r;
                                //预加载数据
                                if (me.dataRequest.length) {
                                    var result = {};
                                    me.loadRequestData(me.dataRequest, result, function(data) {
                                        me.dataRequestObj = data;
                                        //预加载数据后给哪些字段设置options或formatterjson
                                        let addNode = clone(data.md_prod_category);
                                        // addNode.map( n => {
                                        //     me.$set(n, "ishnodeadd", true);
                                        // })
                                        let md_prod_category_ = ArrayToTree(clone(addNode), "name", "parent_id");
                                        me.type_treedata = clone(md_prod_category_);
                                        me.initTabsPage(function() {
                                            // me.initData();
                                            if(me.type_treedata[0]) {
                                                const leafNode = me.findLeafNode(me.type_treedata[0]);
                                                let objInit = {
                                                    data: leafNode,
                                                    node: {},
                                                    el: {},
                                                };
                                                me.currentnodekey = leafNode.id;
                                                // this.filterObjBydefault.category_id = leafNode.id;
                                                me.onNodeClick(objInit);
                                            }
                                        });
                                    });
                                }
                                else {
                                    //获取数据
                                    me.initTabsPage(function() {
                                        me.initData();
                                    });
                                }
                                
                                //获取数据
                                me.initData();
                                me.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
                                    hideLoading();
                                });
@@ -73,82 +107,60 @@
                    },
                    
                    methods:{
                        onhandleClick() {
                            this.selectTabObj = this.tabspageobj[this.activeTabName];
                            this.selectTabObj.filterObjBydefault = this.filterObjBydefault;
                            this.initData();
                        },
                        initData() {
                            var me = this;
                            this.onQuery(function(result, callback) {//查询后的回调,用于获取字段的
                                let initTreeData_ = ArrayToTree(clone(me.initTreeData), "name", "parent_id");
                                me.treeData = initTreeData_;
                            me.tableButtonClick();
                            this.doQueryByTab(function(result, callback) {//查询后的回调,用于获取字段的
                                if (result.meta && result.meta[me.selectTabObj.dataname] && result.meta[me.selectTabObj.dataname].fields) {
                                    var metas = clone(result.meta[me.selectTabObj.dataname].fields);
                                    var filterFields_ = [];
                                    var tableFields_ = [];
                                    // tableFields_.push(me.report_url);
                                    metas.map(f=>{
                                        f.isshow = "T";
                                        if (f.isfilter) {
                                            filterFields_.push(clone(f));
                                        }
                                        else {
                                            var filter_f = clone(f);
                                            filter_f.isshow = "F";
                                            filterFields_.push(filter_f);
                                        }
                                        tableFields_.push(clone(f));
                                    })
                                    if (!me.selectTabObj.filterFields || (me.selectTabObj.filterFields && me.selectTabObj.filterFields.length == 0)) {
                                        // me.selectTabObj.filterFields = clone(me.default_filterFields);
                                        // me.selectTabObj.tableFields = clone(me.default_tableFields);
                                        me.selectTabObj.filterFields = clone(filterFields_);
                                        me.selectTabObj.tableFields = clone(tableFields_);
                                        //字段数组转字段obj,目的为了筛选时获取字段属性
                                        me.fieldsToFieldsObj();
                                        //设置字段事件
                                        me.tableFieldClick();
                                    }
                                }
                                
                                if (callback) {
                                    callback();
                                }
                                me.getTableMeta();
                                //待完善
                                // if(me.treeData[0].children[0].children[0]) {
                                //     let objInit = {
                                //         data: clone(me.treeData[0].children[0].children[0]),
                                //         node: {},
                                //         el: {},
                                //     };
                                //     me.onNodeClick(objInit);
                                // }
                                //Brooke
                                // console.log(me.treeData);
                                // if(me.treeData[0]) {
                                //     let objInit = me.findNodeInit(me.treeData[0]);
                                //     console.log(objInit);
                                // }
                                //GPT3.5
                                // const deepestNode = me.findDeepestNode(me.treeData[0]);
                                // console.log(deepestNode);
                                if(me.treeData[0]) {
                                    const leafNode = me.findLeafNode(me.treeData[0]);
                                    let objInit = {
                                        data: leafNode,
                                        node: {},
                                        el: {},
                                    };
                                    me.currentnodekey = leafNode.id;
                                    me.onNodeClick(objInit);
                                }
                            });
                        },
                        //Brooke
                        // findNodeInit(arr) {
                        //     var me = this;
                        //     if(!arr.children || arr.children.length === 0) {
                        //         return arr;
                        //     } else {
                        //         let child = arr.children[0];
                        //         const nodeInit = findNodeInit(child);
                        //         if(nodeInit) {
                        //             return nodeInit;
                        //         } esle
                        //     }
                        // },
                        //GPT3.5
                        // findDeepestNode(node) {
                        //     if (!node.children || node.children.length === 0) {
                        //         return node;
                        //     }
                        //     let deepestChild = node.children[0];
                        //     for (let i = 1; i < node.children.length; i++) {
                        //         const child = node.children[i];
                        //         const deepestGrandchild = this.findDeepestNode(child);
                        //         if (deepestGrandchild.depth > deepestChild.depth) {
                        //         deepestChild = deepestGrandchild;
                        //         }
                        //     }
                        //     return deepestChild;
                        // },
                        //找到第一级树的最深层子节点
                        findLeafNode(node) {
                            if (!node.children || node.children.length === 0) {
                                return node;
@@ -162,23 +174,157 @@
                            }
                            return null;
                        },
                        //找到所有的子节点
                        findAllLeafNode(node) {
                            // if (!node.children || node.children.length === 0) {
                            //     return node;
                            // }
                            // for (let i = 0; i < node.children.length; i++) {
                            //     const child = node.children[i];
                            //     const leafNode = this.findLeafNode(child);
                            //     if (leafNode) {
                            //         return leafNode;
                            //     }
                            // }
                            // return null;
                        },
                        
                        onAddNode(obj) {
                            var data = obj.data, node = obj.node;
                        // 设置表格工具栏按键事件
                        tableButtonClick() {
                            var me = this;
                            var tablebuttonClick = {};
                            tablebuttonClick.Open = [
                                {
                                    isbuttonshow: true,type:"primary",
                                    code: "add",isselected: false,classname: "",
                                    onclick: function(obj) {
                                        me.onAddData('add')
                                    }
                                },
                                {
                                    isbuttonshow: true,type: "danger",
                                    code: "repeal",isselected: true,classname: "",
                                    disabled: function(selectRowList) {
                                        var bo_ = true;
                                        if (selectRowList[0] && selectRowList[0].state_code == 'Open') {
                                            bo_ = false;
                                        }
                                        return bo_
                                    },
                                    onclick: function(obj) {
                                        me.cancelConfirm()
                                    }
                                }
                            ]
                            tablebuttonClick.All = [
                                {
                                    // name: "详情", // type: "primary", // icon: "el-icon-edit",
                                    isbuttonshow: true,
                                    code: "formdetail", isselected: true, classname: "",
                                    onclick: function(obj) {
                                        // obj.selectedList
                                        me.openCustomerUser('browse', obj.selectedList[0]);
                                    }
                                },
                            ]
                            if (tablebuttonClick[this.activeTabName]) {
                                this.selectTabObj.tablebuttonClick = tablebuttonClick[this.activeTabName];
                            }
                            else {
                                this.selectTabObj.tablebuttonClick = []
                            }
                        },
                        tableFieldClick() {
                            var me = this;
                            var tablefieldClick = {};
                            //表格字段事件设置
                            tablefieldClick = {
                                name: {//字段事件设置
                                    val: {//有值时的点击事件
                                        notclick_val: "",//不可点击的值,1、是数组["11","22"];2、以“;”分隔的字符串"111;222"
                                        notclick_bindfield: [],//当该字段值等于指定字段值时不可点击["filterfield": "111"]
                                        onclick: function(obj) {//数据值点击事件
                                            me.onShowData(obj);
                                        },
                                    },
                                },
                                template_attachment: {//字段事件设置
                                    val: {//有值时的点击事件
                                        notclick_val: "",//不可点击的值,1、是数组["11","22"];2、以“;”分隔的字符串"111;222"
                                        notclick_bindfield: [],//当该字段值等于指定字段值时不可点击["filterfield": "111"]
                                        onclick: function(obj) {//数据值点击事件
                                            //打开
                                            me.showFileImgByFileId(obj, "template_attachment", "template_attachment_id");
                                        },
                                    },
                                },
                            };
                            this.selectTabObj.tablefieldClick = tablefieldClick;
                        },
                        //附件预览
                        showFileImgByFileId(obj, filenamefield, fileidfield) {
                            let me = this;
                            var file_name = obj.row[filenamefield];
                            var file_id = obj.row[fileidfield];
                            if(file_id) {
                                var fileid = file_id;
                                let fileName = clone(file_name);
                                let index1 = fileName.lastIndexOf(".");
                                let index2 = fileName.length;
                                let suffix = fileName.substring(index1, index2).toLowerCase(); //后缀名
                                if (suffix == ".png" || suffix == ".jpg" || suffix == ".pdf") {
                                    var row = {
                                        fileid: fileid,
                                        filename: fileName,
                                        dataname: "sys_dossier"
                                    }
                                    var config = {
                                        totab: false,
                                        width: "1000px",
                                        height: 800,
                                        icon: "icon-product",
                                        text: "附件预览",
                                        id: "pdf_" + fileid,
                                        url: "module/tool/page/popup_file_pdf.html",
                                        data: row,
                                        delta: {},
                                        callback: function(obj, callback) {
                                            if (callback) {
                                                callback();
                                            }
                                        }
                                    };
                                    this.doPopupByPublic(config);
                                }
                                else {//只可下载,不可预览
                                    // handleDownloadUrl(fileid,false);
                                    handleDownload(fileid, "sys_dossier");
                                }
                            }
                        },
                        //模板详情
                        onShowData(obj) {
                            var me = this;
                            var config = {
                                totab: false, //true: 以Tab导航的方式打开
                                width: "500px",
                                height: "300px",
                                totab: false,
                                icon: "icon-product",
                                text: "产品类型信息",
                                id: "product_type_edit",//totab: true时需设置,用于判断是否已打开此页面
                                url: "module/md/page/product/page/product_type_edit.html",
                                data: {},
                                delta: {},
                                sceneCode: "add",//"refuseedit",//"approval", //"add"//"browse",
                                text: "资料详情",
                                id: "agreement_mould_edit" + obj.row.id,//totab: true时需设置,用于判断是否已打开此页面
                                // url: "module/agreement/page/agreement_mould_edit.html",
                                url: "module/md/page/product/page/batch_number_edit.html",
                                data: obj.row,
                                delta: {},//备案版本,
                                sceneCode: "browse",//"refuseedit",//"approval", //"add"//"browse",
                                callback: function(obj, callback) {
                                    me.type_treedata = obj.options
                                    me.onQuery();
                                    if (callback) {
                                        callback();
                                    }
@@ -187,13 +333,155 @@
                            me.doPopupByPublic(config);
                        },
                        
                        //新增模板
                        onAddData(config) {
                            var me = this;
                            var type = "";
                            var delta_ = {
                                nodeKey: this.filterObjBydefault.category_id,
                            }
                            if (this.nodeName) {
                                type = this.nodeName;
                            }
                            var config = {
                                totab: false,
                                icon: "icon-product",
                                text: "资料信息" + " - " + type,
                                id: "agreement_mould_edit",//totab: true时需设置,用于判断是否已打开此页面
                                // url: "module/agreement/page/agreement_mould_edit.html",
                                url: "module/md/page/product/page/batch_number_edit.html",
                                data: {},
                                delta: delta_,
                                sceneCode: "add",//"refuseedit",//"approval", //"add"//"browse",
                                callback: function(obj, callback) {
                                    me.onQuery();
                                    if (callback) {
                                        callback();
                                    }
                                }
                            };
                            me.doPopupByPublic(config);
                        },
                        //作废模板确认
                        cancelConfirm() {
                            let me = this;
                            data = me.selectTabObj.selectedrow;
                            Root.confirm('确定作废-' + data.name + '-吗?', '作废提示', {
                              confirmButtonText: '确定',
                              cancelButtonText: '取消',
                              type: 'warning'
                            }).then(() => {
                                me.doCloseApproval();
                            }).catch(() => {
                                Root.message({
                                    type: 'info',
                                    message: '已取消作废'
                                });
                            });
                        },
                        //作废模板
                        doCloseApproval() {
                            var me = this;
                            let param = {
                                dataname: me.dataname,
                                data: {
                                    "sys_dossier" :{
                                        id: me.selectTabObj.selectedrow.id,
                                        state_code: "Cancel",
                                        state_name: "作废",
                                    }
                                },
                            }
                            Server.call("root/data/saveEntity", param, function(result) {
                                console.log(result);
                                Root.message({
                                    type: 'success',
                                    message: '已作废'
                                });
                                me.onQuery();
                            });
                        },
                        //点击节点
                        onNodeClick(obj) {
                            var data = obj.data, node = obj.node, el = obj.el;
                            var val = data.id;
                            console.log(obj);
                            if (data.parent_id) {
                                this.clickChildNode = true;
                                this.nodeName = data.name;
                            } else {
                                this.clickChildNode = false;
                            }
                            //old
                            if (data.children && data.children.length) {
                                // val = "";
                                data.children.map(r=>{
                                    if (val == "") {
                                        val = r.id;
                                    }
                                    else {
                                        val += "','" + r.id;
                                    }
                                })
                            }
                            // if (data.children && data.children.length) {
                            //     // val = "";
                            //     data.children.map(r=>{
                            //         if (val == "") {
                            //             val = r.id;
                            //         }
                            //         else {
                            //             val += "','" + r.id;
                            //         }
                            //     })
                            // }
                            // this.selectedrow = data;
                            this.filterObjBydefault.category_id = val;
                            this.activeTabName = "Open";
                            this.selectTabObj = this.tabspageobj[this.activeTabName];
                            this.onhandleClick();
                        },
                        //增加节点
                        onAddNode(obj) {
                            var data = obj.data, node = obj.node;
                            let me = this;
                            var config = {
                                totab: false, //true: 以Tab导航的方式打开
                                width: "500px",
                                height: "300px",
                                icon: "icon-product",
                                text: "资料分类",
                                id: "category_edit",//totab: true时需设置,用于判断是否已打开此页面
                                url: "module/md/page/product/page/category_edit.html",
                                data: {},
                                delta: {},
                                sceneCode: "add",//"refuseedit",//"approval", //"add"//"browse",
                                callback: function(options_obj, callback) {
                                    me.type_treedata = options_obj.options;
                                    if (callback) {
                                        callback();
                                    }
                                }
                            };
                            me.doPopupByPublic(config);
                        },
                        //编辑节点
                        onEditNode(obj) {
                            var data = obj.data, node = obj.node;
                            var me = this;
                            Root.showPopup({
                                url: "module/md/page/product/page/product_type_edit.html",
                                url: "module/md/page/product/page/category_edit.html",
                                width: 800,
                                height: 230,
                                text: "资料分类",
                                data: data,
                                sceneCode: "edit",
                                callback: function(options_obj, callback) {
@@ -203,8 +491,10 @@
                                    }
                                }
                            });
                        },
                        
                        //删除节点
                        onDelNode(obj) {
                            var data = obj.data, node = obj.node;
                            let me = this;
@@ -213,7 +503,7 @@
                              cancelButtonText: '取消',
                              type: 'warning'
                            }).then(() => {
                                me.dodeldata(data, node, "agm_category");
                                me.dodeldata(data, node, "md_prod_category");
                            }).catch(() => {
                                Root.message({
                                    type: 'info',
@@ -221,11 +511,9 @@
                                });
                            });
                        },
                        dodeldata(row, node, tablename) {
                            if (row.id) {
                                let param = {
                                    dataname: tablename,
                                    id: row.id
                                }
@@ -247,318 +535,9 @@
                            }
                        },
                        
                        node_isShow(data, isShow) {
                            if (this.$refs[data.id]) {
                                this.$refs[data.id].style.display = isShow ? '' : 'none';
                            }
                        },
                        onNodeClick(obj) {
                            console.log(obj);
                            var data = obj.data, node = obj.node, el = obj.el;
                            var authorize_category_ids = "";
                            if (data.children && data.children.length) {
                                authorize_category_ids = "category_name='" + data.name + "'"
                            }
                            else {
                                authorize_category_ids = "product_name='" + data.name + "'"
                            }
                            // this.filterObjBydefault.category_name = val
                            this.selectedrow = data;
                            this.setSelectedRowId = null;//Brooke
                            this.filterObj = {};
                            this.pagenum_p = 1;
                            this.authorize_category_ids = authorize_category_ids;
                            this.getDataByNode();
                        },
                        // onNodeClick(data, node, 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.selectedrow = data;
                        //     this.pagenum_p = 1;
                        //     this.getDataByNode();
                        // },
                        getDataByNode() {
                        rowClick(obj){
                            var me = this;
                            if (!me.selectedrow.id) {
                                return
                            }
                            var filter_ = "";
                            // filter_ = " product_line_name like '" + this.selectedrow.name + "' or authorize_category_name like '" + this.selectedrow.name + "'"
                            //filter_ = " code is not null and code <> '' and (authorize_category_id = '" + me.selectedrow.type_id + "' or authorize_category_name like '" + me.selectedrow.name + "')"
                            filter_ =  this.authorize_category_ids;
                            var param_ = {
                                dataname: me.dataname_p,
                                filter: filter_,
                                orderby: "product_name",
                                page: {
                                    pageno: me.pagenum_p,
                                    pagesize: me.pagesize_p
                                },
                            }
                            Server.call("root/data/getEntitySet", param_, function(result) {
                                if (result && result.data && result.data.entityset) {
                                    var data_ = result.data.entityset;
                                    me.tableData_p = data_;
                                    me.total_p = result.data.page.recordcount;
                                }
                                else {
                                    me.total_p = 0;
                                }
                            })
                        },
                        getTableMeta() {
                            var me = this;
                            var param_ = {
                                dataname: this.dataname_p,
                                filter: "1<>1",
                                attachMeta: true,
                            }
                            Server.call("root/data/getEntitySet", param_, function(result) {
                                if (result.meta && result.meta[me.dataname_p] && result.meta[me.dataname_p].fields) {
                                    var metas = clone(result.meta[me.dataname_p].fields);
                                    var filterFields_ = [];
                                    var tableFields_ = [];
                                    metas.map(f=>{
                                        f.isshow = "T";
                                        //filter
                                        if (f.isfilter) {
                                            filterFields_.push(clone(f));
                                        }
                                        else {
                                            var filter_f = clone(f);
                                            filter_f.isshow = "F";
                                            filterFields_.push(filter_f);
                                        }
                                        if(f.field == "rule_code") {
                                            f.isshow = "F";
                                        }
                                        tableFields_.push(clone(f));
                                    })
                                    if (!me.tableFields_p || (me.tableFields_p && me.tableFields_p.length == 0)) {
                                        me.tableFields_p = clone(tableFields_);
                                        me.filterFields = clone(filterFields_);
                                        var filterObj_ = getDataByFields(me.filterObj, me.filterFields);
                                        me.filterObj = clone(filterObj_);
                                    }
                                }
                                //字段数组转字段obj,目的为了筛选时获取字段属性
                                me.fieldsToFieldsObj();
                                me.tableFieldClick();
                                me.tableDataAfter_p();
                            })
                        },
                        fieldsToFieldsObj() {
                            //字段转换
                            var formFieldsObj_ = {};
                            var tableFieldsObj_ = {};
                            this.formFieldsObj_ = {};
                            this.tableFieldsObj = {};
                            var filterFieldsObj_ = {};
                            this.filterFieldsObj = {};
                            this.formFields.map(f=>{
                                if (f.inputtypefilter) {
                                    f.type = f.inputtypefilter;
                                }
                                formFieldsObj_[f.field] = f;
                            });
                            this.formFieldsObj = clone(formFieldsObj_);
                            if (this.tableFields && this.tableFields.length) {
                                var tableFields_ = TreeToArray(this.tableFields, "field");
                                tableFields_.map(f=>{
                                    tableFieldsObj_[f.field] = f;
                                });
                                this.tableFieldsObj = clone(tableFieldsObj_);
                            }
                            this.filterFields.map(f=>{
                                if (f.inputtype == "date") {
                                    f.type = "daterange";
                                    f.filteroperator = "inScopeInclude";
                                }
                                if (f.inputtypefilter) {
                                    f.type = f.inputtypefilter;
                                }
                                filterFieldsObj_[f.field] = f;
                            });
                            this.filterFieldsObj = clone(filterFieldsObj_);
                        },
                        tableFieldClick() {
                            var me = this;
                            //表格字段事件设置
                            this.tablefieldClick = {
                                material_code: {//字段事件设置
                                    val: {//有值时的点击事件
                                        notclick_val: "",//不可点击的值,1、是数组["11","22"];2、以“;”分隔的字符串"111;222"
                                        notclick_bindfield: [],//当该字段值等于指定字段值时不可点击["filterfield": "111"]
                                        onclick: function(obj) {//数据值点击事件
                                            var config = {
                                                totab: false, //true: 以Tab导航的方式打开
                                                width: "1100px",
                                                height: "520px",
                                                icon: "icon-product",
                                                text: "授权范围" + (obj.row.material_code ? "-" + obj.row.material_code : ""),
                                                id: "popup_sku_relation" + obj.row.id,//totab: true时需设置,用于判断是否已打开此页面
                                                url: "module/md/page/product/page/popup_sku_relation.html",
                                                data: obj.row,
                                                delta: "",
                                                filter: "product_id='"+obj.row.id+"'",
                                                sceneCode: "browse",//"refuseedit",//"approval", //"add"//"browse",
                                                callback: function(obj, callback) {
                                                    if (callback) {
                                                        callback();
                                                    }
                                                }
                                            };
                                            me.doPopupByPublic(config);
                                        },
                                    },
                                },
                            };
                        },
                        tableDataAfter_p() {
                            var me = this;
                            if (this.tableFields_p.length > 0){
                                this.isRefresh_p = false;
                                this.$nextTick(function(){
                                    this.isRefresh_p = true;
                                    this.$nextTick(function(){
                                        var el_list = [];
                                        me.tableHeight_p = me.treeHeight;
                                    })
                                })
                            }
                        },
                        onQueryAfter() {
                            this.pagenum_p = 1;
                            this.tableData_p = [];
                            this.total_p = 0;
                        },
                        getData_p(page) {
                            this.pagesize_p = page.pagesize;
                            this.pagenum_p = page.pagenum;
                            this.filterQuery();
                        },
                        getRow(obj) {
                            this.setSelectedRowId = clone(obj.row.id);
                        },
                        setRuleValue() {
                            let me = this;
                            let obj ={
                                row: {
                                    id: me.setSelectedRowId,
                                },
                            }
                            var config = {
                                totab: false, //true: 以Tab导航的方式打开
                                width: "600px",
                                height: "500px",
                                icon: "icon-product",
                                text: "为 " + obj.row.id + " 设置下单倍数",
                                id: "popup_setRuleValue",//totab: true时需设置,用于判断是否已打开此页面
                                url: "module/md/page/product/page/popup_setRuleValue.html",
                                data: obj.row,
                                delta: "",
                                // filter: "id = '3018004'",
                                sceneCode: "edit",//"refuseedit",//"approval", //"add"//"browse",
                                callback: function(obj, callback) {
                                    me.filterQuery();
                                    if (callback) {
                                        callback();
                                    }
                                }
                            };
                            me.doPopupByPublic(config);
                        },
                        filterQuery() {
                            var me = this;
                            // var filter_ = " code is not null and code <> '' and (authorize_category_id = '" + me.selectedrow.type_id + "' or authorize_category_name like '" + me.selectedrow.name + "')"
                            var filter_ = " code is not null and code <> '' and " + me.authorize_category_ids;
                            filter_ = me.getFilterData(filter_, me.filterObj, me.filterFieldsObj);
                            console.log(filter_);
                            var param_ = {
                                dataname: me.dataname_p,
                                filter: filter_,
                                orderby: "name",
                                page: {
                                    pageno: me.pagenum_p,
                                    pagesize: me.pagesize_p
                                },
                            }
                            Server.call("root/data/getEntitySet", param_, function(result) {
                                if (result && result.data && result.data.entityset) {
                                    var data_ = result.data.entityset;
                                    me.tableData_p = data_;
                                    me.total_p = result.data.page.recordcount;
                                }
                                else {
                                    me.total_p = 0;
                                }
                            })
                        },
                        onInitFilter: function() {
                            this.filterObj = {};
                            this.filterQuery();
                        },
                        onDownload() {
                            let me = this;
                            let param = {
                                ioname:"export_md_prod_library_detail",
                                orderby: "",
                                token: Root.getToken()
                            }
                            window.top.vue.textdownloadForm(param);
                            me.selectTabObj.selectedrow = obj.row;
                        },
                    }
                });
@@ -569,7 +548,7 @@
            });
        </script>
        <style>
            /*  在vue.js中 v-cloak 这个指令是防止页面加载时出现 vuejs 的变量名而设计的 */
            /* 在vue.js中 v-cloak 这个指令是防止页面加载时出现 vuejs 的变量名而设计的 */
            [v-cloak] {
                display: none !important;
            }
@@ -577,9 +556,6 @@
                overflow: hidden;
                position: relative;
                padding-left: 20px;
            }
            .nodeLabel {
                max-width: 220px !important;
            }
        </style>
        
@@ -590,126 +566,83 @@
            <div id="page_root">
                <div class="topbar">
                    <span>{{title}}</span>
                    <div style="float: right; margin-right: 10px">
                        <el-button v-show="cbuttons_r.export" @click="onDownload":icon="buttonsconfig.export.icon">{{buttonsconfig.export.name}}</el-button>
                    <div style="float: right; margin-right: 18px;">
                        <el-button v-show="cbuttons_r.Add" :disabled="!clickChildNode" @click="addData" :icon="buttonsconfig.add.icon">{{buttonsconfig.add.name}}</el-button>
                        <!-- <el-button v-show="activeTabName == 'Open'" :disabled="!(selectTabObj.selectedrow && selectTabObj.selectedrow.id && selectTabObj.selectedrow.state_code == 'Open')" type="danger" @click="cancelConfirm">作 废</el-button> -->
                    </div>
                </div>
                
                <div class="h_dialog__body">
                    <div :style="{position: 'absolute', left: '10px', width: '320px', top: '40px', bottom: '10px', border: '1px solid #ccc'}">
                    <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>
                            <span style="font-size: 14px;margin-left: 20px;">资料分类</span>
                        </div>
                        <div :style="{padding: '10px 0', height: treeHeight - 55 + 'px', overflow: 'auto'}">
                            <h-tree
                            v-if="isRefresh"
                            :tree-data="treeData"
                        <h-tree
                            v-if="type_treedata && type_treedata.length"
                            :tree-data="type_treedata"
                            :tree-txt-formatter="treeTxtFormatter"
                            :currentnodekey="currentnodekey"
                            :is-readonly="isTreeReadonly"
                            :currentnodekey="currentnodekey"
                            :maxlevel = "maxlevel"
                            
                            @node-click="onNodeClick"
                            @add-node="onAddNode"
                            @edit-node="onEditNode"
                            @del-node="onDelNode"
                            >
                            </h-tree>
                            <!-- <el-tree ref="hierTree" class="filter-tree" node-key="id" :indent="24"
                             default-expand-all
                             highlight-current
                             :data="treeData"
                             show-checkbox
                             :expand-on-click-node="true"
                             @node-click="onNodeClick"
                             >
                                <span class="custom-tree-node z_menu_tree" slot-scope="{ node, data, itm }"
                                 @mouseenter="node_isShow(data, true)"
                                 @mouseleave="node_isShow(data, false)"
                                >
                                    <span>
                                        <div class="nodeLabel nodeLabel_l" style="height: 32px; line-height: 32px;">
                                        </div>
                                        <div class="nodeLabel z_left_menu_tree_txt">
                                            <i v-if="!node.isLeaf" :class="!node.expanded ? 'el-icon-plus':'el-icon-minus'" style="font-size: 10px; margin-right: 10px; border: 1px solid #a7a9a9; color: #a7a9a9;"></i>
                                        </div>
                                        <div class="nodeLabel z_left_menu_tree_txt">
                                            <span>{{ data.name }}</span>
                                            <el-badge :ref="'dadgeid_' + data.id" v-show="data.isBadge ? true : false" is-dot class="item">
                                            </el-badge>
                                        </div>
                                    </span>
                                    <span>
                                        <div :ref="data.id" v-show="false" class="nodeLabel" style="width: 128px;max-width: 128px;">
                                            <el-button v-if="!data.parent_id" type="text"
                                            @click.stop="addNode(data,node)" class="z_node_button" icon="el-icon-circle-plus-outline">
                                            </el-button>
                                            <el-button type="text"
                                            @click.stop="editNode(data,node)" class="z_node_button" icon="el-icon-edit">
                                            </el-button>
                                            <el-button v-if="!(data.children && data.children.length)" type="text"
                                            @click.stop="delNode(data,node)" class="z_node_button" icon="el-icon-delete">
                                            </el-button>
                                        </div>
                                        <div class="nodeLabel" style="margin-right: 30px;">
                                            <span v-if="!node.isLeaf">{{data.children.length}}</span>
                                        </div>
                                    </span>
                                </span>
                            </el-tree> -->
                        </div>
                        </h-tree>
                    </div>
                    <div :style="{position: 'absolute', left: '340px', right: '10px', top: '40px', bottom: '10px', border: '1px solid #ccc'}">
                    <div style="position: absolute;left: 340px; top:45px; right: 10px; bottom: 10px;border: 1px solid #ccc;">
                        <div>
                            <div style="height: 32px; border-bottom: 1px solid #aaa;">
                                <div class="table_title" style="float: left;">
                                    <span>产品列表</span>
                                </div>
                                <div style=" text-align: right; ">
                                    <el-button v-show="cbuttons_r.RuleValue" :disabled="!(setSelectedRowId)" @click="setRuleValue" >设置下单倍数</el-button>
                                </div>
                            <el-tabs v-model="activeTabName" @tab-click="handleClick">
                                <el-tab-pane v-for="(tab, k) in tabs" :label="tab.name" :name="tab.code" :key="k"></el-tab-pane>
                            </el-tabs>
                        </div>
                        <!-- <div class="topbar-line">
                            <div class="query-bar">
                                <h-form-filter v-if="selectTabObj.filterFields" ref="form1"
                                    :form-attr="filterAttr"
                                    :table-fields="selectTabObj.filterFields"
                                    :form-data="selectTabObj.filterObj"
                                    :table-field-click="selectTabObj.filterfieldClick"
                                    v-on:on-query="onQuery"
                                    v-on:on-init-query="onInitFilter"
                                    v-on:on-edit-query="onEditFilter"
                                    >
                                </h-form-filter>
                            </div>
                            <div class="topbar-line">
                                <!-- <div class="query-icon">
                                    <i class="iconfont icon-query"></i>
                                </div> -->
                                <div class="query-bar">
                                    <!-- <h-form-filter
                                        ref="form1"
                                        :form-attr="filterAttr"
                                        :table-fields="filterFields"
                                        :form-data="filterObj"
                                        :table-field-click="filterfieldClick"
                                        v-on:on-query="filterQuery"
                                        v-on:on-init-query="onInitFilter"
                                        >
                                    </h-form-filter> -->
                                </div>
                            </div>
                        </div> -->
                        <div class="h_dialog__body">
                            <h-table
                                v-if="isRefresh_p"
                                ref="table_p"
                                :table-fields="tableFields_p"
                                :table-data="tableData_p"
                                :pagesize="pagesize_p"
                                :pagenum="pagenum_p"
                                :total="total_p"
                                :table-height="tableHeight_p - 132"
                                v-if="isRefresh && selectTabObj.tableFields"
                                ref="table1"
                                :table-fields="selectTabObj.tableFields"
                                :table-data="selectTabObj.tableData"
                                :is-edit-table-data="selectTabObj.isEditTableData"
                                :pagesize="selectTabObj.pagesize"
                                :pagenum="selectTabObj.pagenum"
                                :total="selectTabObj.total"
                                :table-height="selectTabObj.tableHeight - 10"
                                :table-field-click="selectTabObj.tablefieldClick"
                                :is-show-index="selectTabObj.isShowIndex"
                                :tableloading="tableloading"
                                :isdraggableorder="false"
                                :is-highlight-row="true"
                                :table-field-click="tablefieldClick"
                                :isfilterfield="false"
                                :table-buttons-click="selectTabObj.tablebuttonClick"
                                
                                v-on:get-data="getData_p"
                                v-on:row-click="getRow"
                                v-on:get-data="getData"
                                v-on:edit-data="editData"
                                v-on:row-click="rowClick"
                                v-on:order-fields="orderTableFields"
                            >
                            </h-table>
                        </div>
                    </div>
                </div>
            </div>
        </div>
module/md/page/product/page/batch_number_edit.html
@@ -2,7 +2,7 @@
<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>
        <title>模板信息</title>
        
        <script type="text/javascript">
            var pageVue = null;
@@ -15,35 +15,24 @@
                new FormVue({
                    el: "#vbody",
                    data: {
                        dataname: "md_batch",
                        title: "添加批号",
                        dataname: "sys_dossier",
                        title: "模板信息",
                        formAttr: {
                            istitle: false,
                            title: "批号信息",
                            title: "表单名称",
                            columnnumber: 2,
                            labelwidth: "140px",
                            labelwidth: "100px",
                            labelposition: "left",//"left",// right//top
                            size: "mini",
                            border: "10px solid #c6c6c600"
                        },
                        formFields: [],
                        default_formFields: [
                            {field: "field11", name: "产品线", isshow: "T"},
                            {field: "field22", name: "产品编码", isshow: "T"},
                            {field: "name", name: "产品名称", isshow: "T", type:"popup"},
                            {field: "batchnumber", name: "批号", isshow: "T"},
                            {isshow: "T", field: "field33",name: "产品检验报告", type: "span", buttonarrayname: [{type: "isnotdatashow", buttonname:"文件上传",code:"upload", icon: "el-icon-upload", classname: "form_uploadfile"},{type:"isdata", buttonname: "查看文件", icon: "el-icon-search",code:"showfile", classname: "form_showfile"},{type: "isdatashow", buttonname: "删除附件", icon: "el-icon-delete",code:"delfile", classname: "form_delfile"}], required: true},
                        ],
                        newformData: {
                            //id: uuid_short(),
                            // code: createCode("BA"),
                            create_time: createDatetime(),
                            status: "input",
                            state_name: "草稿",
                            creator_name: window.top.vue.userinfo.name,
                            type_code: "",
                            type_name: "",
                            state_code: "Open",
                            state_name: "生效",
                            type: "agreement",
                            // creator_id:
                        },
                        formData: {},
                        
@@ -51,32 +40,32 @@
                        isedit: false,//提交前编辑,保存/提交
                        isrefuseedit: false,//拒绝后编辑,保存/再次提交
                        isapproval: false,//审批,同意/拒绝/转办/退回
                        iscommit: false,//提交标记
                        
                        //弹窗参数
                        popupParames: {},
                        //字段设置
                        tablefieldClick: {},
                        formfieldClick: {},
                    },
                    created() {
                        this.popupParames = clone(Root.popupParames);
                        this.title = this.popupParames.title || this.popupParames.text
                        this.title = this.popupParames.title || this.popupParames.text;
                        if (this.popupParames.data) {
                            this.formData = clone(this.popupParames.data);
                        }
                        
                        if (this.popupParames.sceneCode) {
                            if (this.popupParames.sceneCode == "add") {//新增
                                if (this.newformData) {
                                    let formData_ = clone(this.formData);
                                    for (var k in this.newformData) {
                                        formData_[k] = this.newformData[k];
                                    }
                                    this.formData = formData_;
                                //动态获取默认数据
                                var newEntity_ = {
                                    name: "newEntity",
                                    url: "root/data/newEntity",
                                    paramsobj: {dataname: "sys_dossier"},
                                    isnotoption: true, //true:不是选项
                                }
                                this.dataRequest.push(newEntity_);
                                this.isedit = true;
                            }
                            else if (this.popupParames.sceneCode == "browse") {//只读
@@ -103,14 +92,26 @@
                            this.loadRequestData(this.dataRequest, result, function(data) {
                                me.dataRequestObj = data;
                                //预加载数据后给哪些字段设置options或formatterjson
                                data.agm_template.map(c=>{
                                    me.options_templateobj[c[me.props_template.value]] = c;
                                })
                                let agm_template_ = ArrayToTree(clone(data.agm_template), "name", "parent_id");
                                me.options_category = agm_template_;
                                if (me.dataRequestObj.newEntity) {
                                    var formData = clone(me.dataRequestObj.newEntity.data["sys_dossier"]);
                                    // formData.product_category_name = [];
                                    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.popupParames.delta) {
                                        me.formData.category_id = clone(me.popupParames.delta.nodeKey);
                                    }
                                }
                                me.initData();
                            });
                        }
@@ -127,6 +128,7 @@
                                //let w_ = this.$refs.popup_body.offsetWidth + "px";
                                let w_ = "900px";
                                let h_ = this.$refs.popup_body.offsetHeight + "px";
                                Root.setPopupWH(w_, h_);
                            })
                        });
@@ -176,7 +178,7 @@
                                        formFields_.push(clone(f));
                                    })
                                    if (!me.formFields || (me.formFields && me.formFields.length == 0)) {
                                        me.formFields = clone(me.default_formFields);
                                        me.formFields = clone(formFields_);
                                        
                                        //字段数组转字段obj,目的为了筛选时获取字段属性
                                        me.fieldsToFieldsObj();
@@ -185,62 +187,65 @@
                                        me.tableFieldClick();
                                    }
                                }
                                if (me.rowData["file_index"]) {
                                }
                            })
                        },
                        
                        tableFieldClick() {
                            var me = this;
                            //表格字段事件设置
                            this.tablefieldClick = {
                            };
                            //表单字段事件设置
                            this.formfieldClick = {
                                name: {
                                    popup: {
                                        onclick: function(obj) {//弹窗点击事件
                                            //打开
                                            me.tablePopup_productList(obj)
                                template_type_code: {
                                    select: {
                                        onchange: function(obj) {
                                            obj.data.template_type_code = obj.selectoption.code || "";
                                            obj.data.template_type_name = obj.selectoption.value || "";
                                        }
                                    }
                                },
                                template_attachment: {
                                    buttonarray: {
                                        onclick: function(obj) {
                                            var filenamefield = obj.obj.field;
                                            var fileidfield = "template_attachment_id";
                                            if(obj.buttonobj && obj.buttonobj.code == "showfile"){
                                                me.showFileImgByFileId(filenamefield, fileidfield, obj);
                                            }else if (obj.buttonobj && obj.buttonobj.code == "upload"){
                                                me.onPopupByUploadFile(filenamefield, fileidfield, me.dataname);
                                            }else if (obj.buttonobj && obj.buttonobj.code == "delfile"){
                                                me.deleteByFileId(filenamefield, fileidfield, obj);
                                            }
                                        }
                                    },
                                },
                            };
                        },
                        tablePopup_productList(obj) {
                            var me = this;
                            Root.showPopup({
                                url: "module/md/page/product/page/popup-new_batch_number-product.html",
                                width: 800,
                                height: 550,
                                data: this.oldObj,
                                sceneCode: "add",
                                dataname: "customer",
                                callback: function(obj, callback) {
                                    if (callback) {
                                        callback();
                                    }
                                }
                            });
                        },
                        
                        //提交
                        submitRowTable() {
                            this.iscommit = true;
                            //必填项校验
                            var bo1 = this.$refs.form1.checkForm();
                            if(!bo1){
                                Root.message({
                                    type: 'error',
                                    message: '请填写必填项'
                                });
                                this.iscommit = false;
                                return;
                            }
                            this.saveRowTable();
                        },
                        
                        //保存
                        saveRowTable() {
                            var me = this;
                            var operator_ = "save";//保存
                            if(me.iscommit) {
                                operator_ = "commit";//提交
                            }
                            var entity_ = clone(this.formData);
                            var entity_ = clone(me.formData);
                            var entity = {};
                            for (var r in entity_) {
                                if (entity_[r] || entity_[r] == "" || entity_[r] == false || entity_[r] == 0) {
@@ -249,34 +254,170 @@
                            }
                            
                            let param = {
                                dataname: this.dataname,
                                // operator: operator_,
                                dataname: me.dataname,
                                data: {},
                            }
                            param.data[this.dataname] = entity;
                            param.data[me.dataname] = entity;
                            
                            Server.call("root/data/saveEntity", param, function(result) {
                                console.log(result);
                                if (result.success) {
                                    if(me.iscommit){
                                me.iscommit = false;
                                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;
                                        Root.message({
                                            type: 'success',
                                            message: '提交成功'
                                        });
                                        me.saveAfter();
                                        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: 'success',
                                            message: '保存成功'
                                        });
                                        me.saveAfter();
                                    }
                                }
                                else {
                                    me.iscommit = false;
                                    Root.message({
                                        type: 'error',
                                        message: '提交失败'
                                    });
                                }
                            });
                        },
                        onPopupByUploadFile(filenamefield, fileidfield,dataname) {
                            var me = this;
                            var analysistype_ = "";
                            var formData_ = clone(me.formData);
                            var delta_ = {filetypelist: [], multiplelimit: 1}//".png", ".jpg", ".pdf"
                            var config = {
                                totab: false,
                                width: "500px",
                                icon: "icon-product",
                                text: "附件上传",
                                id: "popupByUploadFile",
                                url: "module/tool/page/popup_uploadFile.html",
                                data: {
                                    dataName: dataname,
                                    fileidfieldName: fileidfield,
                                    id: me.formData.id,
                                    fileNamefieldName: filenamefield,
                                },
                                delta: delta_,
                                callback: function(obj, callback) {
                                    me.$message({
                                        showClose: true,
                                        message: '上传成功!',
                                        type: 'success'
                                    });
                                    if (!formData_[filenamefield]) {
                                        formData_[filenamefield] = {};
                                    }
                                    formData_[filenamefield] = decodeURI(obj.row[0].name);
                                    formData_[fileidfield] = obj.row[0].id;
                                    me.formData = formData_;
                                    if (callback) {
                                        callback();
                                    }
                                }
                            };
                            this.doPopupByPublic(config);
                        },
                        showFileImgByFileId(filenamefield, fileidfield, obj) {
                            let me = this;
                            var file_name = obj.formdata[filenamefield];
                            var file_id = obj.formdata[fileidfield];
                            if(file_id) {
                                var fileid = file_id;
                                let fileName = clone(file_name);
                                let index1 = fileName.lastIndexOf(".");
                                let index2 = fileName.length;
                                let suffix = fileName.substring(index1, index2).toLowerCase(); //后缀名
                                if (suffix == ".png" || suffix == ".jpg" || suffix == ".pdf") {
                                    var row = {
                                        fileid: fileid,
                                        filename: fileName,
                                        dataname: this.dataname
                                    }
                        
                                    var config = {
                                        totab: false,
                                        width: "1200px",
                                        height: 800,
                                        icon: "icon-product",
                                        text: "附件预览",
                                        id: "pdf_" + fileid,
                                        url: "module/tool/page/popup_file_pdf.html",
                                        data: row,
                                        delta: {},
                                        callback: function(obj, callback) {
                                            if (callback) {
                                                callback();
                                            }
                                        }
                                    };
                                    this.doPopupByPublic(config);
                                }
                                else {//只可下载,不可预览
                                    // handleDownloadUrl(fileid,false);
                                    handleDownload(fileid, this.dataname);
                                }
                            }
                        },
                        deleteByFileId(filenamefield, fileidfield, obj){
                            var me = this;
                            var formData_ = clone(me.formData);
                            Root.confirm('确定删除附件【' + formData_[filenamefield] + '】吗?', '删除提示', {
                              confirmButtonText: '删除',
                              cancelButtonText: '取消',
                              type: 'warning'
                            }).then(() => {
                                if (obj.formdata[fileidfield]) {
                                    let param = {
                                        dataname: "sys_dossier_file",
                                        id: obj.formdata[fileidfield],
                                    }
                                    Server.call("root/data/deleteEntity", param, function(result) {
                                        console.log(result);
                                        if (result && result.data) {
                                            formData_[filenamefield] = "";
                                            formData_[fileidfield] = "";
                                            me.formData = clone(formData_);
                                            Root.message({
                                                type: 'success',
                                                message: '删除成功!'
                                            });
                                        }
                                    });
                                }
                            }).catch(() => {
                                Root.message({
                                    type: 'info',
                                    message: '已取消删除'
                                });
                            });
                        },
                    }
                });
            };
@@ -293,7 +434,9 @@
        </style>
        
    </head>
    <body style="margin: 0px;">        <div v-cloak id="vbody">
    <body style="margin: 0px;">
        <div v-cloak id="vbody">
            <div id="page_root">
                <div ref="popup_body" style="padding: 0 20px;">
                    <div class="popup_el-dialog__header">
@@ -302,7 +445,7 @@
                          <span> {{title}}</span>
                        </div>
                    </div>    
                    <div style="height: 350px; overflow-y: auto;">
                    <div style="height: 300px; overflow-y: auto;">
                        <div class="el-dialog__body">
                            <h-form
                                ref="form1"
@@ -316,13 +459,7 @@
                    </div>
                    <div class="el-dialog__footer">
                        <el-button size="small" type="default" @click="closeDialog">取 消</el-button>
                        <el-button size="small" v-if="isedit || isrefuseedit" type="primary" @click="saveRowTable":icon="buttonsconfig.save.icon">{{buttonsconfig.save.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="">通 过</el-button>
                        <el-button size="small" v-if="isapproval" type="danger" @click="">拒 绝</el-button>
                        <el-button size="small" v-if="isapproval" type="primary" @click="">转 办</el-button>
                        <el-button size="small" v-if="isapproval" type="success" @click="">退 回</el-button>
                        <el-button size="small" v-if="isedit" type="success" :loading="iscommit" @click="submitRowTable":icon="buttonsconfig.submit.icon">{{buttonsconfig.submit.name}}</el-button>
                    </div>
                </div>
            </div>
module/md/page/product/page/category_edit.html
New file
@@ -0,0 +1,653 @@
<!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 BasicsVue({
                    el: "#vbody",
                    data: {
                        //dataname:  "agm_record",
                        form_dataname: "md_prod_category",
                        table_dataname: "",
                        dataRequest: [
                            {
                                name: "md_prod_category",
                                //url: "root/front/getOneDictionary",
                                //paramsobj: { code: "OrgType", },
                                isnotoption: false, //true:不是选项
                                code:"id",//是下拉选项时设置
                                label:"name",//是下拉选项时设置
                                filter: " (parent_id is null or parent_id='')"
                            },
                            {
                             name: "agmrecord_field",
                             dataname: "agm_field",
                             //url: "root/front/getOneDictionary",
                             //paramsobj: { code: "OrgType", },
                             filter: " table_name='agm_record'",
                             isnotoption: false, //true:不是选项
                             code:"id",//是下拉选项时设置
                             label:"field_name",//是下拉选项时设置
                            },
                        ],
                        title: "协议类型新增",
                        formAttr: {
                            istitle: false,
                            title: "协议类型新增",
                            columnnumber: 2,
                            labelwidth: "110px",
                            labelposition: "left",// right
                            size: "medium",
                            border: "0px solid #c6c6c600"
                        },
                        formFields: [
                            {isshow: "T", field: "creator_name", name: "创建人", type: "span", notvalunit: true},
                            {isshow: "T", field: "create_time", name: "创建时间", type: "span", notvalunit: true},
                            {isshow: "T", field: "parent_id", name: "所属类型", type: "select", isrefresh: true,
                                options: [], props:{value: "id", label: "name"}, notvalunit: true,
                            },
                            {isshow: "T", field: "name", name: "类型名称", notvalunit: true},
                            //{isshow: "T", field: "fieldlist", name: "备案字段配置", type: "checkboxobj", options: [], colspan: 3},
                        ],
                        newRowDefault: {
                            //id: uuid_short(),
                            code: createCode("BA"),
                            versionno: "1",
                            create_time: createDatetime(),
                            creator_name: window.top.vue.userinfo.name,
                            //fieldlist: []
                        },
                        formData: {},
                        isWithinEditTableData: false,
                        notdisabled: true,
                        Approval: false,
                        isCommit: false,
                        treeoptions: [],
                        tableFields1: [
                            {isshow: "T", field: "field_name", name: "备案基础字段"},
                        ],
                        tableFields2: [
                            {isshow: "T", field: "field_name", name: "备案明细产品及金额字段"},
                        ],
                        tableFields3: [
                            {isshow: "T", field: "field_name", name: "备案明细终端字段"},
                        ],
                        tableHeight: 300,
                        tableData1: [],
                        tableData2: [],
                        tableData3: [],
                        agmFieldsObj: {},
                        isCommit: false,
                        selectionList: [],
                        selectionList_detail: [],
                        //字段设置
                        tablefieldClick: {},
                        formfieldClick: {},
                    },
                    created() {
                        this.popupParames = clone(Root.popupParames);
                        this.title = this.popupParames.title || this.popupParames.text;
                        if (this.popupParames.data) {
                            this.formData = clone(this.popupParames.data);
                        }
                        if (this.popupParames.sceneCode) {
                            if (this.popupParames.sceneCode == "browse") {
                                this.formAttr.disabled = true;
                                this.isWithinEditTableData = false;
                                this.notdisabled = false;
                                this.Approval = false;
                            }
                            else if (this.popupParames.sceneCode == "add") {
                                if (this.newRowDefault) {
                                    let formData_ = clone(this.formData);
                                    for (var k in this.newRowDefault) {
                                        formData_[k] = this.newRowDefault[k];
                                    }
                                    this.formData = formData_;
                                }
                            }
                            else if (this.popupParames.sceneCode == "edit") {
                                let formData_ = clone(this.formData);
                            }
                        }
                    },
                    mounted() {
                        var me = this;
                        //预加载数据
                        if (this.dataRequest.length) {
                            var result = {};
                            this.loadRequestData(this.dataRequest, result, function(data) {
                                me.dataRequestObj = data;
                                //预加载数据后给哪些字段设置options或formatterjson
                                me.tableData1 = clone(data.agmrecord_field);
                                // me.tableData2 = clone(data.agmrecorddetail_field);
                                // me.tableData3 = clone(data.agmrecorddetail_terminal_field);
                                var fieldlist_options = [];
                                me.tableData1.map(r=>{
                                    var option_ = {
                                        code: r.id,
                                        name: r.field_name
                                    }
                                    fieldlist_options.push(option_);
                                    me.agmFieldsObj[r.id] = r;
                                })
                                // me.tableData2.map(r=>{
                                //     me.agmFieldsObj[r.id] = r;
                                // })
                                // me.tableData3.map(r=>{
                                //     me.agmFieldsObj[r.id] = r;
                                // })
                                var formFields_ = clone(me.formFields);
                                formFields_.map(f=>{
                                    if (f.field == "parent_id") {
                                        //me.$set(f.options, me.dataRequestObj.md_prod_category)
                                        f.options = me.dataRequestObj.md_prod_category
                                    }
                                    else if (f.field == "fieldlist") {
                                        f.options = fieldlist_options
                                    }
                                })
                                me.formFields = clone(formFields_);
                                me.initData();
                            });
                        }
                        else {
                            this.initData();
                        }
                        this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
                            hideLoading();
                            //重新设置弹窗宽高
                            this.$nextTick(function(){
                                //let w_ = this.$refs.popup_body.offsetWidth + "px";
                                let w_ = "900px";
                                let h_ = this.$refs.popup_body.offsetHeight + "px";
                                Root.setPopupWH(w_, h_);
                            })
                        });
                    },
                    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 = {
                                    options: this.treeoptions
                                }
                                this.popupParames.callback(obj, function() {
                                    me.closeDialog();
                                });
                            }
                            else {
                                me.closeDialog();
                            }
                        },
                        initData() {
                            let me = this
                            let filter_table = "";
                            //设置字段事件
                            me.tableFieldClick();
                        },
                        tableFieldClick() {
                            var me = this;
                            //表单字段事件设置
                            this.formfieldClick = {
                                parent_id: {//植入日期
                                    select: {
                                        onchange: function(obj) {//植入日期要早于上报日期
                                            console.log("testest", obj);
                                            if (obj.selectoption) {
                                                if (obj.selectoption.code_rule) {
                                                    me.$set(me.formData, "code_rule", obj.selectoption.code_rule);
                                                }
                                                if (obj.selectoption.code_rule) {
                                                    me.$set(me.formData, "method_name", obj.selectoption.method_name);
                                                }
                                                if (obj.selectoption.code_rule) {
                                                    me.$set(me.formData, "sql_content", obj.selectoption.sql_content);
                                                }
                                            }
                                        }
                                    }
                                },
                            };
                        },
                        submitRowTable() {
                            this.isCommit = true;
                            this.saveRowTable();
                        },
                        saveRowTable() {
                            var me = this;
                            var operator_ = "save";//保存
                            if(me.isCommit) {
                                operator_ = "commit";//提交
                            }
                            var entity_ = clone(this.formData);
                            var entity = {};
                            for (var r in entity_) {
                                if (entity_[r] || entity_[r] == "" || entity_[r] == false || entity_[r] == 0) {
                                    entity[r] = entity_[r];
                                }
                            }
                            var table_entityset = [];
                            if (this.formData.fieldlist) {
                                this.formData.fieldlist.map(id=>{
                                    var entity_d = {
                                        category_name: this.formData.name,
                                        field_id: id,
                                        field: this.agmFieldsObj[id].field,
                                        field_name: this.agmFieldsObj[id].field_name,
                                        table_name: this.agmFieldsObj[id].table_name
                                    }
                                    this.formData.id
                                    table_entityset.push(entity_d);
                                })
                            }
                            // this.selectionList_detail.map(id=>{
                            //     var entity_ = {
                            //         category_name: this.formData.name,
                            //         field_id: id,
                            //         field: this.agmFieldsObj[id].field,
                            //         field_name: this.agmFieldsObj[id].field_name,
                            //         table_name: this.agmFieldsObj[id].table_name
                            //     }
                            //     table_entityset.push(entity_);
                            // })
                            // this.selectionList_terminal_detail.map(id=>{
                            //     var entity_ = {
                            //         category_name: this.formData.name,
                            //         field_id: id,
                            //         field: this.agmFieldsObj[id].field,
                            //         field_name: this.agmFieldsObj[id].field_name,
                            //         table_name: this.agmFieldsObj[id].table_name
                            //     }
                            //     table_entityset.push(entity_);
                            // })
                            let param = {
                                dataname: this.form_dataname,
                                // operator: operator_,
                                data: {},
                            }
                            param.data[this.form_dataname] = entity;
                            //param.data[this.table_dataname] = table_entityset;
                            Server.call("root/data/saveEntity", param, function(result) { //
                                console.log(result);
                                if (result.success) {
                                    if(me.isCommit){
                                        me.isCommit = false;
                                        let param_ = {
                                            dataname: "md_prod_category",
                                            filter: "1=1",
                                        }
                                        Server.call("root/data/getEntitySet", param_, function(result2){
                                            let md_prod_category_ = ArrayToTree(clone(result2.data.entityset), "name", "parent_id");
                                            // md_prod_category_.unshift({
                                            //     id:"cascaderbyadd",
                                            //     label: "cascaderbyadd",
                                            //     name: "cascaderbyadd",
                                            //     parent_id: null
                                            // })
                                            me.treeoptions = md_prod_category_;
                                            Root.message({
                                                type: 'success',
                                                message: '提交成功'
                                            });
                                            me.saveAfter();
                                        });
                                    }
                                    else {
                                        let param_ = {
                                            dataname: "md_prod_category",
                                            filter: "1=1",
                                        }
                                        Server.call("root/data/getEntitySet", param_, function(result2){
                                            let md_prod_category_ = ArrayToTree(clone(result2.data.entityset), "name", "parent_id");
                                            // md_prod_category_.unshift({
                                            //     id:"cascaderbyadd",
                                            //     label: "cascaderbyadd",
                                            //     name: "cascaderbyadd",
                                            //     parent_id: null
                                            // })
                                            me.treeoptions = md_prod_category_;
                                            Root.message({
                                                type: 'success',
                                                message: '保存成功'
                                            });
                                            me.saveAfter();
                                        });
                                    }
                                }
                            });
                        },
                        // visibleChange(obj, rowdata, callback) {
                        //     let me = this;
                        //     let row = obj;
                        //     let field = obj.field;
                        //     let options_ = [];
                        //     if(field == "parent_id") {
                        //         var filter_ = " parent_id is null ";
                        //         let val = row[field];
                        //         let param_ = {
                        //
                        //             dataname: "md_prod_category",
                        //             filter: filter_,
                        //         }
                        //         Server.call("root/data/getEntitySet", param_, function(result){
                        //             options_ = result.data.entityset;
                        //             options_.map(o=>{
                        //                 o.label = o.name;
                        //             })
                        //             console.log(options_);
                        //             //obj.options = options_;
                        //             callback({options: clone(options_)});
                        //         });
                        //     }
                        // },
                        selectOptionOperate(obj) {
                            let me = this;
                            if (obj.type == "add") {
                                if (obj.fieldobj.field == "type_code") {
                                    /* Root.showPopup({
                                        url: "../md/customer/popup/customer_list.html",
                                        width: 800,
                                        height: 550,
                                        data: this.oldObj,
                                        dataname: "customer",
                                        callback: function(obj, callback) {
                                            let formData_ = clone(me.formData);
                                            formData_.customer_name = obj.row.md_description;
                                            formData_.customer_code = obj.row.md_code;
                                            formData_.customer_id = obj.row.id;
                                            formData_.province_name = obj.row.province;
                                            me.formData = formData_;
                                            if (callback) {
                                                callback();
                                            }
                                        }
                                    }); */
                                }
                            }
                        },
                        formChange(obj) {
                            let me = this;
                            if (obj.fieldobj.field == "type_code") {
                                obj.data.type_name = clone(obj.selectoption.label);
                            }
                        },
                        selectChange(obj) {
                            let me = this;
                            if (obj.fieldobj.field == "parent_id" && obj.selectoption) {
                                //obj.data.type_name = clone(obj.selectoption.label);
                            }
                        },
                        showPopup(obj) {
                            let me = this;
                            this.selectFormField = obj.obj;
                            if (this.selectFormField.field == "customer_name") {
                                Root.showPopup({
                                    url: "../md/customer/popup/customer_list.html",
                                    width: 800,
                                    height: 550,
                                    data: this.oldObj,
                                    dataname: "customer",
                                    callback: function(obj, callback) {
                                        let formData_ = clone(me.formData);
                                        formData_.customer_name = obj.row.md_description;
                                        formData_.customer_code = obj.row.md_code;
                                        formData_.customer_id = obj.row.id;
                                        // formData_.province_name = obj.row.province;
                                        me.formData = formData_;
                                        if (callback) {
                                            callback();
                                        }
                                    }
                                });
                            }
                            if (this.selectFormField.field == "delivery_part_name") {
                                Root.showPopup({
                                    url: "../org/company/popup/managesubject_list.html",
                                    width: 800,
                                    height: 550,
                                    dataname:"getDelivery_part_name",
                                    type :"managesubjectname",
                                    callback: function(obj, callback) {
                                        let formData_ = clone(me.formData);
                                        formData_.delivery_part_name = obj.row.delivery_part_name;
                                        formData_.delivery_part_code = obj.row.delivery_part_code;
                                        me.formData = formData_;
                                        if (callback) {
                                            callback();
                                        }
                                    }
                                });
                            }
                            if (this.selectFormField.field == "product_name") {
                                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();
                                        }
                                    }
                                });
                            }
                        },
                        handleSelectionChange(selection) {
                            this.selectionList = [];
                            if (selection.length > 0) {
                                selection.map(sr=>{
                                    this.selectionList.push(sr.id);
                                })
                            }
                        },
                        handleSelectionChange_detail(selection) {
                            this.selectionList_detail = [];
                            if (selection.length > 0) {
                                selection.map(sr=>{
                                    this.selectionList_detail.push(sr.id);
                                })
                            }
                        },
                        handleSelectionChange_terminaldetail(selection) {
                            this.selectionList_terminal_detail = [];
                            if (selection.length > 0) {
                                selection.map(sr=>{
                                    this.selectionList_terminal_detail.push(sr.id);
                                })
                            }
                        },
                    }
                });
            };
            loadJsCss(function () {
                initVue();
            });
        </script>
        <style>
            /*  在vue.js中 v-cloak 这个指令是防止页面加载时出现 vuejs 的变量名而设计的 */
            [v-cloak] {
                display: none !important;
            }
            /* .h_form_checkboxgroup .el-checkbox {
                width: 120px;
            } */
        </style>
    </head>
    <body style="margin: 0px;">
        <div v-cloak id="vbody">
            <div id="page_root">
                <div ref="popup_body" style="padding: 0 20px;">
                    <div class="popup_el-dialog__header">
                        <div class="dialog-title">
                          <i class="iconfont icon-customermanagement"></i>
                          <!-- <span> {{formAttr.title}} </span> -->
                        </div>
                    </div>
                    <div style="height: 350px; 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>
                            <!--
                            v-on:form-change="formChange"
                            v-on:select-change="selectChange"
                            v-on:show-popup="showPopup"
                            v-on:select-option-operate="selectOptionOperate"
                            v-on:visible-change="visibleChange" -->
                        </div>
                        <!-- <div class="" style="padding-left: 20px;">
                            <div style="width: 30%;float: left;">
                                <h-table
                                    ref="table1"
                                    :table-fields="tableFields1"
                                    :table-data="tableData1"
                                    :table-height="tableHeight"
                                    :is-selection="true"
                                    :is-pagination="false"
                                    v-on:selection-change="handleSelectionChange"
                                >
                                </h-table>
                            </div>
                            <div style="width: 30%;float: left;margin-left: 5%;">
                                <h-table
                                    ref="table2"
                                    :table-fields="tableFields2"
                                    :table-data="tableData2"
                                    :table-height="tableHeight"
                                    :is-selection="true"
                                    :is-pagination="false"
                                    v-on:selection-change="handleSelectionChange_detail"
                                >
                                </h-table>
                            </div>
                            <div style="width: 30%;float: right;">
                                <h-table
                                    ref="table3"
                                    :table-fields="tableFields3"
                                    :table-data="tableData3"
                                    :table-height="tableHeight"
                                    :is-selection="true"
                                    :is-pagination="false"
                                    v-on:selection-change="handleSelectionChange_terminaldetail"
                                >
                                </h-table>
                            </div>
                        </div> -->
                    </div>
                    <div class="el-dialog__footer">
                        <el-button size="small" type="default" size="small" @click="closeDialog">取 消</el-button>
                        <el-button size="small" v-if="notdisabled" type="primary" @click="saveRowTable":icon="buttonsconfig.save.icon">{{buttonsconfig.save.name}}</el-button>
                        <!-- <el-button v-if="notdisabled" type="success" @click="submitRowTable":icon="buttonsconfig.submit.icon">{{buttonsconfig.submit.name}}</el-button> -->
                    </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>
        </div>
    </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=2024080201" rel="stylesheet">
    <link href="../../../css/control.css?v=2024080201" rel="stylesheet">
    <link href="../../../css/page.css?v=2024080201" rel="stylesheet">
    <link href="../../../css/icon/iconfont.css?v=2024080201" rel="stylesheet">
    <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="../../../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=2024080201" rel="stylesheet">
    <link href="../../../css/myelement.css?v=2024080301" 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=2024080201"></script>
    <script src="../../../js/config.js?v=2024080301"></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=2024080201"></script>
    <script src="../../../js/foundation.js?v=2024080201"></script>
    <script src="../../../js/control.js?v=2024080201"></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/loadJsCss.js"></script>
    <script src="../../../js/myelement.js?v=2024080201"></script>
    <script src="../../../js/myelement.js?v=2024080301"></script>
    
</head>