Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation
This project
Loading...
Sign in
李宁
/
Activity
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 04115efd
authored
Nov 10, 2025
by
李宁
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
1
1 parent
fc86c70c
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
45 additions
and
42 deletions
zhiJianBusi/zjbPc/src/components/system/PersonnelManagement.vue
zhiJianBusi/zjbPc/src/views/OpportunityManagement.vue
zhiJianBusi/zjbPhone/addBusi.html
zhiJianBusi/zjbPhone/busiDetail.html
zhiJianBusi/zjbPhone/js/addBusi.js
zhiJianBusi/zjbPhone/js/busiDetail.js
zhiJianBusi/zjbPhone/js/login.js
zhiJianBusi/zjbPhone/login.html
zhiJianBusi/zjbPhone/myBusi.html
zhiJianBusi/zjbPc/src/components/system/PersonnelManagement.vue
View file @
04115ef
...
@@ -20,7 +20,6 @@
...
@@ -20,7 +20,6 @@
/>
/>
</div>
</div>
<el-select
v-model=
"formData.personnelTypes"
placeholder=
"人员类型"
class=
"filter-select"
multiple
clearable
>
<el-select
v-model=
"formData.personnelTypes"
placeholder=
"人员类型"
class=
"filter-select"
multiple
clearable
>
<el-option
label=
"全部类型"
value=
""
></el-option>
<el-option
label=
"装维师傅"
value=
"1"
></el-option>
<el-option
label=
"装维师傅"
value=
"1"
></el-option>
<el-option
label=
"支撑人员"
value=
"2"
></el-option>
<el-option
label=
"支撑人员"
value=
"2"
></el-option>
</el-select>
</el-select>
...
@@ -78,10 +77,10 @@
...
@@ -78,10 +77,10 @@
<i
class=
"el-icon-search"
></i>
<i
class=
"el-icon-search"
></i>
查询
查询
</el-button>
</el-button>
<el-button
@
click=
"isImportDialogOpen = true"
type=
"default"
size=
"small"
disabled
>
<
!-- <
el-button @click="isImportDialogOpen = true" type="default" size="small" disabled>
<i class="el-icon-download"></i>
<i class="el-icon-download"></i>
批量导入
批量导入
</el-button>
</el-button>
-->
<el-button
@
click=
"updatePerson"
type=
"primary"
size=
"small"
>
<el-button
@
click=
"updatePerson"
type=
"primary"
size=
"small"
>
<i
class=
"el-icon-plus"
></i>
<i
class=
"el-icon-plus"
></i>
添加人员
添加人员
...
@@ -354,7 +353,6 @@ export default {
...
@@ -354,7 +353,6 @@ export default {
yxPersonList
:[],
yxPersonList
:[],
formData
:{
formData
:{
personnelCode
:
''
,
personnelCode
:
''
,
personnelTypes
:
''
,
personnelTypes
:
[]
personnelTypes
:
[]
},
},
tableData
:
[],
tableData
:
[],
...
...
zhiJianBusi/zjbPc/src/views/OpportunityManagement.vue
View file @
04115ef
...
@@ -805,6 +805,8 @@ export default {
...
@@ -805,6 +805,8 @@ export default {
result
:
''
,
result
:
''
,
reason
:
''
reason
:
''
}
}
__this
.
queryBusi
()
}
}
});
});
}
else
{
}
else
{
...
...
zhiJianBusi/zjbPhone/addBusi.html
View file @
04115ef
...
@@ -56,7 +56,7 @@
...
@@ -56,7 +56,7 @@
v-for=
"type in businessTypes"
v-for=
"type in businessTypes"
:key=
"type.id"
:key=
"type.id"
:class=
"['tag-button', { active: type.selected }]"
:class=
"['tag-button', { active: type.selected }]"
:style=
"{color: type.ifCho?'
#33':'#CECECE
'}"
:style=
"{color: type.ifCho?'
':'#fff',background:type.ifCho?'':'#c7c7c7
'}"
:data-node-id=
"type.nodeId"
:data-node-id=
"type.nodeId"
@
click=
"selectBusinessType(type.id)"
@
click=
"selectBusinessType(type.id)"
>
>
...
...
zhiJianBusi/zjbPhone/busiDetail.html
View file @
04115ef
...
@@ -32,16 +32,16 @@
...
@@ -32,16 +32,16 @@
<span
class=
"info-value"
data-node-id=
"294:2288"
>
{{ getAddressShow(businessDetail.customerAddress)}}
</span>
<span
class=
"info-value"
data-node-id=
"294:2288"
>
{{ getAddressShow(businessDetail.customerAddress)}}
</span>
</div>
</div>
<!-- 客户账号 -->
<!-- 客户账号 -->
<div
class=
"info-row"
data-node-id=
"294:2289"
>
<
!-- <
div class="info-row" data-node-id="294:2289">
<span class="info-label" data-node-id="294:2290">客户账号</span>
<span class="info-label" data-node-id="294:2290">客户账号</span>
<span class="info-value" data-node-id="294:2291">{{ businessDetail.maintenanceStaffPhone }}</span>
<span class="info-value" data-node-id="294:2291">{{ businessDetail.maintenanceStaffPhone }}</span>
</div>
</div>
-->
<!-- 客户电话 -->
<!-- 客户电话 -->
<div
class=
"info-row"
data-node-id=
"294:2292"
>
<div
class=
"info-row"
data-node-id=
"294:2292"
>
<span
class=
"info-label"
data-node-id=
"294:2293"
>
客户电话
</span>
<span
class=
"info-label"
data-node-id=
"294:2293"
>
客户电话
</span>
<div
class=
"phone-container"
data-node-id=
"294:2294"
>
<div
class=
"phone-container"
data-node-id=
"294:2294"
>
<span
class=
"info-value"
data-node-id=
"294:2295"
>
{{ businessDetail.customerPhone }}
</span>
<span
class=
"info-value"
data-node-id=
"294:2295"
>
{{ businessDetail.customerPhone }}
</span>
<img
class=
"copy-icon"
src=
"images/copy.png"
data-node-id=
"294:2296"
@
click=
"copyPhone"
></img>
<img
class=
"copy-icon"
src=
"images/copy.png"
data-node-id=
"294:2296"
@
click=
"copyPhone
(1)
"
></img>
</div>
</div>
</div>
</div>
...
@@ -50,7 +50,7 @@
...
@@ -50,7 +50,7 @@
<span
class=
"info-label"
data-node-id=
"294:2299"
>
装维师傅
</span>
<span
class=
"info-label"
data-node-id=
"294:2299"
>
装维师傅
</span>
<div
class=
"phone-container"
data-node-id=
"294:2300"
>
<div
class=
"phone-container"
data-node-id=
"294:2300"
>
<span
class=
"info-value"
data-node-id=
"294:2301"
>
{{ businessDetail.maintenanceStaffPhone }}
</span>
<span
class=
"info-value"
data-node-id=
"294:2301"
>
{{ businessDetail.maintenanceStaffPhone }}
</span>
<img
class=
"copy-icon"
src=
"images/copy.png"
data-node-id=
"294:2302"
@
click=
"copy
MarketerPhone
"
></img>
<img
class=
"copy-icon"
src=
"images/copy.png"
data-node-id=
"294:2302"
@
click=
"copy
Phone(2)
"
></img>
</div>
</div>
</div>
</div>
<!-- 营销人员 -->
<!-- 营销人员 -->
...
@@ -58,7 +58,7 @@
...
@@ -58,7 +58,7 @@
<span
class=
"info-label"
data-node-id=
"294:2299"
>
营销人员
</span>
<span
class=
"info-label"
data-node-id=
"294:2299"
>
营销人员
</span>
<div
class=
"phone-container"
data-node-id=
"294:2300"
>
<div
class=
"phone-container"
data-node-id=
"294:2300"
>
<span
class=
"info-value"
data-node-id=
"294:2301"
>
{{ businessDetail.marketingStaffPhone }}
</span>
<span
class=
"info-value"
data-node-id=
"294:2301"
>
{{ businessDetail.marketingStaffPhone }}
</span>
<img
class=
"copy-icon"
src=
"images/copy.png"
data-node-id=
"294:2302"
@
click=
"copy
MarketerPhone
"
></img>
<img
class=
"copy-icon"
src=
"images/copy.png"
data-node-id=
"294:2302"
@
click=
"copy
Phone(3)
"
></img>
</div>
</div>
</div>
</div>
...
@@ -88,12 +88,9 @@
...
@@ -88,12 +88,9 @@
<div
class=
"action-button contact-marketer"
data-node-id=
"294:2317"
@
click=
"takeCall('customer')"
>
<div
class=
"action-button contact-marketer"
data-node-id=
"294:2317"
@
click=
"takeCall('customer')"
>
<span
data-node-id=
"294:2319"
>
联系客户
</span>
<span
data-node-id=
"294:2319"
>
联系客户
</span>
</div>
</div>
<div
class=
"action-button contact-customer"
data-node-id=
"294:2314"
@
click=
"takeCall('zw')"
v-if=
"platform='yx'"
>
<div
class=
"action-button contact-customer"
data-node-id=
"294:2314"
@
click=
"takeCall('zw')"
>
<span
data-node-id=
"294:2316"
>
致电装维师傅
</span>
<span
data-node-id=
"294:2316"
>
致电装维师傅
</span>
</div>
</div>
<div
class=
"action-button contact-customer"
data-node-id=
"294:2314"
@
click=
"takeCall('yx')"
v-else
>
<span
data-node-id=
"294:2316"
>
致电营销人员
</span>
</div>
</div>
</div>
</div>
</div>
...
@@ -105,7 +102,7 @@
...
@@ -105,7 +102,7 @@
<h2
class=
"section-title"
data-node-id=
"294:2375"
>
商机详情
</h2>
<h2
class=
"section-title"
data-node-id=
"294:2375"
>
商机详情
</h2>
<!-- 语音描述 -->
<!-- 语音描述 -->
<div
class=
"voice-section"
>
<div
class=
"voice-section"
v-if=
"businessDetail.voiceRecords && businessDetail.voiceRecords.length>0"
>
<h3
class=
"subtitle"
data-node-id=
"294:2376"
>
语音描述
</h3>
<h3
class=
"subtitle"
data-node-id=
"294:2376"
>
语音描述
</h3>
<!-- 多条语音记录 -->
<!-- 多条语音记录 -->
...
@@ -113,7 +110,6 @@
...
@@ -113,7 +110,6 @@
<div
class=
"voiceLi"
v-for=
"(item,index) in businessDetail.voiceRecords"
>
<div
class=
"voiceLi"
v-for=
"(item,index) in businessDetail.voiceRecords"
>
<div
class=
"up"
>
<div
class=
"up"
>
<div
class=
"left"
@
click=
"playAudio(index)"
>
<div
class=
"left"
@
click=
"playAudio(index)"
>
<img
v-if=
"item.isPlay"
class=
"pause"
src=
"images/play.png"
alt=
""
>
<img
v-if=
"item.isPlay"
class=
"pause"
src=
"images/play.png"
alt=
""
>
<img
v-else
class=
"pause"
src=
"images/pause.png"
alt=
""
>
<img
v-else
class=
"pause"
src=
"images/pause.png"
alt=
""
>
...
@@ -256,6 +252,6 @@
...
@@ -256,6 +252,6 @@
<script
src=
"js/vue.min.js"
></script>
<script
src=
"js/vue.min.js"
></script>
<script
src=
"js/axios.min.js"
></script>
<script
src=
"js/axios.min.js"
></script>
<script
src=
"js/util.js"
></script>
<script
src=
"js/util.js"
></script>
<script
src=
"js/busiDetail.js"
></script>
<script
src=
"js/busiDetail.js
?123
"
></script>
</body>
</body>
</html>
</html>
\ No newline at end of file
\ No newline at end of file
zhiJianBusi/zjbPhone/js/addBusi.js
View file @
04115ef
...
@@ -247,8 +247,16 @@ new Vue({
...
@@ -247,8 +247,16 @@ new Vue({
let
pa
=
this
.
recordingUrlArr
[
index
]
let
pa
=
this
.
recordingUrlArr
[
index
]
let
obj
=
this
.
$refs
.
audioObj
let
obj
=
this
.
$refs
.
audioObj
let
fixedBlob
=
pa
.
blob
if
(
/iPhone/
.
test
(
navigator
.
userAgent
)
&&
!
window
.
MSStream
){
fixedBlob
=
new
Blob
([
pa
.
blob
],
{
type
:
'audio/mp4'
// 或者尝试 'audio/aac', 'audio/x-m4a'
})
}
if
(
!
pa
.
url
){
if
(
!
pa
.
url
){
pa
.
url
=
URL
.
createObjectURL
(
pa
.
b
lob
)
pa
.
url
=
URL
.
createObjectURL
(
fixedB
lob
)
}
}
if
(
obj
.
src
==
pa
.
url
){
if
(
obj
.
src
==
pa
.
url
){
...
...
zhiJianBusi/zjbPhone/js/busiDetail.js
View file @
04115ef
...
@@ -123,6 +123,7 @@ new Vue({
...
@@ -123,6 +123,7 @@ new Vue({
if
(
result
.
code
==
200
)
{
if
(
result
.
code
==
200
)
{
utils
.
toast
(
'跟进提交成功!'
);
utils
.
toast
(
'跟进提交成功!'
);
this
.
gjStore
.
isShow
=
false
this
.
gjStore
.
isShow
=
false
this
.
queryDetail
()
this
.
queryFollow
()
this
.
queryFollow
()
}
else
{
}
else
{
utils
.
toast
(
result
.
message
||
'提交失败,请重试'
);
utils
.
toast
(
result
.
message
||
'提交失败,请重试'
);
...
@@ -157,6 +158,7 @@ new Vue({
...
@@ -157,6 +158,7 @@ new Vue({
if
(
result
.
code
==
200
)
{
if
(
result
.
code
==
200
)
{
utils
.
toast
(
'成单成功!'
);
utils
.
toast
(
'成单成功!'
);
this
.
cdStore
.
isShow
=
false
this
.
cdStore
.
isShow
=
false
this
.
queryDetail
()
this
.
queryFollow
()
this
.
queryFollow
()
}
else
{
}
else
{
utils
.
toast
(
result
.
message
||
'提交失败,请重试'
);
utils
.
toast
(
result
.
message
||
'提交失败,请重试'
);
...
@@ -201,6 +203,7 @@ new Vue({
...
@@ -201,6 +203,7 @@ new Vue({
utils
.
toast
(
'关闭成功!'
);
utils
.
toast
(
'关闭成功!'
);
this
.
gbStore
.
isShow
=
false
this
.
gbStore
.
isShow
=
false
this
.
queryDetail
()
this
.
queryDetail
()
this
.
queryFollow
()
}
else
{
}
else
{
utils
.
toast
(
result
.
message
||
'提交失败,请重试'
);
utils
.
toast
(
result
.
message
||
'提交失败,请重试'
);
}
}
...
@@ -341,32 +344,28 @@ new Vue({
...
@@ -341,32 +344,28 @@ new Vue({
},
},
/**
/**
* 复制客户电话
* 复制电话
* type:1-客户电话,2-装维师傅电话,3-营销人员电话
*/
*/
copyPhone
()
{
copyPhone
(
type
)
{
const
fullPhone
=
this
.
businessDetail
.
customerPhone
;
let
fullPhone
=
''
let
tsText
=
''
if
(
navigator
.
clipboard
)
{
if
(
type
==
1
)
{
navigator
.
clipboard
.
writeText
(
fullPhone
).
then
(()
=>
{
fullPhone
=
this
.
businessDetail
.
customerPhone
utils
.
toast
(
'客户电话'
);
tsText
=
'客户电话已复制'
this
.
addHapticFeedback
();
}
else
if
(
type
==
2
){
}).
catch
(()
=>
{
fullPhone
=
this
.
businessDetail
.
maintenanceStaffPhone
this
.
fallbackCopyToClipboard
(
fullPhone
);
tsText
=
'装维师傅电话已复制'
});
}
else
if
(
type
==
3
){
}
else
{
fullPhone
=
this
.
businessDetail
.
marketingStaffPhone
t
his
.
fallbackCopyToClipboard
(
fullPhone
);
t
sText
=
'营销人员电话已复制'
}
}
},
/**
* 复制营销人员电话
*/
copyMarketerPhone
()
{
const
fullPhone
=
this
.
businessDetail
.
marketingStaffPhone
;
if
(
navigator
.
clipboard
)
{
if
(
navigator
.
clipboard
)
{
navigator
.
clipboard
.
writeText
(
fullPhone
).
then
(()
=>
{
navigator
.
clipboard
.
writeText
(
fullPhone
).
then
(()
=>
{
utils
.
toast
(
'营销人员电话已复制'
);
utils
.
toast
(
tsText
);
this
.
addHapticFeedback
();
this
.
addHapticFeedback
();
}).
catch
(()
=>
{
}).
catch
(()
=>
{
this
.
fallbackCopyToClipboard
(
fullPhone
);
this
.
fallbackCopyToClipboard
(
fullPhone
);
...
@@ -621,7 +620,7 @@ new Vue({
...
@@ -621,7 +620,7 @@ new Vue({
return
this
.
businessDetail
.
status
==
1
||
this
.
businessDetail
.
status
==
2
return
this
.
businessDetail
.
status
==
1
||
this
.
businessDetail
.
status
==
2
},
},
ifCanGb
(){
ifCanGb
(){
return
this
.
businessDetail
.
status
==
1
||
this
.
businessDetail
.
status
==
2
||
this
.
businessDetail
.
status
==
3
return
this
.
businessDetail
.
status
==
1
||
this
.
businessDetail
.
status
==
2
},
},
/**
/**
* 是否有跟进状态
* 是否有跟进状态
...
...
zhiJianBusi/zjbPhone/js/login.js
View file @
04115ef
...
@@ -137,7 +137,7 @@ new Vue({
...
@@ -137,7 +137,7 @@ new Vue({
}
}
},
},
created
(){
created
(){
localStorage
.
setItem
(
'platform'
,
this
.
platform
)
},
},
beforeDestroy
()
{
beforeDestroy
()
{
// 清除定时器
// 清除定时器
...
...
zhiJianBusi/zjbPhone/login.html
View file @
04115ef
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
<div
class=
"header-content"
>
<div
class=
"header-content"
>
<img
src=
"images/logo.png"
alt=
"Logo"
class=
"logo"
>
<img
src=
"images/logo.png"
alt=
"Logo"
class=
"logo"
>
<img
src=
"images/hello.png"
alt=
"Logo"
class=
"hello"
>
<img
src=
"images/hello.png"
alt=
"Logo"
class=
"hello"
>
<div
class=
"name"
>
欢迎
怀化移动智能质检
</div>
<div
class=
"name"
>
欢迎
登录随销平台
</div>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -72,6 +72,6 @@
...
@@ -72,6 +72,6 @@
<script
src=
"js/axios.min.js"
></script>
<script
src=
"js/axios.min.js"
></script>
<script
src=
"js/vue.min.js"
></script>
<script
src=
"js/vue.min.js"
></script>
<script
src=
"js/util.js"
></script>
<script
src=
"js/util.js"
></script>
<script
src=
"js/login.js?441234"
></script>
<script
src=
"js/login.js?44123
3
4"
></script>
</body>
</body>
</html>
</html>
\ No newline at end of file
\ No newline at end of file
zhiJianBusi/zjbPhone/myBusi.html
View file @
04115ef
...
@@ -120,7 +120,7 @@
...
@@ -120,7 +120,7 @@
<!-- 处理人信息 -->
<!-- 处理人信息 -->
<div
class=
"processor-info"
data-name=
"Container"
data-node-id=
"355:457"
>
<div
class=
"processor-info"
data-name=
"Container"
data-node-id=
"355:457"
>
<span>
处理人:{{ business.
marketingStaff
Name }}
</span>
<span>
处理人:{{ business.
processor
Name }}
</span>
</div>
</div>
<!-- 时间信息 -->
<!-- 时间信息 -->
...
...
Write
Preview
Markdown
is supported
Attach a file
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 post a comment