客户跟踪界面新增功能

This commit is contained in:
JIAL 2024-01-25 13:25:57 +08:00
parent 1a33a7f7e2
commit 768a7959b6
22 changed files with 16264 additions and 375 deletions
logs
src/main
java/com/JN/demo/bizquery
resources
application-dev.ymlapplication-ss.yml
static/bizquery/css
templates
bizquery
zmquotation
target/classes
application-dev.ymlapplication-ss.yml
com/JN/demo/bizquery
static
bizquery/css
zmquotation/css
templates
bizquery
zmquotation

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -74,12 +74,16 @@ public class BizController {
String latestOrderDate = StringUtils.getDefaultIfNull(bizService.queryLatestOrderDate(kunnr, yearAgoFormat), "0");
String latestQuotationDate = StringUtils.getDefaultIfNull(bizService.queryLatestQuotationDate(name), "0");
String salespersonCount = StringUtils.getDefaultIfNull(bizService.querySalespersonCount(kunnr, yearAgoFormat), "0");
String latestContractDate = StringUtils.getDefaultIfNull(bizService.queryLatestContractDate(kunnr, yearAgoFormat), "0");
String latestBidDate = StringUtils.getDefaultIfNull(bizService.queryLatestBidDate(kunnr), "0");
Map<String, String> resultMap = new HashMap<>();
resultMap.put("latestShippingDate", "0".equals(latestShippingDate) ? latestShippingDate : StringUtils.formatDateString(latestShippingDate, "yyyy-MM-dd"));
resultMap.put("latestOrderDate", "0".equals(latestOrderDate) ? latestOrderDate : StringUtils.formatDateString(latestOrderDate, "yyyy-MM-dd"));
resultMap.put("latestQuotationDate", "0".equals(latestQuotationDate) ? latestQuotationDate : StringUtils.formatDateString(latestQuotationDate, "yyyy-MM-dd"));
resultMap.put("salespersonCount", salespersonCount );
resultMap.put("latestContractDate", "0".equals(latestContractDate) ? latestContractDate : StringUtils.formatDateString(latestContractDate, "yyyy-MM-dd"));
resultMap.put("latestBidDate", "0".equals(latestBidDate) ? latestBidDate : StringUtils.formatDateString(latestBidDate, "yyyy-MM-dd"));
log.info("开始记录日志信息: {}", "工号为:" + employeeId + "的用户查询的客户名称为:" + name);
return R.success(resultMap);

View File

@ -23,7 +23,7 @@ public interface BizMapper {
@Select("select * from openquery(hana2,'select max(erdat) from SAPHANADB.likp where kunnr = ''${kunnr}'' and erdat >= ''${time}''')")
String queryLatestShippingDate(String kunnr, String time);
@Select("select * from openquery(hana2,'select max(erdat) from SAPHANADB.vbak where kunnr = ''${kunnr}'' and erdat >= ''${time}''')")
@Select("select * from openquery(hana2,'select max(erdat) from SAPHANADB.vbak where kunnr = ''${kunnr}'' and erdat >= ''${time}'' and VBTYP = ''C''')")
String queryLatestOrderDate(String kunnr, String time);
@Select("select * from \n" +
@ -34,4 +34,14 @@ public interface BizMapper {
@Select("select max(create_time_0) from [JNERP].[jn_erp].[dbo].[CRM_MESSAGE] where client_name_0 = '${name}'")
String queryLatestQuotationDate(String name);
@Select("select * from openquery(hana2,'select max(erdat) from SAPHANADB.vbak where kunnr = ''${kunnr}'' and erdat >= ''${time}'' and VBTYP = ''G''')")
String queryLatestContractDate(String kunnr, String time);
@Select("SELECT TOP 1 A.createdon\n" +
"FROM [CRM].[JNCRM_MSCRM].[dbo].[new_bid_informationBase] A\n" +
"LEFT JOIN [CRM].[JNCRM_MSCRM].[dbo].AccountBase B on B.AccountId = A.new_accountid\n" +
"where A.statecode = 0 and B.Name is not null and A.new_examinetenderoffice <> 10\n" +
"and B.new_sapcustomer_code = '${kunnr}' \n" +
"ORDER BY A.createdon DESC")
String queryLatestBidDate(String kunnr);
}

View File

@ -22,4 +22,8 @@ public interface BizService {
String querySalespersonCount(String kunnr, String time);
String queryLatestQuotationDate(String name);
String queryLatestContractDate(String kunnr, String time);
String queryLatestBidDate(String kunnr);
}

View File

@ -88,4 +88,31 @@ public class BizServiceImpl implements BizService {
return bizMapper.queryLatestQuotationDate(name);
}
/**
* @title queryLatestContractDate
* @description 根据客户编号和时间获取最近合同日期
* @author JIAL
* @param: kunnr
* @param: time
* @updateTime 2024/1/25 10:40
* @return: java.lang.String
*/
@Override
public String queryLatestContractDate(String kunnr, String time) {
return bizMapper.queryLatestContractDate(kunnr, time);
}
/**
* @title queryLatestBidDate
* @description 根据客户编号查询最近投标日期
* @author JIAL
* @param: kunnr
* @updateTime 2024/1/25 12:51
* @return: java.lang.String
*/
@Override
public String queryLatestBidDate(String kunnr) {
return bizMapper.queryLatestBidDate(kunnr);
}
}

View File

@ -1,9 +1,9 @@
server:
port: 8080
port: 3333
spring:
application:
#应用的名称,可选
name: JIALDev
name: JNDemo
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver

View File

@ -1,9 +1,9 @@
server:
port: 8080
port: 3333
spring:
application:
#应用的名称,可选
name: JIALDev
name: JNDemo
datasource:
dynamic:
primary: master #设置默认的数据源或者数据源组,默认值即为master

View File

@ -15,13 +15,18 @@
.table-box {
margin: 30px 20px 60px 20px;
margin: 10px 0px 15px 0px;
padding: 15px 0px 5px 0px;
background-color: #f0f0f0; /* 浅灰色背景 */
border-radius: 10px; /* 可以根据需要调整边框圆角 */
backdrop-filter: blur(10px); /* 调整模糊度 */
-webkit-backdrop-filter: blur(10px); /* 兼容性处理适用于一些WebKit浏览器 */
}
.table-box .el-input {
margin-right: 30px;
width: 220px;
margin-right: 80px;
width: 320px;
}
.el-table {

View File

@ -13,11 +13,13 @@
<link rel="stylesheet" href="/static/bizquery/css/index.css">
</head>
<body>
<div class="container" id="index-app">
<div class="container" id="index-app">
<div class="center-container">
<div class="table-box">
<span th:text="${employeeId}" style="display: none" ref="employeeIdSpan"></span>
<div>正在访问客户跟踪查询界面,登入的用户为: <span th:text="${employeeName}"></span></div>
<el-form class="table-box">
<h3>该页面可以根据客户名称查询该客户与公司发生业务的相关信息,方便各位判断是否可以作为新客户进行开发。</h3>
<el-form >
<el-form-item>
<el-input v-model="var1" placeholder="请输入客户名称" maxlength="20" type="text" auto-complete="off" clearable>
</el-input>
@ -32,10 +34,13 @@
<el-button type="primary" @click="queryList">点击查询</el-button>
</el-form-item>
</el-form>
</div>
<el-table
:data="tableData"
border
row-height="30px">
:row-style="{height: '0px'}"
:cell-style="{padding: '2px 0px 1px 0px', 'text-align': 'left'}"
:header-cell-style="{ background: '#eef1f6', color: '#606266', 'text-align': 'left' }">
<el-table-column
prop="kunnr"
label="客户编号">
@ -58,23 +63,24 @@
<el-descriptions-item label="最近下单日期">{{detail.latestOrderDate}}</el-descriptions-item>
<el-descriptions-item label="最近发货日期">{{detail.latestShippingDate}}</el-descriptions-item>
<el-descriptions-item label="最近报价日期">{{detail.latestQuotationDate}}</el-descriptions-item>
<el-descriptions-item label="最近合同日期" >{{detail.latestContractDate}}</el-descriptions-item>
<el-descriptions-item label="最近投标日期" >{{detail.latestBidDate}}</el-descriptions-item>
<el-descriptions-item label="目前在跟踪的业务员数量" >{{detail.salespersonCount}}</el-descriptions-item>
<el-descriptions-item label="参保人数" >{{detail.insuredCount}}</el-descriptions-item>
</el-descriptions>
</template>
</el-dialog>
</div>
</div>
<script src="/plugins/vue/vue.js"></script>
<script src="/plugins/element-ui/index.js"></script>
<script src="/plugins/calendar/calendar.js"></script>
<script src="/plugins/axios/axios.min.js"></script>
<script src="/plugins/axios/request.js"></script>
<!-- import Script -->
<script src="/static/bizquery/js/index.js"></script>
<script src="/plugins/vue/vue.js"></script>
<script src="/plugins/element-ui/index.js"></script>
<script src="/plugins/calendar/calendar.js"></script>
<script src="/plugins/axios/axios.min.js"></script>
<script src="/plugins/axios/request.js"></script>
<script src="/static/bizquery/js/index.js"></script>
<script>
<script>
new Vue({
el: '#index-app',
data() {
@ -105,7 +111,10 @@
latestShippingDate: '',
salespersonCount: '',
latestQuotationDate: '',
insuredCount: ''
insuredCount: '',
latestContractDate: '',
latestBidDate: ''
},
employeeId: /*[[${employeeId}]]*/ ''
@ -143,7 +152,8 @@
this.detail.salespersonCount = res.data.salespersonCount !== '0' ? res.data.salespersonCount : '无数据';
this.detail.latestQuotationDate = res.data.latestQuotationDate !== '0' ? res.data.latestQuotationDate : '无数据';
this.detail.latestShippingDate = res.data.latestShippingDate !== '0' ? res.data.latestShippingDate : '无数据';
this.detail.latestContractDate = res.data.latestContractDate !== '0' ? res.data.latestContractDate : '无数据';
this.detail.latestBidDate = res.data.latestBidDate !== '0' ? res.data.latestBidDate : '无数据';
}
}).catch(err => {
this.$message.error('请求出错了:' + err)
@ -183,6 +193,6 @@
}
}
})
</script>
</script>
</body>
</html>

