zhuth 7 years ago
parent
commit
c69929f25f

+ 164 - 0
frontend/saas-web/app/view/document/uusetting/UUSetting.js

@@ -0,0 +1,164 @@
+Ext.define('saas.view.document.uusetting.UUSetting', {
+    extend: 'Ext.panel.Panel',
+    xtype: 'document-uusetting',
+    autoScroll: true,
+    layout:'fit',
+    controller:'document-uusetting',
+    viewModel: {
+        type: 'document-uusetting'
+    },
+    defaultType:'vendorkind',
+    requires: [
+        'Ext.button.Segmented'
+    ],
+    
+    etc:{
+        common: {
+            columns: [{
+                xtype:'actioncolumn',
+                text:'操作',
+                align: 'center',
+                items: [{
+                    xtype: 'button',
+                    tooltip: 'UU设置',
+                    iconCls: 'x-sa sa-setting',
+                    handler: 'onUUSetting'
+                }]
+            }]
+        },
+        vendorkind:{
+            columns: [{
+                text: '供应商编号',
+                dataIndex: 've_code',
+                width: 120
+            }, {
+                text: '供应商名称',
+                dataIndex: 've_name',
+                width: 120
+            }, {
+                text: '状态',
+                dataIndex: 've_status',
+                width: 80,
+                align: 'center'
+            }, {
+                text: '类型',
+                dataIndex: 've_type',
+                width: 100,
+                align: 'center'
+            }, {
+                text: '采购员',
+                dataIndex: 've_buyername',
+                width: 120,
+            }, {
+                text: '供应商UU',
+                dataIndex: 've_uu',
+                width: 120
+            }],
+        },
+        customerkind:{
+            columns: [{
+                text: '客户编号',
+                dataIndex: 'cu_code',
+                width: 120
+            }, {
+                text: '客户名称',
+                dataIndex: 'cu_name',
+                width: 120
+            }, {
+                text: '状态',
+                dataIndex: 'cu_status',
+                width: 80,
+                align: 'center'
+            }, {
+                text: '类型',
+                dataIndex: 'cu_type',
+                width: 100,
+                align: 'center'
+            }, {
+                text: '业务员',
+                dataIndex: 'cu_sellername',
+                width: 120,
+            }, {
+                text: '客户UU',
+                dataIndex: 'cu_uu',
+                width: 120
+            }],
+        }
+    },
+
+    initComponent: function() {
+        var me = this;
+
+        Ext.apply(me, {
+            dockedItems: [{
+                xtype: 'toolbar',
+                dock: 'top',
+                padding: '12 5 0 12',
+                items: [{
+                    xtype: 'segmentedbutton',
+                    reference: 'dataKind',
+                    value: 'vendorkind',
+                    name : 'segmentedbutton',
+                    items: [{
+                        name:'vendorkind',
+                        text: '供应商',
+                        value: 'vendorkind',
+                    }, {
+                        name:'customerkind',
+                        text: '客户',
+                        value: 'customerkind',
+                    }],
+                    listeners: {
+                        toggle: 'onToggle'
+                    }
+                }, '->', {
+                    xtype: 'textfield',
+                    emptyText: '输入编号/名称'
+                }, {
+                    xtype: 'button',
+                    text: '查询',
+                    handler: 'onQuery'
+                }]
+            }],
+            items:[{
+                xtype:'grid',
+                margin: 12,
+                flex: 1,
+                border: 1,
+                plugins: [{
+                    ptype: 'menuclipboard'
+                }],
+                dockedItems: [{
+                    xtype: 'pagingtoolbar',
+                    dock: 'bottom',
+                    cls:'x-basepanel-pagingtoolbar',
+                    displayInfo: true,
+                    bind: {
+                        store: '{vendorkind}',
+                    },
+                    items: [{
+                        iconCls: 'x-sa sa-setting',
+                        text: '列设置',
+                        handler: 'onColSetting',
+                        bind: {
+                            hidden: '{!configurable || !isAdmin}'
+                        }
+                    }]
+                }],
+                listeners:{
+                    boxready: 'onBoxReady',
+                    render:'loadDefualt'
+                }
+            }],
+        });
+
+        me.callParent(arguments);
+    },
+
+    refresh: function() {
+        var store = this.down('grid').store;
+        store.load();
+    }
+})
+
+

