123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636 |
- Ext.QuickTips.init();
- Ext.define('erp.controller.sys.Feedback', {
- extend: 'Ext.app.Controller',
- FormUtil: Ext.create('erp.util.FormUtil'),
- BaseUtil: Ext.create('erp.util.BaseUtil'),
- currentManfield:null,
- views:[
- 'core.form.Panel','sys.Feedback','core.form.MultiField','core.button.Reply',
- 'core.button.Add','core.button.Submit','core.button.ResSubmit','core.button.Audit','core.button.Save','core.button.Close','core.button.Print',
- 'core.button.Upload','core.button.Update','core.button.Delete','core.button.ResAudit','core.button.ForBidden',
- 'core.button.ResForBidden','core.form.FileField','core.button.TurnProject','core.button.TurnBuglist','core.button.Checktask','core.button.Endfeedback',
- 'core.trigger.TextAreaTrigger','core.trigger.DbfindTrigger','core.form.YnField','core.trigger.AutoCodeTrigger','core.button.Canceltask','core.button.Back','core.button.Confirm',
- 'core.button.ChangeHandler'
- ],
- RelativeFields:{
- TechnicalService:{
- remarkField:'fb_descriptiontecservice',
- plandateField:'fb_plandatetecservice',
- resultField:'fb_resulttecservice'
- },
- ProductDept:{
- remarkField:'fb_descriptionpro',
- plandateField:'fb_plandatepro',
- resultField:'fb_resultpro'
- },
- 'R&D':{
- remarkField:'fb_descriptionrd',
- plandateField:'fb_plandaterd',
- resultField:'fb_resultrd'
- },
- Test:{
- remarkField:'fb_testdescription',
- resultField:'fb_resulttest'
- }
- },
- init:function(){
- var me = this;
- this.control({
- 'erpFormPanel': {
- afterrender:function(form){
- Ext.defer(function(){
- var _k=form.down('#fb_kind').getValue(),
- _p=form.down('#fb_position').getValue(),
- fbid=form.down('#fb_id').getValue(),
- _status=form.down('#fb_statuscode').getValue(),info=null,hasfocused=false,handmanid=null;
- if(_status!='ENTERING' && _status!='REPLYED'){
- info=me.getCurrentFlow(_k,_p);
- if(_p=='End'){
- var datalistId = getUrlParam('datalistId');
- var datalist = parent.Ext.getCmp(datalistId);
- if(datalist){
- var record = datalist.currentRecord;
- if (record.get('fb_position')=='End')handmanid=record.get('em_id');
- }
- }else {
- handmanid=form.down('#'+info['ff_handmanfield']).getValue();
- me.currentManfield=info['ff_handmanfield'];
- Ext.getCmp(info['ff_handmanfield']).on('change',function(){
- var buttons=Ext.ComponentQuery.query('erpChangeHandlerButton');
- if(buttons) buttons[0].setDisabled(false);
- });
- }
- if(handmanid==emid){
- Ext.Array.each(form.items.items,function(item){
- if(item.groupName==info['ff_caption']){
- if(item.fieldLabel=='处理时间' || item.fieldLabel=='回复时间' ){
- item.setValue(new Date());
- item.setReadOnly(false);
- }else if(item.fieldLabel=='预计完成时间' && item.value){
- }else if(item.name=='fb_backman'){
- item.setValue(em_name);
- }else {
- if(!hasfocused) {item.focus(false, 200); hasfocused=true;} item.setReadOnly(false);
- item.setFieldStyle("background:#fffac0;color:#515151;");
- if(me.RelativeFields[_p] && item.name==me.RelativeFields[_p].remarkField) item.setValue(null);
- }
- }
- });
- }else {
- form.down('erpConfirmButton').hide();
- form.down('erpChangeHandlerButton').hide();
- form.down('erpBackButton').hide();
- }
- }
- //插入处理日志
- if(fbid){
- var data= me.loadNewStore(fbid);
- var index=me.getInsertIndex();
- form.insert(index,{
- xtype: 'fieldset',
- title: '<h2><img src="' + basePath + 'resource/images/icon/communicate.png" width=20/>处理明细</h2>',
- collapsible: true,
- //collapsed: true,
- columnWidth:1,
- layout: 'anchor',
- defaults: {
- anchor: '100%',
- labelStyle: 'padding-left:4px;'
- },
- items:[{
- autoScroll: true,
- xtype: 'dataview',
- tpl:Ext.create('Ext.XTemplate',
- '<tpl for=".">',
- '<div class="search-item">',
- '<h3><span>{fl_date}<br /> {fl_man}</span>',
- '<font color="blue">{fl_position:this.formatTitle} </font></h3>',
- '<p>处理方式 :<font color="green">{fl_kind:this.formatKind}</font> {fl_remark}</p>',
- '</div></tpl>',
- {formatKind: function(value){
- if(value=='PLAN') return '回复处理';
- else if(value=='CHANGEHANDLER') return '变更处理人';
- else if(value=='REVIEW') return '确认处理';}
- },{
- formatTitle:function(value){
- if(value=='TechnicalService') return '技术支持部处理信息';
- else if(value=='R&D') return '研发部处理信息';
- else if(value=='ProductDept') return '产品部处理信息';
- else if(value=='Test') return '测试部处理信息';
- else if(value=='End') return '回复处理';
- }
- }),
- store: Ext.create('Ext.data.Store', {
- fields:[{name: 'fl_man' },
- {name: 'fl_date'},
- {name: 'fl_position'},
- {name: 'fl_remark'},
- {name: 'fl_kind'}
- ],
- data:data
- })
- }]
- });
- }
- },200);
- }
- },
- 'erpSaveButton': {
- click: function(btn){
- var form = me.getForm(btn);
- if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
- me.BaseUtil.getRandomNumber();//自动添加编号
- }
- this.FormUtil.beforeSave(this);
- }
- },
- 'erpDeleteButton' : {
- click: function(btn){
- me.FormUtil.onDelete(Ext.getCmp('fb_id').value);
- }
- },
- 'erpTurnProject' : {
- click: function(btn){
- me.FormUtil.onDelete(Ext.getCmp('fb_id').value);
- }
- },
- 'erpCanceltaskButton':{
- click: function(btn){
- Ext.Ajax.request({
- url : basePath + '/sys/feedback/canceltask.action',
- params: {
- id: Ext.getCmp('fb_id').value,
- },
- method : 'post',
- callback : function(options,success,response){
- var localJson = new Ext.decode(response.responseText);
- if(localJson.exceptionInfo){
- var str = localJson.exceptionInfo;
- showError(str);
- }else{
- alert('修改成功!');
- }
- }
- });
- }
- },
- 'erpChangeHandlerButton':{
- click:function(btn){
- var newhandmanid=Ext.getCmp(me.currentManfield);
- var oldemid=newhandmanid.originalValue;
- var newemid=newhandmanid.value;
- var data=me.getDirtyValues(),allowsave=false;
- Ext.each(Ext.Object.getKeys(data), function(k){
- if(me.FormUtil.contains(k, 'ext-', true)){
- delete data[k];
- }
- if(!me.FormUtil.contains(k, 'fb_man', true) && !me.FormUtil.contains(k, 'fb_description', true)){
- delete data[k];
- }
- });
- if(oldemid==newemid){
- showError('未做任何处理人修改!'); return;
- }
- data.fb_id=Ext.getCmp('fb_id').getValue();
- data.fb_position=Ext.getCmp('fb_position').getValue();
- data.fb_kind=Ext.getCmp('fb_kind').getValue();
- me.FormUtil.setLoading(true);
- Ext.Ajax.request({
- url: basePath + 'sys/feedback/changeHandler.action',
- params:{
- data:unescape(escape(Ext.JSON.encode(data)))
- },
- method: 'post',
- callback: function(options,success,response){
- me.FormUtil.setLoading(false);
- var res=Ext.decode(response.responseText);
- if(res.exceptionInfo){
- showError(localJson.exceptionInfo);return;
- }else if(res.success){
- showMessage('提示','变更成功!',1000);
- window.location.reload();
- }
- btn.setDisabled(true);
- }
- });
- },
- afterrender:function(btn){
- var status=Ext.getCmp('fb_statuscode').getValue(),position=Ext.getCmp('fb_position').getValue();
- if(status!='AUDITED' || position=='End') btn.hide();
- }
- },
- 'erpTurnBuglist' : {
- click: function(btn){
- var form= Ext.getCmp('form');
- Ext.Ajax.request({
- url : basePath + form.turnBuglistUrl,
- params: {
- id: Ext.getCmp('fb_id').value
- },
- method : 'post',
- callback : function(options,success,response){
- var localJson = new Ext.decode(response.responseText);
- if(localJson.exceptionInfo){
- var str = localJson.exceptionInfo;
- showError(str);
- }else{
- window.location.href = basePath + "jsps/plm/test/newchecklist.jsp?formCondition=cl_idIS" + localJson.id+"&gridCondition=cld_clidIS"+localJson.id;
- }
- }
- });
- }
- },
- 'erpUpdateButton': {
- click: function(btn){
- this.FormUtil.onUpdate(this);
- }
- },
- 'erpAddButton': {
- click: function(){
- me.FormUtil.onAdd('addFeedback', '新增系统问题反馈', 'jsps/sys/Feedback.jsp?caller=Feedback');
- }
- },
- 'erpCloseButton': {
- click: function(btn){
- me.FormUtil.beforeClose(me);
- }
- },
- 'erpSubmitButton': {
- afterrender: function(btn){
- var status = Ext.getCmp('fb_statuscode');
- if(status && status.value != 'ENTERING'){
- btn.hide();
- }
- },
- click: function(btn){
- me.FormUtil.onSubmit(Ext.getCmp('fb_id').value);
- }
- },
- 'erpResSubmitButton': {
- afterrender: function(btn){
- var status = Ext.getCmp('fb_statuscode');
- if(status && status.value != 'COMMITED'){
- btn.hide();
- }
- },
- click: function(btn){
- me.FormUtil.onResSubmit(Ext.getCmp('fb_id').value);
- }
- },
- 'erpReplyButton': {
- afterrender: function(btn){
- var status = Ext.getCmp('fb_statuscode');
- if(status && status.value != 'AUDITED'){
- btn.hide();
- }
- },
- click: function(btn){
- var form= Ext.getCmp('form');
- Ext.Ajax.request({
- url : basePath + form.replyUrl,
- params: {
- id: Ext.getCmp('fb_id').value,
- comment:Ext.getCmp('fb_uasdetail').getValue(),
- },
- method : 'post',
- callback : function(options,success,response){
- var localJson = new Ext.decode(response.responseText);
- if(localJson.exceptionInfo){
- var str = localJson.exceptionInfo;
- showError(str);
- }else{
- alert('回复成功');
- window.location.href = basePath + "jsps/sys/Feedback.jsp?caller=UASFeedback&&formCondition=fb_idIS" + Ext.getCmp('ts_id').value;
- }
- }
- });
- }
- },
- 'erpAuditButton': {
- afterrender: function(btn){
- var status = Ext.getCmp('fb_statuscode');
- if(status && status.value != 'COMMITED'){
- btn.hide();
- }
- },
- click: function(btn){
- me.FormUtil.onAudit(Ext.getCmp('fb_id').value);
- }
- },
- 'erpBackButton':{
- afterrender:function(btn){
- var status=Ext.getCmp('fb_statuscode').getValue(),currentposition=Ext.getCmp('fb_position').getValue(),relativefield=null,form=btn.ownerCt;
- if(status!='AUDITED' || currentposition=='End' ) btn.hide();
- if(status=='AUDITED' && currentposition !='End'){
- relativefield=me.RelativeFields[currentposition].plandateField;
- if(!relativefield || (relativefield && Ext.getCmp(relativefield).value)){
- btn.hide();
- }
- }
- },
- click:function(btn){
- var data=me.getDirtyValues(),allowsave=false;
- Ext.each(Ext.Object.getKeys(data), function(k){
- if(me.FormUtil.contains(k, 'ext-', true)){
- delete r[k];
- }
- if(me.FormUtil.contains(k, 'fb_plandate', true)){
- allowsave=true;
- }
- });
- if(!allowsave){
- showError('回复需设置预计完成时间!'); return;
- }
- Ext.Ajax.request({
- url : basePath + '/sys/feedback/backPlan.action',
- params: {
- data:unescape(escape(Ext.JSON.encode(data)))
- },
- method : 'post',
- callback : function(options,success,response){
- var localJson = new Ext.decode(response.responseText);
- if(localJson.exceptionInfo){
- var str = localJson.exceptionInfo;
- showError(str);
- }else{
- showMessage('提示','回复成功!',1000);
- window.location.reload();
- }
- }
- });
- }
- },
- 'erpConfirmButton':{
- afterrender:function(btn){
- var status=Ext.getCmp('fb_statuscode').getValue();
- if(status!='AUDITED') btn.hide();
- },
- click:function(btn){
- var data=me.getDirtyValues();
- Ext.each(Ext.Object.getKeys(data), function(k){
- if(me.FormUtil.contains(k, 'ext-', true)){
- delete r[k];
- }
- });
- Ext.Ajax.request({
- url : basePath + '/sys/feedback/confirm.action',
- params: {
- data:unescape(escape(Ext.JSON.encode(data)))
- },
- method : 'post',
- callback : function(options,success,response){
- var localJson = new Ext.decode(response.responseText);
- if(localJson.exceptionInfo){
- var str = localJson.exceptionInfo;
- showError(str);
- }else{
- showMessage('提示','确认成功!',1000);
- window.location.reload();
- }
- }
- });
- }
- },
- 'dbfindtrigger[name=fb_module]': {
- afterrender: function(f){
- f.onTriggerClick = function(){
- me.getModuleTree();
- };
- f.autoDbfind = false;
- }
- },
- 'treepanel': {
- itemmousedown: function(selModel, record){
- var tree = selModel.ownerCt;
- me.loadTree(tree, record);
- }
- },
- 'erpChecktaskButton':{
- click: function(btn){
- Ext.Ajax.request({
- url : basePath + '/sys/feedback/changestatus.action',
- params: {
- id: Ext.getCmp('fb_id').value,
- },
- method : 'post',
- callback : function(options,success,response){
- var localJson = new Ext.decode(response.responseText);
- if(localJson.exceptionInfo){
- var str = localJson.exceptionInfo;
- showError(str);
- }else{
- alert('修改成功!');
- }
- }
- });
- }
- },
- 'erpEndfeedbackButton':{
- click: function(btn){
- Ext.Ajax.request({
- url : basePath + '/sys/feedback/Endfeedback.action',
- params: {
- id: Ext.getCmp('fb_id').value,
- },
- method : 'post',
- callback : function(options,success,response){
- var localJson = new Ext.decode(response.responseText);
- if(localJson.exceptionInfo){
- var str = localJson.exceptionInfo;
- showError(str);
- }else{
- alert('修改成功!');
- }
- }
- });
- }
- },
- 'erpResAuditButton': {
- afterrender: function(btn){
- var status = Ext.getCmp('fb_statuscode');
- if(status && status.value != 'AUDITED'){
- btn.hide();
- }
- },
- click: function(btn){
- me.FormUtil.onResAudit(Ext.getCmp('fb_id').value);
- }
- }
- });
- },
- getForm: function(btn){
- return btn.ownerCt.ownerCt;
- },
- getModuleTree: function(){
- var w = Ext.create('Ext.Window',{
- title: '查找模板',
- height: "100%",
- width: "80%",
- maximizable : true,
- buttonAlign : 'center',
- layout : 'anchor',
- items: [{
- anchor: '100% 100%',
- xtype: 'treepanel',
- rootVisible: false,
- useArrows: true,
- store: Ext.create('Ext.data.TreeStore', {
- root : {
- text: 'root',
- id: 'root',
- expanded: true
- }
- })
- }],
- buttons : [{
- text : '关 闭',
- iconCls: 'x-button-icon-close',
- cls: 'x-btn-gray',
- handler : function(btn){
- btn.ownerCt.ownerCt.close();
- }
- },{
- text: '确定',
- iconCls: 'x-button-icon-confirm',
- cls: 'x-btn-gray',
- handler: function(btn){
- var t = btn.ownerCt.ownerCt.down('treepanel');
- if(!Ext.isEmpty(t.title)) {
- Ext.getCmp('fb_module').setValue(t.title);
- }
- btn.ownerCt.ownerCt.close();
- }
- }]
- });
- w.show();
- this.loadTree(w.down('treepanel'), null);
- },
- loadTree: function(tree, record){
- var pid = 0;
- if(record) {
- if (record.get('leaf')) {
- return;
- } else {
- if(record.isExpanded() && record.childNodes.length > 0){
- record.collapse(true, true);//收拢
- return;
- } else {
- if(record.childNodes.length != 0){
- record.expand(false, true);//展开
- return;
- }
- }
- }
- pid = record.get('id');
- }
- tree.setLoading(true);
- Ext.Ajax.request({
- url : basePath + 'common/lazyTree.action?_noc=1',
- params: {
- parentId: pid,
- condition: 'sn_using=1'
- },
- callback : function(options,success,response){
- tree.setLoading(false);
- var res = new Ext.decode(response.responseText);
- if(res.tree){
- if(record) {
- record.appendChild(res.tree);
- record.expand(false,true);//展开
- tree.setTitle(record.getPath('text', '/').replace('root', '').replace('//', '/'));
- } else {
- tree.store.setRootNode({
- text: 'root',
- id: 'root',
- expanded: true,
- children: res.tree
- });
- }
- } else if(res.exceptionInfo){
- showError(res.exceptionInfo);
- }
- }
- });
- },
- getCurrentFlow: function(kind,position) {
- var result = false;
- Ext.Ajax.request({
- url : basePath + 'common/getFieldsData.action',
- async: false,
- params: {
- caller: 'FeedBackFlow',
- fields: 'ff_caption,ff_handmanfield',
- condition: 'ff_code=\'' + kind + '\' and ff_step=\''+position+'\''
- },
- method : 'post',
- callback : function(opt, s, res){
- var r = new Ext.decode(res.responseText);
- if(r.exceptionInfo){
- showError(r.exceptionInfo);return;
- } else if(r.success && r.data){
- result = r.data;
- }
- }
- });
- return result;
- },
- getDirtyValues:function(){
- var form=Ext.getCmp('form'),values=this.getEditValues(form);
- values.fb_id=Ext.getCmp('fb_id').getValue();
- values.fb_position=Ext.getCmp('fb_position').getValue();
- values.fb_kind=Ext.getCmp('fb_kind').getValue();
- return values;
- },
- getEditValues:function(form){
- var values=new Object(),formvalues=form.getForm().getValues();
- Ext.Array.each(form.items.items,function(item){
- if(!item.readOnly && item.name && item.value){
- values[item.name]=formvalues[item.name];
- }
- });
- return values;
- },
- loadNewStore: function(id){
- var data=null;
- Ext.Ajax.request({//拿到grid的columns
- url : basePath + "common/loadNewGridStore.action",
- params: {
- caller:'Feedback',
- condition:'fl_fbid='+id +' order by fl_id asc'
- },
- async:false,
- method : 'post',
- callback : function(options,success,response){
- var res = new Ext.decode(response.responseText);
- if(res.exceptionInfo){
- showError(res.exceptionInfo);return;
- }
- data = res.data;
- }
- });
- return data;
- },
- getInsertIndex:function(){
- var form=Ext.getCmp('form'),i=0;
- Ext.Array.each(form.items.items,function(item,index){
- if(item.name=='fb_position'){
- i=index;
- }
- });
- return i+1;
- }
- });
|