View File

@ -225,7 +225,6 @@
{ kunnr1: '101', kunnr2: '102', kunnr3: '103', kunnr4: '104', kunnr5: '105', kunnr6: '106', kunnr7: '107', kunnr8: '108' },
// Add more rows as needed
],
}
},
computed: {

View File

@ -1,9 +1,9 @@
server:
port: 8080
port: 3333
spring:
application:
#应用的名称,可选
name: JIALDev
name: JNDemo
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver

View File

@ -1,9 +1,9 @@
server:
port: 8080
port: 3333
spring:
application:
#应用的名称,可选
name: JIALDev
name: JNDemo
datasource:
dynamic:
primary: master #设置默认的数据源或者数据源组,默认值即为master

View File

@ -15,13 +15,18 @@
.table-box {
margin: 30px 20px 60px 20px;
margin: 10px 0px 15px 0px;
padding: 15px 0px 5px 0px;
background-color: #f0f0f0; /* 浅灰色背景 */
border-radius: 10px; /* 可以根据需要调整边框圆角 */
backdrop-filter: blur(10px); /* 调整模糊度 */
-webkit-backdrop-filter: blur(10px); /* 兼容性处理适用于一些WebKit浏览器 */
}
.table-box .el-input {
margin-right: 30px;
width: 220px;
margin-right: 80px;
width: 320px;
}
.el-table {

View File

@ -1,23 +1,26 @@
.container {
display: flex;
position: absolute;
width: 100vw; /* 设置页面宽度为视口宽度的100% */
}
.center-container {
text-align: center;
margin: auto;
width: 95%;
padding: 35px;
padding: 10px;
}
.el-input {
height: 20px;
}
.el-input__inner {
height: 30px;
font-family: Roboto, serif;
font-style: normal;
font-weight: normal;
/*font-family: Roboto, serif;*/
font-size: 12px;
line-height: 14px;
}
@ -33,5 +36,60 @@
line-height: inherit;
}
.el-input__suffix-inner {
display: inline-block;
margin-top: 10px;
}
.el-form-item__label {
text-align: justify;
font-size: 12px;
}
.el-input-group{
margin-top: 6px;
}
.el-form-item__label::after {
content: "";
display: inline-block;
width: 100%;
}
.el-form-item {
margin: 0px 15px 0px 15px;
}
.el-row {
}
.el-col {
height: 42px;
}
.button-box .el-button {
margin: 10px 80px 10px 0px;
}
.form-box {
background-color: #f0f0f0; /* 浅灰色背景 */
border-radius: 10px; /* 可以根据需要调整边框圆角 */
backdrop-filter: blur(10px); /* 调整模糊度 */
-webkit-backdrop-filter: blur(10px); /* 兼容性处理适用于一些WebKit浏览器 */
}
.button-box {
margin: 10px 0px 10px 0px;
background-color: #f0f0f0; /* 浅灰色背景 */
border-radius: 10px; /* 可以根据需要调整边框圆角 */
backdrop-filter: blur(10px); /* 调整模糊度 */
-webkit-backdrop-filter: blur(10px); /* 兼容性处理适用于一些WebKit浏览器 */
}
.table-box {
}

View File

@ -13,11 +13,13 @@
<link rel="stylesheet" href="/static/bizquery/css/index.css">
</head>
<body>
<div class="container" id="index-app">
<div class="container" id="index-app">
<div class="center-container">
<div class="table-box">
<span th:text="${employeeId}" style="display: none" ref="employeeIdSpan"></span>
<div>正在访问客户跟踪查询界面,登入的用户为: <span th:text="${employeeName}"></span></div>
<el-form class="table-box">
<h3>该页面可以根据客户名称查询该客户与公司发生业务的相关信息,方便各位判断是否可以作为新客户进行开发。</h3>
<el-form >
<el-form-item>
<el-input v-model="var1" placeholder="请输入客户名称" maxlength="20" type="text" auto-complete="off" clearable>
</el-input>
@ -32,10 +34,13 @@
<el-button type="primary" @click="queryList">点击查询</el-button>
</el-form-item>
</el-form>
</div>
<el-table
:data="tableData"
border
row-height="30px">
:row-style="{height: '0px'}"
:cell-style="{padding: '2px 0px 1px 0px', 'text-align': 'left'}"
:header-cell-style="{ background: '#eef1f6', color: '#606266', 'text-align': 'left' }">
<el-table-column
prop="kunnr"
label="客户编号">
@ -58,23 +63,24 @@
<el-descriptions-item label="最近下单日期">{{detail.latestOrderDate}}</el-descriptions-item>
<el-descriptions-item label="最近发货日期">{{detail.latestShippingDate}}</el-descriptions-item>
<el-descriptions-item label="最近报价日期">{{detail.latestQuotationDate}}</el-descriptions-item>
<el-descriptions-item label="最近合同日期" >{{detail.latestContractDate}}</el-descriptions-item>
<el-descriptions-item label="最近投标日期" >{{detail.latestBidDate}}</el-descriptions-item>
<el-descriptions-item label="目前在跟踪的业务员数量" >{{detail.salespersonCount}}</el-descriptions-item>
<el-descriptions-item label="参保人数" >{{detail.insuredCount}}</el-descriptions-item>
</el-descriptions>
</template>
</el-dialog>
</div>
</div>
<script src="/plugins/vue/vue.js"></script>
<script src="/plugins/element-ui/index.js"></script>
<script src="/plugins/calendar/calendar.js"></script>
<script src="/plugins/axios/axios.min.js"></script>
<script src="/plugins/axios/request.js"></script>
<!-- import Script -->
<script src="/static/bizquery/js/index.js"></script>
<script src="/plugins/vue/vue.js"></script>
<script src="/plugins/element-ui/index.js"></script>
<script src="/plugins/calendar/calendar.js"></script>
<script src="/plugins/axios/axios.min.js"></script>
<script src="/plugins/axios/request.js"></script>
<script src="/static/bizquery/js/index.js"></script>
<script>
<script>
new Vue({
el: '#index-app',
data() {
@ -105,7 +111,10 @@
latestShippingDate: '',
salespersonCount: '',
latestQuotationDate: '',
insuredCount: ''
insuredCount: '',
latestContractDate: '',
latestBidDate: ''
},
employeeId: /*[[${employeeId}]]*/ ''
@ -143,7 +152,8 @@
this.detail.salespersonCount = res.data.salespersonCount !== '0' ? res.data.salespersonCount : '无数据';
this.detail.latestQuotationDate = res.data.latestQuotationDate !== '0' ? res.data.latestQuotationDate : '无数据';
this.detail.latestShippingDate = res.data.latestShippingDate !== '0' ? res.data.latestShippingDate : '无数据';
this.detail.latestContractDate = res.data.latestContractDate !== '0' ? res.data.latestContractDate : '无数据';
this.detail.latestBidDate = res.data.latestBidDate !== '0' ? res.data.latestBidDate : '无数据';
}
}).catch(err => {
this.$message.error('请求出错了:' + err)
@ -183,6 +193,6 @@
}
}
})
</script>
</script>
</body>
</html>