+ 79 - 0
frontend/saas-web/app/view/document/uusetting/UUSettingController.js

@@ -0,0 +1,79 @@
+Ext.define('saas.view.document.uusetting.UUSettingController', {
+    extend: 'Ext.app.ViewController',
+    alias: 'controller.document-uusetting',
+    
+    onBoxReady: function(grid) {
+        var me = this,
+        vm = me.getViewModel();
+
+        var gridBodyBox = grid.body.dom.getBoundingClientRect(),
+        gridBodyBoxHeight = gridBodyBox.height;
+        var pageSize = Math.floor(gridBodyBoxHeight / 33);
+
+        vm.getStore('vendorkind').setPageSize(pageSize);
+        vm.getStore('customerkind').setPageSize(pageSize);
+    },
+
+    loadDefualt:function(grid){
+        var me = this,
+        view = me.getView(),
+        vm = me.getViewModel(),
+        defaultKind = view.defaultType;
+        
+        var etc = view.etc;
+        var columns = etc[defaultKind].columns;
+        var store = vm.getStore(defaultKind);
+        store.load();
+        grid.reconfigure(store, Ext.Array.merge(columns, etc.common.columns));
+        grid.kind = defaultKind
+    },
+
+    onToggle: function(container, button, pressed) {
+        var me = this,
+        view = me.getView(),
+        vm = me.getViewModel(),
+        kind = button.value,
+        grid = view.down('grid');
+        
+        var etc = view.etc;
+        var columns = etc[kind].columns;
+        var store = vm.getStore(kind);
+        store.load();
+        grid.reconfigure(store, Ext.Array.merge(columns, etc.common.columns));
+        grid.kind = kind;
+    },
+
+    onQuery: function() {
+        console.log('onQuery');
+    },
+
+    onUUSetting: function(tableView, rowIdx, colIdx, btn, e, record, tr) {
+        var me = this;
+        var grid = tableView.up('grid');
+        var kind = grid.kind;
+        var config = {
+            kind: kind
+        };
+        if(kind == 'vendorkind') {
+            config.cname = record.get('ve_name');
+        }else {
+            config.cname = record.get('cu_name');
+        }
+        this.getViewModel().setData(record.data);
+        this.showUUSettingWin(config);
+    },
+
+    showUUSettingWin: function(config) {
+        var me = this,
+        view = me.getView();
+
+        var win = Ext.getCmp();
+        if(!win) {
+            win = Ext.create('saas.view.document.uusetting.UUSettingWin', Ext.Object.merge({
+                listView: view,
+            }, config));
+            view.add(win);
+        }
+        win.show();
+    }    
+});

+ 83 - 0
frontend/saas-web/app/view/document/uusetting/UUSettingModel.js

@@ -0,0 +1,83 @@
+Ext.define('saas.view.document.uusetting.UUSettingModel', {
+    extend: 'Ext.app.ViewModel',
+    alias: 'viewmodel.document-uusetting',
+    data: {
+        title: '客户类型'
+    },
+    stores: {
+        vendorkind:{
+            fields:['ve_code', 've_name', 've_status', 've_type', 've_buyername', 've_uu'],
+            proxy: {
+                type: 'ajax',
+                url: '/api/document/vendor/list',
+                actionMethods: {
+                    read: 'GET'
+                },
+                reader: {
+                    type: 'json',
+                    rootProperty: 'data.list',
+                    totalProperty: 'data.total'
+                },
+                listeners: {
+                    exception: function(proxy, response, operation, eOpts) {
+                        if(operation.success) {
+                            if(response.timedout) {
+                                saas.util.BaseUtil.showErrorToast('请求超时');
+                            }
+                        }else {
+                            console.error('exception: ', response);
+                            saas.util.BaseUtil.showErrorToast('查询失败:' + (response.responseJson?response.responseJson.message:'请求超时'));
+                        }
+                    }
+                }
+            },
+            pageSize: null,
+            autoLoad: false,
+            listeners: {
+                beforeload: function (store, op) {
+                    Ext.apply(store.proxy.extraParams, {
+                        number: store.exportNumber?store.exportNumber:op._page,
+                        size: store.exportPageSize?store.exportPageSize:store.pageSize,
+                    });
+                }
+            }
+        },
+        customerkind: {
+            fields:['cu_code', 'cu_name', 'cu_status', 'cu_type', 'cu_sellername', 'cu_uu'],
+            proxy: {
+                type: 'ajax',
+                url: '/api/document/customer/list',
+                actionMethods: {
+                    read: 'GET'
+                },
+                reader: {
+                    type: 'json',
+                    rootProperty: 'data.list',
+                    totalProperty: 'data.total'
+                },
+                listeners: {
+                    exception: function(proxy, response, operation, eOpts) {
+                        if(operation.success) {
+                            if(response.timedout) {
+                                saas.util.BaseUtil.showErrorToast('请求超时');
+                            }
+                        }else {
+                            console.error('exception: ', response);
+                            saas.util.BaseUtil.showErrorToast('查询失败:' + (response.responseJson?response.responseJson.message:'请求超时'));
+                        }
+                    }
+                }
+            },
+            pageSize: null,
+            autoLoad: false,
+            listeners: {
+                beforeload: function (store, op) {
+                    Ext.apply(store.proxy.extraParams, {
+                        number: store.exportNumber?store.exportNumber:op._page,
+                        size: store.exportPageSize?store.exportPageSize:store.pageSize,
+                    });
+                }
+            }
+        }
+    }
+});

