Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
Support
提交反馈
为 GitLab 提交贡献
登录/注册
切换导航
M
mcep-h5
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
jiangzaicheng
mcep-h5
提交
ce638afd
提交
ce638afd
编写于
8月 18, 2022
作者:
jiangzaicheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
-m
bug
上级
6bb1523c
变更
39
隐藏空白字符变更
内嵌
并排
正在显示
39 个修改的文件
包含
3092 行增加
和
228 行删除
+3092
-228
demo_index.html
src/assets/iconfont/demo_index.html
+5
-5
iconfont.css
src/assets/iconfont/iconfont.css
+3
-3
iconfont.ttf
src/assets/iconfont/iconfont.ttf
+0
-0
iconfont.woff
src/assets/iconfont/iconfont.woff
+0
-0
iconfont.woff2
src/assets/iconfont/iconfont.woff2
+0
-0
CardPottom.vue
src/components/common/CardPottom.vue
+12
-6
Person.vue
src/components/common/Person.vue
+4
-4
Picket.vue
src/components/common/Picket.vue
+4
-3
PicketAcced.vue
src/components/common/PicketAcced.vue
+8
-13
ProductCard.vue
src/components/common/ProductCard.vue
+12
-7
Tool.vue
src/components/common/Tool.vue
+2
-2
Calculate.vue
...ch/company-common-functions/auxiliary-tools/Calculate.vue
+198
-0
FinancialTrial.vue
...mpany-common-functions/auxiliary-tools/FinancialTrial.vue
+77
-0
InterestPricing.vue
...pany-common-functions/auxiliary-tools/InterestPricing.vue
+109
-0
LoanCalculation.vue
...pany-common-functions/auxiliary-tools/LoanCalculation.vue
+345
-0
RepaymentTrial.vue
...mpany-common-functions/auxiliary-tools/RepaymentTrial.vue
+375
-0
ManufacturingTrial.vue
...ns/auxiliary-tools/financial-trial/ManufacturingTrial.vue
+261
-0
UnManufacturingTrial.vue
.../auxiliary-tools/financial-trial/UnManufacturingTrial.vue
+261
-0
ContractSigningAndBilling.vue
...-functions/business-inquiry/ContractSigningAndBilling.vue
+18
-0
LoanApplication.vue
...any-common-functions/business-inquiry/LoanApplication.vue
+18
-0
MarketingTask.vue
...mpany-common-functions/business-inquiry/MarketingTask.vue
+248
-0
PeriodicInspection.vue
...-common-functions/business-inquiry/PeriodicInspection.vue
+18
-0
ProcessQuery.vue
...ompany-common-functions/business-inquiry/ProcessQuery.vue
+437
-0
RiskWarning.vue
...company-common-functions/business-inquiry/RiskWarning.vue
+18
-0
AllOutlets.vue
...ch/company-common-functions/online-enquiry/AllOutlets.vue
+18
-0
Area.vue
...orkbench/company-common-functions/online-enquiry/Area.vue
+18
-0
Nearby.vue
...kbench/company-common-functions/online-enquiry/Nearby.vue
+94
-0
login-mgt.api.ts
src/constants/api/login/login-mgt.api.ts
+3
-4
index.ts
src/router/index.ts
+2
-1
login.mgt.routing.ts
src/router/login.mgt.routing.ts
+9
-1
api.service.ts
src/services/api.service.ts
+6
-9
LevelSent.vue
src/views/MyView/LevelSent.vue
+2
-15
LoginByID.vue
src/views/authentication/LoginByID.vue
+272
-0
LoginView.vue
src/views/authentication/LoginView.vue
+34
-13
Register.vue
src/views/login/Register.vue
+78
-45
Main.vue
src/views/main/Main.vue
+23
-9
AccommodDetails.vue
src/views/workbench/AccommodDetails.vue
+27
-17
AccommodMain.vue
src/views/workbench/AccommodMain.vue
+64
-65
Accommodation.vue
src/views/workbench/Accommodation.vue
+9
-6
未找到文件。
src/assets/iconfont/demo_index.html
浏览文件 @
ce638afd
...
...
@@ -3,8 +3,8 @@
<head>
<meta
charset=
"utf-8"
/>
<title>
iconfont Demo
</title>
<link
rel=
"shortcut icon"
href=
"//img.alicdn.com/imgextra/i
2/O1CN01ZyAlrn1MwaMhqz36G_!!6000000001499-73-tps-64-64.ico
"
type=
"image/x-icon"
/>
<link
rel=
"icon"
type=
"image/svg+xml"
href=
"//img.alicdn.com/imgextra/i4/O1CN01
EYTRnJ297D6vehehJ_!!6000000008020-55-tps-64-64
.svg"
/>
<link
rel=
"shortcut icon"
href=
"//img.alicdn.com/imgextra/i
4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg
"
type=
"image/x-icon"
/>
<link
rel=
"icon"
type=
"image/svg+xml"
href=
"//img.alicdn.com/imgextra/i4/O1CN01
Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82
.svg"
/>
<link
rel=
"stylesheet"
href=
"https://g.alicdn.com/thx/cube/1.3.2/cube.min.css"
>
<link
rel=
"stylesheet"
href=
"demo.css"
>
<link
rel=
"stylesheet"
href=
"iconfont.css"
>
...
...
@@ -960,9 +960,9 @@
<pre><code
class=
"language-css"
>
@font-face {
font-family: 'iconfont';
src: url('iconfont.woff2?t=16
58900592121
') format('woff2'),
url('iconfont.woff?t=16
58900592121
') format('woff'),
url('iconfont.ttf?t=16
58900592121
') format('truetype');
src: url('iconfont.woff2?t=16
60790093357
') format('woff2'),
url('iconfont.woff?t=16
60790093357
') format('woff'),
url('iconfont.ttf?t=16
60790093357
') format('truetype');
}
</code></pre>
<h3
id=
"-iconfont-"
>
第二步:定义使用 iconfont 的样式
</h3>
...
...
src/assets/iconfont/iconfont.css
浏览文件 @
ce638afd
@font-face
{
font-family
:
"iconfont"
;
/* Project id 3289090 */
src
:
url('iconfont.woff2?t=16
58900592121
')
format
(
'woff2'
),
url('iconfont.woff?t=16
58900592121
')
format
(
'woff'
),
url('iconfont.ttf?t=16
58900592121
')
format
(
'truetype'
);
src
:
url('iconfont.woff2?t=16
60790093357
')
format
(
'woff2'
),
url('iconfont.woff?t=16
60790093357
')
format
(
'woff'
),
url('iconfont.ttf?t=16
60790093357
')
format
(
'truetype'
);
}
.iconfont
{
...
...
src/assets/iconfont/iconfont.ttf
浏览文件 @
ce638afd
无法预览此类型文件
src/assets/iconfont/iconfont.woff
浏览文件 @
ce638afd
无法预览此类型文件
src/assets/iconfont/iconfont.woff2
浏览文件 @
ce638afd
无法预览此类型文件
src/components/common/CardPottom.vue
浏览文件 @
ce638afd
...
...
@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-07 16:13:13
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-0
7-12 10:4
7:05
* @LastEditTime: 2022-0
8-18 11:0
7:05
* @FilePath: \mcep-h5\src\components\common\Bottom.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
...
...
@@ -18,16 +18,22 @@
<van-col
offset=
"4"
span=
"11"
class=
"money"
>
100,000,00
</van-col>
<van-col
span=
"9"
class=
"moneytitle"
>
壹佰元整
</van-col>
</van-row>
<!--
<van-row
type=
"flex"
class=
"title"
>
<van-col
span=
"24"
>
已使用贷款金额(元)
</van-col>
</van-row>
<van-row
type=
"flex"
class=
"mumMoney"
>
<van-col
offset=
"4"
span=
"11"
class=
"money"
>
6,0000
</van-col>
<van-col
span=
"9"
class=
"moneytitle"
>
壹佰元整
</van-col>
</van-row>
-->
<van-row
type=
"flex"
justify=
"center"
class=
"integral"
>
<van-col
span=
"8"
>
2456
</van-col>
<van-col
span=
"8"
>
12
</van-col>
<van-col
span=
"8"
>
10
</van-col>
<van-col
span=
"12"
>
已使用贷款金额(元)
</van-col>
<van-col
span=
"12"
>
6,0000壹佰元整
</van-col>
</van-row>
<van-row
type=
"flex"
justify=
"center"
class=
"integrall"
>
<
!--
<
van-row
type=
"flex"
justify=
"center"
class=
"integrall"
>
<van-col
span=
"8"
>
我的积分
</van-col>
<van-col
span=
"8"
>
卡券
</van-col>
<van-col
span=
"8"
>
我的特权
</van-col>
</van-row>
</van-row>
-->
</div>
</div>
</
template
>
...
...
src/components/common/Person.vue
浏览文件 @
ce638afd
...
...
@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 16:24:00
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-0
7-25 18:31:14
* @LastEditTime: 2022-0
8-18 11:00:05
* @FilePath: \mcep-h5\src\components\common\Tatle.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
...
...
@@ -94,9 +94,9 @@ export default class Person extends Vue {
//星星的点击事件
pushStarts
(){
this
.
$router
.
push
({
name
:
"
level
"
})
//
this.$router.push({
//
name:"level"
//
})
}
layoutDiss
(){
this
.
$router
.
push
({
...
...
src/components/common/Picket.vue
浏览文件 @
ce638afd
...
...
@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 16:24:00
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-0
7-12 15:54:23
* @LastEditTime: 2022-0
8-18 13:55:42
* @FilePath: \mcep-h5\src\components\common\Tatle.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
...
...
@@ -89,9 +89,10 @@ export default class Picket extends Vue {
-moz-font-feature-settings
:
"kern"
;
-moz-font-feature-settings
:
"kern=1"
;
font-kerning
:
normal
;
width
:
50%
;
//
width: 50%;
border-radius
:
4px
;
text-align
:
center
;
padding-left
:
1%
;
// text-align: center;
}
.limitrange
{
// margin-left: 3%;
...
...
src/components/common/PicketAcced.vue
浏览文件 @
ce638afd
...
...
@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 16:24:00
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-0
7-25 14:28:53
* @LastEditTime: 2022-0
8-18 14:13:40
* @FilePath: \mcep-h5\src\components\common\Tatle.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
...
...
@@ -10,16 +10,11 @@
<!--
<div>
-->
<div
class=
"d-tatle"
>
<div
class=
"card"
v-for=
"(item, index) in productParam"
:key=
"index"
>
<div
@
click=
"onClickDetails()"
>
<div
@
click=
"onClickDetails(
item.status
)"
>
<van-row>
<van-col
span=
"16"
>
<van-col
span=
"12"
class=
"lable"
><span>
合同编号:
</span></van-col>
<van-col
span=
"24"
class=
"priductName"
>
{{
item
.
productname
}}
</van-col>
<van-col
span=
"24"
class=
"priductName"
>
{{
item
.
productname
}}
</van-col>
<van-col
style=
" width: 100%; margin-left: 8%; line-height: 2;"
>
<van-row
gutter=
"20"
>
<van-col
span=
"12"
class=
"lable"
><span>
申请金额:万元
</span></van-col>
...
...
@@ -46,15 +41,15 @@
<use
xlink:href=
"#icon-a-yifafang60x60px"
></use>
</svg>
<svg
class=
"icon"
aria-hidden=
"true"
v-if=
"item.status === 2"
>
<use
xlink:href=
"#icon-
a-yifafang60x60px
"
></use>
<use
xlink:href=
"#icon-
shenqingzhong
"
></use>
</svg>
<svg
class=
"icon"
aria-hidden=
"true"
v-if=
"item.status === 3"
>
<use
xlink:href=
"#icon-
a-yijieqing60x60px
"
></use>
<use
xlink:href=
"#icon-
yijieqing
"
></use>
</svg>
</van-col>
</van-row>
</div>
<van-row
v-if=
"item.status ===
2
"
type=
"flex"
class=
"bottom"
@
click=
"onClickPicket()"
>
<van-row
v-if=
"item.status ===
1
"
type=
"flex"
class=
"bottom"
@
click=
"onClickPicket()"
>
<van-col
span=
"24"
class=
"lablel"
><span>
还款计划
</span>
<svg
class=
"iconl"
aria-hidden=
"true"
>
<use
xlink:href=
"#icon-a-xiayiye24x24px"
></use>
...
...
@@ -81,8 +76,8 @@ export default class PicketAcced extends Vue {
this
.
$emit
(
"
onClickPicket
"
)
}
//调用父组件的值
onClickDetails
()
{
this
.
$emit
(
"
onClickDetails
"
)
onClickDetails
(
status
:
any
)
{
this
.
$emit
(
"
onClickDetails
"
,
status
)
}
}
</
script
>
...
...
src/components/common/ProductCard.vue
浏览文件 @
ce638afd
...
...
@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-07 16:13:13
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-0
7-25 18:18:42
* @LastEditTime: 2022-0
8-18 14:04:18
* @FilePath: \mcep-h5\src\components\common\Bottom.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
...
...
@@ -15,7 +15,7 @@
<van-col
span=
"24"
class=
"title"
>
最高贷款额度
</van-col>
</van-row>
<van-row
type=
"flex"
justify=
"center"
class=
"integral"
>
<van-col
span=
"24"
style=
"font-size: 24px;font-weight: 900;"
>
{{
money
}}
</van-col>
<van-col
span=
"24"
style=
"font-size: 24px;font-weight: 900;
margin-top: 5%;
"
>
{{
money
}}
</van-col>
</van-row>
<van-row
type=
"flex"
justify=
"center"
class=
"integrall"
>
<van-col
span=
"24"
>
{{
moneyName
}}
</van-col>
...
...
@@ -27,18 +27,23 @@
</van-row>
</div>
<div>
<scroller-view
v-calculate-height
:height=
"10000"
>
<van-collapse
v-model=
"activeNames"
style=
" margin-top: 20%;
border: 1px solid;
width: 100%;
height: 100%;
border-radius: 8px;
margin: 20% auto;
box-shadow: 0 y-shadow 10px 10px rgba(0, 0, 0, .2);
"
>
<van-collapse-item
title=
"标题1"
name=
"1"
>
内容
</van-collapse-item>
<van-collapse-item
title=
"标题2"
name=
"2"
>
内容
</van-collapse-item>
<van-collapse-item
title=
"标题3"
name=
"3"
>
内容
</van-collapse-item>
<van-collapse-item
title=
"产品介绍"
name=
"1"
>
农村信用社向符合条件的客户发放的用于满足个人消费、生产经营流动资金等需求的一项贷款业务。
</van-collapse-item>
<van-collapse-item
title=
"产品特点"
name=
"2"
>
一次核定,三年有效,随用随贷,循环使用。
</van-collapse-item>
<van-collapse-item
title=
"货款对象"
name=
"3"
>
货款对象
</van-collapse-item>
<van-collapse-item
title=
"货款期限"
name=
"4"
>
最长不超过3年。
</van-collapse-item>
<van-collapse-item
title=
"担保方式"
name=
"5"
>
以借款人自有或第三人提供有权处置的有效资产抵押担保。
</van-collapse-item>
<!--
<van-collapse-item
title=
"担保方式"
name=
"5"
>
以借款人自有或第三人提供有权处置的有效资产抵押担保。
</van-collapse-item>
-->
</van-collapse>
</scroller-view>
</div>
</div>
</
template
>
...
...
@@ -55,7 +60,7 @@ export default class ProductCard extends Vue {
@
Prop
({
default
:
""
})
money
:
string
|
undefined
;
//额度
@
Prop
({
default
:
""
})
moneyName
:
string
|
undefined
;
//额度大写
//立即登录
activeNames
=
[
"
1
"
];
activeNames
=
[
""
];
lodiing
()
{
this
.
$router
.
push
({
path
:
"
/Recognition
"
,
...
...
src/components/common/Tool.vue
浏览文件 @
ce638afd
...
...
@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 16:24:00
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-0
7-26 15:20:42
* @LastEditTime: 2022-0
8-18 11:09:51
* @FilePath: \mcep-h5\src\components\common\Tatle.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
...
...
@@ -34,7 +34,7 @@
</van-col>
</van-row>
<van-row
class=
"imgNo"
>
<van-col
span=
"6"
class=
"imglocal"
@
click=
"pushTrial"
>
存款
利息试算
</van-col>
<van-col
span=
"6"
class=
"imglocal"
@
click=
"pushTrial"
>
利息试算
</van-col>
<van-col
span=
"6"
class=
"imglocal"
@
click=
"pushManage"
>
理财产品
</van-col>
<van-col
span=
"6"
class=
"imglocal"
@
click=
"pushSelf"
>
自助贷款
</van-col>
<van-col
span=
"6"
class=
"imglocal"
>
积分商城
</van-col>
...
...
src/components/workbench/company-common-functions/auxiliary-tools/Calculate.vue
0 → 100644
浏览文件 @
ce638afd
<
template
>
<div
class=
"content"
>
<div
style=
"width: 100%"
>
<van-form
label-width=
"25%"
@
submit=
"onSubmit"
>
<!--
<mobile-input
v-model=
"type_of_certificate"
placeholder=
"营业执照"
readonly
label=
"证件类型"
/>
-->
<d-select
placeholder=
"请选择"
label=
"证件类型"
:value=
"IdentTp"
border=
"true"
:required=
"true"
v-model=
"IdentTp"
sfield=
"IdentTp"
size=
"small"
:rules=
"[
{ required: true, message: '证件类型不能为空' }]"
>
</d-select>
<mobile-input
:formatter=
"formatter"
format-trigger=
"reset"
v-model=
"IdentNo"
:required=
"true"
:rules=
"[
{ validator, message: msg == '' ? '类型不能为空' : msg }]"
label="证件号码"
/>
<mobile-input
v-show=
"companyName != ''"
class=
"contact_tel"
placeholder=
"请输入联系电话"
label=
"公司名称"
readonly
v-model=
"companyName"
/>
<div
style=
"margin: 16px; display: flex; justify-content: space-around"
>
<van-button
@
click=
"reset"
style=
"width: 40%"
round
color=
"#999999"
native-type=
"info"
plain
>
重置
</van-button
>
<van-button
style=
"width: 40%"
round
type=
"info"
native-type=
"submit"
>
计算
</van-button
>
</div>
</van-form>
<div
class=
"content-style"
v-show=
"LOAN_BAL != '' && LOAN_BAL != null"
>
<table-single-view
:data=
"AUMInfo"
:keyValue=
"keyValueAum"
></table-single-view>
</div>
</div>
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Component
,
Vue
}
from
"
vue-property-decorator
"
;
import
nettyApi
from
"
@/constants/api/ms-netty/netty.api.ts
"
;
import
systemApi
from
"
@/constants/api/ms-system/system.api.ts
"
;
import
IF
from
"
@/public/factory/InterFaceFactory
"
;
import
{
NativeUI
}
from
"
@/public/ts/NativeUI
"
;
import
TableSingleView
from
"
@/public/TableSingleView.vue
"
;
// import emUtil from '@/public/js/em.util';
/**
* @Description 年日均计算
* @Author JiangTao
* @Date 2021-11-10 下午 03:36
*/
@
Component
({
name
:
"
Calculate
"
,
components
:
{
TableSingleView
},
})
export
default
class
Calculate
extends
Vue
{
IdentTp
=
""
;
IdentNo
=
""
;
msg
=
"
输入不能为空
"
;
cusInfo
:
any
=
{};
AUMInfo
:
any
=
{};
//查询AUM返回的信息
keyValueAum
=
{
LOAN_BAL
:
"
贷款总额
"
,
LOAN_YEAR_DAY_AVG
:
"
贷款年日均
"
,
};
LOAN_BAL
=
""
;
companyName
=
""
;
onSubmit
()
{
this
.
selectCustInfo
();
}
formatter
()
{}
reset
()
{
this
.
IdentNo
=
""
;
this
.
IdentTp
=
""
;
}
// 暂无拍照接口
// ocrScan(bse64Img:any) {
// if (!this.IdentTp) {
// NativeUI.toast('请先选择证件类型');
// } else {
// emUtil.captureImage().then(localData => {
// let _this = this;
// let fileImage = _this.base64ToFile(localData);
// NativeUI.showWaiting('正在识别...');
// IF.transferFile(systemApi.ocrCertificateIdentify, { file: fileImage }).then(res => {
// NativeUI.closeWaiting();
// console.log(res);
// if (res.ret_code == '000000') {
// NativeUI.toast(res.msg);
// _this.IdentNo = res.REGISTER_ID;
// // _this.CstNm = res.COMPANY_NAME;
// // _this.displayValue = res.COMPANY_TYPE;
// } else {
// NativeUI.toast(res.msg || 'OCR识别失败');
// }
// });
// });
// }
// }
//证件号校验规则
validator
(
val
:
any
)
{
if
(
this
.
IdentTp
==
"
1
"
)
{
this
.
msg
=
"
组织机构代码输入有误
"
;
return
/
[
A-Z0-9
]{8}
-
[
A-Z0-9
]
$|
[
A-Z0-9
]{8}
-
[
A-Z0-9
]
-
[
0-9
]{2}
$/
.
test
(
val
);
}
else
if
(
this
.
IdentTp
==
"
2
"
)
{
//社会统一信用代码
this
.
msg
=
"
社会统一信用代码输入有误
"
;
return
/
[
1-9A-GY
]{1}[
1239
]{1}[
1-5
]{1}[
0-9
]{5}[
0-9A-Z
]{10}
/
.
test
(
val
);
}
}
//查询年日均AUM
selectAUMInfo
()
{
const
param
=
{
CUST_NO
:
this
.
cusInfo
.
cus_id
,
//'1003813734'
CUST_NAME
:
this
.
cusInfo
.
cus_name
,
//'成***',
tc
:
nettyApi
.
TRADE_CODE
.
selectCompanyAumInfo
,
};
NativeUI
.
showWaiting
(
"
正在查询...
"
);
return
IF
.
transferDataInter
(
nettyApi
.
commonRq
,
param
).
then
((
res
:
any
)
=>
{
NativeUI
.
closeWaiting
();
if
(
res
.
rc
==
"
1
"
)
{
if
(
res
.
LOAN_BAL
!=
null
)
{
this
.
AUMInfo
=
res
;
this
.
LOAN_BAL
=
res
.
LOAN_BAL
;
}
else
{
NativeUI
.
toast
(
"
此用户无AUM数据
"
);
}
}
else
{
NativeUI
.
toast
(
res
.
msg
);
}
});
}
//查询客户列表
selectCustInfo
(
pageNo
=
1
)
{
const
param
=
{
cus_status
:
""
,
cert_code
:
this
.
IdentNo
,
cus_type
:
""
,
maxLine
:
"
1
"
,
targetPage
:
1
,
tc
:
nettyApi
.
TRADE_CODE
.
selectXDGSXX
,
};
NativeUI
.
showWaiting
(
"
正在查询...
"
);
return
IF
.
transferDataInter
(
nettyApi
.
commonRq
,
param
).
then
((
res
:
any
)
=>
{
NativeUI
.
closeWaiting
();
if
(
res
.
rc
==
"
1
"
)
{
if
(
res
.
CusComList
.
length
>
0
)
{
this
.
cusInfo
=
res
.
CusComList
[
0
];
this
.
companyName
=
res
.
CusComList
[
0
].
cus_name
;
this
.
selectAUMInfo
();
}
else
{
NativeUI
.
toast
(
"
信贷系统无此用户
"
);
}
}
else
{
NativeUI
.
toast
(
res
.
msg
);
}
});
}
}
</
script
>
<
style
scoped
lang=
"scss"
>
.content
{
width
:
50%
;
padding-top
:
5%
;
margin
:
0
auto
;
}
::v-deep
.van-button--info
{
background-color
:
#fd5065
;
border
:
1px
solid
#fd5065
;
}
::v-deep
.van-button__text
{
font-size
:
16px
;
}
.content-style
{
margin-left
:
100px
;
margin-top
:
100px
;
}
</
style
>
src/components/workbench/company-common-functions/auxiliary-tools/FinancialTrial.vue
0 → 100644
浏览文件 @
ce638afd
<
template
>
<div
class=
"content"
>
<van-tabs
class=
"label"
type=
"card"
>
<van-tab
@
click=
"manufacturing_trial_click"
title=
"制造业试算"
>
<manufacturing-trial></manufacturing-trial>
</van-tab>
<van-tab
@
click=
"unmanufacturing_trial_click"
title=
"非制造业试算"
>
<un-manufacturing-trial></un-manufacturing-trial>
</van-tab>
</van-tabs>
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Component
,
Vue
}
from
"
vue-property-decorator
"
;
import
{
Tab
,
Tabs
}
from
"
vant
"
;
import
ManufacturingTrial
from
"
@/components/workbench/company-common-functions/auxiliary-tools/financial-trial/ManufacturingTrial.vue
"
;
import
UnManufacturingTrial
from
"
@/components/workbench/company-common-functions/auxiliary-tools/financial-trial/UnManufacturingTrial.vue
"
;
/**
* @Description 财务试算
* @Author JiangTao
* @Date 2021-11-10 下午 03:36
*/
Vue
.
use
(
Tab
);
Vue
.
use
(
Tabs
);
@
Component
({
name
:
"
FinancialTrial
"
,
components
:
{
ManufacturingTrial
,
UnManufacturingTrial
},
})
export
default
class
FinancialTrial
extends
Vue
{
manufacturing_trial
=
true
;
un_manufacturing_trial
=
false
;
manufacturing_trial_click
()
{
// console.log("aaaaaaaaaaa");
this
.
manufacturing_trial
=
true
;
this
.
un_manufacturing_trial
=
false
;
}
unmanufacturing_trial_click
()
{
// console.log("bbbbbbbbbbbbb");
this
.
manufacturing_trial
=
false
;
this
.
un_manufacturing_trial
=
true
;
}
}
</
script
>
<
style
scoped
>
.content
{
width
:
90%
;
margin
:
0
auto
;
margin-top
:
2%
;
}
.label
{
width
:
30%
;
margin
:
0
auto
;
margin-bottom
:
4%
;
}
::v-deep
.van-tabs
{
margin
:
0
;
width
:
98%
;
}
::v-deep
.van-tabs--card
>
.van-tabs__wrap
{
width
:
300px
;
margin
:
0
auto
;
}
::v-deep
.van-tab__text--ellipsis
{
font-size
:
16px
;
}
::v-deep
.van-tabs__wrap
,
::v-deep
.van-tabs__nav--card
{
height
:
40px
;
}
::v-deep
.van-tabs--card
>
.van-tabs__wrap
{
margin-bottom
:
4%
;
}
</
style
>
src/components/workbench/company-common-functions/auxiliary-tools/InterestPricing.vue
0 → 100644
浏览文件 @
ce638afd
<
template
>
<div
class=
"content"
>
<div
v-if=
"getData[0]"
class=
"personal-mortgage"
>
<div></div>
<div
@
click=
"selectInfo(0)"
>
《
{{
getData
[
0
].
fileName
}}
》
</div>
</div>
<div
v-if=
"getData[1]"
class=
"personal-consumption"
>
<div></div>
<div
@
click=
"selectInfo(1)"
>
《
{{
getData
[
1
].
fileName
}}
》
</div>
</div>
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Component
,
Vue
}
from
"
vue-property-decorator
"
;
import
nettyApi
from
"
@/constants/api/ms-netty/netty.api.ts
"
;
import
systemApi
from
"
@/constants/api/ms-system/system.api.ts
"
;
import
IF
from
"
@/public/factory/InterFaceFactory
"
;
import
{
NativeUI
}
from
"
@/public/ts/NativeUI
"
;
/**
* @Description 利率定价
* @Author JiangTao
* @Date 2021-10-25 下午 08:55
*/
@
Component
({
name
:
"
InterestPricing
"
,
})
export
default
class
InterestPricing
extends
Vue
{
getData
:
any
[]
=
[];
itemInfo
:
any
=
{};
//查询个贷利率定价
selectPerLoanPrice
()
{
NativeUI
.
showWaiting
(
"
正在查询...
"
);
return
IF
.
transferDataInter
(
systemApi
.
selectPerLoanPrice
,
{}).
then
(
(
res
:
any
)
=>
{
NativeUI
.
closeWaiting
();
if
(
res
.
code
==
1
)
{
this
.
getData
=
res
.
data
;
console
.
log
(
this
.
getData
);
for
(
let
i
=
0
;
i
<
this
.
getData
.
length
;
i
++
)
{
let
temp
=
this
.
getData
[
i
].
docName
;
// let strs = temp.spit('个');
let
index
=
temp
.
indexOf
(
"
个人
"
);
let
fileDate
=
temp
.
substr
(
0
,
index
);
let
fileName
=
temp
.
substr
(
index
);
this
.
getData
[
i
].
fileDate
=
fileDate
;
this
.
getData
[
i
].
fileName
=
fileName
;
}
// console.log(this.getData,'-----------------------------------------------');
}
else
{
NativeUI
.
toast
(
res
.
msg
);
}
}
);
}
selectInfo
(
index
=
0
)
{
const
urlFront
=
"
http://15.1.48.24:8888/
"
;
//http://15.1.48.24:8888/
if
(
index
==
0
)
{
window
.
location
.
href
=
urlFront
+
this
.
getData
[
0
].
mcepFileKey
;
}
else
if
(
index
==
1
)
{
window
.
location
.
href
=
urlFront
+
this
.
getData
[
1
].
mcepFileKey
;
}
}
mounted
()
{
this
.
selectPerLoanPrice
();
}
}
</
script
>
<
style
scoped
>
.content
{
width
:
100%
;
height
:
100%
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
}
.personal-mortgage
,
.personal-consumption
{
width
:
30%
;
height
:
33%
;
background-image
:
url("~@/assets/images/auxiliary-tools-Interest-pricing.png")
;
background-repeat
:
no-repeat
;
background-size
:
90%
;
}
.personal-mortgage
div
:nth-child
(
1
),
.personal-consumption
div
:nth-child
(
1
)
{
width
:
50%
;
height
:
30%
;
margin-top
:
10%
;
margin-left
:
8%
;
background-image
:
url("~@/assets/images/chengdu-bank-logo.png")
;
background-repeat
:
no-repeat
;
background-size
:
75%
;
}
.personal-mortgage
div
:nth-child
(
2
),
.personal-consumption
div
:nth-child
(
2
)
{
width
:
50%
;
margin
:
0
auto
;
margin-left
:
20%
;
font-size
:
115%
;
}
</
style
>
src/components/workbench/company-common-functions/auxiliary-tools/LoanCalculation.vue
0 → 100644
浏览文件 @
ce638afd
<
template
>
<div
class=
"content"
>
<div
style=
"width: 100%"
>
<van-form
label-width=
"25%"
@
submit=
"onSubmit"
>
<d-select
border=
"true"
readonly
clickable
v-model=
"refundType"
label=
"还款方式:"
placeholder=
"点击选择还款方式"
sfield=
"refundType"
:required=
"true"
:rules=
"[
{ required: true, message: '还款方式不能为空' }]" />
<mobile-input
border=
"true"
:formatter=
"formatter"
required
format-trigger=
"reset"
v-model=
"loanMoney"
label=
"贷款金额(元):"
type=
"number"
vtype=
"decimals"
:required=
"true"
placeholder=
"请输入贷款金额"
/>
<mobile-input
border=
"true"
:formatter=
"formatter"
required
format-trigger=
"reset"
v-model=
"allMonths"
type=
"digit"
:required=
"true"
placeholder=
"请输入贷款期限(1-360)"
:rules=
"[
{ validator: validatorIntRules, message: msg }]" label="贷款期限(月):" />
<mobile-input
border=
"true"
:formatter=
"formatter"
required
format-trigger=
"reset"
v-model=
"lprRate"
label=
"年利率(%):"
@
input=
"onMothRate"
:required=
"true"
placeholder=
"请输入小于100的年利率"
:rules=
"[
{ validator: validatorRules, message: LprMsg }]" />
<div
style=
"margin: 16px; display: flex; justify-content: space-around"
>
<van-button
@
click=
"reset"
style=
"width: 40%"
round
color=
"#999999"
native-type=
"button"
plain
>
重置
</van-button>
<van-button
style=
"width: 40%"
round
type=
"info"
native-type=
"submit"
>
提交
</van-button>
</div>
</van-form>
</div>
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Component
,
Vue
}
from
"
vue-property-decorator
"
;
import
{
Calendar
}
from
"
vant
"
;
import
{
Picker
}
from
"
vant
"
;
import
{
Button
}
from
"
vant
"
;
Vue
.
use
(
Button
);
Vue
.
use
(
Picker
);
Vue
.
use
(
Calendar
);
/**
* @Description 贷款测算
* @Author JiangTao
* @Date 2021-10-25 下午 08:53
*/
@
Component
({
name
:
"
LoanCalculation
"
})
export
default
class
LoanCalculation
extends
Vue
{
listShow
=
false
;
//计算结果显示
floatRate
=
""
;
//浮动利率
lprRate
:
any
=
""
;
//LPR利率
loanMoney
:
any
=
""
;
//总贷款金额
allMonths
:
any
=
""
;
//贷款月日期
monthRate
:
any
=
""
;
//月利率
monthRateFormat
:
any
=
""
;
//月利率显示格式
refundType
=
""
;
//还款方式
title
=
"
贷款试算
"
;
showPicker
=
false
;
list
:
any
[]
=
[];
keyBase
=
[];
keyBase1
=
[
"
贷款金额(万元):
"
,
"
每月还款本金(元):
"
,
"
首月还款额(元):
"
,
"
每月递减(元):
"
,
"
累计还贷款本息额(元):
"
,
"
累计还贷款利息额(元):
"
];
LprMsg
=
"
年利率为正整数或小数
"
;
keyBase2
=
[
"
贷款金额(万元):
"
,
"
每月还款额(元):
"
,
"
累计还贷款本息额(元):
"
,
"
累计还贷款利息额(元):
"
];
keyBase3
=
[
"
贷款金额(万元):
"
,
"
累计还贷款本息额(元):
"
,
"
累计还贷款利息额(元):
"
,
"
每月利息约为(元):
"
];
msg
=
""
;
reset
()
{
}
formatter
()
{
}
//toFixed四舍五入精度丢失重写
toFixed
(
num
:
any
,
s
:
any
)
{
var
times
=
Math
.
pow
(
10
,
s
);
var
des
:
any
=
num
*
times
+
0.5
;
des
=
parseInt
(
des
,
10
)
/
times
;
return
des
+
""
;
}
//输入内容为整数进行校验
validatorIntRules
(
val
:
any
)
{
if
(
val
>
360
||
val
<
1
)
{
this
.
msg
=
"
期数必须大于0小于360
"
;
return
false
;
}
else
{
this
.
msg
=
"
期数必须为整数
"
;
return
/^
[
0-9
]
*$/
.
test
(
val
);
}
}
//输入内容进行校验
validatorRules
(
val
:
any
)
{
let
reg
=
new
RegExp
(
"
^(([0-9]+
\\
.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*
\\
.[0-9]+)|([0-9]*[1-9][0-9]*))$
"
);
if
(
!
reg
.
test
(
val
))
{
this
.
LprMsg
=
"
年利率为正整数或小数
"
;
return
false
;
}
else
if
(
val
>
100
)
{
this
.
LprMsg
=
"
年利率不能大于100
"
;
return
false
;
}
return
true
;
}
//给monthRate动态绑定输入值
onMothRate
()
{
let
lprRate
=
this
.
lprRate
==
""
?
0
:
parseFloat
(
this
.
lprRate
);
let
floatRate
=
this
.
floatRate
==
""
?
0
:
parseFloat
(
this
.
floatRate
);
this
.
monthRate
=
lprRate
/
12
;
//月利率用于计算
// this.monthRate = parseFloat(this.monthRate).toFixed(2);
this
.
monthRateFormat
=
this
.
monthRate
*
100
||
0
;
//月利率用于展示
this
.
monthRateFormat
=
this
.
toFixed
(
this
.
monthRateFormat
,
3
);
}
/**
* 清除页面信息
*/
onClearInfo
()
{
this
.
listShow
=
false
;
this
.
loanMoney
=
""
;
//总贷款金额
this
.
allMonths
=
""
;
//贷款月日期
this
.
monthRate
=
""
;
//月利率
this
.
monthRateFormat
=
""
;
//月利率显示格式
this
.
refundType
=
""
;
//还款方式
this
.
floatRate
=
""
;
//浮动利率
this
.
lprRate
=
""
;
//LPR利率(年利率)
}
onSubmit
(
values
:
any
)
{
if
(
this
.
refundType
==
"
等额本金
"
)
{
//参数
let
loanMoney
:
any
=
parseFloat
(
this
.
loanMoney
);
//总贷款金额
let
allMonths
:
any
=
parseFloat
(
this
.
allMonths
);
//贷款月日期
let
monthRate
:
any
=
parseFloat
(
this
.
monthRate
)
/
100
;
//月利率,输入为百分比转换为小数;
console
.
log
(
monthRate
,
"
===============
"
);
let
monthLoanMoney
:
any
=
(
loanMoney
/
allMonths
).
toFixed
(
3
);
let
curMonthInterest
:
any
=
0
;
//本月应还利息
let
repayLoanMoney
:
any
=
0
;
//已还本金总额
let
repayInterestMoney
:
any
=
0
;
//已还利息
let
everyMonthMoney
:
any
=
0
;
//每月还本息
monthLoanMoney
=
parseFloat
(
monthLoanMoney
).
toFixed
(
2
);
//每月应还本金
this
.
list
=
[];
//结果集置空
for
(
let
i
=
0
;
i
<
allMonths
;
i
++
)
{
let
monthPayMap
:
any
=
{};
//存储每一个月的还款内容
if
(
i
<
allMonths
-
1
)
{
//不是最后一个月的话
repayLoanMoney
=
parseFloat
(
repayLoanMoney
)
+
parseFloat
(
monthLoanMoney
);
repayLoanMoney
=
repayLoanMoney
.
toFixed
(
2
);
monthPayMap
.
monthLoanMoney
=
monthLoanMoney
;
//每月应还本金
// console.log(loanMoney,'===',monthLoanMoney,'====',monthRate);
curMonthInterest
=
(
parseFloat
(
loanMoney
)
-
i
*
parseFloat
(
monthLoanMoney
))
*
parseFloat
(
monthRate
);
curMonthInterest
=
curMonthInterest
.
toFixed
(
2
);
repayInterestMoney
=
parseFloat
(
repayInterestMoney
)
+
parseFloat
(
curMonthInterest
);
repayInterestMoney
=
this
.
toFixed
(
repayInterestMoney
,
2
);
everyMonthMoney
=
parseFloat
(
monthLoanMoney
)
+
parseFloat
(
curMonthInterest
);
everyMonthMoney
=
everyMonthMoney
.
toFixed
(
2
);
}
else
{
//最后一个月,消除误差
monthLoanMoney
=
(
parseFloat
(
loanMoney
)
-
parseFloat
(
repayLoanMoney
)).
toFixed
(
2
);
repayLoanMoney
=
parseFloat
(
repayLoanMoney
)
+
parseFloat
(
monthLoanMoney
);
repayLoanMoney
=
repayLoanMoney
.
toFixed
(
2
);
monthPayMap
.
monthLoanMoney
=
monthLoanMoney
;
curMonthInterest
=
(
loanMoney
-
i
*
monthLoanMoney
)
*
monthRate
;
curMonthInterest
=
curMonthInterest
.
toFixed
(
2
);
repayInterestMoney
=
parseFloat
(
repayInterestMoney
)
+
parseFloat
(
curMonthInterest
);
repayInterestMoney
=
this
.
toFixed
(
repayInterestMoney
,
2
);
everyMonthMoney
=
parseFloat
(
monthLoanMoney
)
+
parseFloat
(
curMonthInterest
);
everyMonthMoney
=
everyMonthMoney
.
toFixed
(
2
);
}
monthPayMap
.
curMonthInterest
=
curMonthInterest
;
monthPayMap
.
everyMonthMoney
=
everyMonthMoney
;
//每月应还本息
monthPayMap
.
repayInterestMoney
=
repayInterestMoney
;
//已还利息
monthPayMap
.
repayLoanMoney
=
repayLoanMoney
;
this
.
list
.
push
(
monthPayMap
);
}
this
.
$store
.
commit
(
"
setEmpty
"
);
this
.
$store
.
commit
(
"
setCalculateRes
"
,
this
.
list
);
this
.
$router
.
push
({
path
:
"
/LoanCalculationDetail
"
});
}
else
if
(
this
.
refundType
==
"
等额本息
"
)
{
let
loanMoney
:
any
=
parseFloat
(
this
.
loanMoney
);
//总贷款金额
let
allMonths
:
any
=
parseFloat
(
this
.
allMonths
);
//贷款月日期
let
monthRate
:
any
=
parseFloat
(
this
.
monthRate
)
/
100
;
//月利率,输入为百分比转换为小数;
let
perMonthMoney
:
any
=
(
loanMoney
*
monthRate
*
Math
.
pow
(
1
+
monthRate
,
allMonths
))
/
(
Math
.
pow
(
1
+
monthRate
,
allMonths
)
-
1
);
//每月还款金额
let
allMoney
:
any
=
parseFloat
(
perMonthMoney
)
*
parseFloat
(
allMonths
);
//总还款金额
let
onlyRate
:
any
=
parseFloat
(
allMoney
)
-
parseFloat
(
loanMoney
);
//剩余本金
let
curMonthInterest
:
any
=
0
;
//本月应还利息
let
repayLoanMoney
:
any
=
0
;
//已还本金总额
let
repayInterestMoney
:
any
=
0
;
//已还利息
let
everyMonthMoney
:
any
=
0
;
//每月还本息
let
monthLoanMoney
:
any
=
0
;
//本月还本金
let
totalRepay
:
any
=
0
;
//已还本息
perMonthMoney
=
this
.
toFixed
(
perMonthMoney
,
2
);
allMoney
=
this
.
toFixed
(
allMoney
,
2
);
onlyRate
=
this
.
toFixed
(
onlyRate
,
2
);
this
.
list
=
[];
this
.
keyBase
=
[];
for
(
let
i
=
0
;
i
<
allMonths
;
i
++
)
{
let
monthPayMap
:
any
=
{};
if
(
i
<
allMonths
-
1
)
{
curMonthInterest
=
(
parseFloat
(
loanMoney
)
-
parseFloat
(
repayLoanMoney
))
*
parseFloat
(
monthRate
);
//每月还利息
monthLoanMoney
=
parseFloat
(
perMonthMoney
)
-
parseFloat
(
curMonthInterest
);
//每月本金
repayInterestMoney
=
parseFloat
(
repayInterestMoney
)
+
parseFloat
(
curMonthInterest
);
//已还利息
repayLoanMoney
=
parseFloat
(
repayLoanMoney
)
+
parseFloat
(
monthLoanMoney
);
//已还本金
totalRepay
=
parseFloat
(
totalRepay
)
+
parseFloat
(
perMonthMoney
);
//已还本息
}
else
{
everyMonthMoney
=
parseFloat
(
allMoney
)
-
parseFloat
(
totalRepay
);
//剩余本息
monthLoanMoney
=
parseFloat
(
loanMoney
)
-
parseFloat
(
repayLoanMoney
);
repayLoanMoney
=
parseFloat
(
repayLoanMoney
)
+
parseFloat
(
monthLoanMoney
);
//已还本金
curMonthInterest
=
parseFloat
(
everyMonthMoney
)
-
parseFloat
(
monthLoanMoney
);
}
monthPayMap
.
everyMonthMoney
=
this
.
toFixed
(
perMonthMoney
,
2
);
monthPayMap
.
curMonthInterest
=
this
.
toFixed
(
curMonthInterest
,
2
);
monthPayMap
.
repayInterestMoney
=
this
.
toFixed
(
repayInterestMoney
,
2
);
//已还利息
monthPayMap
.
repayLoanMoney
=
this
.
toFixed
(
repayLoanMoney
,
2
);
monthPayMap
.
monthLoanMoney
=
this
.
toFixed
(
monthLoanMoney
,
2
);
this
.
list
.
push
(
monthPayMap
);
}
this
.
$store
.
commit
(
"
setEmpty
"
);
this
.
$store
.
commit
(
"
setCalculateRes
"
,
this
.
list
);
this
.
$router
.
push
({
path
:
"
/LoanCalculationDetail
"
});
}
else
if
(
this
.
refundType
==
"
按月付息
"
)
{
let
loanMoney
:
any
=
parseFloat
(
this
.
loanMoney
);
//总贷款金额
let
allMonths
:
any
=
parseFloat
(
this
.
allMonths
);
//贷款月日期
let
monthRate
:
any
=
parseFloat
(
this
.
monthRate
)
/
100
;
//月利率,输入为百分比转换为小数;
let
curMonthInterest
:
any
=
0
;
//本月应还利息
let
repayLoanMoney
:
any
=
0
;
//已还本金总额
let
repayInterestMoney
:
any
=
0
;
//已还利息
let
everyMonthMoney
:
any
=
0
;
//每月还本息
let
monthLoanMoney
:
any
=
0
;
//本月还本金
let
totalRepay
:
any
=
0
;
//已还本息
let
onlyRate
:
any
=
loanMoney
*
allMonths
*
monthRate
;
//总利息
let
allMoney
:
any
=
loanMoney
+
onlyRate
;
//总还款金额
let
perOnlyRate
:
any
=
onlyRate
/
allMonths
;
this
.
list
=
[];
allMoney
=
this
.
toFixed
(
allMoney
,
2
);
onlyRate
=
this
.
toFixed
(
onlyRate
,
2
);
perOnlyRate
=
this
.
toFixed
(
perOnlyRate
,
2
);
curMonthInterest
=
parseFloat
(
loanMoney
)
*
parseFloat
(
monthRate
);
for
(
let
i
=
0
;
i
<
allMonths
;
i
++
)
{
let
monthPayMap
:
any
=
{};
repayInterestMoney
=
parseFloat
(
repayInterestMoney
)
+
parseFloat
(
curMonthInterest
);
if
(
i
!=
allMonths
-
1
)
{
everyMonthMoney
=
curMonthInterest
;
}
else
if
(
i
==
allMonths
-
1
)
{
everyMonthMoney
=
parseFloat
(
curMonthInterest
)
+
parseFloat
(
loanMoney
);
monthLoanMoney
=
loanMoney
;
repayLoanMoney
=
loanMoney
;
}
monthPayMap
.
everyMonthMoney
=
this
.
toFixed
(
everyMonthMoney
,
2
);
monthPayMap
.
curMonthInterest
=
this
.
toFixed
(
curMonthInterest
,
2
);
monthPayMap
.
repayInterestMoney
=
this
.
toFixed
(
repayInterestMoney
,
2
);
//已还利息
monthPayMap
.
repayLoanMoney
=
this
.
toFixed
(
repayLoanMoney
,
2
);
monthPayMap
.
monthLoanMoney
=
this
.
toFixed
(
monthLoanMoney
,
2
);
this
.
list
.
push
(
monthPayMap
);
}
this
.
$store
.
commit
(
"
setEmpty
"
);
this
.
$store
.
commit
(
"
setCalculateRes
"
,
this
.
list
);
this
.
$router
.
push
({
path
:
"
/LoanCalculationDetail
"
});
}
else
{
this
.
list
=
[];
}
//跳转到还款页面
}
onConfirm
(
value
:
any
)
{
this
.
refundType
=
value
;
this
.
showPicker
=
false
;
}
/**
* @desc: keepAlive 处理代码逻辑,根据路由判断进入页面销毁缓存数据
* @author: zmk
* @date: 2022年01月25日23:07:36
* */
activated
()
{
this
.
$router
.
beforeEach
((
to
,
from
,
next
)
=>
{
if
(
from
.
path
==
"
/main/workbench
"
)
{
this
.
listShow
=
false
;
this
.
loanMoney
=
""
;
//总贷款金额
this
.
allMonths
=
""
;
//贷款月日期
this
.
monthRate
=
""
;
//月利率
this
.
monthRateFormat
=
""
;
//月利率显示格式
this
.
refundType
=
""
;
//还款方式
this
.
floatRate
=
""
;
//浮动利率
this
.
lprRate
=
""
;
//LPR利率(年利率)
}
next
();
});
}
// watch: {
// lprRate() {
// if (this.lprRate > 100) {
// this.LprMsg = '年利率不能大于100';
// } else {
// this.LprMsg = '年利率为正整数或小数';
// }
// }
// }
}
</
script
>
<
style
scoped
>
.content
{
width
:
60%
;
padding-top
:
10%
;
margin
:
0
auto
;
}
::v-deep
.d-field-label
{
width
:
110px
!important
;
text-align
:
right
;
}
::v-deep
.van-button--info
{
background-color
:
#fd5065
;
border
:
1px
solid
#fd5065
;
}
::v-deep
.van-button__text
{
font-size
:
16px
;
}
::v-deep
.van-cell
::after
{
border
:
0
;
}
</
style
>
src/components/workbench/company-common-functions/auxiliary-tools/RepaymentTrial.vue
0 → 100644
浏览文件 @
ce638afd
<
template
>
<!-- 随意分-->
<div
class=
"content"
>
<div
style=
"width: 100%"
>
<van-form
label-width=
"25%"
@
submit=
"onSubmit"
>
<mobile-input
:formatter=
"formatter"
size=
"100"
format-trigger=
"reset"
v-model=
"loanMoney"
:required=
"true"
:rules=
"[
{ validator: validatorFloatNum, message: '输入有误,请输入' }]"
type="number"
label="贷款金额(元)"
placeholder="请输入贷款金额"
/>
<d-select
label=
"还款方式"
:rules=
"[
{ required: true, message: '还款方式不能为空' }]"
placeholder="请选择"
:required="true"
border="true"
@input="selectSYFRate"
v-model="Repayment"
sfield="Repayment"
size="small"
>
</d-select>
<d-select
label=
"手续费收取方式"
:rules=
"[
{ required: true, message: '手续费收取方式不能为空' }]"
placeholder="请选择"
:required="true"
border="true"
v-model="brokerage"
sfield="brokerage"
size="small"
>
</d-select>
<mobile-input
:formatter=
"formatter"
format-trigger=
"reset"
readonly
v-model=
"yearRate"
:rules=
"[
{ validator: validatorRules, message: '输入有误,请输入' }]"
:label="label1"
/>
<mobile-input
:formatter=
"formatter"
format-trigger=
"reset"
readonly
v-model=
"AllRate"
:rules=
"[
{ validator: validatorRules, message: '输入有误,请输入' }]"
:label="label2"
/>
<mobile-input
:formatter=
"formatter"
format-trigger=
"reset"
v-model=
"yearRate_yh"
:required=
"true"
label=
"优惠折扣"
placeholder=
"请输入"
:rules=
"[
{ validator: validatorRules, message: rateMsg }]"
/>
<d-select
v-if=
"Repayment == '1'"
name=
"NUM"
label=
"期数(月)"
placeholder=
"请选择期数"
:rules=
"[
{ required: true, message: '期数不能为空' }]"
border="true"
sfield="NUM"
:required="true"
v-model="NUMS" />
<mobile-input
v-if=
"Repayment == '2'"
:formatter=
"formatter"
format-trigger=
"reset"
v-model=
"NUMS2"
:required=
"true"
type=
"digit"
:rules=
"[
{ validator: validatorNumber, message: '期数必须小于等于730' }]"
label="期数(天)"
/>
<div
style=
"margin: 16px; display: flex; justify-content: space-around"
>
<van-button
@
click=
"reset"
style=
"width: 40%"
round
color=
"#999999"
native-type=
"button"
plain
>
重置
</van-button
>
<van-button
style=
"width: 40%"
round
type=
"info"
native-type=
"submit"
>
提交
</van-button
>
</div>
</van-form>
</div>
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Component
,
Vue
,
Watch
}
from
"
vue-property-decorator
"
;
import
nettyApi
from
"
@/constants/api/ms-netty/netty.api.ts
"
;
import
IF
from
"
@/public/factory/InterFaceFactory
"
;
import
{
NativeUI
}
from
"
@/public/ts/NativeUI
"
;
import
systemApi
from
"
@/constants/api/ms-system/system.api.ts
"
;
/**
*@description: 随意分还款试算
*@author: wanghang
*@date: 2022-02-16
*/
@
Component
({
name
:
"
RepaymentTrial
"
})
export
default
class
RepaymentTrial
extends
Vue
{
title
=
"
随意分还款试算
"
;
columns1
=
[
"
每月1日
"
,
"
每月2日
"
,
"
每月3日
"
,
"
每月4日
"
,
"
每月5日
"
];
showPicker1
=
false
;
showPicker2
=
false
;
loanMoney
:
any
=
""
;
yearRate
:
any
=
""
;
yearRate_yh
:
any
=
""
;
//优惠卷利率
NUMS
:
any
=
""
;
//选择的期数,月
NUMS2
:
any
=
""
;
//手写的期数,天
Repayment
:
any
=
""
;
brokerage
:
any
=
""
;
resInfo
:
any
[]
=
[];
pattern
:
any
=
/^
[
1-9
]\d
*$/
;
//整数校验
rateMsg
:
any
=
"
请填写正确的折扣
"
;
inrateType
:
any
=
"
aytxbj_inrate
"
;
//随意分类别
AllRate
:
any
=
""
;
label1
:
any
=
"
年利率(%)
"
;
label2
:
any
=
"
总费率(%)
"
;
largeDay
:
any
=
0
;
//利率请求默认天数
smallDay
:
any
=
1000
;
//利率请求默认天数
formatter
()
{
}
onSubmit
()
{
this
.
selectSYFInfo
();
}
reset
()
{
this
.
loanMoney
=
""
;
this
.
yearRate
=
""
;
this
.
yearRate_yh
=
""
;
//优惠卷利率
this
.
NUMS
=
""
;
this
.
Repayment
=
""
;
this
.
AllRate
=
""
;
this
.
NUMS2
=
""
;
this
.
brokerage
=
""
;
}
selectSYFInfo
()
{
const
param
:
any
=
{
tc
:
"
MCEP
"
,
AMT
:
this
.
loanMoney
,
inRate
:
this
.
yearRate
,
inRate_YH
:
this
.
Repayment
==
"
1
"
?
this
.
yearRate_yh
/
100
:
this
.
yearRate_yh
/
10000
,
NUMS
:
this
.
Repayment
==
"
1
"
?
this
.
NUMS
:
this
.
NUMS2
,
Repayment
:
this
.
Repayment
,
brokerage
:
this
.
brokerage
};
NativeUI
.
showWaiting
(
"
正在查询...
"
);
return
IF
.
transferDataInter
(
systemApi
.
SYFLoanmoneyComputed
,
param
).
then
((
res
:
any
)
=>
{
NativeUI
.
closeWaiting
();
if
(
res
.
code
==
1
)
{
this
.
resInfo
=
res
.
data
.
LIST
;
this
.
$store
.
commit
(
"
setEmpty
"
);
this
.
$store
.
commit
(
"
setCalculateRes
"
,
this
.
resInfo
);
this
.
$router
.
push
({
path
:
"
/RepaymentTrialDetail
"
});
}
else
{
NativeUI
.
toast
(
res
.
message
);
}
});
}
//查询随意分利率
selectSYFRate
(
val
:
any
)
{
if
(
val
==
1
)
{
//按月付款
this
.
largeDay
=
1
;
this
.
smallDay
=
1000
;
}
else
if
(
val
==
2
)
{
if
(
this
.
NUMS2
==
""
||
this
.
NUMS2
==
0
||
(
this
.
NUMS2
>=
1
&&
this
.
NUMS2
<=
365
))
{
this
.
largeDay
=
1
;
this
.
smallDay
=
365
;
}
else
{
this
.
largeDay
=
366
;
this
.
smallDay
=
1000
;
}
}
const
param
=
{
capitalType
:
val
,
largeDay
:
this
.
largeDay
,
smallDay
:
this
.
smallDay
,
pageNum
:
"
1
"
,
pageSize
:
"
10
"
};
return
IF
.
transferDataInter
(
systemApi
.
SYFLoanRateSelect
,
param
).
then
((
res
:
any
)
=>
{
if
(
res
.
code
==
1
)
{
//查询回来利率
this
.
yearRate
=
res
.
data
.
records
[
0
].
rate
;
}
else
{
NativeUI
.
toast
(
res
.
msg
);
}
});
}
//浮点校验规则
validator
(
val
:
any
)
{
return
/^
(
-
?\d
+
)(\.\d
+
)?
$/
.
test
(
val
);
}
//输入内容进行校验
validatorRules
(
val
:
any
)
{
let
reg
=
new
RegExp
(
"
^d{1,2}$|^
\\
d{1,2}
"
);
if
(
!
reg
.
test
(
val
))
{
return
false
;
}
else
if
(
val
>
100
)
{
return
false
;
}
return
true
;
}
//验证非负两位浮点数
validatorFloatNum
(
val
:
any
)
{
let
reg
=
new
RegExp
(
"
^(([0-9]+
\\
.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*
\\
.[0-9]+)|([0-9]*[1-9][0-9]*))$
"
);
if
(
!
reg
.
test
(
val
))
{
return
false
;
}
return
true
;
}
validatorNumber
(
val
:
any
)
{
console
.
log
(
val
);
let
reg
=
new
RegExp
(
"
^[1-9]
\\
d*$
"
);
if
(
!
reg
.
test
(
val
))
{
return
false
;
}
else
if
(
val
>
730
)
{
return
false
;
}
else
{
return
true
;
}
}
activated
()
{
this
.
$router
.
beforeEach
((
to
,
from
,
next
)
=>
{
if
(
from
.
path
==
"
/main/workbench
"
)
{
this
.
loanMoney
=
""
;
this
.
yearRate
=
""
;
this
.
yearRate_yh
=
""
;
//优惠卷利率
this
.
AllRate
=
""
;
this
.
NUMS
=
""
;
this
.
NUMS2
=
""
;
this
.
Repayment
=
""
;
this
.
brokerage
=
""
;
}
next
();
});
}
@
Watch
(
"
yearRate
"
)
yearRateFunction
(
val
:
any
)
{
if
(
this
.
Repayment
==
"
1
"
)
{
let
payoff
=
this
.
yearRate_yh
;
if
(
payoff
==
""
)
{
this
.
AllRate
=
((
this
.
NUMS
*
val
)
/
12
).
toFixed
(
2
).
toString
();
}
else
{
this
.
AllRate
=
((
this
.
NUMS
*
val
*
payoff
/
100
)
/
12
).
toFixed
(
2
).
toString
();
}
}
else
if
(
this
.
Repayment
==
"
2
"
)
{
// this.selectSYFRate("2");
let
payoff
=
this
.
yearRate_yh
;
if
(
payoff
==
""
)
{
this
.
AllRate
=
((
this
.
NUMS2
*
val
)
/
100
).
toFixed
(
2
).
toString
();
}
else
{
this
.
AllRate
=
((
this
.
NUMS2
*
val
*
payoff
/
100
)
/
100
).
toFixed
(
2
).
toString
();
}
}
}
@
Watch
(
"
yearRate_yh
"
)
yearRate_yhFunction
(
val
:
any
)
{
if
(
this
.
yearRate_yh
<
0
)
{
this
.
rateMsg
=
"
折扣不能为负
"
;
}
else
{
this
.
rateMsg
=
"
请填写正确的折扣
"
;
}
if
(
this
.
Repayment
==
"
1
"
)
{
let
payoff
=
val
;
if
(
payoff
==
""
)
{
this
.
AllRate
=
((
this
.
NUMS
*
this
.
yearRate
)
/
12
).
toFixed
(
2
).
toString
();
}
else
{
this
.
AllRate
=
((
this
.
NUMS
*
this
.
yearRate
*
payoff
/
100
)
/
12
).
toFixed
(
2
).
toString
();
}
}
else
if
(
this
.
Repayment
==
"
2
"
)
{
let
payoff
=
val
;
if
(
payoff
==
""
)
{
this
.
AllRate
=
((
this
.
NUMS2
*
this
.
yearRate
)
/
100
).
toFixed
(
2
).
toString
();
}
else
{
this
.
AllRate
=
((
this
.
NUMS2
*
this
.
yearRate
*
payoff
/
100
)
/
100
).
toFixed
(
2
).
toString
();
}
}
}
@
Watch
(
"
NUMS2
"
)
NUMS2Function
(
val
:
any
)
{
this
.
selectSYFRate
(
"
2
"
);
let
payoff
=
this
.
yearRate_yh
;
if
(
payoff
==
""
)
{
this
.
AllRate
=
((
val
*
this
.
yearRate
)
/
100
).
toFixed
(
2
).
toString
();
}
else
{
this
.
AllRate
=
((
val
*
this
.
yearRate
*
payoff
/
100
)
/
100
).
toFixed
(
2
).
toString
();
}
}
@
Watch
(
"
NUMS
"
)
NUMSFunction
(
val
:
any
)
{
if
(
this
.
Repayment
==
"
1
"
)
{
let
payoff
=
this
.
yearRate_yh
;
if
(
payoff
==
""
)
{
this
.
AllRate
=
((
val
*
this
.
yearRate
)
/
12
).
toFixed
(
2
).
toString
();
}
else
{
this
.
AllRate
=
((
val
*
this
.
yearRate
*
payoff
/
100
)
/
12
).
toFixed
(
2
).
toString
();
}
}
}
@
Watch
(
"
Repayment
"
)
RepaymentFunction
(
val
:
any
)
{
if
(
val
==
"
1
"
)
{
this
.
label1
=
"
年利率(%)
"
;
this
.
label2
=
"
总费率(%)
"
;
}
else
if
(
val
==
"
2
"
)
{
this
.
label1
=
"
天利率(万分)
"
;
this
.
label2
=
"
总费率(%)
"
;
}
}
}
</
script
>
<
style
scoped
>
.content
{
width
:
60%
;
padding-top
:
10%
;
margin
:
0
auto
;
}
::v-deep
.d-form-field
.van-field
{
align-items
:
center
;
}
::v-deep
.van-cell
::after
{
border
:
0
;
}
::v-deep
.van-button--info
{
background-color
:
#fd5065
;
border
:
1px
solid
#fd5065
;
}
::v-deep
.van-button__text
{
font-size
:
16px
;
}
</
style
>
src/components/workbench/company-common-functions/auxiliary-tools/financial-trial/ManufacturingTrial.vue
0 → 100644
浏览文件 @
ce638afd
<
template
>
<div>
<van-form
@
submit=
"onSubmit"
>
<table>
<tr>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" type="number" format-trigger="reset" v-model="manufacturingObject.GPM"
label="销售毛利率(%)" size="small" />
</td>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset" v-model="manufacturingObject.ROE" type="number" label="净资产收益率(%)"
size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" type="number" format-trigger="reset" v-model="manufacturingObject.ASSET"
label="资产负债率(%)" size="small" />
</td>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset"
v-model="manufacturingObject.EARNED" label="已获利息倍数" type="number" size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset"
v-model="manufacturingObject.InterBearing" type="number" label="有息负债率(%)" size="small" />
</td>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset"
v-model="manufacturingObject.ACCRECETRUN" type="number" label="应收账款周转率(%)" size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset" v-model="manufacturingObject.DEPTURN"
label="存款周转率(%)" type="number" size="small" />
</td>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset"
v-model="manufacturingObject.FAT" type="number" label="固定资产周转率(%)" size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset" v-model="manufacturingObject.ITR"
label="存货周转率(%)" type="number" size="small" />
</td>
<td>
<mobile-input
:formatter=
"formatter"
:required=
"true"
type=
"number"
format-trigger=
"reset"
v-model=
"manufacturingObject.SARE"
label=
"销售收入(元)"
size=
"small"
/>
</td>
</tr>
<tr>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ pattern, message: '年限为整数' }]" :required="true" format-trigger="reset" v-model="manufacturingObject.ESYEAR"
label="成立年限" type="digit" size="small" />
</td>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: floatMsg }]" :required="true" format-trigger="reset" v-model="manufacturingObject.TASS"
label="总资产(元)" type="digit" size="small" />
</td>
</tr>
<tr>
<td
colspan=
"2"
>
<mobile-input
:required=
"true"
:rules=
"[
{ validator: testFloat, message: floatMsg }]" :formatter="formatter" format-trigger="reset" v-model="manufacturingObject.NASS"
label="净资产(元)" type="number" size="small" />
</td>
</tr>
<tr>
<td
colspan=
"2"
>
<div
style=
"margin: 16px; display: flex; justify-content: space-around"
>
<van-button
@
click=
"reset"
style=
"width: 25%"
round
color=
"#999999"
native-type=
"button"
plain
>
重置
</van-button>
<van-button
style=
"width: 25%"
round
type=
"info"
native-type=
"submit"
>
试算
</van-button>
</div>
</td>
</tr>
</table>
</van-form>
<van-dialog
:show-cancel-button=
"false"
:show-confirm-button=
"false"
:close-on-click-overlay=
"true"
v-model=
"showDialogReject"
>
<div
class=
"dialog-box"
style=
"position: relative"
>
<div
class=
"dialog-title"
>
测算结果
</div>
<div
class=
"score-box"
>
{{
totalScore
}}
</div>
<svg
class=
"icon icon-img"
aria-hidden=
"true"
>
<use
xlink:href=
"#icon-a-cepingjieguo110x110ziyuan40"
></use>
</svg>
<van-button
class=
"submitstyle3"
block
native-type=
"button"
@
click=
"showDialogReject = false"
>
知道了
</van-button>
</div>
</van-dialog>
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Component
,
Vue
}
from
"
vue-property-decorator
"
;
import
systemApi
from
"
@/constants/api/ms-system/system.api.ts
"
;
import
IF
from
"
@/public/factory/InterFaceFactory
"
;
import
{
NativeUI
}
from
"
@/public/ts/NativeUI
"
;
/**
* @Description 制造业试算
* @Author 王航
* @Date 2022-2-23 下午 04:32
*/
@
Component
({
name
:
"
ManufacturingTrial
"
})
export
default
class
ManufacturingTrial
extends
Vue
{
manufacturingObject
:
any
=
{
//制造业对象
GPM
:
''
,
//销售毛利率
ROE
:
''
,
//净资产收益率
ASSET
:
''
,
//资产负债率
EARNED
:
''
,
//已获息倍数
InterBearing
:
''
,
//有息负债率
ACCRECETRUN
:
''
,
//应收账款周转率
DEPTURN
:
''
,
//存款周转率
FAT
:
''
,
//固定资产周转率
ITR
:
''
,
//存货周转率
SARE
:
''
,
//销售收入
ESYEAR
:
''
,
//成立年限
TASS
:
''
,
//总资产
NASS
:
''
//净资产
};
pattern
=
/^
[
1-9
]\d
*$/
;
//整数校验
totalScore
:
any
=
''
;
//总分数
showDialogReject
=
false
;
floatMsg
=
''
;
//浮点数验证信息
formatter
()
{
}
onSubmit
(
values
:
any
)
{
// console.log("submit", values);
this
.
selectCompanyComputeInfo
();
}
selectCompanyComputeInfo
()
{
let
param
=
{
GPM
:
this
.
manufacturingObject
.
GPM
,
//销售毛利率
ROE
:
this
.
manufacturingObject
.
ROE
,
//净资产收益率
ASSET
:
this
.
manufacturingObject
.
ASSET
,
//资产负债率
EARNED
:
this
.
manufacturingObject
.
EARNED
,
//已获息倍数
InterBearing
:
this
.
manufacturingObject
.
InterBearing
,
//有息负债率
ACCRECETRUN
:
this
.
manufacturingObject
.
ACCRECETRUN
,
//应收账款周转率
DEPTURN
:
this
.
manufacturingObject
.
DEPTURN
,
//存款周转率
FAT
:
this
.
manufacturingObject
.
FAT
,
//固定资产周转率
ITR
:
this
.
manufacturingObject
.
ITR
,
//存货周转率
SARE
:
this
.
manufacturingObject
.
SARE
,
//销售收入
ESYEAR
:
this
.
manufacturingObject
.
ESYEAR
,
//成立年限
TASS
:
this
.
manufacturingObject
.
TASS
,
//总资产
NASS
:
this
.
manufacturingObject
.
NASS
,
//净资产
COMTYPE
:
'
0
'
//0表示制造业企业,1表示非制造业
};
NativeUI
.
showWaiting
(
'
正在查询...
'
);
return
IF
.
transferDataInter
(
systemApi
.
companyMoneyComputed
,
param
).
then
((
res
:
any
)
=>
{
NativeUI
.
closeWaiting
();
if
(
res
.
code
==
1
)
{
this
.
totalScore
=
res
.
data
.
totalAch
;
//总分
console
.
log
(
this
.
totalScore
);
this
.
showDialogReject
=
true
;
}
else
{
NativeUI
.
toast
(
res
.
message
);
}
});
}
formatDate
(
date
:
any
)
{
return
`
${
date
.
getFullYear
()}
-
${
date
.
getMonth
()
+
1
}
-
${
date
.
getDate
()}
`
;
}
reset
()
{
this
.
manufacturingObject
.
GPM
=
''
;
this
.
manufacturingObject
.
ROE
=
''
;
this
.
manufacturingObject
.
ASSET
=
''
;
this
.
manufacturingObject
.
EARNED
=
''
;
this
.
manufacturingObject
.
InterBearing
=
''
;
this
.
manufacturingObject
.
ACCRECETRUN
=
''
;
this
.
manufacturingObject
.
DEPTURN
=
''
;
this
.
manufacturingObject
.
FAT
=
''
;
this
.
manufacturingObject
.
ITR
=
''
;
this
.
manufacturingObject
.
SARE
=
''
;
this
.
manufacturingObject
.
ESYEAR
=
''
;
this
.
manufacturingObject
.
TASS
=
''
;
this
.
manufacturingObject
.
NASS
=
''
;
}
testFloat
(
val
:
any
)
{
if
(
parseFloat
(
val
)
<
0
)
{
// this.floatMsg = '必须为正数';
return
false
;
}
else
{
// this.floatMsg = '必须为整数或者小数';
return
/^
(
-
?\d
+
)(\.\d
+
)?
$/
.
test
(
val
);
}
}
}
</
script
>
<
style
scoped
>
table
{
width
:
90%
;
margin
:
0
auto
;
}
::v-deep
.van-button--info
{
background-color
:
#fd5065
;
border
:
1px
solid
#fd5065
;
}
::v-deep
.van-button__text
{
font-size
:
16px
;
}
.dialog-box
{
margin
:
0
auto
;
background
:
#fff
;
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
width
:
300px
;
height
:
306px
;
}
.icon-img
{
width
:
120px
;
height
:
120px
;
margin-top
:
20px
;
margin-bottom
:
20px
;
color
:
rgb
(
17
,
167
,
30
);
}
.dialog-title
{
font-weight
:
bold
;
margin-top
:
10%
;
font-size
:
16px
;
color
:
#333
;
}
.score-box
{
position
:
absolute
;
font-size
:
36px
;
font-weight
:
400
;
top
:
105px
;
z-index
:
999
;
color
:
#f59a23
;
}
.submitstyle3
{
width
:
268px
;
height
:
36px
;
border-radius
:
6px
;
margin-top
:
30px
;
color
:
#fff
;
background-color
:
#ff574c
;
border-color
:
#ff574c
;
font-size
:
16px
;
text-align
:
center
;
font-weight
:
400
;
}
</
style
>
src/components/workbench/company-common-functions/auxiliary-tools/financial-trial/UnManufacturingTrial.vue
0 → 100644
浏览文件 @
ce638afd
<
template
>
<div>
<van-form
@
submit=
"onSubmit"
>
<table>
<tr>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" type="number" format-trigger="reset" v-model="noManufacturingObject.GPM"
label="销售毛利率(%)" size="small" />
</td>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset" v-model="noManufacturingObject.ROE" type="number" label="净资产收益率(%)"
size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" type="number" format-trigger="reset" v-model="noManufacturingObject.ASSET"
label="资产负债率(%)" size="small" />
</td>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset"
v-model="noManufacturingObject.EARNED" label="已获利息倍数" type="number" size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset"
v-model="noManufacturingObject.InterBearing" type="number" label="有息负债率(%)" size="small" />
</td>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset"
v-model="noManufacturingObject.ACCRECETRUN" type="number" label="应收账款周转率(%)" size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset" v-model="noManufacturingObject.DEPTURN"
label="存款周转率(%)" type="number" size="small" />
</td>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset"
v-model="noManufacturingObject.FAT" type="number" label="固定资产周转率(%)" size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset" v-model="noManufacturingObject.ITR"
label="存货周转率(%)" type="number" size="small" />
</td>
<td>
<mobile-input
:formatter=
"formatter"
:required=
"true"
type=
"number"
format-trigger=
"reset"
v-model=
"noManufacturingObject.SARE"
label=
"销售收入(元)"
size=
"small"
/>
</td>
</tr>
<tr>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ pattern, message: '年限为整数' }]" :required="true" format-trigger="reset" v-model="noManufacturingObject.ESYEAR"
label="成立年限" type="digit" size="small" />
</td>
<td>
<mobile-input
:formatter=
"formatter"
:rules=
"[
{ validator: testFloat, message: floatMsg }]" :required="true" format-trigger="reset" v-model="noManufacturingObject.TASS"
label="总资产(元)" type="digit" size="small" />
</td>
</tr>
<tr>
<td
colspan=
"2"
>
<mobile-input
:required=
"true"
:rules=
"[
{ validator: testFloat, message: floatMsg }]" :formatter="formatter" format-trigger="reset" v-model="noManufacturingObject.NASS"
label="净资产(元)" type="number" size="small" />
</td>
</tr>
<tr>
<td
colspan=
"2"
>
<div
style=
"margin: 16px; display: flex; justify-content: space-around"
>
<van-button
@
click=
"reset"
style=
"width: 25%"
round
color=
"#999999"
native-type=
"button"
plain
>
重置
</van-button>
<van-button
style=
"width: 25%"
round
type=
"info"
native-type=
"submit"
>
试算
</van-button>
</div>
</td>
</tr>
</table>
</van-form>
<van-dialog
:show-cancel-button=
"false"
:show-confirm-button=
"false"
:close-on-click-overlay=
"true"
v-model=
"showDialogReject"
>
<div
class=
"dialog-box"
style=
"position: relative"
>
<div
class=
"dialog-title"
>
测算结果
</div>
<div
class=
"score-box"
>
{{
totalScore
}}
</div>
<svg
class=
"icon icon-img"
aria-hidden=
"true"
>
<use
xlink:href=
"#icon-a-cepingjieguo110x110ziyuan40"
></use>
</svg>
<van-button
class=
"submitstyle3"
block
native-type=
"button"
@
click=
"showDialogReject = false"
>
知道了
</van-button>
</div>
</van-dialog>
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Component
,
Vue
}
from
"
vue-property-decorator
"
;
import
systemApi
from
"
@/constants/api/ms-system/system.api.ts
"
;
import
IF
from
"
@/public/factory/InterFaceFactory
"
;
import
{
NativeUI
}
from
"
@/public/ts/NativeUI
"
;
/**
* @Description 非制造业试算
* @Author 王航
* @Date 2022-2-23 下午 04:32
*/
@
Component
({
name
:
"
NoManufacturingTrial
"
})
export
default
class
NoManufacturingTrial
extends
Vue
{
noManufacturingObject
:
any
=
{
//非制造业对象
GPM
:
''
,
//销售毛利率
ROE
:
''
,
//净资产收益率
ASSET
:
''
,
//资产负债率
EARNED
:
''
,
//已获息倍数
InterBearing
:
''
,
//有息负债率
ACCRECETRUN
:
''
,
//应收账款周转率
DEPTURN
:
''
,
//存款周转率
FAT
:
''
,
//固定资产周转率
ITR
:
''
,
//存货周转率
SARE
:
''
,
//销售收入
ESYEAR
:
''
,
//成立年限
TASS
:
''
,
//总资产
NASS
:
''
//净资产
};
pattern
=
/^
[
1-9
]\d
*$/
;
//整数校验
totalScore
:
any
=
''
;
//总分数
showDialogReject
=
false
;
floatMsg
=
''
;
//浮点数验证信息
formatter
()
{
}
onSubmit
(
values
:
any
)
{
// console.log("submit", values);
this
.
selectCompanyComputeInfo
();
}
selectCompanyComputeInfo
()
{
let
param
=
{
GPM
:
this
.
noManufacturingObject
.
GPM
,
//销售毛利率
ROE
:
this
.
noManufacturingObject
.
ROE
,
//净资产收益率
ASSET
:
this
.
noManufacturingObject
.
ASSET
,
//资产负债率
EARNED
:
this
.
noManufacturingObject
.
EARNED
,
//已获息倍数
InterBearing
:
this
.
noManufacturingObject
.
InterBearing
,
//有息负债率
ACCRECETRUN
:
this
.
noManufacturingObject
.
ACCRECETRUN
,
//应收账款周转率
DEPTURN
:
this
.
noManufacturingObject
.
DEPTURN
,
//存款周转率
FAT
:
this
.
noManufacturingObject
.
FAT
,
//固定资产周转率
ITR
:
this
.
noManufacturingObject
.
ITR
,
//存货周转率
SARE
:
this
.
noManufacturingObject
.
SARE
,
//销售收入
ESYEAR
:
this
.
noManufacturingObject
.
ESYEAR
,
//成立年限
TASS
:
this
.
noManufacturingObject
.
TASS
,
//总资产
NASS
:
this
.
noManufacturingObject
.
NASS
,
//净资产
COMTYPE
:
'
1
'
//0表示制造业企业,1表示非制造业
};
NativeUI
.
showWaiting
(
'
正在查询...
'
);
return
IF
.
transferDataInter
(
systemApi
.
companyMoneyComputed
,
param
).
then
((
res
:
any
)
=>
{
NativeUI
.
closeWaiting
();
if
(
res
.
code
==
1
)
{
this
.
totalScore
=
res
.
data
.
totalAch
;
//总分
console
.
log
(
this
.
totalScore
);
this
.
showDialogReject
=
true
;
}
else
{
NativeUI
.
toast
(
res
.
message
);
}
});
}
formatDate
(
date
:
any
)
{
return
`
${
date
.
getFullYear
()}
-
${
date
.
getMonth
()
+
1
}
-
${
date
.
getDate
()}
`
;
}
reset
()
{
this
.
noManufacturingObject
.
GPM
=
''
;
this
.
noManufacturingObject
.
ROE
=
''
;
this
.
noManufacturingObject
.
ASSET
=
''
;
this
.
noManufacturingObject
.
EARNED
=
''
;
this
.
noManufacturingObject
.
InterBearing
=
''
;
this
.
noManufacturingObject
.
ACCRECETRUN
=
''
;
this
.
noManufacturingObject
.
DEPTURN
=
''
;
this
.
noManufacturingObject
.
FAT
=
''
;
this
.
noManufacturingObject
.
ITR
=
''
;
this
.
noManufacturingObject
.
SARE
=
''
;
this
.
noManufacturingObject
.
ESYEAR
=
''
;
this
.
noManufacturingObject
.
TASS
=
''
;
this
.
noManufacturingObject
.
NASS
=
''
;
}
testFloat
(
val
:
any
)
{
if
(
parseFloat
(
val
)
<
0
)
{
// this.floatMsg = '必须为正数';
return
false
;
}
else
{
// this.floatMsg = '必须为整数或者小数';
return
/^
(
-
?\d
+
)(\.\d
+
)?
$/
.
test
(
val
);
}
}
}
</
script
>
<
style
scoped
>
table
{
width
:
90%
;
margin
:
0
auto
;
}
::v-deep
.van-button--info
{
background-color
:
#fd5065
;
border
:
1px
solid
#fd5065
;
}
::v-deep
.van-button__text
{
font-size
:
16px
;
}
.dialog-box
{
margin
:
0
auto
;
background
:
#fff
;
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
width
:
300px
;
height
:
306px
;
}
.icon-img
{
width
:
120px
;
height
:
120px
;
margin-top
:
20px
;
margin-bottom
:
20px
;
color
:
rgb
(
17
,
167
,
30
);
}
.dialog-title
{
font-weight
:
bold
;
margin-top
:
10%
;
font-size
:
16px
;
color
:
#333
;
}
.score-box
{
position
:
absolute
;
font-size
:
36px
;
font-weight
:
400
;
top
:
105px
;
z-index
:
999
;
color
:
#f59a23
;
}
.submitstyle3
{
width
:
268px
;
height
:
36px
;
border-radius
:
6px
;
margin-top
:
30px
;
color
:
#fff
;
background-color
:
#ff574c
;
border-color
:
#ff574c
;
font-size
:
16px
;
text-align
:
center
;
font-weight
:
400
;
}
</
style
>
src/components/workbench/company-common-functions/business-inquiry/ContractSigningAndBilling.vue
0 → 100644
浏览文件 @
ce638afd
<
template
>
<div>
合同签订及出账
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Component
,
Vue
}
from
"
vue-property-decorator
"
;
/**
* @Description 合同签订及出账
* @Author JiangTao
* @Date 2021-11-10 下午 03:32
*/
@
Component
({
name
:
"
ContractSigningAndBilling
"
,
})
export
default
class
ContractSigningAndBilling
extends
Vue
{}
</
script
>
<
style
scoped
></
style
>
src/components/workbench/company-common-functions/business-inquiry/LoanApplication.vue
0 → 100644
浏览文件 @
ce638afd
<
template
>
<div>
贷款申请
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Component
,
Vue
}
from
"
vue-property-decorator
"
;
/**
* @Description 贷款申请
* @Author JiangTao
* @Date 2021-11-10 下午 03:32
*/
@
Component
({
name
:
"
LoanApplication
"
,
})
export
default
class
LoanApplication
extends
Vue
{}
</
script
>
<
style
scoped
></
style
>
src/components/workbench/company-common-functions/business-inquiry/MarketingTask.vue
0 → 100644
浏览文件 @
ce638afd
<
template
>
<div
class=
"content"
>
<div
class=
"content-top"
>
<div
class=
"content-top-left"
>
营销业务12笔
</div>
<div
class=
"content-top-right"
>
<div
class=
"content-top-right-left"
>
<van-field
readonly
class=
"choose-content"
clickable
:value=
"choose_content"
@
click=
"choose = true"
/>
<van-popup
v-model=
"choose"
style=
"width: 30%"
round
position=
"center"
>
<van-picker
show-toolbar
:columns=
"type"
@
cancel=
"choose = false"
@
confirm=
"choose_t"
:default-index=
"1"
/>
</van-popup>
</div>
<div
class=
"content-top-right-right"
>
<div
class=
"search-logo"
><img
src=
"../../../../assets/images/search-logo.png"
alt=
""
/></div>
<div
class=
"search-bar"
>
<van-form>
<van-field
class=
"name"
v-model=
"companyname"
name=
"companyname"
placeholder=
"请输入企业名称"
/>
</van-form>
</div>
<div
class=
"search"
>
搜索
</div>
</div>
</div>
</div>
<div
class=
"content-bottm"
>
<div
class=
"task-list"
>
<div
class=
"task-list-left"
>
<div
class=
"task-list-left-logo"
>
<div><img
src=
"../../../../assets/svg/title.svg"
alt=
""
/></div>
</div>
<div
class=
"task-list-left-text"
>
<div
class=
"task-list-name"
>
花儿影业有限公司-客户拜访
</div>
<div
class=
"task-list-address"
>
<div><img
src=
"../../../../assets/svg/position-2.svg"
alt=
""
/></div>
<div>
0.3km
</div>
<div>
成都市武侯区天谷7路腾飞科汇城
</div>
</div>
</div>
</div>
<div
class=
"task-list-right"
>
发送短信
</div>
</div>
<div
class=
"task-list"
>
<div
class=
"task-list-left"
>
<div
class=
"task-list-left-logo"
>
<div><img
src=
"../../../../assets/svg/title.svg"
alt=
""
/></div>
</div>
<div
class=
"task-list-left-text"
>
<div
class=
"task-list-name"
>
花儿影业有限公司-客户拜访
</div>
<div
class=
"task-list-address"
>
<div><img
src=
"../../../../assets/svg/position-2.svg"
alt=
""
/></div>
<div>
0.3km
</div>
<div>
成都市武侯区天谷7路腾飞科汇城
</div>
</div>
</div>
</div>
<div
class=
"task-list-right"
>
发送短信
</div>
</div>
<div
class=
"task-list"
>
<div
class=
"task-list-left"
>
<div
class=
"task-list-left-logo"
>
<div><img
src=
"../../../../assets/svg/title.svg"
alt=
""
/></div>
</div>
<div
class=
"task-list-left-text"
>
<div
class=
"task-list-name"
>
花儿影业有限公司-客户拜访
</div>
<div
class=
"task-list-address"
>
<div><img
src=
"../../../../assets/svg/position-2.svg"
alt=
""
/></div>
<div>
0.3km
</div>
<div>
成都市武侯区天谷7路腾飞科汇城
</div>
</div>
</div>
</div>
<div
class=
"task-list-right"
>
发送短信
</div>
</div>
</div>
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Component
,
Vue
}
from
"
vue-property-decorator
"
;
import
{
Picker
}
from
"
vant
"
;
Vue
.
use
(
Picker
);
/**
* @Description 营销任务
* @Author JiangTao
* @Date 2021-11-10 下午 03:32
*/
@
Component
({
name
:
"
MarketingTask
"
,
})
export
default
class
MarketingTask
extends
Vue
{
companyname
=
""
;
choose
=
false
;
choose_content
=
""
;
type
=
[
"
全部营销
"
,
"
客户拜访
"
,
"
精准营销专项
"
,
"
公司精准信息摸排
"
,
"
招商引资企业营销
"
];
choose_t
(
value
:
any
)
{
this
.
choose_content
=
value
;
this
.
choose
=
false
;
}
}
</
script
>
<
style
scoped
>
.content
{
width
:
100%
;
height
:
calc
(
100vh
-
117px
);
padding
:
2.5%
3%
;
}
.content-top
{
width
:
100%
;
}
.content-top
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
}
.content-top-left
{
font-family
:
"Arial Normal"
,
"Arial"
;
color
:
#999999
;
}
.content-top-right
{
width
:
45%
;
display
:
flex
;
align-items
:
flex-end
;
justify-content
:
space-between
;
}
.content-top-right-right
{
width
:
60%
;
display
:
flex
;
justify-content
:
flex-end
;
align-items
:
center
;
padding-top
:
0.5%
;
}
.search-logo
{
margin-right
:
-7%
;
}
.search-bar
{
width
:
99%
;
height
:
34px
;
}
.choose-content
{
width
:
100%
;
border
:
1px
solid
rgba
(
228
,
228
,
228
,
1
);
border-radius
:
5px
;
padding
:
0
;
padding-left
:
8%
;
}
.name
{
border
:
1px
solid
rgba
(
228
,
228
,
228
,
1
);
width
:
100%
;
line-height
:
200%
;
padding-top
:
1.48%
;
padding-bottom
:
0
;
border-bottom-left-radius
:
6px
;
border-top-left-radius
:
6px
;
padding-left
:
15%
;
display
:
flex
;
background-color
:
rgba
(
255
,
255
,
255
,
0
);
}
.search
{
width
:
21.85%
;
line-height
:
34px
;
background-color
:
#fd5065
;
color
:
white
;
font-size
:
115%
;
text-align
:
center
;
border-top-right-radius
:
6px
;
border-bottom-right-radius
:
6px
;
}
::v-deep
.van-cell
{
width
:
100%
;
}
::v-deep
.van-field__control
:read-only
{
height
:
32px
;
}
.task-list
{
width
:
48%
;
display
:
flex
;
justify-content
:
space-between
;
border-bottom
:
1px
solid
rgba
(
242
,
242
,
242
,
1
);
margin-left
:
0.4%
;
padding-bottom
:
1%
;
padding-top
:
2.2%
;
}
.task-list-left
{
width
:
85%
;
display
:
flex
;
justify-content
:
flex-start
;
padding-left
:
2%
;
}
.task-list-left-logo
{
padding
:
1.775%
;
border-radius
:
7px
;
background-color
:
#d0f1ff
;
}
.task-list-left-logo
div
{
width
:
44px
;
height
:
44px
;
margin
:
0
auto
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
background-image
:
url("../../../../assets/svg/blue-circle.svg")
;
background-repeat
:
no-repeat
;
}
.task-list-left-logo
div
img
{
width
:
59.1%
;
}
.task-list-left-text
{
width
:
84%
;
display
:
flex
;
flex-direction
:
column
;
padding-left
:
2.5%
;
}
.task-list-name
{
width
:
100%
;
font-size
:
115%
;
color
:
#333333
;
margin-top
:
0.5%
;
margin-bottom
:
1%
;
}
.task-list-right
{
width
:
14%
;
display
:
flex
;
align-items
:
center
;
}
.task-list-address
{
display
:
flex
;
align-items
:
flex-end
;
}
.task-list-address
>
div
:nth-child
(
1
)
{
background-image
:
url("../../../../assets/svg/position-1.svg")
;
background-repeat
:
no-repeat
;
background-position-x
:
50%
;
background-position-y
:
50%
;
margin-left
:
1.5%
;
margin-right
:
1.5%
;
}
.task-list-address
>
div
:nth-child
(
2
)
{
color
:
#999999
;
}
.task-list-address
>
div
:nth-child
(
3
)
{
margin-left
:
1%
;
color
:
#999999
;
}
.content-bottm
{
display
:
flex
;
flex-wrap
:
wrap
;
justify-content
:
space-between
;
}
</
style
>
src/components/workbench/company-common-functions/business-inquiry/PeriodicInspection.vue
0 → 100644
浏览文件 @
ce638afd
<
template
>
<div>
定期检查
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Component
,
Vue
}
from
"
vue-property-decorator
"
;
/**
* @Description 定期检查
* @Author JiangTao
* @Date 2021-11-10 下午 03:33
*/
@
Component
({
name
:
"
PeriodicInspection
"
,
})
export
default
class
PeriodicInspection
extends
Vue
{}
</
script
>
<
style
scoped
></
style
>
src/components/workbench/company-common-functions/business-inquiry/ProcessQuery.vue
0 → 100644
浏览文件 @
ce638afd
<
template
>
<!--对公客户列表-->
<div
class=
"content"
>
<!--
<van-form
class=
"search"
>
-->
<!--
<mobile-input
label=
"申请编号"
:reset=
"resetvalue"
border=
"true"
name=
"cus_name"
v-model=
"pk_value"
placeholder=
"请输入"
size=
"small"
></mobile-input>
-->
<!--
<mobile-input
label=
"客户号"
:reset=
"resetvalue"
border=
"true"
name=
"cus_name"
v-model=
"cus_id"
placeholder=
"请输入"
size=
"small"
></mobile-input>
-->
<!--
<div
style=
"display: flex;justify-content: space-evenly;align-items: self-start"
>
-->
<!--
<van-button
color=
"#FF574C"
type=
"primary"
@
click=
"reset"
plain
style=
"width: 70px;height: 34px"
size=
"small"
>
重置
</van-button>
-->
<!--
<van-button
color=
"#FF574C"
type=
"primary"
@
click=
"selectProcess(1)"
style=
"width: 70px;height: 34px"
size=
"small"
>
查询
</van-button>
-->
<!--
</div>
-->
<!--
</van-form>
-->
<div
class=
"search"
>
<d-select
label=
"客户类型:"
:reset=
"resetvalue"
input-align=
"left"
border=
"true"
name=
"custNam"
v-model=
"appl_type"
placeholder=
"请选择客户类型"
sfield=
"PROCESS_TYPE"
size=
"small"
></d-select>
<mobile-input
label=
"搜索:"
:reset=
"resetvalue"
border=
"true"
name=
"custNam"
v-model=
"pk_value"
placeholder=
"请输入申请编号"
size=
"small"
></mobile-input>
<mobile-input
:reset=
"resetvalue"
border=
"true"
name=
"custNam"
v-model=
"cus_id"
placeholder=
"请输入客户号"
size=
"small"
></mobile-input>
<mobile-input
:reset=
"resetvalue"
border=
"true"
name=
"custNam"
v-model=
"cus_name"
placeholder=
"请输入客户名称"
size=
"small"
></mobile-input>
<div
style=
"
display: flex;
justify-content: space-evenly;
align-items: self-start;
margin-left: 10px;
"
>
<van-button
color=
"#FF574C"
type=
"primary"
@
click=
"reset"
plain
style=
"width: 70px; height: 34px"
size=
"small"
>
重置
</van-button
>
<van-button
color=
"#FF574C"
type=
"primary"
@
click=
"selectProcess(1)"
style=
"width: 70px; height: 34px; margin-left: 20px"
size=
"small"
>
搜索
</van-button
>
</div>
</div>
<scroller-view
class=
"d-page"
v-if=
"nodata"
v-calculate-height
:pulldown=
"pulldown"
:pullup=
"pullup"
:refresh-data=
"selectProcess"
:load-data=
"onloaddata"
>
<div
v-for=
"(item, index) in list"
:key=
"index"
class=
"customer-bottom-list"
@
click=
"onClientInfo(item)"
>
<div
class=
"customer-bottom-list-top"
>
<div>
<svg
class=
"icon"
aria-hidden=
"true"
>
<!--暂时方案,右侧图标无法传达到内网-->
<use
xlink:href=
"#icon-gongsimingcheng"
></use>
</svg>
</div>
<div>
{{
item
.
cus_name
}}
</div>
<span
class=
"point-box"
style=
"color: orange"
><div
style=
"background: orange"
class=
"point-rew"
></div>
{{
item
.
appl_type_cnName
}}
</span
>
</div>
<div
class=
"customer-bottom-list-bottom"
>
<div>
<div>
申请编号:
</div>
<div>
{{
item
.
pk_value
}}
</div>
</div>
<div>
<div>
客户号:
</div>
<div>
{{
item
.
cus_id
}}
</div>
</div>
<div>
<div>
申请金额:
</div>
<div>
{{
item
.
amt
}}
</div>
</div>
</div>
</div>
</scroller-view>
</div>
<!--新增客户-->
<!--
<div
class=
"d-add_user"
>
-->
<!--
<a
@
click=
"addUser"
>
-->
<!--
<div
class=
"add_logo"
>
-->
<!--
<div
class=
"add_inside"
>
-->
<!--
<span
class=
"add"
>
新增
</span><br
/>
-->
<!--
<span
class=
"add"
>
客户
</span>
-->
<!--
</div>
-->
<!--
</div>
-->
<!--
</a>
-->
<!--
</div>
-->
</
template
>
<
script
lang=
"ts"
>
import
{
Component
,
Vue
}
from
"
vue-property-decorator
"
;
import
{
NativeUI
}
from
"
@/public/ts/NativeUI
"
;
import
nettyApi
from
"
@/constants/api/ms-netty/netty.api.ts
"
;
import
IF
from
"
@/public/factory/InterFaceFactory
"
;
import
DCalendar
from
"
@/components/general/form/DCalendar.vue
"
;
/**
* @Description 流程列表
* @Author Kangzhirui
* @Date 2022-3-3 下午 21.48
*/
@
Component
({
name
:
"
ProcessQuery
"
,
components
:
{
DCalendar
},
})
export
default
class
ProcessQuery
extends
Vue
{
src
=
require
(
"
../../../../assets/svg/red-subscript.svg
"
);
s
=
{
backgroundColor
:
"
#fff4f6
"
,
border
:
"
1px solid #fd5065
"
,
color
:
"
#fd5065
"
,
backgroundImage
:
`url("
${
this
.
src
}
")`
,
backgroundRepeat
:
"
no-repeat
"
,
backgroundPosition
:
"
right bottom
"
,
};
list
:
any
=
[];
// 筛选条件
cus_name
=
""
;
custType
=
""
;
custState
=
""
;
resetvalue
=
false
;
appl_type_cnName
=
''
;
appl_type
=
''
;
pageNo
=
1
;
pullup
=
true
;
pulldown
=
true
;
nodata
=
true
;
IF
:
any
;
//流程查询
pk_value
=
''
;
cus_id
=
''
;
mounted
()
{
this
.
reset
();
this
.
selectProcess
();
}
/**
* @Description 重置
* @Author Kangzhirui
* @Date 2022-3-3 下午 21.48
*/
reset
()
{
this
.
cus_name
=
""
;
this
.
resetvalue
=
true
;
this
.
custType
=
""
;
this
.
custState
=
""
;
this
.
appl_type
=
""
;
this
.
pk_value
=
""
;
//申请编号清空
this
.
cus_id
=
""
;
//客户号清空
this
.
selectProcess
().
then
(()
=>
{
this
.
resetvalue
=
false
;
});
}
//上拉加载
onloaddata
()
{
this
.
pageNo
=
Math
.
ceil
(
this
.
list
.
length
/
10
)
+
1
;
return
this
.
selectProcess
(
this
.
pageNo
);
}
/**
* @Description 对公流程列表查询
* @Author Kangzhirui
* @Date 2022-3-3 下午 21.48
*/
selectProcess
(
pageNo
=
1
)
{
this
.
pullup
=
true
;
this
.
nodata
=
true
;
this
.
pulldown
=
true
;
const
param
=
{
cus_name
:
this
.
cus_name
,
cus_type
:
this
.
custType
,
cus_status
:
this
.
custState
,
appl_type
:
this
.
appl_type
,
// user_code: sessionStorage.getItem('user_code'),
//流程查询
pk_value
:
this
.
pk_value
,
//业务申请号
cus_id
:
this
.
cus_id
,
//客户号
maxLine
:
"
10
"
,
//每页最大数据
targetPage
:
pageNo
,
//目标页
tc
:
nettyApi
.
TRADE_CODE
.
selectProcess
};
NativeUI
.
showWaiting
(
"
正在查询...
"
);
return
IF
.
transferDataInter
(
nettyApi
.
commonRq
,
param
).
then
((
res
:
any
)
=>
{
NativeUI
.
closeWaiting
();
if
(
res
.
rc
==
"
1
"
)
{
if
(
pageNo
==
1
)
{
this
.
list
=
res
.
iCollWL__resultset
;
}
else
{
this
.
list
=
this
.
list
.
concat
(
res
.
iCollWL__resultset
);
}
}
else
{
NativeUI
.
toast
(
res
.
msg
);
}
if
(
res
.
iCollWL__resultset
&&
res
.
iCollWL__resultset
.
length
<
10
)
{
this
.
pullup
=
false
;
}
if
(
this
.
list
.
length
==
0
)
{
this
.
nodata
=
false
;
this
.
pulldown
=
false
;
}
});
}
addUser
()
{
this
.
$router
.
push
({
path
:
"
/customer-mgt/AddUserView
"
,
});
}
onClientInfo
(
item
:
any
)
{
this
.
$store
.
commit
(
"
setEmpty
"
);
this
.
$store
.
commit
(
"
setCusInfo
"
,
item
);
this
.
$router
.
push
({
path
:
"
/ProcessView
"
,
});
}
}
</
script
>
<
style
scoped
lang=
"scss"
>
.d-page
{
padding
:
10px
20px
;
}
.d-form-container
{
grid-template-columns
:
repeat
(
4
,
1fr
);
width
:
100%
;
height
:
70px
;
border
:
1px
solid
#e1e2e3
;
display
:
flex
;
align-items
:
center
;
justify-content
:
flex-start
;
}
::v-deep
.d-form-field
.van-field__label
{
display
:
flex
;
align-items
:
center
;
color
:
#212529
;
margin-left
:
10px
;
margin-right
:
0px
;
width
:
auto
;
}
.d-form-field
{
display
:
flex
;
align-items
:
center
;
padding
:
0
0
0
0
;
}
::v-deep
.van-field__body
{
display
:
-
webkit-box
;
display
:
-
webkit-flex
;
display
:
flex
;
-webkit-box-align
:
center
;
-webkit-align-items
:
center
;
align-items
:
center
;
width
:
110px
;
margin-right
:
7px
;
}
.customer
{
width
:
100%
;
background-color
:
white
;
padding-top
:
2%
;
padding-left
:
3%
;
}
.customer-top
{
display
:
flex
;
align-items
:
center
;
margin-bottom
:
2%
;
}
.name
{
width
:
90%
;
padding-top
:
1%
;
padding-bottom
:
1%
;
margin-left
:
5%
;
border
:
1px
solid
#cccccc
;
border-radius
:
5px
;
}
.d-add_user
{
position
:
absolute
;
bottom
:
50px
;
right
:
50px
;
}
.add_logo
{
width
:
95px
;
height
:
95px
;
background-image
:
url("../../../../assets/svg/red-subscript.svg")
;
background-repeat
:
no-repeat
;
}
.add_inside
{
width
:
44px
;
margin
:
0
auto
;
padding-top
:
18px
;
}
.add
{
color
:
white
;
font-size
:
16px
;
}
.customer-bottom-list
{
border-radius
:
10px
;
background-color
:
#f8fdff
;
box-shadow
:
0
0
6px
#d7d7d7
;
margin-bottom
:
16px
;
padding-bottom
:
15px
;
padding-top
:
9px
;
position
:
relative
;
}
.customer-bottom-list-top
>
div
:nth-child
(
1
)
svg
{
width
:
40px
;
height
:
40px
;
}
.customer-bottom-list-top
>
div
:nth-child
(
2
)
{
font-size
:
115%
;
font-weight
:
bold
;
font-family
:
"微软雅黑 Bold"
,
"微软雅黑 Regular"
,
"微软雅黑"
;
margin-left
:
0
.8%
;
}
.customer-bottom-list-top
{
width
:
100%
;
display
:
flex
;
justify-content
:
flex-start
;
align-items
:
center
;
margin-left
:
16px
;
}
.customer-bottom-list-top
>
div
:nth-child
(
3
)
{
width
:
28%
;
display
:
grid
;
grid-template-columns
:
repeat
(
4
,
1fr
);
justify-content
:
space-around
;
grid-column-gap
:
4px
;
align-items
:
center
;
margin-left
:
1%
;
}
.customer-bottom-list-top
>
div
:nth-child
(
3
)
div
{
color
:
#ff6e0d
;
background-color
:
rgba
(
255
,
247
,
204
,
1
);
font-size
:
80%
;
padding-top
:
2%
;
padding-bottom
:
1
.5%
;
border-radius
:
2px
;
text-align
:
center
;
width
:
100%
;
}
.customer-bottom-list-bottom
{
display
:
flex
;
padding-left
:
4
.5%
;
justify-content
:
space-between
;
align-items
:
flex-start
;
}
.customer-bottom-list-bottom
>
div
{
width
:
100%
;
display
:
flex
;
justify-content
:
flex-start
;
align-items
:
flex-start
;
}
.contact-person
{
width
:
auto
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
}
.contact-person
>
div
:nth-child
(
1
)
{
margin-right
:
10px
;
font-family
:
"Arial Normal"
,
"Arial"
;
}
.label-type
{
width
:
18%
;
border
:
1px
solid
#cccccc
;
border-radius
:
5px
;
padding-top
:
0
.2%
;
padding-bottom
:
0
.2%
;
margin-left
:
1%
;
}
::v-deep
.scroller
{
padding
:
1%
;
}
.label
{
width
:
170%
;
height
:
60%
;
display
:
flex
;
justify-content
:
space-around
;
align-items
:
center
;
}
.label
div
{
width
:
35%
;
font-size
:
13px
;
padding-top
:
1
.1%
;
padding-bottom
:
0
.7%
;
border-radius
:
5px
;
text-align
:
center
;
background-color
:
white
;
border
:
1px
solid
rgba
(
215
,
215
,
215
,
1
);
margin
:
0
.7%
1%
;
}
.backgroundlogo
{
position
:
absolute
;
width
:
60px
;
top
:
25%
;
right
:
20%
;
}
.backgroundlogo
img
{
width
:
100%
;
opacity
:
0
.5
;
}
.search
{
position
:
relative
;
width
:
100%
;
height
:
70px
;
border
:
1px
solid
#e1e2e3
;
display
:
flex
;
align-items
:
center
;
justify-content
:
flex-start
;
}
.content
{
width
:
100%
;
}
.screenbutton
{
width
:
15%
;
height
:
100%
;
display
:
flex
;
flex-direction
:
column
;
align-content
:
center
;
justify-content
:
center
;
}
.point-box
{
width
:
120px
;
display
:
flex
;
align-items
:
center
;
margin-inline-start
:
auto
;
}
.point-rew
{
width
:
12px
;
height
:
12px
;
border-radius
:
50%
;
}
::v-deep
.van-popup--bottom.van-popup--round
{
z-index
:
2102
!
important
;
}
::v-deep
.van-overlay
{
z-index
:
2101
!
important
;
}
</
style
>
src/components/workbench/company-common-functions/business-inquiry/RiskWarning.vue
0 → 100644
浏览文件 @
ce638afd
<
template
>
<div>
风险预警
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Component
,
Vue
}
from
"
vue-property-decorator
"
;
/**
* @Description 风险预警
* @Author JiangTao
* @Date 2021-11-10 下午 03:33
*/
@
Component
({
name
:
"
RiskWarning
"
,
})
export
default
class
RiskWarning
extends
Vue
{}
</
script
>
<
style
scoped
></
style
>
src/components/workbench/company-common-functions/online-enquiry/AllOutlets.vue
0 → 100644
浏览文件 @
ce638afd
<
template
>
<div>
AllOutlets
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Component
,
Vue
}
from
"
vue-property-decorator
"
;
/**
* @Description 全部
* @Author JiangTao
* @Date 2021-11-10 下午 03:33
*/
@
Component
({
name
:
"
AllOutlets
"
,
})
export
default
class
AllOutlets
extends
Vue
{}
</
script
>
<
style
scoped
></
style
>
src/components/workbench/company-common-functions/online-enquiry/Area.vue
0 → 100644
浏览文件 @
ce638afd
<
template
>
<div>
Area
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Component
,
Vue
}
from
"
vue-property-decorator
"
;
/**
* @Description 区域查询
* @Author JiangTao
* @Date 2021-11-10 下午 03:33
*/
@
Component
({
name
:
"
Area
"
,
})
export
default
class
Area
extends
Vue
{}
</
script
>
<
style
scoped
></
style
>
src/components/workbench/company-common-functions/online-enquiry/Nearby.vue
0 → 100644
浏览文件 @
ce638afd
<
template
>
<div>
<div
class=
"list-content"
>
<div>
<div>
壮锦支行
</div>
<div>
10.0Km
</div>
</div>
<div>
电话:
<span>
18688888888
</span></div>
<div>
导航:
<span>
成都市
</span></div>
<div>
<div><img
src=
"../../../../assets/svg/orange-navigation-logo.svg"
alt=
""
/>
导航
</div>
<div><img
src=
"../../../../assets/svg/tel.svg"
alt=
""
/>
电话
</div>
</div>
</div>
<div
class=
"list-content"
>
<div>
<div>
壮锦支行
</div>
<div>
10.0Km
</div>
</div>
<div>
电话:
<span>
18688888888
</span></div>
<div>
导航:
<span>
成都市
</span></div>
<div>
<div><img
src=
"../../../../assets/svg/orange-navigation-logo.svg"
alt=
""
/>
导航
</div>
<div><img
src=
"../../../../assets/svg/tel.svg"
alt=
""
/>
电话
</div>
</div>
</div>
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Component
,
Vue
}
from
"
vue-property-decorator
"
;
/**
* @Description 我的附近
* @Author JiangTao
* @Date 2021-11-10 下午 03:34
*/
@
Component
({
name
:
"
Nearby
"
,
})
export
default
class
Nearby
extends
Vue
{}
</
script
>
<
style
scoped
>
.list-content
{
width
:
95%
;
margin
:
0
auto
;
margin-bottom
:
4%
;
padding
:
2%
0
0
2%
;
background-color
:
white
;
}
.list-content
>
div
:nth-child
(
1
)
{
width
:
96%
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
flex-end
;
padding-left
:
2%
;
padding-bottom
:
1.5%
;
border-bottom
:
1px
solid
rgb
(
217
,
207
,
207
);
}
.list-content
>
div
:nth-child
(
1
)
>
div
:nth-child
(
1
)
{
font-size
:
115%
;
color
:
black
;
}
.list-content
>
div
:nth-child
(
1
)
>
div
:nth-child
(
2
)
{
font-size
:
75%
;
color
:
red
;
}
.list-content
>
div
:nth-child
(
2
),
.list-content
>
div
:nth-child
(
3
)
{
color
:
#999999
;
margin
:
3%
1%
;
}
span
{
font-family
:
"Arial Normal"
,
"Arial"
;
color
:
black
;
}
.list-content
>
div
:nth-child
(
4
)
>
*
{
width
:
47%
;
text-align
:
center
;
color
:
black
;
margin
:
3.5%
0
;
}
.list-content
>
div
:nth-child
(
4
)
>
div
:nth-child
(
1
)
{
border-right
:
1px
solid
rgb
(
217
,
207
,
207
);
}
.list-content
>
div
:nth-child
(
4
)
{
border-top
:
1px
solid
rgb
(
217
,
207
,
207
);
display
:
flex
;
justify-content
:
space-around
;
}
img
{
margin-right
:
10%
;
}
</
style
>
src/constants/api/login/login-mgt.api.ts
浏览文件 @
ce638afd
...
...
@@ -2,15 +2,14 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-05 14:56:29
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-0
7-06 15:09
:50
* @LastEditTime: 2022-0
8-17 19:55
:50
* @FilePath: \mcep-h5\src\constants\api\login\login-mgt.api.ts
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import
{
MethodType
}
from
"
@/constants/enum/general/method-type.enum
"
;
import
{
HeaderType
}
from
"
@/constants/enum/general/header-type.enum
"
;
// http://10.0.1.9:9130
const
prefix
=
"
http://localhost:9135//ms-system/api/v1/sysCustInfo/permit_endpoint
"
const
prefix
=
"
http://localhost:9130/ms-system/api/v1/sysCustInfo/permit_endpoint
"
const
loginApi
=
{
updatePicCode
:
{
url
:
prefix
+
"
/getVerifyCode
"
,
...
...
src/router/index.ts
浏览文件 @
ce638afd
...
...
@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 15:41:06
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-0
7-22 16:54:54
* @LastEditTime: 2022-0
8-18 13:50:06
* @FilePath: \mcep-h5\src\router\index.ts
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
...
...
@@ -33,6 +33,7 @@ const routes: Array<RouteConfig> = [
},
{
path
:
"
/login
"
,
name
:
"
login
"
,
component
:
()
=>
import
(
/* webpackChunkName: "login" */
"
@/views/authentication/LoginView.vue
"
),
//component: () => import(/* webpackChunkName: "login" */ "@/components/common/Tool.vue"),
meta
:
{
keepAlive
:
true
,
requiresAuth
:
true
},
...
...
src/router/login.mgt.routing.ts
浏览文件 @
ce638afd
...
...
@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-05 10:08:57
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-0
7-12 14:30:24
* @LastEditTime: 2022-0
8-18 13:42:05
* @FilePath: \mcep-h5\src\router\login.mgt.routing.ts
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
...
...
@@ -32,5 +32,13 @@ const loginRoutes = [
props
:
propsConvert
,
meta
:
{
keepAlive
:
false
,
requiresAuth
:
true
,
name
:
"
主页
"
},
}
,{
path
:
`/LoginByID`
,
name
:
'
LoginByID
'
,
component
:
()
=>
import
(
/* webpackChunkName: "customer-mgt" */
"
@/views/authentication/LoginByID.vue
"
),
props
:
propsConvert
,
meta
:
{
keepAlive
:
false
,
requiresAuth
:
true
,
name
:
"
主页
"
},
}
]
export
default
loginRoutes
;
src/services/api.service.ts
浏览文件 @
ce638afd
...
...
@@ -32,8 +32,7 @@ class ApiService {
Vue
.
axios
.
interceptors
.
request
.
use
(
config
=>
{
config
.
headers
[
'
Access-Control-Allow-Origin
'
]
=
'
*
'
;
//开启
// config.headers['MCEP'] = 'MCEP';
if
(
!
config
.
headers
[
'
Content-Type
'
]){
config
.
headers
[
'
Content-Type
'
]
=
'
application/json; charset=utf-8
'
;
}
...
...
@@ -176,12 +175,10 @@ class ApiService {
path
=
query
!=
null
?
this
.
urlQueryConvert
(
path
,
query
)
:
path
;
console
.
log
(
"
服务调用--
"
+
path
);
return
Vue
.
axios
.
post
(
`
${
path
}
`
,
params
,
requestConfig
).
then
(
res
=>
{
//TODO
console
.
log
(
res
);
return
res
.
data
});
return
Vue
.
axios
.
post
(
`
${
path
}
`
,
params
,
requestConfig
).
then
(
this
.
createBusCodeHandler
(
query
)).
catch
(
this
.
createErrorHandler
());
}
/**
* POST请求 文件上传
...
...
@@ -324,7 +321,7 @@ class ApiService {
console
.
log
(
data
);
//成功
// data = data.data;
debugger
//
debugger
if
(
typeof
data
!=
'
object
'
)
data
=
JSON
.
parse
(
data
);
data
=
data
.
sm4key
?
SMUtil
.
decodeData
(
data
)
:
data
;
if
(
typeof
data
!=
'
object
'
)
{
...
...
src/views/MyView/LevelSent.vue
浏览文件 @
ce638afd
...
...
@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-14 13:57:33
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-0
7-25 19:35:52
* @LastEditTime: 2022-0
8-18 10:59:51
* @FilePath: \mcep-h5\src\views\MyView\LevelSent.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
...
...
@@ -64,20 +64,7 @@
<van-row
type=
"flex"
class=
""
>
<van-col
span=
"24"
>
我的特权
</van-col>
<div>
<template>
<el-table
:data=
"tableData"
:border=
"true"
:stripe=
"true"
>
<el-table-column
fixed
prop=
"level"
label=
"等级权限"
width=
"30"
>
</el-table-column>
<el-table-column
prop=
"name"
label=
"姓名"
width=
"30"
>
</el-table-column>
<el-table-column
prop=
"province"
label=
"省份"
width=
"30"
>
</el-table-column>
<el-table-column
prop=
"city"
label=
"市区"
width=
"30"
>
</el-table-column>
<el-table-column
prop=
"address"
label=
"地址"
width=
"30"
>
</el-table-column>
</el-table>
</
template
>
</div>
</van-row>
...
...
src/views/authentication/LoginByID.vue
0 → 100644
浏览文件 @
ce638afd
<!--
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 15:41:06
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-08-18 16:10:19
* @FilePath: \mcep-h5\src\views\authentication\LoginView.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<
template
>
<div
class=
"loginform"
>
<div
class=
"rarle"
>
<tatle-bar
:tatle=
"tatleName"
></tatle-bar>
</div>
<div
class=
"login"
>
<van-row
class=
""
style=
"padding: 10% 0%;"
>
<van-col
span=
"24"
>
<p
class=
"polog"
><span
class=
"font-size-18-dhc"
style=
"padding: 2% 0%;font-weight: 600;"
>
登录
</span>
</p>
</van-col>
<van-col
span=
"24"
><span
class=
"font-size-12-dhc"
style=
"font-weight: 400; font-family: 'Arial Normal', 'Arial';
}"
>
请使用身份证号登录
</span></van-col>
</van-row>
<van-form>
<div
class=
"logindiv"
>
<span
class=
"sopan"
>
身份证号
</span>
<van-field
v-model=
"idcard"
placeholder=
"身份证号"
:rules=
"[
{ validator: verifyPhone, message: '请输入正确的身份证号码' }]" />
</div>
<!--
<div
class=
"logindiv"
>
-->
<span
class=
"sopan"
>
密码
</span>
<van-field
v-model=
"password"
:type=
"passwordType"
center
clearable
placeholder=
"请填写密码"
>
<template
slot=
"right-icon"
>
<span
class=
"solts"
@
click=
"switchPasswordType"
>
<van-icon
name=
"eye"
v-if=
"passwordType === 'password'"
/>
<van-icon
name=
"closed-eye"
v-else
/>
</span>
</
template
>
</van-field>
<!-- <van-divider /> -->
<!-- </div> -->
<!-- <div class="d-flex ">
<div class="p-2 mr-auto ">
<span class="sopan">验证码</span>
<van-field center clearable v-model="imageSrcValue" placeholder="请输入验证码" />
</div>
<div class="p-2 ">
<img :src="imageSrc" style="max-width: 100px; max-height: 200px;" @click="_updatePicCode()" />
</div>
</div> -->
<!-- <template >
<img :src="imageSrc" style="max-width: 100px; max-height: 200px;" />
</template> -->
<!-- <span class="sopan">短信验证码</span>
<van-row class="">
<van-col span="16">
<van-field v-model="sms" center clearable placeholder="请输入短信验证码">
</van-field>
</van-col>
<van-col span="8"><a style="color:#3672F1" @click="getPhonePost()">{{ getCmstotal }}</a></van-col>
</van-row> -->
<div
style=
"margin: 16px;"
>
<van-button
square
block
type=
"info"
native-type=
"submit"
@
click=
"loginSystem()"
>
登录
</van-button>
</div>
</van-form>
<!-- <div>
<van-row type="flex" justify="center">
<van-col span="12"><a class="font-size-12-dhc"> 忘记密码</a></van-col>
<van-col span="12"><a class="font-size-12-dhc"> 用户注册</a></van-col>
</van-row>
</div> -->
<div
class=
"d-flex "
style=
"padding: 0px 10px 0px 10px;color: #3672F1;"
>
<div
class=
"p-3 mr-auto "
><a
class=
"font-size-12-dhc"
@
click=
"forgetspass()"
>
忘记密码
</a></div>
<div
class=
"p-3 "
style=
"margin-right: 13%;"
><a
class=
"font-size-12-dhc"
@
click=
"loginbyid()"
>
手机号登录
</a></div>
<div
class=
"p-3 "
><a
class=
"font-size-12-dhc"
@
click=
"regeist()"
>
用户注册
</a></div>
<!-- <div class="p-3 "><a class="font-size-12-dhc" @click="demo()"> demo测试</a></div> -->
</div>
</div>
</div>
</template>
<
script
lang=
"ts"
>
import
{
Component
,
Vue
}
from
"
vue-property-decorator
"
;
import
{
Image
as
VanImage
,
Toast
}
from
'
vant
'
;
import
apiService
from
"
@/services/api.service
"
;
import
loginApi
from
"
@/constants/api/login/login-mgt.api
"
;
import
{
Code
}
from
"
@/constants/enum/general/code.enum
"
;
import
{
RestfulResponse
}
from
"
@/model/domain/RestfulResponse
"
;
import
commonApi
from
"
@/constants/api/login/common.api
"
;
import
{
sys
}
from
"
typescript
"
;
import
{
log
}
from
"
mathjs
"
;
@
Component
({
name
:
"
LoginView
"
,
[
VanImage
.
name
]:
VanImage
,
})
export
default
class
LoginView
extends
Vue
{
getCmstotal
=
"
获取短信验证码
"
;
tatleName
=
"
用户登录
"
;
idcard
:
string
=
""
;
//电话
password
:
string
=
""
;
//密码
imageSrc
:
any
=
""
;
//图形
imageSrcValue
:
string
=
""
;
//图形验证码
sms
:
string
=
""
;
//短信验证
timer
:
any
=
""
;
//定时器
time
:
number
=
60
;
//计数
imageVerifyKey
:
string
=
""
//验证码Key
passwordType
=
"
password
"
//方法
switchPasswordType
()
{
this
.
passwordType
=
this
.
passwordType
===
'
password
'
?
'
text
'
:
'
password
'
}
//身份证号登录
loginbyid
()
{
this
.
$router
.
push
({
name
:
`login`
})
}
//手机号
verifyPhone
()
{
const
card18
=
/^
[
1-9
]\d{5}(
18|19|
([
23
]\d))\d{2}((
0
[
1-9
])
|
(
10|11|12
))(([
0-2
][
1-9
])
|10|20|30|31
)\d{3}[
0-9Xx
]
$/
return
card18
.
test
(
this
.
idcard
)
}
//获取图形验证码
_updatePicCode
()
{
//请求图形验证码
apiService
.
general
(
loginApi
.
updatePicCode
,
undefined
,
undefined
,
undefined
).
then
((
response
:
RestfulResponse
)
=>
{
if
(
response
.
code
==
Code
.
SUCCESS
.
code
)
{
this
.
imageSrc
=
'
data:image/png;base64,
'
+
response
.
data
.
imageVerifyCodeStr
.
replace
(
/
[\r\n]
/g
,
""
);
this
.
imageVerifyKey
=
response
.
data
.
imageVerifyKey
}
});
}
//计时器
changeCmstotal
()
{
this
.
getCmstotal
=
this
.
time
+
"
s重发验证码
"
;
this
.
timer
=
setInterval
(()
=>
{
this
.
time
--
;
this
.
getCmstotal
=
this
.
time
+
"
s重发验证码
"
;
if
(
this
.
time
<
0
)
{
clearInterval
(
this
.
time
)
this
.
getCmstotal
=
"
获取短信验证码
"
;
}
},
1000
)
}
//获取短信验证码
// getPhonePost() {
// let param = {
// phoneCode: this.phone
// }
// apiService.general(commonApi.getPicCode, param, undefined, undefined).then((response: RestfulResponse) => {
// if (response.code == Code.SUCCESS.code) {
// Toast('短信发送成功,5分钟有效');
// this.changeCmstotal()
// } else {
// Toast('短信发送失败,请重试');
// }
// })
// }
loginSystem
()
{
//TODO
//登录失败刷新
//验证码失败刷新
//this._updatePicCode();
// let param = {
// phone: this.phone,
// //图形验证码
// imageVerifyKey: this.imageSrcValue,
// //渠道
// loginType: "2",
// //手机验证码
// messCode: this.sms,
// //密码
// passWord: this.password
// }
// apiService.general(loginApi.loginSystem, undefined, param, undefined).then((response: RestfulResponse) => {
// console.log(response);
// if (response.code == Code.SUCCESS.code) {
// this.$router.push({
// name: `Mianview`,
// params: {
// data: response.data
// }
// })
// } else {
// this._updatePicCode();
// Toast(response.msg + "");
// }
// });
}
created
()
{
this
.
_updatePicCode
()
}
//忘记密码
forgetspass
()
{
this
.
$router
.
push
({
name
:
`ForgetPass`
,
// params: {
// phone: this.phone
// }
});
}
regeist
()
{
this
.
$router
.
push
({
path
:
`Register`
,
})
}
// demo() {
// this.$router.push({
// path: `Mianview`,
// })
// }
demoll
()
{
this
.
$router
.
push
({
path
:
`workbench/commonly-used/personal/business-inquiry`
,
})
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.loginform
{
width
:
100%
;
height
:
100%
;
}
.logindiv
{
line-height
:
20px
;
}
.van-button
{
border-radius
:
6px
;
}
.polog
{
margin
:
0px
;
text-rendering
:
optimizeLegibility
;
font-feature-settings
:
"kern"
1
;
-webkit-font-feature-settings
:
"kern"
;
-moz-font-feature-settings
:
"kern"
;
-moz-font-feature-settings
:
"kern=1"
;
font-kerning
:
normal
;
}
.van-col--15
{
margin-top
:
2%
;
}
.van-col--24
{
margin-left
:
6%
;
}
.forget
{}
.sopan
{
margin-top
:
5px
;
margin-left
:
6%
;
}
// .login{
// margin-top: 20%;
// }
</
style
>
src/views/authentication/LoginView.vue
浏览文件 @
ce638afd
...
...
@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 15:41:06
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-0
7-22 15:10:30
* @LastEditTime: 2022-0
8-18 13:43:29
* @FilePath: \mcep-h5\src\views\authentication\LoginView.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
...
...
@@ -11,7 +11,6 @@
<div
class=
"rarle"
>
<tatle-bar
:tatle=
"tatleName"
></tatle-bar>
</div>
<div
class=
"login"
>
<van-row
class=
""
style=
"padding: 10% 0%;"
>
<van-col
span=
"24"
>
...
...
@@ -23,13 +22,20 @@
<van-form>
<div
class=
"logindiv"
>
<span
class=
"sopan"
>
手机号
</span>
<van-field
v-model=
"phone"
label=
"+86 |"
:border=
"true"
placeholder=
"请输入手机号"
/>
<van-divider
/>
<van-field
v-model=
"phone"
label=
"+86 |"
:border=
"true"
placeholder=
"请输入手机号"
:rules=
"[
{ validator: verifyPhone, message: '请输入正确的手机号码' }]"
/>
</div>
<!--
<div
class=
"logindiv"
>
-->
<span
class=
"sopan"
>
密码
</span>
<van-field
v-model=
"password"
type=
"password"
center
clearable
placeholder=
"请填写密码"
/>
<van-field
v-model=
"password"
:type=
"passwordType"
center
clearable
placeholder=
"请填写密码"
>
<template
slot=
"right-icon"
>
<span
class=
"solts"
@
click=
"switchPasswordType"
>
<van-icon
name=
"eye"
v-if=
"passwordType === 'password'"
/>
<van-icon
name=
"closed-eye"
v-else
/>
</span>
</
template
>
</van-field>
<!-- <van-divider /> -->
<!-- </div> -->
<div
class=
"d-flex "
>
...
...
@@ -67,10 +73,11 @@
</van-row>
</div> -->
<div
class=
"d-flex "
style=
"padding: 0px 10px 0px 10px;color: #3672F1;"
>
<div
class=
"p-2 mr-auto "
><a
class=
"font-size-12-dhc"
@
click=
"forgetspass()"
>
忘记密码
</a></div>
<div
class=
"p-2 "
><a
class=
"font-size-12-dhc"
@
click=
"regeist()"
>
用户注册
</a></div>
<div
class=
"p-2 "
><a
class=
"font-size-12-dhc"
@
click=
"demo()"
>
demo测试
</a></div>
<div
class=
"p-2 "
><a
class=
"font-size-12-dhc"
@
click=
"demoll()"
>
demo测试111
</a></div>
<div
class=
"p-3 mr-auto "
><a
class=
"font-size-12-dhc"
@
click=
"forgetspass()"
>
忘记密码
</a></div>
<div
class=
"p-3 "
><a
class=
"font-size-12-dhc"
@
click=
"loginbyid()"
>
身份证号登录
</a></div>
<div
class=
"p-3 "
><a
class=
"font-size-12-dhc"
@
click=
"regeist()"
>
用户注册
</a></div>
<div
class=
"p-3 "
><a
class=
"font-size-12-dhc"
@
click=
"demo()"
>
demo测试
</a></div>
</div>
</div>
</div>
...
...
@@ -102,12 +109,26 @@ export default class LoginView extends Vue {
timer
:
any
=
""
;
//定时器
time
:
number
=
60
;
//计数
imageVerifyKey
:
string
=
""
//验证码Key
passwordType
=
"
password
"
//方法
switchPasswordType
()
{
this
.
passwordType
=
this
.
passwordType
===
'
password
'
?
'
text
'
:
'
password
'
}
//身份证号登录
loginbyid
()
{
this
.
$router
.
push
({
name
:
`LoginByID`
})
}
//手机号
verifyPhone
()
{
return
/^1
\d{10}
$/
.
test
(
this
.
phone
)
// 返回true或false
}
//获取图形验证码
_updatePicCode
()
{
//请求图形验证码
apiService
.
general
(
loginApi
.
updatePicCode
,
undefined
,
undefined
,
undefined
).
then
((
response
:
RestfulResponse
)
=>
{
//console.log(response);
if
(
response
.
code
==
Code
.
SUCCESS
.
code
)
{
this
.
imageSrc
=
'
data:image/png;base64,
'
+
response
.
data
.
imageVerifyCodeStr
.
replace
(
/
[\r\n]
/g
,
""
);
this
.
imageVerifyKey
=
response
.
data
.
imageVerifyKey
...
...
@@ -150,7 +171,7 @@ export default class LoginView extends Vue {
let
param
=
{
phone
:
this
.
phone
,
//图形验证码
imageVerifyKey
:
this
.
imageSrcValue
,
imageVerifyKey
:
this
.
imageSrcValue
,
//渠道
loginType
:
"
2
"
,
//手机验证码
...
...
@@ -201,7 +222,7 @@ export default class LoginView extends Vue {
})
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.loginform
{
...
...
src/views/login/Register.vue
浏览文件 @
ce638afd
...
...
@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 15:41:06
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-0
7-25 09:50:14
* @LastEditTime: 2022-0
8-18 16:13:39
* @FilePath: \mcep-h5\src\views\authentication\LoginView.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
...
...
@@ -13,7 +13,7 @@
</div>
<div
class=
"login"
>
<van-row
style=
"padding: 10% 0%;"
>
<van-row
style=
"padding: 10% 0%;"
>
<van-col
span=
"24"
>
<p
class=
"polog"
><span
class=
"font-size-18-dhc"
style=
"padding: 2% 0%;font-weight: 600;"
>
用户注册
</span>
</p>
</van-col>
...
...
@@ -23,47 +23,64 @@
<van-form>
<div
class=
"logindiv"
>
<span
class=
"sopan"
>
手机号码
</span>
<van-field
v-model=
"phone"
label=
"+86 |"
:border=
"true"
placeholder=
"请输入手机号"
/>
<van-divider
:style=
"
{margin :0 }">
</van-divider>
<van-field
v-model=
"phone"
label=
"+86 |"
:border=
"true"
placeholder=
"请输入手机号"
:rules=
"[
{ validator: verifyPhone, message: '请输入正确的手机号码' }]" />
</div>
<div
class=
"logindiv"
>
<span
class=
"sopan"
>
身份证号
</span>
<van-field
v-model=
"idCard"
:border=
"true"
placeholder=
"请输入身份证号"
/>
<span
class=
"sopan"
>
身份证号
</span>
<van-field
v-model=
"idCard"
:border=
"true"
placeholder=
"请输入身份证号"
:rules=
"[
{ validator: verifyid, message: '请输入正确的身份证号码' }]" />
<!--
<van-divider
/>
-->
<van-divider
:style=
"
{
margin :
0 }">
</van-divider>
<van-divider
:style=
"
{
margin:
0 }">
</van-divider>
</div>
<div
class=
"logindiv"
><span
class=
"sopan"
>
短信验证码
</span>
<van-row
>
<div
class=
"logindiv"
><span
class=
"sopan"
>
短信验证码
</span>
<van-row>
<van-col
span=
"16"
>
<van-field
v-model=
"sms"
center
clearable
placeholder=
"请输入短信验证码"
>
<!--
<van-divider
/>
-->
</van-field>
</van-col>
<van-col
span=
"8"
><span
style=
"color:blue"
@
click=
"getPhonePost()"
>
{{
getCmstotal
}}
</span></van-col>
<van-col
span=
"8"
><span
style=
"color:blue"
@
click=
"getPhonePost()"
>
{{
getCmstotal
}}
</span></van-col>
</van-row>
<van-divider
:style=
"
{margin :
0 }">
</van-divider>
</div>
<van-divider
:style=
"
{ margin:
0 }">
</van-divider>
</div>
<div
class=
"logindiv"
>
<span
class=
"sopan"
>
设置密码
</span>
<van-field
v-model=
"password"
type=
"password"
center
clearable
placeholder=
"请填写新密码"
/>
<!--
<van-divider
/>
-->
<van-divider
:style=
"
{margin :0 }">
</van-divider>
</div>
<div
class=
"logindiv"
>
<span
class=
"sopan"
>
确认密码
</span>
<van-field
v-model=
"restpassword"
type=
"password"
center
clearable
placeholder=
"请确认新密码"
/>
<div
class=
"logindiv"
>
<span
class=
"sopan"
>
设置密码
</span>
<van-field
v-model=
"password"
:type=
"passwordType"
center
clearable
placeholder=
"请填写新密码"
>
<!--
<van-divider
/>
-->
<van-divider
:style=
"
{margin :0 }">
</van-divider>
</div>
<template
slot=
"right-icon"
>
<span
class=
"solts"
@
click=
"switchPasswordType"
>
<van-icon
name=
"eye"
v-if=
"passwordType === 'password'"
/>
<van-icon
name=
"closed-eye"
v-else
/>
</span>
</
template
>
</van-field>
<van-divider
:style=
"{ margin: 0 }"
></van-divider>
</div>
<div
class=
"logindiv"
>
<span
class=
"sopan"
>
确认密码
</span>
<van-field
v-model=
"restpassword"
:type=
"passwordType"
center
clearable
placeholder=
"请确认新密码"
>
<
template
slot=
"right-icon"
>
<span
class=
"solts"
@
click=
"switchPasswordType"
>
<van-icon
name=
"eye"
v-if=
"passwordType === 'password'"
/>
<van-icon
name=
"closed-eye"
v-else
/>
</span>
</
template
>
</van-field>
<van-divider
:style=
"{ margin: 0 }"
></van-divider>
</div>
<div
style=
"margin: 16px;"
>
<van-button
square
block
type=
"info"
native-type=
"submit"
@
click=
"registSystem()"
>
注册
</van-button>
</div>
...
...
@@ -93,16 +110,32 @@ import { Toast } from "vant";
})
export
default
class
ForgetPassView
extends
Vue
{
tatleName
=
"
用户注册
"
idCard
=
""
phone
:
string
=
""
//电话
password
:
string
=
""
//密码
restpassword
:
string
=
""
//确认密码
getCmstotal
=
"
获取短信验证码
"
;
sms
:
string
=
""
//短信
// radio: boolean = false
timer
:
any
=
""
;
//定时器
timer
:
any
=
""
;
//定时器
time
:
number
=
60
;
//计数
radio
:
string
=
"
0
"
checked
:
boolean
=
false
;
passwordType
=
"
password
"
//方法
switchPasswordType
()
{
this
.
passwordType
=
this
.
passwordType
===
'
password
'
?
'
text
'
:
'
password
'
}
//手机号
verifyPhone
()
{
return
/^1
\d{10}
$/
.
test
(
this
.
phone
)
// 返回true或false
}
//身份证号
verifyid
()
{
const
card18
=
/^
[
1-9
]\d{5}(
18|19|
([
23
]\d))\d{2}((
0
[
1-9
])
|
(
10|11|12
))(([
0-2
][
1-9
])
|10|20|30|31
)\d{3}[
0-9Xx
]
$/
return
card18
.
test
(
this
.
idCard
)
}
registSystem
()
{
if
(
this
.
password
===
this
.
restpassword
&&
this
.
checked
)
{
...
...
@@ -111,9 +144,9 @@ export default class ForgetPassView extends Vue {
//短信验证码TODO
phoneVerifyCode
:
this
.
sms
,
//数字渠道
method
:
"
3
"
,
method
:
"
3
"
,
pwd
:
this
.
password
,
serviceAgreeStatus
:
this
.
checked
serviceAgreeStatus
:
this
.
checked
}
apiService
.
general
(
registApi
.
registSystem
,
undefined
,
param
,
undefined
).
then
((
response
:
RestfulResponse
)
=>
{
console
.
log
(
response
);
...
...
@@ -129,7 +162,7 @@ export default class ForgetPassView extends Vue {
}
}
//计时器
//计时器
changeCmstotal
()
{
this
.
getCmstotal
=
this
.
time
+
"
s重发验证码
"
;
this
.
timer
=
setInterval
(()
=>
{
...
...
@@ -142,26 +175,26 @@ export default class ForgetPassView extends Vue {
},
1000
)
}
getPhonePost
()
{
let
param
=
{
phoneCode
:
this
.
phone
}
apiService
.
general
(
commonApi
.
getPicCode
,
param
,
undefined
,
undefined
).
then
((
response
:
RestfulResponse
)
=>
{
if
(
response
.
code
==
Code
.
SUCCESS
.
code
)
{
Toast
(
'
短信发送成功,5分钟有效
'
);
this
.
changeCmstotal
()
}
else
{
Toast
(
'
短信发送失败,请重试
'
);
}
getPhonePost
()
{
let
param
=
{
phoneCode
:
this
.
phone
}
apiService
.
general
(
commonApi
.
getPicCode
,
param
,
undefined
,
undefined
).
then
((
response
:
RestfulResponse
)
=>
{
if
(
response
.
code
==
Code
.
SUCCESS
.
code
)
{
Toast
(
'
短信发送成功,5分钟有效
'
);
this
.
changeCmstotal
()
}
else
{
Toast
(
'
短信发送失败,请重试
'
);
}
})
}
}
created
()
{
}
returen
()
{
...
...
src/views/main/Main.vue
浏览文件 @
ce638afd
...
...
@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-05 14:05:30
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-0
7-28 15:44:01
* @LastEditTime: 2022-0
8-18 13:52:56
* @FilePath: \mcep-h5\src\views\main\MainView.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
...
...
@@ -211,12 +211,12 @@
</van-dropdown-item>
</van-dropdown-menu>
</div>
<scroller-view
v-calculate-height
>
<div
v-for=
"(item, index) in productList"
:key=
"index"
style=
"margin: 4% auto;"
>
<picket-bar
:productname=
"item.productname"
:describe=
"item.describe"
:limitrange=
"item.limitrange"
:interestrate=
"item.interestrate"
:loanterm=
"item.loanterm"
@
onClickPicket=
"onClickPicket"
></picket-bar>
</div>
</scroller-view>
<scroller-view
v-calculate-height
:height=
"10000"
>
<div
v-for=
"(item, index) in productList"
:key=
"index"
style=
"margin: 4% auto;"
>
<picket-bar
:productname=
"item.productname"
:describe=
"item.describe"
:limitrange=
"item.limitrange"
:interestrate=
"item.interestrate"
:loanterm=
"item.loanterm"
@
onClickPicket=
"onClickPicket"
></picket-bar>
</div>
</scroller-view>
...
...
@@ -328,6 +328,19 @@ export default class Main extends Vue {
productList
:
ProductData
[]
=
[{
productname
:
"
金融消费贷
"
,
//产品名称
describe
:
"
一次核查 三年有效 随用随贷 循环使用
"
,
//描述
limitrange
:
"
1000~2000
"
,
//额度范围
interestrate
:
"
19%~20%
"
,
//利率
loanterm
:
"
89个月
"
,
//贷款期限
},
{
productname
:
"
白领贷
"
,
//产品名称
describe
:
"
额度较大 使用人群 工薪阶级
"
,
//描述
limitrange
:
"
1000~2000
"
,
//额度范围
interestrate
:
"
19%~20%
"
,
//利率
loanterm
:
"
89个月
"
,
//贷款期限
},
{
productname
:
"
金融消费贷
"
,
//产品名称
describe
:
"
1年100万
"
,
//描述
limitrange
:
"
1000~2000
"
,
//额度范围
...
...
@@ -336,11 +349,12 @@ export default class Main extends Vue {
},
{
productname
:
"
金融消费贷
"
,
//产品名称
describe
:
"
1年100万
三年内还清了
"
,
//描述
describe
:
"
1年100万
"
,
//描述
limitrange
:
"
1000~2000
"
,
//额度范围
interestrate
:
"
19%~20%
"
,
//利率
loanterm
:
"
89个月
"
,
//贷款期限
}];
}
];
//点击picket跳转界面
onClickPicket
()
{
this
.
$router
.
push
({
...
...
src/views/workbench/AccommodDetails.vue
浏览文件 @
ce638afd
...
...
@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-07 16:13:13
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-0
7-25 13:47:03
* @LastEditTime: 2022-0
8-18 14:19:37
* @FilePath: \mcep-h5\src\components\common\Bottom.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
...
...
@@ -14,7 +14,7 @@
</div>
<div>
<van-tabs>
<van-tab
title=
"
申请
详情"
>
<van-tab
title=
"
借据
详情"
>
<div
class=
"layout"
>
<van-row
type=
"flex"
class=
"CoolName"
>
<van-col
span=
"24"
class=
"coollayout"
>
个人信息
</van-col>
...
...
@@ -43,13 +43,13 @@
</van-row>
</div>
<van-row
type=
"flex"
class=
"CoolName"
>
<van-col
span=
"24"
class=
"coollayout"
>
借
款
信息
</van-col>
<van-col
span=
"24"
class=
"coollayout"
>
借
据
信息
</van-col>
</van-row>
<div
class=
"layoutbody"
>
<van-row
type=
"flex"
class=
"layoutName"
>
<van-col
span=
"24"
>
<van-cell-group>
<van-field
label=
"贷款
品种
"
:value=
"varieties"
readonly
input-align=
"right"
/>
<van-field
label=
"贷款
账号
"
:value=
"varieties"
readonly
input-align=
"right"
/>
</van-cell-group>
</van-col>
</van-row>
...
...
@@ -63,7 +63,7 @@
<van-row
type=
"flex"
class=
"layoutName"
>
<van-col
span=
"24"
>
<van-cell-group>
<van-field
label=
"借款
期限
"
:value=
"borrow"
readonly
input-align=
"right"
/>
<van-field
label=
"借款
到期日
"
:value=
"borrow"
readonly
input-align=
"right"
/>
</van-cell-group>
</van-col>
</van-row>
...
...
@@ -77,28 +77,28 @@
<van-row
type=
"flex"
class=
"layoutName"
>
<van-col
span=
"24"
>
<van-cell-group>
<van-field
label=
"
业务办理地区
"
:value=
"area"
readonly
input-align=
"right"
/>
<van-field
label=
"
担保方式
"
:value=
"area"
readonly
input-align=
"right"
/>
</van-cell-group>
</van-col>
</van-row>
<van-row
type=
"flex"
class=
"layoutName"
>
<van-col
span=
"24"
>
<van-cell-group>
<van-field
label=
"
意向机构
"
:value=
"intentions"
readonly
input-align=
"right"
/>
<van-field
label=
"
还款方式
"
:value=
"intentions"
readonly
input-align=
"right"
/>
</van-cell-group>
</van-col>
</van-row>
<van-row
type=
"flex"
class=
"layoutName"
>
<van-col
span=
"24"
>
<van-cell-group>
<van-field
label=
"
客户经理
"
:value=
"customer"
readonly
input-align=
"right"
/>
<van-field
label=
"
借款利率
"
:value=
"customer"
readonly
input-align=
"right"
/>
</van-cell-group>
</van-col>
</van-row>
</div>
</div>
</van-tab>
<van-tab
title=
"业务进度"
>
<van-tab
title=
"业务进度"
v-if=
"status === statusl"
>
<van-steps
direction=
"vertical"
:active=
"0"
>
<van-step>
...
...
@@ -146,6 +146,7 @@
</
template
>
<
script
lang=
"ts"
>
import
{
number
}
from
"
mathjs
"
;
import
{
Component
,
Vue
,
Prop
,
Watch
,
Emit
}
from
"
vue-property-decorator
"
;
/*
* title
...
...
@@ -155,6 +156,9 @@ import { Component, Vue, Prop, Watch, Emit } from "vue-property-decorator";
})
export
default
class
AccommodDetails
extends
Vue
{
tatleName
=
"
我的贷款
"
//状态
status
=
2
;
statusl
:
any
;
//身份证
idcard
=
"
23232111978211
"
//姓名
...
...
@@ -162,19 +166,25 @@ export default class AccommodDetails extends Vue {
//电话
phone
=
"
15665025053
"
//贷款详情
varieties
=
"
一般经营性贷款
"
varieties
=
"
230000009000000
"
//借款金融
amount
=
"
500万
"
//
借款期限
borrow
=
"
2
4月
"
//
到期日
borrow
=
"
2
022-02-01
"
//借款用途
purposes
=
"
经营
"
//
业务办理地区
area
=
"
黑龙江省-哈尔滨市-松北区
"
//
担保方式
area
=
"
抵押
"
//意向机构
intentions
=
"
哈尔滨农信社松北区枝江大道分社
"
//客户经理
customer
=
"
赵恒请
"
intentions
=
"
等额本息
"
//借款利率
customer
=
"
2.54%
"
created
()
{
// debugger
this
.
statusl
=
this
.
$route
.
params
.
status
}
}
...
...
src/views/workbench/AccommodMain.vue
浏览文件 @
ce638afd
...
...
@@ -13,55 +13,53 @@
<tatle-bar
:tatle=
"tatleName"
></tatle-bar>
</div>
<div>
<div
class=
"card"
v-for=
"(item, index) in productParam"
:key=
"index"
>
<div
@
click=
"onClickDetails()"
>
<van-row>
<van-col
span=
"16"
>
<van-col
span=
"24"
class=
"contractNo"
><span>
合同编号:
</span>
{{
item
.
contractNo
}}
</van-col>
<van-col
style=
" width: 100%; margin-left: 8%; line-height: 2;"
>
<van-row
gutter=
"20"
>
<van-col
span=
"12"
class=
"lable"
><span>
合同类型:
</span></van-col>
<van-col
span=
"12"
class=
"contractType"
>
{{
item
.
contractType
}}
</van-col>
</van-row>
<van-row
gutter=
"20"
>
<van-col
span=
"12"
class=
"lable"
><span>
合同金额:
</span></van-col>
<van-col
span=
"12"
class=
"contractAmount"
style=
"color:rgb(255, 204, 0);"
>
{{
item
.
contractAmount
}}
</van-col>
</van-row>
<van-row
gutter=
"20"
>
<van-col
span=
"12"
class=
"lable"
><span>
合同利率:
</span></van-col>
<van-col
span=
"12"
class=
"contractRate"
>
{{
item
.
contractRate
}}
</van-col>
</van-row>
<van-row
gutter=
"20"
>
<van-col
span=
"12"
class=
"lable"
><span>
还款方式:
</span></van-col>
<van-col
span=
"12"
class=
"paymentMethod"
>
{{
item
.
paymentMethod
}}
</van-col>
</van-row>
</van-col>
<div
class=
"card"
v-for=
"(item, index) in productParam"
:key=
"index"
>
<div
@
click=
"onClickDetails()"
>
<van-row>
<van-col
span=
"16"
>
<van-col
span=
"24"
class=
"contractNo"
><span>
合同编号:
</span>
{{
item
.
contractNo
}}
</van-col>
<van-col
style=
" width: 100%; margin-left: 8%; line-height: 2;"
>
<van-row
gutter=
"20"
>
<van-col
span=
"12"
class=
"lable"
><span>
合同类型:
</span></van-col>
<van-col
span=
"12"
class=
"contractType"
>
{{
item
.
contractType
}}
</van-col>
</van-row>
<van-row
gutter=
"20"
>
<van-col
span=
"12"
class=
"lable"
><span>
合同金额:
</span></van-col>
<van-col
span=
"12"
class=
"contractAmount"
style=
"color:rgb(255, 204, 0);"
>
{{
item
.
contractAmount
}}
</van-col>
</van-row>
<van-row
gutter=
"20"
>
<van-col
span=
"12"
class=
"lable"
><span>
合同利率:
</span></van-col>
<van-col
span=
"12"
class=
"contractRate"
>
{{
item
.
contractRate
}}
</van-col>
</van-row>
<van-row
gutter=
"20"
>
<van-col
span=
"12"
class=
"lable"
><span>
还款方式:
</span></van-col>
<van-col
span=
"12"
class=
"paymentMethod"
>
{{
item
.
paymentMethod
}}
</van-col>
</van-row>
</van-col>
</van-col>
<van-col
span=
"8"
>
<svg
class=
"icon"
aria-hidden=
"true"
v-if=
"item.status === 1"
>
<use
xlink:href=
"#icon-a-yifafang60x60px"
></use>
</svg>
<svg
class=
"icon"
aria-hidden=
"true"
v-if=
"item.status === 2"
>
<use
xlink:href=
"#icon-a-yifafang60x60px"
></use>
</svg>
<svg
class=
"icon"
aria-hidden=
"true"
v-if=
"item.status === 3"
>
<use
xlink:href=
"#icon-a-yijieqing60x60px"
></use>
</van-col>
<van-col
span=
"8"
>
<svg
class=
"icon"
aria-hidden=
"true"
v-if=
"item.status === 1"
>
<use
xlink:href=
"#icon-yiqianding"
></use>
</svg>
<svg
class=
"icon"
aria-hidden=
"true"
v-if=
"item.status === 2"
>
<use
xlink:href=
"#icon-weiqianding"
></use>
</svg>
</van-col>
</van-row>
</div>
<!--
<van-row
type=
"flex"
class=
"bottom"
@
click=
"onClickPicket()"
>
<van-col
span=
"24"
class=
"lablel"
><span>
查看合同
</span>
<svg
class=
"iconl"
aria-hidden=
"true"
>
<use
xlink:href=
"#icon-a-xiayiye24x24px"
></use>
</svg>
</van-col>
</van-row>
</van-row>
-->
</div>
<van-row
v-if=
"item.status === 2"
type=
"flex"
class=
"bottom"
@
click=
"onClickPicket()"
>
<van-col
span=
"24"
class=
"lablel"
><span>
查看借据
</span>
<svg
class=
"iconl"
aria-hidden=
"true"
>
<use
xlink:href=
"#icon-a-xiayiye24x24px"
></use>
</svg>
</van-col>
</van-row>
</div>
</div>
</div>
</
template
>
...
...
@@ -76,13 +74,13 @@ import { Component, Vue, Prop, Watch, Emit } from "vue-property-decorator";
})
export
default
class
AccommodMain
extends
Vue
{
tatleName
=
"
我的贷款
"
//
未
结清贷款计划
//结清贷款计划
productParam
=
[{
contractNo
:
"
117647289092
"
,
contractType
:
"
一般借款合同
"
,
contractAmount
:
"
30,000.00
"
,
contractRate
:
"
4.13%
"
,
paymentMethod
:
"
等额本金
"
,
paymentMethod
:
"
等额本金
"
,
status
:
2
},
{
...
...
@@ -90,19 +88,19 @@ export default class AccommodMain extends Vue {
contractType
:
"
一般借款合同
"
,
contractAmount
:
"
30,000.00
"
,
contractRate
:
"
1.13%
"
,
paymentMethod
:
"
等额本金
"
,
status
:
3
}]
//已结清
productParamlist
=
[{
productname
:
"
'llll'流动之星贷款
"
,
money
:
"
30
"
,
guarantee
:
"
担保
"
,
status
:
3
,
month
:
"
12
"
,
time
:
"
2022-02-18
"
paymentMethod
:
"
等额本金
"
,
status
:
2
},
{
contractNo
:
"
117647289092
"
,
contractType
:
"
一般借款合同
"
,
contractAmount
:
"
30,000.00
"
,
contractRate
:
"
1.13%
"
,
paymentMethod
:
"
等额本金
"
,
status
:
1
}]
//点击还款计划事件
onClickDetails
()
{
this
.
$router
.
push
({
...
...
@@ -130,6 +128,7 @@ export default class AccommodMain extends Vue {
width
:
100%
;
height
:
20%
;
}
.icon
{
width
:
80px
;
height
:
80px
;
...
...
@@ -167,13 +166,13 @@ export default class AccommodMain extends Vue {
}
.bottom
[
data-v-d306f034
]
{
background-color
:
#3672f1
;
border
:
none
;
border-radius
:
5px
;
border-top-left-radius
:
0px
;
border-top-right-radius
:
0px
;
text-align
:
center
;
margin-top
:
15px
;
background-color
:
#3672f1
;
border
:
none
;
border-radius
:
5px
;
border-top-left-radius
:
0px
;
border-top-right-radius
:
0px
;
text-align
:
center
;
margin-top
:
15px
;
}
.lablel
{
...
...
src/views/workbench/Accommodation.vue
浏览文件 @
ce638afd
...
...
@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-07 16:13:13
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-0
7-25 14:38:19
* @LastEditTime: 2022-0
8-18 14:18:52
* @FilePath: \mcep-h5\src\components\common\Bottom.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
...
...
@@ -16,10 +16,10 @@
<van-tabs>
<van-tab
title=
"未结清"
>
<picket-acced
:productParam=
"productParam"
class=
"acced"
@
onClickDetails=
"onClickDetails"
@
onClickPicket=
"onClickPicket"
></picket-acced>
@
onClickPicket=
"onClickPicket"
></picket-acced>
</van-tab>
<van-tab
title=
"已结清"
>
<picket-acced
:productParam=
"productParamlist"
class=
"acced"
></picket-acced>
<picket-acced
:productParam=
"productParamlist"
@
onClickDetails=
"onClickDetails"
class=
"acced"
></picket-acced>
</van-tab>
</van-tabs>
...
...
@@ -43,7 +43,7 @@ export default class Accommodation extends Vue {
money
:
"
30
"
,
guarantee
:
"
担保
"
,
month
:
"
12
"
,
status
:
2
,
status
:
1
,
time
:
"
2022-02-18
"
},
{
productname
:
"
'企业之星'流动之星贷款
"
,
...
...
@@ -64,9 +64,12 @@ export default class Accommodation extends Vue {
}]
//点击还款计划事件
onClickDetails
()
{
onClickDetails
(
status
:
any
)
{
this
.
$router
.
push
({
name
:
"
AccommodDetails
"
name
:
"
AccommodDetails
"
,
params
:{
status
:
status
}
})
}
//点击body事件
...
...
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录