Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
SuperMan
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
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
罗超
SuperMan
Commits
1f28bc3f
Commit
1f28bc3f
authored
Jan 15, 2025
by
liudong1993
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
117d15ba
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
486 additions
and
2 deletions
+486
-2
CustomerContactList.vue
src/components/SalesModule/Common/CustomerContactList.vue
+238
-0
addCustomerContact.vue
src/components/SalesModule/Common/addCustomerContact.vue
+234
-0
MyCustomer.vue
src/components/SalesModule/MyCustomer.vue
+14
-2
No files found.
src/components/SalesModule/Common/CustomerContactList.vue
0 → 100644
View file @
1f28bc3f
<
style
>
.addTeamman
.add-tit
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
height
:
20px
;
}
.addTeamman
.add-tit
p
{
display
:
flex
;
align-items
:
center
;
font-weight
:
bold
;
color
:
rgba
(
17
,
17
,
17
,
1
);
font-size
:
14px
;
}
.addTeamman
.add-tit
p
span
{
display
:
inline-block
;
width
:
6px
;
height
:
6px
;
/* background: #409efe; */
border-radius
:
50%
;
margin-right
:
10px
;
}
.addTeamman
.el-dialog__header
{
padding
:
15px
20px
;
background
:
rgba
(
255
,
255
,
255
,
1
);
}
.addTeamman
.dialog-footer
{
text-align
:
center
;
background-color
:
rgba
(
248
,
250
,
251
,
1
);
padding-bottom
:
20px
;
}
.addTeamman
.el-dialog__footer
{
padding
:
0
;
}
.addTeamman
.el-tag.el-tag--info
{
background-color
:
rgba
(
0
,
0
,
0
,
0
);
border-color
:
rgba
(
0
,
0
,
0
,
0
);
display
:
inline-block
;
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
</
style
>
<
template
>
<div>
<el-dialog
custom-class=
"w800"
:title=
"$t('hotel.suplier_contact')"
:visible
.
sync=
"showVisible"
center
@
close=
"close"
>
<div
style=
"margin-bottom: 0px;text-align: right;"
>
<el-button
class=
"hollowFixedBtn el-icon-plus"
@
click=
"openContact"
>
{{
$t
(
'hotel.suplier_contact'
)
}}
</el-button>
</div>
<el-table
v-loading=
"loading"
stripe
ref=
"multipleTable"
:data=
"dataList"
tooltip-effect=
"dark"
style=
"width: 100%"
row-class-name=
"font-size-12"
>
<el-table-column
prop=
"ContactName"
:label=
"$t('system.query_name')"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"ContactPhone"
:label=
"$t('pub.mbPhone')"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"ContactDutyStr"
:label=
"$t('visaT.post')"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
""
:label=
"$t('hotel.table_operat')"
show-overflow-tooltip
>
<template
slot-scope=
"scope"
>
<el-tooltip
class=
"item"
effect=
"dark"
:content=
"$t('pub.edit')"
placement=
"top-start"
>
<el-button
@
click
.
stop=
"EditContact(scope.row)"
style=
"padding:4px"
type=
"primary"
icon=
"el-icon-edit"
circle
></el-button>
</el-tooltip>
<el-tooltip
class=
"item"
effect=
"dark"
:content=
"$t('adm.adm_resetpd')"
placement=
"top-start"
>
<el-button
@
click
.
stop=
"EditPassword(scope.row)"
style=
"padding:4px"
type=
"success"
icon=
"el-icon-refresh"
circle
></el-button>
</el-tooltip>
<!--
<el-tooltip
class=
"item"
effect=
"dark"
:content=
"$t('system.ph_shanchu')"
placement=
"top-start"
>
<el-button
@
click
.
stop=
"EditMsg(scope.row)"
style=
"padding:4px"
type=
"danger"
icon=
"el-icon-delete"
circle
></el-button>
</el-tooltip>
-->
</
template
>
</el-table-column>
</el-table>
<addCustomerContact
v-if=
"addTeammanShow"
:ContactData=
"ContactData"
@
addTeammanOk=
"addTeammanOk"
@
closeaddTeamman=
"addTeammanShow=false"
/>
</el-dialog>
<el-dialog
:modal=
"false"
:visible
.
sync=
"showUpdatePW"
width=
"300px"
:close-on-click-modal=
"false"
>
<div
class=
"add-tit"
slot=
"title"
>
<p><span></span>
{{PasswordData.ContactName}}
</p>
<span
icon=
"el-icon-close"
></span>
</div>
<div
class=
"form-box"
>
<el-form
:model=
"PasswordData"
ref=
"PasswordData"
class=
"MyEditForm"
>
<el-row
:gutter=
"30"
>
<el-col
:span=
"30"
>
<div
class=
"MyEditForm-item"
>
<el-form-item
:label=
"$t('adm.adm_newPd')"
prop=
"Password"
>
<el-input
:placeholder=
"$t('objFill.qingshuruxmm')"
v-model=
"PasswordData.Password"
></el-input>
</el-form-item>
</div>
</el-col>
</el-row>
</el-form>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
class=
"add-box-btn"
@
click=
"submitPassword"
:loading=
"loadingOut"
>
{{$t('pub.sureBtn')}}
</el-button>
<el-button
class=
"add-box-btn add-box-cancel"
@
click=
"showUpdatePW = false,PasswordData.Password=''"
>
{{$t('pub.cancelBtn')}}
</el-button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
addCustomerContact
from
"./addCustomerContact"
;
export
default
{
props
:
[
"customerId"
],
components
:
{
addCustomerContact
},
data
()
{
return
{
loadingOut
:
false
,
loadingRom
:
false
,
ContactData
:{
InfoID
:
0
,
ContactName
:
""
,
ContactPhone
:
""
,
ContactDuty
:
""
,
Sex
:
0
,
IsMain
:
0
,
Remark
:
""
,
ID
:
0
,
NextContactTime
:
""
,
Password
:
""
},
IDs
:
null
,
detailsData
:
null
,
addTeammanShow
:
false
,
IsRead
:
null
,
multipleSelection
:
[],
showVisible
:
true
,
loading
:
false
,
dataList
:
[],
showUpdatePW
:
false
,
PasswordData
:{
ContactId
:
0
,
ContactName
:
""
,
Password
:
""
}
};
},
filters
:
{
},
methods
:
{
openContact
(){
this
.
ContactData
=
{
InfoID
:
this
.
customerId
,
ContactName
:
""
,
ContactPhone
:
""
,
ContactDuty
:
""
,
Sex
:
0
,
IsMain
:
0
,
Remark
:
""
,
ID
:
0
,
NextContactTime
:
""
,
Password
:
""
};
this
.
addTeammanShow
=
true
;
},
EditContact
(
row
){
this
.
ContactData
=
row
;
this
.
ContactData
.
InfoID
=
row
.
CustomerId
;
this
.
addTeammanShow
=
true
;
},
addTeammanOk
(){
this
.
addTeammanShow
=
false
this
.
GetCustomerContactList
()
},
success
(){
this
.
$emit
(
'success'
)
this
.
close
()
},
close
(){
this
.
$emit
(
'close'
)
},
GetCustomerContactList
(){
if
(
this
.
customerId
===
0
)
return
this
.
loading
=
true
this
.
crmapipost
(
'/api/Customer/GetContactByCustomerID'
,
{
CustomerId
:
this
.
customerId
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
loading
=
false
this
.
dataList
=
res
.
data
.
data
}
else
{
this
.
loading
=
false
}
})
},
EditPassword
(
row
){
this
.
PasswordData
.
ContactId
=
row
.
ID
;
this
.
PasswordData
.
ContactName
=
row
.
ContactName
;
this
.
PasswordData
.
Password
=
''
;
this
.
showUpdatePW
=
true
;
},
submitPassword
(){
if
(
this
.
PasswordData
.
ContactId
<=
0
)
{
return
this
.
$message
.
error
(
"ID-Error"
)
}
if
(
this
.
PasswordData
.
Password
==
''
)
{
return
this
.
$message
.
error
(
this
.
$t
(
'objFill.qingshuruxmm'
))
}
this
.
loadingOut
=
true
this
.
crmapipost
(
'/api/Customer/SetCustomerContactPW'
,
this
.
PasswordData
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
loadingOut
=
false
this
.
$message
.
success
(
res
.
data
.
message
)
this
.
GetCustomerContactList
();
this
.
showUpdatePW
=
false
;
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
this
.
loadingOut
=
false
;
this
.
showUpdatePW
=
false
;
}
})
}
},
mounted
()
{
this
.
GetCustomerContactList
()
},
};
</
script
>
src/components/SalesModule/Common/addCustomerContact.vue
0 → 100644
View file @
1f28bc3f
<
style
>
.addContacts
.add-tit
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
height
:
20px
;
}
.addContacts
.add-tit
p
{
display
:
flex
;
align-items
:
center
;
font-weight
:
bold
;
color
:
rgba
(
17
,
17
,
17
,
1
);
font-size
:
14px
;
}
.addContacts
.add-tit
p
span
{
display
:
inline-block
;
width
:
6px
;
height
:
6px
;
background
:
#409efe
;
border-radius
:
50%
;
margin-right
:
10px
;
}
.addContacts
.el-dialog__header
{
padding
:
15px
20px
;
background
:
rgba
(
255
,
255
,
255
,
1
);
}
.addContacts
.dialog-footer
{
text-align
:
center
;
background-color
:
rgba
(
248
,
250
,
251
,
1
);
padding-bottom
:
20px
;
}
.addContacts
.el-dialog__footer
{
padding
:
0
;
}
</
style
>
<
template
>
<el-dialog
@
closed=
"closedDialog"
:modal=
"false"
:visible
.
sync=
"dialogTableVisible"
:close-on-click-modal=
"false"
class=
"addContacts"
>
<div
class=
"add-tit"
slot=
"title"
>
<p><span></span>
{{
$t
(
'objFill.tianjiatdcy'
)
}}
</p>
<span
icon=
"el-icon-close"
></span>
</div>
<div
class=
"form-box"
>
<el-form
:model=
"form"
ref=
"form"
class=
"MyEditForm"
:rules=
"rules"
>
<el-row
:gutter=
"30"
>
<el-col
:span=
"8"
>
<div
class=
"MyEditForm-item"
>
<el-form-item
label=
"联系人"
prop=
"ContactName"
>
<el-input
placeholder=
"请输入联系人姓名"
v-model=
"form.ContactName"
></el-input>
</el-form-item>
</div>
</el-col>
<el-col
:span=
"8"
>
<div
class=
"MyEditForm-item"
>
<el-form-item
label=
"电话"
prop=
"ContactPhone"
>
<el-input
placeholder=
"请输入联系电话"
v-model=
"form.ContactPhone"
></el-input>
</el-form-item>
</div>
</el-col>
<el-col
:span=
"8"
>
<div
class=
"MyEditForm-item"
>
<el-form-item
label=
"职务"
prop=
"ContactDuty"
>
<el-select
v-model=
"form.ContactDuty"
placeholder=
"请选择联系人职务"
>
<el-option
v-for=
'item in zwList'
:label=
'item.Name'
:value=
'item.ID'
:key=
'item.ID'
>
</el-option>
</el-select>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row
:gutter=
"30"
>
<el-col
:span=
"8"
>
<div
class=
"MyEditForm-item"
>
<el-form-item
label=
"性别"
prop=
"Sex"
>
<el-select
v-model=
"form.Sex"
placeholder=
"请选择联系人性别"
>
<el-option
label=
'保密'
:value=
'0'
:key=
'0'
>
</el-option>
<el-option
label=
'男'
:value=
'1'
:key=
'1'
>
</el-option>
<el-option
label=
'女'
:value=
'2'
:key=
'2'
>
</el-option>
</el-select>
</el-form-item>
</div>
</el-col>
<el-col
:span=
"8"
>
<div
class=
"MyEditForm-item"
>
<el-form-item
label=
"是否决策人"
prop=
"IsMain"
>
<el-select
v-model=
"form.IsMain"
placeholder=
"请选择是否决策人"
>
<el-option
label=
'否'
:value=
'0'
:key=
'0'
>
</el-option>
<el-option
label=
'是'
:value=
'1'
:key=
'1'
>
</el-option>
</el-select>
</el-form-item>
</div>
</el-col>
<el-col
v-if=
"ContactData.ID==0"
:span=
"8"
>
<div
class=
"MyEditForm-item"
>
<el-form-item
label=
"密码"
prop=
"Password"
>
<el-input
placeholder=
"请输入登录密码"
v-model=
"form.Password"
></el-input>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"24"
>
<div
class=
"MyEditForm-item label-pad-left"
>
<el-form-item
label=
"备注"
>
<el-input
type=
"textarea"
placeholder=
"请输入备注"
v-model=
"form.Remark"
></el-input>
</el-form-item>
</div>
</el-col>
</el-row>
</el-form>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
class=
"add-box-btn"
@
click=
"submitForm('form')"
:loading=
"loading"
>
{{
$t
(
'pub.sureBtn'
)
}}
</el-button>
<el-button
class=
"add-box-btn add-box-cancel"
@
click=
"dialogTableVisible = false, resetForm('form')"
>
{{
$t
(
'pub.cancelBtn'
)
}}
</el-button>
</div>
</el-dialog>
</
template
>
<
script
>
export
default
{
props
:
[
"ContactData"
],
data
()
{
return
{
loading
:
false
,
dialogTableVisible
:
true
,
rules
:
{
IsMain
:
[
{
required
:
true
,
message
:
"请选择是否决策人"
,
trigger
:
"change"
},
],
Sex
:
[
{
required
:
true
,
message
:
"请选择联系人性别"
,
trigger
:
"change"
},
],
ContactDuty
:
[
{
required
:
true
,
message
:
"请选择联系人职务"
,
trigger
:
"change"
},
],
ContactName
:
[
{
required
:
true
,
message
:
"请输入联系人姓名"
,
trigger
:
"blur"
},
],
ContactPhone
:
[
{
required
:
true
,
message
:
"请输入联系电话"
,
trigger
:
"blur"
},
],
Password
:
[
{
required
:
true
,
message
:
"请输入登录密码"
,
trigger
:
"blur"
},
],
},
zwList
:
[],
form
:
{
InfoID
:
0
,
ContactName
:
""
,
ContactPhone
:
""
,
ContactDuty
:
""
,
Sex
:
0
,
IsMain
:
0
,
Remark
:
""
,
ID
:
0
,
NextContactTime
:
""
,
Password
:
""
},
};
},
watch
:
{},
mounted
()
{
if
(
this
.
ContactData
){
this
.
form
=
this
.
ContactData
;
}
this
.
getZw
();
let
$this
=
this
;
setTimeout
(()
=>
{
$this
.
dialogTableVisible
=
true
;
},
50
);
},
methods
:
{
closedDialog
()
{
this
.
$emit
(
"closeaddTeamman"
);
},
addData
()
{
this
.
crmapipost
(
"/api/Customer/CreateMyCustomerContact"
,
this
.
form
,
(
res
)
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
$message
.
success
(
"操作成功"
);
this
.
resetForm
(
"form"
);
this
.
dialogTableVisible
=
false
;
this
.
$emit
(
"addTeammanOk"
);
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
)
}
}
);
},
submitForm
(
addMsg
)
{
//提交创建、修改表单
this
.
$refs
[
addMsg
].
validate
((
valid
)
=>
{
if
(
valid
)
{
this
.
addData
();
}
else
{
return
false
;
}
});
},
resetForm
(
formName
)
{
// 重置表单
this
.
form
=
{
InfoID
:
0
,
ContactName
:
""
,
ContactPhone
:
""
,
ContactDuty
:
""
,
Sex
:
0
,
IsMain
:
0
,
Remark
:
""
,
ID
:
0
,
NextContactTime
:
""
,
Password
:
""
};
this
.
$refs
[
formName
].
resetFields
();
},
getZw
()
{
this
.
apipost
(
"app_today_visit_GetCustomerDutyEnum"
,
{},
(
res
)
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
zwList
=
res
.
data
.
data
;
}
},
(
err
)
=>
{}
);
},
},
};
</
script
>
src/components/SalesModule/MyCustomer.vue
View file @
1f28bc3f
...
@@ -530,7 +530,7 @@
...
@@ -530,7 +530,7 @@
<th
v-if=
"currentUserInfo&¤tUserInfo.RB_Group_id==2"
>
{{$t('salesModule.belongUnion')}}
</th>
<th
v-if=
"currentUserInfo&¤tUserInfo.RB_Group_id==2"
>
{{$t('salesModule.belongUnion')}}
</th>
<th
v-if=
"currentUserInfo&¤tUserInfo.RB_Group_id==2"
>
{{$t('active.ad_yhq')}}
</th>
<th
v-if=
"currentUserInfo&¤tUserInfo.RB_Group_id==2"
>
{{$t('active.ad_yhq')}}
</th>
<th
v-if=
"currentUserInfo&¤tUserInfo.RB_Group_id==2"
>
{{$t('objFill.yucunyue')}}
</th>
<th
v-if=
"currentUserInfo&¤tUserInfo.RB_Group_id==2"
>
{{$t('objFill.yucunyue')}}
</th>
<th
width=
"2
0
0px"
>
{{$t('hotel.table_operat')}}
</th>
<th
width=
"2
2
0px"
>
{{$t('hotel.table_operat')}}
</th>
</tr>
</tr>
<tr
v-for=
"(item,i) in dataList"
:key=
"i"
>
<tr
v-for=
"(item,i) in dataList"
:key=
"i"
>
<td>
<td>
...
@@ -613,6 +613,10 @@
...
@@ -613,6 +613,10 @@
<el-button
style=
"padding:4px"
@
click
.
stop=
"goTeamMember(item)"
type=
"primary"
icon=
"el-icon-user-solid"
<el-button
style=
"padding:4px"
@
click
.
stop=
"goTeamMember(item)"
type=
"primary"
icon=
"el-icon-user-solid"
circle
></el-button>
circle
></el-button>
</el-tooltip>
</el-tooltip>
<el-tooltip
class=
"item"
effect=
"dark"
:content=
"$t('hotel.suplier_contact')"
placement=
"top-start"
>
<el-button
style=
"padding:4px"
@
click
.
stop=
"customerId=item.customerId,showContact=true"
type=
"danger"
icon=
"el-icon-s-custom"
circle
></el-button>
</el-tooltip>
</td>
</td>
</tr>
</tr>
<tr
v-if=
"dataList.length==0"
>
<tr
v-if=
"dataList.length==0"
>
...
@@ -1010,23 +1014,31 @@
...
@@ -1010,23 +1014,31 @@
<!-- 团队成员 -->
<!-- 团队成员 -->
<TeamMemberList
v-if=
"ShowTeamMember"
:customerId=
"customerId"
@
close=
"ShowTeamMember=false,customerId=null"
<TeamMemberList
v-if=
"ShowTeamMember"
:customerId=
"customerId"
@
close=
"ShowTeamMember=false,customerId=null"
@
success=
"getList"
></TeamMemberList>
@
success=
"getList"
></TeamMemberList>
<!-- 联系人 -->
<CustomerContactList
v-if=
"showContact"
:customerId=
"customerId"
@
close=
"showContact=false,customerId=null"
@
success=
"getList"
></CustomerContactList>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
detailList
from
"../FinancialModule/PrestorageManagement/components/detailList.vue"
;
import
detailList
from
"../FinancialModule/PrestorageManagement/components/detailList.vue"
;
import
signedClientList
from
'./Common/signedClientList'
import
signedClientList
from
'./Common/signedClientList'
import
TeamMemberList
from
'./Common/TeamMemberList'
import
TeamMemberList
from
'./Common/TeamMemberList'
import
CustomerContactList
from
'./Common/CustomerContactList'
export
default
{
export
default
{
components
:
{
components
:
{
signedClientList
,
signedClientList
,
detailList
,
detailList
,
TeamMemberList
TeamMemberList
,
CustomerContactList
},
},
data
()
{
data
()
{
return
{
return
{
loadingSave
:
false
,
loadingSave
:
false
,
customerId
:
null
,
customerId
:
null
,
ShowTeamMember
:
false
,
ShowTeamMember
:
false
,
showContact
:
false
,
detailObj
:
null
,
detailObj
:
null
,
showdetail
:
false
,
showdetail
:
false
,
isVisa
:
false
,
// 是否是签证下面的菜单
isVisa
:
false
,
// 是否是签证下面的菜单
...
...
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