提交 f5f753d4 编写于 作者: ibizdev's avatar ibizdev

chitanda 发布系统代码

上级 fe6e1681
......@@ -679,6 +679,16 @@
"viewtag": "2d001ccdcb51e48a9d4273278b26d782",
"memo": "系统自动添加"
},
"goalusablegridview": {
"title": "目标信息",
"caption": "目标",
"viewtype": "DEGRIDVIEW",
"viewmodule": "Sales",
"viewname": "GoalUsableGridView",
"viewfilename": "goal-usable-grid-view",
"viewtag": "2d821ab9533f16f136fffb1bcad20a50",
"memo": "系统自动添加"
},
"discounttypepickupgridview": {
"title": "折扣表选择表格视图",
"caption": "折扣表",
......@@ -2519,6 +2529,16 @@
"viewtag": "bb5324c14c92a03092c9f6eae01eb908",
"memo": "系统自动添加"
},
"goalclosegridview": {
"title": "目标信息",
"caption": "目标",
"viewtype": "DEGRIDVIEW",
"viewmodule": "Sales",
"viewname": "GoalCloseGridView",
"viewfilename": "goal-close-grid-view",
"viewtag": "bd28aec9b964270b37c4e0428a4e4ee3",
"memo": "系统自动添加"
},
"ibizliststatetabview": {
"title": "市场营销列表状态分页视图",
"caption": "市场营销列表",
......
......@@ -92,6 +92,10 @@ export default {
caption: "目标",
title: "目标选择表格视图",
},
usablegridview: {
caption: "目标",
title: "目标信息",
},
statetabview: {
caption: "目标",
title: "目标分页状态",
......@@ -120,6 +124,10 @@ export default {
caption: "目标",
title: "子目标信息",
},
closegridview: {
caption: "目标",
title: "目标信息",
},
quickcreateview: {
caption: "目标",
title: "快速新建",
......@@ -313,6 +321,56 @@ export default {
tip: "关闭",
},
},
usablegridviewtoolbar_toolbar: {
tbitem1_quickcreate: {
caption: "新建",
tip: "新建",
},
tbitem2: {
caption: "-",
tip: "",
},
tbitem4: {
caption: "Edit",
tip: "Edit {0}",
},
tbitem6: {
caption: "Copy",
tip: "Copy {0}",
},
tbitem7: {
caption: "-",
tip: "",
},
tbitem8: {
caption: "Remove",
tip: "Remove {0}",
},
tbitem9: {
caption: "-",
tip: "",
},
tbitem13: {
caption: "Export",
tip: "Export {0} Data To Excel",
},
tbitem10: {
caption: "-",
tip: "",
},
tbitem14_close: {
caption: "关闭目标",
tip: "关闭目标",
},
tbitem15: {
caption: "-",
tip: "",
},
tbitem19: {
caption: "Filter",
tip: "Filter",
},
},
gridviewtoolbar_toolbar: {
tbitem1_quickcreate: {
caption: "新建",
......@@ -355,6 +413,56 @@ export default {
tip: "Filter",
},
},
closegridviewtoolbar_toolbar: {
tbitem1_quickcreate: {
caption: "新建",
tip: "新建",
},
tbitem2: {
caption: "-",
tip: "",
},
tbitem4: {
caption: "Edit",
tip: "Edit {0}",
},
tbitem6: {
caption: "Copy",
tip: "Copy {0}",
},
tbitem7: {
caption: "-",
tip: "",
},
tbitem8: {
caption: "Remove",
tip: "Remove {0}",
},
tbitem9: {
caption: "-",
tip: "",
},
tbitem13: {
caption: "Export",
tip: "Export {0} Data To Excel",
},
tbitem10: {
caption: "-",
tip: "",
},
tbitem14_close: {
caption: "关闭目标",
tip: "关闭目标",
},
tbitem15: {
caption: "-",
tip: "",
},
tbitem19: {
caption: "Filter",
tip: "Filter",
},
},
editviewtoolbar_toolbar: {
tbitem3: {
caption: "Save",
......
......@@ -91,6 +91,10 @@ export default {
caption: "目标",
title: "目标选择表格视图",
},
usablegridview: {
caption: "目标",
title: "目标信息",
},
statetabview: {
caption: "目标",
title: "目标分页状态",
......@@ -119,6 +123,10 @@ export default {
caption: "目标",
title: "子目标信息",
},
closegridview: {
caption: "目标",
title: "目标信息",
},
quickcreateview: {
caption: "目标",
title: "快速新建",
......@@ -312,6 +320,56 @@ export default {
tip: "关闭",
},
},
usablegridviewtoolbar_toolbar: {
tbitem1_quickcreate: {
caption: "新建",
tip: "新建",
},
tbitem2: {
caption: "-",
tip: "",
},
tbitem4: {
caption: "编辑",
tip: "编辑",
},
tbitem6: {
caption: "拷贝",
tip: "拷贝",
},
tbitem7: {
caption: "-",
tip: "",
},
tbitem8: {
caption: "删除",
tip: "删除",
},
tbitem9: {
caption: "-",
tip: "",
},
tbitem13: {
caption: "导出",
tip: "导出",
},
tbitem10: {
caption: "-",
tip: "",
},
tbitem14_close: {
caption: "关闭目标",
tip: "关闭目标",
},
tbitem15: {
caption: "-",
tip: "",
},
tbitem19: {
caption: "过滤",
tip: "过滤",
},
},
gridviewtoolbar_toolbar: {
tbitem1_quickcreate: {
caption: "新建",
......@@ -354,6 +412,56 @@ export default {
tip: "过滤",
},
},
closegridviewtoolbar_toolbar: {
tbitem1_quickcreate: {
caption: "新建",
tip: "新建",
},
tbitem2: {
caption: "-",
tip: "",
},
tbitem4: {
caption: "编辑",
tip: "编辑",
},
tbitem6: {
caption: "拷贝",
tip: "拷贝",
},
tbitem7: {
caption: "-",
tip: "",
},
tbitem8: {
caption: "删除",
tip: "删除",
},
tbitem9: {
caption: "-",
tip: "",
},
tbitem13: {
caption: "导出",
tip: "导出",
},
tbitem10: {
caption: "-",
tip: "",
},
tbitem14_close: {
caption: "关闭目标",
tip: "关闭目标",
},
tbitem15: {
caption: "-",
tip: "",
},
tbitem19: {
caption: "过滤",
tip: "过滤",
},
},
editviewtoolbar_toolbar: {
tbitem3: {
caption: "保存",
......
......@@ -61,7 +61,7 @@ mock.onGet('v7/centralappmenu').reply((config: any) => {
iconcls: 'fa fa-certificate',
icon: '',
textcls: '',
appfunctag: '_8',
appfunctag: 'Auto26',
resourcetag: '',
items: [
{
......@@ -79,7 +79,7 @@ mock.onGet('v7/centralappmenu').reply((config: any) => {
iconcls: 'fa fa-link',
icon: '',
textcls: '',
appfunctag: '_9',
appfunctag: 'Auto27',
resourcetag: '',
},
{
......@@ -97,7 +97,7 @@ mock.onGet('v7/centralappmenu').reply((config: any) => {
iconcls: 'fa fa-rmb',
icon: '',
textcls: '',
appfunctag: '_11',
appfunctag: 'Auto29',
resourcetag: '',
},
],
......@@ -301,7 +301,7 @@ mock.onGet('v7/centralappmenu').reply((config: any) => {
iconcls: 'fa fa-users',
icon: '',
textcls: '',
appfunctag: '_12',
appfunctag: 'Auto30',
resourcetag: '',
},
{
......@@ -615,7 +615,7 @@ mock.onGet('v7/centralappmenu').reply((config: any) => {
iconcls: 'fa fa-line-chart',
icon: '',
textcls: '',
appfunctag: '_10',
appfunctag: 'Auto28',
resourcetag: '',
},
],
......@@ -671,7 +671,7 @@ mock.onGet('v7/centralappmenu').reply((config: any) => {
iconcls: 'fa fa-files-o',
icon: '',
textcls: '',
appfunctag: '_2',
appfunctag: 'Auto17',
resourcetag: '',
},
],
......
......@@ -25,7 +25,7 @@ mock.onGet('v7/settingappmenu').reply((config: any) => {
iconcls: 'fa fa-connectdevelop',
icon: '',
textcls: '',
appfunctag: '_9',
appfunctag: 'Auto27',
resourcetag: '',
},
],
......
......@@ -195,6 +195,44 @@ mock.onGet(new RegExp(/^\/goals\/getdraft$/)).reply((config: any) => {
return [status, {}];
});
// Active
mock.onPost(new RegExp(/^\/goals\/?([a-zA-Z0-9\-\;]{0,35})\/active$/)).reply((config: any) => {
console.groupCollapsed("实体:goal 方法: Active");
console.table({url:config.url, method: config.method, data:config.data});
let status = MockAdapter.mockStatus(config);
if (status !== 200) {
return [status, null];
}
const paramArray:Array<any> = ['goalid'];
const matchArray:any = new RegExp(/^\/goals\/([a-zA-Z0-9\-\;]{1,35})\/active$/).exec(config.url);
let tempValue: any = {};
if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){
paramArray.forEach((item: any, index: number) => {
Object.defineProperty(tempValue, item, {
enumerable: true,
value: matchArray[index + 1]
});
});
}
//let items = mockDatas ? mockDatas : [];
//let _items = items.find((item: any) => Object.is(item.goalid, tempValue.goalid));
let data = JSON.parse(config.data);
mockDatas.forEach((item)=>{
if(item['goalid'] == tempValue['goalid'] ){
for(let value in data){
if(item.hasOwnProperty(value)){
item[value] = data[value];
}
}
}
})
console.groupCollapsed("response数据 status: "+status+" data: ");
console.table(data);
console.groupEnd();
console.groupEnd();
return [status, data];
});
// CheckKey
mock.onPost(new RegExp(/^\/goals\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => {
console.groupCollapsed("实体:goal 方法: CheckKey");
......@@ -233,6 +271,44 @@ mock.onPost(new RegExp(/^\/goals\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((
return [status, data];
});
// Close
mock.onPost(new RegExp(/^\/goals\/?([a-zA-Z0-9\-\;]{0,35})\/close$/)).reply((config: any) => {
console.groupCollapsed("实体:goal 方法: Close");
console.table({url:config.url, method: config.method, data:config.data});
let status = MockAdapter.mockStatus(config);
if (status !== 200) {
return [status, null];
}
const paramArray:Array<any> = ['goalid'];
const matchArray:any = new RegExp(/^\/goals\/([a-zA-Z0-9\-\;]{1,35})\/close$/).exec(config.url);
let tempValue: any = {};
if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){
paramArray.forEach((item: any, index: number) => {
Object.defineProperty(tempValue, item, {
enumerable: true,
value: matchArray[index + 1]
});
});
}
//let items = mockDatas ? mockDatas : [];
//let _items = items.find((item: any) => Object.is(item.goalid, tempValue.goalid));
let data = JSON.parse(config.data);
mockDatas.forEach((item)=>{
if(item['goalid'] == tempValue['goalid'] ){
for(let value in data){
if(item.hasOwnProperty(value)){
item[value] = data[value];
}
}
}
})
console.groupCollapsed("response数据 status: "+status+" data: ");
console.table(data);
console.groupEnd();
console.groupEnd();
return [status, data];
});
// Save
mock.onPost(new RegExp(/^\/goals\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => {
console.groupCollapsed("实体:goal 方法: Save");
......@@ -314,6 +390,94 @@ mock.onGet(new RegExp(/^\/goals\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((confi
console.groupEnd();
return [status, records ? records : []];
});
// FetchStop
mock.onGet(new RegExp(/^\/goals\/fetchstop$/)).reply((config: any) => {
console.groupCollapsed("实体:goal 方法: FetchStop");
console.table({url:config.url, method: config.method, data:config.data});
let status = MockAdapter.mockStatus(config);
if (status !== 200) {
return [status, null];
}
console.groupCollapsed("response数据 status: "+status+" data: ");
console.table(mockDatas);
console.groupEnd();
console.groupEnd();
return [status, mockDatas ? mockDatas : []];
});
// FetchStop
mock.onGet(new RegExp(/^\/goals\/fetchstop(\?[\w-./?%&=,]*)*$/)).reply((config: any) => {
console.groupCollapsed("实体:goal 方法: FetchStop");
console.table({url:config.url, method: config.method, data:config.data});
if(config.url.includes('page')){
let url = config.url.split('?')[1];
let params = qs.parse(url);
Object.assign(config, params);
}
let status = MockAdapter.mockStatus(config);
if (status !== 200) {
return [status, null];
}
let total = mockDatas.length;
let records: Array<any> = [];
if(!config.page || !config.size){
records = mockDatas;
}else{
if((config.page-1)*config.size < total){
records = mockDatas.slice(config.page,config.size);
}
}
console.groupCollapsed("response数据 status: "+status+" data: ");
console.table(records ? records : []);
console.groupEnd();
console.groupEnd();
return [status, records ? records : []];
});
// FetchUsable
mock.onGet(new RegExp(/^\/goals\/fetchusable$/)).reply((config: any) => {
console.groupCollapsed("实体:goal 方法: FetchUsable");
console.table({url:config.url, method: config.method, data:config.data});
let status = MockAdapter.mockStatus(config);
if (status !== 200) {
return [status, null];
}
console.groupCollapsed("response数据 status: "+status+" data: ");
console.table(mockDatas);
console.groupEnd();
console.groupEnd();
return [status, mockDatas ? mockDatas : []];
});
// FetchUsable
mock.onGet(new RegExp(/^\/goals\/fetchusable(\?[\w-./?%&=,]*)*$/)).reply((config: any) => {
console.groupCollapsed("实体:goal 方法: FetchUsable");
console.table({url:config.url, method: config.method, data:config.data});
if(config.url.includes('page')){
let url = config.url.split('?')[1];
let params = qs.parse(url);
Object.assign(config, params);
}
let status = MockAdapter.mockStatus(config);
if (status !== 200) {
return [status, null];
}
let total = mockDatas.length;
let records: Array<any> = [];
if(!config.page || !config.size){
records = mockDatas;
}else{
if((config.page-1)*config.size < total){
records = mockDatas.slice(config.page,config.size);
}
}
console.groupCollapsed("response数据 status: "+status+" data: ");
console.table(records ? records : []);
console.groupEnd();
console.groupEnd();
return [status, records ? records : []];
});
// URI参数传递情况未实现
// URI参数传递情况未实现
// URI参数传递情况未实现
......
......@@ -551,6 +551,14 @@ mock.onGet('./assets/json/view-config.json').reply((config: any) => {
"viewname": "GoalPickupGridView",
"viewtag": "2d001ccdcb51e48a9d4273278b26d782"
},
"goalusablegridview": {
"title": "目标信息",
"caption": "目标",
"viewtype": "DEGRIDVIEW",
"viewmodule": "Sales",
"viewname": "GoalUsableGridView",
"viewtag": "2d821ab9533f16f136fffb1bcad20a50"
},
"discounttypepickupgridview": {
"title": "折扣表选择表格视图",
"caption": "折扣表",
......@@ -2023,6 +2031,14 @@ mock.onGet('./assets/json/view-config.json').reply((config: any) => {
"viewname": "SalesLiteratureItemEditView",
"viewtag": "bb5324c14c92a03092c9f6eae01eb908"
},
"goalclosegridview": {
"title": "目标信息",
"caption": "目标",
"viewtype": "DEGRIDVIEW",
"viewmodule": "Sales",
"viewname": "GoalCloseGridView",
"viewtag": "bd28aec9b964270b37c4e0428a4e4ee3"
},
"ibizliststatetabview": {
"title": "市场营销列表状态分页视图",
"caption": "市场营销列表",
......
export const PageComponents = {
install(Vue: any, opt: any) {
Vue.component('ibiz-list-stop-grid-view', () => import('@pages/marketing/ibiz-list-stop-grid-view/ibiz-list-stop-grid-view.vue'));
Vue.component('quote-effective-grid-view', () => import('@pages/sales/quote-effective-grid-view/quote-effective-grid-view.vue'));
Vue.component('goal-child-goal-grid-view', () => import('@pages/sales/goal-child-goal-grid-view/goal-child-goal-grid-view.vue'));
Vue.component('quote-effective-grid-view', () => import('@pages/sales/quote-effective-grid-view/quote-effective-grid-view.vue'));
Vue.component('invoice-info-invoice-view', () => import('@pages/finance/invoice-info-invoice-view/invoice-info-invoice-view.vue'));
Vue.component('competitor-option-view', () => import('@pages/sales/competitor-option-view/competitor-option-view.vue'));
Vue.component('ibiz-list-edit-data-panel-view', () => import('@pages/marketing/ibiz-list-edit-data-panel-view/ibiz-list-edit-data-panel-view.vue'));
......@@ -22,8 +22,8 @@ export const PageComponents = {
Vue.component('goal-info-goal-view', () => import('@pages/sales/goal-info-goal-view/goal-info-goal-view.vue'));
Vue.component('invoice-by-parent-key', () => import('@pages/finance/invoice-by-parent-key/invoice-by-parent-key.vue'));
Vue.component('invoice-paid-grid-view', () => import('@pages/finance/invoice-paid-grid-view/invoice-paid-grid-view.vue'));
Vue.component('goal-info-view', () => import('@pages/sales/goal-info-view/goal-info-view.vue'));
Vue.component('opportunity-grid-view', () => import('@pages/sales/opportunity-grid-view/opportunity-grid-view.vue'));
Vue.component('goal-info-view', () => import('@pages/sales/goal-info-view/goal-info-view.vue'));
Vue.component('opportunity-product-edit-view', () => import('@pages/sales/opportunity-product-edit-view/opportunity-product-edit-view.vue'));
Vue.component('email-edit-view', () => import('@pages/base/email-edit-view/email-edit-view.vue'));
Vue.component('connection-role-pickup-view', () => import('@pages/runtime/connection-role-pickup-view/connection-role-pickup-view.vue'));
......@@ -153,6 +153,7 @@ export const PageComponents = {
Vue.component('goal-edit-child-goal-view', () => import('@pages/sales/goal-edit-child-goal-view/goal-edit-child-goal-view.vue'));
Vue.component('product-grid-view', () => import('@pages/product/product-grid-view/product-grid-view.vue'));
Vue.component('ibiz-list-info-abstract', () => import('@pages/marketing/ibiz-list-info-abstract/ibiz-list-info-abstract.vue'));
Vue.component('goal-close-grid-view', () => import('@pages/sales/goal-close-grid-view/goal-close-grid-view.vue'));
Vue.component('opportunity-competitor-edit-comp-opp-view', () => import('@pages/sales/opportunity-competitor-edit-comp-opp-view/opportunity-competitor-edit-comp-opp-view.vue'));
Vue.component('product-edit-data-panel-view', () => import('@pages/product/product-edit-data-panel-view/product-edit-data-panel-view.vue'));
Vue.component('lead-pickup-grid-view', () => import('@pages/sales/lead-pickup-grid-view/lead-pickup-grid-view.vue'));
......@@ -176,6 +177,7 @@ export const PageComponents = {
Vue.component('competitor-pickup-grid-view', () => import('@pages/sales/competitor-pickup-grid-view/competitor-pickup-grid-view.vue'));
Vue.component('price-level-pickup-view', () => import('@pages/product/price-level-pickup-view/price-level-pickup-view.vue'));
Vue.component('incident-customer-pickup-view', () => import('@pages/service/incident-customer-pickup-view/incident-customer-pickup-view.vue'));
Vue.component('goal-state-tab-view', () => import('@pages/sales/goal-state-tab-view/goal-state-tab-view.vue'));
Vue.component('opportunity-edit-view', () => import('@pages/sales/opportunity-edit-view/opportunity-edit-view.vue'));
Vue.component('sales-literature-item-edit-view', () => import('@pages/sales/sales-literature-item-edit-view/sales-literature-item-edit-view.vue'));
Vue.component('competitor-grid-view', () => import('@pages/sales/competitor-grid-view/competitor-grid-view.vue'));
......@@ -239,6 +241,7 @@ export const PageComponents = {
Vue.component('contact-summary-view', () => import('@pages/base/contact-summary-view/contact-summary-view.vue'));
Vue.component('task-edit-view', () => import('@pages/base/task-edit-view/task-edit-view.vue'));
Vue.component('product-substitute-grid-view', () => import('@pages/product/product-substitute-grid-view/product-substitute-grid-view.vue'));
Vue.component('goal-usable-grid-view', () => import('@pages/sales/goal-usable-grid-view/goal-usable-grid-view.vue'));
Vue.component('competitor-pickup-view', () => import('@pages/sales/competitor-pickup-view/competitor-pickup-view.vue'));
Vue.component('invoice-cancel-grid-view', () => import('@pages/finance/invoice-cancel-grid-view/invoice-cancel-grid-view.vue'));
Vue.component('product-sales-literature-sal-lit-pro-edit-view', () => import('@pages/sales/product-sales-literature-sal-lit-pro-edit-view/product-sales-literature-sal-lit-pro-edit-view.vue'));
......
......@@ -61,6 +61,20 @@ const router = new Router({
},
component: () => import('@pages/marketing/ibiz-list-stop-grid-view/ibiz-list-stop-grid-view.vue'),
},
{
path: 'goals/:goal?/childgoalgridview/:childgoalgridview?',
meta: {
caption: 'entities.goal.views.childgoalgridview.title',
info:'',
parameters: [
{ pathName: 'central', parameterName: 'central' },
{ pathName: 'goals', parameterName: 'goal' },
{ pathName: 'childgoalgridview', parameterName: 'childgoalgridview' },
],
requireAuth: true,
},
component: () => import('@pages/sales/goal-child-goal-grid-view/goal-child-goal-grid-view.vue'),
},
{
path: 'accounts/:account?/contacts/:contact?/opportunities/:opportunity?/quotes/:quote?/effectivegridview/:effectivegridview?',
meta: {
......@@ -139,20 +153,6 @@ const router = new Router({
},
component: () => import('@pages/sales/quote-effective-grid-view/quote-effective-grid-view.vue'),
},
{
path: 'goals/:goal?/childgoalgridview/:childgoalgridview?',
meta: {
caption: 'entities.goal.views.childgoalgridview.title',
info:'',
parameters: [
{ pathName: 'central', parameterName: 'central' },
{ pathName: 'goals', parameterName: 'goal' },
{ pathName: 'childgoalgridview', parameterName: 'childgoalgridview' },
],
requireAuth: true,
},
component: () => import('@pages/sales/goal-child-goal-grid-view/goal-child-goal-grid-view.vue'),
},
{
path: 'accounts/:account?/contacts/:contact?/opportunities/:opportunity?/quotes/:quote?/salesorders/:salesorder?/invoices/:invoice?/info_invoiceview/:info_invoiceview?',
meta: {
......@@ -1127,20 +1127,6 @@ const router = new Router({
},
component: () => import('@pages/finance/invoice-paid-grid-view/invoice-paid-grid-view.vue'),
},
{
path: 'goals/:goal?/infoview/:infoview?',
meta: {
caption: 'entities.goal.views.infoview.title',
info:'',
parameters: [
{ pathName: 'central', parameterName: 'central' },
{ pathName: 'goals', parameterName: 'goal' },
{ pathName: 'infoview', parameterName: 'infoview' },
],
requireAuth: true,
},
component: () => import('@pages/sales/goal-info-view/goal-info-view.vue'),
},
{
path: 'accounts/:account?/contacts/:contact?/opportunities/:opportunity?/gridview/:gridview?',
meta: {
......@@ -1201,6 +1187,20 @@ const router = new Router({
},
component: () => import('@pages/sales/opportunity-grid-view/opportunity-grid-view.vue'),
},
{
path: 'goals/:goal?/infoview/:infoview?',
meta: {
caption: 'entities.goal.views.infoview.title',
info:'',
parameters: [
{ pathName: 'central', parameterName: 'central' },
{ pathName: 'goals', parameterName: 'goal' },
{ pathName: 'infoview', parameterName: 'infoview' },
],
requireAuth: true,
},
component: () => import('@pages/sales/goal-info-view/goal-info-view.vue'),
},
{
path: 'accounts/:account?/contacts/:contact?/opportunities/:opportunity?/opportunityproducts/:opportunityproduct?/editview/:editview?',
meta: {
......@@ -6489,6 +6489,20 @@ const router = new Router({
},
component: () => import('@pages/marketing/ibiz-list-info-abstract/ibiz-list-info-abstract.vue'),
},
{
path: 'goals/:goal?/closegridview/:closegridview?',
meta: {
caption: 'entities.goal.views.closegridview.title',
info:'',
parameters: [
{ pathName: 'central', parameterName: 'central' },
{ pathName: 'goals', parameterName: 'goal' },
{ pathName: 'closegridview', parameterName: 'closegridview' },
],
requireAuth: true,
},
component: () => import('@pages/sales/goal-close-grid-view/goal-close-grid-view.vue'),
},
{
path: 'accounts/:account?/contacts/:contact?/opportunities/:opportunity?/opportunitycompetitors/:opportunitycompetitor?/edit_compoppview/:edit_compoppview?',
meta: {
......@@ -7720,6 +7734,20 @@ const router = new Router({
},
component: () => import('@pages/service/incident-customer-pickup-view/incident-customer-pickup-view.vue'),
},
{
path: 'goals/:goal?/statetabview/:statetabview?',
meta: {
caption: 'entities.goal.views.statetabview.title',
info:'',
parameters: [
{ pathName: 'central', parameterName: 'central' },
{ pathName: 'goals', parameterName: 'goal' },
{ pathName: 'statetabview', parameterName: 'statetabview' },
],
requireAuth: true,
},
component: () => import('@pages/sales/goal-state-tab-view/goal-state-tab-view.vue'),
},
{
path: 'accounts/:account?/contacts/:contact?/opportunities/:opportunity?/editview/:editview?',
meta: {
......@@ -9993,6 +10021,20 @@ const router = new Router({
},
component: () => import('@pages/product/product-substitute-grid-view/product-substitute-grid-view.vue'),
},
{
path: 'goals/:goal?/usablegridview/:usablegridview?',
meta: {
caption: 'entities.goal.views.usablegridview.title',
info:'',
parameters: [
{ pathName: 'central', parameterName: 'central' },
{ pathName: 'goals', parameterName: 'goal' },
{ pathName: 'usablegridview', parameterName: 'usablegridview' },
],
requireAuth: true,
},
component: () => import('@pages/sales/goal-usable-grid-view/goal-usable-grid-view.vue'),
},
{
path: 'competitors/:competitor?/pickupview/:pickupview?',
meta: {
......
<studio-view-style2 viewName="goalclosegridview" viewTitle="目标信息" class='degridview goal-close-grid-view'>
<i-input slot="quickSearch" v-show="!isExpandSearchForm" v-model="query" search @on-search="onSearch($event)"/>
<template slot="toolbar">
<view-toolbar mode="STYLE2" :model="toolBarModels" @item-click="toolbar_click($event)"/> </template>
<template slot="searchForm">
<view_searchform
:viewState="viewState"
:viewparams="viewparams"
:context="context"
:showBusyIndicator="true"
v-show="isExpandSearchForm"
loaddraftAction="FilterGetDraft"
loadAction="FilterGet"
name="searchform"
ref='searchform'
@save="searchform_save($event)"
@search="searchform_search($event)"
@load="searchform_load($event)"
@closeview="closeView($event)">
</view_searchform>
</template>
<view_grid
:viewState="viewState"
:viewparams="viewparams"
:context="context"
:isSingleSelect="isGridSingleSelect"
:showBusyIndicator="true"
:isOpenEdit="false"
:gridRowActiveMode="gridRowActiveMode"
@save="onSave.apply(_self, arguments)"
updateAction=""
removeAction="Remove"
loaddraftAction=""
loadAction=""
createAction=""
fetchAction="FetchStop"
:newdata="newdata.bind(_self)"
:opendata="opendata.bind(_self)"
name="grid"
ref='grid'
@selectionchange="grid_selectionchange($event)"
@beforeload="grid_beforeload($event)"
@rowdblclick="grid_rowdblclick($event)"
@remove="grid_remove($event)"
@load="grid_load($event)"
@closeview="closeView($event)">
</view_grid>
</studio-view-style2>
\ No newline at end of file
<template src="./goal-close-grid-view.html"/>
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import { VueLifeCycleProcessing } from '@/studio-core';
import { GoalCloseGridViewBase } from './goal-close-grid-view-base';
import view_grid from '@widgets/goal/main-grid/main-grid.vue';
import view_searchform from '@widgets/goal/default-searchform/default-searchform.vue';
/**
* 目标信息视图
*
* @export
* @class GoalCloseGridView
* @extends {GoalCloseGridViewBase}
*/
@Component({
components: {
view_grid,
view_searchform,
}
})
@VueLifeCycleProcessing()
export default class GoalCloseGridView extends GoalCloseGridViewBase { }
</script>
import { Subject } from 'rxjs';
import { TabExpViewBase } from '@/studio-core';
import GoalService from '@/service/goal/goal-service';
import GoalAuthService from '@/authservice/goal/goal-auth-service';
import TabExpViewEngine from '@engine/view/tab-exp-view-engine';
import GoalUIService from '@/uiservice/goal/goal-ui-service';
/**
* 目标分页状态视图基类
*
* @export
* @class GoalStateTabViewBase
* @extends {TabExpViewBase}
*/
export class GoalStateTabViewBase extends TabExpViewBase {
/**
* 视图对应应用实体名称
*
* @protected
* @type {string}
* @memberof GoalStateTabViewBase
*/
protected appDeName: string = 'goal';
/**
* 应用实体主键
*
* @protected
* @type {string}
* @memberof GoalStateTabViewBase
*/
protected appDeKey: string = 'goalid';
/**
* 应用实体主信息
*
* @protected
* @type {string}
* @memberof GoalStateTabViewBase
*/
protected appDeMajor: string = 'title';
/**
* 实体服务对象
*
* @type {GoalService}
* @memberof GoalStateTabViewBase
*/
protected appEntityService: GoalService = new GoalService;
/**
* 实体权限服务对象
*
* @type GoalUIService
* @memberof GoalStateTabViewBase
*/
public appUIService: GoalUIService = new GoalUIService(this.$store);
/**
* 计数器服务对象集合
*
* @protected
* @type {Array<*>}
* @memberof GoalStateTabViewBase
*/
protected counterServiceArray: Array<any> = [];
/**
* 视图模型数据
*
* @protected
* @type {*}
* @memberof GoalStateTabViewBase
*/
protected model: any = {
srfCaption: 'entities.goal.views.statetabview.caption',
srfTitle: 'entities.goal.views.statetabview.title',
srfSubTitle: 'entities.goal.views.statetabview.subtitle',
dataInfo: ''
}
/**
* 容器模型
*
* @protected
* @type {*}
* @memberof GoalStateTabViewBase
*/
protected containerModel: any = {
view_tabexppanel: { name: 'tabexppanel', type: 'TABEXPPANEL' },
};
/**
* 视图唯一标识
*
* @protected
* @type {string}
* @memberof ViewBase
*/
protected viewtag: string = '2f0540af5db76052cee0e8e91f0204c4';
/**
* 视图引擎
*
* @public
* @type {Engine}
* @memberof GoalStateTabViewBase
*/
public engine: TabExpViewEngine = new TabExpViewEngine();
/**
* 引擎初始化
*
* @public
* @memberof GoalStateTabViewBase
*/
public engineInit(): void {
this.engine.init({
view: this,
keyPSDEField: 'goal',
majorPSDEField: 'title',
isLoadDefault: true,
});
}
}
\ No newline at end of file
<studio-view-style2 viewName="goalstatetabview" viewTitle="目标分页状态" class='detabexpview goal-state-tab-view'>
<view_tabexppanel
:viewState="viewState"
:viewparams="viewparams"
:context="context"
name="tabexppanel"
ref='tabexppanel'
@closeview="closeView($event)">
</view_tabexppanel>
</studio-view-style2>
\ No newline at end of file
<template src="./goal-state-tab-view.html"/>
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import { VueLifeCycleProcessing } from '@/studio-core';
import { GoalStateTabViewBase } from './goal-state-tab-view-base';
import view_tabexppanel from '@widgets/goal/state-tab-viewtabexppanel-tabexppanel/state-tab-viewtabexppanel-tabexppanel.vue';
/**
* 目标分页状态视图
*
* @export
* @class GoalStateTabView
* @extends {GoalStateTabViewBase}
*/
@Component({
components: {
view_tabexppanel,
}
})
@VueLifeCycleProcessing()
export default class GoalStateTabView extends GoalStateTabViewBase { }
</script>
<studio-view-style2 viewName="goalusablegridview" viewTitle="目标信息" class='degridview goal-usable-grid-view'>
<i-input slot="quickSearch" v-show="!isExpandSearchForm" v-model="query" search @on-search="onSearch($event)"/>
<template slot="toolbar">
<view-toolbar mode="STYLE2" :model="toolBarModels" @item-click="toolbar_click($event)"/> </template>
<template slot="searchForm">
<view_searchform
:viewState="viewState"
:viewparams="viewparams"
:context="context"
:showBusyIndicator="true"
v-show="isExpandSearchForm"
loaddraftAction="FilterGetDraft"
loadAction="FilterGet"
name="searchform"
ref='searchform'
@save="searchform_save($event)"
@search="searchform_search($event)"
@load="searchform_load($event)"
@closeview="closeView($event)">
</view_searchform>
</template>
<view_grid
:viewState="viewState"
:viewparams="viewparams"
:context="context"
:isSingleSelect="isGridSingleSelect"
:showBusyIndicator="true"
:isOpenEdit="false"
:gridRowActiveMode="gridRowActiveMode"
@save="onSave.apply(_self, arguments)"
updateAction=""
removeAction="Remove"
loaddraftAction=""
loadAction=""
createAction=""
fetchAction="FetchUsable"
:newdata="newdata.bind(_self)"
:opendata="opendata.bind(_self)"
name="grid"
ref='grid'
@selectionchange="grid_selectionchange($event)"
@beforeload="grid_beforeload($event)"
@rowdblclick="grid_rowdblclick($event)"
@remove="grid_remove($event)"
@load="grid_load($event)"
@closeview="closeView($event)">
</view_grid>
</studio-view-style2>
\ No newline at end of file
<template src="./goal-usable-grid-view.html"/>
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import { VueLifeCycleProcessing } from '@/studio-core';
import { GoalUsableGridViewBase } from './goal-usable-grid-view-base';
import view_grid from '@widgets/goal/main-grid/main-grid.vue';
import view_searchform from '@widgets/goal/default-searchform/default-searchform.vue';
/**
* 目标信息视图
*
* @export
* @class GoalUsableGridView
* @extends {GoalUsableGridViewBase}
*/
@Component({
components: {
view_grid,
view_searchform,
}
})
@VueLifeCycleProcessing()
export default class GoalUsableGridView extends GoalUsableGridViewBase { }
</script>
import GoalService from '@/service/goal/goal-service';
import { Verify } from '@/utils/verify/verify';
/**
* 激活
*
* @export
* @class ActiveLogicBase
*/
export default class ActiveLogicBase {
/**
* 名称
*
* @memberof ActiveLogicBase
*/
private name:string ="Active";
/**
* 唯一标识
*
* @memberof ActiveLogicBase
*/
private id:string = "44B810D4-B60C-44C4-85D8-8A87773BCD97";
/**
* 默认参数名称
*
* @memberof ActiveLogicBase
*/
private defaultParamName:string = "Default";
/**
* 参数集合
*
* @memberof ActiveLogicBase
*/
private paramsMap:Map<string,any> = new Map();
/**
* Creates an instance of ActiveLogicBase.
*
* @param {*} [opts={}]
* @memberof ActiveLogicBase
*/
constructor(opts: any = {}) {
this.initParams(opts);
}
/**
* 初始化参数集合
*
* @param {*} [opts={}]
* @memberof ActiveLogicBase
*/
public initParams(opts:any){
this.paramsMap.set('Default',opts);
}
/**
* 计算0节点结果
*
* @param params 传入参数
*/
public compute0Cond(params:any):boolean{
return true;
}
/**
* 计算1节点结果
*
* @param params 传入参数
*/
public compute1Cond(params:any):boolean{
return true;
}
/**
* 执行逻辑
*
* @param context 应用上下文
* @param params 传入参数
*/
public onExecute(context:any,params:any,isloading:boolean){
return this.executeBegin(context,params,isloading);
}
/**
* 准备参数
*
* @param context 应用上下文
* @param params 传入参数
*/
private async executePrepareparam1(context:any,params:any,isloading:boolean){
// 准备参数节点
let tempDstParam0Context:any = this.paramsMap.get('Default').context?this.paramsMap.get('Default').context:{};
let tempDstParam0Data:any = this.paramsMap.get('Default').data?this.paramsMap.get('Default').data:{};
Object.assign(tempDstParam0Data,{statecode:"0"});
this.paramsMap.set('Default',{data:tempDstParam0Data,context:tempDstParam0Context});
if(this.compute0Cond(params)){
return this.executeDeaction1(context,params,isloading);
}
}
/**
* 开始
*
* @param params 传入参数
*/
private async executeBegin(context:any,params:any,isloading:boolean){
//开始节点
if(this.compute1Cond(params)){
return this.executePrepareparam1(context,params,isloading);
}
}
/**
* 更新目标状态
*
* @param context 应用上下文
* @param params 传入参数
*/
private async executeDeaction1(context:any,params:any,isloading:boolean){
// 行为处理节点
let result: any;
let actionParam:any = this.paramsMap.get('Default');
const targetService:GoalService = new GoalService();
if (targetService['Update'] && targetService['Update'] instanceof Function) {
result = await targetService['Update'](actionParam.context,actionParam.data, false);
}
if(result && result.status == 200){
Object.assign(actionParam.data,result.data);
return this.paramsMap.get(this.defaultParamName).data;
}
}
}
\ No newline at end of file
import { Http,Util } from '@/utils';
import ActiveLogicBase from './active-logic-base';
/**
* 激活
*
* @export
* @class ActiveLogic
*/
export default class ActiveLogic extends ActiveLogicBase{
/**
* Creates an instance of ActiveLogic
*
* @param {*} [opts={}]
* @memberof ActiveLogic
*/
constructor(opts: any = {}) {
super(opts);
}
}
\ No newline at end of file
import GoalService from '@/service/goal/goal-service';
import { Verify } from '@/utils/verify/verify';
/**
* 关闭
*
* @export
* @class CloseLogicBase
*/
export default class CloseLogicBase {
/**
* 名称
*
* @memberof CloseLogicBase
*/
private name:string ="Close";
/**
* 唯一标识
*
* @memberof CloseLogicBase
*/
private id:string = "E6354222-630D-400C-A077-C92D1D38F0CF";
/**
* 默认参数名称
*
* @memberof CloseLogicBase
*/
private defaultParamName:string = "Default";
/**
* 参数集合
*
* @memberof CloseLogicBase
*/
private paramsMap:Map<string,any> = new Map();
/**
* Creates an instance of CloseLogicBase.
*
* @param {*} [opts={}]
* @memberof CloseLogicBase
*/
constructor(opts: any = {}) {
this.initParams(opts);
}
/**
* 初始化参数集合
*
* @param {*} [opts={}]
* @memberof CloseLogicBase
*/
public initParams(opts:any){
this.paramsMap.set('Default',opts);
}
/**
* 计算0节点结果
*
* @param params 传入参数
*/
public compute0Cond(params:any):boolean{
return true;
}
/**
* 计算1节点结果
*
* @param params 传入参数
*/
public compute1Cond(params:any):boolean{
return true;
}
/**
* 执行逻辑
*
* @param context 应用上下文
* @param params 传入参数
*/
public onExecute(context:any,params:any,isloading:boolean){
return this.executeBegin(context,params,isloading);
}
/**
* 更新目标状态
*
* @param context 应用上下文
* @param params 传入参数
*/
private async executeDeaction1(context:any,params:any,isloading:boolean){
// 行为处理节点
let result: any;
let actionParam:any = this.paramsMap.get('Default');
const targetService:GoalService = new GoalService();
if (targetService['Update'] && targetService['Update'] instanceof Function) {
result = await targetService['Update'](actionParam.context,actionParam.data, false);
}
if(result && result.status == 200){
Object.assign(actionParam.data,result.data);
return this.paramsMap.get(this.defaultParamName).data;
}
}
/**
* 开始
*
* @param params 传入参数
*/
private async executeBegin(context:any,params:any,isloading:boolean){
//开始节点
if(this.compute1Cond(params)){
return this.executePrepareparam1(context,params,isloading);
}
}
/**
* 准备参数
*
* @param context 应用上下文
* @param params 传入参数
*/
private async executePrepareparam1(context:any,params:any,isloading:boolean){
// 准备参数节点
let tempDstParam0Context:any = this.paramsMap.get('Default').context?this.paramsMap.get('Default').context:{};
let tempDstParam0Data:any = this.paramsMap.get('Default').data?this.paramsMap.get('Default').data:{};
Object.assign(tempDstParam0Data,{statecode:"1"});
this.paramsMap.set('Default',{data:tempDstParam0Data,context:tempDstParam0Context});
if(this.compute0Cond(params)){
return this.executeDeaction1(context,params,isloading);
}
}
}
\ No newline at end of file
import { Http,Util } from '@/utils';
import CloseLogicBase from './close-logic-base';
/**
* 关闭
*
* @export
* @class CloseLogic
*/
export default class CloseLogic extends CloseLogicBase{
/**
* Creates an instance of CloseLogic
*
* @param {*} [opts={}]
* @memberof CloseLogic
*/
constructor(opts: any = {}) {
super(opts);
}
}
\ No newline at end of file
import { Http,Util } from '@/utils';
import EntityService from '../entity-service';
import ActiveLogic from '@/service/goal/active-logic';
import CloseLogic from '@/service/goal/close-logic';
......@@ -166,6 +168,21 @@ export default class GoalServiceBase extends EntityService {
return res;
}
/**
* Active接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof GoalServiceBase
*/
public async Active(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let appLogic:ActiveLogic = new ActiveLogic({context:JSON.parse(JSON.stringify(context)),data:JSON.parse(JSON.stringify(data))});
const result = await appLogic.onExecute(context,data,isloading?true:false);
return {status:200,data:result};
}
/**
* CheckKey接口方法
*
......@@ -179,6 +196,21 @@ export default class GoalServiceBase extends EntityService {
return Http.getInstance().post(`/goals/${context.goal}/checkkey`,data,isloading);
}
/**
* Close接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof GoalServiceBase
*/
public async Close(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let appLogic:CloseLogic = new CloseLogic({context:JSON.parse(JSON.stringify(context)),data:JSON.parse(JSON.stringify(data))});
const result = await appLogic.onExecute(context,data,isloading?true:false);
return {status:200,data:result};
}
/**
* Save接口方法
*
......@@ -224,4 +256,32 @@ export default class GoalServiceBase extends EntityService {
let tempData:any = JSON.parse(JSON.stringify(data));
return Http.getInstance().get(`/goals/fetchdefault`,tempData,isloading);
}
/**
* FetchStop接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof GoalServiceBase
*/
public async FetchStop(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let tempData:any = JSON.parse(JSON.stringify(data));
return Http.getInstance().get(`/goals/fetchstop`,tempData,isloading);
}
/**
* FetchUsable接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof GoalServiceBase
*/
public async FetchUsable(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let tempData:any = JSON.parse(JSON.stringify(data));
return Http.getInstance().get(`/goals/fetchusable`,tempData,isloading);
}
}
\ No newline at end of file
......@@ -583,6 +583,17 @@ export const viewstate: any = {
refviews: [
],
},
{
viewtag: '2d821ab9533f16f136fffb1bcad20a50',
viewmodule: 'Sales',
viewname: 'GoalUsableGridView',
viewaction: '',
viewdatachange: false,
refviews: [
'cab8702dc3d6cc283eb40a1e07fa72ba',
'521acee07c15c72e914d3ca538cb26fc',
],
},
{
viewtag: '2d955c4717c71ba3a811efa464f1b9f4',
viewmodule: 'Sales',
......@@ -636,6 +647,18 @@ export const viewstate: any = {
'44a690a1d62a390708480cb43f67d98b',
],
},
{
viewtag: '2f0540af5db76052cee0e8e91f0204c4',
viewmodule: 'Sales',
viewname: 'GoalStateTabView',
viewaction: '',
viewdatachange: false,
refviews: [
'631a4276161c551802f3aaf4bd7e607c',
'bd28aec9b964270b37c4e0428a4e4ee3',
'2d821ab9533f16f136fffb1bcad20a50',
],
},
{
viewtag: '30458f00562fda145be535e56948b067',
viewmodule: 'Marketing',
......@@ -1630,7 +1653,7 @@ export const viewstate: any = {
'd6dde8e6dd703de9b544d3e5d9f07579',
'efe82dc0a6991dd88da8c33cee6bf451',
'8895fef7ce4f5bdd1cd8f950bd1f8bcc',
'631a4276161c551802f3aaf4bd7e607c',
'2f0540af5db76052cee0e8e91f0204c4',
'02131b45343ed8c70e500cd8ac520361',
'90b48a107932f432e0dde42791a51887',
'c67b638daa17df2f9ecf99fc1c396e2f',
......@@ -2355,6 +2378,17 @@ export const viewstate: any = {
refviews: [
],
},
{
viewtag: 'bd28aec9b964270b37c4e0428a4e4ee3',
viewmodule: 'Sales',
viewname: 'GoalCloseGridView',
viewaction: '',
viewdatachange: false,
refviews: [
'cab8702dc3d6cc283eb40a1e07fa72ba',
'521acee07c15c72e914d3ca538cb26fc',
],
},
{
viewtag: 'bd2a4adb1377cac6ebbbc883699f28d9',
viewmodule: 'Marketing',
......
......@@ -91,6 +91,7 @@ export default class GoalUIServiceBase extends UIService {
public initViewMap(){
this.allViewMap.set('PICKUPVIEW:',{viewname:'pickupview',srfappde:'goals'});
this.allViewMap.set(':',{viewname:'pickupgridview',srfappde:'goals'});
this.allViewMap.set(':',{viewname:'usablegridview',srfappde:'goals'});
this.allViewMap.set(':',{viewname:'statetabview',srfappde:'goals'});
this.allViewMap.set(':',{viewname:'info_goalview',srfappde:'goals'});
this.allViewMap.set(':',{viewname:'infoview',srfappde:'goals'});
......@@ -98,6 +99,7 @@ export default class GoalUIServiceBase extends UIService {
this.allViewMap.set(':',{viewname:'summaryview',srfappde:'goals'});
this.allViewMap.set('EDITVIEW:',{viewname:'editview',srfappde:'goals'});
this.allViewMap.set(':',{viewname:'edit_childgoalview',srfappde:'goals'});
this.allViewMap.set(':',{viewname:'closegridview',srfappde:'goals'});
this.allViewMap.set(':',{viewname:'quickcreateview',srfappde:'goals'});
this.allViewMap.set(':',{viewname:'childgoalgridview',srfappde:'goals'});
}
......@@ -233,6 +235,74 @@ export default class GoalUIServiceBase extends UIService {
openIndexViewTab(data);
}
/**
* 关闭目标
*
* @param {any[]} args 当前数据
* @param {any} context 行为附加上下文
* @param {*} [params] 附加参数
* @param {*} [$event] 事件源
* @param {*} [xData] 执行行为所需当前部件
* @param {*} [actionContext] 执行行为上下文
* @param {*} [srfParentDeName] 父实体名称
* @returns {Promise<any>}
*/
public async Goal_Close(args: any[],context:any = {}, params:any = {}, $event?: any, xData?: any,actionContext?: any,srfParentDeName?:string){
let data: any = {};
let parentContext:any = {};
let parentViewParam:any = {};
const _this: any = actionContext;
const _args: any[] = Util.deepCopy(args);
const actionTarget: string | null = 'SINGLEKEY';
Object.assign(context, { goal: '%goal%' });
Object.assign(params, { goalid: '%goal%' });
Object.assign(params, { title: '%title%' });
if(_this.context){
parentContext = _this.context;
}
if(_this.viewparams){
parentViewParam = _this.viewparams;
}
context = UIActionTool.handleContextParam(actionTarget,_args,parentContext,parentViewParam,context);
data = UIActionTool.handleActionParam(actionTarget,_args,parentContext,parentViewParam,params);
context = Object.assign({},actionContext.context,context);
let parentObj:any = {srfparentdename:srfParentDeName?srfParentDeName:null,srfparentkey:srfParentDeName?context[srfParentDeName.toLowerCase()]:null};
Object.assign(data,parentObj);
Object.assign(context,parentObj);
// 直接调实体服务需要转换的数据
if(context && context.srfsessionid){
context.srfsessionkey = context.srfsessionid;
delete context.srfsessionid;
}
actionContext.closeView(null);
const backend = () => {
const curService:GoalService = new GoalService();
curService.Close(context,data, true).then((response: any) => {
if (!response || response.status !== 200) {
actionContext.$Notice.error({ title: '错误', desc: response.message });
return;
}
actionContext.$Notice.success({ title: '成功', desc: '关闭目标成功!' });
const _this: any = actionContext;
if (xData && xData.refresh && xData.refresh instanceof Function) {
xData.refresh(args);
}
return response;
}).catch((response: any) => {
if (!response || !response.status || !response.data) {
actionContext.$Notice.error({ title: '错误', desc: '系统异常!' });
return;
}
if (response.status === 401) {
return;
}
return response;
});
};
backend();
}
/**
* 获取指定数据的重定向页面
......
.app-popover.app-popper {
border-radius: 5px;
overflow: auto;
border: 1px solid var(--app-dividing-line-color-bright);
padding: 5px;
background: var(--view-background-color);
.app-popover-wrapper {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
.app-popover.app-popper {
border-radius: 5px;
overflow: auto;
border: 1px solid var(--app-dividing-line-color-bright);
padding: 5px;
background: var(--view-background-color);
}
}
\ No newline at end of file
......@@ -78,12 +78,6 @@ export class AppPopover {
if (AppPopover.$popover) {
return AppPopover.$popover;
}
on(document, 'click', () => {
if (!this.showPopper || !this.isAutoClose) {
return;
}
this.popperDestroy();
});
}
/**
......@@ -95,8 +89,17 @@ export class AppPopover {
*/
private initVueExample(): void {
const self = this;
const container = document.createElement('div');
container.className = 'app-popover-wrapper';
on(container, 'click', () => {
if (!this.showPopper || !this.isAutoClose) {
return;
}
this.popperDestroy();
});
const div = document.createElement('div');
document.body.appendChild(div);
container.appendChild(div);
document.body.appendChild(container);
this.vueExample = new Vue({
el: div,
store: store,
......@@ -109,6 +112,7 @@ export class AppPopover {
},
render(h: CreateElement) {
const content: any = this.content;
container.style.zIndex = (self.zIndex - 1).toString();
return <div v-show={self.showPopper} style={{ width: this.width + 'px', height: this.height + 'px', 'z-index': self.zIndex }} class="app-popover app-popper" on-click={this.click}>{(self.showPopper && content) ? content(h) : null}</div>;
}
});
......
......@@ -151,7 +151,7 @@ export class Info_AllEditFormBase extends EditFormControlBase {
* @type {number}
* @memberof Info_AllEditFormBase
*/
protected drCount: number = 0;
protected drCount: number = 1;
/**
* 表单数据对象
......
......@@ -30,32 +30,32 @@ export class CentralBase extends Vue {
this.clickAuto6(item); break;
case 'Auto3':
this.clickAuto3(item); break;
case '_10':
this.click_10(item); break;
case 'Auto28':
this.clickAuto28(item); break;
case 'Auto15':
this.clickAuto15(item); break;
case 'Auto11':
this.clickAuto11(item); break;
case '_9':
this.click_9(item); break;
case 'Auto27':
this.clickAuto27(item); break;
case 'Auto14':
this.clickAuto14(item); break;
case '_8':
this.click_8(item); break;
case 'Auto26':
this.clickAuto26(item); break;
case 'Auto10':
this.clickAuto10(item); break;
case 'Auto16':
this.clickAuto16(item); break;
case 'Auto1':
this.clickAuto1(item); break;
case '_11':
this.click_11(item); break;
case '_2':
this.click_2(item); break;
case 'Auto29':
this.clickAuto29(item); break;
case 'Auto17':
this.clickAuto17(item); break;
case 'Auto7':
this.clickAuto7(item); break;
case '_12':
this.click_12(item); break;
case 'Auto30':
this.clickAuto30(item); break;
case 'Auto5':
this.clickAuto5(item); break;
default:
......@@ -103,7 +103,7 @@ export class CentralBase extends Vue {
const deResParameters: any[] = [];
const parameters: any[] = [
{ pathName: 'goals', parameterName: 'goal' },
{ pathName: 'gridview', parameterName: 'gridview' },
{ pathName: 'statetabview', parameterName: 'statetabview' },
];
const path: string = this.$viewTool.buildUpRoutePath(this.$route, {}, deResParameters, parameters, [], viewparam);
if(Object.is(this.$route.fullPath,path)){
......@@ -235,7 +235,7 @@ export class CentralBase extends Vue {
* @param {*} [item={}]
* @memberof Central
*/
public click_10(item: any = {}) {
public clickAuto28(item: any = {}) {
const viewparam: any = {};
Object.assign(viewparam, {});
const deResParameters: any[] = [];
......@@ -304,7 +304,7 @@ export class CentralBase extends Vue {
* @param {*} [item={}]
* @memberof Central
*/
public click_9(item: any = {}) {
public clickAuto27(item: any = {}) {
const viewparam: any = {};
Object.assign(viewparam, {});
const deResParameters: any[] = [];
......@@ -350,7 +350,7 @@ export class CentralBase extends Vue {
* @param {*} [item={}]
* @memberof Central
*/
public click_8(item: any = {}) {
public clickAuto26(item: any = {}) {
const viewparam: any = {};
Object.assign(viewparam, {});
const deResParameters: any[] = [];
......@@ -440,7 +440,7 @@ export class CentralBase extends Vue {
* @param {*} [item={}]
* @memberof Central
*/
public click_11(item: any = {}) {
public clickAuto29(item: any = {}) {
const viewparam: any = {};
Object.assign(viewparam, {});
const deResParameters: any[] = [];
......@@ -463,7 +463,7 @@ export class CentralBase extends Vue {
* @param {*} [item={}]
* @memberof Central
*/
public click_2(item: any = {}) {
public clickAuto17(item: any = {}) {
const viewparam: any = {};
Object.assign(viewparam, {});
const deResParameters: any[] = [];
......@@ -509,7 +509,7 @@ export class CentralBase extends Vue {
* @param {*} [item={}]
* @memberof Central
*/
public click_12(item: any = {}) {
public clickAuto30(item: any = {}) {
const viewparam: any = {};
Object.assign(viewparam, {});
const deResParameters: any[] = [];
......
......@@ -66,7 +66,7 @@ export default class CentralModel {
iconcls: 'fa fa-certificate',
icon: '',
textcls: '',
appfunctag: '_8',
appfunctag: 'Auto26',
appfuncyype: 'APPVIEW',
viewname: 'setting',
resourcetag: '',
......@@ -86,7 +86,7 @@ export default class CentralModel {
iconcls: 'fa fa-link',
icon: '',
textcls: '',
appfunctag: '_9',
appfunctag: 'Auto27',
appfuncyype: 'APPVIEW',
viewname: 'connection-role-grid-view',
resourcetag: '',
......@@ -107,7 +107,7 @@ export default class CentralModel {
iconcls: 'fa fa-rmb',
icon: '',
textcls: '',
appfunctag: '_11',
appfunctag: 'Auto29',
appfuncyype: 'APPVIEW',
viewname: 'transaction-currency-grid-view',
resourcetag: '',
......@@ -328,7 +328,7 @@ export default class CentralModel {
iconcls: 'fa fa-users',
icon: '',
textcls: '',
appfunctag: '_12',
appfunctag: 'Auto30',
appfuncyype: 'APPVIEW',
viewname: 'account-status-tab-view',
resourcetag: '',
......@@ -666,7 +666,7 @@ export default class CentralModel {
textcls: '',
appfunctag: 'Auto13',
appfuncyype: 'APPVIEW',
viewname: 'goal-grid-view',
viewname: 'goal-state-tab-view',
resourcetag: '',
}
,
......@@ -685,7 +685,7 @@ export default class CentralModel {
iconcls: 'fa fa-line-chart',
icon: '',
textcls: '',
appfunctag: '_10',
appfunctag: 'Auto28',
appfuncyype: 'APPVIEW',
viewname: 'metric-grid-view',
resourcetag: '',
......@@ -748,7 +748,7 @@ export default class CentralModel {
iconcls: 'fa fa-files-o',
icon: '',
textcls: '',
appfunctag: '_2',
appfunctag: 'Auto17',
appfuncyype: 'APPVIEW',
viewname: 'knowledge-article-grid-view',
resourcetag: '',
......@@ -862,12 +862,12 @@ export default class CentralModel {
appfunctag: 'Auto13',
appfuncyype: 'APPVIEW',
openmode: '',
codename: 'goalgridview',
codename: 'goalstatetabview',
deResParameters: [],
routepath: '/central/:central?/goals/:goal?/gridview/:gridview?',
routepath: '/central/:central?/goals/:goal?/statetabview/:statetabview?',
parameters: [
{ pathName: 'goals', parameterName: 'goal' },
{ pathName: 'gridview', parameterName: 'gridview' },
{ pathName: 'statetabview', parameterName: 'statetabview' },
],
},
{
......@@ -931,7 +931,7 @@ export default class CentralModel {
],
},
{
appfunctag: '_10',
appfunctag: 'Auto28',
appfuncyype: 'APPVIEW',
openmode: '',
codename: 'metricgridview',
......@@ -967,7 +967,7 @@ export default class CentralModel {
],
},
{
appfunctag: '_9',
appfunctag: 'Auto27',
appfuncyype: 'APPVIEW',
openmode: '',
codename: 'connectionrolegridview',
......@@ -991,7 +991,7 @@ export default class CentralModel {
],
},
{
appfunctag: '_8',
appfunctag: 'Auto26',
appfuncyype: 'APPVIEW',
openmode: '',
codename: 'setting',
......@@ -1037,7 +1037,7 @@ export default class CentralModel {
],
},
{
appfunctag: '_11',
appfunctag: 'Auto29',
appfuncyype: 'APPVIEW',
openmode: '',
codename: 'transactioncurrencygridview',
......@@ -1049,7 +1049,7 @@ export default class CentralModel {
],
},
{
appfunctag: '_2',
appfunctag: 'Auto17',
appfuncyype: 'APPVIEW',
openmode: '',
codename: 'knowledgearticlegridview',
......@@ -1073,7 +1073,7 @@ export default class CentralModel {
],
},
{
appfunctag: '_12',
appfunctag: 'Auto30',
appfuncyype: 'APPVIEW',
openmode: '',
codename: 'accountstatustabview',
......
......@@ -16,8 +16,8 @@ export class SettingBase extends Vue {
if (item) {
let judge = true;
switch (item.appfunctag) {
case '_9':
this.click_9(item); break;
case 'Auto27':
this.clickAuto27(item); break;
default:
judge = false;
console.warn('未指定应用功能');
......@@ -34,7 +34,7 @@ export class SettingBase extends Vue {
* @param {*} [item={}]
* @memberof Setting
*/
public click_9(item: any = {}) {
public clickAuto27(item: any = {}) {
const viewparam: any = {};
Object.assign(viewparam, {});
const deResParameters: any[] = [];
......
......@@ -29,7 +29,7 @@ export default class SettingModel {
iconcls: 'fa fa-connectdevelop',
icon: '',
textcls: '',
appfunctag: '_9',
appfunctag: 'Auto27',
appfuncyype: 'APPVIEW',
viewname: 'connection-role-grid-view',
resourcetag: '',
......
import { Prop, Provide, Emit, Model } from 'vue-property-decorator';
import { Subject, Subscription } from 'rxjs';
import { Watch, TabExpPanelControlBase } from '@/studio-core';
import GoalService from '@/service/goal/goal-service';
import StateTabViewtabexppanelService from './state-tab-viewtabexppanel-tabexppanel-service';
import GoalUIService from '@/uiservice/goal/goal-ui-service';
/**
* tabexppanel部件基类
*
* @export
* @class TabExpPanelControlBase
* @extends {StateTabViewtabexppanelTabexppanelBase}
*/
export class StateTabViewtabexppanelTabexppanelBase extends TabExpPanelControlBase {
/**
* 获取部件类型
*
* @protected
* @type {string}
* @memberof StateTabViewtabexppanelTabexppanelBase
*/
protected controlType: string = 'TABEXPPANEL';
/**
* 建构部件服务对象
*
* @type {StateTabViewtabexppanelService}
* @memberof StateTabViewtabexppanelTabexppanelBase
*/
public service: StateTabViewtabexppanelService = new StateTabViewtabexppanelService({ $store: this.$store });
/**
* 实体服务对象
*
* @type {GoalService}
* @memberof StateTabViewtabexppanelTabexppanelBase
*/
public appEntityService: GoalService = new GoalService({ $store: this.$store });
/**
* 应用实体名称
*
* @protected
* @type {string}
* @memberof StateTabViewtabexppanelTabexppanelBase
*/
protected appDeName: string = 'goal';
/**
* 是否初始化
*
* @protected
* @returns {any}
* @memberof StateTabViewtabexppanel
*/
protected isInit: any = {
tabviewpanel: true ,
tabviewpanel2: false ,
tabviewpanel3: false ,
}
/**
* 被激活的分页面板
*
* @protected
* @type {string}
* @memberof StateTabViewtabexppanel
*/
protected activatedTabViewPanel: string = 'tabviewpanel';
/**
* 组件创建完毕
*
* @protected
* @memberof StateTabViewtabexppanel
*/
protected ctrlCreated(): void {
//设置分页导航srfparentdename和srfparentkey
if (this.context.goal) {
Object.assign(this.context, { srfparentdename: 'Goal', srfparentkey: this.context.goal });
}
super.ctrlCreated();
}
}
\ No newline at end of file
import { Http,Util,Errorlog } from '@/utils';
import ControlService from '@/widgets/control-service';
import GoalService from '@/service/goal/goal-service';
import StateTabViewtabexppanelModel from './state-tab-viewtabexppanel-tabexppanel-model';
/**
* StateTabViewtabexppanel 部件服务对象
*
* @export
* @class StateTabViewtabexppanelService
*/
export default class StateTabViewtabexppanelService extends ControlService {
/**
* 目标服务对象
*
* @type {GoalService}
* @memberof StateTabViewtabexppanelService
*/
public appEntityService: GoalService = new GoalService({ $store: this.getStore() });
/**
* 设置从数据模式
*
* @type {boolean}
* @memberof StateTabViewtabexppanelService
*/
public setTempMode(){
this.isTempMode = false;
}
/**
* Creates an instance of StateTabViewtabexppanelService.
*
* @param {*} [opts={}]
* @memberof StateTabViewtabexppanelService
*/
constructor(opts: any = {}) {
super(opts);
this.model = new StateTabViewtabexppanelModel();
}
}
\ No newline at end of file
<div class='tabviewpanel'>
<tabs :value="activatedTabViewPanel" :animated="false" class='tabexppanel' name='statetabviewtabexppanel' @on-click="tabPanelClick($event)">
<tab-pane :index="0" name='tabviewpanel' tab='statetabviewtabexppanel' class=''
:label="(h) =>{
return h('div', [
h('span', '全部目标'),
h('Badge', {
props: {
count: undefined,
type: 'primary'
}
})
])
}" >
<view_tabviewpanel
:viewState="viewState"
:viewparams="JSON.parse(JSON.stringify(viewparams))"
:context="JSON.parse(JSON.stringify(context))"
v-if="isInit.tabviewpanel"
name="tabviewpanel"
ref='tabviewpanel'
:expActive="activatedTabViewPanel === 'tabviewpanel'"
@viewpanelDatasChange = "tabViewPanelDatasChange"
@closeview="closeView($event)">
</view_tabviewpanel>
</tab-pane>
<tab-pane :index="1" name='tabviewpanel2' tab='statetabviewtabexppanel' class=''
:label="(h) =>{
return h('div', [
h('span', '可用目标'),
h('Badge', {
props: {
count: undefined,
type: 'primary'
}
})
])
}" >
<view_tabviewpanel2
:viewState="viewState"
:viewparams="JSON.parse(JSON.stringify(viewparams))"
:context="JSON.parse(JSON.stringify(context))"
v-if="isInit.tabviewpanel2"
name="tabviewpanel2"
ref='tabviewpanel2'
:expActive="activatedTabViewPanel === 'tabviewpanel2'"
@viewpanelDatasChange = "tabViewPanelDatasChange"
@closeview="closeView($event)">
</view_tabviewpanel2>
</tab-pane>
<tab-pane :index="2" name='tabviewpanel3' tab='statetabviewtabexppanel' class=''
:label="(h) =>{
return h('div', [
h('span', '已关闭目标'),
h('Badge', {
props: {
count: undefined,
type: 'primary'
}
})
])
}" >
<view_tabviewpanel3
:viewState="viewState"
:viewparams="JSON.parse(JSON.stringify(viewparams))"
:context="JSON.parse(JSON.stringify(context))"
v-if="isInit.tabviewpanel3"
name="tabviewpanel3"
ref='tabviewpanel3'
:expActive="activatedTabViewPanel === 'tabviewpanel3'"
@viewpanelDatasChange = "tabViewPanelDatasChange"
@closeview="closeView($event)">
</view_tabviewpanel3>
</tab-pane>
</tabs>
</div>
\ No newline at end of file
<template src="./state-tab-viewtabexppanel-tabexppanel.html"/>
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import { VueLifeCycleProcessing } from '@/studio-core';
import { StateTabViewtabexppanelTabexppanelBase } from './state-tab-viewtabexppanel-tabexppanel-base';
import view_tabviewpanel from '@widgets/goal/state-tab-viewtabviewpanel-tabviewpanel/state-tab-viewtabviewpanel-tabviewpanel.vue';
import view_tabviewpanel2 from '@widgets/goal/state-tab-viewtabviewpanel2-tabviewpanel/state-tab-viewtabviewpanel2-tabviewpanel.vue';
import view_tabviewpanel3 from '@widgets/goal/state-tab-viewtabviewpanel3-tabviewpanel/state-tab-viewtabviewpanel3-tabviewpanel.vue';
/**
* tabexppanel部件
*
* @export
* @class StateTabViewtabexppanelTabexppanel
* @extends {StateTabViewtabexppanelTabexppanelBase}
*/
@Component({
components: {
view_tabviewpanel,
view_tabviewpanel2,
view_tabviewpanel3,
}
})
@VueLifeCycleProcessing()
export default class StateTabViewtabexppanelTabexppanel extends StateTabViewtabexppanelTabexppanelBase { }
</script>
import { Http } from '@/utils';
import ControlService from '@/widgets/control-service';
/**
* StateTabViewtabviewpanel 部件服务对象
*
* @export
* @class StateTabViewtabviewpanelService
*/
export default class StateTabViewtabviewpanelService extends ControlService {
}
\ No newline at end of file
<div class='tabviewpanel' v-if='isActivied'>
<goal-grid-view
class='viewcontainer2'
:viewdata="viewdata"
:viewparam="viewparam"
@viewload="viewDatasChange($event)"
:viewDefaultUsage="false"
:viewUsage="7"
:expActive="expActive"
/>
</div>
\ No newline at end of file
<template src="./state-tab-viewtabviewpanel-tabviewpanel.html"/>
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import { VueLifeCycleProcessing } from '@/studio-core';
import { StateTabViewtabviewpanelTabviewpanelBase } from './state-tab-viewtabviewpanel-tabviewpanel-base';
/**
* tabviewpanel部件
*
* @export
* @class StateTabViewtabviewpanelTabviewpanel
* @extends {StateTabViewtabviewpanelTabviewpanelBase}
*/
@Component({
components: {
}
})
@VueLifeCycleProcessing()
export default class StateTabViewtabviewpanelTabviewpanel extends StateTabViewtabviewpanelTabviewpanelBase { }
</script>
import { Http } from '@/utils';
import ControlService from '@/widgets/control-service';
/**
* StateTabViewtabviewpanel2 部件服务对象
*
* @export
* @class StateTabViewtabviewpanel2Service
*/
export default class StateTabViewtabviewpanel2Service extends ControlService {
}
\ No newline at end of file
<div class='tabviewpanel' v-if='isActivied'>
<goal-usable-grid-view
class='viewcontainer2'
:viewdata="viewdata"
:viewparam="viewparam"
@viewload="viewDatasChange($event)"
:viewDefaultUsage="false"
:viewUsage="7"
:expActive="expActive"
/>
</div>
\ No newline at end of file
<template src="./state-tab-viewtabviewpanel2-tabviewpanel.html"/>
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import { VueLifeCycleProcessing } from '@/studio-core';
import { StateTabViewtabviewpanel2TabviewpanelBase } from './state-tab-viewtabviewpanel2-tabviewpanel-base';
/**
* tabviewpanel2部件
*
* @export
* @class StateTabViewtabviewpanel2Tabviewpanel
* @extends {StateTabViewtabviewpanel2TabviewpanelBase}
*/
@Component({
components: {
}
})
@VueLifeCycleProcessing()
export default class StateTabViewtabviewpanel2Tabviewpanel extends StateTabViewtabviewpanel2TabviewpanelBase { }
</script>
此差异已折叠。
此差异已折叠。
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册