View File

@ -16,56 +16,133 @@
<div class="container" id="index-app">
<div class="center-container">
<div class="form-box">
<el-form :label-position="labelPosition" label-width="35%" :model="formLabelAlign">
<el-form label-width="45%" :model="formLabelAlign">
<el-row>
<el-col :span="5">
<el-form-item label="名称">
<el-input v-model="formLabelAlign.name"></el-input>
<el-col :span="6">
<el-form-item label="加工费" title="蒸汽费/钢丝铠装材料及加工费">
<el-input v-model="formLabelAlign.name" placeholder="蒸汽费/钢丝铠装材料及加工费">
<template slot="append">%</template>
</el-input>
</el-form-item>
</el-col >
<el-col :span="5">
<el-form-item label="活动区域">
<el-input v-model="formLabelAlign.region"></el-input>
<el-col :span="6">
<el-form-item label="生产财务成本" title="生产财务成本">
<el-input v-model="formLabelAlign.region" placeholder="生产财务成本">
<template slot="append">%</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="活动形式">
<el-input v-model="formLabelAlign.type"></el-input>
<el-col :span="6">
<el-form-item label="账期" title="账期">
<el-input v-model="formLabelAlign.type" placeholder="账期"></el-input>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="活动形式">
<el-input v-model="formLabelAlign.type"></el-input>
<el-col :span="6">
<el-form-item label="承兑" title="承兑">
<el-input v-model="formLabelAlign.type" placeholder="承兑"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="3">
<el-form-item >
<el-input v-model="formLabelAlign.type"></el-input>
<el-col :span="6">
<el-form-item label="公司管理成本" title="公司管理成本">
<el-input v-model="formLabelAlign.name" placeholder="公司管理成本"></el-input>
</el-form-item>
</el-col >
<el-col :span="6">
<el-form-item label="中标服务费" title="中标服务费">
<el-input v-model="formLabelAlign.region" placeholder="中标服务费">
<template slot="append">%</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item >
<el-input v-model="formLabelAlign.type"></el-input>
<el-col :span="6">
<el-form-item label="公司净利润" title="公司净利润">
<el-input v-model="formLabelAlign.type" placeholder="公司净利润"></el-input>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item >
<el-input v-model="formLabelAlign.type"></el-input>
<el-col :span="6">
<el-form-item label="业务费">
<el-input v-model="formLabelAlign.type" placeholder="业务费"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="省">
<el-input :disabled="true" v-model="formLabelAlign.type" placeholder="省"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="市">
<el-input :disabled="true" v-model="formLabelAlign.type" placeholder="市"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="区">
<el-input :disabled="true" v-model="formLabelAlign.type" placeholder="区"></el-input>
</el-form-item>
</el-col>
<el-col :span="6" >
<el-form-item label="运费">
<el-input v-model="formLabelAlign.type" placeholder="运费"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="成本累计">
<el-input v-model="formLabelAlign.name" placeholder="成本累计"></el-input>
</el-form-item>
</el-col >
<el-col :span="6">
<el-form-item label="底价">
<el-input v-model="formLabelAlign.region" placeholder="底价"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="可下浮">
<el-input v-model="formLabelAlign.type" placeholder="可下浮"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="实际材料成本厂价比例">
<el-input v-model="formLabelAlign.type" placeholder="实际材料成本占厂价比例"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="厂家金额">
<el-input v-model="formLabelAlign.name" placeholder="厂家金额"></el-input>
</el-form-item>
</el-col >
<el-col :span="6">
<el-form-item label="人工费">
<el-input v-model="formLabelAlign.region" placeholder="人工费"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="盘具">
<el-input v-model="formLabelAlign.type" placeholder="盘具"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div class="button-box">
<el-button type="text">选择地区</el-button>
<el-button type="text">添加物料</el-button>
<el-button type="text">刷新界面</el-button>
</div>
<div class="table-box">
<el-table
:data="tableData"
border
row-height="20px"
:header-cell-style="{background:'#eef1f6',color:'#606266'}">
:row-style="{height: '0px'}"
:cell-style="{padding: '2px'}"
:header-cell-style="{ background: '#eef1f6', color: '#606266' }">
<el-table-column
fixed
width="180"
@ -148,7 +225,6 @@
{ kunnr1: '101', kunnr2: '102', kunnr3: '103', kunnr4: '104', kunnr5: '105', kunnr6: '106', kunnr7: '107', kunnr8: '108' },
// Add more rows as needed
],
}
},
computed: {
@ -158,7 +234,7 @@
},
mounted() {
this.getChinaData();
},
methods: {
async init () {