提交 08ea5e69 编写于 作者: guangjun.yang's avatar guangjun.yang

问题修改等

上级 3a0ecdaa
...@@ -4,7 +4,8 @@ const common = { ...@@ -4,7 +4,8 @@ const common = {
// 问题归类 // 问题归类
stickerCacheMap: { stickerCacheMap: {
} },
isFromAssignTask: false,
}, },
mutations: { mutations: {
CHANGE_TOKEN: (state, data) => { CHANGE_TOKEN: (state, data) => {
...@@ -13,6 +14,9 @@ const common = { ...@@ -13,6 +14,9 @@ const common = {
SET_STICKER_CACHE_MAP: (state, chcheMap) => { SET_STICKER_CACHE_MAP: (state, chcheMap) => {
state.stickerCacheMap[chcheMap.key] = chcheMap.idList; state.stickerCacheMap[chcheMap.key] = chcheMap.idList;
}, },
SET_IS_FROM_ASSIGN_TASK: (state, status) => {
state.isFromAssignTask = status;
}
}, },
actions: { actions: {
changeToken({ commit }, tokenData) { changeToken({ commit }, tokenData) {
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
const getters = { const getters = {
_token: state => state.common._token, _token: state => state.common._token,
stickerCacheMap: state => state.common.stickerCacheMap, stickerCacheMap: state => state.common.stickerCacheMap,
isFromAssignTask: state => state.common.isFromAssignTask,
} }
export default getters export default getters
...@@ -3,6 +3,27 @@ const vueFilter = { ...@@ -3,6 +3,27 @@ const vueFilter = {
if (!value) return ''; if (!value) return '';
return new Date(value).format("yyyy-MM-dd hh:mm:ss"); return new Date(value).format("yyyy-MM-dd hh:mm:ss");
}, },
continueTimesFilter: (value) => {
if (!value) return '';
var duration = value / 1000;
var s = Math.floor(duration % 60).toString();
if (s.length < 2) {
s = '0' + s;
}
var m = Math.floor((duration % 3600) / 60).toString();
if (m.length < 2) {
m = '0' + m;
}
var h = Math.floor(duration / 60 / 60).toString();
if (h.length < 2) {
h = '0' + h;
}
if (parseInt(h) >= 1) {
return h + '时' + m + '分' + s + '秒';
} else {
return m + '分' + s + '秒';
}
},
liveFilter: (value) => { liveFilter: (value) => {
if (value.liveStatus == 1) { if (value.liveStatus == 1) {
return '未开始' return '未开始'
...@@ -201,6 +222,15 @@ const vueFilter = { ...@@ -201,6 +222,15 @@ const vueFilter = {
} }
// $time.innerHTML = result; // $time.innerHTML = result;
return result; return result;
},
// 将字符串截短至指定长度,并用在最后追加特定字符串(例如:...)
shortName: function (value, length = 10, append = '...') {
if (value && value.length > length) {
return value.substring(0, length) + append
} else {
return value
} }
},
} }
export default vueFilter export default vueFilter
\ No newline at end of file
...@@ -22,10 +22,10 @@ ...@@ -22,10 +22,10 @@
<div class="desc"> <div class="desc">
<div class="top"> <div class="top">
<span class="name">{{session.toName}}</span> <span class="name">{{session.toName}}</span>
<span class="time small">{{session.lastMsgTime | timeFormat}}</span> <span class="time small">{{session.timestampStr}}</span>
</div> </div>
<div class="bottom"> <div class="bottom">
<span>{{session.text}}</span> <span>{{session.text | shortName}}</span>
<!-- <span>{{session.lastMsgContent}}</span> --> <!-- <span>{{session.lastMsgContent}}</span> -->
<span <span
v-show="session.status !=3 && currentTaskLogId != session.taskLogId && session.unreadCount" v-show="session.status !=3 && currentTaskLogId != session.taskLogId && session.unreadCount"
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
<div class="c-header-l"> <div class="c-header-l">
<img :src="currentSession.avatarImageUrl" alt /> <img :src="currentSession.avatarImageUrl" alt />
<span class="name">{{doctorInfo.name}}</span> <span class="name">{{doctorInfo.name}}</span>
<span class="time-tip">当前会话时长:3分08秒</span> <span class="time-tip">当前会话时长:{{currentContinueTimes | continueTimesFilter}}</span>
</div> </div>
<!-- <span class="close-btn">结束会话</span> --> <!-- <span class="close-btn">结束会话</span> -->
</section> </section>
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
<img :src="item.avatarImg" alt /> <img :src="item.avatarImg" alt />
</div> </div>
<div class="msg-item-detail"> <div class="msg-item-detail">
<span class="mid-time">{{item.timestamp | timeFormat}}</span> <span class="mid-time">{{item.timestampStr}}</span>
<div v-if="item.showType == 1" class="mid-text-wrapper" style="max-width: 520px;"> <div v-if="item.showType == 1" class="mid-text-wrapper" style="max-width: 520px;">
<img v-show="item.sendFlag" src="../../../assets/image/IM/icon-no-send.png" alt /> <img v-show="item.sendFlag" src="../../../assets/image/IM/icon-no-send.png" alt />
<div class="mid-text">{{item.text}}</div> <div class="mid-text">{{item.text}}</div>
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
<div v-if="item.showType == 3" class="mid-pdf" @click="openPDF(item)"> <div v-if="item.showType == 3" class="mid-pdf" @click="openPDF(item)">
<div class="midp-left"> <div class="midp-left">
<span class="name">{{item.text}}</span> <span class="name">{{item.text}}</span>
<span class="size">{{item.size}} MB</span> <span class="size">{{fileSizeChange(item.size)}}</span>
</div> </div>
<div class="midp-icon"> <div class="midp-icon">
<img src="../../../assets/image/IM/icon-pdf.png" alt /> <img src="../../../assets/image/IM/icon-pdf.png" alt />
...@@ -93,7 +93,7 @@ ...@@ -93,7 +93,7 @@
</article> </article>
</section> </section>
<section class="c-bottom"> <section class="c-bottom">
<el-input type="textarea" placeholder="请输入内容" v-model="sendText"></el-input> <el-input type="textarea" placeholder="请输入内容" v-model="sendText" maxlength=499></el-input>
<div class="cb-icon-wrapper"> <div class="cb-icon-wrapper">
<el-upload <el-upload
class="bg-uploader" class="bg-uploader"
...@@ -129,12 +129,12 @@ ...@@ -129,12 +129,12 @@
<el-form ref="linkFormRef" :rules="rules" :model="linkForm" label-width="100px"> <el-form ref="linkFormRef" :rules="rules" :model="linkForm" label-width="100px">
<el-form-item label="普通文本"> <el-form-item label="普通文本">
<el-col :span="20"> <el-col :span="20">
<el-input v-model="linkForm.remark" size="small" maxlength="20"></el-input> <el-input v-model="linkForm.remark" size="small" maxlength="300"></el-input>
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="链接文案" prop="info"> <el-form-item label="链接文案" prop="info">
<el-col :span="20"> <el-col :span="20">
<el-input v-model="linkForm.info" size="small" maxlength="20"></el-input> <el-input v-model="linkForm.info" size="small" maxlength="100"></el-input>
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="链接地址" prop="url"> <el-form-item label="链接地址" prop="url">
...@@ -165,19 +165,18 @@ ...@@ -165,19 +165,18 @@
</div> </div>
</template> </template>
<script> <script>
// import { mapGetters } from 'vuex'; import { mapGetters, mapMutations } from 'vuex';
import BreadCrumb from "@/components/breadcrumb.vue"; import BreadCrumb from "@/components/breadcrumb.vue";
import { doUpload, getFilePath } from "@/utils/qiniu-util"; import { doUpload, getFilePath } from "@/utils/qiniu-util";
import { validateWord } from "@/utils/validate.js"; import { validateWord } from "@/utils/validate.js";
import { openLoading, closeLoading } from "@/utils/utils"; // import { openLoading, closeLoading } from "@/utils/utils";
import { openLoading, closeLoading, betaHandle, timeHandle } from "@/utils/utils";
import * as commonUtil from "@/utils/utils"; import * as commonUtil from "@/utils/utils";
import { getPicaKFAccid, getPhomeDemain } from "@/utils"; import { getPicaKFAccid, getPhomeDemain } from "@/utils";
import UserInfo from "@/components/IM/user-info.vue"; import UserInfo from "@/components/IM/user-info.vue";
const CONTAINER_HEIGHT = 700; const CONTAINER_HEIGHT = 700;
let forwardMsgIntervalId = null; let forwardMsgIntervalId = null;
let sessionIntervalId = null; let sessionIntervalId = null;
let currentTimestamp = 0;
let currentContinueTimes = 0;
let continueIntervalId = null; let continueIntervalId = null;
let _this = null; let _this = null;
...@@ -190,13 +189,14 @@ export default { ...@@ -190,13 +189,14 @@ export default {
return { return {
curmbFirst: "云鹊客服", curmbFirst: "云鹊客服",
curmbSecond: "当前会话", curmbSecond: "当前会话",
// currentTimestamp: 0,
sendText: "", sendText: "",
sessionListData: { sessionListData: {
currentTimestamp: 0,
myTaskCount: 0, myTaskCount: 0,
sessionList: [], sessionList: [],
waitingTaskCount: 0 waitingTaskCount: 0
}, },
currentContinueTimes: 0,
currentSessionIndex: 0, // 当前会话序号 currentSessionIndex: 0, // 当前会话序号
currentSession: {}, currentSession: {},
currentTaskLogId: "", // 当前会话ID currentTaskLogId: "", // 当前会话ID
...@@ -227,7 +227,7 @@ export default { ...@@ -227,7 +227,7 @@ export default {
}, },
computed: { computed: {
// ...mapGetters(['stickerCacheMap']), ...mapGetters(['isFromAssignTask']),
canSend() { canSend() {
return !!this.sendText; return !!this.sendText;
} }
...@@ -320,6 +320,10 @@ export default { ...@@ -320,6 +320,10 @@ export default {
}, },
methods: { methods: {
//
...mapMutations(['SET_IS_FROM_ASSIGN_TASK']),
// 下拉刷新 // 下拉刷新
loadmore() { loadmore() {
console.log("in loadmore..."); console.log("in loadmore...");
...@@ -452,6 +456,7 @@ export default { ...@@ -452,6 +456,7 @@ export default {
) { ) {
content = JSON.parse(msg.content); content = JSON.parse(msg.content);
url = content.url; url = content.url;
text = content.name;
showType = 2; showType = 2;
} else { } else {
showType = 1; showType = 1;
...@@ -471,6 +476,11 @@ export default { ...@@ -471,6 +476,11 @@ export default {
const scrollBoxDom = document.querySelector('.scroll-box') const scrollBoxDom = document.querySelector('.scroll-box')
scrollBoxDom.scrollTop = 200000; scrollBoxDom.scrollTop = 200000;
}); });
this.currentContinueTimes = this.sessionListData.currentTimestamp - this.currentSession.handleStartTime;
continueIntervalId && clearInterval(continueIntervalId);
continueIntervalId = setInterval(() => {
this.currentContinueTimes += 1000;
}, 1000);
} else if (directFlag === 2) { } else if (directFlag === 2) {
this.messageList.push(...cMessageList); this.messageList.push(...cMessageList);
} else { } else {
...@@ -522,6 +532,7 @@ export default { ...@@ -522,6 +532,7 @@ export default {
fetchOneTask() { fetchOneTask() {
this.GET("/im/session/kf/fetchOneTask").then(res => { this.GET("/im/session/kf/fetchOneTask").then(res => {
if (res.code === "000000") { if (res.code === "000000") {
this.SET_IS_FROM_ASSIGN_TASK(true);
this.currentTaskLogId = ""; this.currentTaskLogId = "";
this.getSessionList(); this.getSessionList();
} else { } else {
...@@ -539,21 +550,27 @@ export default { ...@@ -539,21 +550,27 @@ export default {
if (res.code === "000000") { if (res.code === "000000") {
console.log("in getSessionList", res); console.log("in getSessionList", res);
this.sessionListData = res.data || { this.sessionListData = res.data || {
currentTimestamp: 0,
myTaskCount: 0, myTaskCount: 0,
sessionList: [], sessionList: [],
waitingTaskCount: 0 waitingTaskCount: 0
}; };
let sLength = this.sessionListData.sessionList.length; let sLength = this.sessionListData.sessionList.length;
let cIndex = sLength - 1;
if(!this.isFromAssignTask) {
cIndex = 0;
}
// 第一次进入页面 // 第一次进入页面
if (sLength && !this.currentTaskLogId) { if (sLength && !this.currentTaskLogId) {
// this.currentSession = this.sessionListData.sessionList[0]; // this.currentSession = this.sessionListData.sessionList[0];
// this.currentSessionIndex = 0; // this.currentSessionIndex = 0;
this.currentSession = this.sessionListData.sessionList[sLength - 1]; this.currentSession = this.sessionListData.sessionList[cIndex];
this.currentSessionIndex = sLength - 1; this.currentSessionIndex = cIndex;
this.currentTaskLogId = this.currentSession.taskLogId; this.currentTaskLogId = this.currentSession.taskLogId;
this.currentToAccId = this.currentSession.toAccId; this.currentToAccId = this.currentSession.toAccId;
this.getDoctorInfo(this.currentToAccId); this.getDoctorInfo(this.currentToAccId);
this.getMSGHistory(this.currentSession); this.getMSGHistory(this.currentSession);
this.SET_IS_FROM_ASSIGN_TASK(false);
} }
if (sLength) { if (sLength) {
this.convertSessions(this.sessionListData.sessionList); this.convertSessions(this.sessionListData.sessionList);
...@@ -582,7 +599,7 @@ export default { ...@@ -582,7 +599,7 @@ export default {
text = cc.title; text = cc.title;
// } else if (cc.showType == 18) { // } else if (cc.showType == 18) {
} else { } else {
text = cc.content || ""; text = cc.content || cc.name;
} }
// if (cc.showType != 8) { // if (cc.showType != 8) {
// text = `${text}`; // text = `${text}`;
...@@ -698,6 +715,7 @@ export default { ...@@ -698,6 +715,7 @@ export default {
// 上传文件 // 上传文件
beforeUploadFile(file) { beforeUploadFile(file) {
console.log("file", file); console.log("file", file);
doUpload( doUpload(
_this, _this,
file, file,
...@@ -792,7 +810,12 @@ export default { ...@@ -792,7 +810,12 @@ export default {
}); });
} }
}); });
} },
// 文件大小单位转换
fileSizeChange(val) {
return betaHandle(val)
},
}, },
beforeDestroy() { beforeDestroy() {
......
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
html,body{
height:100%;
}
body,ul,li,a,p,div{padding:0px; margin:0px; font-size:14px;}
#wrap{
overflow: hidden;
width:100%;
}
#main{
height:2944px;
top:0;
position: relative;
}
.page{
width:100%;
margin:0;
}
#page1{
background:#E4E6CE;
}
#page2{
background:#6CE26C;
}
#page3{
background:#BF4938;
}
#page4{
background:#2932E1;
}
</style>
<!-- <script src="js/jquery-1.8.3.js" type="text/javascript" charset="utf-8"></script> -->
</head>
<body>
<div id="wrap">
<div id="main">
<div id="page1" class="page"></div>
<div id="page2" class="page"></div>
<div id="page3" class="page"></div>
<div id="page4" class="page"></div>
</div>
</div>
<script type="text/javascript">
var wrap = document.getElementById("wrap");
var main = document.getElementById("main");
var hei = document.body.clientHeight;
wrap.style.height = hei + "px";
var obj = document.getElementsByTagName("div");
for(var i=0;i<obj.length;i++){
if(obj[i].className == 'page'){
obj[i].style.height = hei + "px";
}
}
//如果不加时间控制,滚动会过度灵敏,一次翻好几屏
var startTime = 0, //翻屏起始时间
endTime = 0,
now = 0;
//浏览器兼容
if ((navigator.userAgent.toLowerCase().indexOf("firefox")!=-1)){
document.addEventListener("DOMMouseScroll",scrollFun,false);
}
else if (document.addEventListener) {
document.addEventListener("mousewheel",scrollFun,false);
}
else if (document.attachEvent) {
document.attachEvent("onmousewheel",scrollFun);
}
else{
document.onmousewheel = scrollFun;
}
//滚动事件处理函数
function scrollFun(event){
startTime = new Date().getTime();
var delta = event.detail || (-event.wheelDelta);
//mousewheel事件中的 “event.wheelDelta” 属性值:返回的如果是正值说明滚轮是向上滚动
//DOMMouseScroll事件中的 “event.detail” 属性值:返回的如果是负值说明滚轮是向上滚动
if ((endTime - startTime) < -1000){
if(delta>0 && parseInt(main.offsetTop) > -(hei*3)){
//向下滚动
now = now - hei;
toPage(now);
}
if(delta<0 && parseInt(main.offsetTop) < 0){
//向上滚动
now = now + hei;
toPage(now);
}
endTime = new Date().getTime();
}
else{
event.preventDefault();
}
}
function toPage(now){
// $("#main").animate({top:(now+'px')},1000); //jquery实现动画效果
setTimeout("main.style.top = now + 'px'",1000); //javascript 实现动画效果
}
</script>
</body>
</html>
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
</div> </div>
</template> </template>
<script> <script>
import { mapGetters, mapMutations } from 'vuex';
import BreadCrumb from "@/components/breadcrumb.vue"; import BreadCrumb from "@/components/breadcrumb.vue";
import { doUpload, getFilePath } from "@/utils/qiniu-util"; import { doUpload, getFilePath } from "@/utils/qiniu-util";
import { validateWord } from "@/utils/validate.js"; import { validateWord } from "@/utils/validate.js";
...@@ -73,6 +74,7 @@ export default { ...@@ -73,6 +74,7 @@ export default {
}, },
methods: { methods: {
...mapMutations(['SET_IS_FROM_ASSIGN_TASK']),
// 获取数据 // 获取数据
getListData() { getListData() {
this.loading = true; this.loading = true;
...@@ -94,6 +96,7 @@ export default { ...@@ -94,6 +96,7 @@ export default {
getNextSession() { getNextSession() {
this.GET('/im/session/kf/fetchOneTask').then((res) => { this.GET('/im/session/kf/fetchOneTask').then((res) => {
if( res.code === '000000') { if( res.code === '000000') {
this.SET_IS_FROM_ASSIGN_TASK(true);
this.$router.push({ path: `/current-session-list` }); this.$router.push({ path: `/current-session-list` });
} else { } else {
this.$message({ this.$message({
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册