123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- Ext.define('saas.view.help.DocItemPanelController', {
- extend: 'Ext.app.ViewController',
- alias: 'controller.help-docitem-panel',
- onViewReady: function () {
- var me = this, view = me.getView();
- me.getProjectDetail(view.initId);
- },
- getProjectDetail: function (id) {
- var me = this,
- view = me.getView(),
- vm = me.getViewModel();
- view.mask();
- Ext.Ajax.promise({
- url: '/api/help/project/read/' + id
- }).then(res => {
- view.unmask();
- var project = res.data;
- vm.getStore('treeStore').transformAndLoad(project.items);
- delete project.items;
- vm.set('project', project);
- });
- },
- /**
- * 查看文档
- */
- handleViewArticle: function () {
- var me = this, vm = me.getViewModel(),
- article = vm.get('article');
- window.open(Ext.manifest.client.help + '/doc/' + article.projectCode + '/' + article.itemCode);
- },
- /**
- * 保存文档
- */
- handleSaveArticle: function () {
- var me = this, view = me.getView(), vm = me.getViewModel(),
- data = vm.get('article');
- view.mask('正在保存');
- Ext.Ajax.payload({
- url: '/api/help/article/save',
- jsonData: data
- }).then(function (res) {
- view.unmask();
- if (res.success) {
- saas.util.BaseUtil.showSuccessToast('保存成功');
- }
- }).catch(function (e) {
- view.unmask();
- saas.util.BaseUtil.showErrorToast('保存失败: ' + e.message);
- });
- },
- handleCreateFolder: function (menuitem) {
- this.doCreateItem(menuitem.ownerCt.record, false);
- },
- handleCreateItem: function (menuitem) {
- this.doCreateItem(menuitem.ownerCt.record, true);
- },
- doCreateItem: function (parent, isArticle) {
- var me = this, vm = me.getViewModel(), projectId = vm.get('project.id'),
- store = vm.getStore('treeStore'),
- root = store.getRoot(),
- parentId = parent ? parent.get('raw').id : null,
- lastChild = (parent || root).lastChild,
- orderNum = lastChild ? (lastChild.get('raw').orderNum + 1) : 1;
- me.showItemWindow({
- article: isArticle,
- projectId,
- parentId,
- orderNum
- }, null, parent);
- },
- handleEditItem: function (menuitem) {
- var me = this, record = menuitem.ownerCt.record;
- me.showItemWindow(record.get('raw'), record);
- },
- /**
- * 目录编辑窗口
- * @param {*} item 目录
- * @param {*} node 目录对应树节点
- * @param {*} parentNode 目录上级文件夹对应树节点
- */
- showItemWindow: function (item, node, parentNode) {
- var me = this, vm = me.getViewModel(),
- store = vm.getStore('treeStore');
- var panel = Ext.create({
- xtype: 'help-docitem-win',
- modal: true,
- autoShow: true,
- onConfirm: function (data) {
- me.saveItem(data).then(res => {
- data = res.data;
- if (node) {
- node.set('raw', data);
- node.set('text', data.name);
- if (item.id == vm.get('article.id')) {
- vm.set('article.itemCode', data.code);
- vm.set('article.itemName', data.name);
- vm.set('articlePath', node.getPath('text').replace('/Root', ''));
- }
- } else {
- if (!parentNode) {
- parentNode = store.getRoot();
- }
- parentNode.appendChild(store.itemMapper(data));
- parentNode.expand();
- }
- });
- }
- });
- panel.loadData(item);
- },
- /**
- * 保存目录
- * @param {*} data
- */
- saveItem: function (data) {
- var me = this, view = me.getView();
- view.mask('正在保存');
- return Ext.Ajax.payload({
- url: '/api/help/project_item/save',
- jsonData: data
- }).then(function (res) {
- view.unmask();
- if (res.success) {
- saas.util.BaseUtil.showSuccessToast('保存成功');
- return res;
- }
- }).catch(function (e) {
- view.unmask();
- saas.util.BaseUtil.showErrorToast('保存失败: ' + e.message);
- });
- },
- /**
- * 删除目录
- * @param {*} menuitem
- */
- handleDeleteItem: function (menuitem) {
- var me = this, view = me.getView(), vm = me.getViewModel(),
- record = menuitem.ownerCt.record,
- id = record.get('raw').id;
- view.mask('正在删除');
- Ext.Ajax.form({
- url: '/api/help/project_item/delete/' + id
- }).then(function (res) {
- view.unmask();
- if (res.success) {
- saas.util.BaseUtil.showSuccessToast('删除成功');
- record.remove();
- if (vm.get('article.id') == id) {
- vm.set('article', null);
- vm.set('articlePath', null);
- }
- }
- }).catch(function (e) {
- view.unmask();
- saas.util.BaseUtil.showErrorToast('删除失败: ' + e.message);
- });
- },
- /**
- * 点击树节点打开文档
- * @param {*} selModel
- * @param {*} selected
- */
- onItemSelect: function (selModel, selected) {
- if (selected.length) {
- var record = selModel.lastSelected, raw = record.get('raw');
- if (raw.article) {
- var me = this, vm = me.getViewModel(), project = vm.get('project');
- me.getArticle(raw.id).then(res => {
- var article = res.data || {
- id: raw.id,
- projectCode: project.code,
- itemCode: raw.code,
- itemName: raw.name
- };
- vm.set('article', article);
- vm.set('articlePath', record.getPath('text').replace('/Root', ''));
- });
- }
- }
- },
- /**
- * 查找文档
- * @param {*} id
- */
- getArticle: function (id) {
- var me = this, view = me.getView();
- view.mask('加载中');
- return Ext.Ajax.promise({
- url: '/api/help/article/read/' + id
- }).then(function (res) {
- view.unmask();
- if (res.success) {
- return res;
- }
- }).catch(function (e) {
- view.unmask();
- saas.util.BaseUtil.showErrorToast(e.message);
- });
- },
- /**
- * 拖拽改变目录顺序、所属文件夹
- * @param {*} el
- * @param {*} data
- * @param {*} over
- * @param {*} position
- * @param {*} e
- */
- onItemDragDrop: function (el, data, over, position, e) {
- var dropData = data.records[0].get('raw'),
- overData = over.get('raw'),
- orderNum, parentId, parent, updates = [];
- if (position == 'before') {
- orderNum = overData.orderNum;
- parentId = overData.parentId;
- parent = over.parentNode;
- } else if (position == 'after') {
- orderNum = overData.orderNum + 1;
- parentId = overData.parentId;
- parent = over.parentNode;
- } else if (position == 'append') {
- orderNum = over.lastChild ? (over.lastChild.get('raw').orderNum + 1) : 1;
- parentId = overData.id;
- parent = over;
- }
- dropData.orderNum = orderNum;
- dropData.parentId = parentId;
- updates.push(dropData);
- parent.eachChild(child => {
- var raw = child.get('raw');
- if (raw.id != dropData.id && raw.orderNum >= dropData.orderNum) {
- raw.orderNum++;
- updates.push(raw);
- }
- });
- this.batchSaveItem(updates);
- },
- /**
- * 批量保存目录
- * @param {*} data
- */
- batchSaveItem: function (data) {
- var me = this, view = me.getView();
- view.mask('正在保存');
- return Ext.Ajax.payload({
- url: '/api/help/project_item/batch_save',
- jsonData: data
- }).then(function (res) {
- view.unmask();
- if (res.success) {
- saas.util.BaseUtil.showSuccessToast('保存成功');
- return res;
- }
- }).catch(function (e) {
- view.unmask();
- saas.util.BaseUtil.showErrorToast('保存失败: ' + e.message);
- });
- },
- });
|