Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
I
iBiz企业中心
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
iBiz企业套件
iBiz企业中心
提交
60d9e01e
提交
60d9e01e
编写于
6月 30, 2020
作者:
ibizdev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
xignzi006 发布系统代码
上级
b3737bd6
变更
48
展开全部
隐藏空白字符变更
内嵌
并排
正在显示
48 个修改的文件
包含
5235 行增加
和
313 行删除
+5235
-313
competitor-sales-literature.ts
app_CRM/src/interface/entity/competitor-sales-literature.ts
+96
-0
en-US.ts
app_CRM/src/locale/lang/en-US.ts
+2
-0
zh-CN.ts
app_CRM/src/locale/lang/zh-CN.ts
+2
-0
competitor-sales-literature_en_US.ts
...tor-sales-literature/competitor-sales-literature_en_US.ts
+16
-0
competitor-sales-literature_zh_CN.ts
...tor-sales-literature/competitor-sales-literature_zh_CN.ts
+15
-0
competitor-sales-literatures.ts
...petitor-sales-literatures/competitor-sales-literatures.ts
+651
-0
opportunitys.ts
app_CRM/src/mock/entity/opportunitys/opportunitys.ts
+134
-0
product-sales-literatures.ts
...ty/product-sales-literatures/product-sales-literatures.ts
+271
-0
sales-literature-items.ts
...k/entity/sales-literature-items/sales-literature-items.ts
+271
-0
index.ts
app_CRM/src/mock/index.ts
+1
-0
campaign-service-base.ts
app_CRM/src/service/campaign/campaign-service-base.ts
+52
-52
competitor-sales-literature-service-base.ts
...es-literature/competitor-sales-literature-service-base.ts
+227
-0
competitor-sales-literature-service.ts
...r-sales-literature/competitor-sales-literature-service.ts
+25
-0
entity-service-register.ts
app_CRM/src/service/entity-service-register.ts
+1
-0
ibiz-list-service-base.ts
app_CRM/src/service/ibiz-list/ibiz-list-service-base.ts
+50
-50
opportunity-service-base.ts
app_CRM/src/service/opportunity/opportunity-service-base.ts
+216
-194
product-sales-literature-service-base.ts
...sales-literature/product-sales-literature-service-base.ts
+50
-0
sales-literature-item-service-base.ts
...les-literature-item/sales-literature-item-service-base.ts
+50
-0
sales-literature-service-base.ts
...service/sales-literature/sales-literature-service-base.ts
+150
-0
competitor-sales-literature-ui-service-base.ts
...literature/competitor-sales-literature-ui-service-base.ts
+210
-0
competitor-sales-literature-ui-service.ts
...ales-literature/competitor-sales-literature-ui-service.ts
+21
-0
ui-service-register.ts
app_CRM/src/uiservice/ui-service-register.ts
+1
-0
centeral-portal-db-dashboard.html
...ral-portal-db-dashboard/centeral-portal-db-dashboard.html
+27
-0
centeral-portal-db-dashboard.vue
...eral-portal-db-dashboard/centeral-portal-db-dashboard.vue
+2
-0
chart-001-chart-base.tsx
...gets/opportunity/chart-001-chart/chart-001-chart-base.tsx
+1112
-0
chart-001-chart-model.ts
...gets/opportunity/chart-001-chart/chart-001-chart-model.ts
+36
-0
chart-001-chart-service.ts
...ts/opportunity/chart-001-chart/chart-001-chart-service.ts
+72
-0
chart-001-chart.html
.../widgets/opportunity/chart-001-chart/chart-001-chart.html
+4
-0
chart-001-chart.less
.../widgets/opportunity/chart-001-chart/chart-001-chart.less
+14
-0
chart-001-chart.vue
...c/widgets/opportunity/chart-001-chart/chart-001-chart.vue
+22
-0
part-cht-001-portlet-base.tsx
...tunity/part-cht-001-portlet/part-cht-001-portlet-base.tsx
+156
-0
part-cht-001-portlet-model.ts
...tunity/part-cht-001-portlet/part-cht-001-portlet-model.ts
+355
-0
part-cht-001-portlet-service.ts
...nity/part-cht-001-portlet/part-cht-001-portlet-service.ts
+11
-0
part-cht-001-portlet.html
...pportunity/part-cht-001-portlet/part-cht-001-portlet.html
+21
-0
part-cht-001-portlet.vue
...opportunity/part-cht-001-portlet/part-cht-001-portlet.vue
+24
-0
application-crm-prod.yml
...ntral-app-crm/src/main/resources/application-crm-prod.yml
+4
-0
OpportunityMapper.java
.../businesscentral/core/sales/mapper/OpportunityMapper.java
+1
-0
IOpportunityService.java
...sinesscentral/core/sales/service/IOpportunityService.java
+1
-0
OpportunityServiceImpl.java
...ntral/core/sales/service/impl/OpportunityServiceImpl.java
+9
-0
h2_table.xml
...esscentral-core/src/main/resources/liquibase/h2_table.xml
+16
-16
OpportunityMapper.xml
.../resources/mapper/sales/opportunity/OpportunityMapper.xml
+14
-0
systemResource.json
...al-core/src/main/resources/permission/systemResource.json
+9
-1
CompetitorSalesLiteratureDTO.java
...scentral/centralapi/dto/CompetitorSalesLiteratureDTO.java
+167
-0
CompetitorSalesLiteratureMapping.java
.../centralapi/mapping/CompetitorSalesLiteratureMapping.java
+16
-0
CompetitorSalesLiteratureResource.java
...al/centralapi/rest/CompetitorSalesLiteratureResource.java
+297
-0
OpportunityResource.java
.../businesscentral/centralapi/rest/OpportunityResource.java
+67
-0
ProductSalesLiteratureResource.java
...ntral/centralapi/rest/ProductSalesLiteratureResource.java
+133
-0
SalesLiteratureItemResource.java
...scentral/centralapi/rest/SalesLiteratureItemResource.java
+133
-0
未找到文件。
app_CRM/src/interface/entity/competitor-sales-literature.ts
0 → 100644
浏览文件 @
60d9e01e
/**
* 竞争对手宣传资料
*
* @export
* @interface CompetitorSalesLiterature
*/
export
interface
CompetitorSalesLiterature
{
/**
* 建立时间
*
* @returns {*}
* @memberof CompetitorSalesLiterature
*/
createdate
?:
any
;
/**
* 建立人
*
* @returns {*}
* @memberof CompetitorSalesLiterature
*/
createman
?:
any
;
/**
* 关系标识
*
* @returns {*}
* @memberof CompetitorSalesLiterature
*/
relationshipsid
?:
any
;
/**
* 关系名称
*
* @returns {*}
* @memberof CompetitorSalesLiterature
*/
relationshipsname
?:
any
;
/**
* 关系类型
*
* @returns {*}
* @memberof CompetitorSalesLiterature
*/
relationshipstype
?:
any
;
/**
* 更新时间
*
* @returns {*}
* @memberof CompetitorSalesLiterature
*/
updatedate
?:
any
;
/**
* 更新人
*
* @returns {*}
* @memberof CompetitorSalesLiterature
*/
updateman
?:
any
;
/**
* 竞争对手
*
* @returns {*}
* @memberof CompetitorSalesLiterature
*/
entityid
?:
any
;
/**
* 销售宣传资料
*
* @returns {*}
* @memberof CompetitorSalesLiterature
*/
entity2id
?:
any
;
/**
* 竞争对手
*
* @returns {*}
* @memberof CompetitorSalesLiterature
*/
entityname
?:
any
;
/**
* 销售宣传资料
*
* @returns {*}
* @memberof CompetitorSalesLiterature
*/
entity2name
?:
any
;
}
\ No newline at end of file
app_CRM/src/locale/lang/en-US.ts
浏览文件 @
60d9e01e
...
...
@@ -30,6 +30,7 @@ import quote_en_US from '@locale/lanres/entities/quote/quote_en_US';
import
campaignactivity_en_US
from
'@locale/lanres/entities/campaign-activity/campaign-activity_en_US'
;
import
listlead_en_US
from
'@locale/lanres/entities/list-lead/list-lead_en_US'
;
import
opportunitycompetitor_en_US
from
'@locale/lanres/entities/opportunity-competitor/opportunity-competitor_en_US'
;
import
competitorsalesliterature_en_US
from
'@locale/lanres/entities/competitor-sales-literature/competitor-sales-literature_en_US'
;
import
salesliteratureitem_en_US
from
'@locale/lanres/entities/sales-literature-item/sales-literature-item_en_US'
;
import
contact_en_US
from
'@locale/lanres/entities/contact/contact_en_US'
;
import
product_en_US
from
'@locale/lanres/entities/product/product_en_US'
;
...
...
@@ -176,6 +177,7 @@ export default {
campaignactivity
:
campaignactivity_en_US
,
listlead
:
listlead_en_US
,
opportunitycompetitor
:
opportunitycompetitor_en_US
,
competitorsalesliterature
:
competitorsalesliterature_en_US
,
salesliteratureitem
:
salesliteratureitem_en_US
,
contact
:
contact_en_US
,
product
:
product_en_US
,
...
...
app_CRM/src/locale/lang/zh-CN.ts
浏览文件 @
60d9e01e
...
...
@@ -30,6 +30,7 @@ import quote_zh_CN from '@locale/lanres/entities/quote/quote_zh_CN';
import
campaignactivity_zh_CN
from
'@locale/lanres/entities/campaign-activity/campaign-activity_zh_CN'
;
import
listlead_zh_CN
from
'@locale/lanres/entities/list-lead/list-lead_zh_CN'
;
import
opportunitycompetitor_zh_CN
from
'@locale/lanres/entities/opportunity-competitor/opportunity-competitor_zh_CN'
;
import
competitorsalesliterature_zh_CN
from
'@locale/lanres/entities/competitor-sales-literature/competitor-sales-literature_zh_CN'
;
import
salesliteratureitem_zh_CN
from
'@locale/lanres/entities/sales-literature-item/sales-literature-item_zh_CN'
;
import
contact_zh_CN
from
'@locale/lanres/entities/contact/contact_zh_CN'
;
import
product_zh_CN
from
'@locale/lanres/entities/product/product_zh_CN'
;
...
...
@@ -176,6 +177,7 @@ export default {
campaignactivity
:
campaignactivity_zh_CN
,
listlead
:
listlead_zh_CN
,
opportunitycompetitor
:
opportunitycompetitor_zh_CN
,
competitorsalesliterature
:
competitorsalesliterature_zh_CN
,
salesliteratureitem
:
salesliteratureitem_zh_CN
,
contact
:
contact_zh_CN
,
product
:
product_zh_CN
,
...
...
app_CRM/src/locale/lanres/entities/competitor-sales-literature/competitor-sales-literature_en_US.ts
0 → 100644
浏览文件 @
60d9e01e
export
default
{
fields
:
{
createdate
:
"建立时间"
,
createman
:
"建立人"
,
relationshipsid
:
"关系标识"
,
relationshipsname
:
"关系名称"
,
relationshipstype
:
"关系类型"
,
updatedate
:
"更新时间"
,
updateman
:
"更新人"
,
entityid
:
"竞争对手"
,
entity2id
:
"销售宣传资料"
,
entityname
:
"竞争对手"
,
entity2name
:
"销售宣传资料"
,
},
};
app_CRM/src/locale/lanres/entities/competitor-sales-literature/competitor-sales-literature_zh_CN.ts
0 → 100644
浏览文件 @
60d9e01e
export
default
{
fields
:
{
createdate
:
"建立时间"
,
createman
:
"建立人"
,
relationshipsid
:
"关系标识"
,
relationshipsname
:
"关系名称"
,
relationshipstype
:
"关系类型"
,
updatedate
:
"更新时间"
,
updateman
:
"更新人"
,
entityid
:
"竞争对手"
,
entity2id
:
"销售宣传资料"
,
entityname
:
"竞争对手"
,
entity2name
:
"销售宣传资料"
,
},
};
\ No newline at end of file
app_CRM/src/mock/entity/competitor-sales-literatures/competitor-sales-literatures.ts
0 → 100644
浏览文件 @
60d9e01e
此差异已折叠。
点击以展开。
app_CRM/src/mock/entity/opportunitys/opportunitys.ts
浏览文件 @
60d9e01e
...
...
@@ -768,6 +768,140 @@ mock.onPost(new RegExp(/^\/opportunities\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).rep
});
// FetchTop5
mock
.
onGet
(
new
RegExp
(
/^
\/
accounts
\/([
a-zA-Z0-9
\-\;]{1,35})\/
contacts
\/([
a-zA-Z0-9
\-\;]{1,35})\/
opportunities
\/
fetchtop5$/
)).
reply
((
config
:
any
)
=>
{
console
.
groupCollapsed
(
"实体:opportunity 方法: FetchTop5"
);
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
>
=
[
'accountid'
,
'contactid'
];
let
tempValue
:
any
=
{};
const
matchArray
:
any
=
new
RegExp
(
/^
\/
accounts
\/([
a-zA-Z0-9
\-\;]{1,35})\/
contacts
\/([
a-zA-Z0-9
\-\;]{1,35})\/
opportunities
\/
fetchtop5$/
).
exec
(
config
.
url
);
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
:
[];
if
(
items
.
length
>
0
&&
paramArray
.
length
>
0
)
{
paramArray
.
forEach
((
paramkey
:
any
)
=>
{
if
(
tempValue
[
paramkey
]
&&
tempValue
[
paramkey
].
indexOf
(
";"
)
>
0
)
{
let
keysGrounp
:
Array
<
any
>
=
tempValue
[
paramkey
].
split
(
new
RegExp
(
/
[\;]
/
));
let
tempArray
:
Array
<
any
>
=
[];
keysGrounp
.
forEach
((
singlekey
:
any
)
=>
{
let
_items
=
items
.
filter
((
item
:
any
)
=>
{
return
item
[
paramkey
]
==
singlekey
});
if
(
_items
.
length
>
0
){
tempArray
.
push
(...
_items
);
}
})
items
=
tempArray
;
}
else
{
items
=
items
.
filter
((
item
:
any
)
=>
{
return
item
[
paramkey
]
==
tempValue
[
paramkey
]
});
}
})
}
console
.
groupCollapsed
(
"response数据 status: "
+
status
+
" data: "
);
console
.
table
(
items
);
console
.
groupEnd
();
console
.
groupEnd
();
return
[
status
,
items
];
});
// FetchTop5
mock
.
onGet
(
new
RegExp
(
/^
\/
contacts
\/([
a-zA-Z0-9
\-\;]{1,35})\/
opportunities
\/
fetchtop5$/
)).
reply
((
config
:
any
)
=>
{
console
.
groupCollapsed
(
"实体:opportunity 方法: FetchTop5"
);
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
>
=
[
'contactid'
];
let
tempValue
:
any
=
{};
const
matchArray
:
any
=
new
RegExp
(
/^
\/
contacts
\/([
a-zA-Z0-9
\-\;]{1,35})\/
opportunities
\/
fetchtop5$/
).
exec
(
config
.
url
);
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
:
[];
if
(
items
.
length
>
0
&&
paramArray
.
length
>
0
)
{
paramArray
.
forEach
((
paramkey
:
any
)
=>
{
if
(
tempValue
[
paramkey
]
&&
tempValue
[
paramkey
].
indexOf
(
";"
)
>
0
)
{
let
keysGrounp
:
Array
<
any
>
=
tempValue
[
paramkey
].
split
(
new
RegExp
(
/
[\;]
/
));
let
tempArray
:
Array
<
any
>
=
[];
keysGrounp
.
forEach
((
singlekey
:
any
)
=>
{
let
_items
=
items
.
filter
((
item
:
any
)
=>
{
return
item
[
paramkey
]
==
singlekey
});
if
(
_items
.
length
>
0
){
tempArray
.
push
(...
_items
);
}
})
items
=
tempArray
;
}
else
{
items
=
items
.
filter
((
item
:
any
)
=>
{
return
item
[
paramkey
]
==
tempValue
[
paramkey
]
});
}
})
}
console
.
groupCollapsed
(
"response数据 status: "
+
status
+
" data: "
);
console
.
table
(
items
);
console
.
groupEnd
();
console
.
groupEnd
();
return
[
status
,
items
];
});
// FetchTop5
mock
.
onGet
(
new
RegExp
(
/^
\/
opportunities
\/
fetchtop5$/
)).
reply
((
config
:
any
)
=>
{
console
.
groupCollapsed
(
"实体:opportunity 方法: FetchTop5"
);
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
:
[]];
});
// FetchTop5
mock
.
onGet
(
new
RegExp
(
/^
\/
opportunities
\/
fetchtop5
(\?[\w
-.
/
?%&=,
]
*
)
*$/
)).
reply
((
config
:
any
)
=>
{
console
.
groupCollapsed
(
"实体:opportunity 方法: FetchTop5"
);
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
:
[]];
});
// FetchDefault
mock
.
onGet
(
new
RegExp
(
/^
\/
accounts
\/([
a-zA-Z0-9
\-\;]{1,35})\/
contacts
\/([
a-zA-Z0-9
\-\;]{1,35})\/
opportunities
\/
fetchdefault$/
)).
reply
((
config
:
any
)
=>
{
console
.
groupCollapsed
(
"实体:opportunity 方法: FetchDefault"
);
...
...
app_CRM/src/mock/entity/product-sales-literatures/product-sales-literatures.ts
浏览文件 @
60d9e01e
此差异已折叠。
点击以展开。
app_CRM/src/mock/entity/sales-literature-items/sales-literature-items.ts
浏览文件 @
60d9e01e
此差异已折叠。
点击以展开。
app_CRM/src/mock/index.ts
浏览文件 @
60d9e01e
...
...
@@ -39,6 +39,7 @@ import './entity/quotes/quotes';
import
'./entity/campaign-activitys/campaign-activitys'
;
import
'./entity/list-leads/list-leads'
;
import
'./entity/opportunity-competitors/opportunity-competitors'
;
import
'./entity/competitor-sales-literatures/competitor-sales-literatures'
;
import
'./entity/sales-literature-items/sales-literature-items'
;
import
'./entity/contacts/contacts'
;
import
'./entity/products/products'
;
...
...
app_CRM/src/service/campaign/campaign-service-base.ts
浏览文件 @
60d9e01e
此差异已折叠。
点击以展开。
app_CRM/src/service/competitor-sales-literature/competitor-sales-literature-service-base.ts
0 → 100644
浏览文件 @
60d9e01e
import
{
Http
,
Util
}
from
'@/utils'
;
import
EntityService
from
'../entity-service'
;
/**
* 竞争对手宣传资料服务对象基类
*
* @export
* @class CompetitorSalesLiteratureServiceBase
* @extends {EntityServie}
*/
export
default
class
CompetitorSalesLiteratureServiceBase
extends
EntityService
{
/**
* Creates an instance of CompetitorSalesLiteratureServiceBase.
*
* @param {*} [opts={}]
* @memberof CompetitorSalesLiteratureServiceBase
*/
constructor
(
opts
:
any
=
{})
{
super
(
opts
);
}
/**
* 初始化基础数据
*
* @memberof CompetitorSalesLiteratureServiceBase
*/
public
initBasicData
(){
this
.
APPLYDEKEY
=
'competitorsalesliterature'
;
this
.
APPDEKEY
=
'relationshipsid'
;
this
.
APPDENAME
=
'competitorsalesliteratures'
;
this
.
APPDETEXT
=
'relationshipsname'
;
this
.
APPNAME
=
'crm'
;
this
.
SYSTEMNAME
=
'ibizbusinesscentral'
;
}
// 实体接口
/**
* Select接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof CompetitorSalesLiteratureServiceBase
*/
public
async
Select
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
context
.
competitorsalesliterature
){
return
Http
.
getInstance
().
get
(
`/salesliteratures/
${
context
.
salesliterature
}
/competitorsalesliteratures/
${
context
.
competitorsalesliterature
}
/select`
,
isloading
);
}
return
Http
.
getInstance
().
get
(
`/competitorsalesliteratures/
${
context
.
competitorsalesliterature
}
/select`
,
isloading
);
}
/**
* CheckKey接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof CompetitorSalesLiteratureServiceBase
*/
public
async
CheckKey
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
context
.
competitorsalesliterature
){
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
let
res
:
any
=
await
Http
.
getInstance
().
post
(
`/salesliteratures/
${
context
.
salesliterature
}
/competitorsalesliteratures/
${
context
.
competitorsalesliterature
}
/checkkey`
,
data
,
isloading
);
return
res
;
}
return
Http
.
getInstance
().
post
(
`/competitorsalesliteratures/
${
context
.
competitorsalesliterature
}
/checkkey`
,
data
,
isloading
);
}
/**
* Update接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof CompetitorSalesLiteratureServiceBase
*/
public
async
Update
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
context
.
competitorsalesliterature
){
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
let
res
:
any
=
await
Http
.
getInstance
().
put
(
`/salesliteratures/
${
context
.
salesliterature
}
/competitorsalesliteratures/
${
context
.
competitorsalesliterature
}
`
,
data
,
isloading
);
return
res
;
}
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
let
res
:
any
=
await
Http
.
getInstance
().
put
(
`/competitorsalesliteratures/
${
context
.
competitorsalesliterature
}
`
,
data
,
isloading
);
return
res
;
}
/**
* Get接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof CompetitorSalesLiteratureServiceBase
*/
public
async
Get
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
context
.
competitorsalesliterature
){
let
res
:
any
=
await
Http
.
getInstance
().
get
(
`/salesliteratures/
${
context
.
salesliterature
}
/competitorsalesliteratures/
${
context
.
competitorsalesliterature
}
`
,
isloading
);
return
res
;
}
let
res
:
any
=
await
Http
.
getInstance
().
get
(
`/competitorsalesliteratures/
${
context
.
competitorsalesliterature
}
`
,
isloading
);
return
res
;
}
/**
* Remove接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof CompetitorSalesLiteratureServiceBase
*/
public
async
Remove
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
context
.
competitorsalesliterature
){
return
Http
.
getInstance
().
delete
(
`/salesliteratures/
${
context
.
salesliterature
}
/competitorsalesliteratures/
${
context
.
competitorsalesliterature
}
`
,
isloading
);
}
return
Http
.
getInstance
().
delete
(
`/competitorsalesliteratures/
${
context
.
competitorsalesliterature
}
`
,
isloading
);
}
/**
* Create接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof CompetitorSalesLiteratureServiceBase
*/
public
async
Create
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
true
){
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
if
(
!
data
.
srffrontuf
||
data
.
srffrontuf
!==
"1"
){
data
[
this
.
APPDEKEY
]
=
null
;
}
if
(
data
.
srffrontuf
){
delete
data
.
srffrontuf
;
}
let
tempContext
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
context
));
let
res
:
any
=
await
Http
.
getInstance
().
post
(
`/salesliteratures/
${
context
.
salesliterature
}
/competitorsalesliteratures`
,
data
,
isloading
);
return
res
;
}
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
if
(
!
data
.
srffrontuf
||
data
.
srffrontuf
!==
"1"
){
data
[
this
.
APPDEKEY
]
=
null
;
}
if
(
data
.
srffrontuf
){
delete
data
.
srffrontuf
;
}
let
tempContext
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
context
));
let
res
:
any
=
await
Http
.
getInstance
().
post
(
`/competitorsalesliteratures`
,
data
,
isloading
);
return
res
;
}
/**
* Save接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof CompetitorSalesLiteratureServiceBase
*/
public
async
Save
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
context
.
competitorsalesliterature
){
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
let
res
:
any
=
await
Http
.
getInstance
().
post
(
`/salesliteratures/
${
context
.
salesliterature
}
/competitorsalesliteratures/
${
context
.
competitorsalesliterature
}
/save`
,
data
,
isloading
);
return
res
;
}
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
let
res
:
any
=
await
Http
.
getInstance
().
post
(
`/competitorsalesliteratures/
${
context
.
competitorsalesliterature
}
/save`
,
data
,
isloading
);
return
res
;
}
/**
* GetDraft接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof CompetitorSalesLiteratureServiceBase
*/
public
async
GetDraft
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
true
){
let
res
:
any
=
await
Http
.
getInstance
().
get
(
`/salesliteratures/
${
context
.
salesliterature
}
/competitorsalesliteratures/getdraft`
,
isloading
);
res
.
data
.
competitorsalesliterature
=
data
.
competitorsalesliterature
;
return
res
;
}
let
res
:
any
=
await
Http
.
getInstance
().
get
(
`/competitorsalesliteratures/getdraft`
,
isloading
);
res
.
data
.
competitorsalesliterature
=
data
.
competitorsalesliterature
;
return
res
;
}
/**
* FetchDefault接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof CompetitorSalesLiteratureServiceBase
*/
public
async
FetchDefault
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
true
){
let
tempData
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
data
));
return
Http
.
getInstance
().
get
(
`/salesliteratures/
${
context
.
salesliterature
}
/competitorsalesliteratures/fetchdefault`
,
tempData
,
isloading
);
}
let
tempData
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
data
));
return
Http
.
getInstance
().
get
(
`/competitorsalesliteratures/fetchdefault`
,
tempData
,
isloading
);
}
}
\ No newline at end of file
app_CRM/src/service/competitor-sales-literature/competitor-sales-literature-service.ts
0 → 100644
浏览文件 @
60d9e01e
import
{
Http
,
Util
}
from
'@/utils'
;
import
CompetitorSalesLiteratureServiceBase
from
'./competitor-sales-literature-service-base'
;
/**
* 竞争对手宣传资料服务对象
*
* @export
* @class CompetitorSalesLiteratureService
* @extends {CompetitorSalesLiteratureServiceBase}
*/
export
default
class
CompetitorSalesLiteratureService
extends
CompetitorSalesLiteratureServiceBase
{
/**
* Creates an instance of CompetitorSalesLiteratureService.
*
* @param {*} [opts={}]
* @memberof CompetitorSalesLiteratureService
*/
constructor
(
opts
:
any
=
{})
{
super
(
opts
);
}
}
\ No newline at end of file
app_CRM/src/service/entity-service-register.ts
浏览文件 @
60d9e01e
...
...
@@ -71,6 +71,7 @@ export class EntityServiceRegister {
this
.
allEntityService
.
set
(
'campaignactivity'
,
()
=>
import
(
'@/service/campaign-activity/campaign-activity-service'
));
this
.
allEntityService
.
set
(
'listlead'
,
()
=>
import
(
'@/service/list-lead/list-lead-service'
));
this
.
allEntityService
.
set
(
'opportunitycompetitor'
,
()
=>
import
(
'@/service/opportunity-competitor/opportunity-competitor-service'
));
this
.
allEntityService
.
set
(
'competitorsalesliterature'
,
()
=>
import
(
'@/service/competitor-sales-literature/competitor-sales-literature-service'
));
this
.
allEntityService
.
set
(
'salesliteratureitem'
,
()
=>
import
(
'@/service/sales-literature-item/sales-literature-item-service'
));
this
.
allEntityService
.
set
(
'contact'
,
()
=>
import
(
'@/service/contact/contact-service'
));
this
.
allEntityService
.
set
(
'product'
,
()
=>
import
(
'@/service/product/product-service'
));
...
...
app_CRM/src/service/ibiz-list/ibiz-list-service-base.ts
浏览文件 @
60d9e01e
此差异已折叠。
点击以展开。
app_CRM/src/service/opportunity/opportunity-service-base.ts
浏览文件 @
60d9e01e
此差异已折叠。
点击以展开。
app_CRM/src/service/product-sales-literature/product-sales-literature-service-base.ts
浏览文件 @
60d9e01e
...
...
@@ -48,6 +48,9 @@ export default class ProductSalesLiteratureServiceBase extends EntityService {
* @memberof ProductSalesLiteratureServiceBase
*/
public
async
Select
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
context
.
productsalesliterature
){
return
Http
.
getInstance
().
get
(
`/salesliteratures/
${
context
.
salesliterature
}
/productsalesliteratures/
${
context
.
productsalesliterature
}
/select`
,
isloading
);
}
return
Http
.
getInstance
().
get
(
`/productsalesliteratures/
${
context
.
productsalesliterature
}
/select`
,
isloading
);
}
...
...
@@ -61,6 +64,9 @@ export default class ProductSalesLiteratureServiceBase extends EntityService {
* @memberof ProductSalesLiteratureServiceBase
*/
public
async
Remove
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
context
.
productsalesliterature
){
return
Http
.
getInstance
().
delete
(
`/salesliteratures/
${
context
.
salesliterature
}
/productsalesliteratures/
${
context
.
productsalesliterature
}
`
,
isloading
);
}
return
Http
.
getInstance
().
delete
(
`/productsalesliteratures/
${
context
.
productsalesliterature
}
`
,
isloading
);
}
...
...
@@ -74,6 +80,10 @@ export default class ProductSalesLiteratureServiceBase extends EntityService {
* @memberof ProductSalesLiteratureServiceBase
*/
public
async
Get
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
context
.
productsalesliterature
){
let
res
:
any
=
await
Http
.
getInstance
().
get
(
`/salesliteratures/
${
context
.
salesliterature
}
/productsalesliteratures/
${
context
.
productsalesliterature
}
`
,
isloading
);
return
res
;
}
let
res
:
any
=
await
Http
.
getInstance
().
get
(
`/productsalesliteratures/
${
context
.
productsalesliterature
}
`
,
isloading
);
return
res
;
}
...
...
@@ -88,6 +98,12 @@ export default class ProductSalesLiteratureServiceBase extends EntityService {
* @memberof ProductSalesLiteratureServiceBase
*/
public
async
Update
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
context
.
productsalesliterature
){
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
let
res
:
any
=
await
Http
.
getInstance
().
put
(
`/salesliteratures/
${
context
.
salesliterature
}
/productsalesliteratures/
${
context
.
productsalesliterature
}
`
,
data
,
isloading
);
return
res
;
}
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
let
res
:
any
=
await
Http
.
getInstance
().
put
(
`/productsalesliteratures/
${
context
.
productsalesliterature
}
`
,
data
,
isloading
);
...
...
@@ -104,6 +120,12 @@ export default class ProductSalesLiteratureServiceBase extends EntityService {
* @memberof ProductSalesLiteratureServiceBase
*/
public
async
CheckKey
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
context
.
productsalesliterature
){
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
let
res
:
any
=
await
Http
.
getInstance
().
post
(
`/salesliteratures/
${
context
.
salesliterature
}
/productsalesliteratures/
${
context
.
productsalesliterature
}
/checkkey`
,
data
,
isloading
);
return
res
;
}
return
Http
.
getInstance
().
post
(
`/productsalesliteratures/
${
context
.
productsalesliterature
}
/checkkey`
,
data
,
isloading
);
}
...
...
@@ -117,6 +139,11 @@ export default class ProductSalesLiteratureServiceBase extends EntityService {
* @memberof ProductSalesLiteratureServiceBase
*/
public
async
GetDraft
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
true
){
let
res
:
any
=
await
Http
.
getInstance
().
get
(
`/salesliteratures/
${
context
.
salesliterature
}
/productsalesliteratures/getdraft`
,
isloading
);
res
.
data
.
productsalesliterature
=
data
.
productsalesliterature
;
return
res
;
}
let
res
:
any
=
await
Http
.
getInstance
().
get
(
`/productsalesliteratures/getdraft`
,
isloading
);
res
.
data
.
productsalesliterature
=
data
.
productsalesliterature
;
return
res
;
...
...
@@ -132,6 +159,12 @@ export default class ProductSalesLiteratureServiceBase extends EntityService {
* @memberof ProductSalesLiteratureServiceBase
*/
public
async
Save
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
context
.
productsalesliterature
){
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
let
res
:
any
=
await
Http
.
getInstance
().
post
(
`/salesliteratures/
${
context
.
salesliterature
}
/productsalesliteratures/
${
context
.
productsalesliterature
}
/save`
,
data
,
isloading
);
return
res
;
}
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
let
res
:
any
=
await
Http
.
getInstance
().
post
(
`/productsalesliteratures/
${
context
.
productsalesliterature
}
/save`
,
data
,
isloading
);
...
...
@@ -148,6 +181,19 @@ export default class ProductSalesLiteratureServiceBase extends EntityService {
* @memberof ProductSalesLiteratureServiceBase
*/
public
async
Create
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
true
){
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
if
(
!
data
.
srffrontuf
||
data
.
srffrontuf
!==
"1"
){
data
[
this
.
APPDEKEY
]
=
null
;
}
if
(
data
.
srffrontuf
){
delete
data
.
srffrontuf
;
}
let
tempContext
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
context
));
let
res
:
any
=
await
Http
.
getInstance
().
post
(
`/salesliteratures/
${
context
.
salesliterature
}
/productsalesliteratures`
,
data
,
isloading
);
return
res
;
}
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
if
(
!
data
.
srffrontuf
||
data
.
srffrontuf
!==
"1"
){
...
...
@@ -171,6 +217,10 @@ export default class ProductSalesLiteratureServiceBase extends EntityService {
* @memberof ProductSalesLiteratureServiceBase
*/
public
async
FetchDefault
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
true
){
let
tempData
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
data
));
return
Http
.
getInstance
().
get
(
`/salesliteratures/
${
context
.
salesliterature
}
/productsalesliteratures/fetchdefault`
,
tempData
,
isloading
);
}
let
tempData
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
data
));
return
Http
.
getInstance
().
get
(
`/productsalesliteratures/fetchdefault`
,
tempData
,
isloading
);
}
...
...
app_CRM/src/service/sales-literature-item/sales-literature-item-service-base.ts
浏览文件 @
60d9e01e
...
...
@@ -48,6 +48,9 @@ export default class SalesLiteratureItemServiceBase extends EntityService {
* @memberof SalesLiteratureItemServiceBase
*/
public
async
Select
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
context
.
salesliteratureitem
){
return
Http
.
getInstance
().
get
(
`/salesliteratures/
${
context
.
salesliterature
}
/salesliteratureitems/
${
context
.
salesliteratureitem
}
/select`
,
isloading
);
}
return
Http
.
getInstance
().
get
(
`/salesliteratureitems/
${
context
.
salesliteratureitem
}
/select`
,
isloading
);
}
...
...
@@ -61,6 +64,12 @@ export default class SalesLiteratureItemServiceBase extends EntityService {
* @memberof SalesLiteratureItemServiceBase
*/
public
async
Save
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
context
.
salesliteratureitem
){
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
let
res
:
any
=
await
Http
.
getInstance
().
post
(
`/salesliteratures/
${
context
.
salesliterature
}
/salesliteratureitems/
${
context
.
salesliteratureitem
}
/save`
,
data
,
isloading
);
return
res
;
}
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
let
res
:
any
=
await
Http
.
getInstance
().
post
(
`/salesliteratureitems/
${
context
.
salesliteratureitem
}
/save`
,
data
,
isloading
);
...
...
@@ -77,6 +86,10 @@ export default class SalesLiteratureItemServiceBase extends EntityService {
* @memberof SalesLiteratureItemServiceBase
*/
public
async
Get
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
context
.
salesliteratureitem
){
let
res
:
any
=
await
Http
.
getInstance
().
get
(
`/salesliteratures/
${
context
.
salesliterature
}
/salesliteratureitems/
${
context
.
salesliteratureitem
}
`
,
isloading
);
return
res
;
}
let
res
:
any
=
await
Http
.
getInstance
().
get
(
`/salesliteratureitems/
${
context
.
salesliteratureitem
}
`
,
isloading
);
return
res
;
}
...
...
@@ -91,6 +104,11 @@ export default class SalesLiteratureItemServiceBase extends EntityService {
* @memberof SalesLiteratureItemServiceBase
*/
public
async
GetDraft
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
true
){
let
res
:
any
=
await
Http
.
getInstance
().
get
(
`/salesliteratures/
${
context
.
salesliterature
}
/salesliteratureitems/getdraft`
,
isloading
);
res
.
data
.
salesliteratureitem
=
data
.
salesliteratureitem
;
return
res
;
}
let
res
:
any
=
await
Http
.
getInstance
().
get
(
`/salesliteratureitems/getdraft`
,
isloading
);
res
.
data
.
salesliteratureitem
=
data
.
salesliteratureitem
;
return
res
;
...
...
@@ -106,6 +124,9 @@ export default class SalesLiteratureItemServiceBase extends EntityService {
* @memberof SalesLiteratureItemServiceBase
*/
public
async
Remove
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
context
.
salesliteratureitem
){
return
Http
.
getInstance
().
delete
(
`/salesliteratures/
${
context
.
salesliterature
}
/salesliteratureitems/
${
context
.
salesliteratureitem
}
`
,
isloading
);
}
return
Http
.
getInstance
().
delete
(
`/salesliteratureitems/
${
context
.
salesliteratureitem
}
`
,
isloading
);
}
...
...
@@ -119,6 +140,12 @@ export default class SalesLiteratureItemServiceBase extends EntityService {
* @memberof SalesLiteratureItemServiceBase
*/
public
async
Update
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
context
.
salesliteratureitem
){
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
let
res
:
any
=
await
Http
.
getInstance
().
put
(
`/salesliteratures/
${
context
.
salesliterature
}
/salesliteratureitems/
${
context
.
salesliteratureitem
}
`
,
data
,
isloading
);
return
res
;
}
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
let
res
:
any
=
await
Http
.
getInstance
().
put
(
`/salesliteratureitems/
${
context
.
salesliteratureitem
}
`
,
data
,
isloading
);
...
...
@@ -135,6 +162,12 @@ export default class SalesLiteratureItemServiceBase extends EntityService {
* @memberof SalesLiteratureItemServiceBase
*/
public
async
CheckKey
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
context
.
salesliteratureitem
){
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
let
res
:
any
=
await
Http
.
getInstance
().
post
(
`/salesliteratures/
${
context
.
salesliterature
}
/salesliteratureitems/
${
context
.
salesliteratureitem
}
/checkkey`
,
data
,
isloading
);
return
res
;
}
return
Http
.
getInstance
().
post
(
`/salesliteratureitems/
${
context
.
salesliteratureitem
}
/checkkey`
,
data
,
isloading
);
}
...
...
@@ -148,6 +181,19 @@ export default class SalesLiteratureItemServiceBase extends EntityService {
* @memberof SalesLiteratureItemServiceBase
*/
public
async
Create
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
true
){
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
if
(
!
data
.
srffrontuf
||
data
.
srffrontuf
!==
"1"
){
data
[
this
.
APPDEKEY
]
=
null
;
}
if
(
data
.
srffrontuf
){
delete
data
.
srffrontuf
;
}
let
tempContext
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
context
));
let
res
:
any
=
await
Http
.
getInstance
().
post
(
`/salesliteratures/
${
context
.
salesliterature
}
/salesliteratureitems`
,
data
,
isloading
);
return
res
;
}
let
masterData
:
any
=
{};
Object
.
assign
(
data
,
masterData
);
if
(
!
data
.
srffrontuf
||
data
.
srffrontuf
!==
"1"
){
...
...
@@ -171,6 +217,10 @@ export default class SalesLiteratureItemServiceBase extends EntityService {
* @memberof SalesLiteratureItemServiceBase
*/
public
async
FetchDefault
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
.
salesliterature
&&
true
){
let
tempData
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
data
));
return
Http
.
getInstance
().
get
(
`/salesliteratures/
${
context
.
salesliterature
}
/salesliteratureitems/fetchdefault`
,
tempData
,
isloading
);
}
let
tempData
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
data
));
return
Http
.
getInstance
().
get
(
`/salesliteratureitems/fetchdefault`
,
tempData
,
isloading
);
}
...
...
app_CRM/src/service/sales-literature/sales-literature-service-base.ts
浏览文件 @
60d9e01e
此差异已折叠。
点击以展开。
app_CRM/src/uiservice/competitor-sales-literature/competitor-sales-literature-ui-service-base.ts
0 → 100644
浏览文件 @
60d9e01e
import
{
Environment
}
from
'@/environments/environment'
;
import
{
UIActionTool
,
Util
}
from
'@/utils'
;
import
UIService
from
'../ui-service'
;
import
{
Subject
}
from
'rxjs'
;
import
CompetitorSalesLiteratureService
from
'@/service/competitor-sales-literature/competitor-sales-literature-service'
;
/**
* 竞争对手宣传资料UI服务对象基类
*
* @export
* @class CompetitorSalesLiteratureUIServiceBase
*/
export
default
class
CompetitorSalesLiteratureUIServiceBase
extends
UIService
{
/**
* 是否支持工作流
*
* @memberof CompetitorSalesLiteratureUIServiceBase
*/
public
isEnableWorkflow
:
boolean
=
false
;
/**
* 当前UI服务对应的数据服务对象
*
* @memberof CompetitorSalesLiteratureUIServiceBase
*/
public
dataService
:
CompetitorSalesLiteratureService
=
new
CompetitorSalesLiteratureService
();
/**
* 所有关联视图
*
* @memberof CompetitorSalesLiteratureUIServiceBase
*/
public
allViewMap
:
Map
<
string
,
Object
>
=
new
Map
();
/**
* 状态值
*
* @memberof CompetitorSalesLiteratureUIServiceBase
*/
public
stateValue
:
number
=
0
;
/**
* 状态属性
*
* @memberof CompetitorSalesLiteratureUIServiceBase
*/
public
stateField
:
string
=
""
;
/**
* 主状态属性集合
*
* @memberof CompetitorSalesLiteratureUIServiceBase
*/
public
mainStateFields
:
Array
<
any
>
=
[];
/**
* 主状态集合Map
*
* @memberof CompetitorSalesLiteratureUIServiceBase
*/
public
allDeMainStateMap
:
Map
<
string
,
string
>
=
new
Map
();
/**
* Creates an instance of CompetitorSalesLiteratureUIServiceBase.
*
* @param {*} [opts={}]
* @memberof CompetitorSalesLiteratureUIServiceBase
*/
constructor
(
opts
:
any
=
{})
{
super
(
opts
);
this
.
initViewMap
();
this
.
initDeMainStateMap
();
}
/**
* 初始化视图Map
*
* @memberof CompetitorSalesLiteratureUIServiceBase
*/
public
initViewMap
(){
}
/**
* 初始化主状态集合
*
* @memberof CompetitorSalesLiteratureUIServiceBase
*/
public
initDeMainStateMap
(){
}
/**
* 获取指定数据的重定向页面
*
* @param srfkey 数据主键
* @param isEnableWorkflow 重定向视图是否需要处理流程中的数据
* @memberof CompetitorSalesLiteratureUIServiceBase
*/
public
async
getRDAppView
(
srfkey
:
string
,
isEnableWorkflow
:
boolean
){
this
.
isEnableWorkflow
=
isEnableWorkflow
;
// 进行数据查询
let
result
:
any
=
await
this
.
dataService
.
Get
({
competitorsalesliterature
:
srfkey
});
const
curData
:
any
=
result
.
data
;
//判断当前数据模式,默认为true,todo
const
iRealDEModel
:
boolean
=
true
;
let
bDataInWF
:
boolean
=
false
;
let
bWFMode
:
any
=
false
;
// 计算数据模式
if
(
this
.
isEnableWorkflow
)
{
bDataInWF
=
await
this
.
dataService
.
testDataInWF
({
stateValue
:
this
.
stateValue
,
stateField
:
this
.
stateField
},
curData
);
if
(
bDataInWF
)
{
bDataInWF
=
true
;
bWFMode
=
await
this
.
dataService
.
testUserExistWorklist
(
null
,
curData
);
}
}
let
strPDTViewParam
:
string
=
await
this
.
getDESDDEViewPDTParam
(
curData
,
bDataInWF
,
bWFMode
);
//若不是当前数据模式,处理strPDTViewParam,todo
//查找视图
//返回视图
return
this
.
allViewMap
.
get
(
strPDTViewParam
);
}
/**
* 获取实际的数据类型
*
* @memberof CompetitorSalesLiteratureUIServiceBase
*/
public
getRealDEType
(
entity
:
any
){
}
/**
* 获取实体单数据实体视图预定义参数
*
* @param curData 当前数据
* @param bDataInWF 是否有数据在工作流中
* @param bWFMode 是否工作流模式
* @memberof CompetitorSalesLiteratureUIServiceBase
*/
public
async
getDESDDEViewPDTParam
(
curData
:
any
,
bDataInWF
:
boolean
,
bWFMode
:
boolean
){
let
strPDTParam
:
string
=
''
;
if
(
bDataInWF
)
{
// 判断数据是否在流程中
}
//多表单,todo
const
isEnableMultiForm
:
boolean
=
false
;
const
multiFormDEField
:
string
|
null
=
null
;
if
(
isEnableMultiForm
&&
multiFormDEField
)
{
const
objFormValue
:
string
=
curData
[
multiFormDEField
];
if
(
!
Environment
.
isAppMode
){
return
'MOBEDITVIEW'
+
objFormValue
;
}
return
'EDITVIEW'
+
objFormValue
;
}
if
(
!
Environment
.
isAppMode
){
if
(
this
.
getDEMainStateTag
(
curData
)){
return
`MOBEDITVIEW:MSTAG:
${
await
this
.
getDEMainStateTag
(
curData
)}
`
;
}
return
'MOBEDITVIEW:'
;
}
if
(
this
.
getDEMainStateTag
(
curData
)){
return
`EDITVIEW:MSTAG:
${
await
this
.
getDEMainStateTag
(
curData
)}
`
;
}
return
'EDITVIEW:'
;
}
/**
* 获取数据对象的主状态标识
*
* @param curData 当前数据
* @memberof CompetitorSalesLiteratureUIServiceBase
*/
public
async
getDEMainStateTag
(
curData
:
any
){
if
(
this
.
mainStateFields
.
length
===
0
)
return
null
;
this
.
mainStateFields
.
forEach
((
singleMainField
:
any
)
=>
{
if
(
!
(
singleMainField
in
curData
)){
console
.
error
(
`当前数据对象不包含属性singleMainField,可能会发生错误`
);
}
})
let
strTag
:
String
=
""
;
for
(
let
i
=
0
;
i
<=
1
;
i
++
)
{
let
strTag
:
string
=
(
curData
[
this
.
mainStateFields
[
0
]])?(
i
==
0
)
?
curData
[
this
.
mainStateFields
[
0
]]
:
""
:
""
;
if
(
this
.
mainStateFields
.
length
>=
2
)
{
for
(
let
j
=
0
;
j
<=
1
;
j
++
)
{
let
strTag2
:
string
=
(
curData
[
this
.
mainStateFields
[
1
]])?
`
${
strTag
}
__
${(
j
==
0
)
?
curData
[
this
.
mainStateFields
[
1
]]
:
""
}
`
:
strTag
;
if
(
this
.
mainStateFields
.
length
>=
3
)
{
for
(
let
k
=
0
;
k
<=
1
;
k
++
)
{
let
strTag3
:
string
=
(
curData
[
this
.
mainStateFields
[
2
]])?
`
${
strTag2
}
__
${(
k
==
0
)
?
curData
[
this
.
mainStateFields
[
2
]]
:
""
}
`
:
strTag2
;
// 判断是否存在
return
this
.
allDeMainStateMap
.
get
(
strTag3
);
}
}
else
{
return
this
.
allDeMainStateMap
.
get
(
strTag2
);
}
}
}
else
{
return
this
.
allDeMainStateMap
.
get
(
strTag
);
}
}
return
null
;
}
}
\ No newline at end of file
app_CRM/src/uiservice/competitor-sales-literature/competitor-sales-literature-ui-service.ts
0 → 100644
浏览文件 @
60d9e01e
import
CompetitorSalesLiteratureUIServiceBase
from
'./competitor-sales-literature-ui-service-base'
;
/**
* 竞争对手宣传资料UI服务对象
*
* @export
* @class CompetitorSalesLiteratureUIService
*/
export
default
class
CompetitorSalesLiteratureUIService
extends
CompetitorSalesLiteratureUIServiceBase
{
/**
* Creates an instance of CompetitorSalesLiteratureUIService.
*
* @param {*} [opts={}]
* @memberof CompetitorSalesLiteratureUIService
*/
constructor
(
opts
:
any
=
{})
{
super
(
opts
);
}
}
\ No newline at end of file
app_CRM/src/uiservice/ui-service-register.ts
浏览文件 @
60d9e01e
...
...
@@ -71,6 +71,7 @@ export class UIServiceRegister {
this
.
allUIService
.
set
(
'campaignactivity'
,
()
=>
import
(
'@/uiservice/campaign-activity/campaign-activity-ui-service'
));
this
.
allUIService
.
set
(
'listlead'
,
()
=>
import
(
'@/uiservice/list-lead/list-lead-ui-service'
));
this
.
allUIService
.
set
(
'opportunitycompetitor'
,
()
=>
import
(
'@/uiservice/opportunity-competitor/opportunity-competitor-ui-service'
));
this
.
allUIService
.
set
(
'competitorsalesliterature'
,
()
=>
import
(
'@/uiservice/competitor-sales-literature/competitor-sales-literature-ui-service'
));
this
.
allUIService
.
set
(
'salesliteratureitem'
,
()
=>
import
(
'@/uiservice/sales-literature-item/sales-literature-item-ui-service'
));
this
.
allUIService
.
set
(
'contact'
,
()
=>
import
(
'@/uiservice/contact/contact-ui-service'
));
this
.
allUIService
.
set
(
'product'
,
()
=>
import
(
'@/uiservice/product/product-ui-service'
));
...
...
app_CRM/src/widgets/app/centeral-portal-db-dashboard/centeral-portal-db-dashboard.html
浏览文件 @
60d9e01e
...
...
@@ -3,6 +3,33 @@
<app-build
@
handleClick=
"handleClick.apply(_self, arguments)"
></app-build>
</row>
<row
v-if=
"!isHasCustomized"
>
<i-col
:md=
"{ span: 24, offset: 0 }"
>
<card
class=
"portlet-card"
:bordered=
"false"
dis-hover
:padding=
"0"
>
<span>
<div
class=
'portlet-container db-container1 '
:style=
"{}"
>
<row>
<i-col
:md=
"{ span: 24, offset: 0 }"
>
<div
class=
"portlet-without-title"
>
<card
class=
"portlet-card"
:bordered=
"false"
dis-hover
:padding=
"0"
>
<span>
<view
_db_sysportlet1
:viewState=
"viewState"
:viewparams=
"viewparams"
:context=
"context"
:height=
"300"
name=
"db_sysportlet1"
ref=
'db_sysportlet1'
@
closeview=
"closeView($event)"
>
</view
_db_sysportlet1
>
</span>
</card>
</div>
</i-col>
</row>
</div>
</span>
</card>
</i-col>
</row>
<row
v-if=
"isHasCustomized"
style=
"width: 100%;min-height: calc(100% - 40px);"
>
<div
class=
"portlet-container"
style=
"position: relative;width:100%;"
>
...
...
app_CRM/src/widgets/app/centeral-portal-db-dashboard/centeral-portal-db-dashboard.vue
浏览文件 @
60d9e01e
...
...
@@ -3,6 +3,7 @@
import
{ Component } from 'vue-property-decorator';
import { VueLifeCycleProcessing } from '@/studio-core';
import { CenteralPortal_dbDashboardBase } from './centeral-portal-db-dashboard-base';
import view_db_sysportlet1 from '@widgets/opportunity/part-cht-001-portlet/part-cht-001-portlet.vue';
/**
...
...
@@ -14,6 +15,7 @@ import { CenteralPortal_dbDashboardBase } from './centeral-portal-db-dashboard-b
*/
@Component({
components: {
view_db_sysportlet1,
}
})
...
...
app_CRM/src/widgets/opportunity/chart-001-chart/chart-001-chart-base.tsx
0 → 100644
浏览文件 @
60d9e01e
此差异已折叠。
点击以展开。
app_CRM/src/widgets/opportunity/chart-001-chart/chart-001-chart-model.ts
0 → 100644
浏览文件 @
60d9e01e
/**
* CHART_001 部件模型
*
* @export
* @class CHART_001Model
*/
export
default
class
CHART_001Model
{
/**
* 获取数据项集合
*
* @returns {any[]}
* @memberof CHART_001Db_sysportlet1_chartMode
*/
public
getDataItems
():
any
[]
{
return
[
{
name
:
'size'
,
prop
:
'size'
},
{
name
:
'query'
,
prop
:
'query'
},
{
name
:
'page'
,
prop
:
'page'
},
{
name
:
'sort'
,
prop
:
'sort'
}
]
}
}
\ No newline at end of file
app_CRM/src/widgets/opportunity/chart-001-chart/chart-001-chart-service.ts
0 → 100644
浏览文件 @
60d9e01e
import
{
Http
,
Util
,
Errorlog
}
from
'@/utils'
;
import
ControlService
from
'@/widgets/control-service'
;
import
OpportunityService
from
'@/service/opportunity/opportunity-service'
;
import
CHART_001Model
from
'./chart-001-chart-model'
;
/**
* CHART_001 部件服务对象
*
* @export
* @class CHART_001Service
*/
export
default
class
CHART_001Service
extends
ControlService
{
/**
* 商机服务对象
*
* @type {OpportunityService}
* @memberof CHART_001Service
*/
public
appEntityService
:
OpportunityService
=
new
OpportunityService
({
$store
:
this
.
getStore
()
});
/**
* 设置从数据模式
*
* @type {boolean}
* @memberof CHART_001Service
*/
public
setTempMode
(){
this
.
isTempMode
=
false
;
}
/**
* Creates an instance of CHART_001Service.
*
* @param {*} [opts={}]
* @memberof CHART_001Service
*/
constructor
(
opts
:
any
=
{})
{
super
(
opts
);
this
.
model
=
new
CHART_001Model
();
}
/**
* 查询数据
*
* @param {string} action
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof CHART_001Service
*/
@
Errorlog
public
search
(
action
:
string
,
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
const
{
data
:
Data
,
context
:
Context
}
=
this
.
handleRequestData
(
action
,
context
,
data
,
true
);
return
new
Promise
((
resolve
:
any
,
reject
:
any
)
=>
{
const
_appEntityService
:
any
=
this
.
appEntityService
;
let
result
:
Promise
<
any
>
;
if
(
_appEntityService
[
action
]
&&
_appEntityService
[
action
]
instanceof
Function
)
{
result
=
_appEntityService
[
action
](
Context
,
Data
,
isloading
);
}
else
{
result
=
_appEntityService
.
FetchDefault
(
Context
,
Data
,
isloading
);
}
result
.
then
((
response
)
=>
{
resolve
(
response
);
}).
catch
(
response
=>
{
reject
(
response
);
});
});
}
}
\ No newline at end of file
app_CRM/src/widgets/opportunity/chart-001-chart/chart-001-chart.html
0 → 100644
浏览文件 @
60d9e01e
<div
class=
"app-data-chart "
>
<div
v-if=
"isNoData"
class=
"chart-no-data"
><i
class=
"el-icon-data-analysis"
></i>
暂无数据
</div>
<div
v-else
class=
"app-charts"
:id=
"chartId"
style=
"height: 300px;padding: 6px 0;"
></div>
</div>
\ No newline at end of file
app_CRM/src/widgets/opportunity/chart-001-chart/chart-001-chart.less
0 → 100644
浏览文件 @
60d9e01e
.app-data-chart {
width: 100%;
height: 100%;
.chart-no-data{
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
i{
margin-right: 5px;
}
}
}
\ No newline at end of file
app_CRM/src/widgets/opportunity/chart-001-chart/chart-001-chart.vue
0 → 100644
浏览文件 @
60d9e01e
<
template
src=
"./chart-001-chart.html"
/>
<script
lang=
'tsx'
>
import
{ Component } from 'vue-property-decorator';
import { VueLifeCycleProcessing } from '@/studio-core';
import { CHART_001ChartBase } from './chart-001-chart-base';
/**
* db_sysportlet1_chart部件
*
* @export
* @class CHART_001Chart
* @extends {CHART_001ChartBase}
*/
@Component({
components: {
}
})
@VueLifeCycleProcessing()
export default class CHART_001Chart extends CHART_001ChartBase { }
</script>
app_CRM/src/widgets/opportunity/part-cht-001-portlet/part-cht-001-portlet-base.tsx
0 → 100644
浏览文件 @
60d9e01e
此差异已折叠。
点击以展开。
app_CRM/src/widgets/opportunity/part-cht-001-portlet/part-cht-001-portlet-model.ts
0 → 100644
浏览文件 @
60d9e01e
此差异已折叠。
点击以展开。
app_CRM/src/widgets/opportunity/part-cht-001-portlet/part-cht-001-portlet-service.ts
0 → 100644
浏览文件 @
60d9e01e
import
{
Http
}
from
'@/utils'
;
import
ControlService
from
'@/widgets/control-service'
;
/**
* PART_CHT_001 部件服务对象
*
* @export
* @class PART_CHT_001Service
*/
export
default
class
PART_CHT_001Service
extends
ControlService
{
}
app_CRM/src/widgets/opportunity/part-cht-001-portlet/part-cht-001-portlet.html
0 → 100644
浏览文件 @
60d9e01e
<div
class=
'portlet part-cht-001 '
:style=
"{'height': isAdaptiveSize ? 'calc(100% - 16px)' : getHeight,}"
>
<p
class=
'portlet-title'
>
<span>
商机
</span>
</p>
<div
class=
"portlet-with-title"
>
<!-- 测试 -->
<view
_db_sysportlet1_chart
:viewState=
"viewState"
:viewparams=
"viewparams"
:context=
"context"
fetchAction=
"FetchTop5"
:showBusyIndicator=
"true"
name=
"db_sysportlet1_chart"
ref=
'db_sysportlet1_chart'
@
closeview=
"closeView($event)"
>
</view
_db_sysportlet1_chart
>
</div>
</div>
app_CRM/src/widgets/opportunity/part-cht-001-portlet/part-cht-001-portlet.vue
0 → 100644
浏览文件 @
60d9e01e
<
template
src=
"./part-cht-001-portlet.html"
/>
<script
lang=
'tsx'
>
import
{ Component } from 'vue-property-decorator';
import { VueLifeCycleProcessing } from '@/studio-core';
import { PART_CHT_001PortletBase } from './part-cht-001-portlet-base';
import view_db_sysportlet1_chart from '@widgets/opportunity/chart-001-chart/chart-001-chart.vue';
/**
* db_sysportlet1部件
*
* @export
* @class PART_CHT_001Portlet
* @extends {PART_CHT_001PortletBase}
*/
@Component({
components: {
view_db_sysportlet1_chart,
}
})
@VueLifeCycleProcessing()
export default class PART_CHT_001Portlet extends PART_CHT_001PortletBase { }
</script>
businesscentral-app/businesscentral-app-crm/src/main/resources/application-crm-prod.yml
浏览文件 @
60d9e01e
...
...
@@ -135,6 +135,10 @@ zuul:
path
:
/opportunitycompetitors/**
serviceId
:
ibizbusinesscentral-centralapi
stripPrefix
:
false
competitorsalesliterature
:
path
:
/competitorsalesliteratures/**
serviceId
:
ibizbusinesscentral-centralapi
stripPrefix
:
false
salesliteratureitem
:
path
:
/salesliteratureitems/**
serviceId
:
ibizbusinesscentral-centralapi
...
...
businesscentral-core/src/main/java/cn/ibizlab/businesscentral/core/sales/mapper/OpportunityMapper.java
浏览文件 @
60d9e01e
...
...
@@ -19,6 +19,7 @@ import com.alibaba.fastjson.JSONObject;
public
interface
OpportunityMapper
extends
BaseMapper
<
Opportunity
>{
Page
<
Opportunity
>
searchTop5
(
IPage
page
,
@Param
(
"srf"
)
OpportunitySearchContext
context
,
@Param
(
"ew"
)
Wrapper
<
Opportunity
>
wrapper
)
;
Page
<
Opportunity
>
searchDefault
(
IPage
page
,
@Param
(
"srf"
)
OpportunitySearchContext
context
,
@Param
(
"ew"
)
Wrapper
<
Opportunity
>
wrapper
)
;
@Override
Opportunity
selectById
(
Serializable
id
);
...
...
businesscentral-core/src/main/java/cn/ibizlab/businesscentral/core/sales/service/IOpportunityService.java
浏览文件 @
60d9e01e
...
...
@@ -38,6 +38,7 @@ public interface IOpportunityService extends IService<Opportunity>{
boolean
checkKey
(
Opportunity
et
)
;
boolean
save
(
Opportunity
et
)
;
void
saveBatch
(
List
<
Opportunity
>
list
)
;
Page
<
Opportunity
>
searchTop5
(
OpportunitySearchContext
context
)
;
Page
<
Opportunity
>
searchDefault
(
OpportunitySearchContext
context
)
;
List
<
Opportunity
>
selectByParentaccountid
(
String
accountid
)
;
void
removeByParentaccountid
(
String
accountid
)
;
...
...
businesscentral-core/src/main/java/cn/ibizlab/businesscentral/core/sales/service/impl/OpportunityServiceImpl.java
浏览文件 @
60d9e01e
...
...
@@ -272,6 +272,15 @@ public class OpportunityServiceImpl extends ServiceImpl<OpportunityMapper, Oppor
}
/**
* 查询集合 Top5
*/
@Override
public
Page
<
Opportunity
>
searchTop5
(
OpportunitySearchContext
context
)
{
com
.
baomidou
.
mybatisplus
.
extension
.
plugins
.
pagination
.
Page
<
Opportunity
>
pages
=
baseMapper
.
searchTop5
(
context
.
getPages
(),
context
,
context
.
getSelectCond
());
return
new
PageImpl
<
Opportunity
>(
pages
.
getRecords
(),
context
.
getPageable
(),
pages
.
getTotal
());
}
/**
* 查询集合 DEFAULT
*/
...
...
businesscentral-core/src/main/resources/liquibase/h2_table.xml
浏览文件 @
60d9e01e
此差异已折叠。
点击以展开。
businesscentral-core/src/main/resources/mapper/sales/opportunity/OpportunityMapper.xml
浏览文件 @
60d9e01e
此差异已折叠。
点击以展开。
businesscentral-core/src/main/resources/permission/systemResource.json
浏览文件 @
60d9e01e
...
...
@@ -87,7 +87,7 @@
"dename"
:
"Opportunity"
,
"delogicname"
:
"商机"
,
"sysmoudle"
:{
"id"
:
"SALES"
,
"name"
:
"Sales"
},
"dedataset"
:[{
"id"
:
"Default"
,
"name"
:
"DEFAULT"
}],
"dedataset"
:[{
"id"
:
"
Top5"
,
"name"
:
"Top5"
},{
"id"
:
"
Default"
,
"name"
:
"DEFAULT"
}],
"deaction"
:[{
"id"
:
"Win"
,
"name"
:
"作为赢单"
,
"type"
:
"USERCUSTOM"
},{
"id"
:
"Lose"
,
"name"
:
"作为弃单"
,
"type"
:
"USERCUSTOM"
},{
"id"
:
"Get"
,
"name"
:
"Get"
,
"type"
:
"BUILTIN"
},{
"id"
:
"GetDraft"
,
"name"
:
"GetDraft"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Create"
,
"name"
:
"Create"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Remove"
,
"name"
:
"Remove"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Update"
,
"name"
:
"Update"
,
"type"
:
"BUILTIN"
},{
"id"
:
"CheckKey"
,
"name"
:
"CheckKey"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Save"
,
"name"
:
"Save"
,
"type"
:
"BUILTIN"
}],
"datascope"
:[{
"id"
:
"all"
,
"name"
:
"全部数据"
},
{
"id"
:
"createman"
,
"name"
:
"创建人"
}]
}
...
...
@@ -260,6 +260,14 @@
"datascope"
:[{
"id"
:
"all"
,
"name"
:
"全部数据"
},
{
"id"
:
"createman"
,
"name"
:
"创建人"
}]
}
,
{
"dename"
:
"CompetitorSalesLiterature"
,
"delogicname"
:
"竞争对手宣传资料"
,
"sysmoudle"
:{
"id"
:
"SALES"
,
"name"
:
"Sales"
},
"dedataset"
:[{
"id"
:
"Default"
,
"name"
:
"DEFAULT"
}],
"deaction"
:[{
"id"
:
"CheckKey"
,
"name"
:
"CheckKey"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Update"
,
"name"
:
"Update"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Get"
,
"name"
:
"Get"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Remove"
,
"name"
:
"Remove"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Create"
,
"name"
:
"Create"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Save"
,
"name"
:
"Save"
,
"type"
:
"BUILTIN"
},{
"id"
:
"GetDraft"
,
"name"
:
"GetDraft"
,
"type"
:
"BUILTIN"
}],
"datascope"
:[{
"id"
:
"all"
,
"name"
:
"全部数据"
},
{
"id"
:
"createman"
,
"name"
:
"创建人"
}]
}
,
{
"dename"
:
"SalesLiteratureItem"
,
"delogicname"
:
"销售附件"
,
"sysmoudle"
:{
"id"
:
"SALES"
,
"name"
:
"Sales"
},
...
...
businesscentral-provider/businesscentral-provider-centralapi/src/main/java/cn/ibizlab/businesscentral/centralapi/dto/CompetitorSalesLiteratureDTO.java
0 → 100644
浏览文件 @
60d9e01e
此差异已折叠。
点击以展开。
businesscentral-provider/businesscentral-provider-centralapi/src/main/java/cn/ibizlab/businesscentral/centralapi/mapping/CompetitorSalesLiteratureMapping.java
0 → 100644
浏览文件 @
60d9e01e
此差异已折叠。
点击以展开。
businesscentral-provider/businesscentral-provider-centralapi/src/main/java/cn/ibizlab/businesscentral/centralapi/rest/CompetitorSalesLiteratureResource.java
0 → 100644
浏览文件 @
60d9e01e
此差异已折叠。
点击以展开。
businesscentral-provider/businesscentral-provider-centralapi/src/main/java/cn/ibizlab/businesscentral/centralapi/rest/OpportunityResource.java
浏览文件 @
60d9e01e
此差异已折叠。
点击以展开。
businesscentral-provider/businesscentral-provider-centralapi/src/main/java/cn/ibizlab/businesscentral/centralapi/rest/ProductSalesLiteratureResource.java
浏览文件 @
60d9e01e
此差异已折叠。
点击以展开。
businesscentral-provider/businesscentral-provider-centralapi/src/main/java/cn/ibizlab/businesscentral/centralapi/rest/SalesLiteratureItemResource.java
浏览文件 @
60d9e01e
此差异已折叠。
点击以展开。
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录