+ 459 - 0
frontend/saas-web/app/view/document/uusetting/UUSettingWin.js

@@ -0,0 +1,459 @@
+Ext.define('saas.view.document.uusetting.UUSettingWin', {
+    extend: 'Ext.window.Window',
+    xtype: 'uusettingwin',
+
+    title: '设置企业UU',
+    width: 680,
+    cls: 'x-window-dbfind',
+    closlayout: 'fit',
+    modal: true,
+    resizable: false,
+    bodyPadding: 20,
+
+    etc: {
+        vendorkind: {
+            uuName: 've_uu',
+            getUUUrl: '/api/document/vendor/getVendorUU',
+            saveUrl: '/api/document/vendor/save',
+            formItems: [{
+                xtype: 'hidden',
+                name: 'id',
+                bind: '{id}',
+                fieldLabel: 'id'
+            }, {
+                xtype: 'textfield',
+                name: 've_code',
+                bind: '{ve_code}',
+                fieldLabel: '供应商编号'
+            }, {
+                xtype: 'textfield',
+                name: 've_name',
+                bind: '{ve_name}',
+                fieldLabel: '供应商名称',
+                hidden: false
+            }, {
+                xtype: 'textfield',
+                name: 've_shortname',
+                bind: '{ve_shortname}',
+                fieldLabel: '供应商简称'
+            }, {
+                xtype: 'hidden',
+                name: 've_status',
+                bind: '{ve_status}',
+                fieldLabel: '状态'
+            }, {
+                xtype: 'hidden',
+                name: 've_statuscode',
+                bind: '{ve_statuscode}',
+                fieldLabel: '状态码'
+            }, {
+                xtype: "textfield",
+                name: "ve_type",
+                bind: '{ve_type}',
+                fieldLabel: "供应商类型"
+            }, {
+                xtype: "datefield",
+                name: "ve_begindate",
+                format: 'Y-m-d H:i:s',
+                bind: '{ve_begindate}',
+                fieldLabel: "期初日期"
+            }, {
+                xtype: "textfield",
+                name: "ve_currency",
+                bind: '{ve_currency}',
+                fieldLabel: "币别"
+            }, {
+                xtype: "numberfield",
+                name: "ve_taxrate",
+                bind: '{ve_taxrate}',
+                fieldLabel: "税率(%)"
+            },{
+                xtype: "numberfield",
+                name: "ve_beginapamount",
+                bind: '{ve_beginapamount}',
+                fieldLabel: "期初应付(元)"
+            }, {
+                xtype: "numberfield",
+                hideTrigger: true,
+                name: "ve_beginprepayamount",
+                bind: '{ve_beginprepayamount}',
+                fieldLabel: "期初预付(元)"
+            }, {
+                xtype: "numberfield",
+                name: "ve_leftamount",
+                bind: '{ve_leftamount}',
+                fieldLabel: "应付余额(元)",
+            }, {
+                xtype: "numberfield",
+                name: "ve_promisedays",
+                bind: '{ve_promisedays}',
+                fieldLabel: "结算天数",
+            }, {
+                xtype: "textfield",
+                name: "ve_nsrzh",
+                bind: '{ve_nsrzh}',
+                fieldLabel: "纳税人识别号"
+            }, {
+                xtype: "textfield",
+                name: "ve_bankcode",
+                bind: '{ve_bankcode}',
+                fieldLabel: "开户银行"
+            }, {
+                xtype: "textfield",
+                name: "ve_bankaccount",
+                bind: '{ve_bankaccount}',
+                fieldLabel: "银行账户"
+            }, {
+                xtype: "hidden",
+                name: "ve_buyercode",
+                bind: '{ve_buyercode}',
+                fieldLabel: "采购员编号"
+            }, {
+                xtype: "textfield",
+                name: "ve_buyername",
+                bind: '{ve_buyername}',
+                fieldLabel: "采购员"
+            }, {
+                xtype: "hidden",
+                name: "ve_buyerid",
+                bind: '{ve_buyerid}',
+                fieldLabel: "采购员ID"
+            }, {
+                xtype: "textfield",
+                name: "ve_address",
+                bind: '{ve_address}',
+                fieldLabel: "公司地址"
+            }, {
+                fieldLabel: "备注",
+                xtype: 'textfield',
+                bind: '{ve_remark}',
+                name: "ve_remark"
+            }, {
+                xtype: "textfield",
+                name: "ve_text1",
+                bind: '{ve_text1}',
+                fieldLabel: "自定义字段1"
+            }, {
+                xtype: "textfield",
+                name: "ve_text2",
+                bind: '{ve_text2}',
+                fieldLabel: "自定义字段2"
+            }, {
+                xtype: "textfield",
+                name: "ve_text3",
+                bind: '{ve_text3}',
+                fieldLabel: "自定义字段3"
+            }, {
+                xtype: "textfield",
+                name: "ve_text4",
+                bind: '{ve_text4}',
+                fieldLabel: "自定义字段4"
+            }, {
+                xtype: "textfield",
+                name: "ve_text5",
+                bind: '{ve_text5}',
+                fieldLabel: "自定义字段5"
+            }, {
+                xtype: 'textfield',
+                fieldLabel: '企业UU',
+                name: 've_uu',
+                bind: '{ve_uu}',
+                hidden: false,
+                allowBlank: false,
+                readOnly: true,
+                beforeLabelTextTpl: "<font color=\"red\" style=\"position:relative; top:2px;right:2px; font-weight: bolder;\">*</font>"
+            }]
+        },
+        customerkind: {
+            uuName: 'cu_uu',
+            getUUUrl: '/api/document/customer/getCustomerUU',
+            saveUrl: '/api/document/customer/save',
+            formItems: [{
+                xtype: 'hidden',
+                name: 'id',
+                bind: '{id}',
+                fieldLabel: 'id'
+            }, {
+                xtype: 'textfield',
+                name: 'cu_code',
+                bind: '{cu_code}',
+                fieldLabel: '客户编号'
+            }, {
+                xtype: 'textfield',
+                name: 'cu_name',
+                bind: '{cu_name}',
+                fieldLabel: '客户名称',
+                hidden: false
+            }, {
+                xtype: 'textfield',
+                name: 'cu_shortname',
+                bind: '{cu_shortname}',
+                fieldLabel: '客户简称'
+            }, {
+                xtype: "textfield",
+                name: "cu_type",
+                bind: '{cu_type}',
+                fieldLabel: "客户类型"
+            }, {
+                xtype: 'hidden',
+                name: 'cu_status',
+                bind: '{cu_status}',
+                fieldLabel: '状态'
+            }, {
+                xtype: 'hidden',
+                name: 'cu_statuscode',
+                bind: '{cu_statuscode}',
+                fieldLabel: '状态码'
+            }, {
+                xtype: "datefield",
+                name: "cu_begindate",
+                format: 'Y-m-d H:i:s',
+                bind: '{cu_begindate}',
+                fieldLabel: "期初日期"
+            }, {
+                xtype: "textfield",
+                name: "cu_currency",
+                bind: '{cu_currency}',
+                fieldLabel: "币别"
+            }, {
+                xtype: "numberfield",
+                name: "cu_taxrate",
+                bind: '{cu_taxrate}',
+                fieldLabel: "税率(%)"
+            },{
+                xtype: "numberfield",
+                hideTrigger: true,
+                name: "cu_beginaramount",
+                bind: '{cu_beginaramount}',
+                fieldLabel: "期初应收(元)"
+            }, {
+                xtype: "numberfield",
+                name: "cu_beginprerecamount",
+                bind: '{cu_beginprerecamount}',
+                fieldLabel: "期初预收(元)"
+            }, {
+                xtype: 'textfield',
+                name: "cu_leftamount",
+                bind: '{cu_leftamount}',
+                fieldLabel: "应收余额(元)"
+            }, {
+                xtype: "numberfield",
+                name: "cu_promisedays",
+                bind: '{cu_promisedays}',
+                fieldLabel: "结算天数"
+            }, {
+                xtype: "hidden",
+                name: "cu_sellerid",
+                bind: '{cu_sellerid}',
+                fieldLabel: "业务员id"
+            }, {
+                xtype: "hidden",
+                name: "cu_sellercode",
+                bind: '{cu_sellercode}',
+                fieldLabel: "业务员code"
+            }, {
+                xtype: "textfield",
+                name: "cu_sellername",
+                bind: '{cu_sellername}',
+                fieldLabel: "业务员"
+            }, {
+                xtype: "hidden",
+                name: "cu_nsrzh",
+                bind: '{cu_nsrzh}',
+                fieldLabel: "纳税人识别号"
+            }, {
+                xtype: "hidden",
+                name: "cu_bankaccount",
+                bind: '{cu_bankaccount}',
+                fieldLabel: "开户银行"
+            }, {
+                xtype: "hidden",
+                name: "cu_bankcode",
+                bind: '{cu_bankcode}',
+                fieldLabel: "银行账户"
+            }, {
+                xtype: 'textfield',
+                name: "cu_uu",
+                bind: '{cu_uu}',
+                fieldLabel: "企业UU",
+                hidden: false,
+                allowBlank: false,
+                readOnly: true,
+                beforeLabelTextTpl: "<font color=\"red\" style=\"position:relative; top:2px;right:2px; font-weight: bolder;\">*</font>"
+            }, {
+                fieldLabel: "备注",
+                xtype: 'textfield',
+                name: "cu_remark",
+                bind: '{cu_remark}'
+            }, {
+                xtype: "textfield",
+                name: "cu_text1",
+                bind: '{cu_text1}',
+                fieldLabel: "自定义字段1"
+            }, {
+                xtype: "textfield",
+                name: "cu_text2",
+                bind: '{cu_text2}',
+                fieldLabel: "自定义字段2"
+            }, {
+                xtype: "textfield",
+                name: "cu_text3",
+                bind: '{cu_text3}',
+                fieldLabel: "自定义字段3"
+            }, {
+                xtype: "textfield",
+                name: "cu_text4",
+                bind: '{cu_text4}',
+                fieldLabel: "自定义字段4"
+            }, {
+                xtype: "textfield",
+                name: "cu_text5",
+                bind: '{cu_text5}',
+                fieldLabel: "自定义字段5"
+            }]
+        }
+    },
+
+    initComponent: function () {
+        var me = this;
+        var kind = me.kind;
+        me.uuName = me.etc[kind].uuName;
+        me.getUUUrl = me.etc[kind].getUUUrl;
+        me.saveUrl = me.etc[kind].saveUrl;
+        var items = Ext.Array.merge(me.etc[kind].formItems, [{
+            xtype: 'detailGridField',
+            detnoColumn: null,
+            minHeight: 145,
+            emptyRows: 3,
+            showCount: false,
+            width: 280,
+            editable: false,
+            emptyText: '<span style="color: red;">没有查找到匹配的企业,请确认该企业已注册优软商务平台</span>',
+            store: Ext.create('Ext.data.Store', {
+                fields: [{
+                    name: 'name',
+                    type: 'string'
+                }, {
+                    name: 'uu',
+                    type: 'string'
+                }],
+                data: []
+            }),
+            columns: [{
+                text: '企业名称',
+                dataIndex: 'name',
+            }, {
+                text: 'UU',
+                dataIndex: 'uu'
+            }, {
+                xtype:'actioncolumn',
+                text:'操作',
+                align: 'center',
+                items: [{
+                    xtype: 'button',
+                    tooltip: '选择此项填入',
+                    iconCls: 'x-sa sa-edit',
+                    handler: function(tableView, rowIdx, colIdx, btn, e, record, tr) {
+                        var form = tableView.up('form');
+                        var uuField = form.query('[name=' + me.uuName + ']')[0];
+                        uuField.setValue(record.data.uu);
+                    }
+                }]
+            }]
+        }]);
+        Ext.apply(me, {
+            items: [{
+                xtype: 'form',
+                layout: 'column',
+                fieldDefaults: {
+                    hidden: true,
+                    margin: '0 0 10 0',
+                    labelAlign: 'right',
+                    labelWidth: 90,
+                    columnWidth: 0.5,
+                },
+                items: items
+            }],
+            buttonAlign: 'center',
+            buttons: [{
+                text: '确定',
+                formBind: true,
+                handler: function () {
+                    var win = this.up('window'),
+                        form = win.down('form');
+
+                    var uuField = form.query('[name=' + win.uuName + ']')[0];
+                    if (form.isValid()) {
+                        var values = form.getValues();
+                        me.onSave(values);
+                    } else {
+                        saas.util.BaseUtil.showErrorToast('表单校验失败,请检查字段是否合法');
+                    }
+                }
+            }, {
+                text: '取消',
+                handler: function () {
+                    me.close();
+                }
+            }]
+        });
+        me.callParent(arguments);
+    },
+
+    listeners: {
+        boxready: function (win) {
+            win.setLoading(true);
+            var name = win.cname;
+            saas.util.BaseUtil.request({
+                url: win.getUUUrl,
+                method: 'GET',
+                params: {
+                    name: name
+                }
+            }).then(function (res) {
+                var resData = res.data;
+                var data = [];
+                if (!Ext.Object.isEmpty(resData) && resData[name]) {
+                    data.push({
+                        name: name,
+                        uu: resData[name].uu
+                    });
+                }
+                win.setLoading(false);
+                var grid = win.down('grid');
+                var store = grid.store;
+                store.loadData(data);
+            }).catch(function (e) {
+                win.setLoading(false);
+            });
+        }
+    },
+
+    onSave: function (values) {
+        var view = this;
+        var kind = view.kind;
+        var main = values;
+        var params = {
+            codeModified: false,
+            main: main,
+            items: [],
+            items1: [],
+            items2: []
+        };
+
+        view.setLoading(true);
+        saas.util.BaseUtil.request({
+            url: 'http://10.1.80.23:8560' + view.saveUrl,
+            params: JSON.stringify(params),
+            method: 'POST'
+        }).then(function (res) {
+            view.setLoading(false);
+            saas.util.BaseUtil.showSuccessToast('修改UU号成功');
+            view.close();
+            view.listView.refresh();
+        }).catch(function (e) {
+            view.setLoading(false);
+            saas.util.BaseUtil.showErrorToast('修改UU号失败: ' + e.message);
+        });
+    },
+});

+ 1 - 1
frontend/saas-web/app/view/sale/business/QuoteWin.js

@@ -131,7 +131,7 @@ Ext.define('saas.view.sale.business.QuoteWin', {
                 text: '确定',
                 text: '确定',
                 handler: function () {
                 handler: function () {
                     var win = this.up('window'),
                     var win = this.up('window'),
-                        form = win.down('form')
+                        form = win.down('form'),
                         grid = form.down('grid');
                         grid = form.down('grid');
 
 
                     if (form.isValid()) {
                     if (form.isValid()) {

+ 5 - 0
frontend/saas-web/resources/json/navigation.json

@@ -241,6 +241,11 @@
             "viewType": "document-customer-basepanel",
             "viewType": "document-customer-basepanel",
             "addType":"document-customer-formpanel",
             "addType":"document-customer-formpanel",
             "leaf": true
             "leaf": true
+        }, {
+            "id": "document-uusetting",
+            "text": "UU设置",
+            "viewType": "document-uusetting",
+            "leaf": true
         }, {
         }, {
             "id":"product-list-formpanel",
             "id":"product-list-formpanel",
             "text": "物料资料",
             "text": "物料资料",