Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
company_app
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
毛细亚
company_app
Commits
6f2c25cf
提交
6f2c25cf
authored
6月 19, 2025
作者:
毛细亚
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新代码
上级
590fdf30
全部展开
显示空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
242 行增加
和
218 行删除
+242
-218
works.js
src/api/works.js
+9
-0
dialog.vue
src/components/dialog.vue
+90
-0
scroll.js
src/directive/scroll/scroll.js
+3
-2
taskDetails.vue
src/views/components/taskList/taskDetails.vue
+0
-0
uesrTask.vue
src/views/components/taskList/uesrTask.vue
+52
-27
taskRecord.vue
src/views/taskRecord.vue
+88
-189
没有找到文件。
src/api/works.js
浏览文件 @
6f2c25cf
...
@@ -243,3 +243,11 @@ export function clearTaskUnReadData(data) {
...
@@ -243,3 +243,11 @@ export function clearTaskUnReadData(data) {
data
data
})
})
}
}
// w账号绑定客户列表
export
function
memberBindExternalUser
(
data
)
{
return
request
({
url
:
returnApi
(
'/cser_receipt/memberBindExternalUser'
),
method
:
'post'
,
data
})
}
\ No newline at end of file
src/components/dialog.vue
0 → 100644
浏览文件 @
6f2c25cf
<
template
>
<el-drawer
:lock-scroll=
"true"
:title=
"title"
:visible=
"show"
:size=
"width"
:append-to-body=
"true"
@
close=
"close"
>
<div
class=
"layerConent"
>
<slot></slot>
<span
class=
"dialog-footer rowFlex"
>
<el-button
class=
"btn"
type=
"primary"
@
click=
"submit"
>
确 定
</el-button>
<el-button
class=
"btn"
@
click=
"close"
>
取 消
</el-button>
</span>
</div>
</el-drawer>
</
template
>
<
script
type=
"text/javascript"
>
export
default
{
name
:
'Layer'
,
props
:
[
'show'
,
'width'
,
'title'
],
data
()
{
return
{
}
},
watch
:
{
show
(
newVal
,
oldVal
)
{
if
(
newVal
)
{
console
.
log
(
'显示弹窗'
)
}
}
},
mounted
()
{
},
methods
:
{
close
()
{
this
.
$emit
(
'update:show'
,
false
)
},
submit
()
{
this
.
$emit
(
'confirm'
)
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
//
::v-deep
.el-drawer
{
//
height
:
100%
;
//
overflow
:
100%
;
//
overflow-x
:
hidden
;
//
over
//
}
.layerConent
{
width
:
100%
;
height
:
100%
;
overflow
:
auto
;
padding-bottom
:
100px
;
padding-right
:
20px
;
}
.dialog-footer
{
width
:
100%
;
height
:
auto
;
position
:
absolute
;
right
:
0px
;
bottom
:
0px
;
padding-right
:
10px
;
padding-top
:
20px
;
padding-bottom
:
20px
;
border-top
:
1px
solid
rgba
(
0
,
0
,
0
,
0.06
);
justify-content
:
flex-end
;
background
:
#fff
;
.btn
{
width
:
84px
;
height
:
32px
;
}
}
</
style
>
\ No newline at end of file
src/directive/scroll/scroll.js
浏览文件 @
6f2c25cf
...
@@ -63,14 +63,15 @@ function createScrollHandler(el, binding, vnode) {
...
@@ -63,14 +63,15 @@ function createScrollHandler(el, binding, vnode) {
// 检查是否禁用
// 检查是否禁用
if
(
options
&&
options
.
disabled
)
return
;
if
(
options
&&
options
.
disabled
)
return
;
if
(
el
&&
el
.
__infinite_scroll_container
){
const
scrollContainer
=
el
.
__infinite_scroll_container
;
const
scrollContainer
=
el
.
__infinite_scroll_container
;
const
isBottom
=
isScrollBottom
(
scrollContainer
,
el
,
options
.
distance
);
const
isBottom
=
isScrollBottom
(
scrollContainer
,
el
,
options
.
distance
);
if
(
isBottom
)
{
if
(
isBottom
)
{
// 调用加载函数
// 调用加载函数
options
.
loadMore
();
options
.
loadMore
();
}
}
}
};
};
}
}
...
...
src/views/components/taskList/taskDetails.vue
0 → 100644
浏览文件 @
6f2c25cf
差异被折叠。
点击展开。
src/views/components/taskList/uesrTask.vue
浏览文件 @
6f2c25cf
...
@@ -3,10 +3,11 @@
...
@@ -3,10 +3,11 @@
<!--
<div
class=
"detailsTitle rowFlex spaceBetween columnCenter"
>
<!--
<div
class=
"detailsTitle rowFlex spaceBetween columnCenter"
>
<p>
任务记录
</p>
<p>
任务记录
</p>
</div>
-->
</div>
-->
<div
class=
"account-task-container-content"
v-scroll=
"requestOrderList"
v-loading=
"loading"
>
<div
class=
"account-task-container-content"
v-scroll=
"requestOrderList"
>
<!-- 运营任务 和 用户任务 -->
<!-- 运营任务 和 用户任务 -->
<div
<div
class=
"orderDetailsScroll"
class=
"orderDetailsScroll"
v-loading=
"loading"
>
>
<div
v-if=
"orderList.length > 0"
>
<div
v-if=
"orderList.length > 0"
>
<div
<div
...
@@ -35,22 +36,21 @@
...
@@ -35,22 +36,21 @@
</div>
</div>
</div>
</div>
</
template
>
</
template
>
<div
class=
"taskItem rowFlex columnCenter spaceBetween"
>
<div
class=
"rowFlex columnCenter"
>
<span
class=
"label"
>
跟进客服
</span>
<p
class=
"text"
>
{{ item.tracer_name }}
</p>
</div>
</div>
<div
class=
"taskItem rowFlex columnCenter spaceBetween"
>
<div
class=
"rowFlex"
>
<span
class=
"label"
>
待维护日期
</span>
<p
class=
"text"
>
{{ item.assignment_time }}
</p>
</div>
</div>
<div
class=
"editLayer"
>
<div
class=
"editLayer"
>
<el-form
<el-form
:model=
"webForm"
:model=
"webForm"
label-width=
"100px"
>
<el-form-item
label=
"跟进客服:"
>
>
<p
class=
"text"
style=
"margin-left: 10px;"
>
{{ item.tracer_name }}
</p>
</el-form-item>
<el-form-item
label=
"待维护日期:"
>
<p
class=
"text"
style=
"margin-left: 10px;"
>
{{ item.assignment_time }}
</p>
</el-form-item>
<!-- 新增异常原因筛选 当 plan_type==5 5:为大R异跟进异常时 新增异常原因筛选 -->
<!-- 新增异常原因筛选 当 plan_type==5 5:为大R异跟进异常时 新增异常原因筛选 -->
<el-form-item
<el-form-item
v-if=
"taskInfo.plan_type && taskInfo.plan_type==5"
v-if=
"taskInfo.plan_type && taskInfo.plan_type==5"
...
@@ -61,6 +61,7 @@
...
@@ -61,6 +61,7 @@
v-model=
"webForm.abnormal_types"
v-model=
"webForm.abnormal_types"
placeholder=
"请选择"
placeholder=
"请选择"
multiple
multiple
style=
"margin-left: 10px;"
collapse-tags
collapse-tags
>
>
<el-option
<el-option
...
@@ -79,6 +80,7 @@
...
@@ -79,6 +80,7 @@
<el-select
<el-select
v-model=
"webForm.trace_result"
v-model=
"webForm.trace_result"
placeholder=
"请选择"
placeholder=
"请选择"
style=
"margin-left: 10px;"
>
>
<el-option
<el-option
v-for=
"item in traceList"
v-for=
"item in traceList"
...
@@ -91,15 +93,17 @@
...
@@ -91,15 +93,17 @@
<el-form-item
<el-form-item
v-if=
"activeType == 'user_task'"
v-if=
"activeType == 'user_task'"
label=
"免打扰:"
label=
"免打扰:"
label-width=
"80px"
prop=
"no_trouble"
prop=
"no_trouble"
style=
"margin-left: 10px;"
>
>
<div
class=
"noDisturb"
>
<el-checkbox
<el-checkbox
v-model=
"webForm.no_trouble"
v-model=
"webForm.no_trouble"
class=
"noDisturb rowFlex
allCenter
"
class=
"noDisturb rowFlex "
:true-label=
"1"
:true-label=
"1"
:false-label=
"0"
:false-label=
"0"
>
免打扰(勾选后该用户不会再被分配任务)
</el-checkbox>
>
免打扰(勾选后该用户不会再被分配任务)
</el-checkbox>
</div>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
</div>
</div>
...
@@ -110,17 +114,17 @@
...
@@ -110,17 +114,17 @@
class=
"item rowFlex columnCenter spaceBetween"
class=
"item rowFlex columnCenter spaceBetween"
>
>
<div
<div
class=
"rowFlex spaceBetween"
class=
"rowFlex spaceBetween
remarkItem
"
style=
"width: 100%;"
style=
"width: 100%;"
>
>
<span
<span
class=
"label"
style=
"margin-left: 40px;color: #999999;"
style=
"width: 50px"
>
备注:
</span>
>
备注:
</span>
<div
class=
"
t
ext rowFlex remark flex1"
>
<div
class=
"
remarkTx
ext rowFlex remark flex1"
>
<textEditor
<textEditor
:remark
.
sync=
"remark.remark"
:remark
.
sync=
"remark.remark"
:domid=
"'taskRemark' + indexs"
:domid=
"'taskRemark' + indexs"
style=
"width: 100%;"
:contenteditable=
"!Boolean(remark.id)"
:contenteditable=
"!Boolean(remark.id)"
@
resultReamrk=
"resultReamrk"
@
resultReamrk=
"resultReamrk"
/>
/>
...
@@ -169,6 +173,8 @@
...
@@ -169,6 +173,8 @@
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 任务详情 -->
<taskDetails
v-if=
"showTaskDetails"
:taskDetails=
"taskDetails"
/>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
...
@@ -176,13 +182,16 @@
...
@@ -176,13 +182,16 @@
import
{
mapState
}
from
'vuex'
import
{
mapState
}
from
'vuex'
import
textEditor
from
'@/components/textEditor.vue'
import
textEditor
from
'@/components/textEditor.vue'
import
noContent
from
'@/components/noContent.vue'
import
noContent
from
'@/components/noContent.vue'
import
taskDetails
from
'./taskDetails.vue'
export
default
{
export
default
{
components
:
{
components
:
{
textEditor
,
textEditor
,
noContent
noContent
,
taskDetails
},
},
data
()
{
data
()
{
return
{
return
{
showTaskDetails
:
false
,
isloadMore
:
true
,
isloadMore
:
true
,
loading
:
false
,
loading
:
false
,
collapseValue
:
[
'1'
],
collapseValue
:
[
'1'
],
...
@@ -446,6 +455,9 @@
...
@@ -446,6 +455,9 @@
background
:
#fff
;
background
:
#fff
;
position
:
relative
;
position
:
relative
;
overflow
:
hidden
;
overflow
:
hidden
;
::v-deep
.el-form-item__content{
line-height
:
32px
;
}
.detailsTitle
{
.detailsTitle
{
width
:
100%
;
width
:
100%
;
padding
:
0
10px
;
padding
:
0
10px
;
...
@@ -706,7 +718,14 @@
...
@@ -706,7 +718,14 @@
font-size
:
16px
;
font-size
:
16px
;
font-weight
:
500
;
font-weight
:
500
;
}
}
.remarkTxext
{
width
:
calc
(
100%
-
120px
);
margin-left
:
10px
;
}
.remarkItem
{
margin-left
:
40px
;
position
:
relative
;
}
::v-deep
.el-collapse
{
::v-deep
.el-collapse
{
border
:
none
;
border
:
none
;
}
}
...
@@ -728,16 +747,22 @@
...
@@ -728,16 +747,22 @@
padding
:
10px
;
padding
:
10px
;
}
}
.editLayer
{
.editLayer
{
.noDisturb{
padding
:
10px
0
;
//
换行
.noDisturb
{
white-space
:
wrap
;
display
:
flex
;
align-items
:
center
;
margin-top
:
4px
;
}
}
::v-deep
.el-form-item__label
{
::v-deep
.el-form-item__label
{
font-weight
:
normal
;
font-weight
:
normal
;
color
:
#999999
;
color
:
#999999
;
padding-right
:
8px
;
}
}
::v-deep
.el-form-item--small.el-form-item
{
::v-deep
.el-form-item
{
margin-bottom
:
10px
;
margin-bottom
:
14px
;
}
::v-deep
.el-select
,
::v-deep
.el-checkbox
{
width
:
100%
;
}
}
}
}
}
}
...
...
src/views/taskRecord.vue
浏览文件 @
6f2c25cf
...
@@ -459,30 +459,18 @@ export default {
...
@@ -459,30 +459,18 @@ export default {
margin-left
:
2px
;
margin-left
:
2px
;
position
:
relative
;
position
:
relative
;
overflow
:
hidden
;
overflow
:
hidden
;
.detailsTitle
{
width
:
100%
;
padding
:
0
10px
;
height
:
60px
;
font-size
:
18px
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
font-weight
:
500
;
color
:
#333333
;
border-bottom
:
1px
solid
#ebeef5
;
border-left
:
1px
solid
#ebeef5
;
p
{
color
:
#333333
;
}
}
.account-task-container-content
{
.account-task-container-content
{
width
:
100%
;
width
:
100%
;
height
:
calc
(
100%
-
60px
)
;
height
:
100%
;
padding
:
20px
10px
;
padding
:
20px
10px
0
;
padding-top
:
0px
;
.tabSelect
{
.tabSelect
{
width
:
100%
;
width
:
100%
;
height
:
60px
;
height
:
60px
;
border-bottom
:
1px
solid
#ebeef5
;
border-bottom
:
1px
solid
#ebeef5
;
cursor
:
pointer
;
cursor
:
pointer
;
.tabSelectItem
{
.tabSelectItem
{
font-size
:
18px
;
font-size
:
18px
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
...
@@ -492,167 +480,37 @@ export default {
...
@@ -492,167 +480,37 @@ export default {
line-height
:
47px
;
line-height
:
47px
;
cursor
:
pointer
;
cursor
:
pointer
;
}
}
.tabSelectItemActive
{
.tabSelectItemActive
{
color
:
#409EFF
;
color
:
#409EFF
;
border-bottom
:
2px
solid
#409EFF
;
border-bottom
:
2px
solid
#409EFF
;
}
}
}
}
.contentItem
{
position
:
relative
;
.title
{
position
:
absolute
;
left
:
10px
;
top
:
14px
;
font-size
:
14px
;
color
:
#999999
;
}
}
.item
{
width
:
100%
;
height
:
auto
;
font-size
:
14px
;
font-weight
:
400
;
color
:
#333333
;
transition
:
all
0.5s
;
position
:
relative
;
cursor
:
pointer
;
div
{
width
:
100%
;
margin-bottom
:
5px
;
}
.remark
{
::v-deep
.el-textarea__inner
{
height
:
80px
;
}
}
.tableImage
{
width
:
40px
;
height
:
40px
;
border-radius
:
6px
;
margin-right
:
10px
;
}
.label
{
color
:
#999999
;
}
.text
{
color
:
#333333
;
margin-left
:
10px
;
word-break
:
break-all
;
max-width
:
75%
;
}
.icon
{
display
:
none
;
position
:
absolute
;
right
:
0
;
top
:
12px
;
}
.dianFail
{
display
:
inline-block
;
width
:
8px
;
height
:
8px
;
background
:
#f45454
;
border-radius
:
5px
;
}
.dian
{
display
:
inline-block
;
width
:
8px
;
height
:
8px
;
background
:
#409EFF
;
border-radius
:
5px
;
}
.dian2
{
display
:
inline-block
;
width
:
8px
;
height
:
8px
;
background
:
#ff9d02
;
border-radius
:
5px
;
}
}
.orderMoney
{
width
:
calc
(
100%
+
40px
);
height
:
80px
;
//
margin-left
:
-20px
;
padding
:
10px
0
;
.orderMoneyItem
{
width
:
50%
;
text-align
:
center
;
margin-top
:
5px
;
span
{
font-size
:
14px
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
font-weight
:
500
;
color
:
#333333
;
}
p
{
font-size
:
22px
;
color
:
#409EFF
;
}
}
}
.filterList
{
margin-bottom
:
10px
;
.filterListInput
{
width
:
60%
;
margin-left
:
15px
;
margin-bottom
:
10px
;
}
.filterListDate
{
width
:
150px
;
margin-bottom
:
10px
;
}
::v-deep
.search-item
.item-label
{
margin-right
:
20px
;
}
}
.orderDetailsScroll
{
.orderDetailsScroll
{
width
:
100%
;
width
:
100%
;
height
:
calc
(
100%
-
2
0px
);
height
:
calc
(
100%
-
8
0px
);
overflow
:
auto
;
overflow
:
auto
;
overflow-x
:
hidden
;
overflow-x
:
hidden
;
}
}
.orderDetails
{
.orderDetails
{
width
:
100%
;
width
:
100%
;
height
:
auto
;
margin-top
:
20px
;
margin-top
:
20px
;
position
:
relative
;
position
:
relative
;
.bridgeMain
{
position
:
absolute
;
top
:
0px
;
right
:
0px
;
width
:
50px
;
height
:
50px
;
.text
{
font-size
:
8px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#ff9d02
;
transform
:
rotate
(
48deg
);
z-index
:
100
;
position
:
absolute
;
right
:
-6px
;
top
:
10px
;
width
:
50px
;
text-align
:
center
;
}
.bridge
{
font-size
:
50px
;
position
:
absolute
;
top
:
0
;
right
:
0
;
}
}
.orderDetailsTitle
{
.orderDetailsTitle
{
width
:
100%
;
width
:
100%
;
background
:
#f9faff
;
background
:
#f9faff
;
.money
{
.money
{
width
:
100%
;
width
:
100%
;
height
:
auto
;
padding-left
:
10px
;
padding-left
:
10px
;
.btns
{
.btns
{
padding-right
:
40px
;
padding-right
:
40px
;
}
}
.btn
{
.btn
{
background
:
#fff
;
background
:
#fff
;
border-radius
:
4px
;
border-radius
:
4px
;
...
@@ -663,20 +521,7 @@ export default {
...
@@ -663,20 +521,7 @@ export default {
color
:
#333333
;
color
:
#333333
;
cursor
:
pointer
;
cursor
:
pointer
;
}
}
.btnnot
{
background
:
#ffdddd
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#f56c6c
;
border
:
none
;
}
.btnsuccess
{
background
:
#e1fff0
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#409EFF
;
border
:
none
;
}
.sended
{
.sended
{
padding
:
0
8px
;
padding
:
0
8px
;
height
:
20px
;
height
:
20px
;
...
@@ -688,6 +533,7 @@ export default {
...
@@ -688,6 +533,7 @@ export default {
font-weight
:
400
;
font-weight
:
400
;
color
:
#409EFF
;
color
:
#409EFF
;
}
}
.noSend
{
.noSend
{
padding
:
0
8px
;
padding
:
0
8px
;
height
:
20px
;
height
:
20px
;
...
@@ -700,6 +546,7 @@ export default {
...
@@ -700,6 +546,7 @@ export default {
color
:
#ffa81d
;
color
:
#ffa81d
;
}
}
}
}
.text
{
.text
{
font-size
:
14px
;
font-size
:
14px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
...
@@ -707,53 +554,105 @@ export default {
...
@@ -707,53 +554,105 @@ export default {
color
:
#333333
;
color
:
#333333
;
max-width
:
200px
;
max-width
:
200px
;
overflow
:
hidden
;
overflow
:
hidden
;
white-space
:
nowrap
;
/* 防止文字换行 */
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
/* 超出部分显示省略号 */
text-overflow
:
ellipsis
;
}
}
}
}
.orderDetailsList
{
.orderDetailsList
{
width
:
100%
;
width
:
100%
;
height
:
auto
;
background
:
#ffffff
;
background
:
#ffffff
;
border
:
1px
solid
#ebeef5
;
border
:
1px
solid
#ebeef5
;
position
:
relative
;
position
:
relative
;
.titleFix
{
}
position
:
absolute
;
}
left
:
10px
;
top
:
20px
;
.item
{
width
:
100%
;
font-size
:
14px
;
font-weight
:
400
;
color
:
#333333
;
position
:
relative
;
.remark
{
::v-deep
.el-textarea__inner
{
height
:
80px
;
}
}
.label
{
color
:
#999999
;
color
:
#999999
;
}
}
.text
{
color
:
#333333
;
margin-left
:
10px
;
word-break
:
break-all
;
max-width
:
75%
;
}
}
}
}
}
}
.remarkHandle
{
.remarkHandle
{
font-size
:
20px
;
font-size
:
20px
;
color
:
#0ac358
;
color
:
#0ac358
;
cursor
:
pointer
;
cursor
:
pointer
;
margin-right
:
5px
;
margin-right
:
5px
;
position
:
absolute
;
position
:
absolute
;
right
:
0
;
right
:
0
;
top
:
0
;
top
:
0
;
}
}
::v-deep
.el-tabs__item
{
line-height
:
26px
;
font-size
:
16px
;
font-weight
:
500
;
}
.editLayer
{
.editLayer
{
margin-left
:
-20px
;
padding
:
10px
0
;
.noDisturb{
//
换行
.noDisturb
{
white-space
:
wrap
;
display
:
flex
;
align-items
:
center
;
flex-wrap
:
wrap
;
}
}
::v-deep
.el-form-item__label
{
::v-deep
.el-form-item__label
{
font-weight
:
normal
;
font-weight
:
normal
;
color
:
#999999
;
color
:
#999999
;
padding-right
:
8px
;
}
}
::v-deep
.el-form-item--small.el-form-item
{
margin-bottom
:
10px
;
::v-deep
.el-form-item
{
margin-bottom
:
14px
;
}
::v-deep
.el-select
{
width
:
100%
;
max-width
:
90%
;
}
}
}
}
::v-deep
.el-checkbox
{
width
:
100%
;
}
}
::v-deep
.el-collapse
{
border
:
none
;
}
::v-deep
.el-collapse-item__header
{
width
:
100%
;
color
:
#333333
;
font-size
:
14px
;
font-weight
:
400
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
::v-deep
.el-collapse-item__arrow
{
position
:
absolute
;
right
:
5px
;
}
::v-deep
.el-collapse-item__content
{
padding
:
10px
;
}
}
</
style
>
</
style
>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论