Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiedao-app-operator-master
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lanbaoming
jiedao-app-operator-master
Commits
7e0c1c55
Commit
7e0c1c55
authored
Aug 26, 2024
by
yujinyao
Browse files
Options
Browse Files
Download
Plain Diff
en_US.json和dict.js文件冲突
parents
a378af4f
0f782c13
Changes
35
Hide whitespace changes
Inline
Side-by-side
Showing
35 changed files
with
14603 additions
and
5851 deletions
+14603
-5851
giftManagement.js
src/api/ecw/giftManagement.js
+118
-0
memberManagement.js
src/api/ecw/memberManagement.js
+238
-0
index.vue
src/components/DictSelector/index.vue
+171
-123
index.vue
src/components/FileUpload/index.vue
+45
-19
index.vue
src/components/ImageUpload/index.vue
+7
-1
en_US.json
src/i18n/languages/en_US.json
+4690
-4536
dict.js
src/utils/dict.js
+235
-224
request.js
src/utils/request.js
+118
-99
query.vue
src/views/ecw/box/query.vue
+2
-2
index.vue
src/views/ecw/customer/index.vue
+63
-9
indirectCustomer.vue
src/views/ecw/customer/indirectCustomer.vue
+51
-3
mergecustomer.vue
src/views/ecw/customer/mergecustomer.vue
+6
-0
index.vue
src/views/ecw/customerConfirm/index.vue
+42
-3
index.vue
src/views/ecw/customerToBeAssigned/index.vue
+42
-2
chooseMember.vue
...w/giftManagement/bulkExchange/components/chooseMember.vue
+327
-0
index.vue
src/views/ecw/giftManagement/bulkExchange/index.vue
+611
-0
operatingGift.vue
src/views/ecw/giftManagement/components/operatingGift.vue
+457
-0
index.vue
src/views/ecw/giftManagement/index.vue
+639
-0
index.vue
...cw/memberManagement/addIntegrationRuleOperation/index.vue
+1150
-0
index.vue
src/views/ecw/memberManagement/exchangeRecord/index.vue
+851
-0
chooseGift.vue
...agement/exchangeRecordOperation/components/chooseGift.vue
+499
-0
index.vue
...ws/ecw/memberManagement/exchangeRecordOperation/index.vue
+815
-0
index.vue
src/views/ecw/memberManagement/integralRecord/index.vue
+349
-0
index.vue
src/views/ecw/memberManagement/integrationRule/index.vue
+517
-0
index.vue
src/views/ecw/memberManagement/memberLevelSetting/index.vue
+247
-0
index.vue
src/views/ecw/memberManagement/memberPointsSummary/index.vue
+396
-0
index.vue
src/views/ecw/myCustomerService/index.vue
+41
-1
index.vue
src/views/ecw/oceanCustomer/index.vue
+41
-1
edit.vue
src/views/ecw/order/edit.vue
+322
-284
prepayDeal.vue
src/views/ecw/order/prepayDeal.vue
+69
-70
edit.vue
src/views/ecw/productPrice/edit.vue
+67
-60
index.vue
src/views/member/user/index.vue
+859
-410
memberDetails.vue
src/views/member/user/memberDetails.vue
+516
-1
index.vue
src/views/report/customer_analysis/index.vue
+1
-1
index.vue
src/views/report/customerreport/index.vue
+1
-2
No files found.
src/api/ecw/giftManagement.js
0 → 100644
View file @
7e0c1c55
import
request
from
"
@/utils/request
"
;
//获取网点列表
export
function
getNodeList
(
query
)
{
return
request
({
url
:
"
/ecw/node/list-all-simple
"
,
method
:
"
get
"
,
params
:
query
,
});
}
//获取积分列表
export
function
getGiftList
(
data
)
{
return
request
({
url
:
"
/ecw/reward/page
"
,
method
:
"
post
"
,
params
:
{
page
:
data
.
page
,
rows
:
data
.
rows
,
},
data
:
data
,
});
}
//新增礼品
export
function
addRewards
(
data
)
{
return
request
({
url
:
"
/ecw/reward/create
"
,
method
:
"
post
"
,
data
:
data
,
});
}
//删除礼品
export
function
deleteRewards
(
data
)
{
return
request
({
url
:
"
/ecw/reward/delete?id=
"
+
data
.
id
,
method
:
"
delete
"
,
});
}
//礼品延期
export
function
delayRewards
(
data
)
{
return
request
({
url
:
"
/ecw/reward/delay
"
,
method
:
"
post
"
,
data
:
data
,
});
}
//编辑礼品
export
function
editRewards
(
data
)
{
return
request
({
url
:
"
/ecw/reward/update
"
,
method
:
"
post
"
,
data
:
data
,
});
}
//礼品状态变更
export
function
changeRewardsStatus
(
data
)
{
return
request
({
url
:
"
/ecw/reward/status
"
,
method
:
"
post
"
,
data
:
data
,
});
}
//复制礼品
export
function
copyRewardsAPI
(
id
)
{
return
request
({
url
:
"
/ecw/reward/copy/
"
+
id
,
method
:
"
post
"
,
});
}
//获取单个礼品详情
export
function
getRewardsDetails
(
data
)
{
return
request
({
url
:
"
/ecw/reward/get
"
,
method
:
"
get
"
,
params
:
data
,
});
}
//获取国家列表
export
function
getTradeCountryList
()
{
return
request
({
url
:
"
/ecw/region/getTradeCountryList
"
,
method
:
"
get
"
,
});
}
//获取城市列表
export
function
getCityList
(
query
)
{
return
request
({
url
:
"
/ecw/region/getCityListByParent
"
,
method
:
"
get
"
,
params
:
query
,
});
}
//获取会员积分列表
export
function
getMemberList
(
data
)
{
return
request
({
url
:
"
/member/user-score/page
"
,
method
:
"
post
"
,
data
,
});
}
//批量兑换礼品
export
function
bulkConversion
(
data
)
{
return
request
({
url
:
"
/reward/redeem/batch
"
,
method
:
"
post
"
,
data
,
});
}
src/api/ecw/memberManagement.js
0 → 100644
View file @
7e0c1c55
import
request
from
"
@/utils/request
"
;
//操作积分
export
function
operateMemberScore
(
data
)
{
return
request
({
url
:
"
/member/user-score/operate
"
,
method
:
"
post
"
,
data
:
data
,
});
}
//积分记录分页
export
function
queryMemberScoreRecord
(
data
)
{
return
request
({
url
:
"
/member/user-score-log/page
"
,
method
:
"
post
"
,
data
:
data
,
});
}
//兑换记录分页
export
function
queryMemberExchangeRecord
(
data
)
{
return
request
({
url
:
"
/reward/redeem/record/page
"
,
method
:
"
post
"
,
data
:
data
,
});
}
//批量核销按钮
export
function
batchVerifyAPI
(
data
)
{
return
request
({
url
:
"
/reward/redeem/record/batch/verify
"
,
method
:
"
post
"
,
data
:
data
,
});
}
//兑换记录导出
export
function
batchRecordExport
(
data
)
{
return
request
({
url
:
"
/reward/redeem/record/export
"
,
method
:
"
post
"
,
data
:
data
,
});
}
//兑换记录导入
export
function
batchRecordImport
(
data
)
{
return
request
({
url
:
"
/reward/redeem/record/import
"
,
method
:
"
post
"
,
data
:
data
,
});
}
//兑换记录导入模板下载
export
function
batchRecordImportTemplate
()
{
return
request
({
url
:
"
/reward/redeem/record/import/template
"
,
method
:
"
post
"
,
responseType
:
"
blob
"
,
});
}
//撤销 操作
export
function
rewardCancelQuery
(
data
)
{
return
request
({
url
:
"
/reward/redeem/record/cancel
"
,
method
:
"
post
"
,
data
:
data
,
});
}
//获取记录详情
export
function
getRewardDetailQuery
(
data
)
{
return
request
({
url
:
"
/reward/redeem/record/detail
"
,
method
:
"
post
"
,
data
:
data
,
});
}
//更新兑换记录
export
function
updatedRewardsDetails
(
data
)
{
return
request
({
url
:
"
/reward/redeem/record/update
"
,
method
:
"
post
"
,
data
:
data
,
});
}
//核销回退
export
function
verifyRollback
(
data
)
{
return
request
({
url
:
"
/reward/redeem/record/verify-back
"
,
method
:
"
post
"
,
data
:
data
,
});
}
//核销 操作
export
function
verifyRedeem
(
data
)
{
return
request
({
url
:
"
/reward/redeem/record/verify
"
,
method
:
"
post
"
,
data
:
data
,
});
}
//获取积分规则记录
export
function
getScoreRecordList
(
data
)
{
return
request
({
url
:
"
/member/score-rule/page
"
,
method
:
"
post
"
,
params
:
{
page
:
data
.
page
,
rows
:
data
.
rows
,
},
data
,
});
}
//会员积分等级列表
export
function
getMemberLevelList
(
data
)
{
return
request
({
url
:
"
/member/user-level/page
"
,
method
:
"
post
"
,
data
,
});
}
//新增会员等级设置
export
function
addNewMemberLevel
(
data
)
{
return
request
({
url
:
"
/member/user-level/add
"
,
method
:
"
post
"
,
data
,
});
}
//删除会员等级
export
function
delMemberLevel
(
data
)
{
return
request
({
url
:
"
/member/user-level/delete
"
,
method
:
"
post
"
,
data
,
});
}
//edit member level
export
function
editMemberLevel
(
data
)
{
return
request
({
url
:
"
/member/user-level/update
"
,
method
:
"
post
"
,
data
,
});
}
//获得目的国、目的城市、目的仓列表
export
function
getRegionTreeList
()
{
return
request
({
url
:
"
/member/score-rule/warehouse-tree-region-list
"
,
method
:
"
get
"
,
});
}
//获取渠道列表
export
function
getChannelList
()
{
return
request
({
url
:
"
/ecw/channel/list-all-simple
"
,
method
:
"
get
"
,
});
}
//积分规则创建
export
function
createIntegralRule
(
data
)
{
return
request
({
url
:
"
/member/score-rule/create
"
,
method
:
"
post
"
,
data
,
});
}
//启用关闭 积分规则
export
function
integralRuleStatus
(
data
)
{
return
request
({
url
:
"
/member/score-rule/status
"
,
method
:
"
post
"
,
data
,
});
}
//复制积分规则
export
function
integralRuleCopy
(
data
)
{
return
request
({
url
:
"
/member/score-rule/copy
"
,
method
:
"
post
"
,
data
,
});
}
//延期积分规则
export
function
integralRuleDelay
(
data
)
{
return
request
({
url
:
"
/member/score-rule/delay
"
,
method
:
"
post
"
,
data
,
});
}
//删除积分规则
export
function
integralRuleDelete
(
data
)
{
return
request
({
url
:
"
/member/score-rule/delete
"
,
method
:
"
post
"
,
data
,
});
}
//获取积分规则详情
export
function
integralRuleDetails
(
data
)
{
return
request
({
url
:
"
/member/score-rule/get
"
,
method
:
"
post
"
,
data
,
});
}
//编辑积分规则
export
function
integralRuleUpdated
(
data
)
{
return
request
({
url
:
"
/member/score-rule/update
"
,
method
:
"
post
"
,
data
,
});
}
src/components/DictSelector/index.vue
View file @
7e0c1c55
<
template
>
<
template
>
<div
class=
"dict-selector"
>
<div
class=
"dict-selector"
>
<el-select
v-if=
"formType == 'select'"
v-model=
"valueSync"
:placeholder=
"placeholder || $t('请选择')"
:clearable=
"clearable"
:multiple=
"multiple"
:disabled=
"disabled"
@
change=
"val => $emit('change', val)"
>
<el-select
<el-option
v-for=
"dict in formattedList"
v-if=
"formType == 'select'"
:key=
"dict.value"
:label=
"$l(dict, 'label')"
:value=
"dict.value"
/>
v-model=
"valueSync"
</el-select>
:placeholder=
"placeholder || $t('请选择')"
<el-radio-group
v-if=
"formType == 'radio'"
v-model=
"valueSync"
:disabled=
"disabled"
>
:clearable=
"clearable"
<el-radio
v-for=
"dict in formattedList"
:label=
"dict.value"
:checked=
"valueSync === dict.value"
:key=
"dict.value"
>
{{
$l
(
dict
,
'
label
'
)
}}
</el-radio>
:multiple=
"multiple"
</el-radio-group>
:disabled=
"disabled"
<el-checkbox-group
v-if=
"formType == 'checkbox'"
v-model=
"valueSync"
:disabled=
"disabled"
>
@
change=
"(val) => $emit('change', val)"
<el-checkbox
v-for=
"dict in formattedList"
:label=
"dict.value"
:key=
"dict.value"
>
{{
$l
(
dict
,
'
label
'
)
}}
</el-checkbox>
>
</el-checkbox-group>
<el-option
</div>
v-for=
"dict in formattedList"
:key=
"dict.value"
:label=
"$l(dict, 'label')"
:value=
"dict.value"
/>
</el-select>
<el-radio-group
v-if=
"formType == 'radio'"
v-model=
"valueSync"
:disabled=
"disabled"
>
<el-radio
v-for=
"dict in formattedList"
:label=
"dict.value"
:checked=
"valueSync === dict.value"
:key=
"dict.value"
>
{{
$l
(
dict
,
"
label
"
)
}}
</el-radio
>
</el-radio-group>
<el-checkbox-group
v-if=
"formType == 'checkbox'"
v-model=
"valueSync"
:disabled=
"disabled"
>
<el-checkbox
v-for=
"dict in formattedList"
:label=
"dict.value"
:key=
"dict.value"
>
{{
$l
(
dict
,
"
label
"
)
}}
</el-checkbox
>
</el-checkbox-group>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
const
FORMATTERS
=
{
const
FORMATTERS
=
{
"
string
"
:
String
,
string
:
String
,
"
bool
"
:
function
(
val
){
bool
:
function
(
val
)
{
return
[
false
,
'
false
'
,
0
,
"
0
"
].
indexOf
(
val
)
<
0
return
[
false
,
"
false
"
,
0
,
"
0
"
].
indexOf
(
val
)
<
0
;
},
},
'
number
'
:
Number
,
number
:
Number
,
'
array
'
:
function
(
val
){
array
:
function
(
val
)
{
return
typeof
val
==
'
string
'
?
val
.
split
(
'
,
'
).
filter
(
item
=>
item
&&
item
!==
''
)
:
val
return
typeof
val
==
"
string
"
}
?
val
.
split
(
"
,
"
).
filter
((
item
)
=>
item
&&
item
!==
""
)
}
:
val
;
},
};
export
default
{
export
default
{
props
:{
props
:
{
placeholder
:
{
placeholder
:
{
type
:
String
,
type
:
String
,
default
:
null
default
:
null
,
},
type
:
String
,
value
:
[
String
,
Number
,
Array
,
Boolean
],
multiple
:
Boolean
,
formType
:{
type
:
String
,
default
:
'
select
'
},
formatter
:
{
type
:
[
Function
,
String
],
default
:
String
},
defaultable
:
Boolean
,
// 是否默认选择第一个
disabled
:
Boolean
,
/**
* 过滤字典项,用于只使用部分字典项的场景
*/
filter
:
{
type
:
Function
,
default
:
()
=>
true
},
clearable
:
Boolean
},
},
data
(){
type
:
String
,
return
{
value
:
[
String
,
Number
,
Array
,
Boolean
],
valueSync
:
this
.
multiple
?
[]
:
null
multiple
:
Boolean
,
}
formType
:
{
type
:
String
,
default
:
"
select
"
,
},
},
computed
:{
formatter
:
{
dicts
(){
type
:
[
Function
,
String
],
return
this
.
getList
(
this
.
type
)
default
:
String
,
},
dictList
(){
return
this
.
dicts
.
filter
(
this
.
filter
)
},
formattedList
(){
let
arr
=
[]
this
.
dictList
.
forEach
(
item
=>
{
arr
.
push
({
label
:
item
.
label
,
labelEn
:
item
.
labelEn
,
value
:
this
.
format
(
item
.
value
),
cssClass
:
item
.
cssClass
,
colorType
:
item
.
colorType
})
})
return
arr
}
},
},
watch
:{
defaultable
:
Boolean
,
// 是否默认选择第一个
valueSync
(
val
){
disabled
:
Boolean
,
this
.
$emit
(
'
input
'
,
val
)
/**
},
* 过滤字典项,用于只使用部分字典项的场景
value
(
val
){
*/
if
(
val
!=
this
.
valueSync
)
this
.
setValueSync
()
filter
:
{
},
type
:
Function
,
dictList
(){
default
:
()
=>
true
,
this
.
setDefault
()
},
}
clearable
:
Boolean
,
},
data
()
{
return
{
valueSync
:
this
.
multiple
?
[]
:
null
,
};
},
computed
:
{
dicts
()
{
return
this
.
getList
(
this
.
type
);
},
dictList
()
{
return
this
.
dicts
.
filter
(
this
.
filter
);
},
formattedList
()
{
let
arr
=
[];
this
.
dictList
.
forEach
((
item
)
=>
{
arr
.
push
({
label
:
item
.
label
,
labelEn
:
item
.
labelEn
,
value
:
this
.
format
(
item
.
value
),
cssClass
:
item
.
cssClass
,
colorType
:
item
.
colorType
,
});
});
return
arr
;
},
},
created
(){
},
this
.
setValueSync
()
watch
:
{
this
.
setDefault
()
valueSync
(
val
)
{
this
.
$emit
(
"
input
"
,
val
);
},
},
methods
:{
value
(
val
)
{
format
(
val
){
if
(
val
!=
this
.
valueSync
)
this
.
setValueSync
();
if
(
val
===
null
||
val
==
undefined
||
val
==
''
)
return
val
},
let
formatter
=
typeof
this
.
formatter
==
'
function
'
?
this
.
formatter
:
FORMATTERS
[
this
.
formatter
]
dictList
()
{
if
(
!
formatter
){
this
.
setDefault
();
console
.
warn
(
'
格式器无效
'
,
this
.
formatter
)
},
return
val
},
}
created
()
{
return
formatter
(
val
)
this
.
setValueSync
();
},
this
.
setDefault
();
changeValue
(
val
){
},
this
.
valueSync
=
val
methods
:
{
},
format
(
val
)
{
setValueSync
(){
if
(
val
===
null
||
val
==
undefined
||
val
==
""
)
return
val
;
if
(
this
.
value
===
null
||
this
.
value
===
undefined
||
this
.
value
===
''
){
return
this
.
valueSync
=
this
.
multiple
?
[]
:
this
.
value
let
formatter
=
}
typeof
this
.
formatter
==
"
function
"
if
(
this
.
multiple
){
?
this
.
formatter
let
value
=
this
.
value
||
[]
:
FORMATTERS
[
this
.
formatter
];
if
(
typeof
this
.
value
==
'
string
'
){
value
=
this
.
value
.
split
(
'
,
'
).
filter
(
item
=>
item
&&
item
!=
''
)
if
(
!
formatter
)
{
}
console
.
warn
(
"
格式器无效
"
,
this
.
formatter
);
this
.
valueSync
=
value
.
map
(
item
=>
this
.
format
(
item
))
return
val
;
}
else
{
}
this
.
valueSync
=
this
.
format
(
this
.
value
)
}
return
formatter
(
val
);
},
},
getList
(){
changeValue
(
val
)
{
return
this
.
getDictDatas
(
this
.
type
)
this
.
valueSync
=
val
;
},
},
setDefault
(){
setValueSync
()
{
if
(
!
this
.
defaultable
)
return
if
(
if
(
this
.
dictList
.
length
&&
(
this
.
valueSync
===
null
||
this
.
valueSync
==
undefined
||
this
.
valueSync
==
''
)){
this
.
value
===
null
||
this
.
valueSync
=
this
.
multiple
?
[]
:
this
.
formattedList
[
0
].
value
this
.
value
===
undefined
||
}
this
.
value
===
""
)
{
return
(
this
.
valueSync
=
this
.
multiple
?
[]
:
this
.
value
);
}
if
(
this
.
multiple
)
{
let
value
=
this
.
value
||
[];
if
(
typeof
this
.
value
==
"
string
"
)
{
value
=
this
.
value
.
split
(
"
,
"
).
filter
((
item
)
=>
item
&&
item
!=
""
);
}
}
}
this
.
valueSync
=
value
.
map
((
item
)
=>
this
.
format
(
item
));
}
}
else
{
this
.
valueSync
=
this
.
format
(
this
.
value
);
}
},
getList
()
{
return
this
.
getDictDatas
(
this
.
type
);
},
setDefault
()
{
if
(
!
this
.
defaultable
)
return
;
if
(
this
.
dictList
.
length
&&
(
this
.
valueSync
===
null
||
this
.
valueSync
==
undefined
||
this
.
valueSync
==
""
)
)
{
this
.
valueSync
=
this
.
multiple
?
[]
:
this
.
formattedList
[
0
].
value
;
}
},
},
};
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
>
.dict-selector
{
.dict-selector
{
display
:
inline-block
;
display
:
inline-block
;
}
}
</
style
>
</
style
>
src/components/FileUpload/index.vue
View file @
7e0c1c55
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
:before-upload=
"handleBeforeUpload"
:before-upload=
"handleBeforeUpload"
:file-list=
"fileList"
:file-list=
"fileList"
:limit=
"limit"
:limit=
"limit"
:disabled=
"disabled"
:on-error=
"handleUploadError"
:on-error=
"handleUploadError"
:on-exceed=
"handleExceed"
:on-exceed=
"handleExceed"
:on-success=
"handleUploadSuccess"
:on-success=
"handleUploadSuccess"
...
@@ -15,24 +16,40 @@
...
@@ -15,24 +16,40 @@
ref=
"upload"
ref=
"upload"
>
>
<!-- 上传按钮 -->
<!-- 上传按钮 -->
<el-button
size=
"mini"
type=
"primary"
>
{{
$t
(
'
选取文件
'
)
}}
</el-button>
<el-button
size=
"mini"
type=
"primary"
:disabled=
"disabled"
>
{{
$t
(
"
选取文件
"
)
}}
</el-button>
<!-- 上传提示 -->
<!-- 上传提示 -->
<div
class=
"el-upload__tip"
slot=
"tip"
v-if=
"showTip"
>
<div
class=
"el-upload__tip"
slot=
"tip"
v-if=
"showTip"
>
请上传
请上传
<template
v-if=
"fileSize"
>
大小不超过
<b
style=
"color: #f56c6c"
>
{{
fileSize
}}
MB
</b>
</
template
>
<template
v-if=
"fileSize"
>
<
template
v-if=
"fileType"
>
格式为
<b
style=
"color: #f56c6c"
>
{{
fileType
.
join
(
"
/
"
)
}}
</b>
</
template
>
大小不超过
<b
style=
"color: #f56c6c"
>
{{
fileSize
}}
MB
</b>
</
template
>
<
template
v-if=
"fileType"
>
格式为
<b
style=
"color: #f56c6c"
>
{{
fileType
.
join
(
"
/
"
)
}}
</b>
</
template
>
的文件
的文件
</div>
</div>
</el-upload>
</el-upload>
<!-- 文件列表 -->
<!-- 文件列表 -->
<transition-group
class=
"upload-file-list el-upload-list el-upload-list--text"
name=
"el-fade-in-linear"
tag=
"ul"
>
<transition-group
<li
:key=
"file.url"
class=
"el-upload-list__item ele-upload-list__item-content"
v-for=
"(file, index) in fileList"
>
class=
"upload-file-list el-upload-list el-upload-list--text"
name=
"el-fade-in-linear"
tag=
"ul"
>
<li
:key=
"file.url"
class=
"el-upload-list__item ele-upload-list__item-content"
v-for=
"(file, index) in fileList"
>
<el-link
:href=
"`${file.url}`"
:underline=
"false"
target=
"_blank"
>
<el-link
:href=
"`${file.url}`"
:underline=
"false"
target=
"_blank"
>
<span
class=
"el-icon-document"
>
{{ getFileName(file.name) }}
</span>
<span
class=
"el-icon-document"
>
{{ getFileName(file.name) }}
</span>
</el-link>
</el-link>
<div
class=
"ele-upload-list__item-content-action"
>
<div
class=
"ele-upload-list__item-content-action"
>
<el-link
:underline=
"false"
@
click=
"handleDelete(index)"
type=
"danger"
>
删除
</el-link>
<el-link
:underline=
"false"
@
click=
"handleDelete(index)"
type=
"danger"
>
删除
</el-link
>
</div>
</div>
</li>
</li>
</transition-group>
</transition-group>
...
@@ -62,18 +79,23 @@ export default {
...
@@ -62,18 +79,23 @@ export default {
type
:
Array
,
type
:
Array
,
default
:
()
=>
[
"
doc
"
,
"
xls
"
,
"
ppt
"
,
"
txt
"
,
"
pdf
"
],
default
:
()
=>
[
"
doc
"
,
"
xls
"
,
"
ppt
"
,
"
txt
"
,
"
pdf
"
],
},
},
disabled
:
{
type
:
Boolean
,
default
:
false
,
},
// 是否显示提示
// 是否显示提示
isShowTip
:
{
isShowTip
:
{
type
:
Boolean
,
type
:
Boolean
,
default
:
true
default
:
true
,
}
}
,
},
},
data
()
{
data
()
{
return
{
return
{
number
:
0
,
number
:
0
,
uploadList
:
[],
uploadList
:
[],
baseUrl
:
process
.
env
.
VUE_APP_BASE_API
,
baseUrl
:
process
.
env
.
VUE_APP_BASE_API
,
uploadFileUrl
:
process
.
env
.
VUE_APP_BASE_API
+
"
/admin-api/infra/file/org-name/up
"
,
// 上传的文件服务器地址
uploadFileUrl
:
process
.
env
.
VUE_APP_BASE_API
+
"
/admin-api/infra/file/org-name/up
"
,
// 上传的文件服务器地址
headers
:
{
headers
:
{
Authorization
:
"
Bearer
"
+
getToken
(),
Authorization
:
"
Bearer
"
+
getToken
(),
},
},
...
@@ -86,9 +108,9 @@ export default {
...
@@ -86,9 +108,9 @@ export default {
if
(
val
)
{
if
(
val
)
{
let
temp
=
1
;
let
temp
=
1
;
// 首先将值转为数组
// 首先将值转为数组
const
list
=
Array
.
isArray
(
val
)
?
val
:
this
.
value
.
split
(
'
,
'
);
const
list
=
Array
.
isArray
(
val
)
?
val
:
this
.
value
.
split
(
"
,
"
);
// 然后将数组转为对象数组
// 然后将数组转为对象数组
this
.
fileList
=
list
.
map
(
item
=>
{
this
.
fileList
=
list
.
map
(
(
item
)
=>
{
if
(
typeof
item
===
"
string
"
)
{
if
(
typeof
item
===
"
string
"
)
{
item
=
{
name
:
item
,
url
:
item
};
item
=
{
name
:
item
,
url
:
item
};
}
}
...
@@ -101,8 +123,8 @@ export default {
...
@@ -101,8 +123,8 @@ export default {
}
}
},
},
deep
:
true
,
deep
:
true
,
immediate
:
true
immediate
:
true
,
}
}
,
},
},
computed
:
{
computed
:
{
// 是否显示提示
// 是否显示提示
...
@@ -117,7 +139,9 @@ export default {
...
@@ -117,7 +139,9 @@ export default {
if
(
this
.
fileType
)
{
if
(
this
.
fileType
)
{
let
fileExtension
=
""
;
let
fileExtension
=
""
;
if
(
file
.
name
.
lastIndexOf
(
"
.
"
)
>
-
1
)
{
if
(
file
.
name
.
lastIndexOf
(
"
.
"
)
>
-
1
)
{
fileExtension
=
file
.
name
.
slice
(
file
.
name
.
lastIndexOf
(
"
.
"
)
+
1
).
toLowerCase
();
fileExtension
=
file
.
name
.
slice
(
file
.
name
.
lastIndexOf
(
"
.
"
)
+
1
)
.
toLowerCase
();
}
}
const
isTypeOk
=
this
.
fileType
.
some
((
type
)
=>
{
const
isTypeOk
=
this
.
fileType
.
some
((
type
)
=>
{
if
(
file
.
type
.
indexOf
(
type
)
>
-
1
)
return
true
;
if
(
file
.
type
.
indexOf
(
type
)
>
-
1
)
return
true
;
...
@@ -125,7 +149,9 @@ export default {
...
@@ -125,7 +149,9 @@ export default {
return
false
;
return
false
;
});
});
if
(
!
isTypeOk
)
{
if
(
!
isTypeOk
)
{
this
.
$modal
.
msgError
(
`文件格式不正确, 请上传
${
this
.
fileType
.
join
(
"
/
"
)}
格式文件!`
);
this
.
$modal
.
msgError
(
`文件格式不正确, 请上传
${
this
.
fileType
.
join
(
"
/
"
)}
格式文件!`
);
return
false
;
return
false
;
}
}
}
}
...
@@ -148,7 +174,7 @@ export default {
...
@@ -148,7 +174,7 @@ export default {
// 上传失败
// 上传失败
handleUploadError
(
err
)
{
handleUploadError
(
err
)
{
this
.
$modal
.
msgError
(
"
上传图片失败,请重试
"
);
this
.
$modal
.
msgError
(
"
上传图片失败,请重试
"
);
this
.
$modal
.
closeLoading
()
this
.
$modal
.
closeLoading
()
;
},
},
// 上传成功回调
// 上传成功回调
handleUploadSuccess
(
res
)
{
handleUploadSuccess
(
res
)
{
...
@@ -182,9 +208,9 @@ export default {
...
@@ -182,9 +208,9 @@ export default {
for
(
let
i
in
list
)
{
for
(
let
i
in
list
)
{
strs
+=
list
[
i
].
url
+
separator
;
strs
+=
list
[
i
].
url
+
separator
;
}
}
return
strs
!=
''
?
strs
.
substr
(
0
,
strs
.
length
-
1
)
:
''
;
return
strs
!=
""
?
strs
.
substr
(
0
,
strs
.
length
-
1
)
:
""
;
}
}
,
}
}
,
};
};
</
script
>
</
script
>
...
...
src/components/ImageUpload/index.vue
View file @
7e0c1c55
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
<span
class=
"el-upload-list__item-preview"
@
click=
"handlePictureCardPreview(item)"
>
<span
class=
"el-upload-list__item-preview"
@
click=
"handlePictureCardPreview(item)"
>
<i
class=
"el-icon-zoom-in"
></i>
<i
class=
"el-icon-zoom-in"
></i>
</span>
</span>
<span
class=
"el-upload-list__item-delete"
@
click=
"handleRemove(item)"
>
<span
class=
"el-upload-list__item-delete"
@
click=
"handleRemove(item)"
v-if =
"isShowEditButton"
>
<i
class=
"el-icon-delete"
></i>
<i
class=
"el-icon-delete"
></i>
</span>
</span>
</span>
</span>
...
@@ -24,6 +24,7 @@
...
@@ -24,6 +24,7 @@
</ul>
</ul>
<el-upload
<el-upload
v-if =
"isShowEditButton"
multiple
multiple
:action=
"uploadImgUrl"
:action=
"uploadImgUrl"
list-type=
"picture-card"
list-type=
"picture-card"
...
@@ -94,6 +95,11 @@ export default {
...
@@ -94,6 +95,11 @@ export default {
isShowTip
:
{
isShowTip
:
{
type
:
Boolean
,
type
:
Boolean
,
default
:
true
default
:
true
},
//是否显示编辑按钮
isShowEditButton
:{
type
:
Boolean
,
default
:
true
}
}
},
},
data
()
{
data
()
{
...
...
src/i18n/languages/en_US.json
View file @
7e0c1c55
This source diff could not be displayed because it is too large. You can
view the blob
instead.
src/utils/dict.js
View file @
7e0c1c55
...
@@ -3,157 +3,157 @@
...
@@ -3,157 +3,157 @@
*
*
* 数据字典工具类
* 数据字典工具类
*/
*/
import
store
from
'
@/store
'
import
store
from
"
@/store
"
;
import
i18n
from
'
@/i18n
'
import
i18n
from
"
@/i18n
"
;
export
const
DICT_TYPE
=
{
export
const
DICT_TYPE
=
{
USER_TYPE
:
'
user_type
'
,
USER_TYPE
:
"
user_type
"
,
COMMON_STATUS
:
'
common_status
'
,
COMMON_STATUS
:
"
common_status
"
,
AUDIT_STATUS
:
'
audit_status
'
,
AUDIT_STATUS
:
"
audit_status
"
,
ADVANCE_STATUS
:
'
advance_status
'
,
ADVANCE_STATUS
:
"
advance_status
"
,
BOX_SHIPMENT_STATUS
:
'
box_shipment_status
'
,
BOX_SHIPMENT_STATUS
:
"
box_shipment_status
"
,
BOX_SEA_AIR_SHIPMENT_STATUS
:
'
shipment_sea_air_state
'
,
BOX_SEA_AIR_SHIPMENT_STATUS
:
"
shipment_sea_air_state
"
,
// ========== SYSTEM 模块 ==========
// ========== SYSTEM 模块 ==========
SYSTEM_USER_SEX
:
'
system_user_sex
'
,
SYSTEM_USER_SEX
:
"
system_user_sex
"
,
SYSTEM_MENU_TYPE
:
'
system_menu_type
'
,
SYSTEM_MENU_TYPE
:
"
system_menu_type
"
,
SYSTEM_ROLE_TYPE
:
'
system_role_type
'
,
SYSTEM_ROLE_TYPE
:
"
system_role_type
"
,
SYSTEM_DATA_SCOPE
:
'
system_data_scope
'
,
SYSTEM_DATA_SCOPE
:
"
system_data_scope
"
,
SYSTEM_NOTICE_TYPE
:
'
system_notice_type
'
,
SYSTEM_NOTICE_TYPE
:
"
system_notice_type
"
,
SYSTEM_OPERATE_TYPE
:
'
system_operate_type
'
,
SYSTEM_OPERATE_TYPE
:
"
system_operate_type
"
,
SYSTEM_LOGIN_TYPE
:
'
system_login_type
'
,
SYSTEM_LOGIN_TYPE
:
"
system_login_type
"
,
SYSTEM_LOGIN_RESULT
:
'
system_login_result
'
,
SYSTEM_LOGIN_RESULT
:
"
system_login_result
"
,
SYSTEM_SMS_CHANNEL_CODE
:
'
system_sms_channel_code
'
,
SYSTEM_SMS_CHANNEL_CODE
:
"
system_sms_channel_code
"
,
SYSTEM_SMS_TEMPLATE_TYPE
:
'
system_sms_template_type
'
,
SYSTEM_SMS_TEMPLATE_TYPE
:
"
system_sms_template_type
"
,
SYSTEM_SMS_SEND_STATUS
:
'
system_sms_send_status
'
,
SYSTEM_SMS_SEND_STATUS
:
"
system_sms_send_status
"
,
SYSTEM_SMS_RECEIVE_STATUS
:
'
system_sms_receive_status
'
,
SYSTEM_SMS_RECEIVE_STATUS
:
"
system_sms_receive_status
"
,
SYSTEM_MAIL_SEND_STATUS
:
'
mail_send_status
'
,
SYSTEM_MAIL_SEND_STATUS
:
"
mail_send_status
"
,
SYSTEM_ERROR_CODE_TYPE
:
'
system_error_code_type
'
,
SYSTEM_ERROR_CODE_TYPE
:
"
system_error_code_type
"
,
INTERNAL_MESSAGE_TYPE
:
'
internal_message_type
'
,
INTERNAL_MESSAGE_TYPE
:
"
internal_message_type
"
,
INTERNAL_MESSAGE_READ_STATUS
:
'
internal_message_read_status
'
,
INTERNAL_MESSAGE_READ_STATUS
:
"
internal_message_read_status
"
,
SYSTEM_LOCALE
:
'
system_locale
'
,
// 语言列表
SYSTEM_LOCALE
:
"
system_locale
"
,
// 语言列表
HELP_DOC_STATUS
:
'
help_doc_status
'
,
HELP_DOC_STATUS
:
"
help_doc_status
"
,
// ========== INFRA 模块 ==========
// ========== INFRA 模块 ==========
INFRA_BOOLEAN_STRING
:
'
infra_boolean_string
'
,
INFRA_BOOLEAN_STRING
:
"
infra_boolean_string
"
,
INFRA_REDIS_TIMEOUT_TYPE
:
'
infra_redis_timeout_type
'
,
INFRA_REDIS_TIMEOUT_TYPE
:
"
infra_redis_timeout_type
"
,
INFRA_JOB_STATUS
:
'
infra_job_status
'
,
INFRA_JOB_STATUS
:
"
infra_job_status
"
,
INFRA_JOB_LOG_STATUS
:
'
infra_job_log_status
'
,
INFRA_JOB_LOG_STATUS
:
"
infra_job_log_status
"
,
INFRA_API_ERROR_LOG_PROCESS_STATUS
:
'
infra_api_error_log_process_status
'
,
INFRA_API_ERROR_LOG_PROCESS_STATUS
:
"
infra_api_error_log_process_status
"
,
INFRA_CONFIG_TYPE
:
'
infra_config_type
'
,
INFRA_CONFIG_TYPE
:
"
infra_config_type
"
,
INFRA_CODEGEN_TEMPLATE_TYPE
:
'
infra_codegen_template_type
'
,
INFRA_CODEGEN_TEMPLATE_TYPE
:
"
infra_codegen_template_type
"
,
INFRA_CODEGEN_SCENE
:
'
infra_codegen_scene
'
,
INFRA_CODEGEN_SCENE
:
"
infra_codegen_scene
"
,
INFRA_FILE_STORAGE
:
'
infra_file_storage
'
,
INFRA_FILE_STORAGE
:
"
infra_file_storage
"
,
// ========== BPM 模块 ==========
// ========== BPM 模块 ==========
BPM_MODEL_CATEGORY
:
'
bpm_model_category
'
,
BPM_MODEL_CATEGORY
:
"
bpm_model_category
"
,
BPM_MODEL_FORM_TYPE
:
'
bpm_model_form_type
'
,
BPM_MODEL_FORM_TYPE
:
"
bpm_model_form_type
"
,
BPM_TASK_ASSIGN_RULE_TYPE
:
'
bpm_task_assign_rule_type
'
,
BPM_TASK_ASSIGN_RULE_TYPE
:
"
bpm_task_assign_rule_type
"
,
BPM_PROCESS_INSTANCE_STATUS
:
'
bpm_process_instance_status
'
,
BPM_PROCESS_INSTANCE_STATUS
:
"
bpm_process_instance_status
"
,
BPM_PROCESS_INSTANCE_RESULT
:
'
bpm_process_instance_result
'
,
BPM_PROCESS_INSTANCE_RESULT
:
"
bpm_process_instance_result
"
,
BPM_TASK_ASSIGN_SCRIPT
:
'
bpm_task_assign_script
'
,
BPM_TASK_ASSIGN_SCRIPT
:
"
bpm_task_assign_script
"
,
BPM_OA_LEAVE_TYPE
:
'
bpm_oa_leave_type
'
,
BPM_OA_LEAVE_TYPE
:
"
bpm_oa_leave_type
"
,
// ========== PAY 模块 ==========
// ========== PAY 模块 ==========
PAY_CHANNEL_WECHAT_VERSION
:
'
pay_channel_wechat_version
'
,
// 微信渠道版本
PAY_CHANNEL_WECHAT_VERSION
:
"
pay_channel_wechat_version
"
,
// 微信渠道版本
PAY_CHANNEL_ALIPAY_SIGN_TYPE
:
'
pay_channel_alipay_sign_type
'
,
// 支付渠道支付宝算法类型
PAY_CHANNEL_ALIPAY_SIGN_TYPE
:
"
pay_channel_alipay_sign_type
"
,
// 支付渠道支付宝算法类型
PAY_CHANNEL_ALIPAY_MODE
:
'
pay_channel_alipay_mode
'
,
// 支付宝公钥类型
PAY_CHANNEL_ALIPAY_MODE
:
"
pay_channel_alipay_mode
"
,
// 支付宝公钥类型
PAY_CHANNEL_ALIPAY_SERVER_TYPE
:
'
pay_channel_alipay_server_type
'
,
// 支付宝网关地址
PAY_CHANNEL_ALIPAY_SERVER_TYPE
:
"
pay_channel_alipay_server_type
"
,
// 支付宝网关地址
PAY_CHANNEL_CODE_TYPE
:
'
pay_channel_code_type
'
,
// 支付渠道编码类型
PAY_CHANNEL_CODE_TYPE
:
"
pay_channel_code_type
"
,
// 支付渠道编码类型
PAY_ORDER_NOTIFY_STATUS
:
'
pay_order_notify_status
'
,
// 商户支付订单回调状态
PAY_ORDER_NOTIFY_STATUS
:
"
pay_order_notify_status
"
,
// 商户支付订单回调状态
PAY_ORDER_STATUS
:
'
pay_order_status
'
,
// 商户支付订单状态
PAY_ORDER_STATUS
:
"
pay_order_status
"
,
// 商户支付订单状态
PAY_ORDER_REFUND_STATUS
:
'
pay_order_refund_status
'
,
// 商户支付订单退款状态
PAY_ORDER_REFUND_STATUS
:
"
pay_order_refund_status
"
,
// 商户支付订单退款状态
PAY_REFUND_ORDER_STATUS
:
'
pay_refund_order_status
'
,
// 退款订单状态
PAY_REFUND_ORDER_STATUS
:
"
pay_refund_order_status
"
,
// 退款订单状态
PAY_REFUND_ORDER_TYPE
:
'
pay_refund_order_type
'
,
// 退款订单类别
PAY_REFUND_ORDER_TYPE
:
"
pay_refund_order_type
"
,
// 退款订单类别
ECW_BANK_TYPE
:
'
bank_type
'
,
// 银行账号类型
ECW_BANK_TYPE
:
"
bank_type
"
,
// 银行账号类型
ECW_DATA_SOURCE
:
'
data_source
'
,
// 数据来源
ECW_DATA_SOURCE
:
"
data_source
"
,
// 数据来源
ECW_REGION_TYPE
:
'
region_trade_type
'
,
// 区域类型
ECW_REGION_TYPE
:
"
region_trade_type
"
,
// 区域类型
ECW_TRANSPORT_TYPE
:
'
transport_type
'
,
//货运方式
ECW_TRANSPORT_TYPE
:
"
transport_type
"
,
//货运方式
ECW_KYC_DATA
:
'
member_control_reuest
'
,
//会员控单方式
ECW_KYC_DATA
:
"
member_control_reuest
"
,
//会员控单方式
ECW_CHARGE_TYPE
:
'
warehouse_charge_type
'
,
//仓储收费方式
ECW_CHARGE_TYPE
:
"
warehouse_charge_type
"
,
//仓储收费方式
ECW_SHELF_TYPE
:
'
shelf_type
'
,
//货架类型
ECW_SHELF_TYPE
:
"
shelf_type
"
,
//货架类型
ECW_PRODUCT_MATERIAL
:
'
product_material
'
,
//商品材质
ECW_PRODUCT_MATERIAL
:
"
product_material
"
,
//商品材质
ECW_PACKAGING_TYPE
:
'
packaging_type
'
,
//包装要求
ECW_PACKAGING_TYPE
:
"
packaging_type
"
,
//包装要求
ECW_CONTAINER_LOCATION
:
'
container_location
'
,
//默认货柜位置
ECW_CONTAINER_LOCATION
:
"
container_location
"
,
//默认货柜位置
ECW_SPECIAL_REQ_FOR_LINE_PRODUCTS
:
'
special_req_for_line_products
'
,
// 特殊需求
ECW_SPECIAL_REQ_FOR_LINE_PRODUCTS
:
"
special_req_for_line_products
"
,
// 特殊需求
ECW_COUPON_TYPE
:
'
coupon_type
'
,
// 优惠券类型
ECW_COUPON_TYPE
:
"
coupon_type
"
,
// 优惠券类型
ECW_COUPON_STATUS
:
'
coupon_status
'
,
// 优惠券状态
ECW_COUPON_STATUS
:
"
coupon_status
"
,
// 优惠券状态
ECW_COUPON_COST_TYPE
:
'
coupon_cost_type
'
,
// 优惠券费用类型
ECW_COUPON_COST_TYPE
:
"
coupon_cost_type
"
,
// 优惠券费用类型
ECW_COUPON_OVERDUE_STATUS
:
'
coupon_overdue_status
'
,
// 优惠券状态
ECW_COUPON_OVERDUE_STATUS
:
"
coupon_overdue_status
"
,
// 优惠券状态
ECW_COUPON_PUTON_STATUS
:
'
coupon_puton_status
'
,
ECW_COUPON_PUTON_STATUS
:
"
coupon_puton_status
"
,
ECW_SUITABLE_USER_TYPE
:
'
suitable_user_type
'
,
// 适用用户类型
ECW_SUITABLE_USER_TYPE
:
"
suitable_user_type
"
,
// 适用用户类型
ECW_SUITABLE_LINE_TYPE
:
'
suitable_line_type
'
,
// 适用线路类型
ECW_SUITABLE_LINE_TYPE
:
"
suitable_line_type
"
,
// 适用线路类型
ECW_SUITABLE_PROD_TYPE
:
'
suitable_prod_type
'
,
// 适用产品类型
ECW_SUITABLE_PROD_TYPE
:
"
suitable_prod_type
"
,
// 适用产品类型
ECW_ORDER_ATTR
:
'
order_attr
'
,
// 订单属性
ECW_ORDER_ATTR
:
"
order_attr
"
,
// 订单属性
ECW_YESNO
:
'
yesno
'
,
// 是否 1,0
ECW_YESNO
:
"
yesno
"
,
// 是否 1,0
ECW_COMPANY_TYPE
:
'
company_type
'
,
// 供应商类别
ECW_COMPANY_TYPE
:
"
company_type
"
,
// 供应商类别
ECW_COOPERATION_TYPE
:
'
cooperation_type
'
,
// 合作类型
ECW_COOPERATION_TYPE
:
"
cooperation_type
"
,
// 合作类型
ECW_SHIPPING_DECLARATION_TYPE
:
'
shipping_declaration_type
'
,
// 出货报关方式(与订单报关方式相同)
ECW_SHIPPING_DECLARATION_TYPE
:
"
shipping_declaration_type
"
,
// 出货报关方式(与订单报关方式相同)
ECW_CUSTOMS_TYPE
:
'
customs_type
'
,
// 订单报关方式(非出货报关),优惠券中的单证报关
ECW_CUSTOMS_TYPE
:
"
customs_type
"
,
// 订单报关方式(非出货报关),优惠券中的单证报关
// ECW_PACKAGE_TYPE: 'packageType', // 包装单位
// ECW_PACKAGE_TYPE: 'packageType', // 包装单位
ECW_DOUBLE_CLEAR
:
'
double_clear
'
,
// 是否双清
ECW_DOUBLE_CLEAR
:
"
double_clear
"
,
// 是否双清
ECW_TRADE_TYPE
:
'
trade_type
'
,
// 交货放肆
ECW_TRADE_TYPE
:
"
trade_type
"
,
// 交货放肆
ECW_OFFER_RESULT
:
'
offer_result
'
,
// 报单结果 赢单 输单
ECW_OFFER_RESULT
:
"
offer_result
"
,
// 报单结果 赢单 输单
ECW_WAREHOUSING_TYPE
:
'
warehousing_type
'
,
// 入仓类型
ECW_WAREHOUSING_TYPE
:
"
warehousing_type
"
,
// 入仓类型
ECW_OFFER_STATUS
:
'
offer_status
'
,
// 销售阶段(报价单)
ECW_OFFER_STATUS
:
"
offer_status
"
,
// 销售阶段(报价单)
ECW_IS_BRAND
:
'
is_brand
'
,
// 有无品牌
ECW_IS_BRAND
:
"
is_brand
"
,
// 有无品牌
ECW_OFFER_TYPE
:
'
offer_type
'
,
// 跟进类型
ECW_OFFER_TYPE
:
"
offer_type
"
,
// 跟进类型
ECW_OFFER_METHOD
:
'
offer_method
'
,
// 跟进方式
ECW_OFFER_METHOD
:
"
offer_method
"
,
// 跟进方式
ECW_RECEIPT_STATE
:
'
receipt_state
'
,
//收款单状态
ECW_RECEIPT_STATE
:
"
receipt_state
"
,
//收款单状态
ECW_RECEIVABLE_STATE
:
'
receivable_state
'
,
//应收明细状态
ECW_RECEIVABLE_STATE
:
"
receivable_state
"
,
//应收明细状态
ECW_SUING_METHOD
:
'
suing_method
'
,
// 出单方式
ECW_SUING_METHOD
:
"
suing_method
"
,
// 出单方式
ECW_HARVEST_METHOD
:
'
harvest_method
'
,
// 收货方式
ECW_HARVEST_METHOD
:
"
harvest_method
"
,
// 收货方式
ECW_PAY_ADVANCE
:
'
pay_advance
'
,
// 是否预付
ECW_PAY_ADVANCE
:
"
pay_advance
"
,
// 是否预付
ECW_BEGINTIME_TYPE_ENDTIME
:
'
begintime_type_endtime
'
,
// 时间筛选字段(订单)
ECW_BEGINTIME_TYPE_ENDTIME
:
"
begintime_type_endtime
"
,
// 时间筛选字段(订单)
ECW_CUSTOM_DRAWEE
:
'
custom_drawee
'
,
// 自定义付款人费用类型
ECW_CUSTOM_DRAWEE
:
"
custom_drawee
"
,
// 自定义付款人费用类型
ECW_IS_DRAFT
:
'
is_draft
'
,
// 草稿发布状态
ECW_IS_DRAFT
:
"
is_draft
"
,
// 草稿发布状态
ECW_PAYMENT_STATE
:
'
payment_state
'
,
//付款单状态
ECW_PAYMENT_STATE
:
"
payment_state
"
,
//付款单状态
ECW_INVOICING_TYPE
:
'
invoicing_type
'
,
ECW_INVOICING_TYPE
:
"
invoicing_type
"
,
ECW_PRICE_TYPE
:
'
price_type
'
,
ECW_PRICE_TYPE
:
"
price_type
"
,
ECW_RELEASE_STATUS
:
'
release_status
'
,
// 放货状态
ECW_RELEASE_STATUS
:
"
release_status
"
,
// 放货状态
ECW_PICK_RECURRENT_NUCLEAR_TYPE
:
'
PICK_RECURRENT_NUCLEAR_TYPE
'
,
// 放货反复核类型
ECW_PICK_RECURRENT_NUCLEAR_TYPE
:
"
PICK_RECURRENT_NUCLEAR_TYPE
"
,
// 放货反复核类型
ECW_COST_FEE_TYPE
:
'
cost_fee_type
'
,
// 清单费用类型
ECW_COST_FEE_TYPE
:
"
cost_fee_type
"
,
// 清单费用类型
ECW_PRICE_AUDIT_STATUS
:
'
price_audit_status
'
,
// 路线价格审核状态
ECW_PRICE_AUDIT_STATUS
:
"
price_audit_status
"
,
// 路线价格审核状态
ECW_CANCEL_PICK_TYPE
:
'
cancel_pick_type
'
,
// 取消放货类型
ECW_CANCEL_PICK_TYPE
:
"
cancel_pick_type
"
,
// 取消放货类型
ECW_CUSTOMER_RESOURCE_TYPE
:
'
customer_resource_type
'
,
// 客户资源类型
ECW_CUSTOMER_RESOURCE_TYPE
:
"
customer_resource_type
"
,
// 客户资源类型
ECW_CUSTOMER_TRANSPORT_TYPE
:
'
customer_transport_type
'
,
// 客户出货渠道(跟运输方式相同,但是显示全部)
ECW_CUSTOMER_TRANSPORT_TYPE
:
"
customer_transport_type
"
,
// 客户出货渠道(跟运输方式相同,但是显示全部)
ECW_ORDER_APPROVAL_TYPE
:
'
order_approval_type
'
,
// 订单相关审批类型
ECW_ORDER_APPROVAL_TYPE
:
"
order_approval_type
"
,
// 订单相关审批类型
ECW_FEE_SOURCE
:
'
fee_source
'
,
// 费用来源
ECW_FEE_SOURCE
:
"
fee_source
"
,
// 费用来源
STOCK_UP_EXCEPTION_TYPE
:
'
stock_up_exception_type
'
,
// 备货异常类型,
STOCK_UP_EXCEPTION_TYPE
:
"
stock_up_exception_type
"
,
// 备货异常类型,
ORDER_ITEM_PACK_STATUS
:
'
order_item_pack_status
'
,
// 空运备货打包状态
ORDER_ITEM_PACK_STATUS
:
"
order_item_pack_status
"
,
// 空运备货打包状态
RECEIPT_FEE_TYPE
:
'
receipt_fee_type
'
,
RECEIPT_FEE_TYPE
:
"
receipt_fee_type
"
,
DOWNLOAD_LOG_STATUS
:
'
download_log_status
'
,
// 下载日志状态
DOWNLOAD_LOG_STATUS
:
"
download_log_status
"
,
// 下载日志状态
DOWNLOAD_TYPE
:
'
download_type
'
,
// 下载类型
DOWNLOAD_TYPE
:
"
download_type
"
,
// 下载类型
//--------ecw---------
//--------ecw---------
CUSTOMER_STATUS
:
'
customer_status
'
,
CUSTOMER_STATUS
:
"
customer_status
"
,
CUSTOMER_SOURCE
:
'
customer_source
'
,
CUSTOMER_SOURCE
:
"
customer_source
"
,
CUSTOMER_BALANCE
:
'
customer_balance
'
,
CUSTOMER_BALANCE
:
"
customer_balance
"
,
CUSTOMER_TYPE
:
'
customer_type
'
,
CUSTOMER_TYPE
:
"
customer_type
"
,
CUSTOMER_LEVEL
:
'
customer_level
'
,
CUSTOMER_LEVEL
:
"
customer_level
"
,
CUSTOMER_COMPLAINT_TYPE
:
'
customer_complaint_type
'
,
CUSTOMER_COMPLAINT_TYPE
:
"
customer_complaint_type
"
,
CUSTOMER_COMPLAINT_STATUS
:
'
customer_complaint_status
'
,
CUSTOMER_COMPLAINT_STATUS
:
"
customer_complaint_status
"
,
ECW_MESSAGE_LEAVE_TYPE
:
'
ecw_message_leave_type
'
,
ECW_MESSAGE_LEAVE_TYPE
:
"
ecw_message_leave_type
"
,
ECW_MESSAGE_LEAVE_STATUS
:
'
ecw_message_leave_status
'
,
ECW_MESSAGE_LEAVE_STATUS
:
"
ecw_message_leave_status
"
,
PWD_TYPE
:
'
pwd_type
'
,
PWD_TYPE
:
"
pwd_type
"
,
ZHONG_PAO_TYPE
:
'
zhong_pao_type
'
,
ZHONG_PAO_TYPE
:
"
zhong_pao_type
"
,
TRANSPORT_TYPE
:
'
transport_type
'
,
TRANSPORT_TYPE
:
"
transport_type
"
,
BRAND_REG_TYPE
:
'
brand_registry_type
'
,
BRAND_REG_TYPE
:
"
brand_registry_type
"
,
BRAND_AUTH_STATUS
:
'
brand_authorization_status
'
,
BRAND_AUTH_STATUS
:
"
brand_authorization_status
"
,
BRAND_CUSTOMER_CHARGING_MODEL
:
'
customer_charging_model
'
,
BRAND_CUSTOMER_CHARGING_MODEL
:
"
customer_charging_model
"
,
COUNTRY
:
'
country
'
,
// 国家地区
COUNTRY
:
"
country
"
,
// 国家地区
AREA_CODE
:
'
area_code
'
,
// 区号
AREA_CODE
:
"
area_code
"
,
// 区号
SOCIAL
:
'
customer_social_tools
'
,
// 社交软件
SOCIAL
:
"
customer_social_tools
"
,
// 社交软件
IS_DEFAULT
:
'
is_default
'
,
// 默认联系人
IS_DEFAULT
:
"
is_default
"
,
// 默认联系人
CUSTOMER_FOLLOW_TYPE
:
'
customer_follow_type
'
,
// 跟进类型
CUSTOMER_FOLLOW_TYPE
:
"
customer_follow_type
"
,
// 跟进类型
CUSTOMER_FOLLOW_METHOD
:
'
customer_follow_method
'
,
// 跟进方式
CUSTOMER_FOLLOW_METHOD
:
"
customer_follow_method
"
,
// 跟进方式
COMMISSION_PRODUCT_APPROVAL
:
'
commission_product_approval
'
,
//佣金备案
COMMISSION_PRODUCT_APPROVAL
:
"
commission_product_approval
"
,
//佣金备案
SHIPPING_DECLARATION_TYPE
:
'
shipping_declaration_type
'
,
//出货报关方式(与订单报关方式相同)
SHIPPING_DECLARATION_TYPE
:
"
shipping_declaration_type
"
,
//出货报关方式(与订单报关方式相同)
COMMISSION_TYPE
:
'
commission_type
'
,
//佣金类型
COMMISSION_TYPE
:
"
commission_type
"
,
//佣金类型
COMMISSION_DARK_TYPE
:
'
commission_dark_type
'
,
//暗涌类型
COMMISSION_DARK_TYPE
:
"
commission_dark_type
"
,
//暗涌类型
// COMMISSION_UNIT: 'commission_unit',//佣金货物单位
// COMMISSION_UNIT: 'commission_unit',//佣金货物单位
ECW_PORT_TYPE
:
'
port_type
'
,
//港口类型
ECW_PORT_TYPE
:
"
port_type
"
,
//港口类型
CERTIFICATE_TYPE
:
'
certificate_type
'
,
//证件类型
CERTIFICATE_TYPE
:
"
certificate_type
"
,
//证件类型
//customer
//customer
CUSTOMER_CREDIT_RULE_TYPE
:
'
customer_credit_rule_type
'
,
CUSTOMER_CREDIT_RULE_TYPE
:
'
customer_credit_rule_type
'
,
CUSTOMER_LEVEL_RULE_TYPE
:
'
customer_level_rule_type
'
,
CUSTOMER_LEVEL_RULE_TYPE
:
'
customer_level_rule_type
'
,
...
@@ -165,89 +165,101 @@ export const DICT_TYPE = {
...
@@ -165,89 +165,101 @@ export const DICT_TYPE = {
CUSTOMER_ROLE
:
'
customer_role
'
,
//角色
CUSTOMER_ROLE
:
'
customer_role
'
,
//角色
MAJOR_COMPETITORS
:
'
major_competitors
'
,
//主要竞争对手
MAJOR_COMPETITORS
:
'
major_competitors
'
,
//主要竞争对手
// order
// order
ORDER_TYPE
:
'
order_type
'
,
// 订单类型
ORDER_TYPE
:
"
order_type
"
,
// 订单类型
PRODUCT_RECORD_ATTRIBUTE
:
'
product_record_attribute
'
,
//产品备案属性
PRODUCT_RECORD_ATTRIBUTE
:
"
product_record_attribute
"
,
//产品备案属性
CONTROL_GOODS_STATUS
:
'
control_goods_status
'
,
//控货状态
CONTROL_GOODS_STATUS
:
"
control_goods_status
"
,
//控货状态
DISBURSEMENT_TYPE
:
'
disbursement_type
'
,
//垫付类型
DISBURSEMENT_TYPE
:
"
disbursement_type
"
,
//垫付类型
DRAWEE
:
'
drawee
'
,
// 付款人
DRAWEE
:
"
drawee
"
,
// 付款人
ORDER_STATUS
:
'
order_status
'
,
//订单状态
ORDER_STATUS
:
"
order_status
"
,
//订单状态
ORDER_ITEM_STATUS
:
'
order_item_status
'
,
ORDER_ITEM_STATUS
:
"
order_item_status
"
,
BEGINTIME_TYPE_ENDTIME
:
'
begintime_type_endtime
'
,
//订单日期筛选类别
BEGINTIME_TYPE_ENDTIME
:
"
begintime_type_endtime
"
,
//订单日期筛选类别
ORDER_ERROR_TYPE
:
'
order_error_type
'
,
//订单异常类型
ORDER_ERROR_TYPE
:
"
order_error_type
"
,
//订单异常类型
ORDER_EXCEPTION_STATUS
:
'
order_exception_status
'
,
//异常订单状态
ORDER_EXCEPTION_STATUS
:
"
order_exception_status
"
,
//异常订单状态
PAYMENT_TYPE
:
'
payment_type
'
,
//收款类型
PAYMENT_TYPE
:
"
payment_type
"
,
//收款类型
ORDER_WAREHOUSE_IN_STATUS
:
'
order_warehouse_in_diff_status
'
,
// 入仓状态
ORDER_WAREHOUSE_IN_STATUS
:
"
order_warehouse_in_diff_status
"
,
// 入仓状态
ORDER_NO_QUOTE_EXCEPTION_RESULT
:
'
order_no_quote_exception_result
'
,
//未报价异常处理结果
ORDER_NO_QUOTE_EXCEPTION_RESULT
:
"
order_no_quote_exception_result
"
,
//未报价异常处理结果
ORDER_SUPERFLUOUS_BOX_EXCEPTION_RESULT
:
'
order_superfluous_box_exception_result
'
,
//多箱异常处理结果
ORDER_SUPERFLUOUS_BOX_EXCEPTION_RESULT
:
ORDER_LACI_BOX_EXCEPTION_RESULT
:
'
order_lack_box_exception_result
'
,
//少箱异常处理结果
"
order_superfluous_box_exception_result
"
,
//多箱异常处理结果
ORDER_PAY_EXCEPTION_RESULT
:
'
order_pay_exception_result
'
,
//预付异常处理结果
ORDER_LACI_BOX_EXCEPTION_RESULT
:
"
order_lack_box_exception_result
"
,
//少箱异常处理结果
ORDER_MISS_EXCEPTION_RESULT
:
'
order_miss_exception_result
'
,
//货物丢失异常处理结果
ORDER_PAY_EXCEPTION_RESULT
:
"
order_pay_exception_result
"
,
//预付异常处理结果
ORDER_SUPERFLUOUS_GOODS_EXCEPTION_RESULT
:
'
order_superfluous_goods_exception_result
'
,
//货物增多异常处理结果
ORDER_MISS_EXCEPTION_RESULT
:
"
order_miss_exception_result
"
,
//货物丢失异常处理结果
ORDER_DAMAGE_EXCEPTION_RESULT
:
'
order_damage_exception_result
'
,
//货物破损异常处理结果
ORDER_SUPERFLUOUS_GOODS_EXCEPTION_RESULT
:
ORDER_IN_WATER_EXCEPTION_RESULT
:
'
order_in_water_exception_result
'
,
//货物浸水异常处理结果
"
order_superfluous_goods_exception_result
"
,
//货物增多异常处理结果
ORDER_HEAVY_CARGO_EXCEPTION_RESULT
:
'
order_heavy_cargo_exception_result
'
,
//重货异常处理结果
ORDER_DAMAGE_EXCEPTION_RESULT
:
"
order_damage_exception_result
"
,
//货物破损异常处理结果
ORDER_DOC_EXCEPTION_RESULT
:
'
order_doc_exception_result
'
,
//单证异常处理结果
ORDER_IN_WATER_EXCEPTION_RESULT
:
"
order_in_water_exception_result
"
,
//货物浸水异常处理结果
ORDER_CONSIGNOR_EXCEPTION_RESULT
:
'
order_consignor_exception_result
'
,
//发货人异常处理结果
ORDER_HEAVY_CARGO_EXCEPTION_RESULT
:
"
order_heavy_cargo_exception_result
"
,
//重货异常处理结果
ORDER_COD_EXCEPTION_RESULT
:
'
order_cod_exception_result
'
,
//代收货款异常处理结果
ORDER_DOC_EXCEPTION_RESULT
:
"
order_doc_exception_result
"
,
//单证异常处理结果
ORDER_OTHER_EXCEPTION_RESULT
:
'
order_other_exception_result
'
,
//其它异常处理结果
ORDER_CONSIGNOR_EXCEPTION_RESULT
:
"
order_consignor_exception_result
"
,
//发货人异常处理结果
ORDER_BULKY_CARGO_EXCEPTION_RESULT
:
'
order_bulky_cargo_exception_result
'
,
//泡货异常处理结果
ORDER_COD_EXCEPTION_RESULT
:
"
order_cod_exception_result
"
,
//代收货款异常处理结果
ORDER_QUERY_PROD_FIELD
:
'
order_query_prod_field
'
,
//订单查询产品字段
ORDER_OTHER_EXCEPTION_RESULT
:
"
order_other_exception_result
"
,
//其它异常处理结果
ORDER_QUERY_NO_FIELD
:
'
order_query_no_field
'
,
//订单查询非产品字段
ORDER_BULKY_CARGO_EXCEPTION_RESULT
:
"
order_bulky_cargo_exception_result
"
,
//泡货异常处理结果
NEED_KNOW_TYPE
:
'
need_know_type
'
,
//需知类型
ORDER_QUERY_PROD_FIELD
:
"
order_query_prod_field
"
,
//订单查询产品字段
NEED_KNOW_STATUS
:
'
need_know_status
'
,
//需知状态
ORDER_QUERY_NO_FIELD
:
"
order_query_no_field
"
,
//订单查询非产品字段
MANUAL_EXCEPTION_TYPE
:
'
manual_exception_type
'
,
NEED_KNOW_TYPE
:
"
need_know_type
"
,
//需知类型
APPLY_STATUS
:
'
apply_status
'
,
//特价申请审核状态
NEED_KNOW_STATUS
:
"
need_know_status
"
,
//需知状态
WAREHOUSING_SPECIFICATION_TYPE
:
'
warehousing_specification_type
'
,
MANUAL_EXCEPTION_TYPE
:
"
manual_exception_type
"
,
WAREHOUSING_RECORD_DETAIL_USAGE
:
'
warehousing_record_detail_usage
'
,
// 入仓规格类型
APPLY_STATUS
:
"
apply_status
"
,
//特价申请审核状态
ECW_AUTH_TYPE
:
'
auth_type
'
,
//品牌授权
WAREHOUSING_SPECIFICATION_TYPE
:
"
warehousing_specification_type
"
,
OREER_ITEM_USAGE
:
'
order_item_usage
'
,
//用途
WAREHOUSING_RECORD_DETAIL_USAGE
:
"
warehousing_record_detail_usage
"
,
// 入仓规格类型
ECW_AUTH_TYPE
:
"
auth_type
"
,
//品牌授权
OREER_ITEM_USAGE
:
"
order_item_usage
"
,
//用途
NEED_ORDER_INQUIRY
:
'
need_order_inquiry
'
,
// 是否需要単询
NEED_ORDER_INQUIRY
:
"
need_order_inquiry
"
,
// 是否需要単询
EXCEPTION_SELECT_FILED
:
'
exception_select_filed
'
,
EXCEPTION_SELECT_FILED
:
"
exception_select_filed
"
,
ECASH_INIT
:
'
ecash_init
'
,
//e-cash
ECASH_INIT
:
"
ecash_init
"
,
//e-cash
FEE_TYPE
:
'
receivable_fee_type
'
,
FEE_TYPE
:
"
receivable_fee_type
"
,
// PAY_TYPE:'payment_type',
// PAY_TYPE:'payment_type',
RECEIVE_FLAG
:
'
receive_flag
'
,
RECEIVE_FLAG
:
"
receive_flag
"
,
COMDINED_VALUE_ADDED_FEE
:
'
combined_value_added_fee
'
,
COMDINED_VALUE_ADDED_FEE
:
"
combined_value_added_fee
"
,
ORDER_SPECIAL_NEEDS
:
'
order_special_needs
'
,
// 订单特殊需求
ORDER_SPECIAL_NEEDS
:
"
order_special_needs
"
,
// 订单特殊需求
ORDER_ABNORMAL_STATE
:
'
order_abnormal_state
'
,
ORDER_ABNORMAL_STATE
:
"
order_abnormal_state
"
,
TARGET_TYPE
:
'
target_type
'
,
//部门业绩目标类型
TARGET_TYPE
:
"
target_type
"
,
//部门业绩目标类型
CEBE_UNIT
:
'
cube_unit
'
,
//目标单位
CEBE_UNIT
:
"
cube_unit
"
,
//目标单位
RECEIPT_ITEM_STATE
:
'
receipt_item_state
'
,
//收款单明细状态
RECEIPT_ITEM_STATE
:
"
receipt_item_state
"
,
//收款单明细状态
// ========== 出货模块 ==========
// ========== 出货模块 ==========
BOX_SHIPPING_TRAILER_STATUS
:
'
shipping_trailer_status
'
,
// 拖车状态
BOX_SHIPPING_TRAILER_STATUS
:
"
shipping_trailer_status
"
,
// 拖车状态
BOX_SHIPPING_CUSTOMS_TYPE
:
'
shipping_customs_type
'
,
// 报关方式
BOX_SHIPPING_CUSTOMS_TYPE
:
"
shipping_customs_type
"
,
// 报关方式
BOX_SHIPPING_DCCUSTOMS_STATUS
:
'
shipping_dcCustoms_status
'
,
// 报关放行状态
BOX_SHIPPING_DCCUSTOMS_STATUS
:
"
shipping_dcCustoms_status
"
,
// 报关放行状态
BOX_SHIPPING_CHECK_STATUS
:
'
shipping_check_status
'
,
// 查验状态
BOX_SHIPPING_CHECK_STATUS
:
"
shipping_check_status
"
,
// 查验状态
BOX_SHIPPING_UNLOADING_ERROR
:
'
shipping_unloading_error
'
,
// 卸柜异常类型
BOX_SHIPPING_UNLOADING_ERROR
:
"
shipping_unloading_error
"
,
// 卸柜异常类型
BOX_SHIPPING_PRICE_UNIT
:
'
shipping_price_unit
'
,
// 金额单位
BOX_SHIPPING_PRICE_UNIT
:
"
shipping_price_unit
"
,
// 金额单位
BOX_SHIPPING_TICKET_EXCEPTION
:
'
shipping_ticket_exception
'
,
// 票异常
BOX_SHIPPING_TICKET_EXCEPTION
:
"
shipping_ticket_exception
"
,
// 票异常
BOX_SHIPPING_PROCESS
:
'
shipping_process
'
,
// 海运出货流程
BOX_SHIPPING_PROCESS
:
"
shipping_process
"
,
// 海运出货流程
BOX_AIR_SHIPMENT_PROCESS
:
'
air_shipment_process
'
,
// 空运出货
BOX_AIR_SHIPMENT_PROCESS
:
"
air_shipment_process
"
,
// 空运出货
BOX_SEA_AIR
:
'
shipping_process_sea_air
'
,
// 海空联运流程流程
BOX_SEA_AIR
:
"
shipping_process_sea_air
"
,
// 海空联运流程流程
BOX_SHIPPING_BRAND_TYPE
:
'
shipping_brand_type
'
,
// 出货品牌类型
BOX_SHIPPING_BRAND_TYPE
:
"
shipping_brand_type
"
,
// 出货品牌类型
BOX_SHIPPING_NOTICE_TYPE
:
'
shipping_notice_type
'
,
// 出货通知类型
BOX_SHIPPING_NOTICE_TYPE
:
"
shipping_notice_type
"
,
// 出货通知类型
BOX_ORDER_SHIPMENT_STATE
:
'
order_shipment_state
'
,
BOX_ORDER_SHIPMENT_STATE
:
"
order_shipment_state
"
,
BOX_AIR_SHIPMENT_STATE
:
'
air_shipment_status
'
,
BOX_AIR_SHIPMENT_STATE
:
"
air_shipment_status
"
,
BOX_INSPECTION_TIME_CUSTOMS
:
'
inspection_time_customs
'
,
// 校验时间-报关
BOX_INSPECTION_TIME_CUSTOMS
:
"
inspection_time_customs
"
,
// 校验时间-报关
BOX_INSPECTION_TIME_SHIPPING
:
'
inspection_time_shipping
'
,
// 校验时间-起运
BOX_INSPECTION_TIME_SHIPPING
:
"
inspection_time_shipping
"
,
// 校验时间-起运
BOX_INSPECTION_TIME_ARRIVAL
:
'
inspection_time_arrival
'
,
// 校验时间-到港
BOX_INSPECTION_TIME_ARRIVAL
:
"
inspection_time_arrival
"
,
// 校验时间-到港
BOX_SHIPPING_UPDATE_TYPE
:
"
shipping_update_type
"
,
// 更新类型
BOX_SHIPPING_UPDATE_TYPE
:
"
shipping_update_type
"
,
// 更新类型
BOX_CUSTOMS_ERROR_TYPE
:
"
customs_error_type
"
,
// 报关异常状态
BOX_CUSTOMS_ERROR_TYPE
:
"
customs_error_type
"
,
// 报关异常状态
BOX_SHIPPING_ERROR_TYPE
:
"
shipping_error_type
"
,
// 起运异常状态
BOX_SHIPPING_ERROR_TYPE
:
"
shipping_error_type
"
,
// 起运异常状态
BOX_ARRIVAL_ERROR_TYPE
:
"
arrival_error_type
"
,
// 到港异常状态
BOX_ARRIVAL_ERROR_TYPE
:
"
arrival_error_type
"
,
// 到港异常状态
BOX_FLYING_ERROR_TYPE
:
'
flying_error_type
'
,
// 航班异常状态
BOX_FLYING_ERROR_TYPE
:
"
flying_error_type
"
,
// 航班异常状态
SETTLEMENT_STATUS
:
'
settlement_status
'
,
// 结算状态
SETTLEMENT_STATUS
:
"
settlement_status
"
,
// 结算状态
FLYING_TICKET_EXCEPTION
:
'
flying_ticket_exception
'
,
// 起飞异常
FLYING_TICKET_EXCEPTION
:
"
flying_ticket_exception
"
,
// 起飞异常
ARRIVAL_TICKET_EXCEPTION
:
'
arrival_ticket_exception
'
,
// 到港异常
ARRIVAL_TICKET_EXCEPTION
:
"
arrival_ticket_exception
"
,
// 到港异常
CLEARANCE_TICKET_EXCEPTION
:
'
clearance_ticket_exception
'
,
// 清关异常
CLEARANCE_TICKET_EXCEPTION
:
"
clearance_ticket_exception
"
,
// 清关异常
APP_TYPE
:
"
app_type
"
,
//系统类型
APP_TYPE
:
"
app_type
"
,
//系统类型
AIR_SHIPMENT_PROCESS
:
'
air_shipment_process
'
,
AIR_SHIPMENT_PROCESS
:
"
air_shipment_process
"
,
CUSTOM_CLEARANCE
:
'
custom _clearance
'
,
//全部列表空运订单重量上限
CUSTOM_CLEARANCE
:
"
custom _clearance
"
,
//全部列表空运订单重量上限
AIR_COMMODITY_CUSTOM_CLEARANCE
:
'
air_commodity_custom _clearance
'
//商品渠道清关费,
AIR_COMMODITY_CUSTOM_CLEARANCE
:
"
air_commodity_custom _clearance
"
,
//商品渠道清关费,
QUANTITATIVE_RELATION_SYMBOL
:
"
quantitative_relation_symbol
"
,
//数量关系符号
}
WAY_OF_RECEIVING
:
"
way_of_receiving
"
,
//领取方式
GIFT_STATUS
:
"
gift_status
"
,
//礼品状态
GIFT_ENABLE_STATUS
:
"
gift_enable_status
"
,
//礼品启用状态
PLATFORM_TYPE
:
"
platform_type
"
,
//平台入口
REWARD_REDEEM_STATUS
:
"
reward_redeem_status
"
,
//礼品兑换状态
MEMBER_SCORE_OPERATE_TYPE
:
"
member_user_score_log_operate_type
"
,
//会员积分日志操作类型
SCORE_RULE_TYPE
:
"
score_rule_type
"
,
//积分规则指标类型
YES_OR_NO
:
"
yes_or_no
"
,
CLIENT_PLATFORM
:
"
client_platform
"
,
MEMBER_SCORE_SOURCE
:
"
member_score_source
"
,
//会员积分来源
};
/**
/**
* 获取 dictType 对应的数据字典数组
* 获取 dictType 对应的数据字典数组
...
@@ -261,7 +273,7 @@ export function getDictDatas(dictType) {
...
@@ -261,7 +273,7 @@ export function getDictDatas(dictType) {
// debugger
// debugger
// }
// }
// debugger
// debugger
return
store
.
getters
.
dict_datas
[
dictType
]
||
[]
return
store
.
getters
.
dict_datas
[
dictType
]
||
[]
;
}
}
/**
/**
...
@@ -294,24 +306,23 @@ export function getDictDatas2(dictType, values) {
...
@@ -294,24 +306,23 @@ export function getDictDatas2(dictType, values) {
export
function
getDictData
(
dictType
,
value
)
{
export
function
getDictData
(
dictType
,
value
)
{
// 获取 dictType 对应的数据字典数组
// 获取 dictType 对应的数据字典数组
const
dictDatas
=
getDictDatas
(
dictType
)
const
dictDatas
=
getDictDatas
(
dictType
)
;
if
(
!
dictDatas
||
dictDatas
.
length
===
0
)
{
if
(
!
dictDatas
||
dictDatas
.
length
===
0
)
{
return
''
return
""
;
}
}
// 获取 value 对应的展示名
// 获取 value 对应的展示名
value
=
value
+
''
// 强制转换成字符串,因为 DictData 小类数值,是字符串
value
=
value
+
""
;
// 强制转换成字符串,因为 DictData 小类数值,是字符串
for
(
const
dictData
of
dictDatas
)
{
for
(
const
dictData
of
dictDatas
)
{
if
(
dictData
.
value
===
value
)
{
if
(
dictData
.
value
===
value
)
{
return
dictData
;
return
dictData
;
}
}
}
}
return
undefined
return
undefined
;
}
}
export
function
getDictDataLabel
(
dictType
,
value
)
{
export
function
getDictDataLabel
(
dictType
,
value
)
{
const
dict
=
getDictData
(
dictType
,
value
);
const
dict
=
getDictData
(
dictType
,
value
);
return
dict
?
i18n
.
l
(
dict
,
'
label
'
)
:
''
;
return
dict
?
i18n
.
l
(
dict
,
"
label
"
)
:
""
;
}
}
export
class
getDictDataL
{
export
class
getDictDataL
{}
}
src/utils/request.js
View file @
7e0c1c55
import
axios
from
'
axios
'
import
axios
from
"
axios
"
;
import
{
Notification
,
MessageBox
,
Message
}
from
'
element-ui
'
import
{
Notification
,
MessageBox
,
Message
}
from
"
element-ui
"
;
import
store
from
'
@/store
'
import
store
from
"
@/store
"
;
import
{
getToken
}
from
'
@/utils/auth
'
import
{
getToken
}
from
"
@/utils/auth
"
;
import
errorCode
from
'
@/utils/errorCode
'
import
errorCode
from
"
@/utils/errorCode
"
;
import
Cookies
from
"
js-cookie
"
;
import
Cookies
from
"
js-cookie
"
;
import
{
getTenantEnable
}
from
"
@/utils/ruoyi
"
;
import
{
getTenantEnable
}
from
"
@/utils/ruoyi
"
;
import
{
getLocale
}
from
'
@/utils/db
'
;
import
{
getLocale
}
from
"
@/utils/db
"
;
import
i18n
from
"
@/i18n
"
;
import
i18n
from
"
@/i18n
"
;
// 是否显示重新登录
// 是否显示重新登录
export
let
isRelogin
=
{
show
:
false
};
export
let
isRelogin
=
{
show
:
false
};
axios
.
defaults
.
headers
[
'
Content-Type
'
]
=
'
application/json;charset=utf-8
'
axios
.
defaults
.
headers
[
"
Content-Type
"
]
=
"
application/json;charset=utf-8
"
;
// 创建axios实例
// 创建axios实例
const
service
=
axios
.
create
({
const
service
=
axios
.
create
({
// axios中请求配置有baseURL选项,表示请求URL公共部分
// axios中请求配置有baseURL选项,表示请求URL公共部分
baseURL
:
(
localStorage
.
VUE_APP_BASE_API
||
process
.
env
.
VUE_APP_BASE_API
)
+
'
/admin-api/
'
,
// 此处的 /admin-api/ 地址,原因是后端的基础路径为 /admin-api/
baseURL
:
(
localStorage
.
VUE_APP_BASE_API
||
process
.
env
.
VUE_APP_BASE_API
)
+
"
/admin-api/
"
,
// 此处的 /admin-api/ 地址,原因是后端的基础路径为 /admin-api/
// 超时
// 超时
timeout
:
1000
*
30
timeout
:
1000
*
30
,
})
})
;
// 如果是生产环境则打印提示
// 如果是生产环境则打印提示
if
(
process
.
env
.
NODE_ENV
===
'
development
'
&&
service
.
defaults
.
baseURL
===
'
https://api2.groupage.cn/admin-api/
'
)
{
if
(
console
.
log
(
'
%c请注意,当前为生产环境请谨慎操作!!
'
,
'
background-color: red; font-size: 3em; color:yellow
'
);
process
.
env
.
NODE_ENV
===
"
development
"
&&
console
.
log
(
'
%c接口地址:
'
+
service
.
defaults
.
baseURL
,
'
background-color: black; font-size: 1.5em; color:yellow !important
'
);
service
.
defaults
.
baseURL
===
"
https://api2.groupage.cn/admin-api/
"
)
{
console
.
log
(
"
%c请注意,当前为生产环境请谨慎操作!!
"
,
"
background-color: red; font-size: 3em; color:yellow
"
);
console
.
log
(
"
%c接口地址:
"
+
service
.
defaults
.
baseURL
,
"
background-color: black; font-size: 1.5em; color:yellow !important
"
);
}
}
// request拦截器
// request拦截器
service
.
interceptors
.
request
.
use
(
config
=>
{
service
.
interceptors
.
request
.
use
(
config
.
headers
[
'
locale
'
]
=
getLocale
()
(
config
)
=>
{
// 是否需要设置 token
config
.
headers
[
"
locale
"
]
=
getLocale
();
const
isToken
=
(
config
.
headers
||
{}).
isToken
===
false
// 是否需要设置 token
if
(
getToken
()
&&
!
isToken
)
{
const
isToken
=
(
config
.
headers
||
{}).
isToken
===
false
;
config
.
headers
[
'
Authorization
'
]
=
'
Bearer
'
+
getToken
()
// 让每个请求携带自定义token 请根据实际情况自行修改
if
(
getToken
()
&&
!
isToken
)
{
}
config
.
headers
[
"
Authorization
"
]
=
"
Bearer
"
+
getToken
();
// 让每个请求携带自定义token 请根据实际情况自行修改
// 设置租户
if
(
getTenantEnable
())
{
const
tenantId
=
Cookies
.
get
(
'
tenantId
'
);
if
(
tenantId
)
{
config
.
headers
[
'
tenant-id
'
]
=
tenantId
;
}
}
}
// 设置租户
// get请求映射params参数
if
(
getTenantEnable
())
{
if
(
config
.
method
===
'
get
'
&&
config
.
params
)
{
const
tenantId
=
Cookies
.
get
(
"
tenantId
"
);
let
url
=
config
.
url
+
'
?
'
;
if
(
tenantId
)
{
for
(
const
propName
of
Object
.
keys
(
config
.
params
))
{
config
.
headers
[
"
tenant-id
"
]
=
tenantId
;
const
value
=
config
.
params
[
propName
];
}
var
part
=
encodeURIComponent
(
propName
)
+
"
=
"
;
}
if
(
value
!==
null
&&
typeof
(
value
)
!==
"
undefined
"
)
{
// get请求映射params参数
if
(
typeof
value
===
'
object
'
)
{
if
(
config
.
method
===
"
get
"
&&
config
.
params
)
{
for
(
const
key
of
Object
.
keys
(
value
))
{
let
url
=
config
.
url
+
"
?
"
;
let
params
=
propName
+
'
[
'
+
key
+
'
]
'
;
for
(
const
propName
of
Object
.
keys
(
config
.
params
))
{
var
subPart
=
encodeURIComponent
(
params
)
+
"
=
"
;
const
value
=
config
.
params
[
propName
];
url
+=
subPart
+
encodeURIComponent
(
value
[
key
])
+
"
&
"
;
var
part
=
encodeURIComponent
(
propName
)
+
"
=
"
;
if
(
value
!==
null
&&
typeof
value
!==
"
undefined
"
)
{
if
(
typeof
value
===
"
object
"
)
{
for
(
const
key
of
Object
.
keys
(
value
))
{
let
params
=
propName
+
"
[
"
+
key
+
"
]
"
;
var
subPart
=
encodeURIComponent
(
params
)
+
"
=
"
;
url
+=
subPart
+
encodeURIComponent
(
value
[
key
])
+
"
&
"
;
}
}
else
{
url
+=
part
+
encodeURIComponent
(
value
)
+
"
&
"
;
}
}
}
else
{
url
+=
part
+
encodeURIComponent
(
value
)
+
"
&
"
;
}
}
}
}
url
=
url
.
slice
(
0
,
-
1
);
config
.
params
=
{};
config
.
url
=
url
;
}
}
url
=
url
.
slice
(
0
,
-
1
);
return
config
;
config
.
params
=
{};
},
config
.
url
=
url
;
(
error
)
=>
{
console
.
log
(
error
);
Promise
.
reject
(
error
);
}
}
return
config
);
},
error
=>
{
console
.
log
(
error
)
Promise
.
reject
(
error
)
})
// 响应拦截器
// 响应拦截器
service
.
interceptors
.
response
.
use
(
res
=>
{
service
.
interceptors
.
response
.
use
(
(
res
)
=>
{
// 未设置状态码则默认成功状态
// 未设置状态码则默认成功状态
const
code
=
res
.
data
.
code
||
200
;
const
code
=
res
.
data
.
code
||
200
;
// 获取错误信息
// 获取错误信息
const
msg
=
errorCode
[
code
]
||
res
.
data
.
msg
||
errorCode
[
'
default
'
]
const
msg
=
errorCode
[
code
]
||
res
.
data
.
msg
||
errorCode
[
"
default
"
];
if
(
code
===
401
)
{
if
(
code
===
401
)
{
if
(
!
isRelogin
.
show
)
{
if
(
!
isRelogin
.
show
)
{
isRelogin
.
show
=
true
;
isRelogin
.
show
=
true
;
MessageBox
.
confirm
(
'
登录状态已过期,您可以继续留在该页面,或者重新登录
'
,
'
系统提示
'
,
{
MessageBox
.
confirm
(
confirmButtonText
:
'
重新登录
'
,
"
登录状态已过期,您可以继续留在该页面,或者重新登录
"
,
cancelButtonText
:
'
取消
'
,
"
系统提示
"
,
type
:
'
warning
'
{
confirmButtonText
:
"
重新登录
"
,
cancelButtonText
:
"
取消
"
,
type
:
"
warning
"
,
}
}
).
then
(()
=>
{
)
isRelogin
.
show
=
false
;
.
then
(()
=>
{
store
.
dispatch
(
'
LogOut
'
).
then
(()
=>
{
isRelogin
.
show
=
false
;
location
.
href
=
'
/
'
;
store
.
dispatch
(
"
LogOut
"
).
then
(()
=>
{
location
.
href
=
"
/
"
;
});
})
})
})
.
catch
(()
=>
{
.
catch
(()
=>
{
isRelogin
.
show
=
false
;
isRelogin
.
show
=
false
;
});
});
}
}
return
Promise
.
reject
(
'
无效的会话,或者会话已过期,请重新登录。
'
)
return
Promise
.
reject
(
"
无效的会话,或者会话已过期,请重新登录。
"
);
}
else
if
(
code
===
500
)
{
}
else
if
(
code
===
500
)
{
Message
({
Message
({
dangerouslyUseHTMLString
:
true
,
dangerouslyUseHTMLString
:
true
,
message
:
msg
,
message
:
msg
,
type
:
'
error
'
type
:
"
error
"
,
})
})
;
return
Promise
.
reject
(
new
Error
(
msg
))
return
Promise
.
reject
(
new
Error
(
msg
))
;
}
else
if
(
code
===
901
)
{
}
else
if
(
code
===
901
)
{
Message
({
Message
({
type
:
'
error
'
,
type
:
"
error
"
,
duration
:
0
,
duration
:
0
,
dangerouslyUseHTMLString
:
true
,
dangerouslyUseHTMLString
:
true
,
message
:
'
<div>演示模式,无法进行写操作</div>
'
message
:
+
'
<div> </div>
'
"
<div>演示模式,无法进行写操作</div>
"
+
+
'
<div>参考 https://doc.iocoder.cn/ 教程</div>
'
"
<div> </div>
"
+
+
'
<div> </div>
'
"
<div>参考 https://doc.iocoder.cn/ 教程</div>
"
+
+
'
<div>5 分钟搭建本地环境</div>
'
,
"
<div> </div>
"
+
})
"
<div>5 分钟搭建本地环境</div>
"
,
return
Promise
.
reject
(
new
Error
(
msg
))
});
return
Promise
.
reject
(
new
Error
(
msg
));
}
else
if
(
code
===
555
)
{
}
else
if
(
code
===
555
)
{
// 额外情况
// 额外情况
return
Promise
.
reject
(
res
.
data
)
return
Promise
.
reject
(
res
.
data
)
;
}
else
if
(
code
===
566
)
{
}
else
if
(
code
===
566
)
{
// 额外情况
// 额外情况
return
Promise
.
reject
(
res
.
data
)
return
Promise
.
reject
(
res
.
data
)
;
}
else
if
(
code
===
666
)
{
}
else
if
(
code
===
666
)
{
// 额外情况
// 额外情况
return
Promise
.
reject
(
res
.
data
)
return
Promise
.
reject
(
res
.
data
)
;
}
else
if
(
code
!==
200
)
{
}
else
if
(
code
!==
200
)
{
// 如果内容很长则用alert提示,不然可能显示不全,自动隐藏也会导致看不完整就消失了
// 如果内容很长则用alert提示,不然可能显示不全,自动隐藏也会导致看不完整就消失了
if
(
msg
.
length
>
300
)
{
if
(
msg
.
length
>
300
)
{
MessageBox
.
alert
(
msg
,
i18n
.
t
(
'
错误提示
'
),
i18n
.
t
(
'
确定
'
))
MessageBox
.
alert
(
msg
,
i18n
.
t
(
"
错误提示
"
),
i18n
.
t
(
"
确定
"
));
}
else
{
}
else
{
Notification
.
error
({
Notification
.
error
({
title
:
msg
title
:
msg
,
})
})
;
}
}
return
Promise
.
reject
(
msg
||
'
error
'
)
return
Promise
.
reject
(
msg
||
"
error
"
);
}
else
{
}
else
{
return
res
.
data
return
res
.
data
;
}
}
},
},
error
=>
{
(
error
)
=>
{
console
.
log
(
'
err
'
+
error
)
console
.
log
(
"
err
"
+
error
);
let
{
message
}
=
error
;
let
{
message
}
=
error
;
if
(
message
===
"
Network Error
"
)
{
if
(
message
===
"
Network Error
"
)
{
message
=
"
后端接口连接异常
"
;
message
=
"
后端接口连接异常
"
;
}
}
else
if
(
message
.
includes
(
"
timeout
"
))
{
else
if
(
message
.
includes
(
"
timeout
"
))
{
message
=
"
系统接口请求超时
"
;
message
=
"
系统接口请求超时
"
;
}
}
else
if
(
message
.
includes
(
"
Request failed with status code
"
))
{
else
if
(
message
.
includes
(
"
Request failed with status code
"
))
{
message
=
"
系统接口
"
+
message
.
substr
(
message
.
length
-
3
)
+
"
异常
"
;
message
=
"
系统接口
"
+
message
.
substr
(
message
.
length
-
3
)
+
"
异常
"
;
}
}
Message
({
Message
({
message
:
message
,
message
:
message
,
type
:
'
error
'
,
type
:
"
error
"
,
duration
:
5
*
1000
duration
:
5
*
1000
,
})
})
;
return
Promise
.
reject
(
error
)
return
Promise
.
reject
(
error
)
;
}
}
)
)
;
export
function
getBaseHeader
()
{
export
function
getBaseHeader
()
{
return
{
return
{
'
Authorization
'
:
"
Bearer
"
+
getToken
(),
Authorization
:
"
Bearer
"
+
getToken
(),
'
tenant-id
'
:
Cookies
.
get
(
'
tenantId
'
),
"
tenant-id
"
:
Cookies
.
get
(
"
tenantId
"
),
}
}
;
}
}
export
default
service
export
default
service
;
src/views/ecw/box/query.vue
View file @
7e0c1c55
...
@@ -601,7 +601,7 @@ export default {
...
@@ -601,7 +601,7 @@ export default {
regError
,
regError
,
editForm
,
editForm
,
updateError
,
updateError
,
//
lanbm 2024-05-23
异常登记对话框
//异常登记对话框
unloadingError
,
unloadingError
,
},
},
created
()
{
created
()
{
...
@@ -615,7 +615,7 @@ export default {
...
@@ -615,7 +615,7 @@ export default {
const
{
data
}
=
res
;
const
{
data
}
=
res
;
this
.
allUsers
=
data
.
list
??
[];
this
.
allUsers
=
data
.
list
??
[];
});
});
//
lanbm 2024-05-16
add
//add
/* 不用此方式
/* 不用此方式
getCurrencyList().then((res) => {
getCurrencyList().then((res) => {
this.currencyList = res.data ?? [];
this.currencyList = res.data ?? [];
...
...
src/views/ecw/customer/index.vue
View file @
7e0c1c55
<
template
>
<
template
>
<div
class=
"app-container"
>
<div
class=
"app-container"
>
<!-- 搜索工作栏 -->
<el-form
<el-form
:model=
"queryParams"
:model=
"queryParams"
ref=
"queryForm"
ref=
"queryForm"
...
@@ -15,7 +14,8 @@
...
@@ -15,7 +14,8 @@
:placeholder=
"$t('请输入客户编号')"
:placeholder=
"$t('请输入客户编号')"
clearable
clearable
@
keyup.enter.native=
"handleQuery"
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('客户名称')"
prop=
"name"
>
<el-form-item
:label=
"$t('客户名称')"
prop=
"name"
>
<el-input
<el-input
...
@@ -28,7 +28,7 @@
...
@@ -28,7 +28,7 @@
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('客户等级')"
prop=
"level"
>
<el-form-item
:label=
"$t('客户等级')"
prop=
"level"
>
<el-select
<el-select
multiple
multiple
v-model=
"queryParams.level"
v-model=
"queryParams.level"
:placeholder=
"$t('请选择客户等级')"
:placeholder=
"$t('请选择客户等级')"
clearable
clearable
...
@@ -52,7 +52,7 @@
...
@@ -52,7 +52,7 @@
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('客户类别')"
prop=
"level"
>
<el-form-item
:label=
"$t('客户类别')"
prop=
"level"
>
<dict-selector
<dict-selector
multiple
multiple
clearable
clearable
:type=
"DICT_TYPE.CUSTOMER_TYPE"
:type=
"DICT_TYPE.CUSTOMER_TYPE"
v-model=
"queryParams.type"
v-model=
"queryParams.type"
...
@@ -95,7 +95,7 @@
...
@@ -95,7 +95,7 @@
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('国家')"
prop=
"source"
>
<el-form-item
:label=
"$t('国家')"
prop=
"source"
>
<el-select
<el-select
multiple
multiple
clearable
clearable
v-model=
"queryParams.country"
v-model=
"queryParams.country"
:placeholder=
"$t('请选择国家')"
:placeholder=
"$t('请选择国家')"
...
@@ -111,7 +111,7 @@
...
@@ -111,7 +111,7 @@
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('客户状态')"
prop=
"status"
>
<el-form-item
:label=
"$t('客户状态')"
prop=
"status"
>
<el-select
<el-select
multiple
multiple
clearable
clearable
v-model=
"queryParams.status"
v-model=
"queryParams.status"
:placeholder=
"$t('请选择客户状态')"
:placeholder=
"$t('请选择客户状态')"
...
@@ -136,13 +136,11 @@
...
@@ -136,13 +136,11 @@
range-separator=
"-"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
:end-placeholder=
"$t('结束日期')"
/>
/>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('信用等级')"
prop=
"department"
>
<el-form-item
:label=
"$t('信用等级')"
prop=
"department"
>
<el-select
multiple
clearable
v-model=
"queryParams.creditLevel"
>
<el-select
multiple
clearable
v-model=
"queryParams.creditLevel"
>
<el-option
<el-option
v-for=
"(item, index) in creditList"
v-for=
"(item, index) in creditList"
:label=
"isChinese ? item.nameZh : item.nameEn"
:label=
"isChinese ? item.nameZh : item.nameEn"
:key=
"index"
:key=
"index"
...
@@ -160,6 +158,36 @@
...
@@ -160,6 +158,36 @@
formatter=
"number"
formatter=
"number"
@
change=
"handleQuery"
@
change=
"handleQuery"
></dict-selector>
></dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('会员电话')"
prop=
"department"
>
<el-col
:span=
"11"
>
<area-code-selector
style=
"width: 100%;"
v-model=
"queryParams.memberAreaCode"
/>
</el-col>
<el-col
class=
"line"
:span=
"2"
></el-col>
<el-col
:span=
"11"
>
<el-input
maxlength=
"11"
width=
"100%"
class=
"ml-10 w-200"
clearable
v-model.number=
"queryParams.memberMobile"
:placeholder=
"$t('请输入会员电话')"
/>
</el-col>
</el-form-item>
<el-form-item
:label=
"$t('会员编号')"
prop=
"number"
>
<el-input
v-model.trim=
"queryParams.memberCode"
:placeholder=
"$t('请输入会员编号')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('会员名称')"
prop=
"name"
>
<el-input
v-model.trim=
"queryParams.memberName"
:placeholder=
"$t('请输入会员名称')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
...
@@ -268,6 +296,18 @@
...
@@ -268,6 +296,18 @@
>
{{
$t
(
"
新增潜在客户
"
)
}}
</el-button
>
{{
$t
(
"
新增潜在客户
"
)
}}
</el-button
>
>
</el-col>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleMergeCus"
>
{{
$t
(
"
合并客户
"
)
}}
</el-button
>
</el-col>
<right-toolbar
<right-toolbar
:showSearch.sync=
"showSearch"
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
@
queryTable=
"getList"
...
@@ -1035,6 +1075,8 @@ import AddPotentialCustom from "@/views/ecw/customer/addPotentialCustom.vue";
...
@@ -1035,6 +1075,8 @@ import AddPotentialCustom from "@/views/ecw/customer/addPotentialCustom.vue";
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
;
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
;
import
{
getUserProfile
}
from
"
@/api/system/user
"
;
import
{
getUserProfile
}
from
"
@/api/system/user
"
;
import
AreaCodeSelector
from
"
@/components/AreaCodeSelector/index.vue
"
;
export
default
{
export
default
{
name
:
"
EcwCustomerIndex
"
,
name
:
"
EcwCustomerIndex
"
,
components
:
{
components
:
{
...
@@ -1045,6 +1087,7 @@ export default {
...
@@ -1045,6 +1087,7 @@ export default {
CustomerFollowList
,
CustomerFollowList
,
customerComplaints
,
customerComplaints
,
transferCustomer
,
transferCustomer
,
AreaCodeSelector
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -1056,7 +1099,7 @@ export default {
...
@@ -1056,7 +1099,7 @@ export default {
// 导出遮罩层
// 导出遮罩层
exportLoading
:
false
,
exportLoading
:
false
,
// 显示搜索条件
// 显示搜索条件
showSearch
:
tru
e
,
showSearch
:
fals
e
,
// 总条数
// 总条数
total
:
0
,
total
:
0
,
// 客户列表
// 客户列表
...
@@ -1080,6 +1123,10 @@ export default {
...
@@ -1080,6 +1123,10 @@ export default {
creditLevel
:
null
,
creditLevel
:
null
,
country
:
null
,
country
:
null
,
resourceType
:
null
,
resourceType
:
null
,
memberCode
:
null
,
memberName
:
null
,
memberMobile
:
null
,
memberAreaCode
:
null
},
},
// 表单参数
// 表单参数
form
:
{},
form
:
{},
...
@@ -1220,6 +1267,9 @@ export default {
...
@@ -1220,6 +1267,9 @@ export default {
this
.
getList
();
this
.
getList
();
},
},
methods
:
{
methods
:
{
handleMergeCus
()
{
//合并客户
},
recovery
(
row
)
{
recovery
(
row
)
{
this
.
$confirm
(
this
.
$t
(
"
是否要回收当前{name}
"
,
row
),
"
提示
"
,
{
this
.
$confirm
(
this
.
$t
(
"
是否要回收当前{name}
"
,
row
),
"
提示
"
,
{
confirmButtonText
:
"
确定
"
,
confirmButtonText
:
"
确定
"
,
...
@@ -1470,6 +1520,10 @@ export default {
...
@@ -1470,6 +1520,10 @@ export default {
department
:
null
,
department
:
null
,
creditLevel
:
null
,
creditLevel
:
null
,
country
:
null
,
country
:
null
,
memberCode
:
null
,
memberName
:
null
,
memberMobile
:
null
,
memberAreaCode
:
null
};
};
this
.
handleQuery
();
this
.
handleQuery
();
},
},
...
...
src/views/ecw/customer/indirectCustomer.vue
View file @
7e0c1c55
...
@@ -28,6 +28,36 @@
...
@@ -28,6 +28,36 @@
<el-form-item
:label=
"$t('市场获客')"
prop=
"department"
>
<el-form-item
:label=
"$t('市场获客')"
prop=
"department"
>
<dict-selector
clearable
:type=
"DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE"
v-model=
"queryParams.marketType"
formatter=
"number"
@
change=
"handleQuery"
></dict-selector>
<dict-selector
clearable
:type=
"DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE"
v-model=
"queryParams.marketType"
formatter=
"number"
@
change=
"handleQuery"
></dict-selector>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('会员电话')"
prop=
"department"
>
<el-col
:span=
"11"
>
<area-code-selector
style=
"width: 100%;"
v-model=
"queryParams.memberAreaCode"
/>
</el-col>
<el-col
class=
"line"
:span=
"2"
></el-col>
<el-col
:span=
"11"
>
<el-input
maxlength=
"11"
width=
"100%"
class=
"ml-10 w-200"
clearable
v-model.number=
"queryParams.memberMobile"
:placeholder=
"$t('请输入会员电话')"
/>
</el-col>
</el-form-item>
<el-form-item
:label=
"$t('会员编号')"
prop=
"number"
>
<el-input
v-model.trim=
"queryParams.memberCode"
:placeholder=
"$t('请输入会员编号')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('会员名称')"
prop=
"name"
>
<el-input
v-model.trim=
"queryParams.memberName"
:placeholder=
"$t('请输入会员名称')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
'
搜索
'
)
}}
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
'
搜索
'
)
}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
'
重置
'
)
}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
'
重置
'
)
}}
</el-button>
...
@@ -35,6 +65,13 @@
...
@@ -35,6 +65,13 @@
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<el-row
:gutter=
"10"
class=
"mb8"
>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
</el-row>
<!-- 列表 -->
<!-- 列表 -->
<el-table
ref=
"multipleTable"
v-loading=
"loading"
:data=
"list"
@
selection-change=
"handleSelectionChange"
>
<el-table
ref=
"multipleTable"
v-loading=
"loading"
:data=
"list"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
<el-table-column
...
@@ -43,7 +80,6 @@
...
@@ -43,7 +80,6 @@
</el-table-column>
</el-table-column>
<el-table-column
:label=
"$t('客户名称')"
align=
"center"
prop=
"name"
>
<el-table-column
:label=
"$t('客户名称')"
align=
"center"
prop=
"name"
>
<template
v-slot=
"scope"
>
<template
v-slot=
"scope"
>
<span>
{{
$l
(
scope
.
row
,
'
name
'
)
}}
</span>
<span>
{{
$l
(
scope
.
row
,
'
name
'
)
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
...
@@ -99,9 +135,13 @@ import { getDictDatas, DICT_TYPE } from '@/utils/dict';
...
@@ -99,9 +135,13 @@ import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import
{
listServiceUser
}
from
"
@/api/system/user
"
;
import
{
listServiceUser
}
from
"
@/api/system/user
"
;
import
{
exportCustomerComplaintExcel
}
from
"
@/api/ecw/customerComplaint
"
;
import
{
exportCustomerComplaintExcel
}
from
"
@/api/ecw/customerComplaint
"
;
import
{
indirectCustomerExportExcel
}
from
"
@/api/ecw/customer
"
;
import
{
indirectCustomerExportExcel
}
from
"
@/api/ecw/customer
"
;
import
AreaCodeSelector
from
"
@/components/AreaCodeSelector/index.vue
"
;
export
default
{
export
default
{
name
:
"
EcwCustomerIndirectcustomer
"
,
name
:
"
EcwCustomerIndirectcustomer
"
,
components
:
{
AreaCodeSelector
},
activated
()
{
activated
()
{
this
.
getList
()
this
.
getList
()
},
},
...
@@ -114,7 +154,7 @@ export default {
...
@@ -114,7 +154,7 @@ export default {
loading
:
true
,
loading
:
true
,
// 导出遮罩层
// 导出遮罩层
// 显示搜索条件
// 显示搜索条件
showSearch
:
tru
e
,
showSearch
:
fals
e
,
// 总条数
// 总条数
total
:
0
,
total
:
0
,
// 客户列表
// 客户列表
...
@@ -131,7 +171,11 @@ export default {
...
@@ -131,7 +171,11 @@ export default {
name
:
null
,
name
:
null
,
source
:
null
,
source
:
null
,
customerService
:
null
,
customerService
:
null
,
marketType
:
null
marketType
:
null
,
memberCode
:
null
,
memberName
:
null
,
memberMobile
:
null
,
memberAreaCode
:
null
},
},
// 网点
// 网点
nodeList
:
[],
nodeList
:
[],
...
@@ -203,6 +247,10 @@ export default {
...
@@ -203,6 +247,10 @@ export default {
name
:
null
,
name
:
null
,
source
:
null
,
source
:
null
,
customerService
:
null
,
customerService
:
null
,
memberCode
:
null
,
memberName
:
null
,
memberMobile
:
null
,
memberAreaCode
:
null
}
}
this
.
handleQuery
();
this
.
handleQuery
();
},
},
...
...
src/views/ecw/customer/mergecustomer.vue
0 → 100644
View file @
7e0c1c55
<
template
>
<div
class=
"app-container"
>
<el-card
style=
"margin-bottom: 10px"
>
</el-card>
<el-card
style=
"margin-bottom: 10px"
>
</el-card>
</div>
</
template
>
\ No newline at end of file
src/views/ecw/customerConfirm/index.vue
View file @
7e0c1c55
...
@@ -57,6 +57,36 @@
...
@@ -57,6 +57,36 @@
<el-form-item
:label=
"$t('市场获客')"
prop=
"department"
>
<el-form-item
:label=
"$t('市场获客')"
prop=
"department"
>
<dict-selector
multiple
clearable
:type=
"DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE"
v-model=
"queryParams.marketType"
formatter=
"number"
@
change=
"handleQuery"
></dict-selector>
<dict-selector
multiple
clearable
:type=
"DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE"
v-model=
"queryParams.marketType"
formatter=
"number"
@
change=
"handleQuery"
></dict-selector>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('会员电话')"
prop=
"department"
>
<el-col
:span=
"11"
>
<area-code-selector
style=
"width: 100%;"
v-model=
"queryParams.memberAreaCode"
/>
</el-col>
<el-col
class=
"line"
:span=
"2"
></el-col>
<el-col
:span=
"11"
>
<el-input
maxlength=
"11"
width=
"100%"
class=
"ml-10 w-200"
clearable
v-model.number=
"queryParams.memberMobile"
:placeholder=
"$t('请输入会员电话')"
/>
</el-col>
</el-form-item>
<el-form-item
:label=
"$t('会员编号')"
prop=
"number"
>
<el-input
v-model.trim=
"queryParams.memberCode"
:placeholder=
"$t('请输入会员编号')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('会员名称')"
prop=
"name"
>
<el-input
v-model.trim=
"queryParams.memberName"
:placeholder=
"$t('请输入会员名称')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
'
搜索
'
)
}}
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
'
搜索
'
)
}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
'
重置
'
)
}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
'
重置
'
)
}}
</el-button>
...
@@ -373,7 +403,7 @@ import {getCountryListAll} from "@/api/ecw/country";
...
@@ -373,7 +403,7 @@ import {getCountryListAll} from "@/api/ecw/country";
import
{
getCreditPage
}
from
"
@/api/customer/credit
"
;
import
{
getCreditPage
}
from
"
@/api/customer/credit
"
;
import
transferCustomer
from
"
@/views/ecw/customer/transferCustomer.vue
"
;
import
transferCustomer
from
"
@/views/ecw/customer/transferCustomer.vue
"
;
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
;
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
;
import
AreaCodeSelector
from
"
@/components/AreaCodeSelector/index.vue
"
;
export
default
{
export
default
{
...
@@ -391,7 +421,8 @@ export default {
...
@@ -391,7 +421,8 @@ export default {
},
},
components
:
{
components
:
{
Contacts
,
Contacts
,
transferCustomer
transferCustomer
,
AreaCodeSelector
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -400,7 +431,7 @@ export default {
...
@@ -400,7 +431,7 @@ export default {
// 导出遮罩层
// 导出遮罩层
exportLoading
:
false
,
exportLoading
:
false
,
// 显示搜索条件
// 显示搜索条件
showSearch
:
tru
e
,
showSearch
:
fals
e
,
// 总条数
// 总条数
total
:
0
,
total
:
0
,
// 客户列表
// 客户列表
...
@@ -425,6 +456,10 @@ export default {
...
@@ -425,6 +456,10 @@ export default {
creditLevel
:
null
,
creditLevel
:
null
,
country
:
null
,
country
:
null
,
marketType
:
null
,
marketType
:
null
,
memberCode
:
null
,
memberName
:
null
,
memberMobile
:
null
,
memberAreaCode
:
null
},
},
// 表单参数
// 表单参数
form
:
{},
form
:
{},
...
@@ -563,6 +598,10 @@ export default {
...
@@ -563,6 +598,10 @@ export default {
department
:
null
,
department
:
null
,
creditLevel
:
null
,
creditLevel
:
null
,
country
:
null
,
country
:
null
,
memberCode
:
null
,
memberName
:
null
,
memberMobile
:
null
,
memberAreaCode
:
null
}
}
this
.
handleQuery
();
this
.
handleQuery
();
},
},
...
...
src/views/ecw/customerToBeAssigned/index.vue
View file @
7e0c1c55
...
@@ -58,6 +58,36 @@
...
@@ -58,6 +58,36 @@
<el-form-item
:label=
"$t('市场获客')"
prop=
"department"
>
<el-form-item
:label=
"$t('市场获客')"
prop=
"department"
>
<dict-selector
clearable
:type=
"DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE"
v-model=
"queryParams.marketType"
formatter=
"number"
></dict-selector>
<dict-selector
clearable
:type=
"DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE"
v-model=
"queryParams.marketType"
formatter=
"number"
></dict-selector>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('会员电话')"
prop=
"department"
>
<el-col
:span=
"11"
>
<area-code-selector
style=
"width: 100%;"
v-model=
"queryParams.memberAreaCode"
/>
</el-col>
<el-col
class=
"line"
:span=
"2"
></el-col>
<el-col
:span=
"11"
>
<el-input
maxlength=
"11"
width=
"100%"
class=
"ml-10 w-200"
clearable
v-model.number=
"queryParams.memberMobile"
:placeholder=
"$t('请输入会员电话')"
/>
</el-col>
</el-form-item>
<el-form-item
:label=
"$t('会员编号')"
prop=
"number"
>
<el-input
v-model.trim=
"queryParams.memberCode"
:placeholder=
"$t('请输入会员编号')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('会员名称')"
prop=
"name"
>
<el-input
v-model.trim=
"queryParams.memberName"
:placeholder=
"$t('请输入会员名称')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
'
搜索
'
)
}}
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
'
搜索
'
)
}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
'
重置
'
)
}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
'
重置
'
)
}}
</el-button>
...
@@ -180,6 +210,7 @@ import {getCreditPage} from "@/api/customer/credit";
...
@@ -180,6 +210,7 @@ import {getCreditPage} from "@/api/customer/credit";
import
transferCustomer
from
"
@/views/ecw/customer/transferCustomer
"
;
import
transferCustomer
from
"
@/views/ecw/customer/transferCustomer
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
;
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
;
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
;
import
AreaCodeSelector
from
"
@/components/AreaCodeSelector/index.vue
"
;
export
default
{
export
default
{
name
:
"
EcwCustomertobeassignedIndex
"
,
name
:
"
EcwCustomertobeassignedIndex
"
,
activated
()
{
activated
()
{
...
@@ -189,7 +220,8 @@ export default {
...
@@ -189,7 +220,8 @@ export default {
Contacts
,
Contacts
,
Template
,
Template
,
upload
,
upload
,
transferCustomer
transferCustomer
,
AreaCodeSelector
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -201,7 +233,7 @@ export default {
...
@@ -201,7 +233,7 @@ export default {
// 导出遮罩层
// 导出遮罩层
exportLoading
:
false
,
exportLoading
:
false
,
// 显示搜索条件
// 显示搜索条件
showSearch
:
tru
e
,
showSearch
:
fals
e
,
// 总条数
// 总条数
total
:
0
,
total
:
0
,
// 客户列表
// 客户列表
...
@@ -226,6 +258,10 @@ export default {
...
@@ -226,6 +258,10 @@ export default {
creditLevel
:
null
,
creditLevel
:
null
,
country
:
null
,
country
:
null
,
marketType
:
null
,
marketType
:
null
,
memberCode
:
null
,
memberName
:
null
,
memberMobile
:
null
,
memberAreaCode
:
null
},
},
// 表单参数
// 表单参数
form
:
{},
form
:
{},
...
@@ -357,6 +393,10 @@ export default {
...
@@ -357,6 +393,10 @@ export default {
department
:
null
,
department
:
null
,
creditLevel
:
null
,
creditLevel
:
null
,
country
:
null
,
country
:
null
,
memberCode
:
null
,
memberName
:
null
,
memberMobile
:
null
,
memberAreaCode
:
null
}
}
this
.
handleQuery
();
this
.
handleQuery
();
},
},
...
...
src/views/ecw/giftManagement/bulkExchange/components/chooseMember.vue
0 → 100644
View file @
7e0c1c55
<
template
>
<el-dialog
:title=
"$t('选择会员')"
:visible.sync=
"dialogVisible"
width=
"80%"
:before-close=
"dialogBeforeClose"
>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
v-show=
"showSearch"
:inline=
"true"
label-width=
"120px"
>
<el-form-item
:label=
"$t('当前积分')"
>
<el-row
:gutter=
"10"
>
<el-col
:span=
"8"
>
<dict-selector
clearable
:type=
"DICT_TYPE.QUANTITATIVE_RELATION_SYMBOL"
v-model=
"queryParams.holdScoreOperate"
@
change=
"handleQuery"
>
</dict-selector>
</el-col>
<el-col
:span=
"16"
>
<el-input
v-model.trim=
"queryParams.holdScore"
:placeholder=
"$t('请输入数字')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-col>
</el-row>
</el-form-item>
<el-form-item
:label=
"$t('关键词')"
>
<el-input
style=
"width: 300px"
v-model.trim=
"queryParams.key"
:placeholder=
"$t('请输入会员名称/会员编号/手机号')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('国家')"
>
<el-select
v-model=
"queryParams.country"
:placeholder=
"$t('请选择国家')"
clearable
@
change=
"handleGetCityList($event)"
size=
"small"
>
<el-option
v-for=
"nodeItem in countryList"
:key=
"nodeItem.id"
:label=
"isChinese ? nodeItem.titleZh : nodeItem.titleEn"
:value=
"nodeItem.id"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('城市')"
>
<el-select
v-model=
"queryParams.city"
:placeholder=
"$t('请选择城市')"
clearable
size=
"small"
>
<el-option
v-for=
"nodeItem in cityList"
:key=
"nodeItem.id"
:label=
"isChinese ? nodeItem.titleZh : nodeItem.titleEn"
:value=
"nodeItem.id"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
"
搜索
"
)
}}
</el-button
>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
"
重置
"
)
}}
</el-button>
</el-form-item>
</el-form>
<el-row
class=
"mb8"
>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"handleQueryPagination"
></right-toolbar>
</el-row>
<el-table
ref=
"multipleTable"
v-loading=
"loading"
@
selection-change=
"handleSelectionChange"
:data=
"memberList"
>
<el-table-column
type=
"selection"
width=
"55"
:selectable=
"selectable"
>
</el-table-column>
<el-table-column
:label=
"$t('会员名称')"
align=
"center"
:prop=
"isChinese ? 'memberNameZh' : 'memberNameEn'"
></el-table-column>
<el-table-column
width=
"140"
:label=
"$t('会员编号')"
align=
"center"
prop=
"id"
></el-table-column>
<el-table-column
width=
"140"
:label=
"$t('手机号')"
align=
"center"
prop=
"mobile"
></el-table-column>
<el-table-column
width=
"140"
align=
"center"
:label=
"$t('国家')"
:prop=
"isChinese ? 'countryNameZh' : 'countryNameEn'"
></el-table-column>
<el-table-column
:label=
"$t('城市')"
align=
"center"
:prop=
"isChinese ? 'cityNameZh' : 'cityNameEn'"
></el-table-column>
<el-table-column
:label=
"$t('当前积分')"
align=
"center"
prop=
"holdScore"
></el-table-column>
</el-table>
<!-- //分页列表 -->
<span
v-show=
"selectedMember.memberList.length > 0"
>
{{
$t
(
"
已选择:
"
)
}}
{{
selectedMember
.
memberName
}}
{{
$t
(
"
共
"
)
}}
<span
style=
"color: red"
>
{{
selectedMember
.
memberList
.
length
}}
</span>
{{
$t
(
"
人
"
)
}}
</span
>
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"handleQueryPagination"
/>
</div>
<div
slot=
"footer"
>
<el-button
@
click=
"dialogBeforeClose"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"transferSelectMember"
>
确 定
</el-button>
</div>
</el-dialog>
</
template
>
<
script
>
import
{
getDictDatas
,
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
{
getCityList
,
getTradeCountryList
,
getMemberList
,
}
from
"
@/api/ecw/giftManagement
"
;
import
{
color
}
from
"
echarts/lib/export
"
;
export
default
{
name
:
"
chooseMember
"
,
props
:
{
dialogVisible
:
{
type
:
Boolean
,
default
:
false
,
},
memberSelectList
:
{
type
:
Array
,
default
:
()
=>
[],
},
},
watch
:
{
dialogVisible
(
val
)
{
if
(
val
==
true
)
{
this
.
handleQuery
();
}
},
memberSelectList
(
val
)
{
this
.
selectedMember
.
memberList
=
val
;
},
},
data
()
{
return
{
selectedMember
:
{
memberList
:
[],
memberName
:
""
},
countryList
:
[],
cityList
:
[],
total
:
0
,
loading
:
true
,
memberList
:
[],
// 显示搜索条件
showSearch
:
true
,
queryParams
:
{
country
:
null
,
city
:
null
,
endTime
:
""
,
holdScore
:
null
,
holdScoreOperate
:
null
,
key
:
""
,
pageNo
:
1
,
pageSize
:
10
,
startTime
:
""
,
usedScore
:
null
,
usedScoreOperate
:
null
,
},
};
},
computed
:
{
isChinese
()
{
return
this
.
$i18n
.
locale
===
"
zh_CN
"
;
},
},
created
()
{
this
.
handleQuery
();
this
.
getCountryList
();
},
activated
()
{
this
.
handleQuery
();
},
methods
:
{
selectable
(
row
,
index
)
{
if
(
this
.
memberSelectList
.
length
>
0
)
{
return
this
.
memberSelectList
.
some
((
item
)
=>
{
return
item
.
id
!=
row
.
id
;
});
}
else
{
return
true
;
}
},
handleSelectionChange
(
val
)
{
this
.
selectedMember
.
memberList
=
val
;
let
arraryMemberName
=
[];
if
(
val
)
{
this
.
selectedMember
.
memberList
.
forEach
((
element
)
=>
{
if
(
this
.
isChinese
)
{
arraryMemberName
.
push
(
element
.
memberNameZh
);
}
else
{
arraryMemberName
.
push
(
element
.
memberNameEn
);
}
});
}
this
.
selectedMember
.
memberName
=
arraryMemberName
.
join
(
"
、
"
);
},
transferSelectMember
()
{
this
.
dialogBeforeClose
();
this
.
$emit
(
"
transferSelectMemberInfo
"
,
this
.
selectedMember
.
memberList
);
},
dialogBeforeClose
()
{
this
.
loading
=
true
;
this
.
queryParams
=
{
country
:
null
,
city
:
null
,
endTime
:
null
,
holdScore
:
null
,
holdScoreOperate
:
null
,
key
:
null
,
pageNo
:
1
,
pageSize
:
10
,
startTime
:
null
,
usedScore
:
null
,
usedScoreOperate
:
null
,
};
// this.dialogVisible = false;
this
.
$emit
(
"
update:dialogVisible
"
,
false
);
},
getCountryList
()
{
getTradeCountryList
().
then
((
res
)
=>
{
this
.
countryList
=
res
.
data
;
});
},
handleGetCityList
(
id
)
{
if
(
id
)
{
let
params
=
{
id
:
id
,
};
getCityList
(
params
).
then
((
res
)
=>
{
this
.
cityList
=
res
.
data
;
});
}
else
{
this
.
cityList
=
[];
}
},
handleQuery
()
{
this
.
queryParams
.
pageNo
=
1
;
let
params
=
{
...
this
.
queryParams
};
getMemberList
(
params
).
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
memberList
=
res
.
data
.
list
;
this
.
total
=
res
.
data
.
total
;
});
},
handleQueryPagination
()
{
let
params
=
{
...
this
.
queryParams
};
getMemberList
(
params
).
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
memberList
=
res
.
data
.
list
;
this
.
total
=
res
.
data
.
total
;
});
},
resetQuery
()
{
this
.
loading
=
true
;
this
.
queryParams
=
{
country
:
null
,
city
:
null
,
endTime
:
null
,
holdScore
:
null
,
holdScoreOperate
:
null
,
key
:
null
,
pageNo
:
1
,
pageSize
:
10
,
startTime
:
null
,
usedScore
:
null
,
usedScoreOperate
:
null
,
};
this
.
handleQuery
();
},
},
};
</
script
>
src/views/ecw/giftManagement/bulkExchange/index.vue
0 → 100644
View file @
7e0c1c55
<
template
>
<div
class=
"app-container"
>
<el-button
type=
"success"
@
click=
"handleSelectMember"
>
{{
$t
(
"
添加会员
"
)
}}
</el-button
>
<div
class=
"container"
>
<div
v-if=
"memberList.length > 0"
>
<div
class=
"formBox"
v-for=
"(item, index) in queryParamsList"
:key=
"item.memberId"
>
<el-form
:model=
"queryParamsList[index]"
:ref=
"`queryForm$
{item.memberId}`"
size="small"
:inline="true"
:rules="rules"
label-width="168px"
>
<el-card
class=
"box-card"
>
<div
slot=
"header"
class=
"clearfix"
>
<el-row
:gutter=
"10"
>
<span
class=
"card-title"
>
{{
$t
(
"
基础信息
"
)
}}
</span>
<el-button
style=
"padding: 0 10px"
@
click=
"handleExpand(item)"
type=
"text"
>
{{
item
.
expand
?
$t
(
"
收起
"
)
:
$t
(
"
展开
"
)
}}
<i
:class=
"
item.expand
? 'el-icon-caret-top'
: 'el-icon-caret-bottom'
"
></i
></el-button>
<el-button
type=
"text"
@
click=
"handleDelete(index, item)"
class=
"del-btn"
>
{{
$t
(
"
删除
"
)
}}
</el-button
>
</el-row>
<el-row
:gutter=
"10"
>
<el-form-item
:label=
"$t('会员名称')"
>
<el-input
:placeholder=
"$t('请输入会员名称')"
clearable
:disabled=
"true"
v-model=
"item.memberName"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('当前积分')"
>
<el-input
:placeholder=
"$t('请输入当前积分')"
clearable
:disabled=
"true"
v-model=
"item.holdScore"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('礼品选择')"
>
<el-input
:placeholder=
"$t('请选择礼品')"
clearable
:disabled=
"true"
v-model=
"item.rewardName"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('礼品积分')"
>
<el-input
:placeholder=
"$t('请输入礼品积分')"
clearable
:disabled=
"true"
v-model=
"item.pointsRequire"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('兑换数量')"
prop=
"rewardCount"
>
<el-input
:placeholder=
"$t('请输入兑换数量')"
clearable
v-model.number=
"item.rewardCount"
@
change=
"
(val) =>
{
handleRewardCount(item, index, val);
}
"
onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('本次兑换积分')"
>
<el-input
:placeholder=
"$t('请输入本次兑换积分')"
clearable
:disabled=
"true"
v-model=
"item.spendCredit"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('兑换后剩余积分')"
>
<el-input
:placeholder=
"$t('兑换后剩余积分')"
clearable
:disabled=
"true"
v-model=
"item.remainingPoints"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
</el-row>
<el-row
:gutter=
"10"
v-show=
"item.expand"
>
<el-row>
<span
class=
"card-title"
>
{{
$t
(
"
详细信息
"
)
}}
</span>
</el-row>
<el-row>
<el-form-item
:label=
"$t('兑换方式')"
prop=
"redeemType"
>
<dict-selector
clearable
:type=
"DICT_TYPE.WAY_OF_RECEIVING"
v-model=
"item.redeemType"
@
change=
"handleRedeemType(item)"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('兑换入口')"
>
<dict-selector
clearable
:disabled=
"true"
v-model=
"item.entrance"
:type=
"DICT_TYPE.PLATFORM_TYPE"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('费用')"
required
>
<el-row
:gutter=
"10"
>
<el-col
:span=
"12"
>
<el-form-item
prop=
"expenses"
>
<el-input
v-model=
"item.expenses"
:placeholder=
"$t('请输入数字')"
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
</el-col>
<el-col
:span=
"10"
>
<el-form-item
prop=
"currency"
>
<el-select
v-model=
"item.currency"
:placeholder=
"$t('请选择币种')"
>
<el-option
v-for=
"nodeItem in currencyList"
:key=
"nodeItem.id"
:label=
"
isChinese
? nodeItem.titleZh
: nodeItem.titleEn
"
:value=
"nodeItem.id"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form-item>
<el-form-item
:label=
"$t('收件人姓名')"
prop=
"recipientName"
><el-input
:placeholder=
"$t('请输入收件人姓名')"
clearable
v-model=
"item.recipientName"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('收件人电话')"
prop=
"recipientPhoneNum"
>
<el-input
:placeholder=
"$t('请输入收件人电话')"
clearable
v-model=
"item.recipientPhoneNum"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('收件人地址')"
prop=
"recipientAddress"
v-if=
"item.redeemType != '1'"
>
<el-input
:placeholder=
"$t('请输入收件人地址')"
clearable
v-model=
"item.recipientAddress"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('兑换人')"
>
<el-input
:placeholder=
"$t('请输入兑换人')"
clearable
v-model=
"item.redeemer"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('兑换时间')"
>
<el-date-picker
type=
"date"
placement=
"bottom-start"
value-format=
"yyyy-MM-dd HH:mm:ss"
:placeholder=
"$t('选择兑换时间')"
v-model=
"item.redemptionTime"
></el-date-picker>
</el-form-item>
<el-form-item
:label=
"$t('快递公司')"
v-if=
"item.redeemType != '1'"
>
<el-select
v-model=
"item.courierCompany"
:placeholder=
"$t('请选择快递公司')"
>
<el-option
v-for=
"nodeItem in expressList"
:key=
"nodeItem.id"
:label=
"nodeItem.companyName"
:value=
"nodeItem.id"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('快递单号')"
v-if=
"item.redeemType != '1'"
>
<el-input
:placeholder=
"$t('请输入快递单号')"
clearable
v-model=
"item.expressNo"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('快递日期')"
v-if=
"item.redeemType != '1'"
>
<el-date-picker
type=
"date"
:placeholder=
"$t('选择快递日期')"
v-model=
"item.expressDate"
value-format=
"yyyy-MM-dd HH:mm:ss"
placement=
"bottom-start"
></el-date-picker>
</el-form-item>
<el-form-item
:label=
"$t('快递寄出人')"
>
<el-input
:placeholder=
"$t('请输入快递寄出人')"
clearable
v-model=
"item.expressSender"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('上传附件')"
>
<file-upload
v-model=
"item.annex"
></file-upload>
</el-form-item>
<el-form-item
:label=
"$t('备注')"
>
<el-input
style=
"width: 500px"
type=
"textarea"
v-model=
"item.remark"
></el-input>
</el-form-item>
</el-row>
</el-row>
</div>
</el-card>
</el-form>
</div>
</div>
<div
v-else
class=
"emptyText"
>
{{
$t
(
"
请先添加准备兑换礼品的会员
"
)
}}
</div>
<el-row
justify=
"end"
:gutter=
"20"
type=
"flex"
class=
"handleButton"
>
<el-col
:span=
"2"
>
<el-button
v-if=
"memberList.length > 0"
type=
"primary"
@
click=
"handleBulkConversion"
>
{{
$t
(
"
确认兑换
"
)
}}
</el-button
>
</el-col>
<el-col
:span=
"2"
>
<el-button
@
click=
"handleBack"
>
{{
$t
(
"
返回
"
)
}}
</el-button>
</el-col>
</el-row>
</div>
<choose-Member
:dialogVisible.sync=
"dialogVisible"
@
transferSelectMemberInfo=
"onGetSelectMemberInfo"
:memberSelectList=
"memberList"
>
</choose-Member>
</div>
</
template
>
<
script
>
import
{
getRewardsDetails
,
bulkConversion
}
from
"
@/api/ecw/giftManagement
"
;
import
FileUpload
from
"
@/components/FileUpload
"
;
import
chooseMember
from
"
./components/chooseMember.vue
"
;
import
{
getExpressPage
}
from
"
@/api/ecw/express
"
;
import
{
getCurrencyList
}
from
"
@/api/ecw/currency
"
;
import
{
getNowDateTime
}
from
"
@/utils/ruoyi
"
;
import
{
handleError
}
from
"
@vue/runtime-dom
"
;
export
default
{
name
:
"
giftManagementList
"
,
components
:
{
chooseMember
,
FileUpload
,
},
data
()
{
var
validatePass2
=
(
rule
,
value
,
callback
)
=>
{
if
(
!
this
.
quantityComputation
)
{
return
callback
(
new
Error
(
this
.
$t
(
"
兑换积分大于当前总积分,请重新输入兑换数量
"
))
);
}
else
{
return
callback
();
}
};
return
{
env
:
process
.
env
.
NODE_ENV
,
// 是否显示弹出层
dialogVisible
:
false
,
// 查询参数
queryParamsList
:
[],
// 网点
nodeList
:
[],
//快递公司列表
expressList
:
[],
memberList
:
[],
currencyList
:
[],
quantityComputation
:
null
,
checkFormResult
:
[],
rules
:
{
rewardCount
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入兑换数量
"
),
trigger
:
"
blur
"
,
},
{
validator
:
validatePass2
,
trigger
:
"
blur
"
,
},
],
expenses
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入费用
"
),
trigger
:
"
blur
"
,
},
{
pattern
:
/^
\d
+
(\.\d{1,2})?
$/
,
message
:
this
.
$t
(
"
请输入整数或保留小数点后两位
"
),
trigger
:
"
blur
"
,
},
],
currency
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请选择币种
"
),
trigger
:
"
change
"
,
},
],
redeemType
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请选择兑换方式
"
),
trigger
:
"
change
"
,
},
],
recipientName
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入收件人姓名
"
),
trigger
:
"
blur
"
,
},
],
recipientPhoneNum
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入收件人电话
"
),
trigger
:
"
blur
"
,
},
],
recipientAddress
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入收件人地址
"
),
trigger
:
"
blur
"
,
},
],
},
};
},
computed
:
{
isChinese
()
{
return
this
.
$i18n
.
locale
===
"
zh_CN
"
;
},
},
created
()
{
this
.
getRewardsDetailsAPI
();
this
.
getExpressList
();
this
.
currencyListAPI
();
},
activated
()
{},
methods
:
{
handleRedeemType
(
item
)
{
this
.
$nextTick
(()
=>
{
// queryForm${item.memberId}
this
.
$refs
[
`queryForm
${
item
.
memberId
}
`
][
0
].
clearValidate
();
});
},
handleRewardCount
(
item
,
index
,
value
)
{
this
.
queryParamsList
[
index
].
spendCredit
=
this
.
queryParamsList
[
index
].
pointsRequire
*
value
;
this
.
queryParamsList
[
index
].
remainingPoints
=
this
.
queryParamsList
[
index
].
holdScore
-
this
.
queryParamsList
[
index
].
spendCredit
;
this
.
quantityComputation
=
this
.
queryParamsList
[
index
].
remainingPoints
>=
0
?
true
:
false
;
},
handleDelete
(
index
,
item
)
{
this
.
$modal
.
confirm
(
this
.
$t
(
"
是否确认删除此数据
"
))
.
then
(()
=>
{
this
.
queryParamsList
.
splice
(
index
,
1
);
this
.
memberList
=
this
.
memberList
.
filter
(
(
res
)
=>
res
.
id
!=
item
.
memberId
);
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
删除成功
"
));
})
.
catch
(()
=>
{});
},
handleExpand
(
item
)
{
this
.
queryParamsList
.
forEach
((
element
)
=>
{
if
(
element
.
memberId
==
item
.
memberId
)
{
element
.
expand
=
!
item
.
expand
;
}
});
},
currencyListAPI
()
{
getCurrencyList
().
then
((
res
)
=>
{
this
.
currencyList
=
res
.
data
;
});
},
onGetSelectMemberInfo
(
data
)
{
if
(
data
.
length
>
0
)
{
data
.
filter
((
item
)
=>
{
let
inculde
=
this
.
queryParamsList
.
some
((
itemQuery
)
=>
{
return
item
.
id
==
itemQuery
.
memberId
;
});
if
(
!
inculde
)
{
let
queryParams
=
{
expand
:
true
,
memberId
:
item
.
id
,
holdScore
:
item
.
holdScore
,
rewardId
:
this
.
rewardsDetails
.
id
,
pointsRequire
:
this
.
rewardsDetails
.
pointsRequire
,
rewardCount
:
null
,
spendCredit
:
null
,
//本次兑换花费积分
remainingPoints
:
null
,
//剩余积分
redeemType
:
null
,
entrance
:
1
,
expenses
:
null
,
currency
:
null
,
recipientName
:
null
,
recipientPhoneNum
:
null
,
recipientAddress
:
null
,
redeemer
:
this
.
$store
.
getters
.
name
,
redemptionTime
:
getNowDateTime
(
"
00:00:00
"
),
courierCompany
:
null
,
expressNo
:
null
,
expressSender
:
this
.
$store
.
getters
.
name
,
expressDate
:
null
,
remark
:
null
,
annex
:
null
,
};
if
(
this
.
isChinese
)
{
queryParams
.
memberName
=
item
.
memberNameZh
;
queryParams
.
rewardName
=
this
.
rewardsDetails
.
titleZh
;
}
else
{
queryParams
.
memberName
=
item
.
memberNameEn
;
queryParams
.
rewardName
=
this
.
rewardsDetails
.
titleEn
;
}
this
.
memberList
.
push
(
item
);
this
.
queryParamsList
.
push
({
...
queryParams
});
}
});
}
},
handleSelectMember
()
{
this
.
dialogVisible
=
true
;
},
getExpressList
()
{
let
params
=
{
pageNo
:
1
,
pageSize
:
1000
,
};
getExpressPage
(
params
).
then
((
res
)
=>
{
this
.
expressList
=
res
.
data
.
list
;
});
},
getRewardsDetailsAPI
()
{
let
params
=
{
id
:
this
.
$route
.
query
.
rewardsID
,
};
getRewardsDetails
(
params
).
then
((
res
)
=>
{
this
.
rewardsDetails
=
res
.
data
;
});
},
handleBack
()
{
this
.
$store
.
dispatch
(
"
tagsView/delCurrentView
"
);
},
checkForm
(
formName
)
{
const
result
=
new
Promise
((
resolve
,
reject
)
=>
{
this
.
$refs
[
formName
][
0
].
validate
((
valid
)
=>
{
if
(
valid
)
{
resolve
();
}
else
{
reject
();
}
});
});
this
.
checkFormResult
.
push
(
result
);
},
handleBulkConversion
()
{
this
.
queryParamsList
.
forEach
((
element
)
=>
{
this
.
checkForm
(
`queryForm
${
element
.
memberId
}
`
);
});
Promise
.
all
(
this
.
checkFormResult
)
.
then
((
res
)
=>
{
this
.
checkFormResult
=
[];
let
params
=
this
.
queryParamsList
.
map
((
item
)
=>
{
if
(
item
.
redeemType
==
"
1
"
)
{
let
{
recipientAddress
,
expressNo
,
expressDate
,
courierCompany
,
...
itemNew
}
=
item
;
return
itemNew
;
}
else
{
return
item
;
}
});
bulkConversion
(
params
).
then
((
res
)
=>
{
if
(
res
.
code
==
"
0
"
)
{
this
.
queryParamsList
=
[];
this
.
memberList
=
[];
this
.
$message
.
success
(
this
.
$t
(
"
兑换成功
"
));
}
});
})
.
catch
(()
=>
{
this
.
checkFormResult
=
[];
this
.
$message
.
error
(
this
.
$t
(
"
兑换失败,请填写必要的信息
"
));
});
},
},
};
</
script
>
<
style
scoped
lang=
"scss"
>
.card-title
{
padding-right
:
10px
;
border-right
:
4px
solid
rgb
(
64
,
158
,
255
);
font-size
:
16px
;
font-weight
:
600
;
}
.del-btn
{
color
:
red
;
}
.app-container
.el-date-editor.el-input
,
.el-date-editor.el-input__inner
{
width
:
194px
;
}
.container
{
padding
:
20px
0
;
}
.emptyText
{
font-size
:
20px
;
padding
:
20px
;
line-height
:
200px
;
text-align
:
center
;
color
:
#97a8be
;
}
.handleButton
{
padding-right
:
160px
;
margin-top
:
50px
;
button
{
width
:
100%
;
}
}
</
style
>
src/views/ecw/giftManagement/components/operatingGift.vue
0 → 100644
View file @
7e0c1c55
<
template
>
<el-dialog
:title=
"$t(titleLabel)"
:visible=
"show"
@
close=
"close"
width=
"80%"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:rules=
"rules"
label-width=
"120px"
>
<el-row
:gutter=
"10"
>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('中文礼品名称')"
prop=
"titleZh"
>
<el-input
v-model.trim=
"queryParams.titleZh"
:placeholder=
"$t('请输入')"
:disabled=
"isDisable"
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('英文礼品名称')"
prop=
"titleEn"
>
<el-input
v-model.trim=
"queryParams.titleEn"
:disabled=
"isDisable"
:placeholder=
"$t('请输入')"
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"10"
>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('中文礼品图片')"
prop=
"number"
>
<image-upload
v-model=
"queryParams.imgZh"
:isShowEditButton=
"!isDisable"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('英文礼品图片')"
prop=
"number"
>
<image-upload
v-model=
"queryParams.imgEn"
:isShowEditButton=
"!isDisable"
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"10"
v-for=
"(item, index) in queryParams.nodeIds"
>
<el-col
:span=
"6"
>
<el-form-item
:label=
"$t('兑换网点')"
:prop=
"'nodeIds.' + index + '.nodeId'"
:rules=
"rules.nodeIds.nodeId"
>
<el-select
v-model=
"item.nodeId"
:placeholder=
"$t('请选择兑换网点')"
:disabled=
"isDisable"
clearable
size=
"small"
>
<el-option
v-for=
"nodeItem in nodeList"
:key=
"nodeItem.id"
:label=
"isChinese ? nodeItem.titleZh : nodeItem.titleEn"
:value=
"nodeItem.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"6"
>
<el-form-item
:label=
"$t('兑换积分')"
:prop=
"'nodeIds.' + index + 'points'"
:rules=
"rules.nodeIds.points"
>
<el-input
v-model.trim=
"item.points"
:placeholder=
"$t('请输入')"
:disabled=
"isDisable"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item
></el-col>
<el-col
:span=
"1"
>
<el-button
type=
"primary"
:icon=
"index == '0' ? 'el-icon-plus' : 'el-icon-minus'"
@
click=
"handleOrderVRule(item, index)"
></el-button>
</el-col>
</el-row>
<el-form-item
:label=
"$t('剩余数量')"
prop=
"quantityRemain"
>
<el-input
:disabled=
"isDisable && disabelEnableStatus"
v-model.trim=
"queryParams.quantityRemain"
:placeholder=
"$t('请输入')"
type=
"number"
/>
</el-form-item>
<el-form-item
:label=
"$t('活动时间')"
prop=
"dateRangeCreateTime"
>
<el-date-picker
:disabled=
"isDisable"
type=
"daterange"
clearable
placement=
"bottom-start"
v-model=
"queryParams.dateRangeCreateTime"
style=
"width: 400px"
value-format=
"yyyy-MM-dd HH:mm:ss"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
/>
</el-form-item>
<el-form-item
:label=
"$t('领取方式')"
prop=
"pickMethod"
>
<dict-selector
clearable
multiple
:disabled=
"isDisable"
:type=
"DICT_TYPE.WAY_OF_RECEIVING"
v-model=
"queryParams.pickMethod"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('允许兑换次数')"
prop=
"allowCount"
>
<el-input
v-model.trim=
"queryParams.allowCount"
:placeholder=
"$t('请输入')"
clearable
:disabled=
"isDisable"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-row
:gutter=
"10"
>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('中文备注')"
prop=
"remarkZh"
>
<el-input
type=
"textarea"
:disabled=
"isDisable && disabelEnableStatus"
height=
"100"
v-model=
"queryParams.remarkZh"
:placeholder=
"$t('请输入')"
></el-input>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('英文备注')"
prop=
"remarkEn"
>
<el-input
type=
"textarea"
:disabled=
"isDisable && disabelEnableStatus"
v-model=
"queryParams.remarkEn"
:placeholder=
"$t('请输入')"
></el-input>
</el-form-item>
</el-col>
</el-row>
<div>
<el-form-item
:label=
"$t('是否启用')"
prop=
"status"
v-if=
"title == '3'"
>
<el-radio-group
v-model=
"queryParams.status"
:disabled=
"isDisable"
>
<el-radio
v-for=
"dict in getDictDatas(DICT_TYPE.GIFT_ENABLE_STATUS)"
:key=
"dict.value"
:label=
"dict.value"
>
{{
$l
(
dict
,
"
label
"
)
}}
</el-radio
>
</el-radio-group>
</el-form-item>
<el-form-item
:label=
"$t('状态')"
prop=
"status"
v-else
>
<el-radio-group
v-model=
"queryParams.status"
:disabled=
"isDisable"
>
<el-radio
v-for=
"dict in getDictDatas(DICT_TYPE.GIFT_STATUS)"
:key=
"dict.value"
:label=
"Number(dict.value)"
>
{{
$l
(
dict
,
"
label
"
)
}}
</el-radio
>
</el-radio-group>
</el-form-item>
</div>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
v-if=
"!isDisable || !disabelEnableStatus"
>
<el-button
@
click=
"close"
>
{{
$t
(
"
取 消
"
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"submit"
>
{{
$t
(
"
确 定
"
)
}}
</el-button>
</div>
</el-dialog>
</
template
>
<
script
>
import
{
editRewards
,
addRewards
}
from
"
@/api/ecw/giftManagement
"
;
import
{
getDictDatas
,
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
imageUpload
from
"
@/components/ImageUpload
"
;
import
{
parseTime
,
resetForm
}
from
"
../../../../utils/ruoyi
"
;
import
{
deepClone
}
from
"
@/utils
"
;
export
default
{
name
:
"
operatingGift
"
,
props
:
{
title
:
{
type
:
String
,
default
:
""
,
},
show
:
{
type
:
Boolean
,
default
:
false
,
},
rewardsDetails
:
{
type
:
Object
,
default
:
()
=>
{
return
this
.
queryParams
;
},
},
nodeList
:
{
type
:
Array
,
default
:
()
=>
[],
},
},
components
:
{
imageUpload
,
},
computed
:
{
isChinese
()
{
return
this
.
$i18n
.
locale
===
"
zh_CN
"
;
},
isDisable
()
{
let
disableStatus
=
false
;
switch
(
this
.
title
)
{
case
"
1
"
:
disableStatus
=
true
;
this
.
disabelEnableStatus
=
true
;
break
;
case
"
2
"
:
if
(
this
.
queryParams
.
status
==
"
2
"
)
{
disableStatus
=
false
;
this
.
disabelEnableStatus
=
true
;
}
else
if
(
this
.
queryParams
.
status
==
"
1
"
)
{
disableStatus
=
true
;
this
.
disabelEnableStatus
=
false
;
}
else
{
disableStatus
=
true
;
this
.
disabelEnableStatus
=
true
;
}
break
;
case
"
3
"
:
disableStatus
=
false
;
break
;
}
return
disableStatus
;
},
titleLabel
()
{
let
titleLabelText
=
""
;
switch
(
this
.
title
)
{
case
"
1
"
:
titleLabelText
=
this
.
$t
(
"
查看礼品
"
);
break
;
case
"
2
"
:
titleLabelText
=
this
.
$t
(
"
编辑礼品
"
);
break
;
case
"
3
"
:
this
.
resetFormQuery
();
titleLabelText
=
this
.
$t
(
"
新增礼品
"
);
break
;
}
return
titleLabelText
;
},
},
watch
:
{
rewardsDetails
(
newVal
,
oldVal
)
{
if
(
JSON
.
stringify
(
newVal
)
!=
"
{}
"
)
{
this
.
queryParams
=
deepClone
(
newVal
);
this
.
queryParams
.
dateRangeCreateTime
=
[
parseTime
(
newVal
.
startTime
),
parseTime
(
newVal
.
endTime
),
];
this
.
queryParams
.
pickMethod
=
newVal
.
pickMethod
.
split
(
"
,
"
);
}
else
{
this
.
resetFormQuery
();
this
.
$refs
[
"
queryForm
"
].
resetFields
();
console
.
log
(
"
Prop is empty
"
);
}
},
},
data
()
{
return
{
queryParams
:
{
allowCount
:
null
,
endTime
:
null
,
imgEn
:
null
,
imgZh
:
null
,
nodeIds
:
[{
nodeId
:
""
,
points
:
""
}],
nodeId
:
null
,
pickMethod
:
null
,
pointsRequire
:
null
,
quantityRemain
:
null
,
remarkEn
:
null
,
remarkFr
:
null
,
remarkZh
:
null
,
startTime
:
null
,
status
:
null
,
titleEn
:
null
,
titleZh
:
null
,
dateRangeCreateTime
:
null
,
},
disabelEnableStatus
:
false
,
rules
:
{
titleZh
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入中文礼品名称
"
),
trigger
:
"
blur
"
,
},
{
min
:
0
,
max
:
50
,
message
:
this
.
$t
(
"
长度在 0 到 50 个字符
"
),
trigger
:
"
blur
"
,
},
],
titleEn
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入英文礼品名称
"
),
trigger
:
"
blur
"
,
},
{
min
:
0
,
max
:
50
,
message
:
this
.
$t
(
"
长度在 0 到 50 个字符
"
),
trigger
:
"
blur
"
,
},
],
nodeIds
:
{
nodeId
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请选择网点
"
),
trigger
:
"
change
"
,
},
],
points
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入兑换积分
"
),
trigger
:
"
blur
"
,
},
],
},
quantityRemain
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入剩余数量
"
),
trigger
:
"
blur
"
,
},
],
pickMethod
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请选择领取方式
"
),
trigger
:
"
change
"
,
},
],
allowCount
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入允许兑换次数
"
),
trigger
:
"
blur
"
,
},
],
remarkZh
:
[
{
min
:
0
,
max
:
500
,
message
:
this
.
$t
(
"
长度在 0 到 500 个字符
"
),
trigger
:
"
blur
"
,
},
],
remarkEn
:
[
{
min
:
0
,
max
:
500
,
message
:
this
.
$t
(
"
长度在 0 到 500 个字符
"
),
trigger
:
"
blur
"
,
},
],
status
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请选择是否启用
"
),
trigger
:
"
change
"
,
},
],
},
};
},
methods
:
{
handleOrderVRule
(
item
,
index
)
{
if
(
index
==
"
0
"
)
{
this
.
queryParams
.
nodeIds
.
push
({
nodeId
:
""
,
points
:
""
});
}
else
{
this
.
queryParams
.
nodeIds
.
splice
(
index
,
1
);
}
},
submit
()
{
let
params
=
{
...
this
.
queryParams
};
params
.
startTime
=
this
.
queryParams
.
dateRangeCreateTime
[
0
];
params
.
endTime
=
this
.
queryParams
.
dateRangeCreateTime
[
1
];
params
.
pickMethod
=
this
.
queryParams
.
pickMethod
.
toString
();
this
.
$refs
[
"
queryForm
"
].
validate
((
valid
)
=>
{
if
(
this
.
title
==
"
2
"
)
{
editRewards
(
params
).
then
((
res
)
=>
{
this
.
$emit
(
"
update:show
"
,
false
);
this
.
$message
.
success
(
this
.
$t
(
"
编辑成功
"
));
this
.
$refs
[
"
queryForm
"
].
resetFields
();
this
.
$parent
.
getList
();
});
}
else
{
//Add
addRewards
(
params
).
then
((
res
)
=>
{
this
.
$emit
(
"
update:show
"
,
false
);
this
.
$message
.
success
(
this
.
$t
(
"
成功
"
));
this
.
$refs
[
"
queryForm
"
].
resetFields
();
});
}
});
},
close
()
{
this
.
$emit
(
"
update:show
"
,
false
);
},
resetFormQuery
()
{
this
.
queryParams
=
{
allowCount
:
null
,
endTime
:
null
,
nodeIds
:
[{
nodeId
:
""
,
points
:
""
}],
imgEn
:
null
,
imgZh
:
null
,
nodeId
:
null
,
pickMethod
:
null
,
pointsRequire
:
null
,
quantityRemain
:
null
,
remarkEn
:
null
,
remarkFr
:
null
,
remarkZh
:
null
,
startTime
:
null
,
status
:
null
,
titleEn
:
null
,
titleZh
:
null
,
dateRangeCreateTime
:
null
,
};
},
},
};
</
script
>
src/views/ecw/giftManagement/index.vue
0 → 100644
View file @
7e0c1c55
<
template
>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form-item
:label=
"$t('礼品名称')"
>
<el-input
v-model.trim=
"queryParams.title"
:placeholder=
"$t('请输入礼品名称')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('兑换积分')"
>
<el-row
:gutter=
"10"
>
<el-col
:span=
"8"
>
<dict-selector
clearable
:type=
"DICT_TYPE.QUANTITATIVE_RELATION_SYMBOL"
v-model=
"queryParams.pointsRequireSymbol"
@
change=
"handleQuery"
>
</dict-selector>
</el-col>
<el-col
:span=
"16"
>
<el-input
v-model.trim=
"queryParams.pointsRequire"
:placeholder=
"$t('请输入数字')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-col>
</el-row>
</el-form-item>
<el-form-item
:label=
"$t('领取方式')"
prop=
"level"
>
<dict-selector
clearable
:type=
"DICT_TYPE.WAY_OF_RECEIVING"
v-model=
"queryParams.pickMethod"
@
change=
"handleQuery"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('兑换网点')"
prop=
"level"
>
<el-select
v-model=
"queryParams.nodeId"
:placeholder=
"$t('请选择兑换网点')"
clearable
size=
"small"
@
change=
"handleQuery"
>
<el-option
v-for=
"nodeItem in nodeList"
:key=
"nodeItem.id"
:label=
"isChinese ? nodeItem.titleZh : nodeItem.titleEn"
:value=
"nodeItem.id"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('状态')"
prop=
"level"
>
<dict-selector
clearable
:type=
"DICT_TYPE.GIFT_STATUS"
v-model=
"queryParams.status"
@
change=
"handleQuery"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('备注')"
prop=
"level"
>
<el-input
v-model.trim=
"queryParams.remark"
:placeholder=
"$t('请输入备注')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('剩余数量')"
>
<el-row
:gutter=
"10"
>
<el-col
:span=
"8"
>
<dict-selector
clearable
:type=
"DICT_TYPE.QUANTITATIVE_RELATION_SYMBOL"
v-model=
"queryParams.quantityRemainSymbol"
@
change=
"handleQuery"
>
</dict-selector>
</el-col>
<el-col
:span=
"16"
>
<el-input
v-model.trim=
"queryParams.quantityRemain"
:placeholder=
"$t('请输入数字')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-col>
</el-row>
</el-form-item>
<el-form-item
:label=
"$t('创建时间')"
>
<el-date-picker
type=
"datetimerange"
clearable
placement=
"bottom-start"
v-model=
"dateRangeCreateTime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd HH:mm:ss"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
"
搜索
"
)
}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
"
重置
"
)
}}
</el-button>
</el-form-item>
</el-form>
<el-row
class=
"mb8"
>
<el-button
type=
"success"
size=
"mini"
icon=
"el-icon-plus"
@
click=
"handleAddReward"
v-hasPermi=
"['ecw:giftManagement:add']"
>
{{
$t
(
"
添加礼品
"
)
}}
</el-button
>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
</el-row>
<!-- 礼品列表 -->
<el-table
ref=
"multipleTable"
v-loading=
"loading"
:data=
"list"
>
<el-table-column
width=
"140"
:label=
"$t('礼品ID')"
align=
"center"
prop=
"code"
></el-table-column>
<el-table-column
:label=
"$t('礼品名称')"
align=
"center"
>
<template
slot-scope=
"scope"
>
<el-button
type=
"text"
@
click=
"handleView(scope.row)"
>
{{
isChinese
?
scope
.
row
.
titleZh
:
scope
.
row
.
titleEn
}}
</el-button>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('图片')"
>
<
template
slot-scope=
"scope"
>
<el-image
:src=
"firstImg(isChinese ? scope.row.imgZh : scope.row.imgEn)"
style=
"width: 50px; height: 50px"
>
{{
$t
(
"
无
"
)
}}
</el-image
>
</
template
>
</el-table-column>
<el-table-column
width=
"100"
:label=
"$t('开始日期')"
>
<
template
v-slot=
"{ row }"
>
{{
parseTime
(
row
.
startTime
,
"
{y
}
-{m
}
-{d
}
"
)
||
"
/
"
}}
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
width
=
"
100
"
:
label
=
"
$t('结束日期')
"
>
<
template
v
-
slot
=
"
{ row
}
"
>
{{
parseTime
(
row
.
endTime
,
"
{y
}
-{m
}
-{d
}
"
)
||
"
/
"
}}
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('兑换积分')
"
prop
=
"
pointsRequire
"
><
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('领取方式')
"
align
=
"
center
"
prop
=
"
pickMethod
"
>
<
template
v
-
slot
=
"
{ row
}
"
>
{{
handlePickMethod
(
row
.
pickMethod
)
}}
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('兑换网点')
"
align
=
"
center
"
>
<
template
v
-
slot
=
"
{ row
}
"
>
{{
isChinese
?
handleExchangeNodeId
(
row
.
nodeId
).
titleZh
:
handleExchangeNodeId
(
row
.
nodeId
).
titleEn
}}
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('允许兑换次数')
"
align
=
"
center
"
prop
=
"
allowCount
"
><
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('状态')
"
>
<
template
slot
-
scope
=
"
{ row
}
"
>
{{
isChinese
?
handleRewardsStatus
(
row
.
status
).
label
:
handleRewardsStatus
(
row
.
status
).
labelEn
}}
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('备注')
"
align
=
"
center
"
width
=
"
200
"
>
<
template
slot
-
scope
=
"
{ row
}
"
>
<
el
-
tooltip
popper
-
class
=
"
rewardstToolTip
"
:
content
=
"
isChinese ? row.remarkZh : remarkEn
"
placement
=
"
top
"
>
<
div
style
=
"
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
"
>
{{
isChinese
?
row
.
remarkZh
:
remarkEn
}}
<
/div
>
<
/el-tooltip
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('已兑换次数')
"
align
=
"
center
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
el
-
button
type
=
"
text
"
@
click
=
"
$router.push('/memberManagement/exchangeRecord')
"
>
{{
scope
.
row
.
exchangeCount
}}
<
/el-butto
n
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('剩余次数')
"
align
=
"
center
"
prop
=
"
quantityRemain
"
><
/el-table-column
>
<
el
-
table
-
column
width
=
"
220px
"
align
=
"
center
"
:
label
=
"
$t('操作')
"
class
-
name
=
"
small-padding fixed-width
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
el
-
button
size
=
"
mini
"
type
=
"
text
"
icon
=
"
el-icon-view
"
@
click
=
"
handleView(scope.row)
"
v
-
hasPermi
=
"
['ecw:giftManagement:check']
"
>
{{
$t
(
"
查看
"
)
}}
<
/el-butto
n
>
<
el
-
button
size
=
"
mini
"
type
=
"
text
"
icon
=
"
el-icon-edit
"
@
click
=
"
handleCloseStatus(scope.row)
"
:
disabled
=
"
scope.row.status == '2'
"
v
-
hasPermi
=
"
['ecw:giftManagement:close']
"
>
{{
$t
(
"
关闭
"
)
}}
<
/el-butto
n
>
<
el
-
button
size
=
"
mini
"
type
=
"
text
"
icon
=
"
el-icon-edit
"
@
click
=
"
copyRewards(scope.row)
"
v
-
hasPermi
=
"
['ecw:giftManagement:copy']
"
>
{{
$t
(
"
复制
"
)
}}
<
/el-butto
n
>
<
el
-
button
size
=
"
mini
"
type
=
"
text
"
icon
=
"
el-icon-edit
"
@
click
=
"
handlePostpone(scope.row)
"
:
disabled
=
"
scope.row.status != '1'
"
v
-
hasPermi
=
"
['ecw:giftManagement:postpone']
"
>
{{
$t
(
"
延期
"
)
}}
<
/el-butto
n
>
<
el
-
button
size
=
"
mini
"
type
=
"
text
"
icon
=
"
el-icon-delete
"
@
click
=
"
handleDelete(scope.row)
"
:
disabled
=
"
scope.row.status != '2'
"
v
-
hasPermi
=
"
['ecw:giftManagement:delete']
"
>
{{
$t
(
"
删除
"
)
}}
<
/el-butto
n
>
<
el
-
button
size
=
"
mini
"
v
-
has
-
permi
=
"
['ecw:giftManagement:edit']
"
type
=
"
text
"
:
disabled
=
"
scope.row.status != '2' && scope.row.status != '1'
"
icon
=
"
el-icon-collection
"
@
click
=
"
editRewards(scope.row)
"
>
{{
$t
(
"
编辑
"
)
}}
<
/el-butto
n
>
<
el
-
button
size
=
"
mini
"
v
-
has
-
permi
=
"
['ecw:giftManagement:enable']
"
type
=
"
text
"
icon
=
"
el-icon-user
"
@
click
=
"
handleLaunchRewards(scope.row)
"
>
{{
$t
(
"
启用
"
)
}}
<
/el-butto
n
>
<
el
-
button
:
disabled
=
"
scope.row.isInOpenSea
"
v
-
has
-
permi
=
"
['ecw:giftManagement:exchange']
"
size
=
"
mini
"
type
=
"
text
"
icon
=
"
el-icon-user
"
@
click
=
"
handleExchange(scope.row)
"
>
{{
$t
(
"
兑换
"
)
}}
<
/el-butto
n
>
<
/template
>
<
/el-table-column
>
<
/el-table
>
<!--
//分页列表 -->
<
pagination
v
-
show
=
"
total > 0
"
:
total
=
"
total
"
:
page
.
sync
=
"
queryParams.page
"
:
limit
.
sync
=
"
queryParams.rows
"
@
pagination
=
"
getList
"
/>
<!--
查看
编辑
新增弹窗
-->
<
operating
-
gift
ref
=
"
operatingGift
"
:
title
=
"
operatingPagetitle
"
:
rewardsDetails
=
"
rewardsItem
"
:
show
.
sync
=
"
dialogVisible
"
:
nodeList
=
"
nodeList
"
>
<
/operating-gift
>
<
el
-
dialog
:
title
=
"
$t('提示')
"
:
visible
.
sync
=
"
dialogPostponeVisible
"
width
=
"
30%
"
>
<
el
-
row
class
=
"
mb8
"
>
{{
$t
(
"
请选择延期时间
"
)
}}
<
/el-row
>
<
el
-
date
-
picker
type
=
"
datetime
"
clearable
v
-
model
=
"
postponeDatetime
"
style
=
"
width: 240px
"
value
-
format
=
"
yyyy-MM-dd HH:mm:ss
"
:
picker
-
options
=
"
pickerOptions
"
:
placeholder
=
"
$t('请选择时间')
"
><
/el-date-picker
>
<
span
slot
=
"
footer
"
class
=
"
dialog-footer
"
>
<
el
-
button
@
click
=
"
dialogPostponeVisible = false
"
>
{{
$t
(
"
取 消
"
)
}}
<
/el-button
>
<
el
-
button
type
=
"
primary
"
@
click
=
"
confirmPostponeRewards
"
>
{{
$t
(
"
确 定
"
)
}}
<
/el-button
>
<
/span
>
<
/el-dialog
>
<
/div
>
<
/template
>
<
script
>
import
{
getNodeList
,
getGiftList
,
deleteRewards
,
copyRewardsAPI
,
changeRewardsStatus
,
delayRewards
,
}
from
"
@/api/ecw/giftManagement
"
;
import
{
getDictDatas
,
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
{
parseTime
}
from
"
../../../utils/ruoyi
"
;
import
OperatingGift
from
"
@/views/ecw/giftManagement/components/operatingGift.vue
"
;
import
{
uploadFile
}
from
"
@/api/infra/file
"
;
import
ImageUpload
from
"
@/components/ImageUpload
"
;
export
default
{
name
:
"
giftManagementList
"
,
components
:
{
OperatingGift
,
}
,
data
()
{
return
{
env
:
process
.
env
.
NODE_ENV
,
// 遮罩层
loading
:
true
,
// 导出遮罩层
exportLoading
:
false
,
// 显示搜索条件
showSearch
:
true
,
// 总条数
total
:
0
,
// 礼品列表
list
:
[],
// 弹出层标题
operatingPagetitle
:
""
,
// 是否显示弹出层
dialogVisible
:
false
,
rewardsItem
:
{
}
,
dateRangeCreateTime
:
[],
postponeDatetime
:
""
,
postponeRewardsID
:
""
,
dialogPostponeVisible
:
false
,
// 查询参数
queryParams
:
{
page
:
1
,
rows
:
10
,
title
:
null
,
pointsRequire
:
null
,
pointsRequireSymbol
:
null
,
pickMethod
:
null
,
nodeId
:
null
,
status
:
null
,
remark
:
null
,
quantityRemainSymbol
:
null
,
quantityRemain
:
null
,
beginCreateTime
:
null
,
endCreateTime
:
null
,
}
,
// 网点
nodeList
:
[],
pickerOptions
:
{
disabledDate
(
time
)
{
return
time
.
getTime
()
<
Date
.
now
()
-
8.64e7
;
}
,
}
,
}
;
}
,
computed
:
{
isChinese
()
{
return
this
.
$i18n
.
locale
===
"
zh_CN
"
;
}
,
}
,
created
()
{
this
.
getList
();
this
.
getNodeList
();
}
,
activated
()
{
this
.
getList
();
}
,
methods
:
{
arraysEqual
(
arr1
,
arr2
)
{
return
arr1
.
filter
((
current
)
=>
{
return
arr2
.
find
((
item
)
=>
item
==
current
.
value
.
toString
())
?
true
:
false
;
}
);
}
,
handleRewardsStatus
(
status
)
{
return
this
.
getDictDatas
(
DICT_TYPE
.
GIFT_STATUS
).
filter
(
(
dicItem
)
=>
dicItem
.
value
.
toString
()
==
status
)[
0
];
}
,
firstImg
(
imgString
)
{
if
(
!
imgString
||
imgString
==
""
)
return
imgString
;
let
imgs
=
imgString
.
split
(
"
,
"
);
return
imgs
.
length
?
imgs
[
0
]
:
null
;
}
,
handlePickMethod
(
pickMethod
)
{
let
pickMethodLabel
=
[];
if
(
this
.
isChinese
)
{
this
.
arraysEqual
(
this
.
getDictDatas
(
DICT_TYPE
.
WAY_OF_RECEIVING
),
pickMethod
.
split
(
"
,
"
)
).
forEach
((
element
)
=>
{
pickMethodLabel
.
push
(
element
.
label
);
}
);
}
else
{
this
.
arraysEqual
(
this
.
getDictDatas
(
DICT_TYPE
.
WAY_OF_RECEIVING
),
pickMethod
.
split
(
"
,
"
)
).
forEach
((
element
)
=>
{
pickMethodLabel
.
push
(
element
.
labelEn
);
}
);
}
return
pickMethodLabel
.
join
();
}
,
handleExchangeNodeId
(
nodeId
)
{
return
this
.
nodeList
.
filter
((
nodeItem
)
=>
nodeItem
.
id
==
nodeId
)[
0
];
}
,
handleAddReward
()
{
this
.
rewardsItem
=
{
}
;
this
.
dialogVisible
=
true
;
this
.
operatingPagetitle
=
"
3
"
;
}
,
handleExchange
(
row
)
{
this
.
$router
.
push
({
path
:
"
/giftManagement/bulkExchange
"
,
query
:
{
rewardsID
:
row
.
id
}
,
}
);
}
,
/** 延期按钮操作 */
handlePostpone
(
row
)
{
this
.
postponeRewardsID
=
row
.
id
;
this
.
dialogPostponeVisible
=
true
;
}
,
confirmPostponeRewards
()
{
this
.
dialogPostponeVisible
=
false
;
delayRewards
({
id
:
this
.
postponeRewardsID
,
endTime
:
this
.
postponeDatetime
,
}
).
then
((
res
)
=>
{
this
.
getList
();
this
.
$message
.
success
(
this
.
$t
(
"
延期成功
"
));
}
);
}
,
/** 关闭按钮操作 */
handleCloseStatus
(
row
)
{
this
.
$confirm
(
this
.
$t
(
"
是否关闭当前礼品?
"
),
this
.
$t
(
"
提示
"
),
{
confirmButtonText
:
this
.
$t
(
"
确定
"
),
cancelButtonText
:
this
.
$t
(
"
取消
"
),
type
:
"
warning
"
,
}
)
.
then
((
_
)
=>
{
return
changeRewardsStatus
({
id
:
row
.
id
,
status
:
"
3
"
}
);
}
)
.
then
((
res
)
=>
{
this
.
getList
();
this
.
$message
.
success
(
this
.
$t
(
"
关闭成功
"
));
}
)
.
catch
((
_
)
=>
{
// this.queryAllData();
}
);
}
,
//启用礼品状态
handleLaunchRewards
(
row
)
{
this
.
$confirm
(
this
.
$t
(
"
是否启用当前礼品?
"
),
this
.
$t
(
"
提示
"
),
{
confirmButtonText
:
this
.
$t
(
"
确定
"
),
cancelButtonText
:
this
.
$t
(
"
取消
"
),
type
:
"
warning
"
,
}
)
.
then
(()
=>
{
changeRewardsStatus
({
id
:
row
.
id
,
status
:
"
1
"
}
).
then
((
r
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
启用成功
"
));
this
.
getList
();
}
);
}
)
.
catch
(()
=>
{
}
);
}
,
getNodeList
()
{
getNodeList
().
then
((
res
)
=>
{
this
.
nodeList
=
res
.
data
;
}
);
}
,
getList
()
{
this
.
loading
=
true
;
// 处理查询参数
let
params
=
{
...
this
.
queryParams
}
;
this
.
addBeginAndEndTime
(
params
,
this
.
dateRangeCreateTime
,
"
createTime
"
,
false
);
getGiftList
(
params
).
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
list
=
res
.
data
.
list
;
this
.
total
=
res
.
data
.
total
;
}
);
}
,
// 新增潜在客户
handleAddPotential
()
{
this
.
$refs
.
potentialCustom
.
dialogTableVisible
=
true
;
}
,
/** 删除按钮操作 */
handleDelete
(
row
)
{
this
.
$modal
.
confirm
(
this
.
$t
(
"
是否确认删除此礼品
"
))
.
then
(
function
()
{
return
deleteRewards
({
id
:
row
.
id
}
);
}
)
.
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
删除成功
"
));
}
)
.
catch
(()
=>
{
}
);
}
,
/** 搜索按钮操作 */
handleQuery
()
{
this
.
$nextTick
(()
=>
{
this
.
queryParams
.
page
=
1
;
this
.
getList
();
}
);
}
,
/** 查看按钮操作 */
handleView
(
row
)
{
this
.
dialogVisible
=
true
;
this
.
operatingPagetitle
=
"
1
"
;
this
.
rewardsItem
=
row
;
}
,
/** 编辑按钮操作 */
editRewards
(
row
)
{
this
.
dialogVisible
=
true
;
this
.
operatingPagetitle
=
"
2
"
;
this
.
rewardsItem
=
row
;
}
,
/** 复制按钮操作 */
copyRewards
(
row
)
{
copyRewardsAPI
(
row
.
id
).
then
((
res
)
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
复制成功
"
));
this
.
handleQuery
();
}
);
}
,
/** 重置按钮操作 */
resetQuery
()
{
this
.
dateRangeCreateTime
=
[];
this
.
queryParams
=
{
page
:
1
,
rows
:
10
,
number
:
null
,
name
:
null
,
level
:
null
,
source
:
null
,
customerService
:
null
,
status
:
null
,
department
:
null
,
creditLevel
:
null
,
country
:
null
,
memberCode
:
null
,
memberName
:
null
,
memberMobile
:
null
,
memberAreaCode
:
null
,
}
;
this
.
handleQuery
();
}
,
}
,
}
;
<
/script
>
<
style
>
.
rewardstToolTip
{
max
-
width
:
90
%
;
}
<
/style
>
src/views/ecw/memberManagement/addIntegrationRuleOperation/index.vue
0 → 100644
View file @
7e0c1c55
<
template
>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:rules=
"rules"
:disabled=
"showViewTime"
label-width=
"120px"
>
<el-form-item
:label=
"$t('指标类型')"
prop=
"type"
>
<dict-selector
clearable
:type=
"DICT_TYPE.SCORE_RULE_TYPE"
v-model=
"queryParams.type"
>
</dict-selector>
</el-form-item>
<el-row
:gutter=
"10"
>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('中文标题')"
prop=
"titleZh"
>
<el-input
style=
"width: 300px"
v-model.trim=
"queryParams.titleZh"
:placeholder=
"$t('请输入查找')"
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
<el-button
size=
"mini"
type=
"text"
style=
"margin-left: 10px"
v-if=
"queryParams.type == '4' && !showViewTime"
@
click=
"handleSelectBannerDialog()"
>
{{
$t
(
"
选择
"
)
}}
</el-button
>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('英文标题')"
prop=
"titleEn"
>
<el-input
style=
"width: 300px"
v-model.trim=
"queryParams.titleEn"
:placeholder=
"$t('请输入查找')"
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item
></el-col>
</el-row>
<el-row
:gutter=
"10"
>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('中文封面图')"
prop=
"coverImageZh"
>
<image-upload
v-model=
"queryParams.coverImageZh"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('英文封面图')"
prop=
"coverImageEn"
>
<image-upload
v-model=
"queryParams.coverImageEn"
/>
</el-form-item>
</el-col>
</el-row>
<!--分享活动内容 -->
<el-form-item
:label=
"$t('中文活动内容')"
prop=
"extraShare.activityDescZh"
v-if=
"queryParams.type == '4'"
>
<editor
:readOnly=
"showViewTime"
:class=
"
{ readOnlyEditor: showViewTime }"
v-model="queryParams.extraShare.activityDescZh"
:min-height="150"
/>
</el-form-item>
<el-form-item
:label=
"$t('英文活动内容')"
prop=
"extraShare.activityDescEn"
v-if=
"queryParams.type == '4'"
>
<editor
:class=
"
{ readOnlyEditor: showViewTime }"
:readOnly="showViewTime"
v-model="queryParams.extraShare.activityDescEn"
:min-height="150"
/>
</el-form-item>
<!-- 链接 -->
<el-form-item
:label=
"$t('活动链接')"
v-if=
"queryParams.type == '4'"
>
<el-input
v-model=
"queryParams.extraShare.activityUrl"
:placeholder=
"$t('请输入活动链接')"
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<!-- 推荐分享文案 -->
<el-row
:gutter=
"10"
v-if=
"queryParams.type == '3'"
>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('中文分享文案 ')"
prop=
"extraRecommend.shareContentZh"
>
<el-input
type=
"textarea"
style=
"width: 300px"
v-model.trim=
"queryParams.extraRecommend.shareContentZh"
:placeholder=
"$t('请输入分享文案')"
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item
></el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('英文分享文案')"
prop=
"extraRecommend.shareContentEn"
>
<el-input
type=
"textarea"
style=
"width: 300px"
v-model.trim=
"queryParams.extraRecommend.shareContentEn"
:placeholder=
"$t('请输入分享文案')"
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item
></el-col>
</el-row>
<el-form-item
v-if=
"queryParams.type == '1'"
:label=
"$t('首单')"
>
<el-radio-group
v-model=
"queryParams.extraOrderV.firstOrder"
>
<el-radio
v-for=
"dict in getDictDatas(DICT_TYPE.YES_OR_NO)"
:key=
"dict.value"
:label=
"dict.value"
>
{{
$l
(
dict
,
"
label
"
)
}}
</el-radio
>
</el-radio-group>
</el-form-item>
<el-form-item
:label=
"$t('运输方式')"
v-if=
"queryParams.type == '1'"
prop=
"extraOrderV.transportType"
>
<dict-selector
clearable
:type=
"DICT_TYPE.TRANSPORT_TYPE"
v-model=
"queryParams.extraOrderV.transportType"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('提货点')"
v-if=
"queryParams.type == '1'"
prop=
"extraOrderV.receiveAddrList"
>
<el-cascader
v-if=
"cascaderState"
style=
"width: 400px"
:options=
"regionTreeList"
v-model=
"queryParams.extraOrderV.receiveAddrList"
:props=
"cascaderProps"
clearable
></el-cascader>
</el-form-item>
<el-form-item
:label=
"$t('渠道')"
v-if=
"queryParams.extraOrderV.transportType == '3'"
>
<el-select
v-model=
"queryParams.channel"
multiple
placeholder=
"请选择"
>
<el-option
v-for=
"item in channelList"
:key=
"item.channelId"
:label=
"isChinese ? item.nameZh : item.nameEn"
:value=
"item.channelId"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('积分规则')"
v-if=
"queryParams.type == '1'"
required
>
<el-row
type=
"flex"
justify=
"start"
v-for=
"(item, index) in queryParams.extraOrderV.orderVRule"
>
<el-col
:span=
"2"
>
<el-form-item
:prop=
"'extraOrderV.orderVRule.' + index + '.low'"
:rules=
"rules.extraOrderV.orderVRule.low"
>
<el-input
style=
"width: 100px"
v-model.number=
"item.low"
></el-input
></el-form-item>
</el-col>
<el-col
:span=
"1"
>
{{
queryParams
.
extraOrderV
.
transportType
==
"
3
"
?
"
kg
"
:
"
m³
"
}}
{{
$t
(
"
至
"
)
}}
</el-col>
<el-col
:span=
"2"
>
<el-form-item
:prop=
"'extraOrderV.orderVRule.' + index + '.high'"
:rules=
"rules.extraOrderV.orderVRule.high"
>
<el-input
style=
"width: 100px"
v-model.number=
"item.high"
></el-input>
</el-form-item
></el-col>
<el-col
:span=
"1"
>
{{
queryParams
.
extraOrderV
.
transportType
==
"
3
"
?
"
kg
"
:
"
m³
"
}}
=
</el-col>
<el-col
:span=
"2"
>
<el-form-item
:prop=
"'extraOrderV.orderVRule.' + index + '.score'"
:rules=
"rules.extraOrderV.orderVRule.score"
><el-input
style=
"width: 100px"
v-model.number=
"item.score"
></el-input
></el-form-item>
</el-col>
<el-col
:span=
"1"
>
{{
$t
(
"
积分
"
)
}}
</el-col>
<el-col
:span=
"1"
>
<el-button
type=
"primary"
:icon=
"index == '0' ? 'el-icon-plus' : 'el-icon-minus'"
@
click=
"handleOrderVRule(item, index)"
></el-button>
</el-col>
</el-row>
</el-form-item>
<!-- 除v值之外的积分规则 -->
<el-form-item
v-if=
"queryParams.type != '1'"
:label=
"$t('积分规则')"
prop=
"getScoreOnce"
>
<el-input
style=
"width: 300px"
v-model.number=
"queryParams.getScoreOnce"
:placeholder=
"$t('请输入数字')"
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
v-if=
"queryParams.type != '2'"
:label=
"$t('累计最高积分')"
>
<el-input
style=
"width: 300px"
v-model.number=
"queryParams.maxScoreTotal"
:placeholder=
"$t('请输入累计最高积分')"
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
v-if=
"queryParams.type == '1'"
:label=
"$t('订单入口')"
prop=
"extraOrderV.orderEntry"
>
<dict-selector
clearable
:multiple=
"true"
:type=
"DICT_TYPE.PLATFORM_TYPE"
v-model=
"queryParams.extraOrderV.orderEntry"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('活动有效期')"
prop=
"dateRangeCreateTime"
:rules=
"rules.dateRangeCreateTime"
>
<el-date-picker
type=
"daterange"
clearable
placement=
"bottom-start"
v-model=
"queryParams.dateRangeCreateTime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd HH:mm:ss"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
/>
</el-form-item>
<el-form-item
:label=
"$t('积分有效期')"
prop=
"scorePeriod"
>
<el-input
v-model.number=
"queryParams.scorePeriod"
:placeholder=
"$t('请输入积分有效期天数')"
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('排序')"
prop=
"orderNum"
>
<el-input
v-model.number=
"queryParams.orderNum"
:placeholder=
"$t('请输入排序')"
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-row
:gutter=
"10"
>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('中文规则说明')"
prop=
"descZh"
>
<el-input
type=
"textarea"
v-model=
"queryParams.descZh"
></el-input>
</el-form-item>
<span
class=
"del-btn"
>
{{
$t
(
"
注:此说明用于展示给会员查看积分原因,请规范填写
"
)
}}
</span>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('英文规则说明')"
prop=
"descEn"
>
<el-input
type=
"textarea"
v-model=
"queryParams.descEn"
></el-input>
</el-form-item>
<span
class=
"del-btn"
>
{{
$t
(
"
注:此说明用于展示给会员查看积分原因,请规范填写
"
)
}}
</span>
</el-col>
</el-row>
<el-form-item
:label=
"$t('是否推送')"
prop=
"pushActivity"
>
<el-radio-group
v-model=
"queryParams.pushActivity"
>
<el-radio
v-for=
"dict in getDictDatas(DICT_TYPE.YES_OR_NO)"
:key=
"dict.value"
:label=
"dict.value"
>
{{
$l
(
dict
,
"
label
"
)
}}
</el-radio
>
</el-radio-group>
</el-form-item>
<el-form-item
:label=
"$t('展示平台')"
>
<dict-selector
clearable
formType=
"checkbox"
:multiple=
"true"
:type=
"DICT_TYPE.PLATFORM_TYPE"
v-model=
"queryParams.showPlatform"
>
</dict-selector>
</el-form-item>
<el-form-item
v-if=
"queryParams.type == '2'"
:label=
"$t('注册平台')"
prop=
"extraRegister.registerPlatform"
>
<dict-selector
clearable
:multiple=
"true"
:type=
"DICT_TYPE.CLIENT_PLATFORM"
v-model=
"queryParams.extraRegister.registerPlatform"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('是否分享')"
prop=
"extraRecommend.shareStatus"
v-if=
"queryParams.type == '3'"
>
<el-radio-group
v-model=
"queryParams.extraRecommend.shareStatus"
>
<el-radio
v-for=
"dict in getDictDatas(DICT_TYPE.YES_OR_NO)"
:key=
"dict.value"
:label=
"dict.value"
>
{{
$l
(
dict
,
"
label
"
)
}}
</el-radio
>
</el-radio-group>
</el-form-item>
<el-form-item
:label=
"$t('是否分享')"
prop=
"extraShare.shareStatus"
v-if=
"queryParams.type == '4'"
>
<el-radio-group
v-model=
"queryParams.extraShare.shareStatus"
>
<el-radio
v-for=
"dict in getDictDatas(DICT_TYPE.YES_OR_NO)"
:key=
"dict.value"
:label=
"dict.value"
>
{{
$l
(
dict
,
"
label
"
)
}}
</el-radio
>
</el-radio-group>
</el-form-item>
<!-- 编辑相关内容 -->
<div
v-if=
"showViewTime"
>
<el-form-item
:label=
"$t('创建人')"
>
<el-input
v-model.number=
"queryParams.creator"
:placeholder=
"$t('请输入创建人')"
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('创建时间')"
>
<el-date-picker
type=
"date"
:placeholder=
"$t('选择创建时间')"
v-model=
"queryParams.createTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
placement=
"bottom-start"
></el-date-picker>
</el-form-item>
<el-form-item
:label=
"$t('最后更新人')"
>
<el-input
v-model.number=
"queryParams.updater"
:placeholder=
"$t('请输入最后更新人')"
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('最后更新时间')"
>
<el-date-picker
type=
"date"
:placeholder=
"$t('选择最后更新时间')"
v-model=
"queryParams.updateTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
placement=
"bottom-start"
></el-date-picker>
</el-form-item>
</div>
</el-form>
<el-row
justify=
"end"
:gutter=
"20"
type=
"flex"
>
<el-col
:span=
"3"
v-if=
"$route.query.pageStatus == 'new'"
>
<el-button
type=
"primary"
@
click=
"handleSaveIntegralRule"
style=
"width: 100%"
>
{{
$t
(
"
保存
"
)
}}
</el-button
>
</el-col>
<el-col
:span=
"3"
v-if=
"$route.query.pageStatus == 'new'"
>
<el-button
type=
"primary"
style=
"width: 100%"
@
click=
"handleEnableIntegralRule"
>
{{
$t
(
"
保存并启用
"
)
}}
</el-button
>
</el-col>
<el-col
:span=
"3"
v-if=
"$route.query.pageStatus == 'edit'"
>
<el-button
type=
"primary"
style=
"width: 100%"
@
click=
"handleUpdatedIntegralRule"
>
{{
$t
(
"
更新
"
)
}}
</el-button
>
</el-col>
<el-col
:span=
"3"
>
<el-button
type=
"primary"
style=
"width: 100%"
@
click=
"handleResetIntegralRule"
>
{{
$t
(
"
重置
"
)
}}
</el-button
>
</el-col>
<el-col
:span=
"3"
>
<el-button
style=
"width: 100%"
type=
"primary"
@
click=
"handleGoBack"
>
{{
$t
(
"
返回
"
)
}}
</el-button>
</el-col>
</el-row>
<!-- 选择广告弹窗 -->
<el-dialog
:title=
"$t('选择广告')"
:visible.sync=
"dialogVisible"
width=
"50%"
>
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table-column
label=
""
align=
"center"
prop=
"id"
/>
<el-table-column
:label=
"$t('标题')"
align=
"center"
prop=
"titleZh"
/>
<el-table-column
:label=
"$t('WEB端图片')"
align=
"center"
prop=
"bannerUrlWeb"
>
<template
slot-scope=
"scope"
>
<el-image
:src=
"scope.row.bannerUrlWeb"
></el-image>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('APP端图片')"
align=
"center"
prop=
"bannerUrlApp"
>
<
template
slot-scope=
"scope"
>
<el-image
:src=
"scope.row.bannerUrlApp"
></el-image>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('状态')"
align=
"center"
prop=
"status"
>
<
template
slot-scope=
"scope"
>
<span>
{{
statusName
(
scope
.
row
.
status
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('创建时间')"
align=
"center"
prop=
"createTime"
width=
"180"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('操作')"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"text"
@
click=
"handleSelectAdvertising(scope.row)"
>
{{
$t
(
"
选择
"
)
}}
</el-button
>
</
template
>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
</el-dialog>
</div>
</template>
<
script
>
import
{
CommonStatusEnum
}
from
"
@/utils/constants
"
;
import
{
getBannerPage
}
from
"
@/api/ecw/banner
"
;
import
Editor
from
"
@/components/Editor
"
;
import
{
getDictDatas
,
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
{
getRegionTreeList
,
getChannelList
,
createIntegralRule
,
integralRuleDetails
,
integralRuleUpdated
,
}
from
"
@/api/ecw/memberManagement
"
;
import
{
deepClone
}
from
"
@/utils/index
"
;
import
ImageUpload
from
"
@/components/ImageUpload
"
;
import
{
parseTime
}
from
"
@/utils/ruoyi
"
;
import
{
isNumber
}
from
"
min-dash
"
;
import
{
mergeWith
}
from
"
lodash
"
;
export
default
{
name
:
"
addIntegrationRuleOperation
"
,
components
:
{
ImageUpload
,
Editor
,
},
data
()
{
const
validatePass2
=
(
rule
,
value
,
callback
)
=>
{
const
index
=
Number
(
rule
.
field
.
split
(
"
.
"
)[
2
]);
if
(
index
==
"
0
"
)
{
if
(
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
].
low
>=
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
].
high
&&
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
].
high
)
{
callback
(
this
.
$t
(
"
开始积分应小于本次最终积分
"
));
}
else
{
callback
();
}
}
else
if
(
index
>
"
0
"
)
{
if
(
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
].
low
>=
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
].
high
&&
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
].
high
)
{
callback
(
this
.
$t
(
"
开始积分应小于本次最终积分
"
));
}
else
if
(
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
].
low
<=
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
-
1
].
high
)
{
callback
(
this
.
$t
(
"
开始积分应大于上一次最终积分
"
));
}
else
{
callback
();
}
}
else
{
callback
();
}
};
const
validatehigh
=
(
rule
,
value
,
callback
)
=>
{
const
index
=
Number
(
rule
.
field
.
split
(
"
.
"
)[
2
]);
if
(
index
==
"
0
"
)
{
if
(
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
].
low
&&
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
].
low
>=
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
].
high
)
{
callback
(
this
.
$t
(
"
本次最终积分应大于本次开始积分
"
));
}
else
if
(
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
+
1
]
&&
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
+
1
].
low
&&
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
+
1
].
low
<=
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
].
high
)
{
callback
(
this
.
$t
(
"
本次最终积分应小于下一次开始积分
"
));
}
else
{
callback
();
}
}
else
if
(
index
>
"
0
"
)
{
if
(
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
].
low
&&
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
].
low
>=
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
].
high
)
{
callback
(
this
.
$t
(
"
本次最终积分应大于本次开始积分
"
));
}
else
if
(
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
].
high
<=
this
.
queryParams
.
extraOrderV
.
orderVRule
[
index
+
1
].
low
)
{
callback
(
this
.
$t
(
"
本次最终积分应小于下一次开始积分
"
));
}
else
{
callback
();
}
}
else
{
callback
();
}
};
return
{
//查看显示时间详情
showViewTime
:
false
,
CommonStatusEnum
:
CommonStatusEnum
,
statusDictDatas
:
getDictDatas
(
DICT_TYPE
.
COMMON_STATUS
),
loading
:
true
,
total
:
0
,
// 广告设置列表
list
:
[],
queryadvertisingParams
:
{
pageNo
:
1
,
pageSize
:
10
,
titleZh
:
null
,
titleEn
:
null
,
contentZh
:
null
,
contentEn
:
null
,
bannerUrlWeb
:
null
,
bannerUrlApp
:
null
,
status
:
null
,
},
cascaderState
:
true
,
channelList
:
[],
regionTreeList
:
[],
dialogVisible
:
false
,
rules
:
{
pushActivity
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请选择是否推送
"
),
trigger
:
"
change
"
,
},
],
getScoreOnce
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入积分规则
"
),
trigger
:
"
blur
"
,
},
{
type
:
"
number
"
,
message
:
this
.
$t
(
"
请输入整数
"
),
trigger
:
"
blur
"
,
},
],
descEn
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入英文规则说明
"
),
trigger
:
"
blur
"
,
},
],
descZh
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入中文规则说明
"
),
trigger
:
"
blur
"
,
},
],
titleZh
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入中文标题
"
),
trigger
:
"
blur
"
,
},
],
titleEn
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入中文标题
"
),
trigger
:
"
blur
"
,
},
],
orderNum
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入排序
"
),
trigger
:
"
blur
"
,
},
{
type
:
"
number
"
,
message
:
this
.
$t
(
"
请输入整数
"
),
trigger
:
"
blur
"
,
},
],
scorePeriod
:
[
{
type
:
"
number
"
,
message
:
this
.
$t
(
"
请输入整数
"
),
trigger
:
"
blur
"
,
},
{
required
:
true
,
message
:
this
.
$t
(
"
请输入积分有效天数
"
),
trigger
:
"
blur
"
,
},
],
type
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请选择指标类型
"
),
trigger
:
"
change
"
,
},
],
dateRangeCreateTime
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请选择活动有效期
"
),
trigger
:
"
change
"
,
},
],
//推荐
extraRecommend
:
{
shareContentEn
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入分享文案
"
),
trigger
:
"
blur
"
,
},
],
shareContentZh
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入分享文案
"
),
trigger
:
"
blur
"
,
},
],
shareStatus
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请选择是否分享
"
),
trigger
:
"
change
"
,
},
],
},
//v值
extraOrderV
:
{
orderEntry
:
[
{
required
:
true
,
message
:
"
请选择订单入口
"
,
trigger
:
"
change
"
},
],
transportType
:
[
{
required
:
true
,
message
:
"
请选择运输方式
"
,
trigger
:
"
change
"
},
],
receiveAddrList
:
[
{
required
:
true
,
message
:
"
请选择提货点
"
,
trigger
:
"
change
"
},
],
orderVRule
:
{
low
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
不能为空
"
),
trigger
:
"
blur
"
,
},
{
type
:
"
number
"
,
message
:
this
.
$t
(
"
请输入整数
"
),
trigger
:
"
blur
"
,
},
{
validator
:
validatePass2
,
trigger
:
"
blur
"
},
],
score
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
不能为空
"
),
trigger
:
"
blur
"
,
},
{
type
:
"
number
"
,
message
:
this
.
$t
(
"
请输入整数
"
),
trigger
:
"
blur
"
,
},
],
high
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
不能为空
"
),
trigger
:
"
blur
"
,
},
{
type
:
"
number
"
,
message
:
this
.
$t
(
"
请输入整数
"
),
trigger
:
"
blur
"
,
},
{
validator
:
validatehigh
,
trigger
:
"
blur
"
},
],
},
},
//注册
extraRegister
:
{
registerPlatform
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请选择注册平台
"
),
trigger
:
"
change
"
,
},
],
},
//分享
extraShare
:
{
activityDescEn
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
中文活动内容不能为空
"
),
trigger
:
"
blur
"
,
},
],
activityDescZh
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
英文活动内容不能为空
"
),
trigger
:
"
blur
"
,
},
],
shareStatus
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请选择是否分享
"
),
trigger
:
"
change
"
,
},
],
},
},
queryParams
:
{
dateRangeCreateTime
:
[],
//活动有效期
type
:
""
,
//指标类型
titleZh
:
""
,
titleEn
:
""
,
coverImageZh
:
""
,
coverImageEn
:
""
,
maxScoreTotal
:
""
,
endTime
:
""
,
startTime
:
""
,
//活动开始时间
scorePeriod
:
""
,
//积分有效期
orderNum
:
""
,
//排序
descZh
:
""
,
pushActivity
:
"
0
"
,
//是否推送(0是,1否)默认是
descEn
:
""
,
getScoreOnce
:
""
,
//除v值之外的积分规则
showPlatform
:
"
1,2,3
"
,
//展示平台
extraRecommend
:
{
//推荐
shareContentEn
:
""
,
shareContentZh
:
""
,
shareStatus
:
"
0
"
,
//是否分享(0是,1否)默认是
},
extraRegister
:
{
// 注册扩展字段
registerPlatform
:
null
,
},
extraOrderV
:
{
//订单V值扩展字段
firstOrder
:
"
1
"
,
orderEntry
:
null
,
transportType
:
""
,
//运输方式
receiveAddrList
:
[],
orderVRule
:
[{
low
:
""
,
high
:
""
,
score
:
""
}],
},
extraShare
:
{
// 分享扩展字段
activityDescEn
:
null
,
activityDescZh
:
null
,
activityUrl
:
""
,
shareStatus
:
"
0
"
,
},
},
};
},
computed
:
{
statusName
()
{
return
(
value
)
=>
{
for
(
let
index
in
this
.
statusDictDatas
)
{
let
dictItem
=
this
.
statusDictDatas
[
index
];
if
(
dictItem
.
value
==
value
)
{
return
dictItem
.
value
==
CommonStatusEnum
.
ENABLE
+
""
?
this
.
$t
(
"
正常
"
)
:
this
.
$t
(
"
禁用
"
);
}
}
};
},
isChinese
()
{
return
this
.
$i18n
.
locale
===
"
zh_CN
"
;
},
cascaderProps
()
{
const
label
=
this
.
isChinese
?
"
labelZh
"
:
"
labelEn
"
;
return
{
multiple
:
true
,
value
:
"
id
"
,
label
};
},
},
watch
:
{
"
queryParams.dateRangeCreateTime
"
:
{
handler
:
function
(
newVal
,
oldVal
)
{
this
.
$nextTick
(()
=>
{
if
(
newVal
.
length
)
{
this
.
queryParams
.
startTime
=
newVal
[
0
];
this
.
queryParams
.
endTime
=
newVal
[
1
];
}
else
{
this
.
queryParams
.
startTime
=
""
;
this
.
queryParams
.
endTime
=
""
;
}
});
},
immediate
:
true
,
},
isChinese
:
{
handler
:
function
(
newVal
,
oldVal
)
{
this
.
cascaderState
=
false
;
this
.
$nextTick
(()
=>
{
this
.
cascaderState
=
true
;
});
},
immediate
:
true
,
},
},
created
()
{
this
.
handleGetChannelList
();
this
.
handleGetRegionTreeList
();
this
.
getList
();
if
(
this
.
$route
.
query
.
pageStatus
==
"
edit
"
)
{
this
.
handleIntegralRuleDetails
();
}
if
(
this
.
$route
.
query
.
pageStatus
==
"
view
"
)
{
this
.
showViewTime
=
true
;
this
.
handleIntegralRuleDetails
();
}
},
activated
()
{},
methods
:
{
//编辑更新积分规则
handleUpdatedIntegralRule
()
{
this
.
$refs
[
"
queryForm
"
].
validate
((
valid
)
=>
{
if
(
valid
)
{
let
params
=
deepClone
(
this
.
queryParams
);
params
.
showPlatform
=
this
.
queryParams
.
showPlatform
?.
join
();
params
.
extraOrderV
.
orderEntry
=
this
.
queryParams
.
extraOrderV
?.
orderEntry
?.
join
();
params
.
extraRegister
.
registerPlatform
=
this
.
queryParams
.
extraRegister
.
registerPlatform
?.
join
();
integralRuleUpdated
(
params
).
then
((
res
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
更新成功
"
));
this
.
$router
.
go
(
-
1
);
});
}
else
{
console
.
log
(
"
error submit!!
"
);
return
false
;
}
});
},
//获取积分规则详情
handleIntegralRuleDetails
()
{
this
.
queryParams
.
showPlatform
=
[];
integralRuleDetails
({
id
:
this
.
$route
.
query
.
id
}).
then
((
res
)
=>
{
const
params
=
mergeWith
(
deepClone
(
this
.
queryParams
),
res
.
data
,
(
a
,
b
)
=>
{
return
b
===
null
?
a
:
undefined
;
}
);
params
.
createTime
=
parseTime
(
res
.
data
.
createTime
);
params
.
updateTime
=
parseTime
(
res
.
data
.
updateTime
);
if
(
isNumber
(
res
.
data
.
extraOrderV
?.
firstOrder
))
{
params
.
extraOrderV
.
firstOrder
=
res
.
data
.
extraOrderV
?.
firstOrder
.
toString
();
}
if
(
isNumber
(
res
.
data
.
pushActivity
))
{
params
.
pushActivity
=
res
.
data
.
pushActivity
.
toString
();
}
if
(
isNumber
(
res
.
data
.
extraShare
?.
shareStatus
))
{
params
.
extraShare
.
shareStatus
=
params
.
extraShare
.
shareStatus
.
toString
();
}
if
(
isNumber
(
res
.
data
.
extraRecommend
?.
shareStatus
))
{
params
.
extraRecommend
.
shareStatus
=
res
.
data
.
extraRecommend
?.
shareStatus
.
toString
();
}
console
.
log
(
params
);
params
.
dateRangeCreateTime
=
[
parseTime
(
res
.
data
.
startTime
),
parseTime
(
res
.
data
.
endTime
),
];
this
.
queryParams
=
{
...
params
};
});
},
handleSelectBannerDialog
()
{
this
.
dialogVisible
=
true
;
},
handleSelectAdvertising
(
row
)
{
this
.
dialogVisible
=
false
;
this
.
queryParams
.
titleZh
=
row
.
titleZh
;
this
.
queryParams
.
titleEn
=
row
.
titleEn
;
this
.
queryParams
.
coverImageZh
=
row
.
bannerUrlApp
;
this
.
queryParams
.
coverImageEn
=
row
.
bannerUrlApp
;
this
.
queryParams
.
extraShare
.
activityDescZh
=
row
.
contentEn
;
this
.
queryParams
.
extraShare
.
activityDescEn
=
row
.
contentZh
;
},
/** 查询列表 */
getList
()
{
this
.
loading
=
true
;
// 处理查询参数
let
params
=
{
...
this
.
queryadvertisingParams
};
getBannerPage
(
params
).
then
((
response
)
=>
{
this
.
list
=
response
.
data
.
list
;
this
.
total
=
response
.
data
.
total
;
this
.
loading
=
false
;
});
},
//重置按钮操作
handleResetIntegralRule
()
{
this
.
$modal
.
confirm
(
this
.
$t
(
"
是否确认重置此礼品规则表单
"
),
this
.
$t
(
"
提示
"
))
.
then
(()
=>
{
this
.
$refs
[
"
queryForm
"
].
resetFields
();
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
重置成功
"
));
})
.
catch
(()
=>
{});
},
//返回按钮操作
handleGoBack
()
{
this
.
$modal
.
confirm
(
this
.
$t
(
"
是否确认返回
"
),
this
.
$t
(
"
提示
"
))
.
then
(()
=>
{
// this.$router.go(-1);
this
.
$store
.
dispatch
(
"
tagsView/delCurrentView
"
);
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
成功
"
));
})
.
catch
(()
=>
{});
},
//保存
handleSaveIntegralRule
()
{
this
.
$refs
[
"
queryForm
"
].
validate
((
valid
)
=>
{
if
(
valid
)
{
let
params
=
deepClone
(
this
.
queryParams
);
params
.
showPlatform
=
this
.
queryParams
.
showPlatform
?.
join
();
params
.
extraOrderV
.
orderEntry
=
this
.
queryParams
.
extraOrderV
?.
orderEntry
?.
join
();
params
.
extraRegister
.
registerPlatform
=
this
.
queryParams
.
extraRegister
.
registerPlatform
?.
join
();
params
.
status
=
this
.
queryParams
.
status
||
"
2
"
;
createIntegralRule
(
params
).
then
((
res
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
成功
"
));
this
.
$router
.
go
(
-
1
);
});
}
else
{
console
.
log
(
"
error submit!!
"
);
return
false
;
}
});
},
//保存并启用
handleEnableIntegralRule
()
{
this
.
$refs
[
"
queryForm
"
].
validate
((
valid
)
=>
{
if
(
valid
)
{
let
params
=
deepClone
(
this
.
queryParams
);
params
.
showPlatform
=
this
.
queryParams
.
showPlatform
?.
join
();
params
.
extraOrderV
.
orderEntry
=
this
.
queryParams
.
extraOrderV
.
orderEntry
?.
join
();
params
.
extraRegister
.
registerPlatform
=
this
.
queryParams
.
extraRegister
.
registerPlatform
?.
join
();
params
.
status
=
this
.
queryParams
.
status
||
"
1
"
;
createIntegralRule
(
params
).
then
((
res
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
成功
"
));
this
.
$router
.
go
(
-
1
);
});
}
else
{
console
.
log
(
"
error submit!!
"
);
return
false
;
}
});
},
handleOrderVRule
(
item
,
index
)
{
if
(
index
==
"
0
"
)
{
this
.
queryParams
.
extraOrderV
.
orderVRule
.
push
({
low
:
""
,
high
:
""
,
score
:
""
,
});
}
else
{
this
.
queryParams
.
extraOrderV
.
orderVRule
.
splice
(
index
,
1
);
}
},
//获取渠道列表
handleGetChannelList
()
{
getChannelList
().
then
((
res
)
=>
{
this
.
channelList
=
res
.
data
;
});
},
//获取目的仓列表
handleGetRegionTreeList
()
{
getRegionTreeList
().
then
((
res
)
=>
{
this
.
regionTreeList
=
res
.
data
;
});
},
traverseTree
(
tree
,
newVal
)
{
for
(
let
node
of
tree
)
{
node
.
labeluu
=
newVal
?
node
.
labelZh
:
node
.
labelEn
;
if
(
node
.
children
&&
node
.
children
.
length
>
0
)
{
this
.
traverseTree
(
node
.
children
);
// 递归遍历子节点
}
}
return
tree
;
},
//积分来源
handleSourceType
(
id
)
{
return
this
.
getDictDatas
(
DICT_TYPE
.
SCORE_RULE_TYPE
).
filter
(
(
item
)
=>
item
.
value
==
id
)[
0
];
},
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
.del-btn
{
color
:
red
;
padding-left
:
120px
;
}
.readOnlyEditor
{
background-color
:
#f5f7fa
;
cursor
:
not
-
allowed
;
}
</
style
>
src/views/ecw/memberManagement/exchangeRecord/index.vue
0 → 100644
View file @
7e0c1c55
<
template
>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
v-show=
"showSearch"
:inline=
"true"
label-width=
"120px"
>
<el-form-item
:label=
"$t('礼品名称')"
>
<el-input
style=
"width: 300px"
v-model.trim=
"queryParams.rewardTitle"
:placeholder=
"$t('请输入礼品名称')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('会员昵称')"
>
<el-input
style=
"width: 300px"
v-model.trim=
"queryParams.memberName"
:placeholder=
"$t('请输入会员昵称')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('兑换方式')"
>
<dict-selector
clearable
:type=
"DICT_TYPE.WAY_OF_RECEIVING"
v-model=
"queryParams.redeemType"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('状态')"
>
<dict-selector
clearable
:type=
"DICT_TYPE.REWARD_REDEEM_STATUS"
v-model=
"queryParams.status"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('数量')"
>
<el-row
:gutter=
"10"
style=
"width: 300px"
>
<el-col
:span=
"10"
>
<dict-selector
clearable
:type=
"DICT_TYPE.QUANTITATIVE_RELATION_SYMBOL"
v-model=
"queryParams.rewardCountOperate"
@
change=
"handleQuery"
>
</dict-selector>
</el-col>
<el-col
:span=
"14"
>
<el-input
v-model.trim=
"queryParams.rewardCount"
:placeholder=
"$t('请输入数字')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-col>
</el-row>
</el-form-item>
<el-form-item
:label=
"$t('兑换时间')"
>
<el-date-picker
type=
"datetimerange"
clearable
placement=
"bottom-start"
v-model=
"dateRangeCreateTime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd HH:mm:ss"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
/>
</el-form-item>
<el-form-item
:label=
"$t('礼品ID')"
>
<el-input
style=
"width: 300px"
v-model.trim=
"queryParams.rewardCode"
:placeholder=
"$t('请输入礼品ID')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('兑换入口')"
>
<dict-selector
clearable
:type=
"DICT_TYPE.PLATFORM_TYPE"
v-model=
"queryParams.entrance"
@
change=
"handleQuery"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('兑换网点')"
>
<el-select
v-model=
"queryParams.nodeId"
:placeholder=
"$t('请选择兑换网点')"
clearable
size=
"small"
@
change=
"handleQuery"
>
<el-option
v-for=
"nodeItem in nodeList"
:key=
"nodeItem.id"
:label=
"isChinese ? nodeItem.titleZh : nodeItem.titleEn"
:value=
"nodeItem.id"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
"
搜索
"
)
}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
"
重置
"
)
}}
</el-button>
</el-form-item>
</el-form>
<el-row
class=
"mb8"
>
<el-button
type=
"success"
size=
"mini"
icon=
"el-icon-plus"
v-hasPermi=
"['ecw:memberManagement:newExchange']"
@
click=
"handleNewExchange"
>
{{
$t
(
"
新增兑换
"
)
}}
</el-button
>
<el-button
type=
"success"
size=
"mini"
icon=
"el-icon-plus"
v-hasPermi=
"['ecw:memberManagement:batchWriteOff']"
@
click=
"handleBatchVerify"
>
{{
$t
(
"
批量核销
"
)
}}
</el-button
>
<el-button
type=
"success"
size=
"mini"
icon=
"el-icon-plus"
@
click=
"handleBatchExport"
v-hasPermi=
"['ecw:memberManagement:export']"
>
{{
$t
(
"
导出
"
)
}}
</el-button
>
<el-button
type=
"success"
size=
"mini"
icon=
"el-icon-plus"
@
click=
"handleShowFileUploadDialog"
v-hasPermi=
"['ecw:memberManagement:exchangeoInfoImport']"
>
{{
$t
(
"
兑换信息导入
"
)
}}
</el-button
>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"handleQueryPagination"
></right-toolbar>
</el-row>
<el-table
ref=
"multipleTable"
v-loading=
"loading"
@
selection-change=
"handleSelectionChange"
:data=
"memberList"
>
<el-table-column
type=
"selection"
width=
"55"
>
</el-table-column>
<el-table-column
width=
"140"
:label=
"$t('兑换记录ID')"
align=
"center"
prop=
"id"
></el-table-column>
<el-table-column
width=
"140"
:label=
"$t('礼品ID')"
align=
"center"
prop=
"rewardCode"
></el-table-column>
<el-table-column
:label=
"$t('礼品名称')"
align=
"center"
:prop=
"isChinese ? 'rewardTitleZh' : 'rewardTitleEn'"
></el-table-column>
<el-table-column
:label=
"$t('会员名称')"
align=
"center"
>
<template
v-slot=
"
{ row }">
<el-button
type=
"text"
@
click=
"
$router.push('/member/member/member-details/' + row.memberId)
"
>
{{
isChinese
?
row
.
memberNameZh
:
row
.
memberNameEn
}}
</el-button
>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('兑换时间')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
{{
parseTime
(
row
.
redemptionTime
)
||
"
/
"
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('兑换积分')"
align=
"center"
prop=
"totalCount"
></el-table-column>
<el-table-column
width=
"140"
:label=
"$t('兑换入口')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
{{
isChinese
?
handleExchangeEntrance
(
row
.
entrance
).
label
:
handleExchangeEntrance
(
row
.
entrance
).
labelEn
}}
</
template
>
</el-table-column>
<el-table-column
width=
"140"
:label=
"$t('兑换网点')"
align=
"center"
:prop=
"isChinese ? 'nodeTitleZh' : 'nodeTitleEn'"
>
</el-table-column>
<el-table-column
width=
"140"
:label=
"$t('领取方式')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
{{
isChinese
?
handleExchangeRedeemType
(
row
.
redeemType
).
label
:
handleExchangeRedeemType
(
row
.
redeemType
).
labelEn
}}
</
template
>
</el-table-column>
<el-table-column
width=
"140"
:label=
"$t('状态')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
{{
isChinese
?
handleExchangeStatus
(
row
.
status
).
label
:
handleExchangeStatus
(
row
.
status
).
labelEn
}}
</
template
>
</el-table-column>
<el-table-column
width=
"140"
:label=
"$t('备注')"
align=
"center"
prop=
"remark"
></el-table-column
>
、
<el-table-column
width=
"140"
:label=
"$t('数量')"
align=
"center"
prop=
"rewardCount"
></el-table-column>
<el-table-column
width=
"140"
:label=
"$t('创建人')"
align=
"center"
prop=
"creatorName"
></el-table-column>
<el-table-column
width=
"140"
:label=
"$t('更新人')"
align=
"center"
prop=
"updaterName"
></el-table-column>
<el-table-column
width=
"220px"
align=
"center"
:label=
"$t('操作')"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-view"
@
click=
"handleRewardCancel(scope.row)"
:disabled=
"scope.row.status != '1'"
v-hasPermi=
"['ecw:memberManagement:cancel']"
>
{{
$t
(
"
撤销
"
)
}}
</el-button
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click=
"handleRewardEdit(scope.row)"
:disabled=
"scope.row.status != '1'"
v-hasPermi=
"['ecw:memberManagement:edit']"
>
{{
$t
(
"
编辑
"
)
}}
</el-button
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click=
"handleViewRecord(scope.row)"
v-hasPermi=
"['ecw:memberManagement:view']"
>
{{
$t
(
"
查看
"
)
}}
</el-button
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click=
"handleVerify(scope.row)"
:disabled=
"scope.row.status != '1'"
v-hasPermi=
"['ecw:memberManagement:verification']"
>
{{
$t
(
"
核销
"
)
}}
</el-button
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-delete"
@
click=
"handleVerificationRollback(scope.row)"
:disabled=
"scope.row.status != '2'"
v-hasPermi=
"['ecw:memberManagement:verificationRollback']"
>
{{
$t
(
"
核销回退
"
)
}}
</el-button
>
</
template
>
</el-table-column>
</el-table>
<!-- //分页列表 -->
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"handleQueryPagination"
/>
<!-- 批量导入 -->
<!-- 用户导入对话框 -->
<el-dialog
:title=
"upload.title"
:visible.sync=
"upload.open"
width=
"400px"
append-to-body
>
<el-upload
ref=
"upload"
:limit=
"1"
accept=
".xlsx, .xls"
:headers=
"upload.headers"
:action=
"upload.url"
:disabled=
"upload.isUploading"
:on-progress=
"handleFileUploadProgress"
:on-success=
"handleFileSuccess"
:auto-upload=
"false"
drag
>
<i
class=
"el-icon-upload"
></i>
<div
class=
"el-upload__text"
>
{{ $t("将文件拖到此处,或") }}
<em>
{{ $t("点击上传") }}
</em>
</div>
<div
class=
"el-upload__tip text-center"
slot=
"tip"
>
<span>
仅允许导入xls、xlsx格式文件。
</span>
<el-link
type=
"primary"
:underline=
"false"
style=
"font-size: 12px; vertical-align: baseline"
@
click=
"importTemplate"
>
{{ $t("下载模板") }}
</el-link>
</div>
</el-upload>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitFileForm"
>
{{
$t("确 定")
}}
</el-button>
<el-button
@
click=
"upload.open = false"
>
{{ $t("取 消") }}
</el-button>
</div>
</el-dialog>
<!-- 批量核销 -->
<el-dialog
:title=
"$t('批量核销')"
:visible.sync=
"dialogBatchVerify"
width=
"30%"
:before-close=
"handleClose"
>
<el-form
:model=
"batchVerifyForm"
ref=
"numberValidateForm"
label-width=
"100px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"核销人"
prop=
"age"
:rules=
"[{ required: true, message: $t('核销人不能为空') }]"
>
<el-input
v-model.number=
"batchVerifyForm.verifyUser"
autocomplete=
"off"
></el-input>
</el-form-item>
<el-form-item
:label=
"$t('核销时间')"
:rules=
"[{ required: true, message: $t('核销时间不能为空') }]"
>
<el-date-picker
type=
"date"
placement=
"bottom-start"
value-format=
"yyyy-MM-dd HH:mm:ss"
:placeholder=
"$t('选择核销时间')"
v-model=
"batchVerifyForm.verifyTime"
></el-date-picker>
</el-form-item>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"dialogBatchVerify = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"handleBatchVerifySubmit"
>
{{
$t("确认核销")
}}
</el-button>
</span>
</el-dialog>
<el-dialog
:title=
"$t('操作积分')"
:visible.sync=
"dialogVisible"
width=
"30%"
:before-close=
"handleClose"
>
<el-form
ref=
"form"
:model=
"formQuery"
label-width=
"80px"
>
<el-form-item
:label=
"$t('会员')"
>
<el-select
v-model=
"formQuery.memberIds"
multiple
placeholder=
"请选择"
>
<el-option
v-for=
"item in selectedMember"
:key=
"item.id"
:label=
"isChinese ? item.memberNameZh : item.memberNameEn"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('操作')"
>
<el-radio-group
v-model=
"formQuery.operateType"
>
<el-radio
v-for=
"dict in getDictDatas(DICT_TYPE.MEMBER_SCORE_OPERATE_TYPE)"
:key=
"dict.value"
:label=
"dict.value"
>
{{ $l(dict, "label") }}
</el-radio
>
</el-radio-group>
</el-form-item>
<el-form-item
:label=
"$t('积分')"
>
<el-input
v-model.number=
"formQuery.scoreCount"
:placeholder=
"$t('请输入积分')"
clearable
/>
</el-form-item>
<el-form-item
:label=
"$t('备注')"
>
<el-input
type=
"textarea"
v-model=
"formQuery.comment"
></el-input>
</el-form-item>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"dialogVisible = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"handleScoreSubmit"
>
{{
$t("操作积分")
}}
</el-button>
</span>
</el-dialog>
</div>
</template>
<
script
>
import
{
getDictDatas
,
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
{
getNodeList
}
from
"
@/api/ecw/giftManagement
"
;
import
{
queryMemberExchangeRecord
,
batchVerifyAPI
,
batchRecordExport
,
batchRecordImport
,
batchRecordImportTemplate
,
rewardCancelQuery
,
verifyRollback
,
}
from
"
@/api/ecw/memberManagement
"
;
import
{
getNowDateTime
,
parseTime
}
from
"
@/utils/ruoyi
"
;
import
{
getBaseHeader
}
from
"
@/utils/request
"
;
export
default
{
name
:
"
exchangeRecord
"
,
data
()
{
return
{
upload
:
{
// 是否显示弹出层(用户导入)
open
:
false
,
// 弹出层标题(用户导入)
title
:
this
.
$t
(
"
兑换信息导入
"
),
// 是否禁用上传
isUploading
:
false
,
// 设置上传的请求头部
headers
:
getBaseHeader
(),
// 上传的地址
url
:
process
.
env
.
VUE_APP_BASE_API
+
"
/admin-api/reward/redeem/record/import
"
,
},
//批量核销
dialogBatchVerify
:
false
,
batchVerifyForm
:
{
ids
:
[],
verifyTime
:
""
,
verifyUser
:
""
,
},
// 显示搜索条件
showSearch
:
true
,
selectedMember
:
[],
cityList
:
[],
dateRangeCreateTime
:
[],
total
:
0
,
loading
:
true
,
dialogVisible
:
false
,
memberList
:
[],
formQuery
:
{
comment
:
""
,
memberIds
:
[],
operateType
:
null
,
scoreCount
:
null
,
},
queryParams
:
{
rewardTitle
:
""
,
memberName
:
""
,
//会员昵称
redeemType
:
""
,
//兑换方式
status
:
""
,
rewardCount
:
""
,
rewardCountOperate
:
""
,
rewardCode
:
""
,
entrance
:
""
,
//兑换入口
startTime
:
""
,
endTime
:
""
,
nodeId
:
""
,
pageNo
:
1
,
pageSize
:
10
,
},
// 网点
nodeList
:
[],
};
},
computed
:
{
isChinese
()
{
return
this
.
$i18n
.
locale
===
"
zh_CN
"
;
},
},
created
()
{
this
.
getNodeListAPI
();
this
.
handleQuery
();
},
activated
()
{
this
.
handleQuery
();
},
methods
:
{
//核销回退
handleVerificationRollback
(
row
)
{
this
.
$confirm
(
this
.
$t
(
"
是否继续核销回退?
"
),
this
.
$t
(
"
提示
"
),
{
confirmButtonText
:
this
.
$t
(
"
确定
"
),
cancelButtonText
:
this
.
$t
(
"
取消
"
),
type
:
"
warning
"
,
})
.
then
(()
=>
{
let
params
=
{
redeemIds
:
[
row
.
id
],
};
verifyRollback
(
params
).
then
((
res
)
=>
{
this
.
$message
({
type
:
"
success
"
,
message
:
this
.
$t
(
"
回退成功!
"
),
});
this
.
handleQuery
();
});
})
.
catch
(()
=>
{
this
.
$message
({
type
:
"
info
"
,
message
:
this
.
$t
(
"
已取消回退
"
),
});
});
},
//核销
handleVerify
(
row
)
{
this
.
$router
.
push
({
path
:
"
/memberManagement/exchangeRecordOperation
"
,
query
:
{
exchangeRewardID
:
row
.
id
,
pageStatus
:
"
verify
"
},
});
},
//查看按钮操作
handleViewRecord
(
row
)
{
this
.
$router
.
push
({
path
:
"
/memberManagement/exchangeRecordOperation
"
,
query
:
{
exchangeRewardID
:
row
.
id
,
pageStatus
:
"
view
"
},
});
},
//兑换记录编辑操作
handleRewardEdit
(
row
)
{
this
.
$router
.
push
({
path
:
"
/memberManagement/exchangeRecordOperation
"
,
query
:
{
exchangeRewardID
:
row
.
id
,
pageStatus
:
"
edit
"
},
});
},
//撤销按钮操作
handleRewardCancel
(
row
)
{
this
.
$confirm
(
this
.
$t
(
"
此操作积分可能存在到期积分, 撤销后积分将进行扣除,是否继续?
"
),
this
.
$t
(
"
提示
"
),
{
confirmButtonText
:
this
.
$t
(
"
确定
"
),
cancelButtonText
:
this
.
$t
(
"
取消
"
),
type
:
"
warning
"
,
}
)
.
then
(()
=>
{
let
params
=
{
id
:
row
.
id
,
};
rewardCancelQuery
(
params
).
then
((
res
)
=>
{
this
.
$message
({
type
:
"
success
"
,
message
:
this
.
$t
(
"
撤销成功!
"
),
});
this
.
handleQuery
();
});
})
.
catch
(()
=>
{
this
.
$message
({
type
:
"
info
"
,
message
:
this
.
$t
(
"
已取消撤销
"
),
});
});
},
//下载导入模板
importTemplate
()
{
batchRecordImportTemplate
().
then
((
res
)
=>
{
this
.
$download
.
excel
(
res
,
"
用户导入模板.xls
"
);
this
.
$message
({
message
:
this
.
$t
(
"
下载模板成功
"
),
type
:
"
success
"
,
});
});
},
//导入
handleShowFileUploadDialog
()
{
this
.
upload
.
open
=
true
;
},
handleFileUploadProgress
(
event
,
file
,
fileList
)
{
this
.
upload
.
isUploading
=
true
;
},
// 文件上传成功处理
handleFileSuccess
(
response
,
file
,
fileList
)
{
if
(
response
.
code
==
"
1001011027
"
)
{
this
.
$message
.
error
(
response
.
msg
);
}
if
(
!
response
.
data
.
redeemIdFailedMap
||
JSON
.
stringify
(
response
.
data
.
redeemIdFailedMap
)
==
"
{}
"
)
{
this
.
upload
.
open
=
false
;
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
导入成功
"
));
this
.
handleQuery
();
return
;
}
this
.
upload
.
open
=
false
;
this
.
upload
.
isUploading
=
false
;
this
.
$refs
.
upload
.
clearFiles
();
// 拼接提示语
let
data
=
response
.
data
;
let
text
=
`
${
this
.
$t
(
"
导入失败:
"
)}
`
;
for
(
const
username
in
data
.
redeemIdFailedMap
)
{
text
+=
"
<br />
"
+
username
+
this
.
$t
(
"
:
"
)
+
data
.
redeemIdFailedMap
[
username
];
}
text
+=
`<br />
${
this
.
$t
(
"
以上数据格式有问题
"
)}
`
;
this
.
$alert
(
text
,
this
.
$t
(
"
导入结果
"
),
{
dangerouslyUseHTMLString
:
true
,
});
},
// 提交上传文件
submitFileForm
()
{
this
.
$refs
.
upload
.
submit
();
},
//导出
handleBatchExport
()
{
let
params
=
{
...
this
.
queryParams
};
if
(
this
.
dateRangeCreateTime
)
{
params
.
startTime
=
this
.
dateRangeCreateTime
[
0
];
params
.
endTime
=
this
.
dateRangeCreateTime
[
1
];
params
.
pageNo
=
null
;
params
.
pageSize
=
null
;
}
batchRecordExport
(
params
).
then
((
res
)
=>
{
this
.
$message
({
message
:
this
.
$t
(
"
已加入导出队列,请稍后在下载日志中下载
"
),
type
:
"
success
"
,
});
});
},
//批量核销确认按钮
handleBatchVerifySubmit
()
{
this
.
$confirm
(
this
.
$t
(
"
确认提交?
"
))
.
then
((
_
)
=>
{
let
params
=
{
...
this
.
batchVerifyForm
};
batchVerifyAPI
(
params
).
then
((
res
)
=>
{
this
.
dialogBatchVerify
=
false
;
this
.
$message
({
message
:
this
.
$t
(
"
核销成功
"
),
type
:
"
success
"
,
});
});
})
.
catch
((
_
)
=>
{});
},
// 批量核销
handleBatchVerify
()
{
if
(
this
.
batchVerifyForm
.
ids
.
length
>
0
)
{
this
.
dialogBatchVerify
=
true
;
this
.
batchVerifyForm
.
verifyUser
=
this
.
$store
.
getters
.
name
;
this
.
batchVerifyForm
.
verifyTime
=
getNowDateTime
();
}
else
{
this
.
$message
({
message
:
this
.
$t
(
"
请先选择兑换记录
"
),
type
:
"
warning
"
,
});
}
},
// 新增兑换
handleNewExchange
()
{
this
.
$router
.
push
({
path
:
"
/memberManagement/exchangeRecordOperation
"
,
});
},
getNodeListAPI
()
{
getNodeList
().
then
((
res
)
=>
{
this
.
nodeList
=
res
.
data
;
});
},
handleExchangeRedeemType
(
id
)
{
return
this
.
getDictDatas
(
DICT_TYPE
.
WAY_OF_RECEIVING
).
filter
(
(
item
)
=>
item
.
value
==
id
)[
0
];
},
//兑换入口
handleExchangeEntrance
(
id
)
{
return
this
.
getDictDatas
(
DICT_TYPE
.
PLATFORM_TYPE
).
filter
(
(
item
)
=>
item
.
value
==
id
)[
0
];
},
//兑换状态
handleExchangeStatus
(
id
)
{
return
this
.
getDictDatas
(
DICT_TYPE
.
REWARD_REDEEM_STATUS
).
filter
(
(
item
)
=>
item
.
value
==
id
)[
0
];
},
handleScoreSubmit
()
{
this
.
$confirm
(
this
.
$t
(
"
确认提交?
"
))
.
then
((
_
)
=>
{
let
params
=
{
...
this
.
formQuery
};
operateMemberScore
(
params
).
then
((
res
)
=>
{
this
.
dialogVisible
=
true
;
this
.
formQuery
=
{
comment
:
""
,
memberIds
:
[],
operateType
:
null
,
scoreCount
:
null
,
};
this
.
selectedMember
=
[];
this
.
$message
.
success
(
this
.
$t
(
"
操作成功
"
));
});
})
.
catch
((
_
)
=>
{});
},
handleClose
(
done
)
{
this
.
$confirm
(
this
.
$t
(
"
确认关闭?
"
))
.
then
((
_
)
=>
{
done
();
})
.
catch
((
_
)
=>
{});
},
handleSelectionChange
(
val
)
{
this
.
selectedMember
=
val
;
this
.
batchVerifyForm
.
ids
=
val
.
map
((
item
)
=>
{
return
item
.
id
;
});
},
dialogBeforeClose
()
{
this
.
loading
=
true
;
this
.
queryParams
=
{
country
:
null
,
city
:
null
,
endTime
:
null
,
holdScore
:
null
,
holdScoreOperate
:
null
,
key
:
null
,
pageNo
:
1
,
pageSize
:
10
,
startTime
:
null
,
usedScore
:
null
,
usedScoreOperate
:
null
,
};
},
handleQuery
()
{
this
.
queryParams
.
pageNo
=
1
;
let
params
=
{
...
this
.
queryParams
};
if
(
this
.
dateRangeCreateTime
)
{
params
.
startTime
=
this
.
dateRangeCreateTime
[
0
];
params
.
endTime
=
this
.
dateRangeCreateTime
[
1
];
}
queryMemberExchangeRecord
(
params
).
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
memberList
=
res
.
data
.
list
;
this
.
total
=
res
.
data
.
total
;
});
},
handleQueryPagination
()
{
let
params
=
{
...
this
.
queryParams
};
if
(
this
.
dateRangeCreateTime
)
{
params
.
startTime
=
this
.
dateRangeCreateTime
[
0
];
params
.
endTime
=
this
.
dateRangeCreateTime
[
1
];
}
queryMemberExchangeRecord
(
params
).
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
memberList
=
res
.
data
.
list
;
this
.
total
=
res
.
data
.
total
;
});
},
resetQuery
()
{
this
.
loading
=
true
;
this
.
dateRangeCreateTime
=
[];
this
.
queryParams
=
{
country
:
null
,
city
:
null
,
endTime
:
null
,
holdScore
:
null
,
holdScoreOperate
:
null
,
key
:
null
,
pageNo
:
1
,
pageSize
:
10
,
startTime
:
null
,
usedScore
:
null
,
usedScoreOperate
:
null
,
};
this
.
handleQuery
();
},
},
};
</
script
>
src/views/ecw/memberManagement/exchangeRecordOperation/components/chooseGift.vue
0 → 100644
View file @
7e0c1c55
<
template
>
<el-dialog
:title=
"$t('选择礼品')"
:visible.sync=
"dialogVisible"
width=
"80%"
:before-close=
"dialogBeforeClose"
>
<div
class=
"container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form-item
:label=
"$t('礼品名称')"
>
<el-input
v-model.trim=
"queryParams.title"
:placeholder=
"$t('请输入礼品名称')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('兑换积分')"
>
<el-row
:gutter=
"10"
>
<el-col
:span=
"8"
>
<dict-selector
clearable
:type=
"DICT_TYPE.QUANTITATIVE_RELATION_SYMBOL"
v-model=
"queryParams.pointsRequireSymbol"
@
change=
"handleQuery"
>
</dict-selector>
</el-col>
<el-col
:span=
"16"
>
<el-input
v-model.trim=
"queryParams.pointsRequire"
:placeholder=
"$t('请输入数字')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-col>
</el-row>
</el-form-item>
<el-form-item
:label=
"$t('领取方式')"
prop=
"level"
>
<dict-selector
clearable
:type=
"DICT_TYPE.WAY_OF_RECEIVING"
v-model=
"queryParams.pickMethod"
@
change=
"handleQuery"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('兑换网点')"
prop=
"level"
>
<el-select
v-model=
"queryParams.nodeId"
:placeholder=
"$t('请选择兑换网点')"
clearable
size=
"small"
@
change=
"handleQuery"
>
<el-option
v-for=
"nodeItem in nodeList"
:key=
"nodeItem.id"
:label=
"isChinese ? nodeItem.titleZh : nodeItem.titleEn"
:value=
"nodeItem.id"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('状态')"
prop=
"level"
>
<dict-selector
clearable
:type=
"DICT_TYPE.GIFT_STATUS"
v-model=
"queryParams.status"
@
change=
"handleQuery"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('备注')"
prop=
"level"
>
<el-input
v-model.trim=
"queryParams.remark"
:placeholder=
"$t('请输入备注')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('剩余数量')"
>
<el-row
:gutter=
"10"
>
<el-col
:span=
"8"
>
<dict-selector
clearable
:type=
"DICT_TYPE.QUANTITATIVE_RELATION_SYMBOL"
v-model=
"queryParams.quantityRemainSymbol"
@
change=
"handleQuery"
>
</dict-selector>
</el-col>
<el-col
:span=
"16"
>
<el-input
v-model.trim=
"queryParams.quantityRemain"
:placeholder=
"$t('请输入数字')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-col>
</el-row>
</el-form-item>
<el-form-item
:label=
"$t('创建时间')"
>
<el-date-picker
type=
"datetimerange"
clearable
placement=
"bottom-start"
v-model=
"dateRangeCreateTime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd HH:mm:ss"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
"
搜索
"
)
}}
</el-button
>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
"
重置
"
)
}}
</el-button>
</el-form-item>
</el-form>
<el-row
class=
"mb8"
>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
</el-row>
<!-- 礼品列表 -->
<el-table
ref=
"multipleTable"
v-loading=
"loading"
:data=
"list"
>
<el-table-column
width=
"140"
:label=
"$t('礼品ID')"
align=
"center"
prop=
"code"
></el-table-column>
<el-table-column
:label=
"$t('礼品名称')"
align=
"center"
>
<template
slot-scope=
"scope"
>
<el-button
type=
"text"
@
click=
"handleView(scope.row)"
>
{{
isChinese
?
scope
.
row
.
titleZh
:
scope
.
row
.
titleEn
}}
</el-button>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('图片')"
>
<
template
slot-scope=
"scope"
>
<el-image
:src=
"firstImg(isChinese ? scope.row.imgZh : scope.row.imgEn)"
style=
"width: 50px; height: 50px"
>
{{
$t
(
"
无
"
)
}}
</el-image
>
</
template
>
</el-table-column>
<el-table-column
width=
"160"
:label=
"$t('开始日期')"
>
<
template
v-slot=
"{ row }"
>
{{
parseTime
(
row
.
createTime
)
||
"
/
"
}}
</
template
>
</el-table-column>
<el-table-column
width=
"160"
:label=
"$t('结束日期')"
>
<
template
v-slot=
"{ row }"
>
{{
parseTime
(
row
.
endTime
)
||
"
/
"
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('兑换积分')"
prop=
"pointsRequire"
></el-table-column>
<el-table-column
:label=
"$t('领取方式')"
align=
"center"
prop=
"pickMethod"
>
<
template
v-slot=
"{ row }"
>
{{
handlePickMethod
(
row
.
pickMethod
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('兑换网点')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
{{
isChinese
?
handleExchangeNodeId
(
row
.
nodeId
).
titleZh
:
handleExchangeNodeId
(
row
.
nodeId
).
titleEn
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('允许兑换次数')"
align=
"center"
prop=
"allowCount"
></el-table-column>
<el-table-column
:label=
"$t('状态')"
>
<
template
slot-scope=
"{ row }"
>
{{
isChinese
?
handleRewardsStatus
(
row
.
status
).
label
:
handleRewardsStatus
(
row
.
status
).
labelEn
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('备注')"
align=
"center"
width=
"200"
>
<
template
slot-scope=
"{ row }"
>
<el-tooltip
popper-class=
"rewardstToolTip"
:content=
"isChinese ? row.remarkZh : remarkEn"
placement=
"top"
>
<div
style=
"
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
"
>
{{
isChinese
?
row
.
remarkZh
:
remarkEn
}}
</div>
</el-tooltip>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('已兑换次数')"
align=
"center"
prop=
"exchangeCount"
></el-table-column>
<el-table-column
:label=
"$t('剩余次数')"
align=
"center"
prop=
"quantityRemain"
></el-table-column>
<el-table-column
width=
"100px"
align=
"center"
:label=
"$t('操作')"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"text"
@
click=
"transferSelectRewards(scope.row)"
:disabled=
"scope.row.status != '1'"
>
{{
$t
(
"
选择
"
)
}}
</el-button
>
</
template
>
</el-table-column>
</el-table>
<!-- //分页列表 -->
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.page"
:limit.sync=
"queryParams.rows"
@
pagination=
"getList"
/>
</div>
</el-dialog>
</template>
<
script
>
import
{
getNodeList
,
getGiftList
,
deleteRewards
,
copyRewardsAPI
,
changeRewardsStatus
,
delayRewards
,
}
from
"
@/api/ecw/giftManagement
"
;
import
{
getDictDatas
,
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
{
parseTime
}
from
"
@/utils/ruoyi
"
;
import
{
uploadFile
}
from
"
@/api/infra/file
"
;
import
ImageUpload
from
"
@/components/ImageUpload
"
;
export
default
{
name
:
"
chooseGift
"
,
props
:
{
dialogVisible
:
{
type
:
Boolean
,
default
:
false
,
},
},
watch
:
{
dialogVisible
(
val
)
{
if
(
val
==
true
)
{
this
.
handleQuery
();
}
},
},
data
()
{
return
{
env
:
process
.
env
.
NODE_ENV
,
// 遮罩层
loading
:
true
,
// 导出遮罩层
exportLoading
:
false
,
// 显示搜索条件
showSearch
:
true
,
// 总条数
total
:
0
,
// 礼品列表
list
:
[],
rewardsItem
:
{},
dateRangeCreateTime
:
[],
postponeDatetime
:
""
,
postponeRewardsID
:
""
,
// 查询参数
queryParams
:
{
page
:
1
,
rows
:
10
,
title
:
null
,
pointsRequire
:
null
,
pointsRequireSymbol
:
null
,
pickMethod
:
null
,
nodeId
:
null
,
status
:
null
,
remark
:
null
,
quantityRemainSymbol
:
null
,
quantityRemain
:
null
,
beginCreateTime
:
null
,
endCreateTime
:
null
,
},
// 网点
nodeList
:
[],
};
},
computed
:
{
isChinese
()
{
return
this
.
$i18n
.
locale
===
"
zh_CN
"
;
},
},
created
()
{
this
.
getList
();
this
.
getNodeList
();
},
activated
()
{
this
.
getList
();
},
methods
:
{
transferSelectRewards
(
row
)
{
this
.
$emit
(
"
transferSelectRewards
"
,
row
);
this
.
dialogBeforeClose
();
},
dialogBeforeClose
()
{
this
.
loading
=
true
;
this
.
queryParams
=
{
page
:
1
,
rows
:
10
,
title
:
null
,
pointsRequire
:
null
,
pointsRequireSymbol
:
null
,
pickMethod
:
null
,
nodeId
:
null
,
status
:
null
,
remark
:
null
,
quantityRemainSymbol
:
null
,
quantityRemain
:
null
,
beginCreateTime
:
null
,
endCreateTime
:
null
,
};
// this.dialogVisible = false;
this
.
$emit
(
"
update:dialogVisible
"
,
false
);
},
arraysEqual
(
arr1
,
arr2
)
{
return
arr1
.
filter
((
current
)
=>
{
return
arr2
.
find
((
item
)
=>
item
==
current
.
value
.
toString
())
?
true
:
false
;
});
},
handleRewardsStatus
(
status
)
{
return
this
.
getDictDatas
(
DICT_TYPE
.
GIFT_STATUS
).
filter
(
(
dicItem
)
=>
dicItem
.
value
.
toString
()
==
status
)[
0
];
},
firstImg
(
imgString
)
{
if
(
!
imgString
||
imgString
==
""
)
return
imgString
;
let
imgs
=
imgString
.
split
(
"
,
"
);
return
imgs
.
length
?
imgs
[
0
]
:
null
;
},
handlePickMethod
(
pickMethod
)
{
let
pickMethodLabel
=
[];
if
(
this
.
isChinese
)
{
this
.
arraysEqual
(
this
.
getDictDatas
(
DICT_TYPE
.
WAY_OF_RECEIVING
),
pickMethod
.
split
(
"
,
"
)
).
forEach
((
element
)
=>
{
pickMethodLabel
.
push
(
element
.
label
);
});
}
else
{
this
.
arraysEqual
(
this
.
getDictDatas
(
DICT_TYPE
.
WAY_OF_RECEIVING
),
pickMethod
.
split
(
"
,
"
)
).
forEach
((
element
)
=>
{
pickMethodLabel
.
push
(
element
.
labelEn
);
});
}
return
pickMethodLabel
.
join
();
},
handleExchangeNodeId
(
nodeId
)
{
return
this
.
nodeList
.
filter
((
nodeItem
)
=>
nodeItem
.
id
==
nodeId
)[
0
];
},
handleExchange
(
row
)
{
this
.
$router
.
push
({
path
:
"
/giftManagement/bulkExchange
"
,
query
:
{
rewardsID
:
row
.
id
},
});
},
/** 关闭按钮操作 */
handleCloseStatus
(
row
)
{
this
.
$confirm
(
this
.
$t
(
"
是否关闭当前礼品?
"
),
this
.
$t
(
"
提示
"
),
{
confirmButtonText
:
this
.
$t
(
"
确定
"
),
cancelButtonText
:
this
.
$t
(
"
取消
"
),
type
:
"
warning
"
,
})
.
then
((
_
)
=>
{
return
changeRewardsStatus
({
id
:
row
.
id
,
status
:
"
3
"
});
})
.
then
((
res
)
=>
{
this
.
getList
();
this
.
$message
.
success
(
this
.
$t
(
"
关闭成功
"
));
})
.
catch
((
_
)
=>
{
// this.queryAllData();
});
},
getNodeList
()
{
getNodeList
().
then
((
res
)
=>
{
this
.
nodeList
=
res
.
data
;
});
},
getList
()
{
this
.
loading
=
true
;
// 处理查询参数
let
params
=
{
...
this
.
queryParams
};
this
.
addBeginAndEndTime
(
params
,
this
.
dateRangeCreateTime
,
"
createTime
"
,
false
);
getGiftList
(
params
).
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
list
=
res
.
data
.
list
;
this
.
total
=
res
.
data
.
total
;
});
},
/** 搜索按钮操作 */
handleQuery
()
{
this
.
$nextTick
(()
=>
{
this
.
queryParams
.
page
=
1
;
this
.
getList
();
});
},
/** 重置按钮操作 */
resetQuery
()
{
this
.
dateRangeCreateTime
=
[];
this
.
queryParams
=
{
page
:
1
,
rows
:
10
,
number
:
null
,
name
:
null
,
level
:
null
,
source
:
null
,
customerService
:
null
,
status
:
null
,
department
:
null
,
creditLevel
:
null
,
country
:
null
,
memberCode
:
null
,
memberName
:
null
,
memberMobile
:
null
,
memberAreaCode
:
null
,
};
this
.
handleQuery
();
},
},
};
</
script
>
<
style
>
.rewardstToolTip
{
max-width
:
90%
;
}
</
style
>
src/views/ecw/memberManagement/exchangeRecordOperation/index.vue
0 → 100644
View file @
7e0c1c55
<
template
>
<div
class=
"app-container"
>
<div
class=
"container"
>
<div
class=
"formBox"
>
<el-form
v-for=
"(item, index) in queryParamsList"
:key=
"item.memberId"
:model=
"queryParamsList[index]"
:ref=
"`queryForm$
{item.memberId}`"
size="small"
:inline="true"
:rules="rules"
:disabled="viewRecordDisable"
label-width="168px"
>
<el-card
class=
"box-card"
>
<div
slot=
"header"
class=
"clearfix"
>
<el-row
:gutter=
"10"
>
<span
class=
"card-title"
>
{{
$t
(
"
基础信息
"
)
}}
</span>
</el-row>
<el-row
:gutter=
"10"
>
<el-form-item
:label=
"$t('会员名称')"
>
<el-autocomplete
v-model=
"item.memberName"
:disabled=
"rewardEdit || veriftyDisable"
:fetch-suggestions=
"querySearchAsync"
:placeholder=
"$t('请输入会员名称')"
@
select=
"handleSelectMemberQuery"
></el-autocomplete>
<!--
<el-input
:placeholder=
""
clearable
v-model=
"item.memberName"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
-->
</el-form-item>
<el-form-item
id=
"colorRedInput"
:label=
"$t('当前积分')"
>
<el-input
:placeholder=
"$t('请输入当前积分')"
clearable
:disabled=
"true"
v-model=
"item.holdScore"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('礼品选择')"
prop=
"rewardName"
id=
"colorRedInput"
>
<el-input
:placeholder=
"$t('请选择礼品')"
clearable
:disabled=
"true"
v-model=
"item.rewardName"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-button
type=
"success"
size=
"small"
@
click=
"handleSelectMember"
>
{{
$t
(
"
选择
"
)
}}
</el-button
>
<el-form-item
:label=
"$t('礼品积分')"
id=
"colorRedInput"
>
<el-input
:placeholder=
"$t('请输入礼品积分')"
clearable
:disabled=
"true"
v-model=
"item.pointsRequire"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('兑换数量')"
prop=
"rewardCount"
>
<el-input
:placeholder=
"$t('请输入兑换数量')"
:disabled=
"rewardEdit || veriftyDisable"
clearable
v-model.number=
"item.rewardCount"
@
change=
"
(val) =>
{
handleRewardCount(item, index, val);
}
"
onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('本次兑换积分')"
id=
"colorRedInput"
>
<el-input
:placeholder=
"$t('请输入本次兑换积分')"
clearable
:disabled=
"true"
v-model=
"item.spendCredit"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('兑换后剩余积分')"
id=
"colorRedInput"
>
<el-input
:placeholder=
"$t('兑换后剩余积分')"
clearable
:disabled=
"true"
id=
"colorRedInput"
v-model=
"item.remainingPoints"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
</el-row>
<el-row
:gutter=
"10"
>
<el-row>
<span
class=
"card-title"
>
{{
$t
(
"
详细信息
"
)
}}
</span>
</el-row>
<el-row>
<el-form-item
:label=
"$t('兑换方式')"
prop=
"redeemType"
>
<dict-selector
clearable
:disabled=
"veriftyDisable"
:type=
"DICT_TYPE.WAY_OF_RECEIVING"
v-model=
"item.redeemType"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('兑换入口')"
>
<dict-selector
clearable
:disabled=
"true"
v-model=
"item.entrance"
:type=
"DICT_TYPE.PLATFORM_TYPE"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('费用')"
required
>
<el-row
:gutter=
"10"
>
<el-col
:span=
"12"
>
<el-form-item
prop=
"expenses"
>
<el-input
v-model=
"item.expenses"
:disabled=
"veriftyDisable"
:placeholder=
"$t('请输入数字')"
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
</el-col>
<el-col
:span=
"10"
>
<el-form-item
prop=
"currency"
>
<el-select
v-model=
"item.currency"
:disabled=
"veriftyDisable"
:placeholder=
"$t('请选择币种')"
>
<el-option
v-for=
"nodeItem in currencyList"
:key=
"nodeItem.id"
:label=
"
isChinese ? nodeItem.titleZh : nodeItem.titleEn
"
:value=
"nodeItem.id"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form-item>
<el-form-item
:label=
"$t('收件人姓名')"
prop=
"recipientName"
><el-input
:placeholder=
"$t('请输入收件人姓名')"
clearable
v-model=
"item.recipientName"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('收件人电话')"
prop=
"recipientPhoneNum"
>
<el-input
:placeholder=
"$t('请输入收件人电话')"
clearable
v-model=
"item.recipientPhoneNum"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('收件人地址')"
prop=
"recipientAddress"
v-if=
"item.redeemType != '1'"
>
<el-input
:placeholder=
"$t('请输入收件人地址')"
clearable
v-model=
"item.recipientAddress"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('兑换人')"
>
<el-input
:placeholder=
"$t('请输入兑换人')"
clearable
v-model=
"item.redeemer"
:disabled=
"veriftyDisable"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('兑换时间')"
>
<el-date-picker
type=
"date"
placement=
"bottom-start"
:disabled=
"veriftyDisable"
value-format=
"yyyy-MM-dd HH:mm:ss"
:placeholder=
"$t('选择兑换时间')"
v-model=
"item.redemptionTime"
></el-date-picker>
</el-form-item>
<el-form-item
:label=
"$t('快递公司')"
v-if=
"item.redeemType != '1'"
>
<el-select
v-model=
"item.courierCompany"
:placeholder=
"$t('请选择快递公司')"
>
<el-option
v-for=
"nodeItem in expressList"
:key=
"nodeItem.id"
:label=
"nodeItem.companyName"
:value=
"nodeItem.id"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('快递单号')"
v-if=
"item.redeemType != '1'"
>
<el-input
:placeholder=
"$t('请输入快递单号')"
clearable
v-model=
"item.expressNo"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('快递日期')"
v-if=
"item.redeemType != '1'"
>
<el-date-picker
type=
"date"
:placeholder=
"$t('选择快递日期')"
v-model=
"item.expressDate"
value-format=
"yyyy-MM-dd HH:mm:ss"
placement=
"bottom-start"
></el-date-picker>
</el-form-item>
<el-form-item
:label=
"$t('快递寄出人')"
>
<el-input
:placeholder=
"$t('请输入快递寄出人')"
clearable
v-model=
"item.expressSender"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('上传附件')"
>
<file-upload
v-model=
"item.annex"
:disabled=
"veriftyDisable || viewRecordDisable"
></file-upload>
</el-form-item>
<el-form-item
:label=
"$t('备注')"
>
<el-input
style=
"width: 500px"
:disabled=
"veriftyDisable"
type=
"textarea"
v-model=
"item.remark"
></el-input>
</el-form-item>
<div
class=
"view"
v-if=
"viewRecordDisable || veriftyDisable"
>
<el-form-item
:label=
"$t('核销人')"
>
<el-input
v-model=
"item.verifyUser"
></el-input>
</el-form-item>
<el-form-item
:label=
"$t('核销时间')"
>
<el-date-picker
type=
"date"
:placeholder=
"$t('选择核销时间')"
v-model=
"item.verifyTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
placement=
"bottom-start"
></el-date-picker>
</el-form-item>
<el-form-item
:label=
"$t('创建人')"
v-if=
"!veriftyDisable"
>
<el-input
v-model=
"item.creatorName"
></el-input>
</el-form-item>
<el-form-item
:label=
"$t('创建时间')"
v-if=
"!veriftyDisable"
>
<el-date-picker
type=
"date"
:placeholder=
"$t('创建时间')"
v-model=
"item.createTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
placement=
"bottom-start"
></el-date-picker>
</el-form-item>
<el-form-item
:label=
"$t('最后更新人')"
v-if=
"!veriftyDisable"
>
<el-input
v-model=
"item.updater"
></el-input>
</el-form-item>
<el-form-item
:label=
"$t('最后更新时间')"
v-if=
"!veriftyDisable"
>
<el-date-picker
type=
"date"
:placeholder=
"$t('最后更新时间')"
v-model=
"item.updateTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
placement=
"bottom-start"
></el-date-picker>
</el-form-item>
</div>
</el-row>
</el-row>
</div>
</el-card>
</el-form>
</div>
<el-row
justify=
"end"
:gutter=
"20"
type=
"flex"
class=
"handleButton"
>
<el-col
:span=
"3"
>
<el-button
type=
"primary"
@
click=
"handleBulkConversion"
v-if=
"!viewRecordDisable"
>
{{
submitButtonText
}}
</el-button
>
</el-col>
<el-col
:span=
"3"
>
<el-button
@
click=
"handleBack"
>
{{
$t
(
"
返回
"
)
}}
</el-button>
</el-col>
</el-row>
</div>
<choose-Gift
:dialogVisible.sync=
"dialogVisible"
@
transferSelectRewards=
"onGetSelectRewardsInfo"
>
</choose-Gift>
</div>
</
template
>
<
script
>
import
{
bulkConversion
}
from
"
@/api/ecw/giftManagement
"
;
import
FileUpload
from
"
@/components/FileUpload
"
;
import
chooseGift
from
"
./components/chooseGift.vue
"
;
import
{
getExpressPage
}
from
"
@/api/ecw/express
"
;
import
{
getCurrencyList
}
from
"
@/api/ecw/currency
"
;
import
{
getNowDateTime
,
parseTime
}
from
"
@/utils/ruoyi
"
;
import
{
getMemberList
}
from
"
@/api/ecw/giftManagement
"
;
import
{
getRewardDetailQuery
,
updatedRewardsDetails
,
verifyRedeem
,
}
from
"
@/api/ecw/memberManagement
"
;
import
{
memberUserGet
}
from
"
@/api/member/user
"
;
export
default
{
name
:
"
exchangeRecordOperation
"
,
components
:
{
chooseGift
,
FileUpload
,
},
data
()
{
var
validatePass2
=
(
rule
,
value
,
callback
)
=>
{
if
(
!
this
.
quantityComputation
)
{
return
callback
(
new
Error
(
this
.
$t
(
"
兑换积分大于当前总积分,请重新输入兑换数量
"
))
);
}
else
{
return
callback
();
}
};
return
{
env
:
process
.
env
.
NODE_ENV
,
// 是否显示弹出层
dialogVisible
:
false
,
// 查询参数
queryParamsList
:
[
{
memberId
:
null
,
holdScore
:
null
,
rewardId
:
""
,
pointsRequire
:
""
,
rewardCount
:
null
,
spendCredit
:
null
,
//本次兑换花费积分
remainingPoints
:
null
,
//剩余积分
redeemType
:
null
,
entrance
:
1
,
expenses
:
null
,
currency
:
null
,
recipientName
:
null
,
recipientPhoneNum
:
null
,
recipientAddress
:
null
,
redeemer
:
this
.
$store
.
getters
.
name
,
redemptionTime
:
getNowDateTime
(),
courierCompany
:
null
,
expressNo
:
null
,
expressSender
:
this
.
$store
.
getters
.
name
,
expressDate
:
null
,
remark
:
null
,
annex
:
null
,
memberName
:
null
,
rewardName
:
null
,
},
],
// 网点
nodeList
:
[],
//快递公司列表
expressList
:
[],
currencyList
:
[],
quantityComputation
:
null
,
checkFormResult
:
[],
rewardEdit
:
false
,
submitButtonText
:
"
确认兑换
"
,
viewRecordDisable
:
false
,
veriftyDisable
:
false
,
rules
:
{
rewardCount
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入兑换数量
"
),
trigger
:
"
blur
"
,
},
{
validator
:
validatePass2
,
trigger
:
[
"
blur
"
,
"
change
"
],
},
],
rewardName
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请选择礼品
"
),
trigger
:
"
blur
"
,
},
],
expenses
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入费用
"
),
trigger
:
"
blur
"
,
},
{
pattern
:
/^
\d
+
(\.\d{1,2})?
$/
,
message
:
this
.
$t
(
"
请输入整数或保留小数点后两位
"
),
trigger
:
"
blur
"
,
},
],
currency
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请选择币种
"
),
trigger
:
"
change
"
,
},
],
redeemType
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请选择兑换方式
"
),
trigger
:
"
change
"
,
},
],
recipientName
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入收件人姓名
"
),
trigger
:
"
blur
"
,
},
],
recipientPhoneNum
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入收件人电话
"
),
trigger
:
"
blur
"
,
},
],
recipientAddress
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入收件人地址
"
),
trigger
:
"
blur
"
,
},
],
},
};
},
computed
:
{
isChinese
()
{
return
this
.
$i18n
.
locale
===
"
zh_CN
"
;
},
},
created
()
{
this
.
getExpressList
();
this
.
currencyListAPI
();
switch
(
this
.
$route
.
query
.
pageStatus
)
{
case
"
edit
"
:
this
.
submitButtonText
=
this
.
$t
(
"
保存
"
);
this
.
getExchangeDetail
();
break
;
case
"
view
"
:
this
.
viewRecordDisable
=
true
;
this
.
getExchangeDetail
();
break
;
case
"
verify
"
:
this
.
veriftyDisable
=
true
;
this
.
submitButtonText
=
this
.
$t
(
"
确认核销
"
);
this
.
getExchangeDetail
();
break
;
case
"
add
"
:
this
.
submitButtonText
=
this
.
$t
(
"
确认兑换
"
);
this
.
getDetails
();
break
;
default
:
this
.
submitButtonText
=
this
.
$t
(
"
确认兑换
"
);
break
;
}
},
activated
()
{},
methods
:
{
getDetails
()
{
memberUserGet
({
id
:
this
.
$route
.
query
.
memberId
}).
then
((
r
)
=>
{
console
.
log
(
r
,
"
rrrr
"
);
// this.details = r.data;
this
.
isChinese
?
(
this
.
queryParamsList
[
0
].
memberName
=
r
.
data
.
nickname
)
:
(
this
.
queryParamsList
[
0
].
memberName
=
r
.
data
.
englishName
);
this
.
queryParamsList
[
0
].
holdScore
=
r
.
data
.
userScoreLevelInfo
.
holdScore
;
this
.
queryParamsList
[
0
].
memberId
=
r
.
data
.
id
;
});
},
getExchangeDetail
()
{
this
.
queryParamsList
=
[];
this
.
$nextTick
(()
=>
{
let
params
=
{
id
:
this
.
$route
.
query
.
exchangeRewardID
,
};
getRewardDetailQuery
(
params
).
then
((
res
)
=>
{
this
.
rewardEdit
=
true
;
const
data
=
res
.
data
;
let
params
=
this
.
queryParamsList
[
0
];
this
.
queryParamsList
=
[{
...
data
,
params
}];
if
(
this
.
isChinese
)
{
this
.
queryParamsList
[
0
].
memberName
=
data
.
memberNameZh
;
this
.
queryParamsList
[
0
].
rewardName
=
data
.
rewardTitleZh
;
}
else
{
this
.
queryParamsList
[
0
].
memberName
=
data
.
memberNameEn
;
this
.
queryParamsList
[
0
].
rewardName
=
data
.
rewardTitleEn
;
}
this
.
queryParamsList
[
0
].
redemptionTime
=
parseTime
(
data
.
redemptionTime
);
//兑换时间
this
.
queryParamsList
[
0
].
verifyUser
=
this
.
$store
.
getters
.
name
;
this
.
queryParamsList
[
0
].
verifyTime
=
parseTime
(
data
.
verifyTime
);
this
.
queryParamsList
[
0
].
updateTime
=
parseTime
(
data
.
updateTime
);
this
.
queryParamsList
[
0
].
createTime
=
parseTime
(
data
.
createTime
);
this
.
queryParamsList
[
0
].
expressDate
=
parseTime
(
data
.
expressDate
);
//快递时间
this
.
handleRewardCount
(
data
,
0
,
data
.
rewardCount
);
if
(
this
.
$route
.
query
.
pageStatus
==
"
verify
"
)
{
this
.
queryParamsList
[
0
].
verifyTime
=
getNowDateTime
();
}
this
.
$forceUpdate
();
});
});
},
handleSelectMemberQuery
(
item
)
{
this
.
isChinese
?
(
this
.
queryParamsList
[
0
].
memberName
=
item
.
memberNameZh
)
:
(
this
.
queryParamsList
[
0
].
memberName
=
item
.
englishName
);
this
.
queryParamsList
[
0
].
holdScore
=
item
.
holdScore
;
this
.
queryParamsList
[
0
].
memberId
=
item
.
id
;
this
.
queryParamsList
[
0
].
spendCredit
=
this
.
queryParamsList
[
0
].
pointsRequire
*
this
.
queryParamsList
[
0
].
rewardCount
;
this
.
queryParamsList
[
0
].
remainingPoints
=
this
.
queryParamsList
[
0
].
holdScore
-
this
.
queryParamsList
[
0
].
spendCredit
;
this
.
quantityComputation
=
this
.
queryParamsList
[
0
].
remainingPoints
>=
0
?
true
:
false
;
},
querySearchAsync
(
queryString
,
cb
)
{
let
result
=
[];
if
(
queryString
==
""
)
{
cb
(
result
);
}
else
{
try
{
let
params
=
{
country
:
null
,
city
:
null
,
endTime
:
""
,
holdScore
:
null
,
holdScoreOperate
:
null
,
key
:
this
.
queryParamsList
[
0
].
memberName
,
pageNo
:
1
,
pageSize
:
20
,
startTime
:
""
,
usedScore
:
null
,
usedScoreOperate
:
null
,
};
getMemberList
(
params
).
then
((
res
)
=>
{
result
=
res
.
data
.
list
.
map
((
item
)
=>
{
if
(
this
.
isChinese
)
{
return
{
...
item
,
value
:
`
${
item
.
memberNameZh
}
(
${
item
.
mobile
}
)`
,
};
}
else
{
return
{
...
item
,
value
:
`
${
item
.
memberNameEn
}
(
${
item
.
mobile
}
)`
,
};
}
});
cb
(
result
);
});
}
catch
{
this
.
$message
.
success
(
this
.
$t
(
"
获取数据失败
"
));
}
}
},
handleRewardCount
(
item
,
index
,
value
)
{
this
.
queryParamsList
[
index
].
spendCredit
=
this
.
queryParamsList
[
index
].
pointsRequire
*
value
;
this
.
queryParamsList
[
index
].
remainingPoints
=
this
.
queryParamsList
[
index
].
holdScore
-
this
.
queryParamsList
[
index
].
spendCredit
;
this
.
quantityComputation
=
this
.
queryParamsList
[
index
].
remainingPoints
>=
0
?
true
:
false
;
},
currencyListAPI
()
{
getCurrencyList
().
then
((
res
)
=>
{
this
.
currencyList
=
res
.
data
;
});
},
onGetSelectRewardsInfo
(
item
)
{
this
.
queryParamsList
[
0
].
rewardId
=
item
.
id
;
this
.
queryParamsList
[
0
];
if
(
this
.
isChinese
)
{
this
.
queryParamsList
[
0
].
rewardName
=
item
.
titleZh
;
}
else
{
this
.
queryParamsList
[
0
].
rewardName
=
item
.
titleEn
;
}
this
.
queryParamsList
[
0
].
pointsRequire
=
item
.
pointsRequire
;
this
.
queryParamsList
[
0
].
rewardCount
=
""
;
this
.
queryParamsList
[
0
].
spendCredit
=
""
;
this
.
queryParamsList
[
0
].
remainingPoints
=
this
.
queryParamsList
[
0
].
holdScore
;
this
.
quantityComputation
=
this
.
queryParamsList
[
0
].
remainingPoints
>=
0
?
true
:
false
;
},
handleSelectMember
()
{
this
.
dialogVisible
=
true
;
},
getExpressList
()
{
let
params
=
{
pageNo
:
1
,
pageSize
:
1000
,
};
getExpressPage
(
params
).
then
((
res
)
=>
{
this
.
expressList
=
res
.
data
.
list
;
});
},
handleBack
()
{
this
.
$store
.
dispatch
(
"
tagsView/delCurrentView
"
);
},
checkForm
(
formName
)
{
const
result
=
new
Promise
((
resolve
,
reject
)
=>
{
this
.
$refs
[
formName
][
0
].
validate
((
valid
)
=>
{
if
(
valid
)
{
resolve
();
}
else
{
reject
();
}
});
});
this
.
checkFormResult
.
push
(
result
);
},
resetForm
()
{
this
.
queryParamsList
=
[
{
memberId
:
null
,
holdScore
:
null
,
rewardId
:
""
,
pointsRequire
:
""
,
rewardCount
:
null
,
spendCredit
:
null
,
//本次兑换花费积分
remainingPoints
:
null
,
//剩余积分
redeemType
:
null
,
entrance
:
1
,
expenses
:
null
,
currency
:
null
,
recipientName
:
null
,
recipientPhoneNum
:
null
,
recipientAddress
:
null
,
redeemer
:
this
.
$store
.
getters
.
name
,
redemptionTime
:
getNowDateTime
(),
courierCompany
:
null
,
expressNo
:
null
,
expressSender
:
this
.
$store
.
getters
.
name
,
expressDate
:
null
,
remark
:
null
,
annex
:
null
,
memberName
:
null
,
rewardName
:
null
,
},
];
},
handleBulkConversion
()
{
this
.
queryParamsList
.
forEach
((
element
)
=>
{
this
.
checkForm
(
`queryForm
${
element
.
memberId
}
`
);
});
Promise
.
all
(
this
.
checkFormResult
)
.
then
((
res
)
=>
{
this
.
checkFormResult
=
[];
let
params
=
this
.
queryParamsList
.
map
((
item
)
=>
{
if
(
item
.
redeemType
==
"
1
"
)
{
let
{
recipientAddress
,
expressNo
,
expressDate
,
courierCompany
,
...
itemNew
}
=
item
;
return
itemNew
;
}
else
{
return
item
;
}
});
if
(
this
.
$route
.
query
.
pageStatus
==
"
edit
"
)
{
updatedRewardsDetails
(
params
[
0
]).
then
((
res
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
更新成功
"
));
this
.
$router
.
go
(
-
1
);
});
//编辑
}
else
if
(
this
.
$route
.
query
.
pageStatus
==
"
verify
"
)
{
verifyRedeem
(
params
[
0
]).
then
((
res
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
核销成功
"
));
this
.
$router
.
go
(
-
1
);
});
}
else
{
//兑换
bulkConversion
(
params
).
then
((
res
)
=>
{
if
(
res
.
code
==
"
0
"
)
{
this
.
queryParamsList
=
this
.
resetForm
();
this
.
$message
.
success
(
this
.
$t
(
"
兑换成功
"
));
this
.
$router
.
go
(
-
1
);
}
});
}
})
.
catch
(()
=>
{
this
.
checkFormResult
=
[];
this
.
$message
.
error
(
this
.
$t
(
"
请填写必要的信息
"
));
});
},
},
};
</
script
>
<
style
>
#colorRedInput
.el-input__inner
{
color
:
red
;
font-size
:
14px
;
}
</
style
>
<
style
scoped
lang=
"scss"
>
.card-title
{
padding-right
:
10px
;
border-right
:
4px
solid
rgb
(
64
,
158
,
255
);
font-size
:
16px
;
font-weight
:
600
;
}
.del-btn
{
color
:
red
;
}
.app-container
.el-date-editor.el-input
,
.el-date-editor.el-input__inner
{
width
:
194px
;
}
.container
{
padding
:
20px
0
;
}
.emptyText
{
font-size
:
20px
;
padding
:
20px
;
line-height
:
200px
;
text-align
:
center
;
color
:
#97a8be
;
}
.handleButton
{
padding-right
:
160px
;
margin-top
:
50px
;
button
{
width
:
100%
;
}
}
</
style
>
src/views/ecw/memberManagement/integralRecord/index.vue
0 → 100644
View file @
7e0c1c55
<
template
>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
v-show=
"showSearch"
:inline=
"true"
label-width=
"120px"
>
<el-form-item
:label=
"$t('关键词')"
>
<el-input
style=
"width: 300px"
v-model.trim=
"queryParams.key"
:placeholder=
"$t('请输入会员名称/会员编号/手机号')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('积分来源')"
>
<dict-selector
clearable
:type=
"DICT_TYPE.MEMBER_SCORE_SOURCE"
v-model=
"queryParams.sourceType"
@
change=
"handleQuery"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('标题')"
>
<el-input
style=
"width: 300px"
v-model.trim=
"queryParams.ruleTitle"
:placeholder=
"$t('请输入关键词查找')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('规则说明')"
>
<el-input
style=
"width: 300px"
v-model.trim=
"queryParams.ruleDesc"
:placeholder=
"$t('请输入关键词查找')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('当前积分')"
>
<el-row
:gutter=
"10"
style=
"width: 300px"
>
<el-col
:span=
"10"
>
<dict-selector
clearable
:type=
"DICT_TYPE.QUANTITATIVE_RELATION_SYMBOL"
v-model=
"queryParams.scoreCountOperate"
@
change=
"handleQuery"
>
</dict-selector>
</el-col>
<el-col
:span=
"14"
>
<el-input
v-model.trim=
"queryParams.scoreCount"
:placeholder=
"$t('请输入数字')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-col>
</el-row>
</el-form-item>
<el-form-item
:label=
"$t('时间')"
>
<el-date-picker
type=
"datetimerange"
clearable
placement=
"bottom-start"
v-model=
"dateRangeCreateTime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd HH:mm:ss"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
"
搜索
"
)
}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
"
重置
"
)
}}
</el-button>
</el-form-item>
</el-form>
<el-row
class=
"mb8"
>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"handleQueryPagination"
></right-toolbar>
</el-row>
<el-table
ref=
"multipleTable"
v-loading=
"loading"
:data=
"memberList"
>
<el-table-column
width=
"140"
:label=
"$t('积分记录ID')"
align=
"center"
prop=
"id"
></el-table-column>
<el-table-column
:label=
"$t('会员名称')"
align=
"center"
>
<template
v-slot=
"
{ row }">
<el-button
type=
"text"
@
click=
"
$router.push('/member/member/member-details/' + row.memberId)
"
>
{{
isChinese
?
row
.
memberNameZh
:
row
.
memberNameEn
}}
</el-button
>
</
template
>
</el-table-column>
<el-table-column
width=
"140"
:label=
"$t('封面图片')"
align=
"center"
prop=
"mobile"
>
<
template
slot-scope=
"scope"
>
<el-image
:src=
"isChinese ? scope.row.coverImageZh : scope.row.coverImageEn"
style=
"width: 50px; height: 50px"
>
{{
$t
(
"
无
"
)
}}
</el-image
>
</
template
>
</el-table-column>
<el-table-column
width=
"140"
align=
"center"
:label=
"$t('分值')"
prop=
"scoreCount"
></el-table-column>
<el-table-column
:label=
"$t('类别')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
{{
isChinese
?
handleholdScoreStatus
(
scope
.
row
.
operateType
).
label
:
handleholdScoreStatus
(
scope
.
row
.
operateType
).
labelEn
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('积分来源')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
{{
isChinese
?
handleSourceType
(
scope
.
row
.
sourceType
).
label
:
handleSourceType
(
scope
.
row
.
sourceType
).
labelEn
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('规则标题')"
align=
"center"
:prop=
"isChinese ? 'ruleTitleZh' : 'ruleTitleEn'"
>
</el-table-column>
<el-table-column
:label=
"$t('规则说明')"
align=
"center"
:prop=
"isChinese ? 'ruleDescZh' : 'ruleDescEn'"
>
</el-table-column>
<el-table-column
:label=
"$t('操作积分时间')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
{{
parseTime
(
row
.
createTime
)
||
"
/
"
}}
</
template
>
</el-table-column>
<el-table-column
width=
"300"
:label=
"$t('详细信息')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
<!-- 人工操作-->
<span
v-if=
"row.sourceType == '1'"
>
{{
row
.
extParamJson
.
comment
||
"
-
"
}}
</span>
<!-- 兑换礼品2 兑换礼品撤销4 跳转兑换记录详情-->
<el-button
v-if=
"row.sourceType == '2' || row.sourceType == '4'"
type=
"text"
@
click=
"
$router.push(
{
path: '/memberManagement/exchangeRecordOperation',
query: {
pageStatus: 'view',
exchangeRewardID: row.extParamJson.redeemId,
},
})
"
>
{{
`${$t("兑换记录ID")
}
:${row.extParamJson.redeemId
}
`
}}
<
/el-butto
n
>
<!--
系统过期
sourceType
=
3
不展示
-->
<
span
v
-
if
=
"
row.sourceType == '3'
"
>
-<
/span
>
<!--
订单
V
值
:
sourceType
=
5
,
extParamJson
中取
orderId
跳转订单详情
-->
<
el
-
button
v
-
if
=
"
row.sourceType == '5'
"
type
=
"
text
"
@
click
=
"
$router.push({
path: '/order/detail',
query: {
orderId: row.extParamJson.orderId,
}
,
}
)
"
>
{{
`${$t("订单ID")
}
:${row.extParamJson.orderId
}
`
}}
<
/el-butto
n
>
<!--
注册
sourceType
=
6
,
extParamJson
中取
userId
,
userNameZh
,
userNameZh
,
phone
展示会员名
+
手机号(手机号脱敏处理)
推荐
:
sourceType
=
7
,
extParamJson
中取
userId
,
userNameZh
,
userNameZh
,
phone
展示会员名
+
手机号(手机号脱敏处理)
-->
<
span
v
-
if
=
"
row.sourceType == '6' || row.sourceType == '7'
"
>
{{
`${
isChinese
? row.extParamJson.userNameZh
: row.extParamJson.userNameEn
}
(${row.extParamJson.phone
}
)`
}}
<
/spa
n
>
<!--
sourceType
=
8
,
extParamJson
中取
scoreRuleId
跳转活动详情
-->
<
el
-
button
v
-
if
=
"
row.sourceType == '8'
"
type
=
"
text
"
@
click
=
"
$router.push({
path: '/memberManagement/addIntegrationRuleOperation',
query: {
id: row.extParamJson.scoreRuleId,
pageStatus: 'view',
}
,
}
)
"
>
{{
`${$t("活动ID")
}
:${row.extParamJson.scoreRuleId
}
`
}}
<
/el-butto
n
>
<
/template
>
<
/el-table-column
>
<
/el-table
>
<!--
//分页列表 -->
<
pagination
v
-
show
=
"
total > 0
"
:
total
=
"
total
"
:
page
.
sync
=
"
queryParams.pageNo
"
:
limit
.
sync
=
"
queryParams.pageSize
"
@
pagination
=
"
handleQueryPagination
"
/>
<
/div
>
<
/template
>
<
script
>
import
{
getDictDatas
,
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
{
queryMemberScoreRecord
}
from
"
@/api/ecw/memberManagement
"
;
export
default
{
name
:
"
integralRecord
"
,
data
()
{
return
{
dateRangeCreateTime
:
[],
total
:
0
,
loading
:
true
,
// 显示搜索条件
showSearch
:
true
,
memberList
:
[],
queryParams
:
{
ruleTitle
:
""
,
ruleDesc
:
""
,
key
:
""
,
sourceType
:
""
,
scoreCount
:
""
,
scoreCountOperate
:
""
,
endTime
:
""
,
pageNo
:
1
,
pageSize
:
10
,
startTime
:
""
,
}
,
}
;
}
,
computed
:
{
isChinese
()
{
return
this
.
$i18n
.
locale
===
"
zh_CN
"
;
}
,
}
,
created
()
{
this
.
handleQuery
();
}
,
activated
()
{
this
.
handleQuery
();
}
,
methods
:
{
//积分来源
handleSourceType
(
id
)
{
return
this
.
getDictDatas
(
DICT_TYPE
.
MEMBER_SCORE_SOURCE
).
filter
(
(
item
)
=>
item
.
value
==
id
)[
0
];
}
,
handleholdScoreStatus
(
id
)
{
return
this
.
getDictDatas
(
DICT_TYPE
.
MEMBER_SCORE_OPERATE_TYPE
).
filter
(
(
item
)
=>
item
.
value
==
id
)[
0
];
}
,
handleQuery
()
{
this
.
queryParams
.
pageNo
=
1
;
let
params
=
{
...
this
.
queryParams
}
;
if
(
this
.
dateRangeCreateTime
)
{
params
.
startTime
=
this
.
dateRangeCreateTime
[
0
];
params
.
endTime
=
this
.
dateRangeCreateTime
[
1
];
}
queryMemberScoreRecord
(
params
).
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
memberList
=
res
.
data
.
list
;
this
.
total
=
res
.
data
.
total
;
}
);
}
,
handleQueryPagination
()
{
let
params
=
{
...
this
.
queryParams
}
;
if
(
this
.
dateRangeCreateTime
)
{
params
.
startTime
=
this
.
dateRangeCreateTime
[
0
];
params
.
endTime
=
this
.
dateRangeCreateTime
[
1
];
}
queryMemberScoreRecord
(
params
).
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
memberList
=
res
.
data
.
list
;
this
.
total
=
res
.
data
.
total
;
}
);
}
,
resetQuery
()
{
this
.
loading
=
true
;
this
.
dateRangeCreateTime
=
[];
this
.
queryParams
=
{
ruleTitle
:
""
,
ruleDesc
:
""
,
key
:
""
,
sourceType
:
""
,
scoreCount
:
""
,
scoreCountOperate
:
""
,
endTime
:
""
,
pageNo
:
1
,
pageSize
:
10
,
startTime
:
""
,
}
;
this
.
handleQuery
();
}
,
}
,
}
;
<
/script
>
src/views/ecw/memberManagement/integrationRule/index.vue
0 → 100644
View file @
7e0c1c55
<
template
>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form-item
:label=
"$t('指标类型')"
>
<dict-selector
clearable
:type=
"DICT_TYPE.SCORE_RULE_TYPE"
v-model=
"queryParams.type"
@
change=
"handleQuery"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('标题:')"
>
<el-input
style=
"width: 300px"
v-model.trim=
"queryParams.title"
:placeholder=
"$t('请输入查找')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('规则说明')"
>
<el-input
style=
"width: 300px"
v-model.trim=
"queryParams.desc"
:placeholder=
"$t('请输入关键词查找')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('状态')"
>
<dict-selector
clearable
:type=
"DICT_TYPE.GIFT_STATUS"
v-model=
"queryParams.status"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('单次积分')"
>
<el-row
:gutter=
"10"
style=
"width: 300px"
>
<el-col
:span=
"10"
>
<dict-selector
clearable
:type=
"DICT_TYPE.QUANTITATIVE_RELATION_SYMBOL"
v-model=
"queryParams.getScoreOnceSymbol"
@
change=
"handleQuery"
>
</dict-selector>
</el-col>
<el-col
:span=
"14"
>
<el-input
v-model.trim=
"queryParams.getScoreOnce"
:placeholder=
"$t('请输入数字')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-col>
</el-row>
</el-form-item>
<el-form-item
:label=
"$t('最高积分')"
>
<el-row
:gutter=
"10"
style=
"width: 300px"
>
<el-col
:span=
"10"
>
<dict-selector
clearable
:type=
"DICT_TYPE.QUANTITATIVE_RELATION_SYMBOL"
v-model=
"queryParams.maxScoreTotalSymbol"
@
change=
"handleQuery"
>
</dict-selector>
</el-col>
<el-col
:span=
"14"
>
<el-input
v-model.trim=
"queryParams.maxScoreTotal"
:placeholder=
"$t('请输入数字')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-col>
</el-row>
</el-form-item>
<el-form-item
:label=
"$t('创建时间')"
>
<el-date-picker
type=
"datetimerange"
clearable
placement=
"bottom-start"
v-model=
"dateRangeCreateTime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd HH:mm:ss"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
"
搜索
"
)
}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
"
重置
"
)
}}
</el-button>
</el-form-item>
</el-form>
<el-row
class=
"mb8"
>
<el-button
type=
"success"
size=
"mini"
icon=
"el-icon-plus"
@
click=
"handleNewScoreRule"
>
{{
$t
(
"
添加规则
"
)
}}
</el-button
>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"handleQueryPagination"
></right-toolbar>
</el-row>
<el-table
ref=
"multipleTable"
v-loading=
"loading"
:data=
"integrationRuleList"
>
<el-table-column
width=
"140"
:label=
"$t('指标类型')"
align=
"center"
>
<template
slot-scope=
"scope"
>
{{
isChinese
?
handleSourceType
(
scope
.
row
.
type
).
label
:
handleSourceType
(
scope
.
row
.
type
).
labelEn
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('标题')"
align=
"center"
:prop=
"isChinese ? 'titleZh' : 'titleEn'"
></el-table-column>
<el-table-column
:label=
"$t('开始时间')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
{{
parseTime
(
row
.
startTime
)
||
"
/
"
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('结束时间')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
{{
parseTime
(
row
.
endTime
)
||
"
/
"
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('单次积分')"
align=
"center"
prop=
"getScoreOnce"
>
</el-table-column>
<el-table-column
:label=
"$t('累计最高积分')"
align=
"center"
prop=
"maxScoreTotal"
>
</el-table-column>
<el-table-column
:label=
"$t('规则说明')"
align=
"center"
:prop=
"isChinese ? 'descZh' : 'descEn'"
>
</el-table-column>
<el-table-column
:label=
"$t('展示平台')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
{{
handlePlatform
(
row
.
showPlatform
)
||
"
/
"
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('状态')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
{{
$l
(
handleStatus
(
row
.
status
),
"
label
"
)
||
"
/
"
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('创建人')"
align=
"center"
prop=
"creator"
>
</el-table-column>
<el-table-column
:label=
"$t('创建时间')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
{{
parseTime
(
row
.
createTime
)
||
"
/
"
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('最后更新人')"
align=
"center"
prop=
"updater"
>
</el-table-column>
<el-table-column
:label=
"$t('最后更新时间')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
{{
parseTime
(
row
.
updateTime
)
||
"
/
"
}}
</
template
>
</el-table-column>
<el-table-column
width=
"220px"
:label=
"$t('操作')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"text"
@
click=
"handleViewDetails(scope.row)"
>
{{
$t
(
"
查看
"
)
}}
</el-button
>
<el-button
size=
"mini"
type=
"text"
:disabled=
"scope.row.status != '1'"
@
click=
"handleCloseButton(scope.row)"
>
{{
$t
(
"
关闭
"
)
}}
</el-button
>
<el-button
size=
"mini"
type=
"text"
@
click=
"handleCopyButton(scope.row)"
>
{{
$t
(
"
复制
"
)
}}
</el-button
>
<el-button
size=
"mini"
type=
"text"
:disabled=
"scope.row.status != '1'"
@
click=
"handleDelayButton(scope.row)"
>
{{
$t
(
"
延期
"
)
}}
</el-button
>
<el-button
size=
"mini"
:disabled=
"scope.row.status != '2'"
type=
"text"
@
click=
"handleDelete(scope.row)"
>
{{
$t
(
"
删除
"
)
}}
</el-button
>
<el-button
size=
"mini"
type=
"text"
:disabled=
"scope.row.status != '2'"
@
click=
"handleUpdate(scope.row)"
>
{{
$t
(
"
编辑
"
)
}}
</el-button
>
<el-button
size=
"mini"
type=
"text"
:disabled=
"scope.row.status != '2'"
@
click=
"handleEnabledStatus(scope.row)"
>
{{
$t
(
"
启用
"
)
}}
</el-button
>
</
template
>
</el-table-column>
</el-table>
<!-- //分页列表 -->
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.page"
:limit.sync=
"queryParams.rows"
@
pagination=
"handleQueryPagination"
/>
<el-dialog
:title=
"$t('提示')"
:visible.sync=
"dialogPostponeVisible"
width=
"30%"
>
<el-row
class=
"mb8"
>
{{ $t("请选择延期时间") }}
</el-row>
<el-date-picker
type=
"datetime"
clearable
v-model=
"postponeDatetime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd HH:mm:ss"
:picker-options=
"pickerOptions"
:placeholder=
"$t('请选择时间')"
></el-date-picker>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"dialogPostponeVisible = false"
>
{{
$t("取 消")
}}
</el-button>
<el-button
type=
"primary"
@
click=
"confirmPostponeIntegral"
>
{{
$t("确 定")
}}
</el-button>
</span>
</el-dialog>
</div>
</template>
<
script
>
import
{
getDictDatas
,
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
{
getScoreRecordList
,
integralRuleStatus
,
integralRuleCopy
,
integralRuleDelay
,
integralRuleDelete
,
}
from
"
@/api/ecw/memberManagement
"
;
export
default
{
name
:
"
integralRecord
"
,
data
()
{
return
{
dateRangeCreateTime
:
[],
total
:
0
,
showSearch
:
true
,
loading
:
true
,
dialogPostponeVisible
:
false
,
integrationRuleList
:
[],
postponeIntegralID
:
""
,
postponeDatetime
:
""
,
pickerOptions
:
{
disabledDate
(
time
)
{
return
time
.
getTime
()
<
Date
.
now
()
-
8.64e7
;
},
},
queryParams
:
{
type
:
""
,
title
:
""
,
desc
:
""
,
status
:
""
,
getScoreOnceSymbol
:
""
,
getScoreOnce
:
""
,
maxScoreTotalSymbol
:
""
,
maxScoreTotal
:
""
,
page
:
1
,
rows
:
10
,
},
};
},
computed
:
{
isChinese
()
{
return
this
.
$i18n
.
locale
===
"
zh_CN
"
;
},
},
created
()
{
this
.
handleQuery
();
},
activated
()
{
this
.
handleQuery
();
},
methods
:
{
//编辑操作按钮
handleUpdate
(
row
)
{
this
.
$router
.
push
({
path
:
"
/memberManagement/addIntegrationRuleOperation
"
,
query
:
{
id
:
row
.
id
,
pageStatus
:
"
edit
"
},
});
},
//查看按钮操作
handleViewDetails
(
row
)
{
this
.
$router
.
push
({
path
:
"
/memberManagement/addIntegrationRuleOperation
"
,
query
:
{
id
:
row
.
id
,
pageStatus
:
"
view
"
},
});
},
//延期按钮操作
handleDelayButton
(
row
)
{
this
.
postponeIntegralID
=
row
.
id
;
this
.
dialogPostponeVisible
=
true
;
},
confirmPostponeIntegral
()
{
integralRuleDelay
({
id
:
this
.
postponeIntegralID
,
endTime
:
this
.
postponeDatetime
,
}).
then
((
res
)
=>
{
this
.
postponeDatetime
=
""
;
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
延期成功
"
));
});
},
//删除按钮操作
handleDelete
(
row
)
{
this
.
$modal
.
confirm
(
this
.
$t
(
"
是否确认删除此礼品规则
"
))
.
then
(
function
()
{
return
integralRuleDelete
({
id
:
row
.
id
});
})
.
then
(()
=>
{
this
.
handleQuery
();
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
删除成功
"
));
})
.
catch
(()
=>
{});
},
//启用按钮操作
handleEnabledStatus
(
row
)
{
this
.
$modal
.
confirm
(
this
.
$t
(
"
是否确认启用此礼品规则
"
))
.
then
(
function
()
{
return
integralRuleStatus
({
id
:
row
.
id
,
status
:
"
1
"
});
})
.
then
(()
=>
{
this
.
handleQuery
();
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
启用成功
"
));
})
.
catch
(()
=>
{});
},
//复制按钮操作
handleCopyButton
(
row
)
{
this
.
$modal
.
confirm
(
this
.
$t
(
"
是否确认复制礼品规则
"
))
.
then
(
function
()
{
return
integralRuleCopy
({
id
:
row
.
id
});
})
.
then
(()
=>
{
this
.
handleQuery
();
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
复制成功
"
));
})
.
catch
(()
=>
{});
},
//关闭按钮操作
handleCloseButton
(
row
)
{
this
.
$modal
.
confirm
(
this
.
$t
(
"
是否确认关闭此礼品规则
"
))
.
then
(
function
()
{
return
integralRuleStatus
({
id
:
row
.
id
,
status
:
"
3
"
});
})
.
then
(()
=>
{
this
.
handleQuery
();
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
关闭成功
"
));
})
.
catch
(()
=>
{});
},
// new score rule func
handleNewScoreRule
()
{
this
.
$router
.
push
({
path
:
"
/memberManagement/addIntegrationRuleOperation
"
,
query
:
{
pageStatus
:
"
new
"
},
});
},
//积分来源
handleSourceType
(
id
)
{
return
this
.
getDictDatas
(
DICT_TYPE
.
SCORE_RULE_TYPE
).
filter
(
(
item
)
=>
item
.
value
==
id
)[
0
];
},
// 活动状态
handleStatus
(
id
)
{
return
this
.
getDictDatas
(
DICT_TYPE
.
GIFT_STATUS
).
filter
(
(
item
)
=>
item
.
value
==
id
)[
0
];
},
arraysEqual
(
arr1
,
arr2
)
{
return
arr1
.
filter
((
current
)
=>
{
return
arr2
.
find
((
item
)
=>
item
==
current
.
value
.
toString
())
?
true
:
false
;
});
},
//展示平台
handlePlatform
(
platformId
)
{
let
platformIdLabel
=
[];
if
(
this
.
isChinese
)
{
this
.
arraysEqual
(
this
.
getDictDatas
(
DICT_TYPE
.
PLATFORM_TYPE
),
platformId
.
split
(
"
,
"
)
).
forEach
((
element
)
=>
{
platformIdLabel
.
push
(
element
.
label
);
});
}
else
{
this
.
arraysEqual
(
this
.
getDictDatas
(
DICT_TYPE
.
PLATFORM_TYPE
),
platformId
.
split
(
"
,
"
)
).
forEach
((
element
)
=>
{
platformIdLabel
.
push
(
element
.
labelEn
);
});
}
return
platformIdLabel
.
join
();
},
handleQuery
()
{
this
.
queryParams
.
page
=
1
;
let
params
=
{
...
this
.
queryParams
};
this
.
addBeginAndEndTime
(
params
,
this
.
dateRangeCreateTime
,
"
createTime
"
,
false
);
getScoreRecordList
(
params
).
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
integrationRuleList
=
res
.
data
.
list
;
this
.
total
=
res
.
data
.
total
;
});
},
handleQueryPagination
()
{
let
params
=
{
...
this
.
queryParams
};
this
.
addBeginAndEndTime
(
params
,
this
.
dateRangeCreateTime
,
"
createTime
"
,
false
);
getScoreRecordList
(
params
).
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
integrationRuleList
=
res
.
data
.
list
;
this
.
total
=
res
.
data
.
total
;
});
},
resetQuery
()
{
this
.
loading
=
true
;
this
.
dateRangeCreateTime
=
[];
this
.
queryParams
=
{
ruleTitle
:
""
,
ruleDesc
:
""
,
key
:
""
,
sourceType
:
""
,
scoreCount
:
""
,
scoreCountOperate
:
""
,
endTime
:
""
,
pageNo
:
1
,
pageSize
:
10
,
startTime
:
""
,
};
this
.
handleQuery
();
},
},
};
</
script
>
src/views/ecw/memberManagement/memberLevelSetting/index.vue
0 → 100644
View file @
7e0c1c55
<
template
>
<div
class=
"app-container"
>
<el-row
class=
"mb8"
>
<el-button
type=
"success"
size=
"mini"
icon=
"el-icon-plus"
@
click=
"handleNewScoreRule"
>
{{
$t
(
"
添加规则
"
)
}}
</el-button
>
<el-button
type=
"success"
size=
"mini"
icon=
"el-icon-delete"
@
click=
"handleDelScoreRule"
>
{{
$t
(
"
删除规则
"
)
}}
</el-button
>
</el-row>
<el-table
ref=
"multipleTable"
v-loading=
"loading"
@
selection-change=
"handleSelectionChange"
:data=
"memberLevelList"
>
<el-table-column
type=
"selection"
width=
"55"
></el-table-column>
<el-table-column
width=
"140"
:label=
"$t('序号')"
align=
"center"
prop=
"id"
></el-table-column>
<el-table-column
:label=
"$t('等级名称')"
align=
"center"
prop=
"name"
></el-table-column>
<el-table-column
width=
"140"
:label=
"$t('图标')"
align=
"center"
prop=
"mobile"
>
<template
slot-scope=
"scope"
>
<el-image
:src=
"scope.row.icon"
style=
"width: 50px; height: 50px"
>
{{
$t
(
"
无
"
)
}}
</el-image>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('积分范围')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
lowerCount
}}
-
{{
scope
.
row
.
upperCount
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('操作')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click=
"handleUpdate(scope.row)"
>
{{
$t
(
"
修改
"
)
}}
</el-button
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-delete"
@
click=
"handleDelete(scope.row)"
>
{{
$t
(
"
删除
"
)
}}
</el-button
>
</
template
>
</el-table-column>
</el-table>
<!-- //分页列表 -->
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"handleQueryPagination"
/>
<el-dialog
:title=
"$t('添加规则')"
:visible.sync=
"dialogVisible"
width=
"30%"
:before-close=
"handleClose"
>
<el-form
:model=
"ruleForm"
ref=
"ruleForm"
label-width=
"100px"
class=
"demo-ruleForm"
>
<el-form-item
:label=
"$t('等级名称')"
>
<el-input
v-model=
"ruleForm.name"
></el-input>
</el-form-item>
<el-form-item
:label=
"$t('积分范围')"
>
<el-col
:span=
"11"
>
<el-form-item>
<el-input
v-model=
"ruleForm.lowerCount"
></el-input>
</el-form-item>
</el-col>
<el-col
class=
"line"
:span=
"2"
>
{{ $t("至") }}
</el-col>
<el-col
:span=
"11"
>
<el-form-item>
<el-input
v-model=
"ruleForm.upperCount"
></el-input>
</el-form-item>
</el-col>
</el-form-item>
<el-form-item
:label=
"$t('上传图标')"
>
<image-upload
v-model=
"ruleForm.icon"
/>
</el-form-item>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"dialogVisible = false"
>
{{ $t("取 消") }}
</el-button>
<el-button
type=
"primary"
@
click=
"handelAddNewMemberLevel"
>
{{
$t("确定")
}}
</el-button>
</span>
</el-dialog>
</div>
</template>
<
script
>
import
{
getDictDatas
,
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
{
getMemberLevelList
,
addNewMemberLevel
,
delMemberLevel
,
editMemberLevel
,
}
from
"
@/api/ecw/memberManagement
"
;
import
ImageUpload
from
"
@/components/ImageUpload
"
;
export
default
{
name
:
"
integralRecord
"
,
components
:
{
ImageUpload
,
},
data
()
{
return
{
dialogVisible
:
false
,
selectList
:
[],
ruleForm
:
{
icon
:
""
,
lowerCount
:
""
,
name
:
""
,
upperCount
:
""
,
},
total
:
0
,
loading
:
true
,
memberLevelList
:
[],
queryParams
:
{
pageNo
:
1
,
pageSize
:
10
,
},
};
},
computed
:
{
isChinese
()
{
return
this
.
$i18n
.
locale
===
"
zh_CN
"
;
},
},
created
()
{
this
.
handleQuery
();
},
activated
()
{
this
.
handleQuery
();
},
methods
:
{
handleUpdate
(
row
)
{
this
.
ruleForm
=
{
...
row
};
this
.
dialogVisible
=
true
;
},
handleDelete
(
row
)
{
let
ids
=
[
row
.
id
];
delMemberLevel
(
ids
).
then
((
res
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
删除成功
"
));
this
.
handleClose
();
this
.
handleQuery
();
});
},
handelAddNewMemberLevel
()
{
if
(
this
.
ruleForm
.
id
)
{
editMemberLevel
(
this
.
ruleForm
).
then
((
res
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
更新成功
"
));
this
.
handleClose
();
this
.
handleQuery
();
});
}
else
{
let
params
=
{
...
this
.
ruleForm
};
addNewMemberLevel
(
params
).
then
((
res
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
保存成功
"
));
this
.
handleClose
();
this
.
handleQuery
();
});
}
},
handleSelectionChange
(
ids
)
{
this
.
selectList
=
ids
;
},
handleClose
()
{
this
.
dialogVisible
=
false
;
this
.
selectList
=
[];
this
.
ruleForm
=
{
icon
:
""
,
lowerCount
:
""
,
name
:
""
,
upperCount
:
""
,
};
},
handleDelScoreRule
()
{
if
(
this
.
selectList
.
length
>
0
)
{
let
ids
=
this
.
selectList
.
map
((
item
)
=>
{
return
item
.
id
;
});
delMemberLevel
(
ids
).
then
((
res
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
删除成功
"
));
this
.
handleClose
();
this
.
handleQuery
();
});
}
else
{
this
.
$message
.
warning
(
this
.
$t
(
"
请先选择要删除的会员等级
"
));
}
},
handleNewScoreRule
()
{
this
.
dialogVisible
=
true
;
},
handleQuery
()
{
this
.
queryParams
.
pageNo
=
1
;
let
params
=
{
...
this
.
queryParams
};
getMemberLevelList
(
params
).
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
memberLevelList
=
res
.
data
.
list
;
this
.
total
=
res
.
data
.
total
;
});
},
handleQueryPagination
()
{
let
params
=
{
...
this
.
queryParams
};
getMemberLevelList
(
params
).
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
memberLevelList
=
res
.
data
.
list
;
this
.
total
=
res
.
data
.
total
;
});
},
},
};
</
script
>
src/views/ecw/memberManagement/memberPointsSummary/index.vue
0 → 100644
View file @
7e0c1c55
<
template
>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"120px"
>
<el-form-item
:label=
"$t('关键词')"
>
<el-input
style=
"width: 300px"
v-model.trim=
"queryParams.key"
:placeholder=
"$t('请输入会员名称/会员编号/手机号')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('国家')"
>
<el-select
v-model=
"queryParams.country"
:placeholder=
"$t('请选择国家')"
clearable
size=
"small"
>
<el-option
v-for=
"nodeItem in countryList"
:key=
"nodeItem.id"
:label=
"isChinese ? nodeItem.titleZh : nodeItem.titleEn"
:value=
"nodeItem.id"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('当前积分')"
>
<el-row
:gutter=
"10"
style=
"width: 300px"
>
<el-col
:span=
"10"
>
<dict-selector
clearable
:type=
"DICT_TYPE.QUANTITATIVE_RELATION_SYMBOL"
v-model=
"queryParams.holdScoreOperate"
@
change=
"handleQuery"
>
</dict-selector>
</el-col>
<el-col
:span=
"14"
>
<el-input
v-model.trim=
"queryParams.holdScore"
:placeholder=
"$t('请输入数字')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-col>
</el-row>
</el-form-item>
<el-form-item
:label=
"$t('已兑换积分')"
>
<el-row
:gutter=
"10"
style=
"width: 300px"
>
<el-col
:span=
"10"
>
<dict-selector
clearable
:type=
"DICT_TYPE.QUANTITATIVE_RELATION_SYMBOL"
v-model=
"queryParams.usedScoreOperate"
@
change=
"handleQuery"
>
</dict-selector>
</el-col>
<el-col
:span=
"14"
>
<el-input
v-model.trim=
"queryParams.usedScore"
:placeholder=
"$t('请输入数字')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-col>
</el-row>
</el-form-item>
<el-form-item
:label=
"$t('会员注册时间')"
>
<el-date-picker
type=
"datetimerange"
clearable
placement=
"bottom-start"
v-model=
"dateRangeCreateTime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd HH:mm:ss"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
"
搜索
"
)
}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
"
重置
"
)
}}
</el-button>
</el-form-item>
</el-form>
<el-row
class=
"mb8"
>
<el-button
type=
"success"
size=
"mini"
icon=
"el-icon-plus"
@
click=
"handleScore"
>
{{
$t
(
"
操作积分
"
)
}}
</el-button
>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"handleQueryPagination"
></right-toolbar>
</el-row>
<el-table
ref=
"multipleTable"
v-loading=
"loading"
@
selection-change=
"handleSelectionChange"
:data=
"memberList"
>
<el-table-column
type=
"selection"
width=
"55"
>
</el-table-column>
<el-table-column
width=
"140"
:label=
"$t('会员编号')"
align=
"center"
prop=
"id"
></el-table-column>
<el-table-column
:label=
"$t('会员名称')"
align=
"center"
>
<template
v-slot=
"
{ row }">
<el-button
type=
"text"
@
click=
"$router.push('/member/member/member-details/' + row.id)"
>
{{
isChinese
?
row
.
memberNameZh
:
row
.
memberNameEn
}}
</el-button
>
</
template
></el-table-column
>
<el-table-column
width=
"140"
:label=
"$t('联系方式')"
align=
"center"
prop=
"mobile"
></el-table-column>
<el-table-column
width=
"140"
align=
"center"
:label=
"$t('国家')"
:prop=
"isChinese ? 'countryNameZh' : 'countryNameEn'"
></el-table-column>
<el-table-column
:label=
"$t('当前积分')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
<el-button
type=
"text"
@
click=
"$router.push('/memberManagement/integralRecord')"
>
{{
row
.
holdScore
}}
</el-button
>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('已兑换积分')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
<el-button
type=
"text"
@
click=
"$router.push('/memberManagement/exchangeRecord')"
>
{{
row
.
usedScore
}}
</el-button
>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('已失效积分')"
align=
"center"
prop=
"expiredScore"
></el-table-column>
<el-table-column
:label=
"$t('会员注册时间')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
{{
parseTime
(
row
.
createTime
)
||
"
/
"
}}
</
template
>
</el-table-column>
</el-table>
<!-- //分页列表 -->
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"handleQueryPagination"
/>
<el-dialog
:title=
"$t('操作积分')"
:visible.sync=
"dialogVisible"
width=
"30%"
:before-close=
"handleClose"
>
<el-form
ref=
"form"
:model=
"formQuery"
label-width=
"80px"
>
<el-form-item
:label=
"$t('会员')"
>
<el-select
v-model=
"formQuery.memberIds"
multiple
placeholder=
"请选择"
>
<el-option
v-for=
"item in selectedMember"
:key=
"item.id"
:label=
"isChinese ? item.memberNameZh : item.memberNameEn"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('操作')"
>
<el-radio-group
v-model=
"formQuery.operateType"
>
<el-radio
v-for=
"dict in getDictDatas(DICT_TYPE.MEMBER_SCORE_OPERATE_TYPE)"
:key=
"dict.value"
:label=
"dict.value"
>
{{ $l(dict, "label") }}
</el-radio
>
</el-radio-group>
</el-form-item>
<el-form-item
:label=
"$t('积分')"
>
<el-input
v-model.number=
"formQuery.scoreCount"
:placeholder=
"$t('请输入积分')"
clearable
/>
</el-form-item>
<el-form-item
:label=
"$t('备注')"
>
<el-input
type=
"textarea"
v-model=
"formQuery.comment"
></el-input>
</el-form-item>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"dialogVisible = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"handleScoreSubmit"
>
{{
$t("操作积分")
}}
</el-button>
</span>
</el-dialog>
</div>
</template>
<
script
>
import
{
getDictDatas
,
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
{
getTradeCountryList
,
getMemberList
}
from
"
@/api/ecw/giftManagement
"
;
import
{
operateMemberScore
}
from
"
@/api/ecw/memberManagement
"
;
export
default
{
name
:
"
memberPointsSummary
"
,
data
()
{
return
{
selectedMember
:
[],
countryList
:
[],
cityList
:
[],
dateRangeCreateTime
:
[],
total
:
0
,
// 显示搜索条件
showSearch
:
true
,
loading
:
true
,
dialogVisible
:
false
,
memberList
:
[],
formQuery
:
{
comment
:
""
,
memberIds
:
[],
operateType
:
null
,
scoreCount
:
null
,
},
queryParams
:
{
country
:
null
,
city
:
null
,
endTime
:
""
,
holdScore
:
null
,
holdScoreOperate
:
null
,
key
:
""
,
pageNo
:
1
,
pageSize
:
10
,
startTime
:
""
,
usedScore
:
null
,
usedScoreOperate
:
null
,
},
};
},
computed
:
{
isChinese
()
{
return
this
.
$i18n
.
locale
===
"
zh_CN
"
;
},
},
created
()
{
this
.
handleQuery
();
this
.
getCountryList
();
},
activated
()
{
this
.
handleQuery
();
},
methods
:
{
handleScore
()
{
if
(
this
.
selectedMember
.
length
>
0
)
{
this
.
dialogVisible
=
true
;
}
else
{
this
.
$message
({
message
:
this
.
$t
(
"
请先选择会员再进行操作
"
),
type
:
"
warning
"
,
});
}
},
handleScoreSubmit
()
{
this
.
$confirm
(
this
.
$t
(
"
确认提交?
"
))
.
then
((
_
)
=>
{
let
params
=
{
...
this
.
formQuery
};
operateMemberScore
(
params
).
then
((
res
)
=>
{
this
.
dialogVisible
=
false
;
this
.
formQuery
=
{
comment
:
""
,
memberIds
:
[],
operateType
:
null
,
scoreCount
:
null
,
};
this
.
selectedMember
=
[];
this
.
$message
.
success
(
this
.
$t
(
"
操作成功
"
));
});
})
.
catch
((
_
)
=>
{});
},
handleClose
(
done
)
{
this
.
$confirm
(
this
.
$t
(
"
确认关闭?
"
))
.
then
((
_
)
=>
{
done
();
})
.
catch
((
_
)
=>
{});
},
handleSelectionChange
(
val
)
{
this
.
selectedMember
=
val
;
},
dialogBeforeClose
()
{
this
.
loading
=
true
;
this
.
queryParams
=
{
country
:
null
,
city
:
null
,
endTime
:
null
,
holdScore
:
null
,
holdScoreOperate
:
null
,
key
:
null
,
pageNo
:
1
,
pageSize
:
10
,
startTime
:
null
,
usedScore
:
null
,
usedScoreOperate
:
null
,
};
},
getCountryList
()
{
getTradeCountryList
().
then
((
res
)
=>
{
this
.
countryList
=
res
.
data
;
});
},
handleQuery
()
{
this
.
queryParams
.
pageNo
=
1
;
let
params
=
{
...
this
.
queryParams
};
if
(
this
.
dateRangeCreateTime
)
{
params
.
startTime
=
this
.
dateRangeCreateTime
[
0
];
params
.
endTime
=
this
.
dateRangeCreateTime
[
1
];
}
getMemberList
(
params
).
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
memberList
=
res
.
data
.
list
;
this
.
total
=
res
.
data
.
total
;
});
},
handleQueryPagination
()
{
let
params
=
{
...
this
.
queryParams
};
if
(
this
.
dateRangeCreateTime
)
{
params
.
startTime
=
this
.
dateRangeCreateTime
[
0
];
params
.
endTime
=
this
.
dateRangeCreateTime
[
1
];
}
getMemberList
(
params
).
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
memberList
=
res
.
data
.
list
;
this
.
total
=
res
.
data
.
total
;
});
},
resetQuery
()
{
this
.
dateRangeCreateTime
=
[];
this
.
loading
=
true
;
this
.
queryParams
=
{
country
:
null
,
city
:
null
,
endTime
:
null
,
holdScore
:
null
,
holdScoreOperate
:
null
,
key
:
null
,
pageNo
:
1
,
pageSize
:
10
,
startTime
:
null
,
usedScore
:
null
,
usedScoreOperate
:
null
,
};
this
.
handleQuery
();
},
},
};
</
script
>
src/views/ecw/myCustomerService/index.vue
View file @
7e0c1c55
...
@@ -67,6 +67,36 @@
...
@@ -67,6 +67,36 @@
<el-form-item
:label=
"$t('市场获客')"
prop=
"department"
>
<el-form-item
:label=
"$t('市场获客')"
prop=
"department"
>
<dict-selector
clearable
multiple
:type=
"DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE"
v-model=
"queryParams.marketType"
formatter=
"number"
@
change=
"handleQuery"
></dict-selector>
<dict-selector
clearable
multiple
:type=
"DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE"
v-model=
"queryParams.marketType"
formatter=
"number"
@
change=
"handleQuery"
></dict-selector>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('会员电话')"
prop=
"department"
>
<el-col
:span=
"11"
>
<area-code-selector
style=
"width: 100%;"
v-model=
"queryParams.memberAreaCode"
/>
</el-col>
<el-col
class=
"line"
:span=
"2"
></el-col>
<el-col
:span=
"11"
>
<el-input
maxlength=
"11"
width=
"100%"
class=
"ml-10 w-200"
clearable
v-model.number=
"queryParams.memberMobile"
:placeholder=
"$t('请输入会员电话')"
/>
</el-col>
</el-form-item>
<el-form-item
:label=
"$t('会员编号')"
prop=
"number"
>
<el-input
v-model.trim=
"queryParams.memberCode"
:placeholder=
"$t('请输入会员编号')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('会员名称')"
prop=
"name"
>
<el-input
v-model.trim=
"queryParams.memberName"
:placeholder=
"$t('请输入会员名称')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
"
搜索
"
)
$t
(
"
搜索
"
)
...
@@ -304,6 +334,7 @@ import Template from "@/views/cms/template/index.vue";
...
@@ -304,6 +334,7 @@ import Template from "@/views/cms/template/index.vue";
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
;
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
;
//lanbm 2024-05-26 add
//lanbm 2024-05-26 add
import
{
getUserProfile
}
from
"
@/api/system/user
"
;
import
{
getUserProfile
}
from
"
@/api/system/user
"
;
import
AreaCodeSelector
from
"
@/components/AreaCodeSelector/index.vue
"
;
export
default
{
export
default
{
name
:
"
EcwMycustomerserviceIndex
"
,
name
:
"
EcwMycustomerserviceIndex
"
,
...
@@ -314,6 +345,7 @@ export default {
...
@@ -314,6 +345,7 @@ export default {
customerFollowList
,
customerFollowList
,
customerComplaints
,
customerComplaints
,
transferCustomer
,
transferCustomer
,
AreaCodeSelector
},
},
computed
:
{
computed
:
{
isChinese
()
{
isChinese
()
{
...
@@ -333,7 +365,7 @@ export default {
...
@@ -333,7 +365,7 @@ export default {
// 导出遮罩层
// 导出遮罩层
exportLoading
:
false
,
exportLoading
:
false
,
// 显示搜索条件
// 显示搜索条件
showSearch
:
tru
e
,
showSearch
:
fals
e
,
// 总条数
// 总条数
total
:
0
,
total
:
0
,
// 客户列表
// 客户列表
...
@@ -357,6 +389,10 @@ export default {
...
@@ -357,6 +389,10 @@ export default {
creditLevel
:
null
,
creditLevel
:
null
,
country
:
null
,
country
:
null
,
marketType
:
null
,
marketType
:
null
,
memberCode
:
null
,
memberName
:
null
,
memberMobile
:
null
,
memberAreaCode
:
null
},
},
// 表单参数
// 表单参数
form
:
{},
form
:
{},
...
@@ -537,6 +573,10 @@ export default {
...
@@ -537,6 +573,10 @@ export default {
department
:
null
,
department
:
null
,
creditLevel
:
null
,
creditLevel
:
null
,
country
:
null
,
country
:
null
,
memberCode
:
null
,
memberName
:
null
,
memberMobile
:
null
,
memberAreaCode
:
null
};
};
this
.
handleQuery
();
this
.
handleQuery
();
},
},
...
...
src/views/ecw/oceanCustomer/index.vue
View file @
7e0c1c55
...
@@ -163,6 +163,36 @@
...
@@ -163,6 +163,36 @@
@
change=
"handleQuery"
@
change=
"handleQuery"
></dict-selector>
></dict-selector>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('会员电话')"
prop=
"department"
>
<el-col
:span=
"11"
>
<area-code-selector
style=
"width: 100%;"
v-model=
"queryParams.memberAreaCode"
/>
</el-col>
<el-col
class=
"line"
:span=
"2"
></el-col>
<el-col
:span=
"11"
>
<el-input
maxlength=
"11"
width=
"100%"
class=
"ml-10 w-200"
clearable
v-model.number=
"queryParams.memberMobile"
:placeholder=
"$t('请输入会员电话')"
/>
</el-col>
</el-form-item>
<el-form-item
:label=
"$t('会员编号')"
prop=
"number"
>
<el-input
v-model.trim=
"queryParams.memberCode"
:placeholder=
"$t('请输入会员编号')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('会员名称')"
prop=
"name"
>
<el-input
v-model.trim=
"queryParams.memberName"
:placeholder=
"$t('请输入会员名称')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
"
搜索
"
)
$t
(
"
搜索
"
)
...
@@ -378,6 +408,7 @@ import { getCountryListAll } from "@/api/ecw/country";
...
@@ -378,6 +408,7 @@ import { getCountryListAll } from "@/api/ecw/country";
import
{
getCreditPage
}
from
"
@/api/customer/credit
"
;
import
{
getCreditPage
}
from
"
@/api/customer/credit
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
;
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
;
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
;
import
AreaCodeSelector
from
"
@/components/AreaCodeSelector/index.vue
"
;
export
default
{
export
default
{
name
:
"
EcwOceancustomerIndex
"
,
name
:
"
EcwOceancustomerIndex
"
,
activated
()
{
activated
()
{
...
@@ -387,6 +418,7 @@ export default {
...
@@ -387,6 +418,7 @@ export default {
Contacts
,
Contacts
,
Template
,
Template
,
upload
,
upload
,
AreaCodeSelector
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -397,7 +429,7 @@ export default {
...
@@ -397,7 +429,7 @@ export default {
// 导出遮罩层
// 导出遮罩层
exportLoading
:
false
,
exportLoading
:
false
,
// 显示搜索条件
// 显示搜索条件
showSearch
:
tru
e
,
showSearch
:
fals
e
,
// 总条数
// 总条数
total
:
0
,
total
:
0
,
// 客户列表
// 客户列表
...
@@ -420,6 +452,10 @@ export default {
...
@@ -420,6 +452,10 @@ export default {
status
:
null
,
status
:
null
,
department
:
null
,
department
:
null
,
marketType
:
null
,
marketType
:
null
,
memberCode
:
null
,
memberName
:
null
,
memberMobile
:
null
,
memberAreaCode
:
null
},
},
// 表单参数
// 表单参数
form
:
{},
form
:
{},
...
@@ -597,6 +633,10 @@ export default {
...
@@ -597,6 +633,10 @@ export default {
department
:
null
,
department
:
null
,
creditLevel
:
null
,
creditLevel
:
null
,
country
:
null
,
country
:
null
,
memberCode
:
null
,
memberName
:
null
,
memberMobile
:
null
,
memberAreaCode
:
null
};
};
this
.
handleQuery
();
this
.
handleQuery
();
},
},
...
...
src/views/ecw/order/edit.vue
View file @
7e0c1c55
...
@@ -10,79 +10,96 @@
...
@@ -10,79 +10,96 @@
<el-table-column
label=
"新内容"
prop=
"newValue"
></el-table-column>
<el-table-column
label=
"新内容"
prop=
"newValue"
></el-table-column>
</el-table>
</el-table>
</el-card>
</el-card>
<el-card>
<div
slot=
"header"
class=
"card-title"
>
{{
editMode
?
$t
(
'
编辑订单
'
)
+
'
-
'
+
form
.
orderNo
:
$t
(
'
新建订单
'
)
}}
</div>
<!--默认显示类型(selectedRouter==null),如果选择路线后没开通则隐藏-->
<div
class=
"page-title"
>
{{
editMode
?
$t
(
'
编辑订单
'
)
+
'
-
'
+
form
.
orderNo
:
$t
(
'
新建订单
'
)
}}
</div>
<el-form-item
:label=
"$t('订单类型')"
v-if=
"routeOtherServices.indexOf('1') > -1 || routeOtherServices.indexOf('4') > -1"
>
<el-checkbox-group
v-model=
"form.type"
:disabled2=
"inWarehouse"
>
<el-checkbox
label=
"1"
v-if=
"routeOtherServices.indexOf('1') > -1"
>
{{
$t
(
'
集运服务
'
)
}}
</el-checkbox>
<el-checkbox
label=
"2"
v-if=
"routeOtherServices.indexOf('4') > -1"
>
{{
$t
(
'
海外仓
'
)
}}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<div
class=
"form-section"
>
<el-card
class=
"form-section mt-10"
>
<el-form-item
:label=
"$t('发货人中文名称')"
prop=
"consignorContactsId"
>
<template
#header
>
<!--
<customer-contact-selector
v-model=
"form.consignorContactsId"
@
change=
"consignorContact = $event"
type=
"1"
/>
-->
<div
slot=
"header"
class=
"card-title"
>
发货人
</div>
<div
class=
"contact"
>
</
template
>
<el-input
v-model=
"form.consignorName"
placeholder=
""
:disabled2=
"inWarehouse"
/>
<el-form-item
:label=
"$t('名称')"
prop=
"consignorContactsId"
>
<img
v-if=
"!updateChannel"
src=
"@/assets/svg/contacts.svg"
class=
"phonebook"
@
click=
"contactChooseType='consignor'"
/>
<!-- <customer-contact-selector v-model="form.consignorContactsId" @change="consignorContact = $event" type="1" /> -->
<img
v-if=
"!updateChannel"
src=
"@/assets/svg/contact_create.svg"
class=
"phonebook"
@
click=
"quickCreateType='0'"
/>
<div
class=
"contact"
>
</div>
<el-input
v-model=
"form.consignorName"
placeholder=
""
:disabled2=
"inWarehouse"
/>
</el-form-item>
<img
v-if=
"!updateChannel"
src=
"@/assets/svg/contacts.svg"
class=
"phonebook"
@
click=
"contactChooseType='consignor'"
/>
<!-- v1.7新增 -->
<img
v-if=
"!updateChannel"
src=
"@/assets/svg/contact_create.svg"
class=
"phonebook"
@
click=
"quickCreateType='0'"
/>
<el-form-item
:label=
"$t('发货人英文名称')"
prop=
"consignorNameEn"
>
<!--
<customer-contact-selector
v-model=
"form.consignorContactsId"
@
change=
"consignorContact = $event"
type=
"1"
/>
-->
<div
class=
"contact"
>
<el-input
v-model=
"form.consignorNameEn"
placeholder=
""
:disabled2=
"inWarehouse"
/>
</div>
</el-form-item>
<el-form-item
:label=
"$t('发货人电话')"
prop=
"consignorPhone"
>
<area-code-selector
v-model=
"form.consignorCountryCode"
class=
"w-200 mr-10"
disabled
/>
<el-input
v-model=
"form.consignorPhone"
class=
"w-200"
disabled
/>
</el-form-item>
<el-form-item
:label=
"$t('发货人公司中文名称')"
prop=
"consignorPhone"
>
<el-input
v-model=
"form.consignorCompany"
:disabled2=
"inWarehouse"
/>
</el-form-item>
<!-- v1.7新增 -->
<el-form-item
:label=
"$t('发货人公司英文名称')"
prop=
"consignorPhone"
>
<el-input
v-model=
"form.consignorCompanyEn"
:disabled2=
"inWarehouse"
/>
</el-form-item>
<el-form-item
label=
"Email"
prop=
"consignorPhone"
>
<el-input
v-model=
"form.consignorEmail"
:disabled2=
"inWarehouse"
/>
</el-form-item>
</div>
</div>
<div
class=
"form-section"
>
</el-form-item>
<el-form-item
:label=
"$t('收货人中文名称')"
prop=
"consigneeContactsId"
>
<el-form-item
:label=
"$t('电话')"
prop=
"consignorPhone"
>
<!--
<customer-contact-selector
v-model=
"form.consignorContactsId"
@
change=
"consignorContact = $event"
type=
"1"
/>
-->
<area-code-selector
v-model=
"form.consignorCountryCode"
class=
"w-200 mr-10"
disabled
/>
<div
class=
"contact"
>
<el-input
v-model=
"form.consignorPhone"
class=
"w-200"
disabled
/>
<el-input
v-model=
"form.consigneeName"
placeholder=
""
:disabled2=
"inWarehouse"
/>
</el-form-item>
<img
v-if=
"!updateChannel"
src=
"@/assets/svg/contacts.svg"
class=
"phonebook"
@
click=
"contactChooseType='consignee'"
/>
<img
v-if=
"!updateChannel"
src=
"@/assets/svg/contact_create.svg"
class=
"phonebook"
@
click=
"quickCreateType='1'"
/>
<el-button
circle
icon=
"el-icon-circle-plus"
v-if=
"!showFullConsignor"
@
click=
"showFullConsignor=true"
></el-button>
</div>
<el-button
circle
icon=
"el-icon-remove"
v-else
@
click=
"showFullConsignor=false"
></el-button>
</el-form-item>
<!-- v1.7新增 -->
<div
v-if=
"showFullConsignor"
>
<el-form-item
:label=
"$t('收货人英文名称')"
prop=
"consigneeNameEn"
>
<el-form-item
:label=
"$t('英文名称')"
prop=
"consignorNameEn"
>
<!--
<customer-contact-selector
v-model=
"form.consignorContactsId"
@
change=
"consignorContact = $event"
type=
"1"
/>
-->
<!-- <customer-contact-selector v-model="form.consignorContactsId" @change="consignorContact = $event" type="1" /> -->
<div
class=
"contact"
>
<div
class=
"contact"
>
<el-input
v-model=
"form.consigneeNameEn"
placeholder=
""
:disabled2=
"inWarehouse"
/>
<el-input
v-model=
"form.consignorNameEn"
placeholder=
""
:disabled2=
"inWarehouse"
/>
</div>
</div>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('收货人电话')"
prop=
"consigneePhone"
>
<el-form-item
:label=
"$t('公司中文名称')"
prop=
"consignorPhone"
>
<area-code-selector
v-model=
"form.consigneeCountryCode"
class=
"w-200 mr-10"
disabled
/>
<el-input
v-model=
"form.consignorCompany"
:disabled2=
"inWarehouse"
/>
<el-input
v-model=
"form.consigneePhone"
class=
"w-200"
disabled
/>
</el-form-item>
</el-form-item>
<!-- v1.7新增 -->
<el-form-item
:label=
"$t('收货人公司中文名称')"
prop=
"consigneePhone"
>
<el-form-item
:label=
"$t('公司英文名称')"
prop=
"consignorPhone"
>
<el-input
v-model=
"form.consigneeCompany"
:disabled2=
"inWarehouse"
/>
<el-input
v-model=
"form.consignorCompanyEn"
:disabled2=
"inWarehouse"
/>
</el-form-item>
</el-form-item>
<!-- v1.7新增 -->
<el-form-item
label=
"Email"
prop=
"consignorPhone"
>
<el-form-item
:label=
"$t('收货人公司英文名称')"
prop=
"consigneePhone"
>
<el-input
v-model=
"form.consignorEmail"
:disabled2=
"inWarehouse"
/>
<el-input
v-model=
"form.consigneeCompanyEn"
:disabled2=
"inWarehouse"
/>
</el-form-item>
</el-form-item>
</div>
<el-form-item
label=
"Email"
prop=
"consigneePhone"
>
</el-card>
<el-input
v-model=
"form.consigneeEmail"
:disabled2=
"inWarehouse"
/>
<el-card
class=
"form-section mt-10"
>
</el-form-item>
<
template
#header
>
<div
class=
"flex items-center"
>
<div
slot=
"header"
class=
"card-title mr-20"
>
收货人
</div>
<el-radio-group
v-if=
"noConsignee"
v-model=
"hasConsignee"
>
<el-radio
:label=
"true"
>
{{
$t
(
'
有
'
)
}}
</el-radio>
<el-radio
:label=
"false"
>
{{
$t
(
'
无
'
)
}}
</el-radio>
</el-radio-group>
</div>
</
template
>
<el-form-item
:label=
"$t('名称')"
prop=
"consigneeContactsId"
>
<!-- <customer-contact-selector v-model="form.consignorContactsId" @change="consignorContact = $event" type="1" /> -->
<div
class=
"contact"
>
<el-input
v-model=
"form.consigneeName"
placeholder=
""
:disabled=
"!hasConsignee"
/>
<img
v-if=
"!updateChannel && hasConsignee"
src=
"@/assets/svg/contacts.svg"
class=
"phonebook"
@
click=
"contactChooseType='consignee'"
/>
<img
v-if=
"!updateChannel && hasConsignee"
src=
"@/assets/svg/contact_create.svg"
class=
"phonebook"
@
click=
"quickCreateType='1'"
/>
</div>
</div>
</el-form-item>
<!-- v1.7新增 -->
<el-form-item
:label=
"$t('电话')"
prop=
"consigneePhone"
>
<area-code-selector
v-model=
"form.consigneeCountryCode"
class=
"w-200 mr-10"
disabled
/>
<el-input
v-model=
"form.consigneePhone"
class=
"w-200"
disabled
/>
</el-form-item>
<el-button
circle
icon=
"el-icon-circle-plus"
v-if=
"!showFullConsignee"
@
click=
"showFullConsignee=true"
></el-button>
<el-button
circle
icon=
"el-icon-remove"
v-else
@
click=
"showFullConsignee=false"
></el-button>
<div
v-if=
"showFullConsignee"
>
<el-form-item
:label=
"$t('英文名称')"
prop=
"consigneeNameEn"
>
<!-- <customer-contact-selector v-model="form.consignorContactsId" @change="consignorContact = $event" type="1" /> -->
<div
class=
"contact"
>
<el-input
v-model=
"form.consigneeNameEn"
placeholder=
""
:disabled=
"!hasConsignee"
/>
</div>
</el-form-item>
<el-form-item
:label=
"$t('公司中文名称')"
prop=
"consigneePhone"
>
<el-input
v-model=
"form.consigneeCompany"
:disabled=
"!hasConsignee"
/>
</el-form-item>
<!-- v1.7新增 -->
<el-form-item
:label=
"$t('公司英文名称')"
prop=
"consigneePhone"
>
<el-input
v-model=
"form.consigneeCompanyEn"
:disabled=
"!hasConsignee"
/>
</el-form-item>
<el-form-item
label=
"Email"
prop=
"consigneePhone"
>
<el-input
v-model=
"form.consigneeEmail"
:disabled=
"!hasConsignee"
/>
</el-form-item>
</div>
</el-card>
<el-card
class=
"mt-10"
>
<div
class=
"form-section"
>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('运输方式')"
prop=
"transportId"
>
<el-form-item
:label=
"$t('运输方式')"
prop=
"transportId"
>
<dict-selector
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
v-model=
"form.transportId"
formatter=
"number"
<dict-selector
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
v-model=
"form.transportId"
formatter=
"number"
...
@@ -127,33 +144,13 @@
...
@@ -127,33 +144,13 @@
</el-form>
</el-form>
</el-form-item>
</el-form-item>
</div>
</div>
<!--目的港清关:选择专线空运才显示,默认选中我司
<div>
我司选中后,按钮下方显示“多票”和“单票”的操作,默认选中多票。
<!--默认显示类型(selectedRouter==null),如果选择路线后没开通则隐藏-->
客户选中后,按钮下方显示“单票”的操作,默认选中,无需点击-->
<el-form-item
:label=
"$t('增值服务')"
v-if=
"routeOtherServices.indexOf('1') > -1 || routeOtherServices.indexOf('4') > -1"
>
<div
class=
"form-section"
v-if=
"form.transportId == 3"
>
<el-checkbox-group
v-model=
"form.type"
:disabled2=
"inWarehouse"
>
<el-form-item
:label=
"$t('目的港清关')"
>
<el-checkbox
label=
"1"
v-if=
"routeOtherServices.indexOf('1') > -1"
>
{{$t('集运')}}
</el-checkbox>
<el-radio-group
v-model=
"form.portDestCustomsClear"
>
<el-checkbox
label=
"2"
v-if=
"routeOtherServices.indexOf('4') > -1"
>
{{$t('海外仓')}}
</el-checkbox>
<el-radio
:label=
"1"
>
</el-checkbox-group>
{{
$t
(
'
我司
'
)
}}
<el-tooltip
effect=
"dark"
:content=
"$t('我司承接')"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
</el-radio>
<el-radio
:label=
"2"
>
{{
$t
(
'
客户
'
)
}}
<el-tooltip
effect=
"dark"
:content=
"$t('客户自清')"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
</el-radio>
</el-radio-group>
</el-form-item>
</div>
<div
class=
"form-section"
v-if=
"form.transportId == 3"
>
<el-form-item
:label=
"$t('发货方式')"
>
<el-radio-group
v-model=
"form.deliveryWay"
>
<el-radio
:label=
"1"
v-if=
"form.portDestCustomsClear == 1"
>
{{
$t
(
'
多票
'
)
}}
</el-radio>
<el-radio
:label=
"2"
>
{{
$t
(
'
单票
'
)
}}
</el-radio>
</el-radio-group>
</el-form-item>
</el-form-item>
</div>
</div>
</el-card>
</el-card>
...
@@ -161,8 +158,8 @@
...
@@ -161,8 +158,8 @@
<div
slot=
"header"
class=
"card-title"
>
<div
slot=
"header"
class=
"card-title"
>
<!--lanbm 根据需求文档改 商品信息 为 商品 -->
<!--lanbm 根据需求文档改 商品信息 为 商品 -->
<div
class=
"card-name"
>
{{$t('商品')}}
</div>
<div
class=
"card-name"
>
{{$t('商品')}}
</div>
<el-button
type=
"primary"
size=
"mini"
@
click=
"addProduct(null)"
:disabled=
"!canAddProduct || !productEditable || updateChannel"
>
{{
$t
(
'
添加
货物
'
)
}}
</el-button>
<el-button
type=
"primary"
size=
"mini"
@
click=
"addProduct(null)"
:disabled=
"!canAddProduct || !productEditable || updateChannel"
>
{{$t('添加')}}
</el-button>
<el-button
type=
"primary"
size=
"mini"
@
click=
"showBatchImportDialog=true"
:disabled=
"!canAddProduct || !productEditable || updateChannel"
>
{{
$t
(
'
批量添加
货物
'
)
}}
</el-button>
<el-button
type=
"primary"
size=
"mini"
@
click=
"showBatchImportDialog=true"
:disabled=
"!canAddProduct || !productEditable || updateChannel"
>
{{$t('批量添加')}}
</el-button>
</div>
</div>
<el-table
:data=
"form.orderItemVOList"
border
class=
"product-list"
v-if=
"!initing"
>
<el-table
:data=
"form.orderItemVOList"
border
class=
"product-list"
v-if=
"!initing"
>
<el-table-column
:label=
"$t('序号')"
width=
"60px"
fixed
>
<el-table-column
:label=
"$t('序号')"
width=
"60px"
fixed
>
...
@@ -353,145 +350,151 @@
...
@@ -353,145 +350,151 @@
<el-form-item
:label=
"$t('唛头')"
prop=
"marks"
>
<el-form-item
:label=
"$t('唛头')"
prop=
"marks"
>
<el-input
v-model=
"form.marks"
></el-input>
<el-input
v-model=
"form.marks"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('是否控货')"
prop=
"isCargoControl"
class=
"ml-20"
>
<el-form-item
:label=
"$t('单证报关')"
:span=
"2"
prop=
"customsType"
>
<
template
#label
>
<
template
#label
>
{{
$t
(
'
是否控货
'
)
}}
{{
$t
(
'
单证报关
'
)
}}
<el-tooltip
effect=
"dark"
:content=
"$t('是指由发货人与收货人约定在货物的国际运输过程中,我司作为第三方对该货物货权的控制;需由发货人授权我司放货的情况下收货人才能提取该票货物的一种交易方式')"
placement=
"top"
>
<el-tooltip
effect=
"dark"
:content=
"$t('我司全代 : 该货物的出口手续由我司代为办理 ; 自单代报: 该货物由发货人提供相关出口单证并委托我司代为办理 ;混单代报该货物有以上两种情况出现')"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
</
template
>
<dict-selector
:type=
"DICT_TYPE.ECW_CUSTOMS_TYPE"
v-model=
"form.customsType"
form-type=
"radio"
defaultable
:disabled=
"false"
/>
<!--自单代报显示提示-->
<div
v-if=
"+form.customsType === 2"
style=
"color:red;font-size:14px"
>
{{$t('报关退税,请备齐资料。')}}
</div>
</el-form-item>
</div>
<div
class=
"form-section"
v-if=
"form.transportId == 3"
>
<!--目的港清关:选择专线空运才显示,默认选中我司
我司选中后,按钮下方显示“多票”和“单票”的操作,默认选中多票。
客户选中后,按钮下方显示“单票”的操作,默认选中,无需点击-->
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('目的港清关')"
>
<el-radio-group
v-model=
"form.portDestCustomsClear"
>
<el-radio
:label=
"1"
>
{{$t('我司')}}
<el-tooltip
effect=
"dark"
:content=
"$t('我司承接')"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
</el-tooltip>
</
template
>
</el-radio>
<dict-selector
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
<el-radio
:label=
"2"
>
v-model=
"form.isCargoControl"
{{$t('客户')}}
formatter=
"bool"
<el-tooltip
effect=
"dark"
:content=
"$t('客户自清')"
placement=
"top"
>
form-type=
"radio"
:filter=
"(item) => {
return selectedRouter && selectedRouter.controlStatus === 1 && item.value === 'true' ? false : true
}"
/>
</el-form-item>
</div>
<div
class=
"form-section"
v-if=
"collectionProxy"
>
<el-form-item
:label=
"$t('是否代收货款')"
prop=
"isCollection"
>
<dict-selector
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter=
"bool"
v-model=
"form.isCollection"
form-type=
"radio"
:disabled=
"false"
/>
</el-form-item>
<!--代收货款,只有非控货订单、并且线路开通了代收货款后,才显示是否代收货款选项-->
<el-form-item
:label=
"$t('代收货款金额')"
v-if=
"collectionProxy && form.isCollection"
prop=
"collectionProxy"
class=
"ml-20"
>
<el-input
type=
"number"
v-model=
"form.collectionProxy"
class=
"w-200 mr-10"
:disabled=
"false"
></el-input>
<selector
v-model=
"form.collectionProxyCurrency"
:options=
"currencyList"
label-field=
"titleZh"
value-field=
"id"
defaultable
class=
"w-100"
:disabled=
"false"
/>
</el-form-item>
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('单证报关')"
:span=
"2"
prop=
"customsType"
>
<
template
#label
>
{{
$t
(
'
单证报关
'
)
}}
<el-tooltip
effect=
"dark"
:content=
"$t('我司全代 : 该货物的出口手续由我司代为办理 ; 自单代报: 该货物由发货人提供相关出口单证并委托我司代为办理 ;混单代报该货物有以上两种情况出现')"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
</el-tooltip>
</
template
>
</el-radio>
<dict-selector
:type=
"DICT_TYPE.ECW_CUSTOMS_TYPE"
v-model=
"form.customsType"
form-type=
"radio"
defaultable
:disabled=
"false"
/>
</el-radio-group>
<!--自单代报显示提示-->
<div
v-if=
"+form.customsType === 2"
style=
"color:red;font-size:14px"
>
{{$t('报关退税,请备齐资料。')}}
</div>
</el-form-item>
</el-form-item>
</div>
</div>
<div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('出单方式')"
prop=
"issuingMethod"
>
<el-form-item
:label=
"$t('发货方式')"
>
<dict-selector
:type=
"DICT_TYPE.ECW_SUING_METHOD"
v-model=
"form.issuingMethod"
form-type=
"radio"
defaultable
:disabled=
"false"
/>
<el-radio-group
v-model=
"form.deliveryWay"
>
<el-radio
:label=
"1"
v-if=
"form.portDestCustomsClear == 1"
>
{{$t('多票')}}
</el-radio>
<el-radio
:label=
"2"
>
{{$t('单票')}}
</el-radio>
</el-radio-group>
</el-form-item>
</el-form-item>
</div>
</div>
</div>
<div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('入仓类型')"
prop=
"warehouseType"
>
<el-form-item
:label=
"$t('是否控货')"
prop=
"isCargoControl"
class=
"ml-20"
>
<dict-selector
:type=
"DICT_TYPE.ECW_WAREHOUSING_TYPE"
v-model=
"form.warehouseType"
defaultable
:disabled=
"false"
/>
<
template
#label
>
</el-form-item>
{{
$t
(
'
是否控货
'
)
}}
<el-tooltip
effect=
"dark"
:content=
"$t('是指由发货人与收货人约定在货物的国际运输过程中,我司作为第三方对该货物货权的控制;需由发货人授权我司放货的情况下收货人才能提取该票货物的一种交易方式')"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
</
template
>
<!--无收货人的情况下必须控货且不能更改-->
<dict-selector
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
v-model=
"form.isCargoControl"
formatter=
"bool"
form-type=
"radio"
:disabled=
"!hasConsignee"
:filter=
"(item) => {
return selectedRouter && selectedRouter.controlStatus === 1 && item.value === 'true' ? false : true
}"
/>
</el-form-item>
<el-form-item
:label=
"$t('付款人')"
prop=
"drawee"
>
<dict-selector
:formatter=
"Number"
:type=
"DICT_TYPE.DRAWEE"
v-model=
"form.drawee"
defaultable
form-type=
"radio"
:disabled=
"false"
/>
<el-table
:data=
"customDraweeList"
v-if=
"form.drawee==3"
>
<el-table-column
:label=
"$t('费用类型')"
prop=
"label"
width=
"200px"
></el-table-column>
<el-table-column
:label=
"$t('付款人')"
width=
"300px"
>
<
template
slot-scope=
"{row}"
>
<dict-selector
:formatter=
"Number"
:type=
"DICT_TYPE.DRAWEE"
:filter=
"(e) => e.value == 1 || e.value == 2"
v-model=
"row.value"
form-type=
"radio"
:disabled=
"false"
/>
</
template
>
</el-table-column>
</el-table>
</el-form-item>
<el-form-item
:label=
"$t('提单是否显示价格')"
prop=
"displayBillLadingPrice"
>
<el-radio-group
v-model=
"form.displayBillLadingPrice"
>
<el-radio
:label=
"true"
>
{{$t('显示')}}
</el-radio>
<el-radio
:label=
"false"
>
{{$t('不显示')}}
</el-radio>
</el-radio-group>
</el-form-item>
</div>
</div>
<div>
<div
class=
"form-section flex"
>
<el-form-item
:label=
"$t('入仓类型')"
prop=
"warehouseType"
>
<dict-selector
:type=
"DICT_TYPE.ECW_WAREHOUSING_TYPE"
v-model=
"form.warehouseType"
defaultable
:disabled=
"false"
/>
</el-form-item>
<div>
<el-form-item
:label=
"$t('外部仓库')"
prop=
"isExternalWarehouse"
>
<el-form-item
:label=
"$t('外部仓库')"
prop=
"isExternalWarehouse"
>
<el-checkbox
label=
""
v-model=
"form.isExternalWarehouse"
@
change=
"form.isExternalWarehouse=$event"
:disabled=
"false"
></el-checkbox>
<el-checkbox
label=
""
v-model=
"form.isExternalWarehouse"
@
change=
"form.isExternalWarehouse=$event"
:disabled=
"false"
></el-checkbox>
</el-form-item>
</el-form-item>
<div
v-if=
"form.isExternalWarehouse"
class=
"pl-50"
>
<div
v-if=
"form.isExternalWarehouse"
>
<div
v-for=
"(item, index) in form.externalWarehouseDtoList"
class=
"flex"
:key=
"index"
>
<div
v-for=
"(item, index) in form.externalWarehouseDtoList"
class=
"flex"
:key=
"index"
>
<div
class=
"w-300"
>
<div
class=
"w-300"
>
<el-form-item
:label=
"$t('装货时间')"
<el-form-item
:label=
"$t('装货时间')"
:prop=
"'externalWarehouseDtoList.' + index + '.estLoadingTime'"
:prop=
"'externalWarehouseDtoList.' + index + '.estLoadingTime'"
:rules=
"{
:rules=
"{
required: true, message: '装货时间不能为空', trigger: 'blur'
required: true, message: '装货时间不能为空', trigger: 'blur'
}"
}"
>
>
<el-date-picker
v-model=
"item.estLoadingTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
class=
"w-200"
></el-date-picker>
<el-date-picker
v-model=
"item.estLoadingTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
class=
"w-200"
></el-date-picker>
</el-form-item>
</el-form-item>
</div>
</div>
<div
class=
"w-500"
>
<div
class=
"w-500"
>
<el-form-item
:label=
"$t('装货地址')"
<el-form-item
:label=
"$t('装货地址')"
:prop=
"'externalWarehouseDtoList.' + index + '.loadingAddress'"
:prop=
"'externalWarehouseDtoList.' + index + '.loadingAddress'"
:rules=
"{
:rules=
"{
required: true, message: '装货地址不能为空', trigger: 'blur'
required: true, message: '装货地址不能为空', trigger: 'blur'
}"
}"
>
>
<el-input
v-model=
"item.loadingAddress"
placeholder=
""
class=
"w-200"
></el-input>
<el-input
v-model=
"item.loadingAddress"
placeholder=
""
class=
"w-200"
></el-input>
</el-form-item>
</el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-plus"
v-if=
"index==0"
@
click=
"form.externalWarehouseDtoList.push({})"
></el-button>
<el-button
type=
"primary"
icon=
"el-icon-plus"
v-if=
"index==0"
@
click=
"form.externalWarehouseDtoList.push({})"
></el-button>
<el-button
type=
"danger"
icon=
"el-icon-delete"
v-else-if=
"index == form.externalWarehouseDtoList.length-1"
@
click=
"form.externalWarehouseDtoList.splice(index, 1)"
></el-button>
<el-button
type=
"danger"
icon=
"el-icon-delete"
v-else-if=
"index == form.externalWarehouseDtoList.length-1"
@
click=
"form.externalWarehouseDtoList.splice(index, 1)"
></el-button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div
v-if=
"!form.isExternalWarehouse"
>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('预计送货日期')"
prop=
"deliveryDate"
>
<el-form-item
:label=
"$t('预计送货日期')"
prop=
"deliveryDate"
v-if=
"!form.isExternalWarehouse"
>
<el-date-picker
v-model=
"form.deliveryDate"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
<el-date-picker
v-model=
"form.deliveryDate"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('是否代收货款')"
prop=
"isCollection"
v-if=
"collectionProxy"
>
<dict-selector
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter=
"bool"
v-model=
"form.isCollection"
form-type=
"radio"
:disabled=
"false"
/>
</el-form-item>
<!--代收货款,只有非控货订单、并且线路开通了代收货款后,才显示是否代收货款选项-->
<el-form-item
:label=
"$t('代收货款金额')"
v-if=
"collectionProxy && form.isCollection"
prop=
"collectionProxy"
class=
"ml-20"
>
<el-input
type=
"number"
v-model=
"form.collectionProxy"
class=
"w-200 mr-10"
:disabled=
"false"
></el-input>
<selector
v-model=
"form.collectionProxyCurrency"
:options=
"currencyList"
label-field=
"titleZh"
value-field=
"id"
defaultable
class=
"w-100"
:disabled=
"false"
/>
</el-form-item>
</div>
</div>
<div>
<div
class=
"form-section flex"
>
<el-form-item
:label=
"$t('收货方式')"
prop=
"harvestMethod"
class=
"ml-20"
>
<el-form-item
:label=
"$t('收货方式')"
prop=
"harvestMethod"
class=
"ml-20"
>
<!--
<el-select
v-model=
"harvestMethod2"
@
change=
"handleChange"
>
<dict-selector :type="DICT_TYPE.ECW_HARVEST_METHOD"
<el-option
v-model="form.harvestMethod" :filter="item => item.value == 1
v-for=
"dict in lunchList"
|| homeDeliveryService" defaultable :disabled="false" />-->
:key=
"dict.value"
:label=
"dict.label"
<el-select
v-model=
"harvestMethod2"
@
change=
"handleChange"
>
:value=
"dict.value"
<el-option
></el-option>
v-for=
"dict in lunchList"
</el-select>
:key=
"dict.value"
</el-form-item>
:label=
"dict.label"
:value=
"dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('关联报价单')"
prop=
"offerId"
>
</div>
<span
v-if=
"offerIdNochange&&offerNumber"
>
{{offerNumber}}
</span>
<div
v-if=
"showAdress"
>
<el-form-item
:label=
"$t('收货地区')"
prop=
"country"
>
<area-selector
:country=
"form.consigneeVO ? form.consigneeVO.country : undefined"
:province=
"form.consigneeVO ? form.consigneeVO.province : undefined"
:city=
"form.consigneeVO ? form.consigneeVO.city : undefined"
@
countryChange=
"onAreaChange('country', $event)"
@
provinceChange=
"onAreaChange('province', $event)"
@
cityChange=
"onAreaChange('city', $event)"
:disabled=
"false"
></area-selector>
</el-form-item>
<br/>
<el-form-item
:label=
"$t('收货详细地址')"
prop=
"consigneeAddress"
>
<el-input
v-model=
"form.consigneeAddress"
:disabled=
"false"
class=
"w-300"
></el-input>
</el-form-item>
</div>
<div>
<el-form-item
:label=
"$t('付款人')"
prop=
"drawee"
>
<dict-selector
:formatter=
"Number"
:type=
"DICT_TYPE.DRAWEE"
v-model=
"form.drawee"
defaultable
form-type=
"radio"
:disabled=
"false"
/>
<el-table
:data=
"customDraweeList"
v-if=
"form.drawee==3"
>
<el-table-column
:label=
"$t('费用类型')"
prop=
"label"
width=
"200px"
></el-table-column>
<el-table-column
:label=
"$t('付款人')"
width=
"300px"
>
<
template
slot-scope=
"{row}"
>
<dict-selector
:formatter=
"Number"
:type=
"DICT_TYPE.DRAWEE"
:filter=
"(e) => e.value == 1 || e.value == 2"
v-model=
"row.value"
form-type=
"radio"
:disabled=
"false"
/>
</
template
>
</el-table-column>
</el-table>
</el-form-item>
</div>
<el-form-item
:label=
"$t('关联报价单')"
prop=
"offerId"
>
<span
v-if=
"offerIdNochange&&offerNumber"
>
{{offerNumber}}
</span>
<el-select
<el-select
v-else
v-else
v-model=
"form.offerId"
v-model=
"form.offerId"
filterable
filterable
clearable
clearable
...
@@ -506,74 +509,85 @@
...
@@ -506,74 +509,85 @@
:value=
"item.offerId"
:value=
"item.offerId"
/>
/>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<div>
</div>
<el-form-item
:label=
"$t('提单是否显示价格')"
prop=
"displayBillLadingPrice"
>
<div
class=
"form-section"
v-if=
"showAdress"
>
<el-radio-group
v-model=
"form.displayBillLadingPrice"
>
<el-form-item
:label=
"$t('收货地区')"
prop=
"country"
>
<el-radio
:label=
"true"
>
{{$t('显示')}}
</el-radio>
<area-selector
<el-radio
:label=
"false"
>
{{$t('不显示')}}
</el-radio>
:country=
"form.consigneeVO ? form.consigneeVO.country : undefined"
</el-radio-group>
:province=
"form.consigneeVO ? form.consigneeVO.province : undefined"
:city=
"form.consigneeVO ? form.consigneeVO.city : undefined"
@
countryChange=
"onAreaChange('country', $event)"
@
provinceChange=
"onAreaChange('province', $event)"
@
cityChange=
"onAreaChange('city', $event)"
:disabled=
"false"
></area-selector>
</el-form-item>
<br/>
<el-form-item
:label=
"$t('收货详细地址')"
prop=
"consigneeAddress"
>
<el-input
v-model=
"form.consigneeAddress"
:disabled=
"false"
class=
"w-300"
></el-input>
</el-form-item>
</el-form-item>
</div>
</div>
</el-card>
</el-card>
<el-card
class=
"mt-10"
>
<el-card
class=
"mt-10"
v-if=
"transport"
>
<
template
#header
>
<div
class=
"card-title"
slot=
"header"
>
{{$l(transport, 'label')}}
</div>
<div
class=
"card-title"
>
其他
</div>
<el-form-item
:label=
"$t('快递单号')"
>
</
template
>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('特殊要求')"
>
<
template
#label
>
{{
$t
(
'
特殊要求
'
)
}}
<el-tooltip
effect=
"dark"
:content=
"$t('如需我司打包,请勾选相应选项,费用付款人及打包要求可备注补充')"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
</
template
>
<dict-selector
v-model=
"form.packageTypeArr"
form-type=
"checkbox"
:type=
"DICT_TYPE.ORDER_SPECIAL_NEEDS"
multiple
:disabled=
"false"
/>
</el-form-item>
<el-form-item
:label=
"$t('特殊要求备注')"
>
<el-input
v-model=
"form.packageRemarks"
:disabled=
"false"
></el-input>
</el-form-item>
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('快递单号')"
>
<el-input
v-model=
"form.number"
:placeholder=
"$t('请输入购买商品的快递单号')"
:disabled=
"false"
>
<el-input
v-model=
"form.number"
:placeholder=
"$t('请输入购买商品的快递单号')"
:disabled=
"false"
>
<el-button
type=
"primary"
slot=
"append"
@
click=
"getOrderCourierNumber"
:disabled=
"false"
>
{{$t('生成单号')}}
</el-button>
<el-button
type=
"primary"
slot=
"append"
@
click=
"getOrderCourierNumber"
:disabled=
"false"
>
{{$t('生成单号')}}
</el-button>
</el-input>
</el-input>
</el-form-item>
</el-form-item>
<div
v-if=
"[2,3,4].indexOf(+form.transportId) > -1"
>
<el-form-item
:label=
"$t('是否双清')"
>
<dict-selector
v-model=
"form.doubleClear"
form-type=
"radio"
:type=
"DICT_TYPE.ECW_DOUBLE_CLEAR"
defaultable
:disabled=
"false"
/>
</el-form-item>
</div>
<!--<div v-if="[3,4].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('航空公司')">
<supplier-selector v-model="form.airlineCompany" company-type="10" :disabled="false"/>
</el-form-item>
</div>-->
<div
v-if=
"[2].indexOf(+form.transportId) > -1"
>
<el-form-item
:label=
"$t('船公司')"
>
<supplier-selector
v-model=
"form.shippingCompany"
company-type=
"9"
:disabled=
"false"
/>
</el-form-item>
</div>
<div
v-if=
"[2,3,4].indexOf(+form.transportId) > -1"
>
<el-form-item
:label=
"$t('清关证书')"
>
<dict-selector
v-model=
"form.customsClearCert"
form-type=
"radio"
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter=
"bool"
:defaultable=
"!editMode"
:disabled=
"false"
/>
</el-form-item>
<el-form-item
:label=
"$t('清关证书备注')"
>
<el-input
v-model=
"form.customsClearCertRemarks"
:disabled=
"false"
></el-input>
</el-form-item>
</div>
</div>
<div
v-if=
"[3,4].indexOf(+form.transportId) > -1"
>
<div
class=
"form-section"
v-if=
"[2,3,4].indexOf(+form.transportId) > -1"
>
<el-form-item
:label=
"$t('是否拆包')"
>
<el-form-item
:label=
"$t('清关证书')"
>
<dict-selector
v-model=
"form.isUnpack"
form-type=
"radio"
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter=
"bool"
:defaultable=
"!editMode"
:disabled=
"false"
/>
<dict-selector
v-model=
"form.customsClearCert"
form-type=
"radio"
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter=
"bool"
:defaultable=
"!editMode"
:disabled=
"false"
/>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('清关证书备注')"
>
<el-input
v-model=
"form.customsClearCertRemarks"
:disabled=
"false"
></el-input>
</el-form-item>
</div>
</div>
<div
class=
"form-section"
>
<div
class=
"form-section"
v-if=
"[3,4].indexOf(+form.transportId) > -1"
>
<el-form-item
:label=
"$t('单票立刻转运')"
v-if=
"[3,4].indexOf(+form.transportId) > -1"
>
<el-form-item
:label=
"$t('是否拆包')"
>
<dict-selector
v-model=
"form.isSingleTicketTransport"
form-type=
"radio"
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter=
"bool"
:defaultable=
"!editMode"
:disabled=
"false"
/>
<dict-selector
v-model=
"form.isUnpack"
form-type=
"radio"
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter=
"bool"
:defaultable=
"!editMode"
:disabled=
"false"
/>
<span
style=
"margin-left:10px"
>
{{$t('注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”')}}
</span>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('单票立刻转运')"
v-if=
"[3,4].indexOf(+form.transportId) > -1"
>
<dict-selector
v-model=
"form.isSingleTicketTransport"
form-type=
"radio"
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter=
"bool"
:defaultable=
"!editMode"
:disabled=
"false"
/>
<span
style=
"margin-left:10px"
>
{{$t('注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”')}}
</span>
</el-form-item>
</div>
</div>
<div
class=
"form-section"
>
<!-- 20240823 新需求改动:屏蔽出单方式 和 是否双清字段
<el-form-item
:label=
"$t('特殊要求')"
>
https://471hsh.axshare.com/?id=uc7auj&p=%E5%90%8E%E5%8F%B0%E5%88%9B%E5%BB%BA%E8%AE%A2%E5%8D%95%E9%A1%B5%E9%9D%A2&g=1
<
template
#label
>
<el-form-item :label="$t('出单方式')" prop="issuingMethod">
{{
$t
(
'
特殊要求
'
)
}}
<dict-selector :type="DICT_TYPE.ECW_SUING_METHOD" v-model="form.issuingMethod" form-type="radio" defaultable :disabled="false"/>
<el-tooltip
effect=
"dark"
:content=
"$t('如需我司打包,请勾选相应选项,费用付款人及打包要求可备注补充')"
placement=
"top"
>
</el-form-item>
<i
class=
"el-icon-question"
></i>
<div v-if="[2,3,4].indexOf(+form.transportId) > -1">
</el-tooltip>
<el-form-item :label="$t('是否双清')">
</
template
>
<dict-selector v-model="form.doubleClear" form-type="radio" :type="DICT_TYPE.ECW_DOUBLE_CLEAR" defaultable :disabled="false" />
<dict-selector
v-model=
"form.packageTypeArr"
form-type=
"checkbox"
:type=
"DICT_TYPE.ORDER_SPECIAL_NEEDS"
multiple
:disabled=
"false"
/>
</el-form-item>
</el-form-item>
</div>
</div>
<el-form-item
:label=
"$t('特殊要求备注')"
>
</div>-->
<el-input
v-model=
"form.packageRemarks"
:disabled=
"false"
></el-input>
<!--20240823 新需求原型没有船公司字段,暂时屏蔽
<div v-if="[2].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('船公司')">
<supplier-selector v-model="form.shippingCompany" company-type="9" :disabled="false" />
</el-form-item>
</el-form-item>
</div>-->
</el-card>
</el-card>
<el-card
class=
"mt-10"
v-if=
"showWorkFlow"
>
<el-card
class=
"mt-10"
v-if=
"showWorkFlow"
>
...
@@ -669,6 +683,7 @@ import WorkFlow from '@/components/WorkFlow'
...
@@ -669,6 +683,7 @@ import WorkFlow from '@/components/WorkFlow'
import
{
getCustomer
}
from
"
@/api/ecw/customer
"
;
import
{
getCustomer
}
from
"
@/api/ecw/customer
"
;
import
{
debounce
}
from
"
@/utils
"
;
import
{
debounce
}
from
"
@/utils
"
;
import
{
getOfferSelect
,
getOfferCheck
}
from
"
@/api/ecw/offer
"
import
{
getOfferSelect
,
getOfferCheck
}
from
"
@/api/ecw/offer
"
import
Template
from
'
@/views/cms/template/index.vue
'
// 缓存默认的表单数据
// 缓存默认的表单数据
let
makeDefaultFormData
=
()
=>
{
let
makeDefaultFormData
=
()
=>
{
...
@@ -691,6 +706,7 @@ window.Decimal = Decimal
...
@@ -691,6 +706,7 @@ window.Decimal = Decimal
export
default
{
export
default
{
name
:
"
EcwOrderEdit
"
,
name
:
"
EcwOrderEdit
"
,
components
:
{
components
:
{
Template
,
ProductSelector
,
Selector
,
CustomerContactSelector
,
AreaSelector
,
FileUpload
,
AreaCodeSelector
,
ChooseContactDialog
,
QuickCreateCustomer
,
SupplierSelector
,
WorkFlow
ProductSelector
,
Selector
,
CustomerContactSelector
,
AreaSelector
,
FileUpload
,
AreaCodeSelector
,
ChooseContactDialog
,
QuickCreateCustomer
,
SupplierSelector
,
WorkFlow
},
},
data
()
{
data
()
{
...
@@ -703,7 +719,7 @@ export default {
...
@@ -703,7 +719,7 @@ export default {
callback
();
callback
();
}
}
return
{
return
{
validatorPositiveNumber
,
validatorPositiveNumber
,
customDraweeList
:
[],
customDraweeList
:
[],
// draweeList: [],
// draweeList: [],
// 遮罩层
// 遮罩层
...
@@ -747,6 +763,14 @@ export default {
...
@@ -747,6 +763,14 @@ export default {
{
label
:
"
自提
"
,
value
:
1
},
{
label
:
"
自提
"
,
value
:
1
},
{
label
:
"
送货上门
"
,
value
:
2
},
{
label
:
"
送货上门
"
,
value
:
2
},
],
],
// 发货人是否允许控货无收货人
noConsignee
:
false
,
// 是否有收货人
hasConsignee
:
true
,
// 是否展示全部发货人信息
showFullConsignor
:
false
,
// 是否展示全部收货人信息
showFullConsignee
:
false
,
};
};
},
},
computed
:{
computed
:{
...
@@ -756,10 +780,11 @@ export default {
...
@@ -756,10 +780,11 @@ export default {
{
required
:
true
,
message
:
this
.
$t
(
'
请填写唛头
'
)},
{
required
:
true
,
message
:
this
.
$t
(
'
请填写唛头
'
)},
{
{
validator
:
(
rule
,
value
,
callback
)
=>
{
validator
:
(
rule
,
value
,
callback
)
=>
{
if
(
!
/
[
a-zA-Z
]
/
.
test
(
value
.
charAt
(
0
))){
/* 20240823 新需求:唛头数据校验修改成字母+数字组合,去掉原必须字母开头的限制
return
callback
(
new
Error
(
this
.
$t
(
'
唛头必须以字母开头
'
)))
if(!/[a-zA-Z]/.test(value.charAt(0))){
}
return callback(new Error(this.$t('唛头必须以字母开头')))
callback
()
} */
callback
()
},
},
trigger
:
'
blur
'
trigger
:
'
blur
'
}
}
...
@@ -905,6 +930,12 @@ export default {
...
@@ -905,6 +930,12 @@ export default {
}
}
},
},
watch
:{
watch
:{
// 如果无收货人则必须控货
hasConsignee
(
val
){
if
(
!
val
){
this
.
$set
(
this
.
form
,
'
isCargoControl
'
,
true
)
}
},
ccIdArr
(
arr
){
ccIdArr
(
arr
){
this
.
$set
(
this
.
form
,
'
ccIds
'
,
arr
.
join
(
"
,
"
))
this
.
$set
(
this
.
form
,
'
ccIds
'
,
arr
.
join
(
"
,
"
))
},
},
...
@@ -1311,6 +1342,13 @@ export default {
...
@@ -1311,6 +1342,13 @@ export default {
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
Name
'
,
contact
.
contactsName
)
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
Name
'
,
contact
.
contactsName
)
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
NameEn
'
,
contact
.
contactsNameEn
||
''
)
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
NameEn
'
,
contact
.
contactsNameEn
||
''
)
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
Phone
'
,
contact
.
phoneNew
)
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
Phone
'
,
contact
.
phoneNew
)
this
.
noConsignee
=
contact
.
noConsignee
// 如果发货人不允许无收货人,则重置为有收货人
if
(
!
this
.
noConsignee
&&
!
this
.
hasConsignee
){
this
.
$set
(
this
,
'
hasConsignee
'
,
true
)
}
this
.
contactChooseType
=
null
this
.
contactChooseType
=
null
this
.
quickCreateType
=
null
this
.
quickCreateType
=
null
if
(
this
.
form
.
lineId
)
this
.
getOfferData
()
if
(
this
.
form
.
lineId
)
this
.
getOfferData
()
...
...
src/views/ecw/order/prepayDeal.vue
View file @
7e0c1c55
...
@@ -1047,12 +1047,13 @@
...
@@ -1047,12 +1047,13 @@
:
placeholder
=
"
$t('整数或者两位小数')
"
:
placeholder
=
"
$t('整数或者两位小数')
"
class
=
"
w100
"
class
=
"
w100
"
/>
/>
<
span
{{
currencyMap
[
scope
.
row
.
seaFreightCurrency
]
}}
/
>
{{
currencyMap
[
scope
.
row
.
seaFreightCurrency
]
}}
/
{{
unitMap
[
scope
.
row
.
seaFreightVolume
]
}}
{{
unitMap
[
scope
.
row
.
seaFreightVolume
]
}}
<
/spa
n
<!--
template
v
-
else
>
>
<
selector
v
-
model
=
"
scope.row.seaFreightCurrency
"
:
options
=
"
currencyList
"
:
label
-
field
=
"
$l('title')
"
value
-
field
=
"
id
"
class
=
"
w100
"
/>
<!--
<
selector
v
-
model
=
"
scope.row.seaFreightCurrency
"
:
options
=
"
currencyList
"
:
label
-
field
=
"
$l('title')
"
value
-
field
=
"
id
"
defaultable2
class
=
"
w100
"
/>
/
/ <selector v-model="scope.row.seaFreightVolume" :options="unitList" :label-field="$l
(
'title'
)
" value-field="id" defaultable2 class="w100" /
>
-->
<
selector
v
-
model
=
"
scope.row.seaFreightVolume
"
:
options
=
"
unitList
"
:
label
-
field
=
"
$l('title')
"
value
-
field
=
"
id
"
class
=
"
w100
"
/>
<
/template--
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
v
-
else
class
=
"
channel
"
>
<
div
v
-
else
class
=
"
channel
"
>
...
@@ -1100,12 +1101,12 @@
...
@@ -1100,12 +1101,12 @@
:
placeholder
=
"
$t('整数或者两位小数')
"
:
placeholder
=
"
$t('整数或者两位小数')
"
class
=
"
w100
"
class
=
"
w100
"
/>
/>
<
span
{{
currencyMap
[
scope
.
row
.
clearanceFreightCurrency
]
}}
/
>
{{
currencyMap
[
scope
.
row
.
clearanceFreightCurrency
]
}}
/
{{
unitMap
[
scope
.
row
.
clearanceFreightVolume
]
}}
{{
unitMap
[
scope
.
row
.
clearanceFreightVolume
]
}}
<
/spa
n
<!--
>
<
selector
v
-
model
=
"
scope.row.clearanceFreightCurrency
"
:
options
=
"
currencyList
"
:
label
-
field
=
"
$l('title')
"
value
-
field
=
"
id
"
class
=
"
w100
"
/
>
<!--
<
selector
v
-
model
=
"
scope.row.clearanceFreightCurrency
"
:
options
=
"
currencyList
"
:
label
-
field
=
"
$l('title')
"
value
-
field
=
"
id
"
defaultable2
class
=
"
w100
"
/>
/ <selector v-model="scope.row.clearanceFreightVolume" :options="unitList" :label-field="$l
(
'title'
)
" value-field="id"
class="w100" /
>
/ <selector v-model="scope.row.clearanceFreightVolume" :options="unitList" :label-field="$l
(
'title'
)
" value-field="id" defaultable2 class="w100" /
>
-->
-->
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
v
-
else
>
<
div
v
-
else
>
...
@@ -1133,52 +1134,31 @@
...
@@ -1133,52 +1134,31 @@
handlerParams.orderExceptionHandlerResult == 'allow_over')
handlerParams.orderExceptionHandlerResult == 'allow_over')
"
"
>
>
<
div
v
-
for
=
"
row in loopOrderItem
"
:
key
=
"
row.orderItemId
"
>
<
div
v
-
for
=
"
row in loopOrderItem
"
:
key
=
"
row.orderItemId
"
>
<
div
v
-
if
=
"
row.charging == 1
"
>
<
div
v
-
if
=
"
orderExceptionData.orderExceptionStatus == 0
"
class
=
"
price_list
"
>
<
div
class
=
"
price_label
"
>
{{
$t
(
"
全包价
"
)
}}
:
<
/div
>
<
div
v
-
if
=
"
!row.seaFreightCurrency || !row.seaFreightVolume
"
>
/
<
/div
>
<
div
v
-
else
>
<
inputor
default2
=
"
0
"
style
=
"
width: 100px
"
v
-
model
.
number
=
"
row.oneSeaFreight
"
type
=
"
number
"
:
placeholder
=
"
$t('整数或者两位小数')
"
/>
<
span
>
{{
currencyMap
[
row
.
seaFreightCurrency
]
}}
/
{{
unitMap
[
row
.
seaFreightVolume
]
}}
<
/spa
n
>
<!--
<
selector
v
-
model
=
"
row.seaFreightCurrency
"
style
=
"
width:100px
"
:
options
=
"
currencyList
"
:
label
-
field
=
"
$l('title')
"
value
-
field
=
"
id
"
defaultable2
/>
/ <selector v-model="row.seaFreightVolume" style="width:100px" :options="unitList" :label-field="$l
(
'title'
)
" value-field="id" defaultable2 /
>
-->
<
/div
>
<
/div
>
<
div
v
-
else
class
=
"
price_list
"
>
<
div
v
-
if
=
"
!row.oneSeaFreight
"
>
<
span
class
=
"
price_label
"
>
{{
$t
(
"
全包价
"
)
}}
:
<
/span
>
<
span
>
{{
$t
(
"
未报价
"
)
}}
<
/span
>
<
/div
>
<
div
v
-
else
>
<
span
class
=
"
price_label
"
>
{{
$t
(
"
全包价
"
)
}}
:
<
/span
>
<
span
>
{{
row
.
oneSeaFreight
}}
{{
currencyMap
[
row
.
seaFreightCurrency
]
}}
/
{{
unitMap
[
row
.
seaFreightVolume
]
}}
<
/spa
n
>
<
/div
>
<
/div
>
<
/div
>
<
div
v
-
else
>
<!--
<
span
v
-
if
=
"
!scope.row.oneSeaFreight
"
>
{{
$t
(
'
运费
'
)
}}
:{{
$t
(
'
未报价
'
)
}}
<
/span> --
>
<!--
<
span
v
-
if
=
"
!scope.row.oneSeaFreight
"
>
{{
$t
(
'
运费
'
)
}}
:{{
$t
(
'
未报价
'
)
}}
<
/span> --
>
<
div
v
-
if
=
"
orderExceptionData.orderExceptionStatus == 0
"
>
<
div
v
-
if
=
"
orderExceptionData.orderExceptionStatus == 0
"
>
<
div
class
=
"
price_list
"
>
<
div
>
<
div
class
=
"
price_label
"
>
{{
$t
(
"
运费
"
)
}}
:
<
/div
>
<
el
-
form
-
item
v
-
if
=
"
unitChangable && handlerParams.orderExceptionHandlerResult != 'confirmed_return'
"
:
label
=
"
$t('是否预付')
"
>
<
el
-
radio
-
group
v
-
model
=
"
row.needPay
"
>
<
el
-
radio
:
label
=
"
1
"
>
{{
$t
(
"
预付
"
)
}}
<
/el-radio
>
<
el
-
radio
:
label
=
"
0
"
>
{{
$t
(
"
均可
"
)
}}
<
/el-radio
>
<
/el-radio-group
>
<
/el-form-item
>
<
/div
>
<
div
>
<
el
-
form
-
item
v
-
if
=
"
unitChangable && handlerParams.orderExceptionHandlerResult != 'confirmed_return'
"
:
label
=
"
$t('单价模式')
"
>
<
dict
-
selector
:
type
=
"
DICT_TYPE.ECW_PRICE_TYPE
"
v
-
model
=
"
row.charging
"
form
-
type
=
"
radio
"
formatter
=
"
number
"
/>
<
/el-form-item
>
<
/div
>
<
div
class
=
"
price_list
"
v
-
if
=
"
handlerParams.orderExceptionHandlerResult != 'confirmed_return'
"
>
<
div
class
=
"
price_label
"
>
{{
row
.
charging
==
1
?
$t
(
'
全包价
'
)
:
$t
(
"
运费
"
)
}}
:
<
/div
>
<
div
class
=
"
price_list
"
>
<
div
class
=
"
price_list
"
>
<
div
<
div
v
-
if
=
"
!row.seaFreightCurrency || !row.seaFreightVolume
"
v
-
if
=
"
!row.seaFreightCurrency || !row.seaFreightVolume
"
...
@@ -1193,16 +1173,18 @@
...
@@ -1193,16 +1173,18 @@
type
=
"
number
"
type
=
"
number
"
:
placeholder
=
"
$t('整数或者两位小数')
"
:
placeholder
=
"
$t('整数或者两位小数')
"
/>
/>
<
span
<
span
v
-
if
=
"
!unitChangable
"
>
>
{{
currencyMap
[
row
.
seaFreightCurrency
]
}}
/
{{
currencyMap
[
row
.
seaFreightCurrency
]
}}
/
{{
unitMap
[
row
.
seaFreightVolume
]
}}
<
/spa
n
{{
unitMap
[
row
.
seaFreightVolume
]
}}
>
<
/span
>
<!--
<
selector
style
=
"
width:100px
"
v
-
model
=
"
row.seaFreightCurrency
"
:
options
=
"
currencyList
"
:
label
-
field
=
"
$l('title')
"
value
-
field
=
"
id
"
defaultable2
/>
<
template
v
-
else
>
/ <selector style="width:100px" v-model="row.seaFreightVolume" :options="unitList" :label-field="$l
(
'title'
)
" value-field="id" defaultable2 /
>
-->
<
selector
style
=
"
width:100px
"
v
-
model
=
"
row.seaFreightCurrency
"
:
options
=
"
currencyList
"
:
label
-
field
=
"
$l('title')
"
value
-
field
=
"
id
"
defaultable2
/>
/ <selector style="width:100px" v-model="row.seaFreightVolume" :options="unitList" :label-field="$l
(
'title'
)
" value-field="id" defaultable2 /
>
<
/template
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"
price_list
"
>
<
div
class
=
"
price_list
"
v
-
if
=
"
(row.charging === 0 || row.charging === '0') && handlerParams.orderExceptionHandlerResult != 'confirmed_return'
"
>
<
div
class
=
"
price_label
"
>
{{
$t
(
"
清关费
"
)
}}
:
<
/div
>
<
div
class
=
"
price_label
"
>
{{
$t
(
"
清关费
"
)
}}
:
<
/div
>
<
div
class
=
"
price_list
"
>
<
div
class
=
"
price_list
"
>
<
div
<
div
...
@@ -1221,12 +1203,14 @@
...
@@ -1221,12 +1203,14 @@
type
=
"
number
"
type
=
"
number
"
:
placeholder
=
"
$t('整数或者两位小数')
"
:
placeholder
=
"
$t('整数或者两位小数')
"
/>
/>
<
span
<
span
v
-
if
=
"
!unitChangable
"
>
>
{{
currencyMap
[
row
.
clearanceFreightCurrency
]
}}
/
{{
currencyMap
[
row
.
clearanceFreightCurrency
]
}}
/
{{
unitMap
[
row
.
clearanceFreightVolume
]
}}
<
/spa
n
{{
unitMap
[
row
.
clearanceFreightVolume
]
}}
>
<
/span
>
<!--
<
selector
style
=
"
width:100px
"
v
-
model
=
"
row.clearanceFreightCurrency
"
:
options
=
"
currencyList
"
:
label
-
field
=
"
$l('title')
"
value
-
field
=
"
id
"
defaultable2
/>
<
template
v
-
else
>
/ <selector style="width:100px" v-model="row.clearanceFreightVolume" :options="unitList" :label-field="$l
(
'title'
)
" value-field="id" defaultable2 /
>
-->
<
selector
style
=
"
width:100px
"
v
-
model
=
"
row.clearanceFreightCurrency
"
:
options
=
"
currencyList
"
:
label
-
field
=
"
$l('title')
"
value
-
field
=
"
id
"
/>
/ <selector style="width:100px" v-model="row.clearanceFreightVolume" :options="unitList" :label-field="$l
(
'title'
)
" value-field="id" /
>
<
/template
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
@@ -1261,7 +1245,6 @@
...
@@ -1261,7 +1245,6 @@
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<!--
预付异常的备选需要根据接口数据过滤
-->
<!--
预付异常的备选需要根据接口数据过滤
-->
...
@@ -2280,6 +2263,8 @@ export default {
...
@@ -2280,6 +2263,8 @@ export default {
selectLine
:
null
,
selectLine
:
null
,
calculating
:
false
,
// 是否正在计算费用,防止频繁重新请求,
calculating
:
false
,
// 是否正在计算费用,防止频繁重新请求,
loopOrderItem
:
[],
//线路单询异常清关费,
loopOrderItem
:
[],
//线路单询异常清关费,
// 単询异常是否可以更改单位
unitChangable
:
false
}
;
}
;
}
,
}
,
activated
()
{
activated
()
{
...
@@ -2331,7 +2316,7 @@ export default {
...
@@ -2331,7 +2316,7 @@ export default {
this
.
orderExceptionData
.
orderExceptionAmountCurrencyId
this
.
orderExceptionData
.
orderExceptionAmountCurrencyId
);
);
}
}
if
(
if
(
this
.
orderExceptionData
.
orderExceptionType
==
this
.
orderExceptionData
.
orderExceptionType
==
"
not_shipping_channel_exception
"
"
not_shipping_channel_exception
"
...
@@ -2493,6 +2478,7 @@ export default {
...
@@ -2493,6 +2478,7 @@ export default {
that
.
loading
=
true
;
that
.
loading
=
true
;
getExceptionById
(
that
.
orderExceptionId
).
then
((
response
)
=>
{
getExceptionById
(
that
.
orderExceptionId
).
then
((
response
)
=>
{
that
.
orderExceptionData
=
response
.
data
;
that
.
orderExceptionData
=
response
.
data
;
that
.
loading
=
false
;
that
.
loading
=
false
;
that
.
orderId
=
response
.
data
.
orderId
;
that
.
orderId
=
response
.
data
.
orderId
;
that
.
getOrderData
();
that
.
getOrderData
();
...
@@ -2578,6 +2564,19 @@ export default {
...
@@ -2578,6 +2564,19 @@ export default {
//not_shipping_channel_exception 不可出渠道异常
//not_shipping_channel_exception 不可出渠道异常
getOrder
(
this
.
orderId
).
then
((
response
)
=>
{
getOrder
(
this
.
orderId
).
then
((
response
)
=>
{
this
.
orderData
=
response
.
data
;
this
.
orderData
=
response
.
data
;
const
orderItem
=
this
.
orderData
.
orderItemVOList
.
find
(
item
=>
item
.
orderItemId
===
this
.
orderExceptionData
.
orderItemId
)
console
.
log
(
"
uniChangable
"
,
this
.
orderExceptionData
.
orderExceptionStatus
,
this
.
orderExceptionData
.
orderExceptionType
,
orderItem
?.
oneSeaFreight
,
orderItem
?.
oneClearanceFreight
)
// 待处理 且 単询异常 且 清关费和运费为0则可以修改单位
if
(
this
.
orderExceptionData
.
orderExceptionStatus
==
0
&&
this
.
orderExceptionData
.
orderExceptionType
===
"
line_loop_exception
"
&&
orderItem
&&
orderItem
.
oneSeaFreight
===
0
&&
orderItem
.
oneClearanceFreight
===
0
){
this
.
unitChangable
=
true
}
else
this
.
unitChangable
=
false
if
(
this
.
orderData
.
channelId
!=
0
)
{
if
(
this
.
orderData
.
channelId
!=
0
)
{
this
.
channelList
.
map
((
v
)
=>
{
this
.
channelList
.
map
((
v
)
=>
{
if
(
v
.
channelId
==
this
.
orderData
.
channelId
)
{
if
(
v
.
channelId
==
this
.
orderData
.
channelId
)
{
...
...
src/views/ecw/productPrice/edit.vue
View file @
7e0c1c55
...
@@ -952,10 +952,10 @@ export default {
...
@@ -952,10 +952,10 @@ export default {
isAllProduct
:
0
,
isAllProduct
:
0
,
});
});
if
(
this
.
form
.
needOrderInquiry
==
0
)
{
// 阶梯价
//不是单询价才校验价格参数 lanbm 2024-06-17
if
(
this
.
form
.
stepPrice
)
{
//
阶梯价
//
单询不校验
if
(
this
.
form
.
stepPrice
)
{
if
(
this
.
form
.
needOrderInquiry
==
0
)
{
let
isValid
=
true
;
let
isValid
=
true
;
for
(
let
stepPrice
of
this
.
$refs
.
stepPrice
)
{
for
(
let
stepPrice
of
this
.
$refs
.
stepPrice
)
{
if
(
!
stepPrice
.
validate
())
{
if
(
!
stepPrice
.
validate
())
{
...
@@ -964,26 +964,34 @@ export default {
...
@@ -964,26 +964,34 @@ export default {
}
}
}
}
if
(
!
isValid
)
return
;
if
(
!
isValid
)
return
;
}
// 全包价
// 全包价
if
(
this
.
form
.
priceType
==
1
)
{
if
(
this
.
form
.
priceType
==
1
)
{
data
.
fullPriceStepList
=
this
.
getPriceList
(
data
.
fullPriceStepList
=
this
.
getPriceList
(
this
.
form
.
fullPriceStepList
this
.
form
.
fullPriceStepList
);
);
delete
data
.
clearancePriceStepList
;
delete
data
.
clearancePriceStepList
;
delete
data
.
freightPriceStepList
;
delete
data
.
freightPriceStepList
;
}
else
{
}
else
{
data
.
clearancePriceStepList
=
this
.
getPriceList
(
data
.
clearancePriceStepList
=
this
.
getPriceList
(
this
.
form
.
clearancePriceStepList
this
.
form
.
clearancePriceStepList
);
);
data
.
freightPriceStepList
=
this
.
getPriceList
(
data
.
freightPriceStepList
=
this
.
getPriceList
(
this
.
form
.
freightPriceStepList
this
.
form
.
freightPriceStepList
);
);
delete
data
.
fullPriceStepList
;
delete
data
.
fullPriceStepList
;
}
}
}
//海运非阶梯价校验
else
{
// 删除非阶梯价 包装费字段
delete
data
.
clearancePricePackagingList
delete
data
.
freightPricePackagingList
delete
data
.
fullPricePackagingList
}
//海运非阶梯价校验
else
{
// 单询不校验
if
(
this
.
form
.
needOrderInquiry
==
0
)
{
// 有多个组件则表示清关费 + 运费
// 有多个组件则表示清关费 + 运费
if
(
this
.
$refs
.
seaPrice
?.
length
)
{
if
(
this
.
$refs
.
seaPrice
?.
length
)
{
let
isValid
=
true
;
let
isValid
=
true
;
...
@@ -999,48 +1007,47 @@ export default {
...
@@ -999,48 +1007,47 @@ export default {
else
if
(
this
.
$refs
.
seaPrice
&&
!
this
.
$refs
.
seaPrice
.
validate
())
{
else
if
(
this
.
$refs
.
seaPrice
&&
!
this
.
$refs
.
seaPrice
.
validate
())
{
return
;
return
;
}
}
}
// 格式化
// 格式化
if
(
this
.
form
.
priceType
===
1
)
{
if
(
this
.
form
.
priceType
===
1
)
{
data
.
fullPricePackagingList
=
this
.
getPackingPrice
(
data
.
fullPricePackagingList
=
this
.
getPackingPrice
(
data
.
fullPricePackagingList
data
.
fullPricePackagingList
);
);
delete
data
.
freightPricePackagingList
;
delete
data
.
freightPricePackagingList
;
delete
data
.
clearancePricePackagingList
;
delete
data
.
clearancePricePackagingList
;
}
else
{
}
else
{
data
.
freightPricePackagingList
=
this
.
getPackingPrice
(
data
.
freightPricePackagingList
=
this
.
getPackingPrice
(
data
.
freightPricePackagingList
data
.
freightPricePackagingList
);
);
data
.
clearancePricePackagingList
=
this
.
getPackingPrice
(
data
.
clearancePricePackagingList
=
this
.
getPackingPrice
(
data
.
clearancePricePackagingList
data
.
clearancePricePackagingList
);
);
delete
data
.
fullPricePackagingList
;
delete
data
.
fullPricePackagingList
;
}
// 删除阶梯价字段
delete
data
.
freightPriceStepList
;
delete
data
.
fullPriceStepList
;
delete
data
.
clearancePriceStepList
;
}
}
// 设置了有效期,且已过期则给提示
// 删除阶梯价字段
if
(
this
.
form
.
validateEndDate
&&
force
!==
true
)
{
delete
data
.
freightPriceStepList
;
let
validateEndDate
=
new
Date
(
this
.
form
.
validateEndDate
);
delete
data
.
fullPriceStepList
;
if
(
validateEndDate
.
getTime
()
<
Date
.
now
())
{
delete
data
.
clearancePriceStepList
;
return
this
.
$confirm
(
}
"
您设置的线路价格已过期,确定提交吗?
"
,
"
提示
"
,
// 设置了有效期,且已过期则给提示
{
if
(
this
.
form
.
validateEndDate
&&
force
!==
true
)
{
confirmButtonText
:
"
确认提交
"
,
let
validateEndDate
=
new
Date
(
this
.
form
.
validateEndDate
);
cancelButtonText
:
"
取消提交
"
,
if
(
validateEndDate
.
getTime
()
<
Date
.
now
())
{
type
:
"
warning
"
,
return
this
.
$confirm
(
}
"
您设置的线路价格已过期,确定提交吗?
"
,
).
then
((
res
)
=>
{
"
提示
"
,
this
.
submitForm
(
true
);
{
});
confirmButtonText
:
"
确认提交
"
,
}
cancelButtonText
:
"
取消提交
"
,
type
:
"
warning
"
,
}
).
then
((
res
)
=>
{
this
.
submitForm
(
true
);
});
}
}
}
}
// 修改单条路线
// 修改单条路线
...
...
src/views/member/user/index.vue
View file @
7e0c1c55
<
template
>
<
template
>
<div
class=
"app-container"
>
<div
class=
"app-container"
>
<!-- 搜索工作栏 -->
<!-- 搜索工作栏 -->
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form-item
:label=
"$t('关键字')"
prop=
"nickname"
>
<el-form-item
:label=
"$t('关键字')"
prop=
"nickname"
>
<el-input
v-model=
"queryParams.searchKey"
:placeholder=
"$t('搜索昵称、姓名、手机、Email')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
<el-input
v-model=
"queryParams.searchKey"
:placeholder=
"$t('搜索昵称、姓名、手机、Email')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('成交')"
prop=
"mobile"
>
<el-form-item
:label=
"$t('成交')"
prop=
"mobile"
>
<el-select
v-model=
"queryParams.isDeal"
>
<el-select
v-model=
"queryParams.isDeal"
>
<el-option
v-for=
"item in [
{label:$t('全部'),value:''},{label:$t('是'),value:true},{label:$t('否'),value:false}]" :value="item.value" :label="item.label" :key="item.value" >
</el-option>
<el-option
</el-select>
v-for=
"item in [
{ label: $t('全部'), value: '' },
{ label: $t('是'), value: true },
{ label: $t('否'), value: false },
]"
:value="item.value"
:label="item.label"
:key="item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('认证')"
prop=
"password"
>
<el-form-item
:label=
"$t('认证')"
prop=
"password"
>
<el-select
v-model=
"queryParams.authType"
>
<el-select
v-model=
"queryParams.authType"
>
<el-option
v-for=
"item in [
{label: $t('全部'),value: ''},{label:$t('营业执照认证'),value:1},{label:$t('身份证认证'),value:2},{label:$t('双认证'),value:3}]" :key="item.value" :value="item.value" :label="item.label">
</el-option>
<el-option
v-for=
"item in [
{ label: $t('全部'), value: '' },
{ label: $t('营业执照认证'), value: 1 },
{ label: $t('身份证认证'), value: 2 },
{ label: $t('双认证'), value: 3 },
]"
:key="item.value"
:value="item.value"
:label="item.label"
>
</el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('审核状态')"
prop=
"registerIp"
>
<el-form-item
:label=
"$t('审核状态')"
prop=
"registerIp"
>
<dict-selector
v-model=
"queryParams.auditStatus"
:type=
"DICT_TYPE.AUDIT_STATUS"
></dict-selector>
<dict-selector
v-model=
"queryParams.auditStatus"
:type=
"DICT_TYPE.AUDIT_STATUS"
></dict-selector>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('创建时间')"
>
<el-form-item
:label=
"$t('创建时间')"
>
<el-date-picker
<el-date-picker
v-model=
"dateRangeCreateTime"
v-model=
"dateRangeCreateTime"
type=
"datetimerange"
type=
"datetimerange"
:start-placeholder=
"$t('开始日期')"
:start-placeholder=
"$t('开始日期')"
value-format=
"yyyy-MM-dd HH:mm:ss"
value-format=
"yyyy-MM-dd HH:mm:ss"
:end-placeholder=
"$t('结束日期')"
>
:end-placeholder=
"$t('结束日期')"
>
</el-date-picker>
</el-date-picker>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('客户编号')"
prop=
"customerCode"
>
<el-input
v-model=
"queryParams.customerCode"
:placeholder=
"$t('请输入客户编号')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('会员编号')"
prop=
"memberCode"
>
<el-input
v-model=
"queryParams.memberCode"
:placeholder=
"$t('请输入会员编号')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
'
搜索
'
)
}}
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
'
重置
'
)
}}
</el-button>
$t
(
"
搜索
"
)
<el-button
v-has-permi=
"['member:export']"
:loading=
"exportLoading"
type=
"primary"
@
click=
"exportFn"
>
{{
$t
(
'
导 出
'
)
}}
</el-button>
}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
"
重置
"
)
}}
</el-button>
<el-button
v-has-permi=
"['member:export']"
:loading=
"exportLoading"
type=
"primary"
@
click=
"exportFn"
>
{{
$t
(
"
导 出
"
)
}}
</el-button
>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<!-- 操作工具栏 -->
<!-- 操作工具栏 -->
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-row
:gutter=
"10"
class=
"mb8"
>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
</el-row>
</el-row>
<!-- 列表 -->
<!-- 列表 -->
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table-column
:label=
"$t('公司名称')"
align=
"center"
prop=
"enterpriseName"
/>
<el-table-column
<el-table-column
:label=
"$t('用户昵称')"
align=
"center"
prop=
"nickname"
width=
"150"
/>
:label=
"$t('会员编号')"
<el-table-column
:label=
"$t('真实姓名')"
align=
"center"
prop=
"identityName"
/>
align=
"center"
prop=
"memberCode"
/>
<el-table-column
:label=
"$t('公司名称')"
align=
"center"
prop=
"enterpriseName"
/>
<el-table-column
:label=
"$t('客户编号')"
align=
"center"
>
<template
v-slot=
"
{ row }">
<el-button
@
click=
"handleGoDetail(row.customerId)"
type=
"text"
>
{{
row
.
customerCode
}}
</el-button>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('用户昵称')"
align=
"center"
prop=
"nickname"
width=
"150"
/>
<el-table-column
:label=
"$t('真实姓名')"
align=
"center"
prop=
"identityName"
/>
<el-table-column
:label=
"$t('区号')"
>
<el-table-column
:label=
"$t('区号')"
>
<template
v-slot:default
=
'scope'
>
<
template
v-slot:default
=
"scope"
>
+
{{
scope
.
row
.
areaCode
?
`${scope.row.areaCode
}
`
:
''
}}
+
{{
scope
.
row
.
areaCode
?
`${scope.row.areaCode
}
`
:
""
}}
<
/template
>
<
/template
>
<
/el-table-column
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('手机号')
"
show
-
overflow
-
tooltip
align
=
"
center
"
prop
=
"
mobile
"
width
=
"
150
"
>
<
el
-
table
-
column
<
/el-table-column
>
:
label
=
"
$t('手机号')
"
<
el
-
table
-
column
:
label
=
"
$t('成交')
"
align
=
"
center
"
prop
=
"
customerStatus
"
show
-
overflow
-
tooltip
>
show
-
overflow
-
tooltip
<
template
v
-
slot
=
"
{row
}
"
>
align
=
"
center
"
{{
row
.
customerStatus
===
3
?
$t
(
'
成交
'
)
:
$t
(
'
非成交
'
)
}}
prop
=
"
mobile
"
width
=
"
150
"
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('成交')
"
align
=
"
center
"
prop
=
"
customerStatus
"
show
-
overflow
-
tooltip
>
<
template
v
-
slot
=
"
{ row
}
"
>
{{
row
.
customerStatus
===
3
?
$t
(
"
成交
"
)
:
$t
(
"
非成交
"
)
}}
<
/template
>
<
/template
>
<
/el-table-column
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('认证')
"
align
=
"
center
"
:
formatter
=
"
authentication
"
/>
<
el
-
table
-
column
<
el
-
table
-
column
:
label
=
"
$t('状态')
"
align
=
"
center
"
prop
=
"
status
"
>
:
label
=
"
$t('认证')
"
align
=
"
center
"
:
formatter
=
"
authentication
"
/>
<
el
-
table
-
column
:
label
=
"
$t('状态')
"
align
=
"
center
"
prop
=
"
status
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
el
-
switch
v
-
model
=
"
scope.row.status
"
:
active
-
value
=
"
0
"
:
inactive
-
value
=
"
1
"
@
change
=
"
handleStatusChange(scope.row)
"
/>
<
el
-
switch
v
-
model
=
"
scope.row.status
"
:
active
-
value
=
"
0
"
:
inactive
-
value
=
"
1
"
@
change
=
"
handleStatusChange(scope.row)
"
/>
<
/template
>
<
/template
>
<
/el-table-column
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('身份证审核状态')
"
align
=
"
center
"
prop
=
"
createTime
"
>
<
el
-
table
-
column
:
label
=
"
$t('身份证审核状态')
"
align
=
"
center
"
prop
=
"
createTime
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
div
v
-
if
=
"
!scope.row.identityAuditStatus
"
>
{{
$t
(
'
未提交
'
)
}}
<
/div
>
<
div
v
-
if
=
"
!scope.row.identityAuditStatus
"
>
{{
$t
(
"
未提交
"
)
}}
<
/div
>
<
dict
-
tag
v
-
else
:
type
=
"
DICT_TYPE.AUDIT_STATUS
"
:
value
=
"
scope.row.identityAuditStatus
"
><
/dict-tag
>
<
dict
-
tag
<
el
-
tooltip
v
-
if
=
"
scope.row.identityAuditStatus === 3
"
class
=
"
item
"
effect
=
"
dark
"
:
content
=
"
scope.row.identityAuditRemark
"
placement
=
"
bottom
"
>
v
-
else
:
type
=
"
DICT_TYPE.AUDIT_STATUS
"
:
value
=
"
scope.row.identityAuditStatus
"
><
/dict-tag
>
<
el
-
tooltip
v
-
if
=
"
scope.row.identityAuditStatus === 3
"
class
=
"
item
"
effect
=
"
dark
"
:
content
=
"
scope.row.identityAuditRemark
"
placement
=
"
bottom
"
>
<
i
class
=
"
el-icon-question
"
><
/i
>
<
i
class
=
"
el-icon-question
"
><
/i
>
<
/el-tooltip
>
<
/el-tooltip
>
<
/template
>
<
/template
>
<
/el-table-column
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('营业执照审核状态')
"
align
=
"
center
"
prop
=
"
createTime
"
>
<
el
-
table
-
column
:
label
=
"
$t('营业执照审核状态')
"
align
=
"
center
"
prop
=
"
createTime
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
div
v
-
if
=
"
!scope.row.enterpriseAuditStatus
"
>
{{
$t
(
'
未提交
'
)
}}
<
/div
>
<
div
v
-
if
=
"
!scope.row.enterpriseAuditStatus
"
>
{{
$t
(
"
未提交
"
)
}}
<
/div
>
<
dict
-
tag
v
-
else
:
type
=
"
DICT_TYPE.AUDIT_STATUS
"
:
value
=
"
scope.row.enterpriseAuditStatus
"
><
/dict-tag
>
<
dict
-
tag
<
el
-
tooltip
v
-
if
=
"
scope.row.enterpriseAuditStatus === 3
"
class
=
"
item
"
effect
=
"
dark
"
:
content
=
"
scope.row.rowenterpriseAuditRemark
"
placement
=
"
bottom
"
>
v
-
else
<
i
class
=
"
el-icon-question
"
><
/i
>
:
type
=
"
DICT_TYPE.AUDIT_STATUS
"
<
/el-tooltip
>
:
value
=
"
scope.row.enterpriseAuditStatus
"
><
/dict-tag
>
<
el
-
tooltip
v
-
if
=
"
scope.row.enterpriseAuditStatus === 3
"
class
=
"
item
"
effect
=
"
dark
"
:
content
=
"
scope.row.rowenterpriseAuditRemark
"
placement
=
"
bottom
"
>
<
i
class
=
"
el-icon-question
"
><
/i
>
<
/el-tooltip
>
<
/template
>
<
/template
>
<
/el-table-column
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('创建时间')
"
align
=
"
center
"
prop
=
"
createTime
"
width
=
"
180
"
>
<
el
-
table
-
column
:
label
=
"
$t('创建时间')
"
align
=
"
center
"
prop
=
"
createTime
"
width
=
"
180
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
span
>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
<
/span
>
<
span
>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
<
/span
>
<
/template
>
<
/template
>
<
/el-table-column
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('操作')
"
align
=
"
center
"
class
-
name
=
"
small-padding fixed-width
"
width
=
"
200px
"
>
<
el
-
table
-
column
<
template
slot
-
scope
=
"
scope
"
>
:
label
=
"
$t('操作')
"
<
el
-
button
v
-
has
-
permi
=
"
['member:certificate']
"
size
=
"
mini
"
type
=
"
text
"
@
click
=
"
guarantee(scope.row)
"
>
{{
$t
(
'
保函/证书
'
)
}}
<
/el-button
>
align
=
"
center
"
<
el
-
button
v
-
has
-
permi
=
"
['member:log']
"
size
=
"
mini
"
type
=
"
text
"
@
click
=
"
operationLogFn(scope.row)
"
>
{{
$t
(
'
操作日志
'
)
}}
<
/el-button
>
class
-
name
=
"
small-padding fixed-width
"
<
el
-
button
v
-
has
-
permi
=
"
['member:id-card']
"
size
=
"
mini
"
type
=
"
text
"
@
click
=
"
identityFn(scope.row , '1')
"
>
{{
$t
(
'
身份证
'
)
}}
<
/el-button
>
width
=
"
200px
"
<
el
-
button
v
-
has
-
permi
=
"
['member:business-license']
"
size
=
"
mini
"
type
=
"
text
"
@
click
=
"
identityFn(scope.row, '2')
"
>
{{
$t
(
'
营业执照
'
)
}}
<
/el-button
>
>
<
el
-
button
v
-
has
-
permi
=
"
['member:delete']
"
size
=
"
mini
"
type
=
"
text
"
@
click
=
"
deleteFn(scope.row)
"
>
{{
$t
(
'
删 除
'
)
}}
<
/el-button
>
<
template
slot
-
scope
=
"
scope
"
>
<
el
-
button
type
=
"
text
"
v
-
has
-
permi
=
"
['member:user:info']
"
size
=
"
mini
"
@
click
=
"
$router.push('member/member-details/' + scope.row.id )
"
>
{{
$t
(
'
查看
'
)
}}
<
/el-button
>
<
el
-
button
v
-
has
-
permi
=
"
['member:certificate']
"
size
=
"
mini
"
type
=
"
text
"
@
click
=
"
guarantee(scope.row)
"
>
{{
$t
(
"
保函/证书
"
)
}}
<
/el-butto
n
>
<
el
-
button
v
-
has
-
permi
=
"
['member:log']
"
size
=
"
mini
"
type
=
"
text
"
@
click
=
"
operationLogFn(scope.row)
"
>
{{
$t
(
"
操作日志
"
)
}}
<
/el-butto
n
>
<
el
-
button
v
-
has
-
permi
=
"
['member:id-card']
"
size
=
"
mini
"
type
=
"
text
"
@
click
=
"
identityFn(scope.row, '1')
"
>
{{
$t
(
"
身份证
"
)
}}
<
/el-butto
n
>
<
el
-
button
v
-
has
-
permi
=
"
['member:business-license']
"
size
=
"
mini
"
type
=
"
text
"
@
click
=
"
identityFn(scope.row, '2')
"
>
{{
$t
(
"
营业执照
"
)
}}
<
/el-butto
n
>
<
el
-
button
v
-
has
-
permi
=
"
['member:delete']
"
size
=
"
mini
"
type
=
"
text
"
@
click
=
"
deleteFn(scope.row)
"
>
{{
$t
(
"
删 除
"
)
}}
<
/el-butto
n
>
<
el
-
button
type
=
"
text
"
v
-
has
-
permi
=
"
['member:user:info']
"
size
=
"
mini
"
@
click
=
"
$router.push('member/member-details/' + scope.row.id)
"
>
{{
$t
(
"
查看
"
)
}}
<
/el-butto
n
>
<
/template
>
<
/template
>
<
/el-table-column
>
<
/el-table-column
>
<
/el-table
>
<
/el-table
>
<!--
分页组件
-->
<!--
分页组件
-->
<
pagination
v
-
show
=
"
total > 0
"
:
total
=
"
total
"
:
page
.
sync
=
"
queryParams.page
"
:
limit
.
sync
=
"
queryParams.rows
"
<
pagination
@
pagination
=
"
getList
"
/>
v
-
show
=
"
total > 0
"
:
total
=
"
total
"
:
page
.
sync
=
"
queryParams.page
"
:
limit
.
sync
=
"
queryParams.rows
"
@
pagination
=
"
getList
"
/>
<
el
-
dialog
<
el
-
dialog
title
=
"
保函/证书
"
title
=
"
保函/证书
"
:
visible
.
sync
=
"
guaranteeShow
"
:
visible
.
sync
=
"
guaranteeShow
"
:
before
-
close
=
"
()=>{guaranteeUrl = ''; guaranteeShow = false;
}
"
:
before
-
close
=
"
width
=
"
50%
"
>
() => {
guaranteeUrl = '';
guaranteeShow = false;
}
"
width
=
"
50%
"
>
<
el
-
form
>
<
el
-
form
>
<
el
-
form
-
item
:
label
=
"
$t('保函/证书')
"
>
<
el
-
form
-
item
:
label
=
"
$t('保函/证书')
"
>
<
el
-
row
:
gutter
=
"
20
"
type
=
"
flex
"
justify
=
"
center
"
>
<
el
-
row
:
gutter
=
"
20
"
type
=
"
flex
"
justify
=
"
center
"
>
<
el
-
col
:
span
=
"
12
"
><
el
-
input
v
-
model
=
"
guaranteeUrl
"
><
/el-input></
el
-
col
>
<
el
-
col
:
span
=
"
12
"
<
el
-
col
:
span
=
"
4
"
><
div
style
=
"
height: 45px;overflow: hidden;
"
>
><
el
-
input
v
-
model
=
"
guaranteeUrl
"
><
/el-inpu
t
<
file
-
upload
v
-
model
=
"
guaranteeUrl
"
:
fileType
=
"
['png', 'jpg', 'jpeg','pdf']
"
:
limit
=
"
1
"
:
isShowTip
=
"
false
"
><
/file-upload
>
><
/el-col
>
<
/div></
el
-
col
>
<
el
-
col
:
span
=
"
4
"
><
div
style
=
"
height: 45px; overflow: hidden
"
>
<
file
-
upload
v
-
model
=
"
guaranteeUrl
"
:
fileType
=
"
['png', 'jpg', 'jpeg', 'pdf']
"
:
limit
=
"
1
"
:
isShowTip
=
"
false
"
><
/file-upload></
div
><
/el-col
>
<
el
-
col
:
span
=
"
6
"
>
<
el
-
col
:
span
=
"
6
"
>
<
div
>
{{
$t
(
'
可上传图片,pdf文档
'
)
}}
<
/div
>
<
div
>
{{
$t
(
"
可上传图片,pdf文档
"
)
}}
<
/div
>
<
/el-col
>
<
/el-col
>
<
/el-row
>
<
/el-row
>
<
/el-form-item
>
<
/el-form-item
>
<
/el-form
>
<
/el-form
>
<
div
style
=
"
text-align: center;
"
><
el
-
button
@
click
=
"
setGuarantee
"
>
{{
$t
(
'
保 存
'
)
}}
<
/el-button></
div
>
<
div
style
=
"
text-align: center
"
>
<
el
-
button
@
click
=
"
setGuarantee
"
>
{{
$t
(
"
保 存
"
)
}}
<
/el-button
>
<
/div
>
<
/el-dialog
>
<
/el-dialog
>
<
el
-
dialog
<
el
-
dialog
:
title
=
"
$t('操作日志')
"
:
title
=
"
$t('操作日志')
"
:
visible
.
sync
=
"
operationLogShow
"
:
visible
.
sync
=
"
operationLogShow
"
width
=
"
50%
"
>
width
=
"
50%
"
>
<
el
-
table
:
data
=
"
operationLogList
"
>
<
el
-
table
:
data
=
"
operationLogList
"
>
<
el
-
table
-
column
:
label
=
"
$t('标题')
"
prop
=
"
title
"
><
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('标题')
"
prop
=
"
title
"
><
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('操作内容')
"
prop
=
"
content
"
><
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('操作内容')
"
prop
=
"
content
"
><
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('操作人')
"
prop
=
"
userId
"
>
<
el
-
table
-
column
:
label
=
"
$t('操作人')
"
prop
=
"
userId
"
>
<
template
v
-
slot
=
"
{
row
}
"
>
<
template
v
-
slot
=
"
{
row
}
"
>
{{
list
.
find
(
i
=>
i
.
id
==
row
.
userId
).
identityName
}}
{{
list
.
find
((
i
)
=>
i
.
id
==
row
.
userId
).
identityName
}}
<
/template
>
<
/template
>
<
/el-table-column
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('操作时间')
"
>
<
el
-
table
-
column
:
label
=
"
$t('操作时间')
"
>
<
template
v
-
slot
:
default
=
"
scope
"
>
<
template
v
-
slot
:
default
=
"
scope
"
>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
{{
parseTime
(
scope
.
row
.
createTime
)
}}
<
/template
>
<
/template
>
<
/el-table-column
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('操作ip')
"
prop
=
"
ip
"
><
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('操作ip')
"
prop
=
"
ip
"
><
/el-table-column
>
<
/el-table
>
<
/el-table
>
<
pagination
v
-
show
=
"
totalLog > 0
"
:
total
=
"
totalLog
"
:
page
.
sync
=
"
operationLogFrom.page
"
:
limit
.
sync
=
"
operationLogFrom.row
"
<
pagination
@
pagination
=
"
getOperationLogList
"
/>
v
-
show
=
"
totalLog > 0
"
:
total
=
"
totalLog
"
:
page
.
sync
=
"
operationLogFrom.page
"
:
limit
.
sync
=
"
operationLogFrom.row
"
@
pagination
=
"
getOperationLogList
"
/>
<
/el-dialog
>
<
/el-dialog
>
<
el
-
dialog
<
el
-
dialog
:
title
=
"
$t('认证')
"
:
visible
.
sync
=
"
attestationShow
"
width
=
"
80%
"
>
:
title
=
"
$t('认证')
"
<
div
class
=
"
details
"
>
:
visible
.
sync
=
"
attestationShow
"
<
el
-
tabs
v
-
model
=
"
activeName
"
@
tab
-
click
=
"
handleClick
"
>
width
=
"
80%
"
>
<
el
-
tab
-
pane
:
label
=
"
$t('身份证')
"
name
=
"
1
"
>
<
div
class
=
"
details
"
>
<
div
style
=
"
padding: 0 40px; box-sizing: border-box
"
>
<
el
-
tabs
v
-
model
=
"
activeName
"
@
tab
-
click
=
"
handleClick
"
>
<
el
-
form
<
el
-
tab
-
pane
:
label
=
"
$t('身份证')
"
name
=
"
1
"
>
:
disabled
=
"
[2, 3].includes(IdDetails.status) && modifyIdCard
"
<
div
style
=
"
padding:0 40px;box-sizing: border-box;
"
>
ref
=
"
formId
"
<
el
-
form
:
disabled
=
"
[2,3].includes(IdDetails.status) && modifyIdCard
"
ref
=
"
formId
"
label
-
position
=
"
left
"
label
-
width
=
"
100px
"
:
rules
=
"
rulesId
"
:
model
=
"
IdDetails
"
>
label
-
position
=
"
left
"
<
el
-
form
-
item
:
label
=
"
$t('姓名')
"
prop
=
"
name
"
>
label
-
width
=
"
100px
"
<
el
-
input
v
-
model
=
"
IdDetails.name
"
><
/el-input
>
:
rules
=
"
rulesId
"
<
/el-form-item
>
:
model
=
"
IdDetails
"
<
el
-
form
-
item
:
label
=
"
$t('证件类型')
"
prop
=
"
cardType
"
>
>
<
dict
-
selector
v
-
model
=
"
IdDetails.cardType
"
:
type
=
"
DICT_TYPE.CERTIFICATE_TYPE
"
><
/dict-selector
>
<
el
-
form
-
item
:
label
=
"
$t('姓名')
"
prop
=
"
name
"
>
<
/el-form-item
>
<
el
-
input
v
-
model
=
"
IdDetails.name
"
><
/el-input
>
<
el
-
form
-
item
:
label
=
"
$t('证件号码')
"
prop
=
"
cardNumber
"
>
<
/el-form-item
>
<
el
-
input
v
-
model
=
"
IdDetails.cardNumber
"
><
/el-input
>
<
el
-
form
-
item
:
label
=
"
$t('证件类型')
"
prop
=
"
cardType
"
>
<
/el-form-item
>
<
dict
-
selector
<
el
-
form
-
item
:
label
=
"
$t('证件正面照')
"
prop
=
"
img1
"
>
v
-
model
=
"
IdDetails.cardType
"
<
div
>
:
type
=
"
DICT_TYPE.CERTIFICATE_TYPE
"
<
el
-
input
readonly
style
=
"
margin-bottom: 20px
"
v
-
model
=
"
IdDetails.img1
"
><
/el-input
>
><
/dict-selector
>
<
ImageUpload
:
isShowTip
=
"
false
"
v
-
model
=
"
IdDetails.img1
"
:
limit
=
"
1
"
><
/ImageUpload
>
<
/el-form-item
>
<
/div
>
<
el
-
form
-
item
:
label
=
"
$t('证件号码')
"
prop
=
"
cardNumber
"
>
<
/el-form-item
>
<
el
-
input
v
-
model
=
"
IdDetails.cardNumber
"
><
/el-input
>
<
el
-
form
-
item
:
label
=
"
$t('证件背面照')
"
prop
=
"
img2
"
>
<
/el-form-item
>
<
div
>
<
el
-
form
-
item
:
label
=
"
$t('证件正面照')
"
prop
=
"
img1
"
>
<
el
-
input
readonly
style
=
"
margin-bottom: 20px
"
v
-
model
=
"
IdDetails.img2
"
><
/el-input
>
<
div
>
<
ImageUpload
:
isShowTip
=
"
false
"
:
limit
=
"
1
"
v
-
model
=
"
IdDetails.img2
"
><
/ImageUpload
>
<
el
-
input
<
/div
>
readonly
<
/el-form-item
>
style
=
"
margin-bottom: 20px
"
<
el
-
form
-
item
:
label
=
"
$t('审核状态')
"
v
-
if
=
"
modifyIdCard && IdDetails.status !== 0
"
>
v
-
model
=
"
IdDetails.img1
"
{{
getDictDatas
(
DICT_TYPE
.
AUDIT_STATUS
)[
IdDetails
.
status
].
label
}}
><
/el-input
>
<
/el-form-item
>
<
ImageUpload
<
el
-
form
-
item
:
label
=
"
$t('审核时间')
"
v
-
if
=
"
[2,3].includes(IdDetails.status) && modifyIdCard
"
>
:
isShowTip
=
"
false
"
{{
parseTime
(
IdDetails
.
auditTime
)
}}
v
-
model
=
"
IdDetails.img1
"
<
/el-form-item
>
:
limit
=
"
1
"
<
el
-
form
-
item
v
-
if
=
"
modifyIdCard && IdDetails.status !== 0
"
:
label
=
"
$t('审核备注')
"
>
><
/ImageUpload
>
<
el
-
input
v
-
model
=
"
IdDetails.auditRemark
"
:
disabled
=
"
IdDetails.status === 3
"
type
=
"
textarea
"
><
/el-input
>
<
/el-form-item
>
<
/el-form
>
<
div
v
-
if
=
"
IdDetails.status === 1
"
style
=
"
text-align: center;margin-top: 20px;
"
>
<
el
-
button
type
=
"
primary
"
@
click
=
"
idCardAuditFn(2)
"
>
{{
$t
(
'
审核通过
'
)
}}
<
/el-button
>
<
el
-
button
type
=
"
primary
"
@
click
=
"
idCardAuditFn(3)
"
>
{{
$t
(
'
审核不通过
'
)
}}
<
/el-button
>
<
el
-
button
@
click
=
"
attestationShow = false
"
>
{{
$t
(
'
取 消
'
)
}}
<
/el-button
>
<
/div
>
<
div
v
-
if
=
"
IdDetails.status === 2 || IdDetails.status === 3
"
style
=
"
text-align: center;margin-top: 20px;
"
>
<
el
-
button
type
=
"
primary
"
v
-
if
=
"
modifyIdCard
"
@
click
=
"
modifyIdCard = false;
"
>
{{
$t
(
'
修 改
'
)
}}
<
/el-button
>
<
el
-
button
type
=
"
primary
"
v
-
else
@
click
=
"
setMemberUserUpdateIdCard
"
>
{{
$t
(
'
提交审核
'
)
}}
<
/el-button
>
<
el
-
button
@
click
=
"
attestationShow = false
"
>
{{
$t
(
'
取 消
'
)
}}
<
/el-button
>
<
/div
>
<
/div
>
<
div
v
-
if
=
"
IdDetails.status === 0
"
style
=
"
text-align: center;margin-top: 20px;
"
>
<
/el-form-item
>
<
el
-
button
type
=
"
primary
"
@
click
=
"
submitId
"
>
{{
$t
(
'
上 传
'
)
}}
<
/el-button
>
<
el
-
form
-
item
:
label
=
"
$t('证件背面照')
"
prop
=
"
img2
"
>
<
el
-
button
@
click
=
"
attestationShow = false
"
>
{{
$t
(
'
取 消
'
)
}}
<
/el-button
>
<
div
>
<
el
-
input
readonly
style
=
"
margin-bottom: 20px
"
v
-
model
=
"
IdDetails.img2
"
><
/el-input
>
<
ImageUpload
:
isShowTip
=
"
false
"
:
limit
=
"
1
"
v
-
model
=
"
IdDetails.img2
"
><
/ImageUpload
>
<
/div
>
<
/div
>
<
/div
>
<
/el-form-item
>
<
/el-tab-pane
>
<
el
-
form
-
item
<
el
-
tab
-
pane
:
label
=
"
$t('营业执照')
"
name
=
"
2
"
>
:
label
=
"
$t('审核状态')
"
<
div
style
=
"
width: 500px;padding:0 40px;box-sizing: border-box;
"
>
v
-
if
=
"
modifyIdCard && IdDetails.status !== 0
"
<
el
-
form
:
disabled
=
"
modifyLicense && [2,3].includes(enterpriseFrom.status)
"
:
rules
=
"
rulesEnterprise
"
:
model
=
"
enterpriseFrom
"
label
-
position
=
"
left
"
ref
=
"
formEnter
"
label
-
width
=
"
100px
"
>
>
<
el
-
form
-
item
:
label
=
"
$t('企业名称')
"
prop
=
"
name
"
>
{{
<
el
-
input
v
-
model
=
"
enterpriseFrom.name
"
><
/el-input
>
getDictDatas
(
DICT_TYPE
.
AUDIT_STATUS
)[
IdDetails
.
status
].
label
<
/el-form-item
>
}}
<
el
-
form
-
item
:
label
=
"
$t('企业法人')
"
prop
=
"
legalName
"
>
<
/el-form-item
>
<
el
-
input
v
-
model
=
"
enterpriseFrom.legalName
"
><
/el-input
>
<
el
-
form
-
item
<
/el-form-item
>
:
label
=
"
$t('审核时间')
"
<
el
-
form
-
item
:
label
=
"
$t('证件号码')
"
prop
=
"
cardNumber
"
>
v
-
if
=
"
[2, 3].includes(IdDetails.status) && modifyIdCard
"
<
el
-
input
v
-
model
=
"
enterpriseFrom.cardNumber
"
><
/el-input
>
>
<
/el-form-item
>
{{
parseTime
(
IdDetails
.
auditTime
)
}}
<
el
-
form
-
item
:
label
=
"
$t('证件照')
"
prop
=
"
img1
"
>
<
/el-form-item
>
<
div
>
<
el
-
form
-
item
<
el
-
input
readonly
style
=
"
margin-bottom: 20px
"
v
-
model
=
"
enterpriseFrom.img1
"
><
/el-input
>
v
-
if
=
"
modifyIdCard && IdDetails.status !== 0
"
<
ImageUpload
:
isShowTip
=
"
false
"
:
limit
=
"
1
"
v
-
model
=
"
enterpriseFrom.img1
"
><
/ImageUpload
>
:
label
=
"
$t('审核备注')
"
<
/div
>
>
<
/el-form-item
>
<
el
-
input
<
el
-
form
-
item
:
label
=
"
$t('附件')
"
>
v
-
model
=
"
IdDetails.auditRemark
"
<
el
-
input
readonly
v
-
model
=
"
enterpriseFrom.img2
"
><
/el-input
>
:
disabled
=
"
IdDetails.status === 3
"
<
ImageUpload
:
isShowTip
=
"
false
"
:
limit
=
"
1
"
v
-
model
=
"
enterpriseFrom.img2
"
><
/ImageUpload
>
type
=
"
textarea
"
<
/el-form-item
>
><
/el-input
>
<
el
-
form
-
item
v
-
if
=
"
modifyLicense && enterpriseFrom.status !== 0
"
:
label
=
"
$t('审核状态')
"
>
{{
getDictDatas
(
DICT_TYPE
.
AUDIT_STATUS
)[
enterpriseFrom
.
status
].
label
}}
<
/el-form-item
>
<
/el-form-item
>
<
el
-
form
-
item
v
-
if
=
"
[2,3].includes(enterpriseFrom.status) && modifyLicense
"
:
label
=
"
$t('审核时间')
"
>
{{
parseTime
(
enterpriseFrom
.
auditTime
)
}}
<
/el-form-item
>
<
/el-form
>
<
el
-
form
-
item
v
-
if
=
"
modifyLicense && enterpriseFrom.status !== 0
"
:
label
=
"
$t('审核备注')
"
>
<
div
<
el
-
input
v
-
model
=
"
enterpriseFrom.auditRemark
"
:
disabled
=
"
enterpriseFrom.status === 3
"
type
=
"
textarea
"
><
/el-input
>
v
-
if
=
"
IdDetails.status === 1
"
<
/el-form-item
>
style
=
"
text-align: center; margin-top: 20px
"
<
/el-form
>
>
<
div
v
-
if
=
"
enterpriseFrom.status === 1
"
style
=
"
text-align: center;margin-top: 20px;
"
>
<
el
-
button
type
=
"
primary
"
@
click
=
"
idCardAuditFn(2)
"
>
{{
<
el
-
button
type
=
"
primary
"
@
click
=
"
certificateVerificationFn(2)
"
>
{{
$t
(
'
审核通过
'
)
}}
<
/el-button
>
$t
(
"
审核通过
"
)
<
el
-
button
type
=
"
primary
"
@
click
=
"
certificateVerificationFn(3)
"
>
{{
$t
(
'
审核不通过
'
)
}}
<
/el-button
>
}}
<
/el-button
>
<
el
-
button
@
click
=
"
attestationShow = false
"
>
{{
$t
(
'
取 消
'
)
}}
<
/el-button
>
<
el
-
button
type
=
"
primary
"
@
click
=
"
idCardAuditFn(3)
"
>
{{
$t
(
"
审核不通过
"
)
}}
<
/el-button
>
<
el
-
button
@
click
=
"
attestationShow = false
"
>
{{
$t
(
"
取 消
"
)
}}
<
/el-button
>
<
/div
>
<
div
v
-
if
=
"
IdDetails.status === 2 || IdDetails.status === 3
"
style
=
"
text-align: center; margin-top: 20px
"
>
<
el
-
button
type
=
"
primary
"
v
-
if
=
"
modifyIdCard
"
@
click
=
"
modifyIdCard = false
"
>
{{
$t
(
"
修 改
"
)
}}
<
/el-butto
n
>
<
el
-
button
type
=
"
primary
"
v
-
else
@
click
=
"
setMemberUserUpdateIdCard
"
>
{{
$t
(
"
提交审核
"
)
}}
<
/el-butto
n
>
<
el
-
button
@
click
=
"
attestationShow = false
"
>
{{
$t
(
"
取 消
"
)
}}
<
/el-button
>
<
/div
>
<
div
v
-
if
=
"
IdDetails.status === 0
"
style
=
"
text-align: center; margin-top: 20px
"
>
<
el
-
button
type
=
"
primary
"
@
click
=
"
submitId
"
>
{{
$t
(
"
上 传
"
)
}}
<
/el-button
>
<
el
-
button
@
click
=
"
attestationShow = false
"
>
{{
$t
(
"
取 消
"
)
}}
<
/el-button
>
<
/div
>
<
/div
>
<
/el-tab-pane
>
<
el
-
tab
-
pane
:
label
=
"
$t('营业执照')
"
name
=
"
2
"
>
<
div
style
=
"
width: 500px; padding: 0 40px; box-sizing: border-box
"
>
<
el
-
form
:
disabled
=
"
modifyLicense && [2, 3].includes(enterpriseFrom.status)
"
:
rules
=
"
rulesEnterprise
"
:
model
=
"
enterpriseFrom
"
label
-
position
=
"
left
"
ref
=
"
formEnter
"
label
-
width
=
"
100px
"
>
<
el
-
form
-
item
:
label
=
"
$t('企业名称')
"
prop
=
"
name
"
>
<
el
-
input
v
-
model
=
"
enterpriseFrom.name
"
><
/el-input
>
<
/el-form-item
>
<
el
-
form
-
item
:
label
=
"
$t('企业法人')
"
prop
=
"
legalName
"
>
<
el
-
input
v
-
model
=
"
enterpriseFrom.legalName
"
><
/el-input
>
<
/el-form-item
>
<
el
-
form
-
item
:
label
=
"
$t('证件号码')
"
prop
=
"
cardNumber
"
>
<
el
-
input
v
-
model
=
"
enterpriseFrom.cardNumber
"
><
/el-input
>
<
/el-form-item
>
<
el
-
form
-
item
:
label
=
"
$t('证件照')
"
prop
=
"
img1
"
>
<
div
>
<
el
-
input
readonly
style
=
"
margin-bottom: 20px
"
v
-
model
=
"
enterpriseFrom.img1
"
><
/el-input
>
<
ImageUpload
:
isShowTip
=
"
false
"
:
limit
=
"
1
"
v
-
model
=
"
enterpriseFrom.img1
"
><
/ImageUpload
>
<
/div
>
<
/div
>
<
div
v
-
if
=
"
enterpriseFrom.status === 2 || enterpriseFrom.status === 3
"
style
=
"
text-align: center;margin-top: 20px;
"
>
<
/el-form-item
>
<
el
-
button
type
=
"
primary
"
v
-
if
=
"
modifyLicense
"
@
click
=
"
modifyLicense = false
"
>
{{
$t
(
'
修 改
'
)
}}
<
/el-button
>
<
el
-
form
-
item
:
label
=
"
$t('附件')
"
>
<
el
-
button
type
=
"
primary
"
v
-
else
@
click
=
"
setMemberUserUpdateEnterprise
"
>
{{
$t
(
'
提交审核
'
)
}}
<
/el-button
>
<
el
-
input
readonly
v
-
model
=
"
enterpriseFrom.img2
"
><
/el-input
>
<
el
-
button
@
click
=
"
attestationShow = false
"
>
{{
$t
(
'
取 消
'
)
}}
<
/el-button
>
<
ImageUpload
<
/div
>
:
isShowTip
=
"
false
"
<
div
v
-
if
=
"
enterpriseFrom.status === 0
"
style
=
"
text-align: center;margin-top: 20px;
"
>
:
limit
=
"
1
"
<
el
-
button
type
=
"
primary
"
@
click
=
"
submit
"
>
{{
$t
(
'
上 传
'
)
}}
<
/el-button
>
v
-
model
=
"
enterpriseFrom.img2
"
<
el
-
button
@
click
=
"
attestationShow = false
"
>
{{
$t
(
'
取 消
'
)
}}
<
/el-button
>
><
/ImageUpload
>
<
/div
>
<
/el-form-item
>
<
/div
>
<
el
-
form
-
item
<
/el-tab-pane
>
v
-
if
=
"
modifyLicense && enterpriseFrom.status !== 0
"
<
/el-tabs
>
:
label
=
"
$t('审核状态')
"
<
/div
>
>
{{
<
/el-dialog
>
getDictDatas
(
DICT_TYPE
.
AUDIT_STATUS
)[
enterpriseFrom
.
status
]
.
label
}}
<
/el-form-ite
m
>
<
el
-
form
-
item
v
-
if
=
"
[2, 3].includes(enterpriseFrom.status) && modifyLicense
"
:
label
=
"
$t('审核时间')
"
>
{{
parseTime
(
enterpriseFrom
.
auditTime
)
}}
<
/el-form-ite
m
>
<
el
-
form
-
item
v
-
if
=
"
modifyLicense && enterpriseFrom.status !== 0
"
:
label
=
"
$t('审核备注')
"
>
<
el
-
input
v
-
model
=
"
enterpriseFrom.auditRemark
"
:
disabled
=
"
enterpriseFrom.status === 3
"
type
=
"
textarea
"
><
/el-input
>
<
/el-form-item
>
<
/el-form
>
<
div
v
-
if
=
"
enterpriseFrom.status === 1
"
style
=
"
text-align: center; margin-top: 20px
"
>
<
el
-
button
type
=
"
primary
"
@
click
=
"
certificateVerificationFn(2)
"
>
{{
$t
(
"
审核通过
"
)
}}
<
/el-butto
n
>
<
el
-
button
type
=
"
primary
"
@
click
=
"
certificateVerificationFn(3)
"
>
{{
$t
(
"
审核不通过
"
)
}}
<
/el-butto
n
>
<
el
-
button
@
click
=
"
attestationShow = false
"
>
{{
$t
(
"
取 消
"
)
}}
<
/el-button
>
<
/div
>
<
div
v
-
if
=
"
enterpriseFrom.status === 2 || enterpriseFrom.status === 3
"
style
=
"
text-align: center; margin-top: 20px
"
>
<
el
-
button
type
=
"
primary
"
v
-
if
=
"
modifyLicense
"
@
click
=
"
modifyLicense = false
"
>
{{
$t
(
"
修 改
"
)
}}
<
/el-butto
n
>
<
el
-
button
type
=
"
primary
"
v
-
else
@
click
=
"
setMemberUserUpdateEnterprise
"
>
{{
$t
(
"
提交审核
"
)
}}
<
/el-butto
n
>
<
el
-
button
@
click
=
"
attestationShow = false
"
>
{{
$t
(
"
取 消
"
)
}}
<
/el-button
>
<
/div
>
<
div
v
-
if
=
"
enterpriseFrom.status === 0
"
style
=
"
text-align: center; margin-top: 20px
"
>
<
el
-
button
type
=
"
primary
"
@
click
=
"
submit
"
>
{{
$t
(
"
上 传
"
)
}}
<
/el-button
>
<
el
-
button
@
click
=
"
attestationShow = false
"
>
{{
$t
(
"
取 消
"
)
}}
<
/el-button
>
<
/div
>
<
/div
>
<
/el-tab-pane
>
<
/el-tabs
>
<
/div
>
<
/el-dialog
>
<
/div
>
<
/div
>
<
/template
>
<
/template
>
...
@@ -265,30 +622,35 @@ import {
...
@@ -265,30 +622,35 @@ import {
setUserUpdateStatus
,
setUserUpdateStatus
,
userCreateAuditEnterprise
,
userCreateAuditEnterprise
,
memberUserAuditEnterprise
,
memberUserAuditEnterprise
,
createAuditIdCard
createAuditIdCard
,
}
from
"
@/api/member/user
"
;
}
from
"
@/api/member/user
"
;
import
{
DICT_TYPE
,
getDictDatas
}
from
"
@/utils/dict
"
;
import
{
DICT_TYPE
,
getDictDatas
}
from
"
@/utils/dict
"
;
import
FileUpload
from
"
@/components/FileUpload
"
import
FileUpload
from
"
@/components/FileUpload
"
;
import
ImageUpload
from
"
@/components/ImageUpload
"
;
import
ImageUpload
from
"
@/components/ImageUpload
"
;
import
uploadImage
from
"
@/components/UploadImage
"
;
import
uploadImage
from
"
@/components/UploadImage
"
;
import
{
CommonStatusEnum
}
from
"
@/utils/constants
"
;
import
{
CommonStatusEnum
}
from
"
@/utils/constants
"
;
import
{
changeUserStatus
,
listServiceUser
,
listSimpleUsers
}
from
"
@/api/system/user
"
;
import
{
changeUserStatus
,
listServiceUser
,
listSimpleUsers
,
}
from
"
@/api/system/user
"
;
export
default
{
export
default
{
name
:
"
User
"
,
name
:
"
User
"
,
components
:
{
components
:
{
FileUpload
,
FileUpload
,
ImageUpload
,
uploadImage
ImageUpload
,
uploadImage
,
}
,
}
,
data
()
{
data
()
{
return
{
return
{
totalLog
:
0
,
totalLog
:
0
,
IdDetails
:{
}
,
IdDetails
:
{
}
,
enterpriseFrom
:{
}
,
enterpriseFrom
:
{
}
,
guaranteeUrl
:
undefined
,
guaranteeUrl
:
undefined
,
DICT_TYPE
,
DICT_TYPE
,
getDictDatas
,
getDictDatas
,
// audit_status
// audit_status
activeName
:
"
1
"
,
activeName
:
"
1
"
,
// 遮罩层
// 遮罩层
loading
:
true
,
loading
:
true
,
// 导出遮罩层
// 导出遮罩层
...
@@ -309,111 +671,196 @@ export default {
...
@@ -309,111 +671,196 @@ export default {
queryParams
:
{
queryParams
:
{
page
:
1
,
page
:
1
,
rows
:
10
,
rows
:
10
,
isDeal
:
undefined
,
// 是否成交
isDeal
:
undefined
,
// 是否成交
searchKey
:
undefined
,
//关键字
searchKey
:
undefined
,
//关键字
auditStatus
:
undefined
,
//审核状态
auditStatus
:
undefined
,
//审核状态
authType
:
undefined
,
//关键字
authType
:
undefined
,
//关键字
customerCode
:
null
,
memberCode
:
null
,
}
,
}
,
// 表单参数
// 表单参数
form
:
{
}
,
form
:
{
}
,
// 表单校验
// 表单校验
rulesId
:
{
rulesId
:
{
name
:
[{
required
:
true
,
message
:
this
.
$t
(
'
用户昵称不能为空
'
),
trigger
:
"
blur
"
}
],
name
:
[
cardType
:
[{
required
:
true
,
message
:
this
.
$t
(
'
证件类型不能为空
'
),
trigger
:
"
blur
"
}
],
{
cardNumber
:
[{
required
:
true
,
message
:
this
.
$t
(
'
证件号码不能为空
'
),
trigger
:
"
blur
"
}
],
required
:
true
,
img1
:
[{
required
:
true
,
message
:
this
.
$t
(
'
身份正面照不能为空
'
),
trigger
:
[
'
blur
'
,
'
change
'
]
}
],
message
:
this
.
$t
(
"
用户昵称不能为空
"
),
img2
:
[{
required
:
true
,
message
:
this
.
$t
(
'
身份正面照不能为空
'
),
trigger
:
[
'
blur
'
,
'
change
'
]
}
],
trigger
:
"
blur
"
,
}
,
],
cardType
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
证件类型不能为空
"
),
trigger
:
"
blur
"
,
}
,
],
cardNumber
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
证件号码不能为空
"
),
trigger
:
"
blur
"
,
}
,
],
img1
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
身份正面照不能为空
"
),
trigger
:
[
"
blur
"
,
"
change
"
],
}
,
],
img2
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
身份正面照不能为空
"
),
trigger
:
[
"
blur
"
,
"
change
"
],
}
,
],
}
,
}
,
rulesEnterprise
:
{
rulesEnterprise
:
{
name
:
[{
required
:
true
,
message
:
this
.
$t
(
'
企业名称不能为空
'
),
trigger
:
"
blur
"
}
],
name
:
[
legalName
:
[{
required
:
true
,
message
:
this
.
$t
(
'
企业法人不能为空
'
),
trigger
:
"
blur
"
}
],
{
cardNumber
:
[{
required
:
true
,
message
:
this
.
$t
(
'
证件号码不能为空
'
),
trigger
:
"
blur
"
}
],
required
:
true
,
img1
:
[{
required
:
true
,
message
:
this
.
$t
(
'
证件照不能为空
'
),
trigger
:
[
'
blur
'
,
'
change
'
]
}
],
message
:
this
.
$t
(
"
企业名称不能为空
"
),
trigger
:
"
blur
"
,
}
,
],
legalName
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
企业法人不能为空
"
),
trigger
:
"
blur
"
,
}
,
],
cardNumber
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
证件号码不能为空
"
),
trigger
:
"
blur
"
,
}
,
],
img1
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
证件照不能为空
"
),
trigger
:
[
"
blur
"
,
"
change
"
],
}
,
],
}
,
}
,
publicObj
:
undefined
,
publicObj
:
undefined
,
operationLogShow
:
false
,
operationLogShow
:
false
,
guaranteeShow
:
false
,
guaranteeShow
:
false
,
operationLogFrom
:{
operationLogFrom
:
{
page
:
1
,
page
:
1
,
row
:
10
,
row
:
10
,
userId
:
undefined
userId
:
undefined
,
}
,
}
,
operationLogList
:[],
operationLogList
:
[],
attestationShow
:
false
,
attestationShow
:
false
,
modifyIdCard
:
true
,
//修改身份证
modifyIdCard
:
true
,
//修改身份证
modifyLicense
:
true
,
//修改营业执照
modifyLicense
:
true
,
//修改营业执照
}
;
}
;
}
,
}
,
created
()
{
created
()
{
this
.
resetId
();
this
.
resetId
();
this
.
resetEnterprise
()
this
.
resetEnterprise
()
;
this
.
getList
();
this
.
getList
();
}
,
}
,
methods
:
{
methods
:
{
deleteFn
(
row
){
handleGoDetail
(
customerId
)
{
this
.
$router
.
push
(
"
/customer/query/
"
+
customerId
);
}
,
deleteFn
(
row
)
{
const
nickname
=
row
.
nickname
;
const
nickname
=
row
.
nickname
;
this
.
$modal
.
confirm
(
`${this.$t('是否确认删除昵称为{nickname
}
的会员?', {nickname
}
)
}
`
).
then
(
function
(){
this
.
$modal
return
deleteUser
(
row
.
id
)
.
confirm
(
}
).
then
(
res
=>
{
`${this.$t("是否确认删除昵称为{nickname
}
的会员?", { nickname
}
)
}
`
if
(
res
.
code
===
0
)
this
.
getList
();
this
.
$message
.
success
(
this
.
$t
(
'
删除成功
'
))
)
}
).
catch
(()
=>
{
.
then
(
function
()
{
// this.$message.success(this.$t('删除失败'))
return
deleteUser
(
row
.
id
);
}
}
)
)
.
then
((
res
)
=>
{
if
(
res
.
code
===
0
)
this
.
getList
();
this
.
$message
.
success
(
this
.
$t
(
"
删除成功
"
));
}
)
.
catch
(()
=>
{
// this.$message.success(this.$t('删除失败'))
}
);
}
,
}
,
//导出
//导出
exportFn
(){
exportFn
()
{
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认导出所有用户数据项?
'
)).
then
(()
=>
{
this
.
$modal
this
.
exportLoading
=
true
;
.
confirm
(
this
.
$t
(
"
是否确认导出所有用户数据项?
"
))
return
exportUserExcel
(
this
.
queryParams
);
.
then
(()
=>
{
}
).
then
(
response
=>
{
this
.
exportLoading
=
true
;
this
.
$download
.
excel
(
response
,
`${this.$t('注册会员')
}
.xls`
);
return
exportUserExcel
(
this
.
queryParams
);
this
.
exportLoading
=
false
;
}
)
}
).
catch
(()
=>
{
}
);
.
then
((
response
)
=>
{
this
.
$download
.
excel
(
response
,
`${this.$t("注册会员")
}
.xls`
);
this
.
exportLoading
=
false
;
}
)
.
catch
(()
=>
{
}
);
}
,
}
,
// 用户状态修改
// 用户状态修改
handleStatusChange
(
row
)
{
handleStatusChange
(
row
)
{
let
text
=
row
.
status
===
CommonStatusEnum
.
ENABLE
?
this
.
$t
(
'
启用
'
)
:
this
.
$t
(
'
停用
'
);
let
text
=
this
.
$modal
.
confirm
(
this
.
$t
(
'
确认要"
'
)
+
text
+
'
""
'
+
row
.
nickname
+
this
.
$t
(
'
"用户吗?
'
)).
then
(
function
()
{
row
.
status
===
CommonStatusEnum
.
ENABLE
return
setUserUpdateStatus
({
id
:
row
.
id
,
status
:
row
.
status
}
)
?
this
.
$t
(
"
启用
"
)
}
).
then
(()
=>
{
:
this
.
$t
(
"
停用
"
);
this
.
$modal
.
msgSuccess
(
text
+
this
.
$t
(
'
成功
'
));
this
.
$modal
}
).
catch
(
function
()
{
.
confirm
(
row
.
status
=
row
.
status
===
CommonStatusEnum
.
ENABLE
?
CommonStatusEnum
.
DISABLE
this
.
$t
(
'
确认要"
'
)
+
text
+
'
""
'
+
row
.
nickname
+
this
.
$t
(
'
"用户吗?
'
)
:
CommonStatusEnum
.
ENABLE
;
)
}
);
.
then
(
function
()
{
return
setUserUpdateStatus
({
id
:
row
.
id
,
status
:
row
.
status
}
);
}
)
.
then
(()
=>
{
this
.
$modal
.
msgSuccess
(
text
+
this
.
$t
(
"
成功
"
));
}
)
.
catch
(
function
()
{
row
.
status
=
row
.
status
===
CommonStatusEnum
.
ENABLE
?
CommonStatusEnum
.
DISABLE
:
CommonStatusEnum
.
ENABLE
;
}
);
}
,
}
,
/** 查询列表 */
/** 查询列表 */
getList
()
{
getList
()
{
this
.
loading
=
true
;
this
.
loading
=
true
;
// 处理查询参数
// 处理查询参数
let
params
=
{
...
this
.
queryParams
}
;
let
params
=
{
...
this
.
queryParams
}
;
// this.addBeginAndEndTime(params, this.dateRangeLoginDate, 'loginDate');
// this.addBeginAndEndTime(params, this.dateRangeLoginDate, 'loginDate');
this
.
addBeginAndEndTime
(
params
,
this
.
dateRangeCreateTime
,
'
createTime
'
,
false
);
this
.
addBeginAndEndTime
(
params
,
this
.
dateRangeCreateTime
,
"
createTime
"
,
false
);
// 执行查询
// 执行查询
getUserPage
(
params
).
then
(
response
=>
{
getUserPage
(
params
).
then
(
(
response
)
=>
{
this
.
list
=
response
.
data
.
list
;
this
.
list
=
response
.
data
.
list
;
this
.
total
=
response
.
data
.
total
;
this
.
total
=
response
.
data
.
total
;
this
.
loading
=
false
;
this
.
loading
=
false
;
}
);
}
);
}
,
}
,
/** 表单重置 */
/** 表单重置 */
resetId
(){
resetId
()
{
this
.
IdDetails
=
{
this
.
IdDetails
=
{
auditRemark
:
undefined
,
auditRemark
:
undefined
,
auditTime
:
undefined
,
auditTime
:
undefined
,
cardNumber
:
undefined
,
cardNumber
:
undefined
,
cardType
:
undefined
,
cardType
:
undefined
,
createTime
:
undefined
,
createTime
:
undefined
,
id
:
0
,
id
:
0
,
img1
:
undefined
,
img1
:
undefined
,
img2
:
undefined
,
img2
:
undefined
,
name
:
''
,
name
:
""
,
status
:
0
,
status
:
0
,
userId
:
0
userId
:
0
,
}
}
;
}
,
//清空身份证
}
,
//清空身份证
resetEnterprise
(){
resetEnterprise
()
{
this
.
enterpriseFrom
=
{
this
.
enterpriseFrom
=
{
auditRemark
:
undefined
,
auditRemark
:
undefined
,
auditTime
:
undefined
,
auditTime
:
undefined
,
...
@@ -425,9 +872,9 @@ export default {
...
@@ -425,9 +872,9 @@ export default {
legalName
:
undefined
,
legalName
:
undefined
,
name
:
undefined
,
name
:
undefined
,
status
:
0
,
status
:
0
,
userId
:
undefined
userId
:
undefined
,
}
}
;
}
,
//清空企业
}
,
//清空企业
/** 搜索按钮操作 */
/** 搜索按钮操作 */
handleQuery
()
{
handleQuery
()
{
this
.
queryParams
.
page
=
1
;
this
.
queryParams
.
page
=
1
;
...
@@ -440,235 +887,237 @@ export default {
...
@@ -440,235 +887,237 @@ export default {
this
.
queryParams
=
{
this
.
queryParams
=
{
page
:
1
,
page
:
1
,
rows
:
10
,
rows
:
10
,
isDeal
:
undefined
,
// 是否成交
isDeal
:
undefined
,
// 是否成交
searchKey
:
undefined
,
//关键字
searchKey
:
undefined
,
//关键字
auditStatus
:
undefined
,
//审核状态
auditStatus
:
undefined
,
//审核状态
authType
:
undefined
,
//关键字
authType
:
undefined
,
//关键字
}
}
;
this
.
resetForm
(
"
queryForm
"
);
this
.
resetForm
(
"
queryForm
"
);
this
.
handleQuery
();
this
.
handleQuery
();
}
,
}
,
// 保函证书
// 保函证书
guarantee
(
row
)
{
guarantee
(
row
)
{
this
.
publicObj
=
row
;
this
.
publicObj
=
row
;
this
.
guaranteeShow
=
true
;
this
.
guaranteeShow
=
true
;
this
.
guaranteeUrl
=
row
.
backLetterImg
;
this
.
guaranteeUrl
=
row
.
backLetterImg
;
}
,
}
,
// 操作日志
// 操作日志
operationLogFn
(
row
){
operationLogFn
(
row
)
{
this
.
publicObj
=
row
;
this
.
publicObj
=
row
;
this
.
operationLogFrom
.
page
=
1
;
this
.
operationLogFrom
.
page
=
1
;
this
.
operationLogFrom
.
userId
=
row
.
id
this
.
operationLogFrom
.
userId
=
row
.
id
;
this
.
operationLogShow
=
true
;
this
.
operationLogShow
=
true
;
this
.
operationLogList
=
[];
this
.
operationLogList
=
[];
this
.
getOperationLogList
();
this
.
getOperationLogList
();
}
,
}
,
getOperationLogList
(){
getOperationLogList
()
{
operationLogApi
(
this
.
operationLogFrom
).
then
(
r
=>
{
operationLogApi
(
this
.
operationLogFrom
).
then
(
(
r
)
=>
{
if
(
r
.
code
===
0
)
{
if
(
r
.
code
===
0
)
{
this
.
operationLogList
=
r
.
data
.
list
this
.
operationLogList
=
r
.
data
.
list
;
this
.
totalLog
=
r
.
data
.
total
this
.
totalLog
=
r
.
data
.
total
;
}
}
}
)
}
)
;
}
,
}
,
setGuarantee
(){
setGuarantee
()
{
seTupdateBackletter
({
userId
:
this
.
publicObj
.
id
,
backLetter
:
this
.
guaranteeUrl
}
).
then
(
r
=>
{
seTupdateBackletter
({
if
(
r
.
code
===
0
){
userId
:
this
.
publicObj
.
id
,
backLetter
:
this
.
guaranteeUrl
,
}
).
then
((
r
)
=>
{
if
(
r
.
code
===
0
)
{
this
.
publicObj
.
backLetterImg
=
this
.
guaranteeUrl
;
this
.
publicObj
.
backLetterImg
=
this
.
guaranteeUrl
;
this
.
guaranteeShow
=
false
;
this
.
guaranteeShow
=
false
;
this
.
$message
.
success
(
this
.
$t
(
'
保存成功
'
));
this
.
$message
.
success
(
this
.
$t
(
"
保存成功
"
));
}
}
}
)
}
)
;
}
,
}
,
identityFn
(
row
,
val
)
{
identityFn
(
row
,
val
)
{
this
.
attestationShow
=
true
;
this
.
attestationShow
=
true
;
this
.
activeName
=
val
;
this
.
activeName
=
val
;
this
.
publicObj
=
row
;
this
.
publicObj
=
row
;
if
(
val
==
1
)
{
if
(
val
==
1
)
{
this
.
getIdentityDetails
();
this
.
getIdentityDetails
();
}
else
{
}
else
{
this
.
getEnterpriseFn
();
this
.
getEnterpriseFn
();
}
}
}
,
}
,
handleClick
(
val
){
handleClick
(
val
)
{
if
(
val
.
name
==
1
)
{
if
(
val
.
name
==
1
)
{
this
.
getIdentityDetails
();
this
.
getIdentityDetails
();
}
else
{
}
else
{
this
.
getEnterpriseFn
();
this
.
getEnterpriseFn
();
}
}
}
,
}
,
getIdentityDetails
(){
getIdentityDetails
()
{
this
.
resetId
();
this
.
resetId
();
memberGetAuthIdcardInfo
({
userId
:
this
.
publicObj
.
id
}
).
then
(
r
=>
{
memberGetAuthIdcardInfo
({
userId
:
this
.
publicObj
.
id
}
).
then
((
r
)
=>
{
if
(
r
.
code
===
0
&&
!!
r
.
data
)
{
if
(
r
.
code
===
0
&&
!!
r
.
data
)
{
this
.
IdDetails
=
r
.
data
this
.
IdDetails
=
r
.
data
;
}
}
}
)
}
)
;
}
,
}
,
getEnterpriseFn
(){
getEnterpriseFn
()
{
this
.
resetEnterprise
();
this
.
resetEnterprise
();
memberGetAuthEnterpriseInfo
({
userId
:
this
.
publicObj
.
id
}
).
then
(
r
=>
{
memberGetAuthEnterpriseInfo
({
userId
:
this
.
publicObj
.
id
}
).
then
((
r
)
=>
{
if
(
r
.
code
===
0
&&
!!
r
.
data
)
{
if
(
r
.
code
===
0
&&
!!
r
.
data
)
{
this
.
enterpriseFrom
=
r
.
data
this
.
enterpriseFrom
=
r
.
data
;
}
}
}
)
}
)
;
}
,
}
,
//身份证审核
//身份证审核
idCardAuditFn
(
val
){
idCardAuditFn
(
val
)
{
let
p
=
{
let
p
=
{
auditStatus
:
val
,
auditStatus
:
val
,
userCardAuthId
:
this
.
IdDetails
.
id
,
userCardAuthId
:
this
.
IdDetails
.
id
,
auditRemark
:
this
.
IdDetails
.
auditRemark
auditRemark
:
this
.
IdDetails
.
auditRemark
,
}
}
;
memberUserAuditIdCard
(
p
).
then
(
r
=>
{
memberUserAuditIdCard
(
p
).
then
(
(
r
)
=>
{
if
(
r
.
code
===
0
)
{
if
(
r
.
code
===
0
)
{
this
.
$message
.
success
(
this
.
$t
(
'
修改成功
'
));
this
.
$message
.
success
(
this
.
$t
(
"
修改成功
"
));
this
.
getList
()
this
.
getList
()
;
this
.
getIdentityDetails
()
this
.
getIdentityDetails
()
;
}
}
}
)
}
)
;
}
,
}
,
// 企业证书审核
// 企业证书审核
certificateVerificationFn
(
val
){
certificateVerificationFn
(
val
)
{
let
p
=
{
let
p
=
{
auditStatus
:
val
,
auditStatus
:
val
,
userEnterpriseAuthId
:
this
.
enterpriseFrom
.
id
,
userEnterpriseAuthId
:
this
.
enterpriseFrom
.
id
,
auditRemark
:
this
.
enterpriseFrom
.
auditRemark
auditRemark
:
this
.
enterpriseFrom
.
auditRemark
,
}
}
;
memberUserAuditEnterprise
(
p
).
then
(
r
=>
{
memberUserAuditEnterprise
(
p
).
then
(
(
r
)
=>
{
if
(
r
.
code
===
0
)
{
if
(
r
.
code
===
0
)
{
this
.
getList
()
this
.
getList
()
;
this
.
getEnterpriseFn
();
this
.
getEnterpriseFn
();
}
}
}
)
}
)
;
}
,
}
,
setMemberUserUpdateIdCard
(){
setMemberUserUpdateIdCard
()
{
this
.
$refs
.
formId
.
validate
(
async
valid
=>
{
this
.
$refs
.
formId
.
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
let
p
=
{
let
p
=
{
cardNumber
:
this
.
IdDetails
.
cardNumber
,
cardNumber
:
this
.
IdDetails
.
cardNumber
,
cardType
:
this
.
IdDetails
.
cardType
,
cardType
:
this
.
IdDetails
.
cardType
,
img1
:
this
.
IdDetails
.
img1
,
img1
:
this
.
IdDetails
.
img1
,
img2
:
this
.
IdDetails
.
img2
,
img2
:
this
.
IdDetails
.
img2
,
name
:
this
.
IdDetails
.
name
,
name
:
this
.
IdDetails
.
name
,
userCardAuthId
:
this
.
IdDetails
.
id
,
userCardAuthId
:
this
.
IdDetails
.
id
,
auditPass
:
true
,
auditPass
:
true
,
}
;
}
;
memberUserUpdateIdCard
(
p
).
then
(
r
=>
{
memberUserUpdateIdCard
(
p
).
then
((
r
)
=>
{
if
(
r
.
code
===
0
)
{
if
(
r
.
code
===
0
)
{
this
.
$message
.
success
(
this
.
$t
(
'
修改成功
'
))
this
.
$message
.
success
(
this
.
$t
(
"
修改成功
"
));
if
(
p
.
auditPass
===
true
)
{
if
(
p
.
auditPass
===
true
)
{
this
.
getIdentityDetails
()
this
.
getIdentityDetails
();
}
}
this
.
getList
()
this
.
getList
();
this
.
modifyIdCard
=
true
;
this
.
modifyIdCard
=
true
;
}
}
}
)
}
);
}
}
}
)
}
)
;
}
,
}
,
setMemberUserUpdateEnterprise
(){
setMemberUserUpdateEnterprise
()
{
this
.
$refs
.
formEnter
.
validate
(
async
valid
=>
{
this
.
$refs
.
formEnter
.
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
let
p
=
{
let
p
=
{
cardNumber
:
this
.
enterpriseFrom
.
cardNumber
,
cardNumber
:
this
.
enterpriseFrom
.
cardNumber
,
img1
:
this
.
enterpriseFrom
.
img1
,
img1
:
this
.
enterpriseFrom
.
img1
,
img2
:
this
.
enterpriseFrom
.
img2
,
img2
:
this
.
enterpriseFrom
.
img2
,
legalName
:
this
.
enterpriseFrom
.
legalName
,
legalName
:
this
.
enterpriseFrom
.
legalName
,
name
:
this
.
enterpriseFrom
.
name
,
name
:
this
.
enterpriseFrom
.
name
,
userEnterpriseAuthId
:
this
.
enterpriseFrom
.
id
,
userEnterpriseAuthId
:
this
.
enterpriseFrom
.
id
,
auditPass
:
true
,
auditPass
:
true
,
}
}
;
memberUserUpdateEnterprise
(
p
).
then
(
r
=>
{
memberUserUpdateEnterprise
(
p
).
then
(
(
r
)
=>
{
if
(
r
.
code
===
0
)
{
if
(
r
.
code
===
0
)
{
if
(
p
.
auditPass
===
true
)
{
if
(
p
.
auditPass
===
true
)
{
this
.
getEnterpriseFn
();
this
.
getEnterpriseFn
();
}
}
this
.
getList
()
this
.
getList
()
;
this
.
modifyLicense
=
true
;
this
.
modifyLicense
=
true
;
this
.
$message
.
success
(
this
.
$t
(
'
修改成功
'
));
this
.
$message
.
success
(
this
.
$t
(
"
修改成功
"
));
}
}
}
)
}
)
;
}
}
}
)
}
)
;
}
,
}
,
authentication
(
row
){
authentication
(
row
)
{
if
(
!
row
.
identityAuditStatus
&&
!
row
.
enterpriseAuditStatus
)
{
if
(
!
row
.
identityAuditStatus
&&
!
row
.
enterpriseAuditStatus
)
{
return
this
.
$t
(
'
否
'
)
return
this
.
$t
(
"
否
"
);
}
else
if
(
!!
row
.
identityAuditStatus
&&
!!
row
.
enterpriseAuditStatus
)
{
}
else
if
(
!!
row
.
identityAuditStatus
&&
!!
row
.
enterpriseAuditStatus
)
{
return
this
.
$t
(
'
双认证
'
)
return
this
.
$t
(
"
双认证
"
);
}
else
if
(
row
.
identityAuditStatus
>=
0
)
{
}
else
if
(
row
.
identityAuditStatus
>=
0
)
{
return
this
.
$t
(
'
身份
'
)
return
this
.
$t
(
"
身份
"
);
}
else
if
(
row
.
enterpriseAuditStatus
>=
0
)
{
}
else
if
(
row
.
enterpriseAuditStatus
>=
0
)
{
return
this
.
$t
(
'
营业
'
)
return
this
.
$t
(
"
营业
"
);
}
}
}
,
}
,
submit
(){
submit
()
{
let
p
=
{
let
p
=
{
cardNumber
:
this
.
enterpriseFrom
.
cardNumber
,
cardNumber
:
this
.
enterpriseFrom
.
cardNumber
,
img1
:
this
.
enterpriseFrom
.
img1
,
img1
:
this
.
enterpriseFrom
.
img1
,
img2
:
this
.
enterpriseFrom
.
img2
,
img2
:
this
.
enterpriseFrom
.
img2
,
legalName
:
this
.
enterpriseFrom
.
legalName
,
legalName
:
this
.
enterpriseFrom
.
legalName
,
name
:
this
.
enterpriseFrom
.
name
,
name
:
this
.
enterpriseFrom
.
name
,
userEnterpriseAuthId
:
this
.
enterpriseFrom
.
id
,
userEnterpriseAuthId
:
this
.
enterpriseFrom
.
id
,
userId
:
this
.
publicObj
.
id
userId
:
this
.
publicObj
.
id
,
}
}
;
userCreateAuditEnterprise
(
p
).
then
(
r
=>
{
userCreateAuditEnterprise
(
p
).
then
(
(
r
)
=>
{
if
(
r
.
code
===
0
)
{
if
(
r
.
code
===
0
)
{
this
.
$message
.
success
(
this
.
$t
(
'
添加成功!
'
));
this
.
$message
.
success
(
this
.
$t
(
"
添加成功!
"
));
this
.
enterpriseFrom
.
status
=
2
this
.
enterpriseFrom
.
status
=
2
;
this
.
enterpriseFrom
.
auditTime
=
new
Date
().
getTime
()
this
.
enterpriseFrom
.
auditTime
=
new
Date
().
getTime
()
;
this
.
getEnterpriseFn
();
this
.
getEnterpriseFn
();
this
.
getList
()
this
.
getList
()
;
}
}
}
)
}
)
;
}
,
}
,
submitId
(){
submitId
()
{
this
.
$refs
.
formId
.
validate
(
async
valid
=>
{
this
.
$refs
.
formId
.
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
let
p
=
{
let
p
=
{
cardNumber
:
this
.
IdDetails
.
cardNumber
,
cardNumber
:
this
.
IdDetails
.
cardNumber
,
cardType
:
this
.
IdDetails
.
cardType
,
cardType
:
this
.
IdDetails
.
cardType
,
img1
:
this
.
IdDetails
.
img1
,
img1
:
this
.
IdDetails
.
img1
,
img2
:
this
.
IdDetails
.
img2
,
img2
:
this
.
IdDetails
.
img2
,
name
:
this
.
IdDetails
.
name
,
name
:
this
.
IdDetails
.
name
,
status
:
2
,
status
:
2
,
userId
:
this
.
publicObj
.
id
userId
:
this
.
publicObj
.
id
,
}
;
}
;
createAuditIdCard
(
p
).
then
(
r
=>
{
createAuditIdCard
(
p
).
then
(
(
r
)
=>
{
if
(
r
.
code
===
0
)
{
if
(
r
.
code
===
0
)
{
this
.
$message
.
success
(
this
.
$t
(
'
添加成功!
'
));
this
.
$message
.
success
(
this
.
$t
(
"
添加成功!
"
));
this
.
IdDetails
.
status
=
2
this
.
IdDetails
.
status
=
2
;
this
.
IdDetails
.
auditTime
=
new
Date
().
getTime
()
this
.
IdDetails
.
auditTime
=
new
Date
().
getTime
()
;
this
.
getIdentityDetails
();
this
.
getIdentityDetails
();
this
.
getList
()
this
.
getList
()
;
}
}
}
)
}
)
;
}
}
}
)
}
);
}
}
,
}
,
watch
:
{
attestationShow
(
newVal
)
{
if
(
!
newVal
)
{
this
.
resetId
();
this
.
resetEnterprise
();
this
.
publicObj
=
undefined
;
}
else
{
this
.
modifyIdCard
=
true
;
this
.
modifyLicense
=
true
;
}
}
,
}
,
}
,
watch
:{
attestationShow
(
newVal
){
if
(
!
newVal
){
this
.
resetId
();
this
.
resetEnterprise
()
this
.
publicObj
=
undefined
;
}
else
{
this
.
modifyIdCard
=
true
;
this
.
modifyLicense
=
true
;
}
}
}
}
;
}
;
<
/script
>
<
/script
>
<
style
lang
=
"
scss
"
scoped
>
<
style
lang
=
"
scss
"
scoped
>
.
details
{
.
details
{
.
el
-
input
{
.
el
-
input
{
width
:
300
px
;
width
:
300
px
;
}
}
.
el
-
textarea
{
.
el
-
textarea
{
width
:
300
px
;
width
:
300
px
;
}
}
}
}
...
...
src/views/member/user/memberDetails.vue
View file @
7e0c1c55
...
@@ -81,6 +81,15 @@
...
@@ -81,6 +81,15 @@
<el-descriptions-item
:label=
"$t('上次登录')"
>
{{
<el-descriptions-item
:label=
"$t('上次登录')"
>
{{
details
.
loginDate
details
.
loginDate
}}
</el-descriptions-item>
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('绑定客户')"
>
{{
details
.
customerCode
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('国家')"
>
{{
isChinese
?
details
.
countryTitleZh
:
details
.
countryTitleEn
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('城市')"
>
{{
isChinese
?
details
.
cityTitleZh
:
cityTitleEn
}}
</el-descriptions-item>
</el-descriptions>
</el-descriptions>
<!--lanbm 2024-05-15 修改信息显示BUG-->
<!--lanbm 2024-05-15 修改信息显示BUG-->
<el-descriptions
<el-descriptions
...
@@ -168,6 +177,320 @@
...
@@ -168,6 +177,320 @@
:
""
:
""
}}
</el-descriptions-item>
}}
</el-descriptions-item>
</el-descriptions>
</el-descriptions>
<!-- 积分信息 -->
<el-descriptions
style=
"margin-top: 20px"
:title=
"$t('积分信息')"
:column=
"6"
direction=
"vertical"
border
>
<el-descriptions-item
:label=
"$t('会员图标')"
>
<el-image
:src=
"details.userScoreLevelInfo.levelIcon"
style=
"width: 20px; height: 20px"
>
{{
$t
(
"
无
"
)
}}
</el-image
></el-descriptions-item
>
<el-descriptions-item
:label=
"$t('会员等级')"
>
{{
details
.
userScoreLevelInfo
.
levelName
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('当前积分')"
>
{{
details
.
userScoreLevelInfo
.
holdScore
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('已兑换积分')"
>
{{
details
.
userScoreLevelInfo
.
usedScore
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('推荐码')"
>
{{
details
.
userScoreLevelInfo
.
memberCode
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('操作')"
>
<!--
<el-button
type=
"text"
class=
"copy-btn"
:data-clipboard-text=
"details.memberCode"
>
{{
$t
(
"
复制推荐码
"
)
}}
</el-button>
-->
<el-button
type=
"text"
@
click=
"handleExchangeRewards(details)"
>
{{
$t
(
"
兑换礼品
"
)
}}
</el-button>
</el-descriptions-item>
</el-descriptions>
<!-- table Tab -->
<el-menu
:default-active=
"activeIndex"
class=
"el-menu-demo"
mode=
"horizontal"
@
select=
"handleSelect"
>
<el-menu-item
index=
"reward"
>
{{
$t
(
"
积分记录
"
)
}}
</el-menu-item>
<el-menu-item
index=
"exchange"
>
{{
$t
(
"
兑换记录
"
)
}}
</el-menu-item>
</el-menu>
<div
class=
"table-container"
>
<div
class=
"reward"
v-if=
"activeIndex == 'reward'"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
label-width=
"120px"
>
<el-form-item
:label=
"$t('积分规则')"
>
<dict-selector
clearable
:type=
"DICT_TYPE.SCORE_RULE_TYPE"
v-model=
"queryParams.sourceType"
@
change=
"handleQuery"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('规则说明')"
>
<el-input
style=
"width: 300px"
v-model.trim=
"queryParams.ruleDesc"
:placeholder=
"$t('请输入关键词查找')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('兑换时间')"
>
<el-date-picker
type=
"datetimerange"
clearable
placement=
"bottom-start"
v-model=
"dateRangeCreateTime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd HH:mm:ss"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
"
搜索
"
)
}}
</el-button
>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
"
重置
"
)
}}
</el-button>
</el-form-item>
</el-form>
<el-table
ref=
"multipleTable"
v-loading=
"loading"
:data=
"memberList"
>
<el-table-column
width=
"140"
:label=
"$t('积分记录ID')"
align=
"center"
prop=
"id"
></el-table-column>
<el-table-column
:label=
"$t('积分来源')"
align=
"center"
>
<template
slot-scope=
"scope"
>
{{
isChinese
?
handleSourceType
(
scope
.
row
.
sourceType
).
label
:
handleSourceType
(
scope
.
row
.
sourceType
).
labelEn
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('规则标题')"
align=
"center"
:prop=
"isChinese ? 'ruleTitleZh' : 'ruleTitleEn'"
>
</el-table-column>
<el-table-column
:label=
"$t('规则说明')"
align=
"center"
:prop=
"isChinese ? 'ruleDescZh' : 'ruleDescEn'"
>
</el-table-column>
<el-table-column
align=
"center"
:label=
"$t('分值')"
prop=
"scoreCount"
></el-table-column>
<el-table-column
:label=
"$t('操作积分时间')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
{{
parseTime
(
row
.
createTime
)
||
"
/
"
}}
</
template
>
</el-table-column>
</el-table>
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"handleQueryPagination"
/>
</div>
<div
class=
"exchange"
v-else
>
<el-form
:model=
"queryParamsRecord"
ref=
"queryForm"
size=
"small"
:inline=
"true"
label-width=
"120px"
>
<el-form-item
:label=
"$t('礼品名称')"
>
<el-input
style=
"width: 300px"
v-model.trim=
"queryParamsRecord.rewardTitle"
:placeholder=
"$t('请输入礼品名称')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('领取方式')"
>
<dict-selector
clearable
:type=
"DICT_TYPE.WAY_OF_RECEIVING"
v-model=
"queryParamsRecord.redeemType"
>
</dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('兑换时间')"
>
<el-date-picker
type=
"datetimerange"
clearable
placement=
"bottom-start"
v-model=
"dateRangeCreateTimeRecord"
style=
"width: 240px"
value-format=
"yyyy-MM-dd HH:mm:ss"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQueryRecord"
>
{{ $t("搜索") }}
</el-button
>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQueryRecord"
>
{{
$t("重置")
}}
</el-button>
</el-form-item>
</el-form>
<el-table
ref=
"multipleTable"
v-loading=
"loading"
:data=
"memberRecordList"
>
<el-table-column
width=
"140"
:label=
"$t('兑换记录ID')"
align=
"center"
prop=
"id"
></el-table-column>
<el-table-column
width=
"140"
:label=
"$t('礼品ID')"
align=
"center"
prop=
"rewardCode"
></el-table-column>
<el-table-column
:label=
"$t('礼品名称')"
align=
"center"
:prop=
"isChinese ? 'rewardTitleZh' : 'rewardTitleEn'"
></el-table-column>
<el-table-column
:label=
"$t('会员名称')"
align=
"center"
:prop=
"isChinese ? 'memberNameZh' : 'memberNameEn'"
></el-table-column>
<el-table-column
:label=
"$t('兑换时间')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
{{
parseTime
(
row
.
redemptionTime
)
||
"
/
"
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('兑换积分')"
align=
"center"
prop=
"totalCount"
></el-table-column>
<el-table-column
width=
"140"
:label=
"$t('兑换入口')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
{{
isChinese
?
handleExchangeEntrance
(
row
.
entrance
).
label
:
handleExchangeEntrance
(
row
.
entrance
).
labelEn
}}
</
template
>
</el-table-column>
<el-table-column
width=
"140"
:label=
"$t('兑换网点')"
align=
"center"
:prop=
"isChinese ? 'nodeTitleZh' : 'nodeTitleEn'"
>
</el-table-column>
<el-table-column
width=
"140"
:label=
"$t('领取方式')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
{{
isChinese
?
handleExchangeRedeemType
(
row
.
redeemType
).
label
:
handleExchangeRedeemType
(
row
.
redeemType
).
labelEn
}}
</
template
>
</el-table-column>
<el-table-column
width=
"140"
:label=
"$t('状态')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
{{
isChinese
?
handleExchangeStatus
(
row
.
status
).
label
:
handleExchangeStatus
(
row
.
status
).
labelEn
}}
</
template
>
</el-table-column>
<el-table-column
width=
"140"
:label=
"$t('备注')"
align=
"center"
prop=
"remark"
></el-table-column
>
、
<el-table-column
width=
"140"
:label=
"$t('数量')"
align=
"center"
prop=
"rewardCount"
></el-table-column>
<el-table-column
width=
"140"
:label=
"$t('创建人')"
align=
"center"
prop=
"creatorName"
></el-table-column>
<el-table-column
width=
"140"
:label=
"$t('更新人')"
align=
"center"
prop=
"updaterName"
></el-table-column>
</el-table>
<!-- //分页列表 -->
<pagination
v-show=
"totalRecord > 0"
:total=
"totalRecord"
:page.sync=
"queryParamsRecord.pageNo"
:limit.sync=
"queryParamsRecord.pageSize"
@
pagination=
"handleQueryPaginationRecord"
/>
</div>
</div>
<el-dialog
<el-dialog
title=
"保函/证书"
title=
"保函/证书"
:visible.sync=
"guaranteeShow"
:visible.sync=
"guaranteeShow"
...
@@ -509,12 +832,54 @@ import {
...
@@ -509,12 +832,54 @@ import {
import
FileUpload
from
"
@/components/FileUpload/index.vue
"
;
import
FileUpload
from
"
@/components/FileUpload/index.vue
"
;
import
ImageUpload
from
"
@/components/ImageUpload/index.vue
"
;
import
ImageUpload
from
"
@/components/ImageUpload/index.vue
"
;
import
{
DICT_TYPE
,
getDictDatas
}
from
"
@/utils/dict
"
;
import
{
DICT_TYPE
,
getDictDatas
}
from
"
@/utils/dict
"
;
import
ClipboardJS
from
"
clipboard
"
;
import
{
queryMemberScoreRecord
,
queryMemberExchangeRecord
,
}
from
"
@/api/ecw/memberManagement
"
;
export
default
{
export
default
{
name
:
"
memberDetails
"
,
name
:
"
memberDetails
"
,
components
:
{
ImageUpload
,
FileUpload
},
components
:
{
ImageUpload
,
FileUpload
},
data
()
{
data
()
{
return
{
return
{
//兑换记录:
dateRangeCreateTimeRecord
:
[],
memberRecordList
:
[],
queryParamsRecord
:
{
rewardTitle
:
""
,
memberId
:
this
.
$route
.
params
.
id
,
memberName
:
""
,
//会员昵称
redeemType
:
""
,
//兑换方式
status
:
""
,
rewardCount
:
""
,
rewardCountOperate
:
""
,
rewardCode
:
""
,
entrance
:
""
,
//兑换入口
startTime
:
""
,
endTime
:
""
,
nodeId
:
""
,
pageNo
:
1
,
pageSize
:
100
,
},
queryParams
:
{
ruleTitle
:
""
,
ruleDesc
:
""
,
key
:
""
,
sourceType
:
""
,
scoreCount
:
""
,
memberId
:
this
.
$route
.
params
.
id
,
scoreCountOperate
:
""
,
endTime
:
""
,
pageNo
:
1
,
pageSize
:
10
,
startTime
:
""
,
},
dateRangeCreateTime
:
[],
total
:
0
,
totalRecord
:
0
,
loading
:
true
,
activeIndex
:
"
reward
"
,
// 表单校验
// 表单校验
rulesId
:
{
rulesId
:
{
name
:
[
name
:
[
...
@@ -648,8 +1013,156 @@ export default {
...
@@ -648,8 +1013,156 @@ export default {
},
},
created
()
{
created
()
{
this
.
getDetails
();
this
.
getDetails
();
this
.
handleQuery
();
this
.
handleQueryRecord
();
},
computed
:
{
isChinese
()
{
return
this
.
$i18n
.
locale
===
"
zh_CN
"
;
},
},
mounted
()
{
let
clipboard
=
new
ClipboardJS
(
"
.copy-btn
"
);
clipboard
.
on
(
"
success
"
,
()
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
复制成功
"
));
});
clipboard
.
on
(
"
error
"
,
()
=>
{
this
.
$message
.
error
(
this
.
$t
(
"
复制失败
"
));
});
},
},
methods
:
{
methods
:
{
handleExchangeRedeemType
(
id
)
{
return
this
.
getDictDatas
(
DICT_TYPE
.
WAY_OF_RECEIVING
).
filter
(
(
item
)
=>
item
.
value
==
id
)[
0
];
},
//兑换入口
handleExchangeEntrance
(
id
)
{
return
this
.
getDictDatas
(
DICT_TYPE
.
PLATFORM_TYPE
).
filter
(
(
item
)
=>
item
.
value
==
id
)[
0
];
},
//兑换状态
handleExchangeStatus
(
id
)
{
return
this
.
getDictDatas
(
DICT_TYPE
.
REWARD_REDEEM_STATUS
).
filter
(
(
item
)
=>
item
.
value
==
id
)[
0
];
},
handleQueryRecord
()
{
this
.
queryParamsRecord
.
pageNo
=
1
;
let
params
=
{
...
this
.
queryParamsRecord
};
if
(
this
.
dateRangeCreateTimeRecord
)
{
params
.
startTime
=
this
.
dateRangeCreateTimeRecord
[
0
];
params
.
endTime
=
this
.
dateRangeCreateTimeRecord
[
1
];
}
queryMemberExchangeRecord
(
params
).
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
memberRecordList
=
res
.
data
.
list
;
this
.
totalRecord
=
res
.
data
.
total
;
});
},
resetQueryRecord
()
{
this
.
loading
=
true
;
this
.
dateRangeCreateTimeRecord
=
[];
this
.
queryParamsRecord
=
{
country
:
null
,
city
:
null
,
endTime
:
null
,
holdScore
:
null
,
memberId
:
this
.
$route
.
params
.
id
,
holdScoreOperate
:
null
,
key
:
null
,
pageNo
:
1
,
pageSize
:
100
,
startTime
:
null
,
usedScore
:
null
,
usedScoreOperate
:
null
,
};
this
.
handleQueryRecord
();
},
handleQueryPaginationRecord
()
{
let
params
=
{
...
this
.
queryParamsRecord
};
if
(
this
.
dateRangeCreateTimeRecord
)
{
params
.
startTime
=
this
.
dateRangeCreateTimeRecord
[
0
];
params
.
endTime
=
this
.
dateRangeCreateTimeRecord
[
1
];
}
queryMemberExchangeRecord
(
params
).
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
memberRecordList
=
res
.
data
.
list
;
this
.
totalRecord
=
res
.
data
.
total
;
});
},
handleSourceType
(
id
)
{
return
this
.
getDictDatas
(
DICT_TYPE
.
MEMBER_SCORE_SOURCE
).
filter
(
(
item
)
=>
item
.
value
==
id
)[
0
];
},
handleholdScoreStatus
(
id
)
{
return
this
.
getDictDatas
(
DICT_TYPE
.
MEMBER_SCORE_OPERATE_TYPE
).
filter
(
(
item
)
=>
item
.
value
==
id
)[
0
];
},
handleQuery
()
{
this
.
queryParams
.
pageNo
=
1
;
let
params
=
{
...
this
.
queryParams
};
if
(
this
.
dateRangeCreateTime
)
{
params
.
startTime
=
this
.
dateRangeCreateTime
[
0
];
params
.
endTime
=
this
.
dateRangeCreateTime
[
1
];
}
queryMemberScoreRecord
(
params
).
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
memberList
=
res
.
data
.
list
;
this
.
total
=
res
.
data
.
total
;
});
},
handleQueryPagination
()
{
let
params
=
{
...
this
.
queryParams
};
if
(
this
.
dateRangeCreateTime
)
{
params
.
startTime
=
this
.
dateRangeCreateTime
[
0
];
params
.
endTime
=
this
.
dateRangeCreateTime
[
1
];
}
queryMemberScoreRecord
(
params
).
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
memberList
=
res
.
data
.
list
;
this
.
total
=
res
.
data
.
total
;
});
},
resetQuery
()
{
this
.
loading
=
true
;
this
.
dateRangeCreateTime
=
[];
this
.
queryParams
=
{
ruleTitle
:
""
,
ruleDesc
:
""
,
key
:
""
,
sourceType
:
""
,
scoreCount
:
""
,
memberId
:
this
.
$route
.
params
.
id
,
scoreCountOperate
:
""
,
endTime
:
""
,
pageNo
:
1
,
pageSize
:
1000
,
startTime
:
""
,
};
this
.
handleQuery
();
},
handleCopyReferralCode
(
details
)
{},
handleSelect
(
key
,
keyPath
)
{
console
.
log
(
key
,
keyPath
);
this
.
activeIndex
=
key
;
},
handleExchangeRewards
(
details
)
{
this
.
$router
.
push
({
path
:
"
/memberManagement/exchangeRecordOperation
"
,
query
:
{
memberId
:
details
.
userScoreLevelInfo
.
memberId
,
pageStatus
:
"
add
"
,
},
});
},
deleteFn
(
row
)
{
deleteFn
(
row
)
{
const
nickname
=
row
.
nickname
;
const
nickname
=
row
.
nickname
;
this
.
$modal
this
.
$modal
...
@@ -669,7 +1182,6 @@ export default {
...
@@ -669,7 +1182,6 @@ export default {
},
},
getDetails
()
{
getDetails
()
{
memberUserGet
({
id
:
this
.
$route
.
params
.
id
}).
then
((
r
)
=>
{
memberUserGet
({
id
:
this
.
$route
.
params
.
id
}).
then
((
r
)
=>
{
console
.
log
(
r
,
"
rrrr
"
);
this
.
details
=
r
.
data
;
this
.
details
=
r
.
data
;
});
});
},
},
...
@@ -899,4 +1411,7 @@ export default {
...
@@ -899,4 +1411,7 @@ export default {
};
};
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
>
<
style
scoped
lang=
"scss"
>
.table-container
{
padding-top
:
20px
;
}
</
style
>
</
style
>
src/views/report/customer_analysis/index.vue
View file @
7e0c1c55
...
@@ -574,7 +574,7 @@ export default {
...
@@ -574,7 +574,7 @@ export default {
$route
(
to
)
{
$route
(
to
)
{
//lanbm 2024-05-06 解决重新进入参数不刷新的问题
//lanbm 2024-05-06 解决重新进入参数不刷新的问题
//this.$route.name == "客户分析" 用name做逻辑判断,有时候菜单名称会变化
//this.$route.name == "客户分析" 用name做逻辑判断,有时候菜单名称会变化
//"/report/customer_analysis"
lanbm 2024-05-07
调整为根据path做逻辑判断
//"/report/customer_analysis" 调整为根据path做逻辑判断
if
(
this
.
$route
.
path
==
"
/report/customer_analysis
"
)
{
if
(
this
.
$route
.
path
==
"
/report/customer_analysis
"
)
{
this
.
doLoadData
();
this
.
doLoadData
();
}
}
...
...
src/views/report/customerreport/index.vue
View file @
7e0c1c55
...
@@ -92,7 +92,7 @@
...
@@ -92,7 +92,7 @@
/>
-->
/>
-->
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
UserSelector
from
"
@/components/UserSelector
"
;
import
UserSelector
from
"
@/components/UserSelector
"
;
import
Treeselect
from
"
@riophae/vue-treeselect
"
;
import
Treeselect
from
"
@riophae/vue-treeselect
"
;
...
@@ -389,4 +389,3 @@ export default {
...
@@ -389,4 +389,3 @@ export default {
},
},
};
};
</
script
>
</
script
>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment