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

lab_gzf 发布系统代码

上级 6d526df9
......@@ -509,6 +509,16 @@
"viewtag": "49e5e89fb51fa9929925b532841b2549",
"memo": ""
},
"opportunityconoppgridview": {
"title": "商机表格视图",
"caption": "商机信息",
"viewtype": "DEGRIDVIEW",
"viewmodule": "Sales",
"viewname": "OpportunityConOppGridView",
"viewfilename": "opportunity-con-opp-grid-view",
"viewtag": "50138c2b066081ec8b6fe67c88af5371",
"memo": "系统自动添加"
},
"campaignsummary_head": {
"title": "市场活动概览",
"caption": "市场活动概览",
......@@ -719,6 +729,16 @@
"viewtag": "6e866e05730d8c3e03f150a33225307d",
"memo": "系统自动添加"
},
"leadconleadgridview": {
"title": "潜在顾客信息",
"caption": "潜在顾客信息",
"viewtype": "DEGRIDVIEW",
"viewmodule": "Sales",
"viewname": "LeadConLeadGridView",
"viewfilename": "lead-con-lead-grid-view",
"viewtag": "6f35f461b53398775ff2f1a563776fa3",
"memo": "系统自动添加"
},
"accountinnerpickupgridview": {
"title": "客户选择表格视图",
"caption": "客户",
......@@ -1009,6 +1029,16 @@
"viewtag": "9bf80730e83a74615919a0f0907505d4",
"memo": ""
},
"opportunitylistexpview": {
"title": "商机列表导航视图",
"caption": "商机信息",
"viewtype": "DELISTEXPVIEW",
"viewmodule": "Sales",
"viewname": "OpportunityListExpView",
"viewfilename": "opportunity-list-exp-view",
"viewtag": "9f92696f8eeec188f5ea674b925df275",
"memo": ""
},
"ibizlistsummary": {
"title": "市场营销列表概览",
"caption": "市场营销列表概览",
......
......@@ -292,10 +292,12 @@ export default {
srfsourcekey: "",
fullname: "全名",
jobtitle: "职务",
customername: "客户",
emailaddress1: "电子邮件",
telephone1: "商务电话",
mobilephone: "移动电话",
fax: "传真",
customerid: "客户",
contactid: "联系人",
},
uiactions: {
......@@ -316,6 +318,7 @@ export default {
srfsourcekey: "",
fullname: "全名",
jobtitle: "职务",
customername: "客户",
emailaddress1: "电子邮件",
telephone1: "商务电话",
mobilephone: "移动电话",
......@@ -325,6 +328,7 @@ export default {
address1_city: "市/县",
address1_line1: "街道",
address1_postalcode: "邮政编码",
customerid: "客户",
contactid: "联系人",
},
uiactions: {
......@@ -344,6 +348,7 @@ export default {
srfsourcekey: "",
fullname: "全名",
jobtitle: "职务",
customername: "客户",
emailaddress1: "电子邮件",
telephone1: "商务电话",
mobilephone: "移动电话",
......
......@@ -291,10 +291,12 @@ export default {
srfsourcekey: '',
fullname: '全名',
jobtitle: '职务',
customername: '客户',
emailaddress1: '电子邮件',
telephone1: '商务电话',
mobilephone: '移动电话',
fax: '传真',
customerid: '客户',
contactid: '联系人',
},
uiactions: {
......@@ -315,6 +317,7 @@ export default {
srfsourcekey: '',
fullname: '全名',
jobtitle: '职务',
customername: '客户',
emailaddress1: '电子邮件',
telephone1: '商务电话',
mobilephone: '移动电话',
......@@ -324,6 +327,7 @@ export default {
address1_city: '市/县',
address1_line1: '街道',
address1_postalcode: '邮政编码',
customerid: '客户',
contactid: '联系人',
},
uiactions: {
......@@ -343,6 +347,7 @@ export default {
srfsourcekey: '',
fullname: '全名',
jobtitle: '职务',
customername: '客户',
emailaddress1: '电子邮件',
telephone1: '商务电话',
mobilephone: '移动电话',
......
......@@ -181,6 +181,10 @@ export default {
info_market: {
caption: "潜在顾客",
title: '潜在顾客编辑视图',
},
conleadgridview: {
caption: "潜在顾客信息",
title: '潜在顾客信息',
},
info_contact: {
caption: "潜在顾客",
......@@ -363,7 +367,7 @@ export default {
uiactions: {
},
},
gridviewtoolbar_toolbar: {
conleadgridviewtoolbar_toolbar: {
tbitem1_openquickcreateview: {
caption: "新建",
tip: "新建",
......@@ -467,6 +471,48 @@ export default {
tip: "关闭",
},
},
gridviewtoolbar_toolbar: {
tbitem1_openquickcreateview: {
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: "",
},
tbitem19: {
caption: "Filter",
tip: "Filter",
},
},
editviewtoolbar_toolbar: {
tbitem3: {
caption: "Save",
......
......@@ -180,6 +180,10 @@ export default {
info_market: {
caption: '潜在顾客',
title: '潜在顾客编辑视图',
},
conleadgridview: {
caption: '潜在顾客信息',
title: '潜在顾客信息',
},
info_contact: {
caption: '潜在顾客',
......@@ -362,7 +366,7 @@ export default {
uiactions: {
},
},
gridviewtoolbar_toolbar: {
conleadgridviewtoolbar_toolbar: {
tbitem1_openquickcreateview: {
caption: '新建',
tip: '新建',
......@@ -466,6 +470,48 @@ export default {
tip: '关闭',
},
},
gridviewtoolbar_toolbar: {
tbitem1_openquickcreateview: {
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: '',
},
tbitem19: {
caption: '过滤',
tip: '过滤',
},
},
editviewtoolbar_toolbar: {
tbitem3: {
caption: '保存',
......
......@@ -117,6 +117,10 @@ export default {
summary: {
caption: "商机概览",
title: '商机概览',
},
conoppgridview: {
caption: "商机信息",
title: '商机表格视图',
},
gridview: {
caption: "商机信息",
......@@ -145,6 +149,10 @@ export default {
oppprodashboardview: {
caption: "商机",
title: '商机数据看板视图',
},
listexpview: {
caption: "商机信息",
title: '商机列表导航视图',
},
quickcreate: {
caption: "快速新建",
......@@ -184,9 +192,9 @@ export default {
},
productinfo_form: {
details: {
group1: "商机基本信息",
group1: "价目表信息",
druipart1: "",
grouppanel1: "分组面板",
grouppanel1: "产品明细信息",
formpage1: "基本信息",
srfupdatedate: "更新时间",
srforikey: "",
......@@ -276,7 +284,7 @@ export default {
uiactions: {
},
},
gridviewtoolbar_toolbar: {
conoppgridviewtoolbar_toolbar: {
tbitem1_openquickcreateview: {
caption: "新建",
tip: "新建",
......@@ -360,6 +368,48 @@ export default {
tip: "关闭",
},
},
gridviewtoolbar_toolbar: {
tbitem1_openquickcreateview: {
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: "",
},
tbitem19: {
caption: "Filter",
tip: "Filter",
},
},
editviewtoolbar_toolbar: {
tbitem3: {
caption: "Save",
......
......@@ -116,6 +116,10 @@ export default {
summary: {
caption: '商机概览',
title: '商机概览',
},
conoppgridview: {
caption: '商机信息',
title: '商机表格视图',
},
gridview: {
caption: '商机信息',
......@@ -144,6 +148,10 @@ export default {
oppprodashboardview: {
caption: '商机',
title: '商机数据看板视图',
},
listexpview: {
caption: '商机信息',
title: '商机列表导航视图',
},
quickcreate: {
caption: '快速新建',
......@@ -183,9 +191,9 @@ export default {
},
productinfo_form: {
details: {
group1: '商机基本信息',
group1: '价目表信息',
druipart1: '',
grouppanel1: '分组面板',
grouppanel1: '产品明细信息',
formpage1: '基本信息',
srfupdatedate: '更新时间',
srforikey: '',
......@@ -275,7 +283,7 @@ export default {
uiactions: {
},
},
gridviewtoolbar_toolbar: {
conoppgridviewtoolbar_toolbar: {
tbitem1_openquickcreateview: {
caption: '新建',
tip: '新建',
......@@ -359,6 +367,48 @@ export default {
tip: '关闭',
},
},
gridviewtoolbar_toolbar: {
tbitem1_openquickcreateview: {
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: '',
},
tbitem19: {
caption: '过滤',
tip: '过滤',
},
},
editviewtoolbar_toolbar: {
tbitem3: {
caption: '保存',
......
......@@ -415,6 +415,14 @@ mock.onGet('./assets/json/view-config.json').reply((config: any) => {
"viewname": "LeadInfo_Market",
"viewtag": "49e5e89fb51fa9929925b532841b2549"
},
"opportunityconoppgridview": {
"title": "商机表格视图",
"caption": "商机信息",
"viewtype": "DEGRIDVIEW",
"viewmodule": "Sales",
"viewname": "OpportunityConOppGridView",
"viewtag": "50138c2b066081ec8b6fe67c88af5371"
},
"campaignsummary_head": {
"title": "市场活动概览",
"caption": "市场活动概览",
......@@ -583,6 +591,14 @@ mock.onGet('./assets/json/view-config.json').reply((config: any) => {
"viewname": "OpportunityPickupGridView",
"viewtag": "6e866e05730d8c3e03f150a33225307d"
},
"leadconleadgridview": {
"title": "潜在顾客信息",
"caption": "潜在顾客信息",
"viewtype": "DEGRIDVIEW",
"viewmodule": "Sales",
"viewname": "LeadConLeadGridView",
"viewtag": "6f35f461b53398775ff2f1a563776fa3"
},
"accountinnerpickupgridview": {
"title": "客户选择表格视图",
"caption": "客户",
......@@ -815,6 +831,14 @@ mock.onGet('./assets/json/view-config.json').reply((config: any) => {
"viewname": "CompetitorSummary",
"viewtag": "9bf80730e83a74615919a0f0907505d4"
},
"opportunitylistexpview": {
"title": "商机列表导航视图",
"caption": "商机信息",
"viewtype": "DELISTEXPVIEW",
"viewmodule": "Sales",
"viewname": "OpportunityListExpView",
"viewtag": "9f92696f8eeec188f5ea674b925df275"
},
"ibizlistsummary": {
"title": "市场营销列表概览",
"caption": "市场营销列表概览",
......
// 避免空文件,后台不让空文件过
.lead-con-lead-grid-view {
--lead-con-lead-grid-view: 0;
}
// 视图样式
// this is less
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import LeadConLeadGridViewBase from './lead-con-lead-grid-view-base.vue';
import view_grid from '@widgets/lead/main-grid/main-grid.vue';
import view_searchform from '@widgets/lead/default-searchform/default-searchform.vue';
@Component({
components: {
view_grid,
view_searchform,
},
beforeRouteEnter: (to: any, from: any, next: any) => {
next((vm: any) => {
vm.$store.commit('addCurPageViewtag', { route: to, viewtag: vm.viewtag });
});
},
})
export default class LeadConLeadGridView extends LeadConLeadGridViewBase {
}
</script>
\ No newline at end of file
<template>
<studio-view-style2 viewName="opportunityinfo_product" viewTitle="商机编辑视图" class='deeditview opportunity-info-product'>
<template slot='title'>
<span class='caption-info'>{{$t(model.srfTitle)}}</span>
</template>
<view_form
:viewState="viewState"
:viewparams="viewparams"
......
<template>
<studio-view-style2 viewName="opportunityinfo" viewTitle="商机信息" class='detabexpview opportunity-info'>
<template slot='title'>
<span class='caption-info'>{{$t(model.srfTitle)}}</span>
</template>
<template slot="toolbar">
<view-toolbar mode="STYLE2" :model="toolBarModels" @item-click="toolbar_click"/> </template>
<view_tabexppanel
......
<template>
<studio-view-style2 viewName="opportunitylistexpview" viewTitle="商机列表导航视图" class='delistexpview opportunity-list-exp-view'>
<template slot='title'>
<span class='caption-info'>{{$t(model.srfTitle)}}</span>
</template>
<view_listexpbar
:viewState="viewState"
:viewparams="viewparams"
:context="context"
:showBusyIndicator="true"
:viewUID="viewUID"
:newdata="newdata"
:opendata="opendata"
name="listexpbar"
ref='listexpbar'
@selectionchange="listexpbar_selectionchange($event)"
@activated="listexpbar_activated($event)"
@load="listexpbar_load($event)"
@closeview="closeView($event)">
</view_listexpbar>
</studio-view-style2>
</template>
<script lang='tsx'>
import { Component, Prop, Provide, Emit, Watch } from 'vue-property-decorator';
import { Subject } from 'rxjs';
import { UIActionTool, Util } from '@/utils';
import { VueLifeCycleProcessing, ListExpViewBase } from '@/studio-core';
import OpportunityService from '@/service/opportunity/opportunity-service';
import ListExpViewEngine from '@engine/view/list-exp-view-engine';
/**
* 商机列表导航视图视图基类
*
* @export
* @class OpportunityListExpViewBase
* @extends {ListExpViewBase}
*/
@Component({})
@VueLifeCycleProcessing()
export default class OpportunityListExpViewBase extends ListExpViewBase {
/**
* 实体服务对象
*
* @type {OpportunityService}
* @memberof OpportunityListExpViewBase
*/
protected appEntityService: OpportunityService = new OpportunityService;
/**
* 计数器服务对象集合
*
* @protected
* @type {Array<*>}
* @memberof OpportunityListExpViewBase
*/
protected counterServiceArray: Array<any> = [];
/**
* 自定义视图导航上下文集合
*
* @protected
* @type {*}
* @memberof OpportunityListExpViewBase
*/
protected customViewNavContexts: any = {
};
/**
* 自定义视图导航参数集合
*
* @protected
* @type {*}
* @memberof OpportunityListExpViewBase
*/
protected customViewParams: any = {
};
/**
* 视图模型数据
*
* @protected
* @type {*}
* @memberof OpportunityListExpViewBase
*/
protected model: any = {
srfCaption: 'entities.opportunity.views.listexpview.caption',
srfTitle: 'entities.opportunity.views.listexpview.title',
srfSubTitle: 'entities.opportunity.views.listexpview.subtitle',
dataInfo: ''
}
/**
* 容器模型
*
* @protected
* @type {*}
* @memberof OpportunityListExpViewBase
*/
protected containerModel: any = {
view_listexpbar: { name: 'listexpbar', type: 'LISTEXPBAR' },
};
/**
* 视图引擎
*
* @public
* @type {Engine}
* @memberof OpportunityListExpViewBase
*/
public engine: ListExpViewEngine = new ListExpViewEngine();
/**
* 引擎初始化
*
* @public
* @memberof OpportunityListExpViewBase
*/
public engineInit(): void {
this.engine.init({
view: this,
listexpbar: this.$refs.listexpbar,
keyPSDEField: 'opportunity',
majorPSDEField: 'opportunityname',
isLoadDefault: true,
});
}
/**
* listexpbar 部件 selectionchange 事件
*
* @param {*} [args={}]
* @param {*} $event
* @memberof OpportunityListExpViewBase
*/
public listexpbar_selectionchange($event: any, $event2?: any): void {
this.engine.onCtrlEvent('listexpbar', 'selectionchange', $event);
}
/**
* listexpbar 部件 activated 事件
*
* @param {*} [args={}]
* @param {*} $event
* @memberof OpportunityListExpViewBase
*/
public listexpbar_activated($event: any, $event2?: any): void {
this.engine.onCtrlEvent('listexpbar', 'activated', $event);
}
/**
* listexpbar 部件 load 事件
*
* @param {*} [args={}]
* @param {*} $event
* @memberof OpportunityListExpViewBase
*/
public listexpbar_load($event: any, $event2?: any): void {
this.engine.onCtrlEvent('listexpbar', 'load', $event);
}
/**
* 打开新建数据视图
*
* @param {any[]} args
* @param {*} [params]
* @param {*} [fullargs]
* @param {*} [$event]
* @param {*} [xData]
* @memberof OpportunityListExpView
*/
public newdata(args: any[],fullargs?:any[], params?: any, $event?: any, xData?: any) {
let localContext:any = null;
let localViewParam:any =null;
this.$Notice.warning({ title: '错误', desc: '未指定关系视图' });
}
/**
* 打开编辑数据视图
*
* @param {any[]} args
* @param {*} [params]
* @param {*} [fullargs]
* @param {*} [$event]
* @param {*} [xData]
* @memberof OpportunityListExpView
*/
public opendata(args: any[],fullargs?:any[],params?: any, $event?: any, xData?: any) {
let localContext:any = null;
let localViewParam:any =null;
this.$Notice.warning({ title: '错误', desc: '未指定关系视图' });
}
}
</script>
<style lang='less'>
@import './opportunity-list-exp-view.less';
</style>
\ No newline at end of file
// 避免空文件,后台不让空文件过
.opportunity-list-exp-view {
--opportunity-list-exp-view: 0;
}
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import OpportunityListExpViewBase from './opportunity-list-exp-view-base.vue';
import view_listexpbar from '@widgets/opportunity/list-exp-viewlistexpbar-listexpbar/list-exp-viewlistexpbar-listexpbar.vue';
@Component({
components: {
view_listexpbar,
},
beforeRouteEnter: (to: any, from: any, next: any) => {
next((vm: any) => {
vm.$store.commit('addCurPageViewtag', { route: to, viewtag: vm.viewtag });
});
},
})
export default class OpportunityListExpView extends OpportunityListExpViewBase {
}
</script>
\ No newline at end of file
<template>
<studio-view-style2 viewName="opportunityproductopp_oppprogridview" viewTitle="商机产品表格视图" class='degridview opportunity-product-opp-opp-pro-grid-view'>
<template slot='title'>
<span class='caption-info'>{{$t(model.srfTitle)}}</span>
</template>
<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"/> </template>
......
......@@ -17,9 +17,9 @@ export const PageComponents = {
Vue.component('opportunity-competitor-opp-comp-grid-view', () => import('@pages/sales/opportunity-competitor-opp-comp-grid-view/opportunity-competitor-opp-comp-grid-view.vue'));
Vue.component('contact-info-person', () => import('@pages/base/contact-info-person/contact-info-person.vue'));
Vue.component('campaign-info-schedule', () => import('@pages/marketing/campaign-info-schedule/campaign-info-schedule.vue'));
Vue.component('opportunity-grid-view', () => import('@pages/sales/opportunity-grid-view/opportunity-grid-view.vue'));
Vue.component('letter-edit-view', () => import('@pages/base/letter-edit-view/letter-edit-view.vue'));
Vue.component('lead-con-lead-grid-view', () => import('@pages/sales/lead-con-lead-grid-view/lead-con-lead-grid-view.vue'));
Vue.component('goal-edit-view', () => import('@pages/sales/goal-edit-view/goal-edit-view.vue'));
Vue.component('letter-edit-view', () => import('@pages/base/letter-edit-view/letter-edit-view.vue'));
Vue.component('transaction-currency-pickup-view', () => import('@pages/base/transaction-currency-pickup-view/transaction-currency-pickup-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'));
......@@ -73,8 +73,8 @@ export const PageComponents = {
Vue.component('quote-grid-view', () => import('@pages/sales/quote-grid-view/quote-grid-view.vue'));
Vue.component('invoice-edit-view', () => import('@pages/finance/invoice-edit-view/invoice-edit-view.vue'));
Vue.component('quote-option-view', () => import('@pages/sales/quote-option-view/quote-option-view.vue'));
Vue.component('campaign-edit-view', () => import('@pages/marketing/campaign-edit-view/campaign-edit-view.vue'));
Vue.component('opportunity-summary', () => import('@pages/sales/opportunity-summary/opportunity-summary.vue'));
Vue.component('campaign-edit-view', () => import('@pages/marketing/campaign-edit-view/campaign-edit-view.vue'));
Vue.component('list-contact-inner', () => import('@pages/marketing/list-contact-inner/list-contact-inner.vue'));
Vue.component('campaign-info-campagin', () => import('@pages/marketing/campaign-info-campagin/campaign-info-campagin.vue'));
Vue.component('appointment-edit-view', () => import('@pages/base/appointment-edit-view/appointment-edit-view.vue'));
......@@ -83,9 +83,9 @@ export const PageComponents = {
Vue.component('contact-pickup-grid-view', () => import('@pages/base/contact-pickup-grid-view/contact-pickup-grid-view.vue'));
Vue.component('list-account-edit-view', () => import('@pages/marketing/list-account-edit-view/list-account-edit-view.vue'));
Vue.component('opportunity-info', () => import('@pages/sales/opportunity-info/opportunity-info.vue'));
Vue.component('transaction-currency-pickup-grid-view', () => import('@pages/base/transaction-currency-pickup-grid-view/transaction-currency-pickup-grid-view.vue'));
Vue.component('service-appointment-edit-view', () => import('@pages/service/service-appointment-edit-view/service-appointment-edit-view.vue'));
Vue.component('contact-grid-view', () => import('@pages/base/contact-grid-view/contact-grid-view.vue'));
Vue.component('transaction-currency-pickup-grid-view', () => import('@pages/base/transaction-currency-pickup-grid-view/transaction-currency-pickup-grid-view.vue'));
Vue.component('activity-pointer-grid-view', () => import('@pages/base/activity-pointer-grid-view/activity-pointer-grid-view.vue'));
Vue.component('campaign-activity-by-parent-key', () => import('@pages/marketing/campaign-activity-by-parent-key/campaign-activity-by-parent-key.vue'));
Vue.component('account-pickup-view', () => import('@pages/base/account-pickup-view/account-pickup-view.vue'));
......@@ -93,9 +93,11 @@ export const PageComponents = {
Vue.component('quote-opp-qua-grid-view', () => import('@pages/sales/quote-opp-qua-grid-view/quote-opp-qua-grid-view.vue'));
Vue.component('contact-by-account', () => import('@pages/base/contact-by-account/contact-by-account.vue'));
Vue.component('opportunity-opp-pro-dashboard-view', () => import('@pages/sales/opportunity-opp-pro-dashboard-view/opportunity-opp-pro-dashboard-view.vue'));
Vue.component('opportunity-list-exp-view', () => import('@pages/sales/opportunity-list-exp-view/opportunity-list-exp-view.vue'));
Vue.component('sales-literature-edit-view', () => import('@pages/sales/sales-literature-edit-view/sales-literature-edit-view.vue'));
Vue.component('ibiz-list-summary', () => import('@pages/marketing/ibiz-list-summary/ibiz-list-summary.vue'));
Vue.component('lead-dashboard-view', () => import('@pages/sales/lead-dashboard-view/lead-dashboard-view.vue'));
Vue.component('opportunity-con-opp-grid-view', () => import('@pages/sales/opportunity-con-opp-grid-view/opportunity-con-opp-grid-view.vue'));
Vue.component('list-account-quick-create-by-list', () => import('@pages/marketing/list-account-quick-create-by-list/list-account-quick-create-by-list.vue'));
Vue.component('campaign-list-edit-view', () => import('@pages/marketing/campaign-list-edit-view/campaign-list-edit-view.vue'));
Vue.component('competitor-info', () => import('@pages/sales/competitor-info/competitor-info.vue'));
......
......@@ -10,6 +10,7 @@ export const viewstate: any = {
viewaction: '',
viewdatachange: false,
refviews: [
'29bfcd628ab25e297248ff0524d12908',
],
},
{
......@@ -558,17 +559,6 @@ export const viewstate: any = {
'c420212fae385872d6ae89e3d237350a',
],
},
{
viewtag: '5f8f689d5dccc3db6d2b74a24a8b24ef',
viewmodule: 'Sales',
viewname: 'OpportunityGridView',
viewaction: '',
viewdatachange: false,
refviews: [
'8bfcd7acdd1f36afc1714f1071671f2c',
'a243cd62accb02ceba4fb128703128f0',
],
},
{
viewtag: '615ceb2945e3cfe7404850aeadae188d',
viewmodule: 'Base',
......@@ -701,6 +691,17 @@ export const viewstate: any = {
refviews: [
],
},
{
viewtag: '6f35f461b53398775ff2f1a563776fa3',
viewmodule: 'Sales',
viewname: 'LeadConLeadGridView',
viewaction: '',
viewdatachange: false,
refviews: [
'35728a12ceecb647982051842853547c',
'4745ca10fe4421ea043cb9ace1840224',
],
},
{
viewtag: '7217511947b8833ba5683e54c06b0271',
viewmodule: 'Base',
......@@ -812,8 +813,8 @@ export const viewstate: any = {
'07c5035fbb847e889f3dbb9657723f30',
'24a93674ec4c976c08902a3e95421ca6',
'6978259896338a7ace85a9fbc5d70395',
'9f92696f8eeec188f5ea674b925df275',
'b38bc0256ecd5be1a58a3c2210a98d05',
'5f8f689d5dccc3db6d2b74a24a8b24ef',
'dfc0051ae4813115e03f3d095f8cd7d3',
'631a4276161c551802f3aaf4bd7e607c',
'15d12c1173fcb6e742b6a6d92cbc53ed',
......@@ -952,6 +953,15 @@ export const viewstate: any = {
'a5213905238dbc5d8e1a505029105cc9',
],
},
{
viewtag: '9f92696f8eeec188f5ea674b925df275',
viewmodule: 'Sales',
viewname: 'OpportunityListExpView',
viewaction: '',
viewdatachange: false,
refviews: [
],
},
{
viewtag: 'a0baf844a4d48914ee2623448b1a73fb',
viewmodule: 'Marketing',
......@@ -1321,6 +1331,7 @@ export const viewstate: any = {
viewaction: '',
viewdatachange: false,
refviews: [
'29bfcd628ab25e297248ff0524d12908',
],
},
{
......@@ -1385,9 +1396,9 @@ export const viewstate: any = {
viewaction: '',
viewdatachange: false,
refviews: [
'15d12c1173fcb6e742b6a6d92cbc53ed',
'5f8f689d5dccc3db6d2b74a24a8b24ef',
'6f35f461b53398775ff2f1a563776fa3',
'bae77557d2f7a7852b634dc5d5a93435',
'50138c2b066081ec8b6fe67c88af5371',
'6168a7e787ead13b1e0f9a55007bc68c',
],
},
......
......@@ -85,6 +85,7 @@ export default class LeadUIServiceBase extends UIService {
this.allViewMap.set(':',{viewname:'info',srfappde:'leads'});
this.allViewMap.set(':',{viewname:'quickcreate',srfappde:'leads'});
this.allViewMap.set(':',{viewname:'info_market',srfappde:'leads'});
this.allViewMap.set(':',{viewname:'conleadgridview',srfappde:'leads'});
this.allViewMap.set(':',{viewname:'info_contact',srfappde:'leads'});
this.allViewMap.set(':',{viewname:'pickupgridview',srfappde:'leads'});
this.allViewMap.set(':',{viewname:'info_company',srfappde:'leads'});
......
......@@ -80,6 +80,7 @@ export default class OpportunityUIServiceBase extends UIService {
*/
public initViewMap(){
this.allViewMap.set(':',{viewname:'summary',srfappde:'opportunities'});
this.allViewMap.set(':',{viewname:'conoppgridview',srfappde:'opportunities'});
this.allViewMap.set('MDATAVIEW:',{viewname:'gridview',srfappde:'opportunities'});
this.allViewMap.set(':',{viewname:'info_abstract',srfappde:'opportunities'});
this.allViewMap.set('PICKUPVIEW:',{viewname:'pickupview',srfappde:'opportunities'});
......@@ -87,6 +88,7 @@ export default class OpportunityUIServiceBase extends UIService {
this.allViewMap.set('EDITVIEW:',{viewname:'editview',srfappde:'opportunities'});
this.allViewMap.set(':',{viewname:'info',srfappde:'opportunities'});
this.allViewMap.set(':',{viewname:'oppprodashboardview',srfappde:'opportunities'});
this.allViewMap.set(':',{viewname:'listexpview',srfappde:'opportunities'});
this.allViewMap.set(':',{viewname:'quickcreate',srfappde:'opportunities'});
this.allViewMap.set(':',{viewname:'info_product',srfappde:'opportunities'});
}
......
......@@ -265,7 +265,7 @@ export default class CentralBase extends Vue {
const deResParameters: any[] = [];
const parameters: any[] = [
{ pathName: 'opportunities', parameterName: 'opportunity' },
{ pathName: 'gridview', parameterName: 'gridview' },
{ pathName: 'listexpview', parameterName: 'listexpview' },
];
const path: string = this.$viewTool.buildUpRoutePath(this.$route, {}, deResParameters, parameters, [], viewparam);
this.$router.push(path);
......
......@@ -349,7 +349,7 @@ export default class CentralModel {
textcls: '',
appfunctag: 'Auto10',
appfuncyype: 'APPVIEW',
viewname: 'opportunity-grid-view',
viewname: 'opportunity-list-exp-view',
resourcetag: '',
}
,
......@@ -901,12 +901,12 @@ export default class CentralModel {
appfunctag: 'Auto10',
appfuncyype: 'APPVIEW',
openmode: '',
codename: 'opportunitygridview',
codename: 'opportunitylistexpview',
deResParameters: [],
routepath: '/central/:central?/opportunities/:opportunity?/gridview/:gridview?',
routepath: '/central/:central?/opportunities/:opportunity?/listexpview/:listexpview?',
parameters: [
{ pathName: 'opportunities', parameterName: 'opportunity' },
{ pathName: 'gridview', parameterName: 'gridview' },
{ pathName: 'listexpview', parameterName: 'listexpview' },
],
},
{
......
......@@ -17,6 +17,33 @@
<input-box v-model="data.jobtitle" @enter="onEnter($event)" unit="" :disabled="detailsModel.jobtitle.disabled" type='text' style=""></input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.customername.visible" :style="{}" :lg="{ span: 24, offset: 0 }" :xl="{ span: 24, offset: 0 }">
<app-form-item name='customername' :itemRules="this.rules.customername" class='' :caption="$t('entities.contact.abstractedit_form.details.customername')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.customername.error" :isEmptyCaption="false" labelPos="LEFT">
<app-picker
:formState="formState"
:data="data"
:context="context"
:viewparams="viewparams"
:localContext ='{ }'
:localParam ='{ }'
:disabled="detailsModel.customername.disabled"
name='customername'
deMajorField='accountname'
deKeyField='account'
:service="service"
:acParams="{ serviceName: 'AccountService', interfaceName: 'FetchDefault'}"
valueitem='customerid'
:value="data.customername"
editortype=""
:pickupView="{ viewname: 'account-pickup-view', title: $t('entities.account.views.pickupview.title'), deResParameters: [], parameters: [{ pathName: 'accounts', parameterName: 'account' }, { pathName: 'pickupview', parameterName: 'pickupview' } ], placement:'' }"
style=""
@formitemvaluechange="onFormItemValueChange">
</app-picker>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.emailaddress1.visible" :style="{}" :lg="{ span: 24, offset: 0 }" :xl="{ span: 24, offset: 0 }">
<app-form-item name='emailaddress1' :itemRules="this.rules.emailaddress1" class='' :caption="$t('entities.contact.abstractedit_form.details.emailaddress1')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.emailaddress1.error" :isEmptyCaption="false" labelPos="LEFT">
......@@ -355,10 +382,12 @@ export default class AbstractEditBase extends Vue implements ControlInterface {
srfsourcekey: null,
fullname: null,
jobtitle: null,
customername: null,
emailaddress1: null,
telephone1: null,
mobilephone: null,
fax: null,
customerid: null,
contactid: null,
contact:null,
};
......@@ -462,6 +491,12 @@ export default class AbstractEditBase extends Vue implements ControlInterface {
{ required: false, type: 'string', message: '职务 值不能为空', trigger: 'change' },
{ required: false, type: 'string', message: '职务 值不能为空', trigger: 'blur' },
],
customername: [
{ type: 'string', message: '客户 值必须为字符串类型', trigger: 'change' },
{ type: 'string', message: '客户 值必须为字符串类型', trigger: 'blur' },
{ required: false, type: 'string', message: '客户 值不能为空', trigger: 'change' },
{ required: false, type: 'string', message: '客户 值不能为空', trigger: 'blur' },
],
emailaddress1: [
{ type: 'string', message: '电子邮件 值必须为字符串类型', trigger: 'change' },
{ type: 'string', message: '电子邮件 值必须为字符串类型', trigger: 'blur' },
......@@ -486,6 +521,12 @@ export default class AbstractEditBase extends Vue implements ControlInterface {
{ required: false, type: 'string', message: '传真 值不能为空', trigger: 'change' },
{ required: false, type: 'string', message: '传真 值不能为空', trigger: 'blur' },
],
customerid: [
{ type: 'string', message: '客户 值必须为字符串类型', trigger: 'change' },
{ type: 'string', message: '客户 值必须为字符串类型', trigger: 'blur' },
{ required: false, type: 'string', message: '客户 值不能为空', trigger: 'change' },
{ required: false, type: 'string', message: '客户 值不能为空', trigger: 'blur' },
],
contactid: [
{ type: 'string', message: '联系人 值必须为字符串类型', trigger: 'change' },
{ type: 'string', message: '联系人 值必须为字符串类型', trigger: 'blur' },
......@@ -524,6 +565,8 @@ export default class AbstractEditBase extends Vue implements ControlInterface {
fullname: new FormItemModel({ caption: '全名', detailType: 'FORMITEM', name: 'fullname', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 3 })
,
jobtitle: new FormItemModel({ caption: '职务', detailType: 'FORMITEM', name: 'jobtitle', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 3 })
,
customername: new FormItemModel({ caption: '客户', detailType: 'FORMITEM', name: 'customername', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 3 })
,
emailaddress1: new FormItemModel({ caption: '电子邮件', detailType: 'FORMITEM', name: 'emailaddress1', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 3 })
,
......@@ -532,6 +575,8 @@ export default class AbstractEditBase extends Vue implements ControlInterface {
mobilephone: new FormItemModel({ caption: '移动电话', detailType: 'FORMITEM', name: 'mobilephone', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 3 })
,
fax: new FormItemModel({ caption: '传真', detailType: 'FORMITEM', name: 'fax', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 3 })
,
customerid: new FormItemModel({ caption: '客户', detailType: 'FORMITEM', name: 'customerid', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 3 })
,
contactid: new FormItemModel({ caption: '联系人', detailType: 'FORMITEM', name: 'contactid', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 1 })
,
......@@ -657,6 +702,18 @@ export default class AbstractEditBase extends Vue implements ControlInterface {
this.formDataChange({ name: 'jobtitle', newVal: newVal, oldVal: oldVal });
}
/**
* 监控表单属性 customername 值
*
* @param {*} newVal
* @param {*} oldVal
* @memberof AbstractEdit
*/
@Watch('data.customername')
onCustomernameChange(newVal: any, oldVal: any) {
this.formDataChange({ name: 'customername', newVal: newVal, oldVal: oldVal });
}
/**
* 监控表单属性 emailaddress1 值
*
......@@ -705,6 +762,18 @@ export default class AbstractEditBase extends Vue implements ControlInterface {
this.formDataChange({ name: 'fax', newVal: newVal, oldVal: oldVal });
}
/**
* 监控表单属性 customerid 值
*
* @param {*} newVal
* @param {*} oldVal
* @memberof AbstractEdit
*/
@Watch('data.customerid')
onCustomeridChange(newVal: any, oldVal: any) {
this.formDataChange({ name: 'customerid', newVal: newVal, oldVal: oldVal });
}
/**
* 监控表单属性 contactid 值
*
......@@ -770,6 +839,8 @@ export default class AbstractEditBase extends Vue implements ControlInterface {
}
/**
......
......@@ -65,6 +65,11 @@ export default class AbstractEditModel {
prop: 'jobtitle',
dataType: 'TEXT',
},
{
name: 'customername',
prop: 'cusomername',
dataType: 'PICKUPTEXT',
},
{
name: 'emailaddress1',
prop: 'emailaddress1',
......@@ -85,6 +90,11 @@ export default class AbstractEditModel {
prop: 'fax',
dataType: 'TEXT',
},
{
name: 'customerid',
prop: 'customerid',
dataType: 'PICKUP',
},
{
name: 'contactid',
prop: 'contactid',
......
......@@ -2,6 +2,7 @@ import { Http,Util,Errorlog } from '@/utils';
import ControlService from '@/widgets/control-service';
import ContactService from '@/service/contact/contact-service';
import AbstractEditModel from './abstract-edit-form-model';
import AccountService from '@/service/account/account-service';
/**
......@@ -41,6 +42,14 @@ export default class AbstractEditService extends ControlService {
this.model = new AbstractEditModel();
}
/**
* 客户服务对象
*
* @type {AccountService}
* @memberof AbstractEditService
*/
public accountService: AccountService = new AccountService();
/**
* 处理数据
*
......@@ -80,6 +89,9 @@ export default class AbstractEditService extends ControlService {
*/
@Errorlog
public getItems(serviceName: string, interfaceName: string, context: any = {}, data: any, isloading?: boolean): Promise<any[]> {
if (Object.is(serviceName, 'AccountService') && Object.is(interfaceName, 'FetchDefault')) {
return this.doItems(this.accountService.FetchDefault(JSON.parse(JSON.stringify(context)),data, isloading), 'accountid', 'account');
}
return Promise.reject([])
}
......
......@@ -19,6 +19,13 @@
<app-span name='jobtitle' :value="data.jobtitle" :data="data" :context="context" :viewparams="viewparams" :localContext ='{ }' :localParam ='{ }' style=""></app-span>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.customername.visible" :style="{}" :md="{ span: 12, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 6, offset: 0 }">
<app-form-item name='customername' :itemRules="this.rules.customername" class='' :caption="$t('entities.contact.abstractinfo_form.details.customername')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.customername.error" :isEmptyCaption="false" labelPos="LEFT">
<app-span name='customername' :value="data.customername" :data="data" :context="context" :viewparams="viewparams" :localContext ='{ }' :localParam ='{ }' style=""></app-span>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.emailaddress1.visible" :style="{}" :md="{ span: 12, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 6, offset: 0 }">
<app-form-item name='emailaddress1' :itemRules="this.rules.emailaddress1" class='' :caption="$t('entities.contact.abstractinfo_form.details.emailaddress1')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.emailaddress1.error" :isEmptyCaption="false" labelPos="LEFT">
......@@ -361,6 +368,7 @@ export default class AbstractInfoBase extends Vue implements ControlInterface {
srfsourcekey: null,
fullname: null,
jobtitle: null,
customername: null,
emailaddress1: null,
telephone1: null,
mobilephone: null,
......@@ -468,6 +476,12 @@ export default class AbstractInfoBase extends Vue implements ControlInterface {
{ required: false, type: 'string', message: '职务 值不能为空', trigger: 'change' },
{ required: false, type: 'string', message: '职务 值不能为空', trigger: 'blur' },
],
customername: [
{ type: 'string', message: '客户 值必须为字符串类型', trigger: 'change' },
{ type: 'string', message: '客户 值必须为字符串类型', trigger: 'blur' },
{ required: false, type: 'string', message: '客户 值不能为空', trigger: 'change' },
{ required: false, type: 'string', message: '客户 值不能为空', trigger: 'blur' },
],
emailaddress1: [
{ type: 'string', message: '电子邮件 值必须为字符串类型', trigger: 'change' },
{ type: 'string', message: '电子邮件 值必须为字符串类型', trigger: 'blur' },
......@@ -530,6 +544,8 @@ export default class AbstractInfoBase extends Vue implements ControlInterface {
fullname: new FormItemModel({ caption: '全名', detailType: 'FORMITEM', name: 'fullname', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 3 })
,
jobtitle: new FormItemModel({ caption: '职务', detailType: 'FORMITEM', name: 'jobtitle', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 3 })
,
customername: new FormItemModel({ caption: '客户', detailType: 'FORMITEM', name: 'customername', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 3 })
,
emailaddress1: new FormItemModel({ caption: '电子邮件', detailType: 'FORMITEM', name: 'emailaddress1', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 3 })
,
......@@ -663,6 +679,18 @@ export default class AbstractInfoBase extends Vue implements ControlInterface {
this.formDataChange({ name: 'jobtitle', newVal: newVal, oldVal: oldVal });
}
/**
* 监控表单属性 customername 值
*
* @param {*} newVal
* @param {*} oldVal
* @memberof AbstractInfo
*/
@Watch('data.customername')
onCustomernameChange(newVal: any, oldVal: any) {
this.formDataChange({ name: 'customername', newVal: newVal, oldVal: oldVal });
}
/**
* 监控表单属性 emailaddress1 值
*
......@@ -776,6 +804,7 @@ export default class AbstractInfoBase extends Vue implements ControlInterface {
}
/**
......
......@@ -65,6 +65,11 @@ export default class AbstractInfoModel {
prop: 'jobtitle',
dataType: 'TEXT',
},
{
name: 'customername',
prop: 'cusomername',
dataType: 'PICKUPTEXT',
},
{
name: 'emailaddress1',
prop: 'emailaddress1',
......
<template>
<div class='tabviewpanel' style="height:100%;" v-if = 'isActivied' >
<lead-grid-view
<lead-con-lead-grid-view
class='viewcontainer2'
:viewdata="viewdata"
:viewparam="viewparam"
@viewload="viewDatasChange($event)"
:viewDefaultUsage="false" >
</lead-grid-view>
</lead-con-lead-grid-view>
</div>
</template>
<script lang='tsx'>
......
<template>
<div class='tabviewpanel' style="height:100%;" v-if = 'isActivied' >
<opportunity-grid-view
<opportunity-con-opp-grid-view
class='viewcontainer2'
:viewdata="viewdata"
:viewparam="viewparam"
@viewload="viewDatasChange($event)"
:viewDefaultUsage="false" >
</opportunity-grid-view>
</opportunity-con-opp-grid-view>
</div>
</template>
<script lang='tsx'>
......
......@@ -17,6 +17,33 @@
<input-box v-model="data.jobtitle" @enter="onEnter($event)" unit="" :disabled="detailsModel.jobtitle.disabled" type='text' style=""></input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.customername.visible" :style="{}" :lg="{ span: 12, offset: 0 }" :xl="{ span: 12, offset: 0 }">
<app-form-item name='customername' :itemRules="this.rules.customername" class='' :caption="$t('entities.contact.quickcreate_form.details.customername')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.customername.error" :isEmptyCaption="false" labelPos="LEFT">
<app-picker
:formState="formState"
:data="data"
:context="context"
:viewparams="viewparams"
:localContext ='{ }'
:localParam ='{ }'
:disabled="detailsModel.customername.disabled"
name='customername'
deMajorField='accountname'
deKeyField='account'
:service="service"
:acParams="{ serviceName: 'AccountService', interfaceName: 'FetchDefault'}"
valueitem='customerid'
:value="data.customername"
editortype=""
:pickupView="{ viewname: 'account-pickup-view', title: $t('entities.account.views.pickupview.title'), deResParameters: [], parameters: [{ pathName: 'accounts', parameterName: 'account' }, { pathName: 'pickupview', parameterName: 'pickupview' } ], placement:'' }"
style=""
@formitemvaluechange="onFormItemValueChange">
</app-picker>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.emailaddress1.visible" :style="{}" :lg="{ span: 12, offset: 0 }" :xl="{ span: 12, offset: 0 }">
<app-form-item name='emailaddress1' :itemRules="this.rules.emailaddress1" class='' :caption="$t('entities.contact.quickcreate_form.details.emailaddress1')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.emailaddress1.error" :isEmptyCaption="false" labelPos="LEFT">
......@@ -393,6 +420,7 @@ export default class QuickCreateBase extends Vue implements ControlInterface {
srfsourcekey: null,
fullname: null,
jobtitle: null,
customername: null,
emailaddress1: null,
telephone1: null,
mobilephone: null,
......@@ -402,6 +430,7 @@ export default class QuickCreateBase extends Vue implements ControlInterface {
address1_city: null,
address1_line1: null,
address1_postalcode: null,
customerid: null,
contactid: null,
contact:null,
};
......@@ -505,6 +534,12 @@ export default class QuickCreateBase extends Vue implements ControlInterface {
{ required: false, type: 'string', message: '职务 值不能为空', trigger: 'change' },
{ required: false, type: 'string', message: '职务 值不能为空', trigger: 'blur' },
],
customername: [
{ type: 'string', message: '客户 值必须为字符串类型', trigger: 'change' },
{ type: 'string', message: '客户 值必须为字符串类型', trigger: 'blur' },
{ required: false, type: 'string', message: '客户 值不能为空', trigger: 'change' },
{ required: false, type: 'string', message: '客户 值不能为空', trigger: 'blur' },
],
emailaddress1: [
{ type: 'string', message: '电子邮件 值必须为字符串类型', trigger: 'change' },
{ type: 'string', message: '电子邮件 值必须为字符串类型', trigger: 'blur' },
......@@ -559,6 +594,12 @@ export default class QuickCreateBase extends Vue implements ControlInterface {
{ required: false, type: 'string', message: '邮政编码 值不能为空', trigger: 'change' },
{ required: false, type: 'string', message: '邮政编码 值不能为空', trigger: 'blur' },
],
customerid: [
{ type: 'string', message: '客户 值必须为字符串类型', trigger: 'change' },
{ type: 'string', message: '客户 值必须为字符串类型', trigger: 'blur' },
{ required: false, type: 'string', message: '客户 值不能为空', trigger: 'change' },
{ required: false, type: 'string', message: '客户 值不能为空', trigger: 'blur' },
],
contactid: [
{ type: 'string', message: '联系人 值必须为字符串类型', trigger: 'change' },
{ type: 'string', message: '联系人 值必须为字符串类型', trigger: 'blur' },
......@@ -599,6 +640,8 @@ export default class QuickCreateBase extends Vue implements ControlInterface {
fullname: new FormItemModel({ caption: '全名', detailType: 'FORMITEM', name: 'fullname', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 3 })
,
jobtitle: new FormItemModel({ caption: '职务', detailType: 'FORMITEM', name: 'jobtitle', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 3 })
,
customername: new FormItemModel({ caption: '客户', detailType: 'FORMITEM', name: 'customername', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 3 })
,
emailaddress1: new FormItemModel({ caption: '电子邮件', detailType: 'FORMITEM', name: 'emailaddress1', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 3 })
,
......@@ -617,6 +660,8 @@ export default class QuickCreateBase extends Vue implements ControlInterface {
address1_line1: new FormItemModel({ caption: '街道', detailType: 'FORMITEM', name: 'address1_line1', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 3 })
,
address1_postalcode: new FormItemModel({ caption: '邮政编码', detailType: 'FORMITEM', name: 'address1_postalcode', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 3 })
,
customerid: new FormItemModel({ caption: '客户', detailType: 'FORMITEM', name: 'customerid', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 3 })
,
contactid: new FormItemModel({ caption: '联系人', detailType: 'FORMITEM', name: 'contactid', visible: true, isShowCaption: true, form: this, disabled: false, enableCond: 1 })
,
......@@ -742,6 +787,18 @@ export default class QuickCreateBase extends Vue implements ControlInterface {
this.formDataChange({ name: 'jobtitle', newVal: newVal, oldVal: oldVal });
}
/**
* 监控表单属性 customername 值
*
* @param {*} newVal
* @param {*} oldVal
* @memberof QuickCreate
*/
@Watch('data.customername')
onCustomernameChange(newVal: any, oldVal: any) {
this.formDataChange({ name: 'customername', newVal: newVal, oldVal: oldVal });
}
/**
* 监控表单属性 emailaddress1 值
*
......@@ -850,6 +907,18 @@ export default class QuickCreateBase extends Vue implements ControlInterface {
this.formDataChange({ name: 'address1_postalcode', newVal: newVal, oldVal: oldVal });
}
/**
* 监控表单属性 customerid 值
*
* @param {*} newVal
* @param {*} oldVal
* @memberof QuickCreate
*/
@Watch('data.customerid')
onCustomeridChange(newVal: any, oldVal: any) {
this.formDataChange({ name: 'customerid', newVal: newVal, oldVal: oldVal });
}
/**
* 监控表单属性 contactid 值
*
......@@ -918,6 +987,8 @@ export default class QuickCreateBase extends Vue implements ControlInterface {
......
......@@ -65,6 +65,11 @@ export default class QuickCreateModel {
prop: 'jobtitle',
dataType: 'TEXT',
},
{
name: 'customername',
prop: 'cusomername',
dataType: 'PICKUPTEXT',
},
{
name: 'emailaddress1',
prop: 'emailaddress1',
......@@ -110,6 +115,11 @@ export default class QuickCreateModel {
prop: 'address1_postalcode',
dataType: 'TEXT',
},
{
name: 'customerid',
prop: 'customerid',
dataType: 'PICKUP',
},
{
name: 'contactid',
prop: 'contactid',
......
......@@ -2,6 +2,7 @@ import { Http,Util,Errorlog } from '@/utils';
import ControlService from '@/widgets/control-service';
import ContactService from '@/service/contact/contact-service';
import QuickCreateModel from './quick-create-form-model';
import AccountService from '@/service/account/account-service';
/**
......@@ -41,6 +42,14 @@ export default class QuickCreateService extends ControlService {
this.model = new QuickCreateModel();
}
/**
* 客户服务对象
*
* @type {AccountService}
* @memberof QuickCreateService
*/
public accountService: AccountService = new AccountService();
/**
* 处理数据
*
......@@ -80,6 +89,9 @@ export default class QuickCreateService extends ControlService {
*/
@Errorlog
public getItems(serviceName: string, interfaceName: string, context: any = {}, data: any, isloading?: boolean): Promise<any[]> {
if (Object.is(serviceName, 'AccountService') && Object.is(interfaceName, 'FetchDefault')) {
return this.doItems(this.accountService.FetchDefault(JSON.parse(JSON.stringify(context)),data, isloading), 'accountid', 'account');
}
return Promise.reject([])
}
......
/**
* ListExpViewlistexpbar 部件模型
*
* @export
* @class ListExpViewlistexpbarModel
*/
export default class ListExpViewlistexpbarModel {
/**
* 获取数据项集合
*
* @returns {any[]}
* @memberof ListExpViewlistexpbarListexpbarMode
*/
public getDataItems(): any[] {
return [
]
}
}
\ No newline at end of file
import { Http,Util,Errorlog } from '@/utils';
import ControlService from '@/widgets/control-service';
import OpportunityService from '@/service/opportunity/opportunity-service';
import ListExpViewlistexpbarModel from './list-exp-viewlistexpbar-listexpbar-model';
/**
* ListExpViewlistexpbar 部件服务对象
*
* @export
* @class ListExpViewlistexpbarService
*/
export default class ListExpViewlistexpbarService extends ControlService {
/**
* 商机服务对象
*
* @type {OpportunityService}
* @memberof ListExpViewlistexpbarService
*/
public appEntityService: OpportunityService = new OpportunityService({ $store: this.getStore() });
/**
* 设置从数据模式
*
* @type {boolean}
* @memberof ListExpViewlistexpbarService
*/
public setTempMode(){
this.isTempMode = false;
}
/**
* Creates an instance of ListExpViewlistexpbarService.
*
* @param {*} [opts={}]
* @memberof ListExpViewlistexpbarService
*/
constructor(opts: any = {}) {
super(opts);
this.model = new ListExpViewlistexpbarModel();
}
}
\ No newline at end of file
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import ListExpViewlistexpbarBase from './list-exp-viewlistexpbar-listexpbar-base.vue';
import view_listexpbar_list from '@widgets/opportunity/list-list/list-list.vue';
@Component({
components: {
view_listexpbar_list,
}
})
export default class ListExpViewlistexpbar extends ListExpViewlistexpbarBase {
}
</script>
\ No newline at end of file
/**
* List 部件模型
*
* @export
* @class ListModel
*/
export default class ListModel {
/**
* 获取数据项集合
*
* @returns {any[]}
* @memberof ListListexpbar_listMode
*/
public getDataItems(): any[] {
return [
{
name: 'parentcontactname',
},
{
name: 'parentaccountname',
},
{
name: 'opportunityname',
},
{
name:'size',
prop:'size'
},
{
name:'query',
prop:'query'
},
{
name:'sort',
prop:'sort'
},
{
name:'page',
prop:'page'
},
// 前端新增修改标识,新增为"0",修改为"1"或未设值
{
name: 'srffrontuf',
prop: 'srffrontuf',
dataType: 'TEXT',
},
]
}
}
\ No newline at end of file
import { Http,Util,Errorlog } from '@/utils';
import ControlService from '@/widgets/control-service';
import OpportunityService from '@/service/opportunity/opportunity-service';
import ListModel from './list-list-model';
/**
* List 部件服务对象
*
* @export
* @class ListService
*/
export default class ListService extends ControlService {
/**
* 商机服务对象
*
* @type {OpportunityService}
* @memberof ListService
*/
public appEntityService: OpportunityService = new OpportunityService({ $store: this.getStore() });
/**
* 设置从数据模式
*
* @type {boolean}
* @memberof ListService
*/
public setTempMode(){
this.isTempMode = false;
}
/**
* Creates an instance of ListService.
*
* @param {*} [opts={}]
* @memberof ListService
*/
constructor(opts: any = {}) {
super(opts);
this.model = new ListModel();
}
/**
* 查询数据
*
* @param {string} action
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof ListService
*/
@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(async (response) => {
await this.handleResponse(action, response);
resolve(response);
}).catch(response => {
reject(response);
});
});
}
/**
* 删除数据
*
* @param {string} action
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof ListService
*/
@Errorlog
public delete(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.remove(Context,Data , isloading);
}
result.then((response) => {
this.handleResponse(action, response);
resolve(response);
}).catch(response => {
reject(response);
});
});
}
}
\ No newline at end of file
.app-list {
--app-list: 0;
}
// this is less
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import ListBase from './list-list-base.vue';
import layout_listexpbar_list_itempanel from '@widgets/opportunity/panel-panel/panel-panel.vue';
@Component({
components: {
layout_listexpbar_list_itempanel,
}
})
export default class List extends ListBase {
}
</script>
\ No newline at end of file
/**
* Panel 部件模型
*
* @export
* @class PanelModel
*/
export default class PanelModel {
/**
* 获取数据项集合
*
* @returns {any[]}
* @memberof PanelModel
*/
public getDataItems(): any[] {
return [
{
name: 'opportunityname',
prop: 'opportunityname'
},
{
name: 'parentaccountname',
prop: 'parentaccountname'
},
{
name: 'parentcontactname',
prop: 'parentcontactname'
}
]
}
}
\ No newline at end of file
import { Http } from '@/utils';
import ControlService from '@/widgets/control-service';
/**
* Panel 部件服务对象
*
* @export
* @class PanelService
*/
export default class PanelService extends ControlService {
}
\ No newline at end of file
// this is less
.app-layoutpanel {
height: 100%;
> .app-layoutpanel-container {
height: 100%;
}
.item-field{
padding: 0 4px;
display: flex;
>.item-field-label{
padding: 0 8px;
}
}
}
\ No newline at end of file
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import PanelBase from './panel-panel-base.vue';
@Component({
components: {
}
})
export default class Panel extends PanelBase {
}
</script>
\ No newline at end of file
......@@ -4,7 +4,7 @@
<row >
<i-col v-show="detailsModel.group1.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-group layoutType="TABLE_24COL" titleStyle="" class='' :uiActionGroup="detailsModel.group1.uiActionGroup" @groupuiactionclick="groupUIActionClick($event)" :caption="$t('entities.opportunity.productinfo_form.details.group1')" :isShowCaption="false" uiStyle="DEFAULT" :titleBarCloseMode="0" :isInfoGroupMode="true" >
<app-form-group layoutType="TABLE_24COL" titleStyle="" class='' :uiActionGroup="detailsModel.group1.uiActionGroup" @groupuiactionclick="groupUIActionClick($event)" :caption="$t('entities.opportunity.productinfo_form.details.group1')" :isShowCaption="true" uiStyle="DEFAULT" :titleBarCloseMode="0" :isInfoGroupMode="true" >
<row>
<i-col v-show="detailsModel.pricelevelname.visible" :style="{}" :md="{ span: 12, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 6, offset: 0 }">
<app-form-item name='pricelevelname' :itemRules="this.rules.pricelevelname" class='' :caption="$t('entities.opportunity.productinfo_form.details.pricelevelname')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.pricelevelname.error" :isEmptyCaption="false" labelPos="LEFT">
......@@ -19,7 +19,7 @@
</i-col>
<i-col v-show="detailsModel.grouppanel1.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-group layoutType="TABLE_24COL" titleStyle="" class='' :uiActionGroup="detailsModel.grouppanel1.uiActionGroup" @groupuiactionclick="groupUIActionClick($event)" :caption="$t('entities.opportunity.productinfo_form.details.grouppanel1')" :isShowCaption="false" uiStyle="DEFAULT" :titleBarCloseMode="0" :isInfoGroupMode="true" >
<app-form-group layoutType="TABLE_24COL" titleStyle="" class='' :uiActionGroup="detailsModel.grouppanel1.uiActionGroup" @groupuiactionclick="groupUIActionClick($event)" :caption="$t('entities.opportunity.productinfo_form.details.grouppanel1')" :isShowCaption="true" uiStyle="DEFAULT" :titleBarCloseMode="0" :isInfoGroupMode="true" >
<row>
<i-col v-show="detailsModel.druipart1.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-druipart
......@@ -471,11 +471,11 @@ export default class ProductInfoBase extends Vue implements ControlInterface {
* @memberof ProductInfo
*/
public detailsModel: any = {
group1: new FormGroupPanelModel({ caption: '商机基本信息', detailType: 'GROUPPANEL', name: 'group1', visible: true, isShowCaption: false, form: this, uiActionGroup: { caption: '', langbase: 'entities.opportunity.productinfo_form', extractMode: 'ITEM', details: [] } })
group1: new FormGroupPanelModel({ caption: '价目表信息', detailType: 'GROUPPANEL', name: 'group1', visible: true, isShowCaption: true, form: this, uiActionGroup: { caption: '', langbase: 'entities.opportunity.productinfo_form', extractMode: 'ITEM', details: [] } })
,
druipart1: new FormDRUIPartModel({ caption: '', detailType: 'DRUIPART', name: 'druipart1', visible: true, isShowCaption: true, form: this })
,
grouppanel1: new FormGroupPanelModel({ caption: '分组面板', detailType: 'GROUPPANEL', name: 'grouppanel1', visible: true, isShowCaption: false, form: this, uiActionGroup: { caption: '', langbase: 'entities.opportunity.productinfo_form', extractMode: 'ITEM', details: [] } })
grouppanel1: new FormGroupPanelModel({ caption: '产品明细信息', detailType: 'GROUPPANEL', name: 'grouppanel1', visible: true, isShowCaption: true, form: this, uiActionGroup: { caption: '', langbase: 'entities.opportunity.productinfo_form', extractMode: 'ITEM', details: [] } })
,
formpage1: new FormPageModel({ caption: '基本信息', detailType: 'FORMPAGE', name: 'formpage1', visible: true, isShowCaption: true, form: this })
,
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册