田源
2024-04-07 2ac55ce0edf4870a29691b56bfad59f4830a11a2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/**
 * 物料分类的扩展属性的信息
 * @author weidy
 **/
layui.define(['layer','element','form','table','util','platform/objectService/OsAttributeUtil'],function(exports){
    var Class = function() {
        this.MODELNAME = "platform/basedoc/BdMaterialClassifyExtendAttr";
        this.moduleKey = "BdMaterialClassifyExtendAttr";
        this.id = 'BdMaterialClassifyExtendAttr';
        this.sourceData = {};
        this.backPath = configData.compatibility?path:configData.frameworkPath;
        this.url ={
            controller:'materialClassifyController/',
            listExtendAttribute:'listExtendAttribute',
            refreshAllClassifyExtendAttribute:'listAllClassifyExtendAttribute'
        };
        this.initExtendAttr = function (materialClassifyId,callback) {
            //从后台重新获取这个分类的属扩展信息
            var that = this;
            if(!that.materialClassifyExtendAttr){
                that.materialClassifyExtendAttr = [];
            }
            if($webUtil.isNotNull(materialClassifyId)){
                if(that.materialClassifyExtendAttr[materialClassifyId]) {
                    delete that.materialClassifyExtendAttr[materialClassifyId];
                }
                $webUtil.post(that.url.controller + that.url.listExtendAttribute,{materialClassifyId:materialClassifyId},function(result){
                    if(result.success && result.data && result.data.length > 0){
                        that.materialClassifyExtendAttr[materialClassifyId] = result.data;
                        if(callback){
                            callback(result.data);
                        }
                    }else{
                        if(!result.success){
                           $webUtil.showErrorMsg(result.msg);
                        }else{
                            if(callback){
                                callback(result.data);
                            }
                        }
                    }
                },function(xhr,error){
                    $webUtil.showErrorMsg("查询物料分类的扩展属性出现了错误,可能是因为服务器故障");
                },that.backPath);
            }else{
                if(callback){
                    callback({});
                }
            }
        };
        this.getExtendAttrByClassifyId = function (materialClassifyId) {
            //使用物料基本信息分类,获取对应的扩展属性
            var that= this;
            if(!that.materialClassifyExtendAttr){
                that.materialClassifyExtendAttr = [];
            }
            return that.materialClassifyExtendAttr[materialClassifyId];
        };
        this.refreshAllClassifyExtendAttribute = function () {
            //刷新所有的分类的扩展属性
            var that = this;
            that.materialClassifyExtendAttr = [];
            $webUtil.post(that.url.controller + that.url.refreshAllClassifyExtendAttribute,{},function(result){
                if(result.success){
                    //出来的是一个列表,需要转换一下
                    layui.each(result.data,function(_index,_item){
                        var thisBtmHasAttrs = [];
                        if(_item.btmTypeId in that.materialClassifyExtendAttr){
                            thisBtmHasAttrs = that.materialClassifyExtendAttr[_item.btmTypeId];
                        }
                        thisBtmHasAttrs.push(_item);
                        that.materialClassifyExtendAttr[_item.btmTypeId] = thisBtmHasAttrs;
                    });
                }else{
                    $webUtil.showErrorMsg(result.msg);
                }
            },function(xhr,error){
                $webUtil.showErrorMsg("查询物料分类的扩展属性出现了错误,可能是因为服务器故障");
            },that.backPath);
        };
        this.getFormItemsByClassifyId = function (materialClassifyId) {
            //获取表单的字段
            var that = this;
            var attributes = that.getExtendAttrByClassifyId(materialClassifyId);
            var attrUtil = layui['platform/objectService/OsAttributeUtil'];
            return attrUtil.getFormItemsByAttributes(attributes);
        };
        this.setExtendAttrToForm = function (formId,data,materialClassifyId) {
            //设置扩展属性到表单上
            var that = this;
            var formValueForExtendAttr = data;
            if(data && data.extendAttrData) {
                var extendAttrs = that.getFormItemsByClassifyId(materialClassifyId);
                if (extendAttrs && extendAttrs.length > 0) {
                    var attributes = {};
                    layui.each(extendAttrs, function (_index, _item) {
                        attributes[_item.name.toLowerCase()] = _item.name;
                    });
 
                    for (var key in data.extendAttrData) {
                        if (attributes[key.toLowerCase()]) {
                            var field = "ext_" + attributes[key.toLowerCase()];
                            formValueForExtendAttr[field] = data.extendAttrData[key];
                        }
                    }
                }
            }
            layui.form.setValues(formValueForExtendAttr, formId);
        };
        this.loadMaterialForForm = function (formId,oid,materialClassifyId,url,backPath) {
            //使用主键设置到表格上
            var that = this;
            layui.form.load(formId,{
                url:(url?url:'materialController/getObjectByOid'),
                backPath:(backPath?backPath:that.backPath),
                method:'get',
                params:{
                    oid:oid
                },
                setValueListener:function(data){
                    if(data){
                        that.setExtendAttrToForm(formId,data,materialClassifyId);
                    }
                }
            });
        };
    };
    var cs = new Class();
    exports(cs.MODELNAME,cs);
});