Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
P
pica-admin-consultation
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
Close sidebar
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
jingqi.liu
pica-admin-consultation
提交
c2cd31a6
提交
c2cd31a6
编写于
5月 12, 2021
作者:
changdi.hao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加编辑等功能
上级
a1c32f18
变更
11
隐藏空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
2151 行增加
和
273 行删除
+2151
-273
package-lock.json
package-lock.json
+13
-35
upload-img.vue
src/components/editor/upload-img.vue
+120
-0
upload-music.vue
src/components/editor/upload-music.vue
+173
-0
table-component.vue
src/components/list/table-component.vue
+162
-0
router.js
src/router/router.js
+6
-2
constants.js
src/utils/constants.js
+162
-42
fetch.js
src/utils/fetch.js
+6
-0
index.js
src/utils/index.js
+17
-1
diagnosis-editor.vue
src/views/IM/diagnosis-admin/diagnosis-editor.vue
+565
-0
diagnosis-list copy.vue
src/views/IM/diagnosis-admin/diagnosis-list copy.vue
+484
-0
diagnosis-list.vue
src/views/IM/diagnosis-admin/diagnosis-list.vue
+443
-193
未找到文件。
package-lock.json
浏览文件 @
c2cd31a6
...
@@ -1270,7 +1270,6 @@
...
@@ -1270,7 +1270,6 @@
"resolved"
:
"http://192.168.110.93:4873/boom/-/boom-2.10.1.tgz"
,
"resolved"
:
"http://192.168.110.93:4873/boom/-/boom-2.10.1.tgz"
,
"integrity"
:
"sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8="
,
"integrity"
:
"sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8="
,
"dev"
:
true
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"requires"
:
{
"hoek"
:
"2.x.x"
"hoek"
:
"2.x.x"
}
}
...
@@ -2735,8 +2734,7 @@
...
@@ -2735,8 +2734,7 @@
"ansi-regex"
:
{
"ansi-regex"
:
{
"version"
:
"2.1.1"
,
"version"
:
"2.1.1"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
"optional"
:
true
},
},
"aproba"
:
{
"aproba"
:
{
"version"
:
"1.2.0"
,
"version"
:
"1.2.0"
,
...
@@ -2757,14 +2755,12 @@
...
@@ -2757,14 +2755,12 @@
"balanced-match"
:
{
"balanced-match"
:
{
"version"
:
"1.0.0"
,
"version"
:
"1.0.0"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
"optional"
:
true
},
},
"brace-expansion"
:
{
"brace-expansion"
:
{
"version"
:
"1.1.11"
,
"version"
:
"1.1.11"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"requires"
:
{
"balanced-match"
:
"^1.0.0"
,
"balanced-match"
:
"^1.0.0"
,
"concat-map"
:
"0.0.1"
"concat-map"
:
"0.0.1"
...
@@ -2779,20 +2775,17 @@
...
@@ -2779,20 +2775,17 @@
"code-point-at"
:
{
"code-point-at"
:
{
"version"
:
"1.1.0"
,
"version"
:
"1.1.0"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
"optional"
:
true
},
},
"concat-map"
:
{
"concat-map"
:
{
"version"
:
"0.0.1"
,
"version"
:
"0.0.1"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
"optional"
:
true
},
},
"console-control-strings"
:
{
"console-control-strings"
:
{
"version"
:
"1.1.0"
,
"version"
:
"1.1.0"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
"optional"
:
true
},
},
"core-util-is"
:
{
"core-util-is"
:
{
"version"
:
"1.0.2"
,
"version"
:
"1.0.2"
,
...
@@ -2909,8 +2902,7 @@
...
@@ -2909,8 +2902,7 @@
"inherits"
:
{
"inherits"
:
{
"version"
:
"2.0.4"
,
"version"
:
"2.0.4"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
"optional"
:
true
},
},
"ini"
:
{
"ini"
:
{
"version"
:
"1.3.5"
,
"version"
:
"1.3.5"
,
...
@@ -2922,7 +2914,6 @@
...
@@ -2922,7 +2914,6 @@
"version"
:
"1.0.0"
,
"version"
:
"1.0.0"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"requires"
:
{
"number-is-nan"
:
"^1.0.0"
"number-is-nan"
:
"^1.0.0"
}
}
...
@@ -2937,7 +2928,6 @@
...
@@ -2937,7 +2928,6 @@
"version"
:
"3.0.4"
,
"version"
:
"3.0.4"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"requires"
:
{
"brace-expansion"
:
"^1.1.7"
"brace-expansion"
:
"^1.1.7"
}
}
...
@@ -2945,14 +2935,12 @@
...
@@ -2945,14 +2935,12 @@
"minimist"
:
{
"minimist"
:
{
"version"
:
"1.2.5"
,
"version"
:
"1.2.5"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
"optional"
:
true
},
},
"minipass"
:
{
"minipass"
:
{
"version"
:
"2.9.0"
,
"version"
:
"2.9.0"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"requires"
:
{
"safe-buffer"
:
"^5.1.2"
,
"safe-buffer"
:
"^5.1.2"
,
"yallist"
:
"^3.0.0"
"yallist"
:
"^3.0.0"
...
@@ -2971,7 +2959,6 @@
...
@@ -2971,7 +2959,6 @@
"version"
:
"0.5.3"
,
"version"
:
"0.5.3"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"requires"
:
{
"minimist"
:
"^1.2.5"
"minimist"
:
"^1.2.5"
}
}
...
@@ -3033,8 +3020,7 @@
...
@@ -3033,8 +3020,7 @@
"npm-normalize-package-bin"
:
{
"npm-normalize-package-bin"
:
{
"version"
:
"1.0.1"
,
"version"
:
"1.0.1"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
"optional"
:
true
},
},
"npm-packlist"
:
{
"npm-packlist"
:
{
"version"
:
"1.4.8"
,
"version"
:
"1.4.8"
,
...
@@ -3062,8 +3048,7 @@
...
@@ -3062,8 +3048,7 @@
"number-is-nan"
:
{
"number-is-nan"
:
{
"version"
:
"1.0.1"
,
"version"
:
"1.0.1"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
"optional"
:
true
},
},
"object-assign"
:
{
"object-assign"
:
{
"version"
:
"4.1.1"
,
"version"
:
"4.1.1"
,
...
@@ -3075,7 +3060,6 @@
...
@@ -3075,7 +3060,6 @@
"version"
:
"1.4.0"
,
"version"
:
"1.4.0"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"requires"
:
{
"wrappy"
:
"1"
"wrappy"
:
"1"
}
}
...
@@ -3153,8 +3137,7 @@
...
@@ -3153,8 +3137,7 @@
"safe-buffer"
:
{
"safe-buffer"
:
{
"version"
:
"5.1.2"
,
"version"
:
"5.1.2"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
"optional"
:
true
},
},
"safer-buffer"
:
{
"safer-buffer"
:
{
"version"
:
"2.1.2"
,
"version"
:
"2.1.2"
,
...
@@ -3190,7 +3173,6 @@
...
@@ -3190,7 +3173,6 @@
"version"
:
"1.0.2"
,
"version"
:
"1.0.2"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"requires"
:
{
"code-point-at"
:
"^1.0.0"
,
"code-point-at"
:
"^1.0.0"
,
"is-fullwidth-code-point"
:
"^1.0.0"
,
"is-fullwidth-code-point"
:
"^1.0.0"
,
...
@@ -3210,7 +3192,6 @@
...
@@ -3210,7 +3192,6 @@
"version"
:
"3.0.1"
,
"version"
:
"3.0.1"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"requires"
:
{
"ansi-regex"
:
"^2.0.0"
"ansi-regex"
:
"^2.0.0"
}
}
...
@@ -3254,14 +3235,12 @@
...
@@ -3254,14 +3235,12 @@
"wrappy"
:
{
"wrappy"
:
{
"version"
:
"1.0.2"
,
"version"
:
"1.0.2"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
"optional"
:
true
},
},
"yallist"
:
{
"yallist"
:
{
"version"
:
"3.1.1"
,
"version"
:
"3.1.1"
,
"bundled"
:
true
,
"bundled"
:
true
,
"dev"
:
true
,
"dev"
:
true
"optional"
:
true
}
}
}
}
},
},
...
@@ -3622,8 +3601,7 @@
...
@@ -3622,8 +3601,7 @@
"version"
:
"2.16.3"
,
"version"
:
"2.16.3"
,
"resolved"
:
"http://192.168.110.93:4873/hoek/-/hoek-2.16.3.tgz"
,
"resolved"
:
"http://192.168.110.93:4873/hoek/-/hoek-2.16.3.tgz"
,
"integrity"
:
"sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
,
"integrity"
:
"sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
,
"dev"
:
true
,
"dev"
:
true
"optional"
:
true
},
},
"home-or-tmp"
:
{
"home-or-tmp"
:
{
"version"
:
"2.0.0"
,
"version"
:
"2.0.0"
,
...
...
src/components/editor/upload-img.vue
0 → 100644
浏览文件 @
c2cd31a6
<
template
>
<div>
<el-upload
:action=
"actionurl"
:headers=
"headers"
:disabled=
"isDisable"
list-type=
"picture-card"
:before-upload=
"fileUpload"
:on-preview=
"handlePictureCardPreview"
:on-remove=
"handleRemove"
:on-success=
"sucess"
:limit=
"15"
:on-exceed=
"handleExceed"
:file-list=
"imgArr"
>
<i
class=
"el-icon-plus"
></i>
</el-upload>
<el-dialog
:visible
.
sync=
"dialogVisible"
>
<img
width=
"100%"
:src=
"dialogImageUrl"
alt=
""
/>
</el-dialog>
<div
@
click=
"setNewArr"
>
asdasdasd
</div>
</div>
</
template
>
<
script
>
import
{
getBaseUrl
}
from
"@/utils/index"
;
export
default
{
props
:
{
isDisable
:
{
type
:
Boolean
,
default
:
false
},
imgList
:
{
type
:
Array
,
default
:
[]
}
},
data
()
{
return
{
dialogImageUrl
:
""
,
dialogVisible
:
false
,
imgArr
:
[
],
headers
:
{
token
:
localStorage
.
getItem
(
"storageToken"
),
},
actionurl
:
"#"
,
};
},
created
()
{
this
.
actionurl
=
getBaseUrl
(
"/diagnose/illness/file"
)
},
watch
:{
imgList
(
newv
,
oldv
)
{
this
.
imgArr
=
newv
;
}
},
methods
:
{
handleRemove
(
file
,
fileList
)
{
this
.
imgArr
=
fileList
;
},
handlePictureCardPreview
(
file
)
{
this
.
dialogImageUrl
=
file
.
url
;
this
.
dialogVisible
=
true
;
},
handleExceed
(
files
,
fileList
)
{
this
.
$message
.
warning
(
`当前限制选择 3 个文件,本次选择了
${
files
.
length
}
个文件,共选择了
${
files
.
length
+
fileList
.
length
}
个文件`
);
},
fileUpload
(
file
)
{
const
isJPG
=
file
.
type
===
"image/png"
||
file
.
type
===
"image/png"
;
if
(
!
isJPG
)
{
this
.
$message
.
error
(
"请上传只能是 JPG或PNG 格式!"
);
return
;
}
// const formData = new FormData();
// formData.append('file', file);
// fetch({
// url: getBaseUrl("/diagnose/illness/file"),
// method: "post",
// data: formData,
// fileHeader: true,
// withCredentials: true,
// })
// .then((res) => {
// this.imgArr.push({
// url: `${res.data}`,
// });
// })
// .catch(() => {});
},
sucess
(
response
,
file
,
fileList
)
{
this
.
imgArr
=
fileList
;
},
handleExceed
(
files
,
fileList
)
{
this
.
$message
.
warning
(
`当前限制选择 15 个文件,本次选择了
${
files
.
length
}
个文件,共选择了
${
files
.
length
+
fileList
.
length
}
个文件`
);
},
setNewArr
()
{
let
newArr
=
[]
if
(
this
.
imgArr
&&
this
.
imgArr
.
length
)
{
this
.
imgArr
.
forEach
(
item
=>
{
newArr
.
push
(
item
.
response
.
data
)
});
}
return
newArr
}
},
};
</
script
>
<
style
>
</
style
>
\ No newline at end of file
src/components/editor/upload-music.vue
0 → 100644
浏览文件 @
c2cd31a6
<
template
>
<div
class=
"music-wrap"
v-loading=
"loading"
>
<el-upload
class=
"upload-demo"
:disabled=
"isDisable"
:before-upload=
"beforeMusicUpload"
:action=
"actionurl"
:headers=
"headers"
:on-remove=
"handleRemove"
:on-success=
"sucess"
:file-list=
"musicArr"
:on-error=
"errfn"
:before-remove=
"beforeRemove"
>
<el-button
size=
"small"
type=
"primary"
>
点击上传
</el-button>
<p
slot=
"tip"
class=
"el-upload__tip"
>
音频格式:mp3
</p>
<ul
slot=
"tip"
class=
"el-upload__tip music-box"
>
<audio
v-for=
"(item) of musicArr"
:key=
"item.uid"
class=
"audio"
controls
:src=
'musicUrl(item)'
ref=
"audioWrap"
>
您的浏览器不支持mp3播放
</audio>
</ul>
</el-upload>
<div
@
click=
"hcd"
>
asd
</div>
</div>
</
template
>
<
script
>
import
fetch
from
"@/utils/fetch"
;
import
{
getBaseUrl
}
from
"@/utils/index"
;
export
default
{
props
:
{
isDisable
:
{
type
:
Boolean
,
default
:
false
},
musicList
:
{
type
:
Array
,
default
:
[]
}
},
data
()
{
return
{
dialogImageUrl
:
""
,
dialogVisible
:
false
,
musicArr
:
[],
actionUrl
:
''
,
headers
:
{
token
:
localStorage
.
getItem
(
"storageToken"
),
},
loading
:
false
};
},
created
()
{
this
.
actionurl
=
getBaseUrl
(
"/diagnose/illness/audio/upload"
);
},
watch
:{
musicList
(
newv
,
oldv
)
{
this
.
musicArr
=
newv
;
}
},
computed
:
{
},
methods
:
{
musicUrl
(
item
)
{
if
(
item
.
localUrl
)
{
return
item
.
localUrl
}
return
item
.
response
.
data
.
domainPath
+
item
.
response
.
data
.
path
},
beforeRemove
()
{
this
.
loading
=
true
},
handleRemove
(
file
,
fileList
)
{
this
.
loading
=
true
this
.
musicArr
=
fileList
;
let
time
=
setTimeout
(()
=>
{
this
.
loading
=
false
clearTimeout
(
time
)
},
1000
)
},
sucess
(
response
,
file
,
fileList
)
{
this
.
musicArr
=
fileList
;
this
.
loading
=
false
},
errfn
(
response
,
file
,
fileList
)
{
this
.
loading
=
false
},
// 上传mp3
beforeMusicUpload
(
file
)
{
this
.
loading
=
true
if
(
file
.
type
!==
'audio/mp3'
&&
file
.
type
!==
'audio/mpeg'
)
{
vm
.
$message
.
error
(
"请上传MP3格式文件"
);
this
.
loading
=
false
return
;
}
// const formData = new FormData()
// formData.append('file', file)
// fetch({
// url: getBaseUrl("/diagnose/illness/audio/upload"),
// method: "post",
// data: formData,
// fileHeader: true,
// withCredentials: true,
// })
// .then((res) => {
// this.imgArr.push({
// url: `${res.data}`,
// });
// })
// .catch(() => {});
},
hcd
()
{
let
newArr
=
[]
if
(
this
.
musicArr
&&
this
.
musicArr
.
length
)
{
this
.
musicArr
.
forEach
(
item
=>
{
if
(
item
.
localUrl
)
{
newArr
.
push
(
item
.
localUrl
)
}
else
if
(
item
.
response
){
newArr
.
push
(
item
.
response
.
data
.
domainPath
+
item
.
response
.
data
.
path
)
}
});
}
console
.
log
(
'===================================='
);
console
.
log
(
newArr
);
console
.
log
(
'===================================='
);
return
newArr
},
},
};
</
script
>
<
style
lang=
"scss"
>
.music-wrap
{
position
:
relative
;
.wrap
{
position
:
absolute
;
left
:
90px
;
top
:
10px
;
bottom
:
0
;
right
:
0
;
background
:
#000
;
opacity
:
.3
;
}
.audio
{
display
:
block
;
height
:
40px
;
margin-top
:
8px
;
}
.music-box
{
display
:
inline-block
;
overflow
:
hidden
;
}
.el-upload-list__item
{
line-height
:
40px
;
// margin: 20px 0;
}
.el-icon-close
{
top
:
15px
;
}
.el-upload-list
{
display
:
inline-block
;
}
}
</
style
>
\ No newline at end of file
src/components/list/table-component.vue
0 → 100644
浏览文件 @
c2cd31a6
<
template
>
<div
class=
"table"
>
<el-table
class=
"search-table"
:data=
"tData"
v-loading=
"loading"
style=
"width: 100%"
>
<el-table-column
prop=
"diagnoseLogId"
label=
"ID"
min-width=
"170"
align=
"left"
></el-table-column>
<el-table-column
prop=
"orderNo"
label=
"订单ID"
min-width=
"100"
align=
"left"
></el-table-column>
<el-table-column
prop=
"diagnoseTypeStr"
label=
"预约类型"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"statusStr"
label=
"状态"
min-width=
"80"
align=
"left"
></el-table-column>
<el-table-column
prop=
"operateUserName"
label=
"运营人员"
min-width=
"100"
align=
"left"
></el-table-column>
<el-table-column
prop=
"patientName"
label=
"患者姓名"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"idCard"
label=
"证件号"
min-width=
"80"
align=
"left"
></el-table-column>
<el-table-column
prop=
"patientMobilePhone"
label=
"患者电话"
min-width=
"100"
align=
"left"
></el-table-column>
<el-table-column
prop=
"userName"
label=
"助诊医生"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"userMobile"
label=
"助诊电话"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"doctorName"
label=
"接诊医生"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"doctorMobile"
label=
"接诊电话"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"userMobile"
label=
"预约时间"
min-width=
"200"
align=
"left"
>
<template
slot-scope=
"scope"
>
<p>
{{
scope
.
row
.
appointBeginTime
}}
</p>
<p>
{{
scope
.
row
.
appointEndTime
}}
</p>
</
template
>
</el-table-column>
<el-table-column
prop=
"diagnoseStageStr"
label=
"初/复诊"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"determineFlagStr"
label=
"是否确诊"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"diagnoseDisease"
label=
"确诊疾病"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"illnessDetail"
label=
"病情描述"
min-width=
"200"
align=
"left"
></el-table-column>
<el-table-column
prop=
"diagnoseAdvice"
label=
"诊断建议"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"followFlagStr"
label=
"是否跟进"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"drugFollow"
label=
"药品跟进"
min-width=
"200"
align=
"left"
></el-table-column>
<el-table-column
prop=
"checkFollow"
label=
"检查跟进"
min-width=
"200"
align=
"left"
></el-table-column>
<el-table-column
prop=
"otherFollow"
label=
"其他跟进事项"
min-width=
"200"
align=
"left"
></el-table-column>
<el-table-column
prop=
"createTypeStr"
label=
"创建方式"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"appointSourceStr"
label=
"预约来源"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"createdTime"
label=
"创建时间"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"operateTime"
label=
"匹配时间"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"doneTime"
label=
"完成时间"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"price"
label=
"问诊价格"
min-width=
"120"
align=
"left"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
price
|
priceFilter
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"payTypeStr"
label=
"支付方式"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"sexStr"
label=
"性别"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"age"
label=
"年龄"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"idCardTypeStr"
label=
"证件类型"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"userTitle"
label=
"助诊医生职称"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"userHospital"
label=
"助诊医生所在机构"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"userDepartment"
label=
"助诊医生所在科室"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"patientRelationStr"
label=
"与患者关系"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"doctorTitle"
label=
"接诊医生职称"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"doctorHospital"
label=
"接诊医生所在机构"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"doctorDepartment"
label=
"接诊医生所在科室"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"doctorSourceStr"
label=
"接诊医生来源"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"serviceFeeStr"
label=
"接诊医生服务费"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"crrsName"
label=
"招募人"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"remark"
label=
"备注"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
label=
"操作"
fixed=
"right"
align=
"center"
min-width=
"200"
>
<
template
slot-scope=
"scope"
>
<!-- 1 初始状态 2待咨询 3 咨询中 4已结束 -->
<div
v-if=
"!scope.row.operateUserID"
>
<el-button
v-if=
"scope.row.status != 4"
type=
"primary"
size=
"small"
@
click=
"timeHandle(scope.row)"
style=
"margin-top: 10px;"
>
修改时间
</el-button>
<el-button
v-if=
"scope.row.status == 3"
type=
"primary"
size=
"small"
@
click=
"endDiagnosis(scope.row)"
style=
"margin-top: 10px;"
>
结束
</el-button>
</div>
<div
v-if=
"!scope.row.operateUserID"
>
<el-button
v-if=
"scope.row.status == 3 && scope.row.imStatus == 1"
type=
"primary"
size=
"small"
@
click=
"callAll(scope.row)"
style=
"margin-top: 10px;"
>
呼叫双方
</el-button>
<el-button
v-if=
"scope.row.status == 3 && scope.row.imStatus == 2"
type=
"primary"
size=
"small"
@
click=
"jionCommunicate(scope.row)"
style=
"margin-top: 10px;"
>
加入问诊
</el-button>
<el-button
type=
"primary"
size=
"small"
@
click=
"sendMessage(scope.row)"
style=
"margin-top: 10px;"
v-if=
"!((scope.row.status==2 || scope.row.status==4) && scope.row.createType == 2)"
>
发送消息
</el-button>
</div>
<div
v-if=
"scope.row.operateUserID"
>
<el-button
type=
"primary"
size=
"small"
@
click=
"selectBtn(scope.row)"
>
匹配
</el-button>
</div>
<div>
<el-button
type=
"primary"
size=
"small"
style=
"margin-top: 10px;"
@
click=
"goEditor(scope.row,1)"
>
编辑
</el-button>
<el-button
type=
"primary"
size=
"small"
style=
"margin-top: 10px;"
@
click=
"goEditor(scope.row,2)"
>
预约详情
</el-button>
</div>
</
template
>
</el-table-column>
</el-table>
<!-- 分页 -->
<div
class=
"pagination"
>
<el-pagination
background
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:current-page=
"pageNo"
:page-sizes=
"[15, 30, 50, 100, 200, 500, 700, 1000, 1500, 2000]"
:page-size=
"pageSize"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"totalRows"
>
</el-pagination>
</div>
</div>
</template>
<
script
>
export
default
{
props
:
{
tData
:
{
type
:
Array
,
default
:
[]
},
pageNo
:
{
type
:
Number
,
default
:
1
},
pageSize
:
{
type
:
Number
,
default
:
20
},
totalRows
:
{
type
:
Number
,
default
:
0
},
loading
:
{
type
:
Boolean
,
default
:
false
}
},
data
()
{
return
{
};
},
methods
:
{
timeHandle
(
row
)
{
this
.
$emit
(
'timeHandle'
,
row
)
},
endDiagnosis
(
row
)
{
this
.
$emit
(
'endDiagnosis'
,
row
)
},
callAll
(
row
)
{
this
.
$emit
(
'callAll'
,
row
)
},
jionCommunicate
(
row
)
{
this
.
$emit
(
'jionCommunicate'
,
row
)
},
sendMessage
(
row
)
{
this
.
$emit
(
'sendMessage'
,
row
)
},
selectBtn
(
row
)
{
this
.
$emit
(
'selectBtn'
,
row
)
},
goEditor
(
row
,
flag
)
{
this
.
$emit
(
'goEditor'
,
row
,
flag
)
},
handleSizeChange
(
value
)
{
this
.
$emit
(
'handleSizeChange'
,
value
)
},
handleCurrentChange
(
value
)
{
this
.
$emit
(
'handleCurrentChange'
,
value
)
}
},
};
</
script
>
<
style
>
</
style
>
\ No newline at end of file
src/router/router.js
浏览文件 @
c2cd31a6
...
@@ -3,7 +3,8 @@ import App from '../App'
...
@@ -3,7 +3,8 @@ import App from '../App'
// 问诊订单管理
// 问诊订单管理
const
diagnosisList
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/IM/diagnosis-admin/diagnosis-list.vue'
)),
'diagnosisList'
)
const
diagnosisList
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/IM/diagnosis-admin/diagnosis-list.vue'
)),
'diagnosisList'
)
const
diagnosisIm
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/IM/diagnosis-admin/diagnosis-im.vue'
)),
'diagnosisIm'
)
const
diagnosisIm
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/IM/diagnosis-admin/diagnosis-im.vue'
)),
'diagnosisIm'
)
const
diagnosisLive
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/IM/diagnosis-admin/diagnosis-live.vue'
)),
'diagnosisLive'
)
const
diagnosisLive
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/IM/diagnosis-admin/diagnosis-live.vue'
)),
'diagnosisLive'
)
const
diagnosisEditor
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/IM/diagnosis-admin/diagnosis-editor.vue'
)),
'diagnosisEditor'
)
export
default
[{
export
default
[{
path
:
'/'
,
path
:
'/'
,
...
@@ -21,6 +22,9 @@ export default [{
...
@@ -21,6 +22,9 @@ export default [{
},{
},{
path
:
'/diagnosis-live'
,
path
:
'/diagnosis-live'
,
component
:
diagnosisLive
component
:
diagnosisLive
}
},
{
path
:
'/diagnosis-editor'
,
component
:
diagnosisEditor
}
]
]
}]
}]
\ No newline at end of file
src/utils/constants.js
浏览文件 @
c2cd31a6
...
@@ -3,59 +3,179 @@
...
@@ -3,59 +3,179 @@
*
*
*/
*/
// 分页大小
//预约类型list
export
const
PAGE_SIZE
=
10
export
const
TYPE_LIST
=
[
{
label
:
'语音问诊'
,
value
:
1
},
{
label
:
'视频问诊'
,
value
:
2
},
{
label
:
'图文问诊'
,
value
:
3
}
]
// 支付方式
export
const
PAY_LIST
=
[
{
label
:
'代付'
,
value
:
1
},
{
label
:
'扫码支付'
,
value
:
2
},
{
label
:
'分享支付'
,
value
:
3
}
]
// 订单来源
export
const
SOURCE_LIST
=
[
{
label
:
'铁军反馈'
,
value
:
1
},
{
label
:
'主动联系'
,
value
:
2
},
{
label
:
'问卷收集'
,
value
:
3
},
{
label
:
'微信群反馈'
,
value
:
4
},
{
label
:
'话题讨论与回复'
,
value
:
5
}
]
// 问卷--模板下载
// 订单状态
export
const
QUESTION_UPLOAD_TEMPLATE
=
'https://files.yunqueyi.com/discuss/question/templet/questionTemplet1010.xlsx'
export
const
STATUS_LIST
=
[
{
label
:
'初始状态(未支付)'
,
value
:
1
},
{
label
:
'待问诊(支付成功待完善)'
,
value
:
2
},
{
label
:
'问诊中(已完善)'
,
value
:
3
},
{
label
:
'已问诊'
,
value
:
4
}
]
/* 是否使用Mock数据 */
//证件类型
export
const
IS_MOCK_DATAS
=
true
export
const
CAR_LIST
=
[
{
label
:
'居民身份证'
,
value
:
1
},
{
label
:
'护照'
,
value
:
2
},
{
label
:
'港澳通行证'
,
value
:
3
}
]
//
通用状态 全部/正常/停用
//
性别
export
const
COMMON_STATUS_OPTIONS
=
[
export
const
SEX_LIST
=
[
{
{
value
:
''
,
label
:
'男'
,
label
:
'启用状态'
value
:
1
},
{
},
value
:
0
,
{
label
:
'正常'
label
:
'女'
,
},
{
value
:
2
value
:
1
,
label
:
'停用'
}
}
]
]
// 识别状态 全部/未标记/正常/误识
// 与患者关系
export
const
RECORD_STATUS_OPTIONS
=
[
export
const
RELATION_LIST
=
[
{
label
:
'自己'
,
value
:
1
},
{
label
:
'患者'
,
value
:
2
},
{
{
value
:
''
,
label
:
'家属'
,
label
:
'标记状态'
value
:
3
},
{
},
value
:
'0'
,
{
label
:
'未标记'
label
:
'朋友'
,
},
{
value
:
4
value
:
'1'
,
label
:
'正常'
},
{
value
:
'2'
,
label
:
'误识'
}
}
]
]
// 用户类型 全部/普通用户/VIP/黑名单
// 医生来源
export
const
USER_TYPE_OPTIONS
=
[
export
const
D_S_LIST
=
[
{
label
:
'京东'
,
value
:
1
},
{
label
:
'同事推荐'
,
value
:
2
},
{
{
value
:
''
,
label
:
'云鹊医平台'
,
label
:
'用户类型'
value
:
3
},
{
value
:
1
,
label
:
'普通用户'
},
{
value
:
2
,
label
:
'VIP'
},
{
value
:
3
,
label
:
'黑名单'
}
}
]
]
// 是否跟进
export
const
IS_FLLOW
=
[
{
label
:
'是'
,
value
:
1
},
{
label
:
'否'
,
value
:
2
},
]
// 创建订单方式
export
const
CREATE_TYPE
=
[
{
label
:
'系统创建'
,
value
:
1
},
{
label
:
'手动创建'
,
value
:
2
},
]
// 是否匹配
export
const
OPERATE_LIST
=
[
{
label
:
'已分配'
,
value
:
1
},
{
label
:
'未分配'
,
value
:
2
},
]
\ No newline at end of file
src/utils/fetch.js
浏览文件 @
c2cd31a6
...
@@ -15,6 +15,11 @@ service.interceptors.request.use(config => {
...
@@ -15,6 +15,11 @@ service.interceptors.request.use(config => {
config
.
headers
[
'sysCode'
]
=
26
config
.
headers
[
'sysCode'
]
=
26
config
.
headers
[
'token'
]
=
localStorage
.
getItem
(
'storageToken'
)
config
.
headers
[
'token'
]
=
localStorage
.
getItem
(
'storageToken'
)
config
.
headers
[
'deviceInfo'
]
=
JSON
.
stringify
({
"app_channel"
:
""
,
"app_mac"
:
""
,
"app_uuid"
:
""
,
"app_version"
:
""
,
"device_brand"
:
""
,
"device_ip"
:
""
,
"device_model"
:
""
,
"device_net"
:
""
,
"device_ops"
:
""
,
"resolution_wh"
:
""
,
"system_level"
:
""
,
"device_type"
:
'10'
})
config
.
headers
[
'deviceInfo'
]
=
JSON
.
stringify
({
"app_channel"
:
""
,
"app_mac"
:
""
,
"app_uuid"
:
""
,
"app_version"
:
""
,
"device_brand"
:
""
,
"device_ip"
:
""
,
"device_model"
:
""
,
"device_net"
:
""
,
"device_ops"
:
""
,
"resolution_wh"
:
""
,
"system_level"
:
""
,
"device_type"
:
'10'
})
Object
.
assign
(
config
.
headers
,
config
.
changeHeader
)
if
(
config
.
fileHeader
)
{
config
.
headers
[
'Content-Type'
]
=
'application/x-www-form-urlencoded'
}
// if (config.data && config.data.setEntry) {
// if (config.data && config.data.setEntry) {
// config.headers['sysCode'] = config.data.sysCode || 10
// config.headers['sysCode'] = config.data.sysCode || 10
// if(config.data.token){
// if(config.data.token){
...
@@ -23,6 +28,7 @@ service.interceptors.request.use(config => {
...
@@ -23,6 +28,7 @@ service.interceptors.request.use(config => {
// config.headers['deviceInfo'] = JSON.stringify({ "app_channel": "", "app_mac": "", "app_uuid": "", "app_version": "", "device_brand": "", "device_ip": "", "device_model": "", "device_net": "", "device_ops": "", "resolution_wh": "", "system_level": "", "device_type": '10' })
// config.headers['deviceInfo'] = JSON.stringify({ "app_channel": "", "app_mac": "", "app_uuid": "", "app_version": "", "device_brand": "", "device_ip": "", "device_model": "", "device_net": "", "device_ops": "", "resolution_wh": "", "system_level": "", "device_type": '10' })
// }
// }
return
config
return
config
},
error
=>
{
},
error
=>
{
Promise
.
reject
(
error
)
Promise
.
reject
(
error
)
...
...
src/utils/index.js
浏览文件 @
c2cd31a6
...
@@ -162,4 +162,20 @@ export function getPhomeDemain() {
...
@@ -162,4 +162,20 @@ export function getPhomeDemain() {
return
getConfigByEnvType
(
'phomeDemain'
)
return
getConfigByEnvType
(
'phomeDemain'
)
}
}
// 根据身份证获取生日
export
function
getBirth
(
idCard
)
{
let
birthday
=
""
if
(
idCard
!=
null
&&
idCard
!=
""
)
{
if
(
idCard
.
length
==
15
)
{
birthday
=
"19"
+
idCard
.
slice
(
6
,
12
);
}
else
if
(
idCard
.
length
==
18
)
{
birthday
=
idCard
.
slice
(
6
,
14
);
}
birthday
=
birthday
.
replace
(
/
(
.
{4})(
.
{2})
/
,
"$1-$2-"
);
//通过正则表达式来指定输出格式为:1990-01-01
}
console
.
log
(
'=============birthday======================='
);
console
.
log
(
birthday
);
console
.
log
(
'===================================='
);
return
birthday
;
}
src/views/IM/diagnosis-admin/diagnosis-editor.vue
0 → 100644
浏览文件 @
c2cd31a6
<
template
>
<div
class=
"diagnosis-list-content"
>
<div
class=
"component-content screenSet"
id=
"screenSet"
>
<div
class=
"title"
>
编辑
</div>
<el-form
ref=
"form"
:model=
"formData"
label-width=
"130px"
:rules=
"rules"
v-loading=
'loading'
>
<h1>
预约单信息
</h1>
<el-form-item
label=
"预约类型"
>
<el-select
v-model=
"formData.diagnoseType"
placeholder=
"请选择预约类型"
disabled
class=
"set-width"
>
<el-option
v-for=
"item of tyleList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"预约来源"
disabled
>
<el-select
v-model=
"formData.appointSource"
placeholder=
"请选择预约来源"
disabled
class=
"set-width"
>
<el-option
v-for=
"item of sourceList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"创建时间"
>
<el-date-picker
disabled
class=
"set-width"
type=
"datetime"
placeholder=
"创建时间"
v-model=
"formData.createdTime"
format=
"yyyy-MM-dd HH:mm:ss"
value-format=
"yyyy-MM-dd HH:mm:ss"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"匹配时间"
>
<el-date-picker
disabled
class=
"set-width"
type=
"datetime"
placeholder=
"匹配时间"
v-model=
"formData.operateTime"
format=
"yyyy-MM-dd HH:mm:ss"
value-format=
"yyyy-MM-dd HH:mm:ss"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"完成时间"
>
<el-date-picker
disabled
class=
"set-width"
type=
"datetime"
placeholder=
"匹配时间"
v-model=
"formData.doneTime"
format=
"yyyy-MM-dd HH:mm:ss"
value-format=
"yyyy-MM-dd HH:mm:ss"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"问诊价格"
prop=
"price"
>
<el-input
v-model=
"formData.price"
placeholder=
"请输入问诊价格"
disabled
class=
"set-width"
></el-input>
</el-form-item>
<el-form-item
label=
"医生服务费"
prop=
"serviceFee"
>
<el-input
v-model=
"formData.serviceFee"
placeholder=
"请输入医生服务费"
disabled
class=
"set-width"
></el-input>
</el-form-item>
<el-form-item
label=
"支付方式"
>
<el-select
v-model=
"formData.payType"
placeholder=
"请选择支付方式"
disabled
class=
"set-width"
>
<el-option
v-for=
"item of payList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"招募人"
>
<el-input
v-model=
"formData.crrsName"
placeholder=
"请输入招募人"
disabled
class=
"set-width"
></el-input>
</el-form-item>
<h1>
预约信息
</h1>
<el-form-item
label=
"当前状态"
>
<el-select
v-model=
"formData.status"
placeholder=
"请选择状态"
disabled
class=
"set-width"
>
<el-option
v-for=
"item of statusList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"运营人员"
>
<el-input
v-model=
"formData.operateUserName"
placeholder=
"请输入患者姓名"
disabled
class=
"set-width"
></el-input>
</el-form-item>
<el-form-item
label=
"预约时间"
prop=
"appointBeginTime"
required=
""
>
<el-date-picker
:disabled=
"inquiryStatus == 4 || editorType== 2"
type=
"datetime"
placeholder=
"开始时间"
v-model=
"formData.appointBeginTime"
style=
"width: 200px;"
:picker-options=
"endDateOpt"
format=
"yyyy-MM-dd HH:mm:ss"
value-format=
"yyyy-MM-dd HH:mm:ss"
@
change=
"continueBeginChange"
>
</el-date-picker>
<span>
-
</span>
<el-date-picker
:disabled=
"inquiryStatus == 4 || editorType== 2"
type=
"datetime"
placeholder=
"结束时间"
v-model=
"formData.appointEndTime"
style=
"width: 200px;"
format=
"yyyy-MM-dd HH:mm:ss"
:picker-options=
"endDateOpt1"
value-format=
"yyyy-MM-dd HH:mm:ss"
@
change=
"continueEndChange"
>
</el-date-picker>
</el-form-item>
<h1>
患者信息
</h1>
<el-form-item
label=
"患者姓名"
prop=
"patientName"
required=
""
>
<el-input
v-model=
"formData.patientName"
placeholder=
"请输入患者姓名"
class=
"set-width"
:disabled=
"hcd || editorType== 2"
minlength=
'2'
maxlength=
"20"
></el-input>
</el-form-item>
<el-form-item
label=
"证件类型"
prop=
"idCardType"
required
>
<el-select
v-model=
"formData.idCardType"
placeholder=
"请选择证件类型"
class=
"set-width"
:disabled=
"hcd || editorType== 2"
@
change=
"blurFn"
>
<el-option
v-for=
"item of carList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"证件号"
prop=
"idCard"
required
>
<el-input
v-model=
"formData.idCard"
placeholder=
"请输入证件号"
class=
"set-width"
:disabled=
"hcd || editorType== 2"
maxlength=
"18"
@
blur=
"blurFn"
></el-input>
</el-form-item>
<el-form-item
label=
"出生日期"
prop=
"birthday"
required
>
<el-date-picker
class=
"set-width"
:disabled=
"hcd || birthDisable || editorType== 2"
type=
"date"
placeholder=
"出生日期"
v-model=
"formData.birthday"
format=
"yyyy-MM-dd"
value-format=
"yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"性别"
prop=
"sex"
required
>
<el-select
v-model=
"formData.sex"
placeholder=
"请选择性别"
class=
"set-width"
:disabled=
"hcd || editorType== 2"
>
<el-option
v-for=
"item of sexList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"患者电话"
prop=
"patientMobilePhone"
required
>
<el-input
v-model=
"formData.patientMobilePhone"
placeholder=
"请输入手机号"
class=
"set-width"
:disabled=
"hcd || editorType== 2"
maxlength=
"11"
></el-input>
</el-form-item>
<h1>
助诊信息
</h1>
<el-form-item
label=
"助诊医生"
prop=
"helpDoctor"
>
<el-select
v-model=
"formData.helpDoctor"
placeholder=
"请选择助诊医生"
disabled
class=
"set-width"
>
<el-option
v-for=
"item of sexList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"助诊医生职称"
>
<el-select
v-model=
"formData.userTitle"
placeholder=
"请选择职称"
disabled
class=
"set-width"
>
<el-option
v-for=
"item of sexList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"助诊医生所在机构"
>
<el-select
v-model=
"formData.userHospital"
placeholder=
"请选择机构"
disabled
class=
"set-width"
>
<el-option
v-for=
"item of sexList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"助诊医生所在科室"
>
<el-select
v-model=
"formData.userDepartment"
placeholder=
"请选择科室"
disabled
class=
"set-width"
>
<el-option
v-for=
"item of sexList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"助诊电话"
>
<el-input
v-model=
"formData.userMobile"
placeholder=
"请输入助诊医生手机号"
disabled
class=
"set-width"
></el-input>
</el-form-item>
<el-form-item
label=
"与患者关系"
>
<el-select
v-model=
"formData.patientRelation"
placeholder=
"请选择与患者关系"
class=
"set-width"
:disabled=
"editorType== 2"
>
<el-option
v-for=
"item of relationList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<h1>
接诊信息
</h1>
<el-form-item
label=
"接诊医生"
prop=
"receiveDoctor"
required
>
<el-select
v-model=
"formData.receiveDoctor"
placeholder=
"请选择接诊医生"
disabled
class=
"set-width"
>
<el-option
v-for=
"item of sexList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"接诊医生职称"
>
<el-select
v-model=
"formData.doctorTitle"
placeholder=
"请选择职称"
disabled
class=
"set-width"
>
<el-option
v-for=
"item of sexList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"接诊医生所在机构"
>
<el-select
v-model=
"formData.doctorHospital"
placeholder=
"请选择机构"
disabled
class=
"set-width"
>
<el-option
v-for=
"item of sexList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"接诊医生所在科室"
>
<el-select
v-model=
"formData.doctorDepartment"
placeholder=
"请选择科室"
disabled
class=
"set-width"
>
<el-option
v-for=
"item of sexList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"接诊医生电话"
>
<el-input
v-model=
"formData.doctorMobile"
placeholder=
"请输入接诊医生手机号"
disabled
class=
"set-width"
></el-input>
</el-form-item>
<el-form-item
label=
"接诊医生来源"
>
<el-select
v-model=
"formData.doctorSource"
placeholder=
"请选择医生来源"
class=
"set-width"
disabled
>
<el-option
v-for=
"item of doctorSourceList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"医生服务费"
prop=
"monery"
>
<el-input
v-model=
"formData.monery"
placeholder=
"请输入医生服务费"
class=
"set-width"
:disabled=
"editorType== 2"
></el-input>
</el-form-item>
<h1>
问诊信息
</h1>
<el-form-item
label=
"初/复诊"
prop=
"diagnoseStage"
required
>
<el-radio-group
v-model=
"formData.diagnoseStage"
:disabled=
"inquiryStatus==4 || editorType== 2"
>
<el-radio
:label=
"1"
>
初诊(就此病没有去过医院)
</el-radio>
<el-radio
:label=
"2"
>
复诊(就此病去过医院)
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label=
"是否确诊"
prop=
"determineFlag"
required
>
<el-radio-group
v-model=
"formData.determineFlag"
:disabled=
"inquiryStatus==4 || editorType== 2"
>
<el-radio
:label=
"1"
>
是
</el-radio>
<el-radio
:label=
"2"
>
否
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label=
"确诊疾病"
>
<el-input
v-model=
"formData.diagnoseDisease"
placeholder=
"请输入确诊疾病名称"
:disabled=
"inquiryStatus==4 || editorType== 2"
class=
"set-width"
></el-input>
</el-form-item>
<el-form-item
label=
"病情描述"
prop=
"illnessDetail"
required
>
<el-input
type=
"textarea"
v-model=
"formData.illnessDetail"
placeholder=
"请输入病情描述"
maxlength=
"1000"
:disabled=
"editorType== 2"
></el-input>
</el-form-item>
<el-form-item
label=
"病情照片"
>
<p
class=
"img-title"
>
请上传患处照片、所用药品、与病情相关的线上诊疗记录截图、检查检测报告,请保证图片清晰完整,以便医生确认病情
</p>
<upload-img
:isDisable=
"editorType== 2"
:imgList=
"formData.illnessImageUrls"
ref=
"imgComponent"
></upload-img>
</el-form-item>
<el-form-item
label=
"诊断建议"
prop=
"diagnoseAdvice"
required
>
<p
class=
"old-diagnoseAdvice"
>
{{
formData
.
diagnoseAdvice
}}
</p>
<el-input
type=
"textarea"
v-model=
"formData.diagnoseAdvice"
placeholder=
"请输入更新建议(更新后原建议将被删除)"
:disabled=
"inquiryStatus==4 || editorType== 2"
maxlength=
"1000"
></el-input>
</el-form-item>
<el-form-item
label=
"音频"
>
<upload-music
:isDisable=
"editorType== 2"
:musicList=
"formData.illnessAudioUrls"
ref=
"musicComponent"
></upload-music>
</el-form-item>
<el-form-item
label=
"是否跟进"
>
<el-radio-group
v-model=
"formData.followFlag"
:disabled=
"editorType== 2"
>
<el-radio
:label=
"1"
>
是
</el-radio>
<el-radio
:label=
"2"
>
否
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label=
"药品跟进状态"
>
<el-select
v-model=
"formData.userDepartment"
placeholder=
"请跟进状态"
disabled
class=
"set-width"
>
<el-option
v-for=
"item of sexList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"药品跟进"
>
<el-input
type=
"textarea"
v-model=
"formData.drugFollow"
placeholder=
"请输入可跟进的事项"
maxlength=
"1000"
:disabled=
"editorType== 2"
></el-input>
</el-form-item>
<el-form-item
label=
"检查跟进状态"
>
<el-select
v-model=
"formData.userDepartment"
placeholder=
"请跟进状态"
disabled
class=
"set-width"
>
<el-option
v-for=
"item of sexList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"检查跟进"
>
<el-input
type=
"textarea"
v-model=
"formData.checkFollow"
placeholder=
"请输入可跟进的事项"
maxlength=
"1000"
:disabled=
"editorType== 2"
></el-input>
</el-form-item>
<el-form-item
label=
"其他跟进状态"
>
<el-select
v-model=
"formData.userDepartment"
placeholder=
"请跟进状态"
disabled
class=
"set-width"
>
<el-option
v-for=
"item of sexList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"其他跟进"
>
<el-input
type=
"textarea"
v-model=
"formData.otherFollow"
placeholder=
"请输入可跟进的事项"
maxlength=
"1000"
:disabled=
"editorType== 2"
></el-input>
</el-form-item>
<el-form-item
label=
"备注"
>
<el-input
type=
"textarea"
v-model=
"formData.remark"
placeholder=
"请输入备注信息,如沟通协商记录等"
maxlength=
"1000"
:disabled=
"editorType== 2"
></el-input>
</el-form-item>
</el-form>
<el-row
:gutter=
"60"
type=
"flex"
justify=
"center"
align=
"center"
>
<el-button
@
click=
"cancle"
>
{{
editorType
==
1
?
'取消'
:
'返回'
}}
</el-button>
<el-button
type=
"primary"
@
click=
"save"
v-if=
"editorType== 1"
>
保存
</el-button>
</el-row>
</div>
</div>
</
template
>
<
script
>
import
uploadImg
from
'@/components/editor/upload-img'
import
uploadMusic
from
'@/components/editor/upload-music'
import
{
TYPE_LIST
,
PAY_LIST
,
SOURCE_LIST
,
STATUS_LIST
,
CAR_LIST
,
SEX_LIST
,
RELATION_LIST
,
D_S_LIST
}
from
'@/utils/constants'
import
{
getBirth
}
from
'@/utils/index'
let
getcarMatch
=
function
(
rule
,
value
,
callback
,
message
)
{
if
(
!
/
[
0-9A-Za-z
]{6,24}
$/
.
test
(
value
))
{
callback
(
new
Error
(
message
))
}
else
{
callback
()
}
}
export
default
{
components
:
{
uploadImg
,
uploadMusic
},
data
(){
return
{
diagnoseLogId
:
''
,
birthDisable
:
false
,
hcd
:
false
,
//2、待问诊3、问诊中 4、已问诊"
inquiryStatus
:
4
,
editorType
:
1
,
// //1为编辑状态,2为查看
loading
:
true
,
formData
:
{
// 预约单信息
diagnoseType
:
''
,
appointSource
:
''
,
createdTime
:
''
,
operateTime
:
''
,
doneTime
:
''
,
serviceFee
:
''
,
payType
:
''
,
crrsName
:
''
,
// 预约信息
status
:
1
,
operateUserName
:
''
,
appointBeginTime
:
''
,
appointEndTime
:
''
,
// 患者信息
patientName
:
''
,
idCardType
:
1
,
idCard
:
''
,
birthday
:
''
,
sex
:
1
,
patientMobilePhone
:
''
,
//助诊信息
helpDoctor
:
''
,
userTitle
:
''
,
userHospital
:
''
,
userDepartment
:
''
,
userMobile
:
''
,
patientRelation
:
''
,
//医生信息
receiveDoctor
:
''
,
doctorTitle
:
''
,
doctorHospital
:
''
,
doctorDepartment
:
''
,
doctorMobile
:
''
,
doctorSource
:
''
,
monery
:
''
,
// 问诊信息
diagnoseStage
:
''
,
determineFlag
:
''
,
diagnoseDisease
:
''
,
illnessDetail
:
''
,
illnessImageUrls
:
[],
diagnoseAdvice
:
''
,
illnessAudioUrls
:
[],
followFlag
:
1
,
drugFollow
:
''
,
checkFollow
:
''
,
otherFollow
:
''
,
remark
:
''
},
tyleList
:
TYPE_LIST
,
payList
:
PAY_LIST
,
sourceList
:
SOURCE_LIST
,
statusList
:
STATUS_LIST
,
carList
:
CAR_LIST
,
sexList
:
SEX_LIST
,
relationList
:
RELATION_LIST
,
doctorSourceList
:
D_S_LIST
,
rules
:
{
appointBeginTime
:
[
{
required
:
true
,
message
:
'请输入预约时间'
,
trigger
:
'change'
}
],
patientName
:
[
{
required
:
true
,
message
:
'请输入患姓名'
,
trigger
:
'blur'
},
{
min
:
2
,
max
:
20
,
message
:
'长度在 2 到 20 个字符'
,
trigger
:
'blur'
}
],
idCardType
:
[
{
required
:
true
,
message
:
'请选择证件类型'
,
trigger
:
'change'
}
],
idCard
:
[
{
required
:
true
,
message
:
'请输入证件号'
,
trigger
:
'blur'
},
{
min
:
18
,
message
:
'长度18个字符'
,
trigger
:
'blur'
},
{
validator
:
function
(
rule
,
value
,
callback
)
{
getcarMatch
(
rule
,
value
,
callback
,
'只能是数字或字母'
)},
trigger
:
'change'
}
],
birthday
:
[
{
required
:
true
,
message
:
'请选择生日'
,
trigger
:
'change'
}
],
sex
:
[
{
required
:
true
,
message
:
'请选择性别'
,
trigger
:
'change'
}
],
patientMobilePhone
:
[
{
required
:
true
,
message
:
'请输入患者电话'
,
trigger
:
'blur'
}
],
receiveDoctor
:
[
{
required
:
true
,
message
:
'请选择接诊医生'
,
trigger
:
'change'
}
],
monery
:
[
{
required
:
false
,
message
:
'请输入医生服务费'
,
trigger
:
'change'
},
{
pattern
:
/
(
^
[
1-9
]([
0-9
]
+
)?(\.[
0-9
]{1,2})?
$
)
|
(
^
(
0
){1}
$
)
|
(
^
[
0-9
]\.[
0-9
]([
0-9
])?
$
)
/
,
message
:
'请输入正确额格式,可保留两位小数'
}
],
diagnoseStage
:
[
{
required
:
true
,
message
:
'请选择初/复诊'
,
trigger
:
'change'
}
],
determineFlag
:
[
{
required
:
true
,
message
:
'是否确诊'
,
trigger
:
'change'
}
],
illnessDetail
:
[
{
required
:
true
,
message
:
'请输入病情描述'
,
trigger
:
'change'
}
],
diagnoseAdvice
:
[
{
required
:
true
,
message
:
'请输入诊断建议'
,
trigger
:
'change'
}
],
},
endDateOpt
:
{
disabledData
:
(
time
)
=>
{
if
(
this
.
formData
.
appointEndTime
!=
""
&&
this
.
formData
.
appointEndTime
!=
null
)
{
return
(
time
.
getTime
()
>
new
Date
(
this
.
formData
.
appointEndTime
).
getTime
()
);
}
}
},
endDateOpt1
:
{
disabledDate
:
time
=>
{
return
(
time
.
getTime
()
<
new
Date
(
this
.
formData
.
appointBeginTime
).
getTime
()
);
}
}
}
},
created
()
{
this
.
editorType
=
this
.
$route
.
query
.
editorType
this
.
diagnoseLogId
=
this
.
$route
.
query
.
id
this
.
search
()
},
mounted
()
{
},
methods
:
{
search
()
{
this
.
loading
=
true
let
url
=
`/diagnose/admin/diagnose/
${
this
.
diagnoseLogId
}
`
this
.
GET
(
url
).
then
(
res
=>
{
this
.
loading
=
false
if
(
res
.
code
==
'000000'
)
{
this
.
formData
=
res
.
data
if
(
!
this
.
formData
.
illnessImageUrls
)
{
this
.
formData
.
illnessImageUrls
=
[]
}
if
(
!
this
.
formData
.
illnessAudioUrls
)
{
this
.
formData
.
illnessAudioUrls
=
[]
}
}
else
{
this
.
$message
.
info
(
'请稍后重试'
)
}
}).
catch
(()
=>
{
this
.
$message
.
info
(
'请稍后重试'
)
});
},
// 预约开始时间选择时
continueBeginChange
(
val
)
{
if
(
this
.
formData
.
appointEndTime
)
{
if
(
new
Date
(
val
).
getTime
()
>
new
Date
(
this
.
formData
.
appointEndTime
).
getTime
())
{
this
.
$message
.
info
(
'开始时间要小于结束时间'
);
this
.
formData
.
appointBeginTime
=
''
;
return
;
}
}
},
// 预约结束时间选择时
continueEndChange
(
val
)
{
if
(
this
.
formData
.
appointBeginTime
)
{
if
(
new
Date
(
val
).
getTime
()
<=
new
Date
(
this
.
formData
.
appointBeginTime
).
getTime
())
{
this
.
$message
.
info
(
'结束时间要大于开始时间'
);
this
.
formData
.
appointEndTime
=
''
;
return
;
}
}
},
blurFn
()
{
if
(
this
.
formData
.
idCardType
==
1
&&
this
.
formData
.
idCard
.
length
==
18
)
{
this
.
formData
.
birthday
=
getBirth
(
this
.
formData
.
idCard
)
this
.
birthDisable
=
true
}
else
{
this
.
formData
.
birthday
=
''
this
.
birthDisable
=
false
}
},
cancle
()
{
this
.
$router
.
back
()
},
save
()
{
// return
let
url
=
`/diagnose/admin/diagnose/update`
let
params
=
this
.
formData
params
.
illnessImageUrls
=
[...
this
.
$refs
.
imgComponent
.
setNewArr
()]
params
.
illnessAudioUrls
=
[...
this
.
$refs
.
musicComponent
.
setNewArr
()]
this
.
POST
(
url
,
params
).
then
(
res
=>
{
this
.
loading
=
false
if
(
res
.
code
==
"000000"
)
{
this
.
$message
.
success
(
'保存成功'
);
// this.$router.back()
}
});
// this.$refs.form.validate((valid) => {
// if (valid) {
// let url = `/diagnose/admin/diagnose/update`
// let params = this.formData
// this.POST(url, params).then(res => {
// this.loading = false
// if (res.code == "000000") {
// this.$message.success('保存成功');
// this.$router.back()
// }
// });
// } else {
// this.$message.info('请将信息填写完整')
// }
// });
},
// 格式话音频/视频数组
setObjectArr
(
array
,
attr
,
newa
)
{
let
newArr
=
[]
array
.
forEach
(
element
=>
{
newArr
.
push
(
{
url
:
element
[
attr
]
}
)
});
newa
=
newArr
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.diagnosis-list-content
{
.component-content
{
padding
:
10px
;
background
:
#fff
;
overflow
:
hidden
!
important
;
.title
{
margin-bottom
:
30px
;
}
.img-title
{
margin-top
:
20px
;
font-size
:
14px
;
color
:
#6d8bc7
;
line-height
:
40px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
}
.old-diagnoseAdvice
{
margin-top
:
20px
;
font-size
:
14px
;
color
:
#9197a3
;
line-height
:
40px
;
}
.set-width
{
width
:
300px
;
}
}
.btn-wrap
{
padding
:
40px
0
60px
;
margin
:
0
auto
;
}
}
</
style
>
\ No newline at end of file
src/views/IM/diagnosis-admin/diagnosis-list copy.vue
0 → 100644
浏览文件 @
c2cd31a6
<
template
>
<div
class=
"diagnosis-list-content"
>
<div
class=
"component-content screenSet"
id=
"screenSet"
>
<div
class=
"title"
>
咨询订单管理后台
</div>
<el-form
ref=
"form"
:inline=
"true"
:model=
"searchParam"
label-suffix=
":"
label-width=
"120px"
label-position=
"right"
style=
"width:100%;"
>
<el-row
:gutter=
"30"
type=
"flex"
style=
"margin-bottom:0;"
>
<el-col
:span=
"21"
>
<el-form-item
label=
"搜索"
>
<el-input
v-model=
"searchParam.searchVal"
clearable
placeholder=
"支付订单、医生姓名、运营姓名搜索"
style=
"width:300px;"
@
change=
"search(1)"
></el-input>
</el-form-item>
<el-form-item
label=
""
>
<el-select
v-model=
"searchParam.status"
@
change=
"search(1)"
clearable
placeholder=
"问诊状态"
style=
"width:150px"
>
<el-option
v-for=
"(eItem,eIndex) in diagnosisSelect"
:key=
"eIndex"
:label=
"eItem.value"
:value=
"eItem.no"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
""
>
<el-select
v-model=
"searchParam.diagnoseType"
@
change=
"search(1)"
clearable
placeholder=
"问诊类型"
style=
"width:150px"
>
<el-option
v-for=
"(eItem,eIndex) in diagnosisTypeSelect"
:key=
"eIndex"
:label=
"eItem.value"
:value=
"eItem.no"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"3"
style=
"padding:0;text-align:right;padding-right:15px;"
>
<el-button
type=
"primary"
size=
"small"
@
click=
"search(1)"
>
搜索
</el-button>
</el-col>
</el-row>
</el-form>
<!-- 表格 -->
<el-tabs
v-model=
"activeName"
@
tab-click=
"handleClick"
>
<el-tab-pane
label=
"已接诊"
name=
"first"
>
<el-table
class=
"search-table"
:data=
"tableData"
style=
"width: 100%"
v-loading=
"loading"
>
<el-table-column
prop=
"orderNo"
label=
"订单ID"
min-width=
"170"
align=
"left"
></el-table-column>
<el-table-column
prop=
"operateUserName"
label=
"运营人员"
min-width=
"100"
align=
"left"
></el-table-column>
<el-table-column
prop=
"specialName"
label=
"专区名称"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"diagnoseType"
label=
"问诊类型"
min-width=
"80"
align=
"left"
>
<template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
diagnoseType
|
diagnosisTypeFilter
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"doctorName"
label=
"接诊医生"
min-width=
"100"
align=
"left"
></el-table-column>
<el-table-column
prop=
"doctorMobile"
label=
"接诊电话"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"userName"
label=
"问诊患者"
min-width=
"120"
align=
"left"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
patientName
}}
</span>
<span></span>
<span>
(
{{
scope
.
row
.
userName
}}
)
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"userMobile"
label=
"问诊电话"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"price"
label=
"价格"
min-width=
"60"
align=
"left"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
price
|
priceFilter
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"appointBeginTime"
label=
"预约时间"
min-width=
"160"
align=
"left"
>
<
template
slot-scope=
"scope"
>
<p>
{{
scope
.
row
.
appointBeginTime
}}
</p>
<p>
{{
scope
.
row
.
appointEndTime
}}
</p>
</
template
>
</el-table-column>
<el-table-column
prop=
"statusStr"
label=
"问诊状态"
min-width=
"80"
align=
"left"
></el-table-column>
<el-table-column
label=
"操作"
fixed=
"right"
align=
"center"
min-width=
"150"
>
<
template
slot-scope=
"scope"
>
<!-- 1 初始状态 2待咨询 3 咨询中 4已结束 -->
<div>
<el-button
v-if=
"scope.row.status != 4"
type=
"primary"
size=
"small"
@
click=
"timeHandle(scope.row)"
style=
"margin-top: 10px;"
>
修改时间
</el-button>
<el-button
v-if=
"scope.row.status == 3"
type=
"primary"
size=
"small"
@
click=
"endDiagnosis(scope.row)"
style=
"margin-top: 10px;"
>
结束
</el-button>
</div>
<div>
<el-button
v-if=
"scope.row.status == 3 && scope.row.imStatus == 1"
type=
"primary"
size=
"small"
@
click=
"callAll(scope.row)"
style=
"margin-top: 10px;"
>
呼叫双方
</el-button>
<el-button
v-if=
"scope.row.status == 3 && scope.row.imStatus == 2"
type=
"primary"
size=
"small"
@
click=
"jionCommunicate(scope.row)"
style=
"margin-top: 10px;"
>
加入问诊
</el-button>
<el-button
type=
"primary"
size=
"small"
@
click=
"sendMessage(scope.row)"
style=
"margin-top: 10px;"
>
发送消息
</el-button>
</div>
</
template
>
</el-table-column>
</el-table>
<!-- 分页 -->
<div
class=
"pagination"
>
<el-pagination
background
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:current-page=
"searchParam.pageNo"
:page-sizes=
"[15, 30, 50, 100, 200, 500, 700, 1000, 1500, 2000]"
:page-size=
"searchParam.pageSize"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"totalRows"
>
</el-pagination>
</div>
</el-tab-pane>
<el-tab-pane
label=
"未匹配"
name=
"second"
>
<el-table
class=
"search-table"
:data=
"tableData"
style=
"width: 100%"
v-loading=
"loading"
>
<el-table-column
prop=
"orderNo"
label=
"订单ID"
min-width=
"170"
align=
"left"
></el-table-column>
<el-table-column
prop=
"operateUserName"
label=
"运营人员"
min-width=
"100"
align=
"left"
></el-table-column>
<el-table-column
prop=
"specialName"
label=
"专区名称"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
prop=
"diagnoseType"
label=
"问诊类型"
min-width=
"80"
align=
"left"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
diagnoseType
|
diagnosisTypeFilter
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"doctorName"
label=
"接诊医生"
min-width=
"100"
align=
"left"
></el-table-column>
<el-table-column
prop=
"doctorMobile"
label=
"接诊电话"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
label=
"问诊患者"
min-width=
"120"
align=
"left"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
patientName
}}
</span>
<span></span>
<span>
(
{{
scope
.
row
.
userName
}}
)
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"userMobile"
label=
"问诊电话"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
label=
"价格"
min-width=
"80"
align=
"left"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
price
|
priceFilter
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"appointBeginTime"
label=
"预约时间"
min-width=
"160"
align=
"left"
>
<
template
slot-scope=
"scope"
>
<p>
{{
scope
.
row
.
appointBeginTime
}}
</p>
<p>
{{
scope
.
row
.
appointEndTime
}}
</p>
</
template
>
</el-table-column>
<el-table-column
prop=
"statusStr"
label=
"问诊状态"
min-width=
"80"
align=
"left"
></el-table-column>
<el-table-column
label=
"操作"
fixed=
"right"
align=
"center"
min-width=
"100"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"primary"
size=
"small"
@
click=
"selectBtn(scope.row)"
>
选择
</el-button>
</
template
>
</el-table-column>
</el-table>
<div
class=
"pagination"
>
<el-pagination
background
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:current-page=
"searchParam.pageNo"
:page-sizes=
"[15, 30, 50, 100, 200, 500, 700, 1000, 1500, 2000]"
:page-size=
"searchParam.pageSize"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"totalRows"
>
</el-pagination>
</div>
</el-tab-pane>
</el-tabs>
<!-- 预约时间 -->
<el-dialog
title=
"预约时间"
:visible
.
sync=
"timeVisible"
width=
"40%"
>
<el-row
:gutter=
"30"
class=
"row search"
type=
"flex"
style=
"margin-bottom:0;"
>
<el-form
ref=
"timeForm"
:rules=
"timeRules"
:model=
"timeForm"
label-width=
"150px"
label-suffix=
":"
label-position=
"right"
size=
"mini"
style=
"width: 100%;"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"开始时间"
prop=
"beginTime"
>
<el-date-picker
v-model=
"timeForm.beginTime"
type=
"datetime"
placeholder=
"请选择开始时间"
value-format=
"yyyy-MM-dd HH:mm:ss"
@
change=
"changeBeginTime"
>
</el-date-picker>
<p
v-if=
"beginFlag"
style=
"color: red;font-size: 12px"
>
开始时间不能大于结束时间
</p>
</el-form-item>
<el-form-item
label=
"结束时间"
prop=
"endTime"
>
<el-date-picker
v-model=
"timeForm.endTime"
type=
"datetime"
placeholder=
"请选择结束时间"
value-format=
"yyyy-MM-dd HH:mm:ss"
@
change=
"changeEndTime"
>
</el-date-picker>
<p
v-if=
"endFlag"
style=
"color: red;font-size: 12px"
>
结束时间不能小于开始时间
</p>
</el-form-item>
</el-col>
</el-form>
</el-row>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"timeVisible = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"confirmTime"
>
确 定
</el-button>
</span>
</el-dialog>
</div>
</div>
</template>
<
script
>
export
default
{
data
(){
return
{
endFlag
:
false
,
beginFlag
:
false
,
loading
:
false
,
activeName
:
'second'
,
timeVisible
:
false
,
searchParam
:
{
searchVal
:
''
,
status
:
''
,
// 2、待问诊3、问诊中 4、已问诊"
diagnoseType
:
''
,
// 1、音频 2、视频
tab
:
2
,
// 1、已分配 2、未分配
pageSize
:
15
,
pageNo
:
1
},
timeForm
:{
diagnoseLogId
:
''
,
beginTime
:
''
,
endTime
:
''
},
timeSelect
:
[],
diagnosisSelect
:
[],
diagnosisTypeSelect
:
[],
tableData
:
[],
totalRows
:
0
,
timeRules
:
{
'beginTime'
:
[
{
required
:
true
,
message
:
'请选择预约开始时间'
,
trigger
:
'change'
}
],
'endTime'
:
[
{
required
:
true
,
message
:
'请选择预约结束时间'
,
trigger
:
'change'
}
]
},
liveBack
:
false
,
timeClickFlag
:
true
}
},
mounted
()
{
this
.
liveBack
=
this
.
$route
.
query
.
liveBack
||
false
if
(
this
.
liveBack
)
{
this
.
activeName
=
'first'
this
.
searchParam
.
tab
=
1
}
else
{
this
.
activeName
=
'second'
this
.
searchParam
.
tab
=
2
}
this
.
getDiagnoseTypeList
()
this
.
getDiagnoseList
()
this
.
search
()
},
methods
:
{
changeBeginTime
(
val
)
{
this
.
beginFlag
=
false
this
.
endFlag
=
false
let
b
=
new
Date
(
val
).
getTime
(),
e
if
(
this
.
timeForm
.
endTime
)
{
e
=
new
Date
(
this
.
timeForm
.
endTime
).
getTime
()
}
if
(
val
)
this
.
beginFlag
=
b
>
e
?
true
:
false
},
changeEndTime
(
val
)
{
this
.
beginFlag
=
false
this
.
endFlag
=
false
let
b
=
new
Date
(
val
).
getTime
(),
e
if
(
this
.
timeForm
.
beginTime
)
{
e
=
new
Date
(
this
.
timeForm
.
beginTime
).
getTime
()
}
if
(
val
)
this
.
endFlag
=
b
<
e
?
true
:
false
},
// 问诊类型
getDiagnoseTypeList
()
{
let
url
=
`/basic-data/constants?typeCode=P253`
this
.
GET
(
url
).
then
(
res
=>
{
if
(
res
.
code
==
"000000"
)
{
this
.
diagnosisTypeSelect
=
res
.
data
}
})
},
// 问诊状态
getDiagnoseList
()
{
let
url
=
`/basic-data/constants?typeCode=P254`
this
.
GET
(
url
).
then
(
res
=>
{
if
(
res
.
code
==
"000000"
)
{
this
.
diagnosisSelect
=
res
.
data
}
});
},
// tab切换
handleClick
(
val
)
{
this
.
searchParam
.
tab
=
val
.
name
==
'second'
?
2
:
1
this
.
search
()
},
search
(
a
)
{
if
(
a
)
this
.
searchParam
.
pageNo
=
1
this
.
loading
=
true
let
url
=
`/diagnose/admin/diagnose/`
let
params
=
this
.
searchParam
this
.
POST
(
url
,
params
).
then
(
res
=>
{
this
.
loading
=
false
if
(
res
.
code
==
"000000"
)
{
this
.
tableData
=
res
.
data
.
list
this
.
totalRows
=
res
.
data
.
allSize
}
});
},
// 预约时间
timeHandle
(
row
)
{
this
.
beginFlag
=
false
this
.
endFlag
=
false
this
.
timeVisible
=
true
if
(
this
.
$refs
.
timeForm
)
{
this
.
$refs
.
timeForm
.
resetFields
()
}
this
.
timeForm
.
diagnoseLogId
=
row
.
diagnoseLogId
this
.
timeForm
.
beginTime
=
row
.
appointBeginTime
this
.
timeForm
.
endTime
=
row
.
appointEndTime
},
confirmTime
()
{
let
timeoutId
=
null
if
(
this
.
timeClickFlag
)
{
this
.
timeClickFlag
=
false
timeoutId
&&
clearTimeout
(
timeoutId
)
timeoutId
=
setTimeout
(()
=>
{
this
.
clickHandle
()
},
2000
)
}
},
// 防止按钮多次点击
clickHandle
()
{
this
.
$refs
.
timeForm
.
validate
((
valid
)
=>
{
if
(
valid
)
{
if
(
this
.
beginFlag
||
this
.
endFlag
)
{
return
}
this
.
loading
=
true
this
.
POST
(
'/diagnose/admin/diagnose/appointTime'
,
this
.
timeForm
).
then
(
res
=>
{
this
.
loading
=
false
this
.
timeClickFlag
=
true
if
(
res
.
code
==
"000000"
)
{
this
.
$message
({
message
:
'修改预约时间成功'
,
type
:
"success"
});
this
.
searchParam
.
tab
=
1
this
.
timeVisible
=
false
this
.
search
()
}
else
{
this
.
$message
({
message
:
res
.
message
,
type
:
"error"
})
}
});
}
})
},
// 结束问诊
endDiagnosis
(
row
)
{
this
.
$confirm
(
'确定结束问诊吗?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
this
.
POST
(
`/diagnose/admin/diagnose/end/
${
row
.
diagnoseLogId
}
`
,
''
).
then
(
res
=>
{
if
(
res
.
code
==
"000000"
)
{
this
.
$message
({
message
:
'成功结束问诊'
,
type
:
"success"
})
this
.
searchParam
.
tab
=
1
this
.
search
()
}
else
{
this
.
$message
({
message
:
res
.
message
,
type
:
"error"
})
}
});
})
},
// 呼叫双方
callAll
(
row
)
{
this
.
$confirm
(
'确定呼叫双方吗?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
this
.
POST
(
`/diagnose/admin/diagnose/call/
${
row
.
diagnoseLogId
}
`
,
''
).
then
(
res
=>
{
if
(
res
.
code
!=
"000000"
)
{
this
.
$message
({
message
:
res
.
message
,
type
:
"error"
})
}
})
})
},
// 加入问诊
jionCommunicate
(
row
)
{
this
.
$confirm
(
'确定加入问诊吗?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
this
.
clearSession
()
this
.
$router
.
push
({
path
:
'/diagnosis-live'
,
query
:
{
tid
:
row
.
imTeamId
,
diagnoseLogId
:
row
.
diagnoseLogId
}})
})
},
// 发送消息
sendMessage
(
row
)
{
this
.
$router
.
push
({
path
:
'/diagnosis-im'
,
query
:
{
tid
:
row
.
imTeamId
}})
},
// 选择
selectBtn
(
row
)
{
this
.
POST
(
`/diagnose/admin/diagnose/choose/
${
row
.
diagnoseLogId
}
`
,
''
)
.
then
(
res
=>
{
if
(
res
.
code
==
"000000"
)
{
this
.
$message
({
message
:
'选择成功'
,
type
:
"success"
});
this
.
searchParam
.
tab
=
1
this
.
search
()
}
else
{
this
.
$message
({
message
:
res
.
message
,
type
:
"error"
})
}
})
.
catch
((
error
)
=>
{
this
.
$message
({
message
:
error
,
type
:
"error"
})
})
this
.
activeName
=
'first'
this
.
searchParam
.
tab
=
1
this
.
search
()
},
handleSizeChange
(
value
)
{
this
.
searchParam
.
pageSize
=
value
this
.
search
()
},
handleCurrentChange
(
value
)
{
this
.
searchParam
.
pageNo
=
value
this
.
search
()
},
// 清除直播时间相关的seession
clearSession
()
{
sessionStorage
.
removeItem
(
'TIME_askTime'
)
sessionStorage
.
removeItem
(
'TIME_answerTime'
)
sessionStorage
.
removeItem
(
'TIME_useTime'
)
sessionStorage
.
removeItem
(
'TIME_loseTime'
)
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.diagnosis-list-content
{
.component-content
{
padding
:
10px
;
background
:
#fff
;
overflow
:
hidden
!
important
;
.title
{
margin-bottom
:
30px
;
}
}
}
</
style
>
\ No newline at end of file
src/views/IM/diagnosis-admin/diagnosis-list.vue
浏览文件 @
c2cd31a6
...
@@ -2,166 +2,218 @@
...
@@ -2,166 +2,218 @@
<div
class=
"diagnosis-list-content"
>
<div
class=
"diagnosis-list-content"
>
<div
class=
"component-content screenSet"
id=
"screenSet"
>
<div
class=
"component-content screenSet"
id=
"screenSet"
>
<div
class=
"title"
>
咨询订单管理后台
</div>
<div
class=
"title"
>
咨询订单管理后台
</div>
<el-form
ref=
"form"
:inline=
"true"
:model=
"searchParam"
label-suffix=
":"
label-width=
"120px"
label-position=
"right"
style=
"width:100%;"
>
<el-row
:gutter=
"30"
type=
"flex"
style=
"margin-bottom:0;"
>
<el-form
:inline=
"true"
class=
"demo-form-inline"
:model=
"searchParam"
label-width=
"80px"
>
<el-col
:span=
"21"
>
<el-row
:gutter=
"20"
type=
"flex"
justify=
"center"
>
<el-form-item
label=
"搜索"
>
<el-col
:span=
"8"
class=
"t-c"
>
<el-form-item
label=
"姓名"
>
<el-input
<el-input
v-model=
"searchParam.searchVal"
v-model=
"searchParam.searchVal"
clearable
clearable
placeholder=
"支付订单、医生姓名、运营姓名搜索
"
placeholder=
"请输入助诊医生、接诊医生姓名、运营人员
"
style=
"width:30
0px;"
style=
"width:28
0px;"
@
change=
"search(1)"
></el-input>
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
""
>
</el-col>
<el-select
v-model=
"searchParam.status"
@
change=
"search(1)"
clearable
placeholder=
"问诊状态"
style=
"width:150px"
>
<el-col
:span=
"8"
class=
"t-c"
>
<el-option
<el-form-item
label=
"预约类型"
>
v-for=
"(eItem,eIndex) in diagnosisSelect"
<el-select
v-model=
"searchParam.diagnoseType"
placeholder=
"请选择预约类型"
style=
"width:280px;"
>
:key=
"eIndex"
<el-option
v-for=
"item of tyleList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
:label=
"eItem.value"
:value=
"eItem.no"
>
</el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
""
>
</el-col>
<el-select
v-model=
"searchParam.diagnoseType"
@
change=
"search(1)"
clearable
placeholder=
"问诊类型"
style=
"width:150px"
>
<el-col
:span=
"8"
class=
"t-c"
>
<el-option
<el-form-item
label=
"创建方式"
>
v-for=
"(eItem,eIndex) in diagnosisTypeSelect"
<el-select
v-model=
"searchParam.createType"
placeholder=
"创建方式"
style=
"width:280px;"
>
:key=
"eIndex"
<el-option
v-for=
"item of createList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
:label=
"eItem.value"
</el-select>
:value=
"eItem.no"
>
</el-form-item>
</el-option>
</el-col>
</el-row>
<el-row
:gutter=
"20"
type=
"flex"
justify=
"center"
>
<el-col
:span=
"8"
class=
"t-c"
>
<el-form-item
label=
"是否跟进"
>
<el-select
v-model=
"searchParam.followFlag"
placeholder=
"请选择是否跟进"
style=
"width:280px;"
>
<el-option
v-for=
"item of fllowList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"3"
style=
"padding:0;text-align:right;padding-right:15px;"
>
<el-col
:span=
"8"
class=
"t-c"
>
<el-button
type=
"primary"
size=
"small"
@
click=
"search(1)"
>
搜索
</el-button>
<el-form-item
label=
"预约来源"
>
<el-select
v-model=
"searchParam.appointSource"
placeholder=
"请选择预约来源"
style=
"width:280px;"
>
<el-option
v-for=
"item of sourceList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"8"
class=
"t-c"
>
<el-form-item
label=
"是否匹配"
>
<el-select
v-model=
"searchParam.operateFlag"
placeholder=
"是否匹配"
style=
"width:280px;"
>
<el-option
v-for=
"item of operateList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
type=
"flex"
justify=
"center"
>
<el-col
:span=
"8"
class=
"t-c"
>
<el-form-item
label=
"创建日期"
>
<el-date-picker
type=
"date"
placeholder=
"开始时间"
v-model=
"searchParam.createdTimeBegin"
style=
"width: 135px;"
:picker-options=
"endDateOpt"
format=
"yyyy-MM-dd"
value-format=
"yyyy-MM-dd"
>
</el-date-picker>
<span>
-
</span>
<el-date-picker
type=
"date"
placeholder=
"结束时间"
v-model=
"searchParam.createdTimeEnd"
style=
"width: 135px;"
format=
"yyyy-MM-dd"
:picker-options=
"endDateOpt1"
value-format=
"yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col
:span=
"8"
class=
"t-c"
>
<el-form-item
label=
"匹配日期"
>
<el-date-picker
type=
"date"
placeholder=
"开始时间"
v-model=
"searchParam.operateTimeBegin"
style=
"width: 135px;"
:picker-options=
"endDateOpt2"
format=
"yyyy-MM-dd"
value-format=
"yyyy-MM-dd"
>
</el-date-picker>
<span>
-
</span>
<el-date-picker
type=
"date"
placeholder=
"结束时间"
v-model=
"searchParam.operateTimeEnd"
style=
"width: 135px;"
format=
"yyyy-MM-dd"
:picker-options=
"endDateOpt3"
value-format=
"yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col
:span=
"8"
class=
"t-c"
>
<el-form-item
label=
"预约日期"
>
<el-date-picker
type=
"date"
placeholder=
"开始时间"
v-model=
"searchParam.appointBeginTime"
style=
"width: 135px;"
:picker-options=
"endDateOpt4"
format=
"yyyy-MM-dd"
value-format=
"yyyy-MM-dd"
>
</el-date-picker>
<span>
-
</span>
<el-date-picker
type=
"date"
placeholder=
"结束时间"
v-model=
"searchParam.appointEndTime"
style=
"width: 135px;"
format=
"yyyy-MM-dd"
:picker-options=
"endDateOpt5"
value-format=
"yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
type=
"flex"
justify=
"center"
align=
"center"
>
<el-col
:span=
"24"
class=
"btn-wrap"
>
<el-button
type=
"primary"
class=
"submit-btn"
@
click=
"search"
>
搜索
</el-button>
<el-button
type=
"warning"
class=
"submit-btn"
@
click=
"reset"
>
重置
</el-button>
<el-button
type=
"info"
class=
"submit-btn"
@
click=
"download"
>
导出
</el-button>
</el-col>
</el-col>
</el-row>
</el-row>
</el-form>
</el-form>
<!-- 表格 -->
<el-tabs
v-model=
"activeName"
@
tab-click=
"handleClick"
>
<el-tabs
v-model=
"activeName"
@
tab-click=
"handleClick"
>
<el-tab-pane
label=
"已接诊"
name=
"first"
>
<el-tab-pane
label=
"全部"
name=
"first"
>
<el-table
<table-component
class=
"search-table"
:tData=
"tableData"
:data=
"tableData"
:pageNo=
"searchParam.pageNo"
style=
"width: 100%"
:pageSize=
"searchParam.pageSize"
v-loading=
"loading"
>
:totalRows=
"totalRows"
<el-table-column
prop=
"orderNo"
label=
"订单ID"
min-width=
"170"
align=
"left"
></el-table-column>
:loading=
"loading"
<el-table-column
prop=
"operateUserName"
label=
"运营人员"
min-width=
"100"
align=
"left"
></el-table-column>
@
timeHandle=
"timeHandle"
<el-table-column
prop=
"specialName"
label=
"专区名称"
min-width=
"120"
align=
"left"
></el-table-column>
@
endDiagnosis=
"endDiagnosis"
<el-table-column
prop=
"diagnoseType"
label=
"问诊类型"
min-width=
"80"
align=
"left"
>
@
callAll=
"callAll"
<template
slot-scope=
"scope"
>
@
jionCommunicate=
"jionCommunicate"
<span>
{{
scope
.
row
.
diagnoseType
|
diagnosisTypeFilter
}}
</span>
@
sendMessage=
"sendMessage"
</
template
>
@
selectBtn=
"selectBtn"
</el-table-column>
@
goEditor=
"goEditor"
<el-table-column
prop=
"doctorName"
label=
"接诊医生"
min-width=
"100"
align=
"left"
></el-table-column>
@
handleSizeChange=
"handleSizeChange"
<el-table-column
prop=
"doctorMobile"
label=
"接诊电话"
min-width=
"120"
align=
"left"
></el-table-column>
@
handleCurrentChange=
"handleCurrentChange"
<el-table-column
prop=
"userName"
label=
"问诊患者"
min-width=
"120"
align=
"left"
>
></table-component>
<
template
slot-scope=
"scope"
>
</el-tab-pane>
<span>
{{
scope
.
row
.
patientName
}}
</span>
<el-tab-pane
label=
"待问诊"
name=
"second"
>
<span></span>
<table-component
<span>
(
{{
scope
.
row
.
userName
}}
)
</span>
:tData=
"tableData"
</
template
>
:pageNo=
"searchParam.pageNo"
</el-table-column>
:pageSize=
"searchParam.pageSize"
<el-table-column
prop=
"userMobile"
label=
"问诊电话"
min-width=
"120"
align=
"left"
></el-table-column>
:totalRows=
"totalRows"
<el-table-column
prop=
"price"
label=
"价格"
min-width=
"60"
align=
"left"
>
:loading=
"loading"
<
template
slot-scope=
"scope"
>
@
timeHandle=
"timeHandle"
<span>
{{
scope
.
row
.
price
|
priceFilter
}}
</span>
@
endDiagnosis=
"endDiagnosis"
</
template
>
@
callAll=
"callAll"
</el-table-column>
@
jionCommunicate=
"jionCommunicate"
<el-table-column
prop=
"appointBeginTime"
label=
"预约时间"
min-width=
"160"
align=
"left"
>
@
sendMessage=
"sendMessage"
<
template
slot-scope=
"scope"
>
@
selectBtn=
"selectBtn"
<p>
{{
scope
.
row
.
appointBeginTime
}}
</p>
@
goEditor=
"goEditor"
<p>
{{
scope
.
row
.
appointEndTime
}}
</p>
@
handleSizeChange=
"handleSizeChange"
</
template
>
@
handleCurrentChange=
"handleCurrentChange"
</el-table-column>
></table-component>
<el-table-column
prop=
"statusStr"
label=
"问诊状态"
min-width=
"80"
align=
"left"
></el-table-column>
</el-tab-pane>
<el-table-column
label=
"操作"
fixed=
"right"
align=
"center"
min-width=
"150"
>
<el-tab-pane
label=
"问诊中"
name=
"three"
>
<
template
slot-scope=
"scope"
>
<table-component
<!-- 1 初始状态 2待咨询 3 咨询中 4已结束 -->
:tData=
"tableData"
<div>
:pageNo=
"searchParam.pageNo"
<el-button
v-if=
"scope.row.status != 4"
type=
"primary"
size=
"small"
@
click=
"timeHandle(scope.row)"
style=
"margin-top: 10px;"
>
修改时间
</el-button>
:pageSize=
"searchParam.pageSize"
<el-button
v-if=
"scope.row.status == 3"
type=
"primary"
size=
"small"
@
click=
"endDiagnosis(scope.row)"
style=
"margin-top: 10px;"
>
结束
</el-button>
:totalRows=
"totalRows"
</div>
:loading=
"loading"
<div>
@
timeHandle=
"timeHandle"
<el-button
v-if=
"scope.row.status == 3 && scope.row.imStatus == 1"
type=
"primary"
size=
"small"
@
click=
"callAll(scope.row)"
style=
"margin-top: 10px;"
>
呼叫双方
</el-button>
@
endDiagnosis=
"endDiagnosis"
<el-button
v-if=
"scope.row.status == 3 && scope.row.imStatus == 2"
type=
"primary"
size=
"small"
@
click=
"jionCommunicate(scope.row)"
style=
"margin-top: 10px;"
>
加入问诊
</el-button>
@
callAll=
"callAll"
<el-button
type=
"primary"
size=
"small"
@
click=
"sendMessage(scope.row)"
style=
"margin-top: 10px;"
>
发送消息
</el-button>
@
jionCommunicate=
"jionCommunicate"
</div>
@
sendMessage=
"sendMessage"
</
template
>
@
selectBtn=
"selectBtn"
</el-table-column>
@
goEditor=
"goEditor"
</el-table>
@
handleSizeChange=
"handleSizeChange"
<!-- 分页 -->
@
handleCurrentChange=
"handleCurrentChange"
<div
class=
"pagination"
>
></table-component>
<el-pagination
background
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:current-page=
"searchParam.pageNo"
:page-sizes=
"[15, 30, 50, 100, 200, 500, 700, 1000, 1500, 2000]"
:page-size=
"searchParam.pageSize"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"totalRows"
>
</el-pagination>
</div>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"未匹配"
name=
"second"
>
<el-tab-pane
label=
"已问诊"
name=
"four"
>
<el-table
<table-component
class=
"search-table"
:tData=
"tableData"
:data=
"tableData"
:pageNo=
"searchParam.pageNo"
style=
"width: 100%"
:pageSize=
"searchParam.pageSize"
v-loading=
"loading"
>
:totalRows=
"totalRows"
<el-table-column
prop=
"orderNo"
label=
"订单ID"
min-width=
"170"
align=
"left"
></el-table-column>
:loading=
"loading"
<el-table-column
prop=
"operateUserName"
label=
"运营人员"
min-width=
"100"
align=
"left"
></el-table-column>
@
timeHandle=
"timeHandle"
<el-table-column
prop=
"specialName"
label=
"专区名称"
min-width=
"120"
align=
"left"
></el-table-column>
@
endDiagnosis=
"endDiagnosis"
<el-table-column
prop=
"diagnoseType"
label=
"问诊类型"
min-width=
"80"
align=
"left"
>
@
callAll=
"callAll"
<
template
slot-scope=
"scope"
>
@
jionCommunicate=
"jionCommunicate"
<span>
{{
scope
.
row
.
diagnoseType
|
diagnosisTypeFilter
}}
</span>
@
sendMessage=
"sendMessage"
</
template
>
@
selectBtn=
"selectBtn"
</el-table-column>
@
goEditor=
"goEditor"
<el-table-column
prop=
"doctorName"
label=
"接诊医生"
min-width=
"100"
align=
"left"
></el-table-column>
@
handleSizeChange=
"handleSizeChange"
<el-table-column
prop=
"doctorMobile"
label=
"接诊电话"
min-width=
"120"
align=
"left"
></el-table-column>
@
handleCurrentChange=
"handleCurrentChange"
<el-table-column
label=
"问诊患者"
min-width=
"120"
align=
"left"
>
></table-component>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
patientName
}}
</span>
<span></span>
<span>
(
{{
scope
.
row
.
userName
}}
)
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"userMobile"
label=
"问诊电话"
min-width=
"120"
align=
"left"
></el-table-column>
<el-table-column
label=
"价格"
min-width=
"80"
align=
"left"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
price
|
priceFilter
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"appointBeginTime"
label=
"预约时间"
min-width=
"160"
align=
"left"
>
<
template
slot-scope=
"scope"
>
<p>
{{
scope
.
row
.
appointBeginTime
}}
</p>
<p>
{{
scope
.
row
.
appointEndTime
}}
</p>
</
template
>
</el-table-column>
<el-table-column
prop=
"statusStr"
label=
"问诊状态"
min-width=
"80"
align=
"left"
></el-table-column>
<el-table-column
label=
"操作"
fixed=
"right"
align=
"center"
min-width=
"100"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"primary"
size=
"small"
@
click=
"selectBtn(scope.row)"
>
选择
</el-button>
</
template
>
</el-table-column>
</el-table>
<div
class=
"pagination"
>
<el-pagination
background
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:current-page=
"searchParam.pageNo"
:page-sizes=
"[15, 30, 50, 100, 200, 500, 700, 1000, 1500, 2000]"
:page-size=
"searchParam.pageSize"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"totalRows"
>
</el-pagination>
</div>
</el-tab-pane>
</el-tab-pane>
</el-tabs>
</el-tabs>
<!-- 预约时间 -->
<!-- 预约时间 -->
<el-dialog
<el-dialog
title=
"预约时间"
title=
"预约时间"
...
@@ -209,30 +261,116 @@
...
@@ -209,30 +261,116 @@
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
TableComponent
from
'@/components/list/table-component'
import
{
TYPE_LIST
,
IS_FLLOW
,
CREATE_TYPE
,
SOURCE_LIST
,
OPERATE_LIST
}
from
'@/utils/constants'
export
default
{
export
default
{
components
:
{
TableComponent
},
data
(){
data
(){
return
{
return
{
hcd
:
[{
diagnoseLogId
:
'问诊id'
,
orderNo
:
'123'
,
// 订单id
diagnoseType
:
1
,
//预约类型1.语音问诊、2.视频问诊、3.图文问诊
diagnoseTypeStr
:
'语音问诊'
,
//预约类型1.语音问诊、2.视频问诊、3.图文问诊
status
:
1
,
//问诊状态:1、初始状态(未支付) 2、待问诊(支付成功待完善) 3、问诊中(已完善) 4、已问诊
statusStr
:
'初始状态(未支付)'
,
operateUserName
:
'运营人员name'
,
patientName
:
'患者name'
,
idCard
:
'证件号码'
,
patientMobilePhone
:
'患者手机号'
,
userId
:
'助诊医生id'
,
userName
:
'助诊医生名称'
,
userMobile
:
'助诊医生电话'
,
doctorId
:
'接诊医生id'
,
doctorName
:
'接诊医生名称'
,
doctorMobile
:
'接诊医生电话'
,
appointBeginTime
:
'预约开始时间'
,
appointEndTime
:
'预约结束时间'
,
diagnoseStage
:
1
,
//诊断阶段1.初诊 2.复诊"
diagnoseStageStr
:
'初诊'
,
determineFlag
:
1
,
//是否确诊1.确诊 2.没有确诊
determineFlagStr
:
1
,
diagnoseDisease
:
'确诊疾病'
,
illnessDetail
:
'病情描述'
,
diagnoseAdvice
:
'诊断建议'
,
followFlag
:
1
,
//是否跟进1.跟进 2不跟进
followFlagStr
:
'跟进'
,
drugFollow
:
'药品跟进'
,
drugFollowStatus
:
1
,
//药物跟进状态:1 待跟进、2 跟进中(协调资源)、3 已完成(跟进结束)、4 长期跟进")
drugFollowStatusStr
:
'待跟进'
,
checkFollow
:
"检查跟进"
,
checkFollowStatus
:
1
,
//检查跟进状态:1 待跟进、2 跟进中(协调资源)、3 已完成(跟进结束)、4 长期跟进")
checkFollowStatusStr
:
'待跟进'
,
otherFollow
:
'其他跟进事项'
,
otherFollowStatus
:
1
,
otherFollowStatusStr
:
'待跟进'
,
createType
:
1
,
//创建方式1.系统创建 2.手动创建
createTypeStr
:
'系统创建'
,
appointSource
:
1
,
//预约来源1.铁军反馈、2.主动联系、3.问卷收集、4.微信群反馈、5.话题讨论与回复"
appointSourceStr
:
'铁军反馈'
,
createdTime
:
'创建时间'
,
operateTime
:
'匹配时间'
,
doneTime
:
'完成时间'
,
price
:
'问诊价格单位分'
,
priceStr
:
'123'
,
payType
:
1
,
//支付方式1.代付、2.扫码支付、3.分享支付
payTypeStr
:
'代付'
,
sex
:
1
,
//患者性别:1、男 2、女
sexStr
:
'男'
,
age
:
12
,
//患者年龄
idCardType
:
1
,
//证件类型1居民身份证2护照3港澳通行证
idCardTypeStr
:
'居民身份证'
,
userTitle
:
'助诊医生职称'
,
userHospital
:
'助诊医生机构'
,
userDepartment
:
'助诊医生科室'
,
patientRelation
:
1
,
//与患者关系1.自己、2.患者、3.家属、4.朋友
patientRelationStr
:
'自己'
,
doctorTitle
:
'接诊医生职称'
,
doctorHospital
:
'接诊医生机构'
,
doctorDepartment
:
'接诊医生科室'
,
doctorSource
:
1
,
//接诊医生来源1.京东、2.同事推荐、3.云鹊医平台
doctorSourceStr
:
'京东'
,
serviceFee
:
'医生服务费单位分'
,
serviceFeeStr
:
'12'
,
crrsName
:
'招募人'
,
remark
:
'备注'
}],
endFlag
:
false
,
endFlag
:
false
,
beginFlag
:
false
,
beginFlag
:
false
,
loading
:
false
,
loading
:
false
,
activeName
:
'
second
'
,
activeName
:
'
first
'
,
timeVisible
:
false
,
timeVisible
:
false
,
searchParam
:
{
searchParam
:{
searchVal
:
''
,
searchVal
:
''
,
status
:
''
,
// 2、待问诊3、问诊中 4、已问诊"
diagnoseType
:
''
,
diagnoseType
:
''
,
// 1、音频 2、视频
createType
:
''
,
tab
:
2
,
// 1、已分配 2、未分配
followFlag
:
''
,
appointSource
:
''
,
operateFlag
:
''
,
createdTimeBegin
:
''
,
createdTimeEnd
:
''
,
operateTimeBegin
:
''
,
operateTimeEnd
:
''
,
appointBeginTime
:
''
,
appointEndTime
:
''
,
status
:
''
,
//1、初始状态(未支付) 2、待问诊(支付成功待完善) 3、问诊中(已完善) 4、已问诊")
bizType
:
1
,
//1、分页查询 2、导出"
pageSize
:
15
,
pageSize
:
15
,
pageNo
:
1
pageNo
:
1
},
},
tyleList
:
TYPE_LIST
,
fllowList
:
IS_FLLOW
,
sourceList
:
SOURCE_LIST
,
createList
:
CREATE_TYPE
,
operateList
:
OPERATE_LIST
,
timeForm
:{
timeForm
:{
diagnoseLogId
:
''
,
diagnoseLogId
:
''
,
beginTime
:
''
,
beginTime
:
''
,
endTime
:
''
endTime
:
''
},
},
timeSelect
:
[],
diagnosisSelect
:
[],
diagnosisTypeSelect
:
[],
tableData
:
[],
tableData
:
[],
totalRows
:
0
,
totalRows
:
0
,
timeRules
:
{
timeRules
:
{
...
@@ -244,21 +382,67 @@ export default {
...
@@ -244,21 +382,67 @@ export default {
]
]
},
},
liveBack
:
false
,
liveBack
:
false
,
timeClickFlag
:
true
timeClickFlag
:
true
,
endDateOpt
:
{
disabledData
:
(
time
)
=>
{
if
(
this
.
searchParam
.
createdTimeEnd
!=
""
&&
this
.
searchParam
.
createdTimeEnd
!=
null
)
{
return
(
time
.
getTime
()
>
new
Date
(
this
.
searchParam
.
createdTimeEnd
).
getTime
()
);
}
}
},
endDateOpt1
:
{
disabledDate
:
time
=>
{
return
(
time
.
getTime
()
<
new
Date
(
this
.
searchParam
.
createdTimeBegin
).
getTime
()
);
}
},
endDateOpt2
:
{
disabledData
:
(
time
)
=>
{
if
(
this
.
searchParam
.
operateTimeEnd
!=
""
&&
this
.
searchParam
.
operateTimeEnd
!=
null
)
{
return
(
time
.
getTime
()
>
new
Date
(
this
.
searchParam
.
operateTimeEnd
).
getTime
()
);
}
}
},
endDateOpt3
:
{
disabledDate
:
time
=>
{
return
(
time
.
getTime
()
<
new
Date
(
this
.
searchParam
.
operateTimeBegin
).
getTime
()
);
}
},
endDateOpt4
:
{
disabledData
:
(
time
)
=>
{
if
(
this
.
searchParam
.
appointEndTime
!=
""
&&
this
.
searchParam
.
appointEndTime
!=
null
)
{
return
(
time
.
getTime
()
>
new
Date
(
this
.
searchParam
.
appointEndTime
).
getTime
()
);
}
}
},
endDateOpt5
:
{
disabledDate
:
time
=>
{
return
(
time
.
getTime
()
<
new
Date
(
this
.
searchParam
.
appointBeginTime
).
getTime
()
);
}
}
}
}
},
},
mounted
()
{
mounted
()
{
this
.
liveBack
=
this
.
$route
.
query
.
liveBack
||
false
this
.
liveBack
=
this
.
$route
.
query
.
liveBack
||
false
if
(
this
.
liveBack
)
{
//
if(this.liveBack) {
this
.
activeName
=
'first'
//
this.activeName = 'first'
this
.
searchParam
.
tab
=
1
// this.searchParam.status = ''
}
else
{
//
}else {
this
.
activeName
=
'second'
//
this.activeName = 'second'
this
.
searchParam
.
tab
=
2
// this.searchParam.status
= 2
}
//
}
this
.
getDiagnoseTypeList
()
this
.
getDiagnoseList
()
this
.
search
()
this
.
search
()
},
},
methods
:
{
methods
:
{
...
@@ -281,33 +465,32 @@ export default {
...
@@ -281,33 +465,32 @@ export default {
}
}
if
(
val
)
this
.
endFlag
=
b
<
e
?
true
:
false
if
(
val
)
this
.
endFlag
=
b
<
e
?
true
:
false
},
},
// 问诊类型
getDiagnoseTypeList
()
{
let
url
=
`/basic-data/constants?typeCode=P253`
this
.
GET
(
url
).
then
(
res
=>
{
if
(
res
.
code
==
"000000"
)
{
this
.
diagnosisTypeSelect
=
res
.
data
}
})
},
// 问诊状态
getDiagnoseList
()
{
let
url
=
`/basic-data/constants?typeCode=P254`
this
.
GET
(
url
).
then
(
res
=>
{
if
(
res
.
code
==
"000000"
)
{
this
.
diagnosisSelect
=
res
.
data
}
});
},
// tab切换
// tab切换
handleClick
(
val
)
{
handleClick
(
val
)
{
this
.
searchParam
.
tab
=
val
.
name
==
'second'
?
2
:
1
let
tab
=
1
switch
(
val
.
name
)
{
case
'first'
:
tab
=
''
break
case
'second'
:
tab
=
2
break
case
'three'
:
tab
=
3
break
case
'four'
:
tab
=
4
break
default
:
break
}
this
.
searchParam
.
status
=
tab
this
.
search
()
this
.
search
()
},
},
search
(
a
)
{
search
()
{
if
(
a
)
this
.
searchParam
.
pageNo
=
1
this
.
loading
=
true
this
.
loading
=
true
let
url
=
`/diagnose/admin/diagnose/`
let
url
=
`/diagnose/admin/diagnose/list`
this
.
searchParam
.
bizType
=
1
let
params
=
this
.
searchParam
let
params
=
this
.
searchParam
this
.
POST
(
url
,
params
).
then
(
res
=>
{
this
.
POST
(
url
,
params
).
then
(
res
=>
{
this
.
loading
=
false
this
.
loading
=
false
...
@@ -317,6 +500,58 @@ export default {
...
@@ -317,6 +500,58 @@ export default {
}
}
});
});
},
},
// 重置
reset
()
{
this
.
searchParam
=
{
searchVal
:
''
,
diagnoseType
:
''
,
createType
:
''
,
followFlag
:
''
,
appointSource
:
''
,
operateFlag
:
''
,
createdTimeBegin
:
''
,
createdTimeEnd
:
''
,
operateTimeBegin
:
''
,
operateTimeEnd
:
''
,
appointBeginTime
:
''
,
appointEndTime
:
''
,
status
:
''
,
//1、初始状态(未支付) 2、待问诊(支付成功待完善) 3、问诊中(已完善) 4、已问诊")
bizType
:
1
,
//1、分页查询 2、导出"
pageSize
:
15
,
pageNo
:
1
}
this
.
search
()
},
// 导出
download
()
{
this
.
searchParam
.
bizType
=
2
let
params
=
this
.
searchParam
// let url = `/diagnose/admin/diagnose/`
// this.searchParam.bizType = 1
// let params = this.searchParam
// this.POST(url, params).then(res => {
// this.loading = false
// if (res.code == "000000") {
// this.tableData = res.data.list
// this.totalRows = res.data.allSize
// }
// });
downLoadMember
(
param
).
then
(
res
=>
{
if
(
res
.
data
)
{
this
.
downloadFile
(
res
.
data
.
attachments
.
base64
,
res
.
data
.
attachments
.
name
);
}
}).
catch
(
err
=>
{
console
.
log
(
'网络出现点儿问题,稍后重试'
)
})
},
/* 文件下载*/
downloadFile
(
base64
,
name
)
{
let
a
=
document
.
createElement
(
'a'
);
let
href
=
'data:application/xls;base64,'
+
base64
;
a
.
setAttribute
(
'href'
,
href
);
a
.
setAttribute
(
'download'
,
name
);
a
.
click
();
},
// 预约时间
// 预约时间
timeHandle
(
row
)
{
timeHandle
(
row
)
{
this
.
beginFlag
=
false
this
.
beginFlag
=
false
...
@@ -355,7 +590,8 @@ export default {
...
@@ -355,7 +590,8 @@ export default {
message
:
'修改预约时间成功'
,
message
:
'修改预约时间成功'
,
type
:
"success"
type
:
"success"
});
});
this
.
searchParam
.
tab
=
1
this
.
activeName
=
'first'
this
.
searchParam
.
status
=
''
this
.
timeVisible
=
false
this
.
timeVisible
=
false
this
.
search
()
this
.
search
()
}
else
{
}
else
{
...
@@ -381,7 +617,8 @@ export default {
...
@@ -381,7 +617,8 @@ export default {
message
:
'成功结束问诊'
,
message
:
'成功结束问诊'
,
type
:
"success"
type
:
"success"
})
})
this
.
searchParam
.
tab
=
1
this
.
activeName
=
'first'
this
.
searchParam
.
status
=
''
this
.
search
()
this
.
search
()
}
else
{
}
else
{
this
.
$message
({
this
.
$message
({
...
@@ -433,7 +670,7 @@ export default {
...
@@ -433,7 +670,7 @@ export default {
message
:
'选择成功'
,
message
:
'选择成功'
,
type
:
"success"
type
:
"success"
});
});
this
.
searchParam
.
tab
=
1
this
.
searchParam
.
status
=
''
this
.
search
()
this
.
search
()
}
else
{
}
else
{
this
.
$message
({
this
.
$message
({
...
@@ -449,9 +686,12 @@ export default {
...
@@ -449,9 +686,12 @@ export default {
})
})
})
})
this
.
activeName
=
'first'
this
.
activeName
=
'first'
this
.
searchParam
.
tab
=
1
this
.
searchParam
.
status
=
''
this
.
search
()
this
.
search
()
},
},
goEditor
(
row
,
flag
)
{
this
.
$router
.
push
({
path
:
'/diagnosis-editor'
,
query
:
{
id
:
row
.
diagnoseLogId
,
editorType
:
flag
}})
},
handleSizeChange
(
value
)
{
handleSizeChange
(
value
)
{
this
.
searchParam
.
pageSize
=
value
this
.
searchParam
.
pageSize
=
value
this
.
search
()
this
.
search
()
...
@@ -466,7 +706,7 @@ export default {
...
@@ -466,7 +706,7 @@ export default {
sessionStorage
.
removeItem
(
'TIME_answerTime'
)
sessionStorage
.
removeItem
(
'TIME_answerTime'
)
sessionStorage
.
removeItem
(
'TIME_useTime'
)
sessionStorage
.
removeItem
(
'TIME_useTime'
)
sessionStorage
.
removeItem
(
'TIME_loseTime'
)
sessionStorage
.
removeItem
(
'TIME_loseTime'
)
}
}
,
}
}
}
}
</
script
>
</
script
>
...
@@ -479,6 +719,16 @@ export default {
...
@@ -479,6 +719,16 @@ export default {
.title
{
.title
{
margin-bottom
:
30px
;
margin-bottom
:
30px
;
}
}
.t-c
{
text-align
:
center
;
}
.btn-wrap
{
text-align
:
right
;
}
.submit-btn
{
margin-right
:
50px
;
margin-top
:
10px
;
}
}
}
}
}
</
style
>
</
style
>
\ No newline at end of file
写
预览
Markdown
格式
0%
请重试
or
附加一个文件
附加文件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录