提交 fccbd2cb 作者: 毛细亚

合并分支 '6.3' 到 'release'

6.3

查看合并请求 !11
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9"/><title>company_app</title><script src="https://g.alicdn.com/dingding/dinglogin/0.0.5/ddLogin.js"></script><script defer="defer" src="static/js/chunk-vendors.b6398f5b.js"></script><script defer="defer" src="static/js/app.2b8991ee.js"></script><link href="static/css/chunk-vendors.8e901099.css" rel="stylesheet"><link href="static/css/app.3be39905.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but company_app doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="favicon.ico">
<!-- HTTP 1.1 -->
<meta http-equiv="pragma" content="no-cache">
<!-- HTTP 1.0 -->
<meta http-equiv="cache-control" content="no-cache">
<!-- Prevent caching at the proxy server -->
<meta http-equiv="expires" content="0">
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />
<title>company_app</title>
<!-- <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0,shrink-to-fit=no,user-scalable=no"> -->
<script src="https://g.alicdn.com/dingding/dinglogin/0.0.5/ddLogin.js"></script>
<script defer src="static/js/chunk-vendors.js"></script><script defer src="static/js/app.js"></script></head>
<body>
<noscript>
<strong>We're sorry but company_app doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
</body>
</html>
......@@ -144,7 +144,7 @@ export default {
// 监听用户信息变化,只在初始化时获取一次任务数据
userInfo: {
handler(newVal, oldVal) {
if (newVal && newVal.id && (!oldVal || !oldVal.id)) {
if (newVal && newVal.id && (!oldVal || !oldVal.id) && this.token) {
console.log('用户信息初始化完成,获取任务数据:', newVal)
// 只在用户信息第一次设置时获取任务数据
this.getTaskUnReadData()
......@@ -178,7 +178,6 @@ export default {
}
},
mounted() {
this.initVuexValue()
// 页面刷新时从 Cookie 恢复 token 到 store
const cookieToken = Cookies.get('token')
if (cookieToken && !this.token) {
......@@ -196,12 +195,11 @@ export default {
// 监听窗口大小变化
window.addEventListener('resize', this.handleResize)
// 初始检查
this.$nextTick(() => {
this.checkMenuOverflow()
})
this.initVuexValue()
})
},
beforeDestroy() {
window.removeEventListener('resize', this.handleResize)
......
......@@ -398,3 +398,19 @@ export function markUseful(data) {
data
})
}
// 跨主体分组列表
export function cross_corp_robot_knowledge_group_index(data) {
return request({
url: returnApi('/corp_cross_knowledge_group/index'),
method: 'post',
data
})
}
// 跨主体知识库分组列表
export function cross_corp_robot_knowledge_group_getList(data) {
return request({
url: returnApi('/corp_cross_knowledge_base/getList'),
method: 'post',
data
})
}
\ No newline at end of file
......@@ -125,6 +125,20 @@ export function getClientStatus(data) {
data
})
}
// 获取客服号绑定的客服人员
export function getUserList(data) {
return request({
url: '/api/corp/getCserByUser',
method: 'post',
data
})
}
// 选择客服人员登录
export function cserSelected(data) {
return request({
url: '/api/sidebar_login/cserSelected',
method: 'post',
data
})
}
......@@ -86,7 +86,7 @@ const routes = [
{
path: '/login',
name: 'login',
component: () => import('../views/login.vue')
component: () => import('../views/newLogin.vue')
},
]
const router = new VueRouter({
......
......@@ -44,6 +44,7 @@
</div>
</div>
<div class="activeList">
<div v-if=" giftInfo.rule && giftInfo.rule.level_attribute && giftInfo.rule.level_attribute.length > 0">
<div v-for="(item,index) in giftInfo.rule.level_attribute" :key="index">
<div class="activeListItem">
<div class="activeListItemTitle rowFlex spaceBetween columnCenter">
......@@ -112,6 +113,7 @@
</div>
<div class="allIcon rowFlex allCenter">合计:{{ allpoints }} 积分</div>
</div>
</div>
<div class="activeItem rowFlex" style="margin-top:20px;">
<div class="activeLabel" style="text-align:right;">备注</div>
<div class="activeValue">
......
......@@ -3,15 +3,12 @@
<div ref="giftList" class="gift-list" @scroll="handleScroll">
<div v-for="item in giftList" :key="item._id" class="gift-item">
<div class="gift-info">
<div class="rowFlex spaceBetween columnCenter">
<div class="gift-name hidden">{{ item.gift_package_name }}</div>
<div class="gift-time">{{ item.send_time }}</div>
</div>
<div class="gift-code">
<span class="giftCodeText">{{ item.code }}</span>
</div>
<div v-if="item.gift_package_group_name ">分组: {{ item.gift_package_group_name }}</div>
<div>礼包名称: {{ item.gift_package_name }}</div>
<div>发送时间: {{ item.send_time }}</div>
<div>礼包码: {{ item.code }}</div>
<div class="rowFlex spaceBetween columnCenter gift-sender">
<div>发送客服:{{ item.cser_name }}</div>
<div>发送客服: {{ item.cser_name }}</div>
<i class="el-icon-document-copy" style="cursor: pointer;" @click="handleCopy(item.code)"></i>
</div>
</div>
......@@ -111,24 +108,16 @@ import Clipboard from 'clipboard'
border: 1px solid #E5E6EB;
margin-bottom:12px;
.gift-info {
.gift-name {
font-weight: 400;
font-size: 14px;
color: #4E5969;
text-align: left;
font-style: normal;
width: calc(100% - 180px);
div{
line-height: 26px;
}
.gift-time {
font-family: PingFangSC, PingFang SC;
.gift-name {
font-weight: 400;
font-size: 14px;
color: #4E5969;
text-align: left;
font-style: normal;
width: 150px;
}
.gift-code {
display: flex;
align-items: center;
......@@ -140,7 +129,6 @@ import Clipboard from 'clipboard'
color: #323335;
text-align: justify;
font-style: normal;
margin: 10px 0;
span {
color: #323335;
font-size: 14px;
......@@ -171,7 +159,7 @@ import Clipboard from 'clipboard'
text-align: justify;
font-style: normal;
i{
color: #409EFF;
color: #00BF8A;
font-size: 14px;
}
}
......
......@@ -90,8 +90,13 @@
}
},
selectChange(value) {
const valueItem = this.searchUserOption.find(item => item.role_id == value || item.id == value)
console.log(valueItem, value)
const valueItem = this.searchUserOption.find(item => {
if(item.role_id){
return item.role_id == value
}else{
return item.id == value
}
})
this.$emit('result', value, valueItem)
},
requestAccountList() {
......
<template>
<div class="vipToolsContent">
<div class="gameList">
<!-- VIP 自助工具 -->
<div class="gameListItem rowFlex columnCenter spaceBetween" v-if="false">
<!-- VIP 自助工具 暂时不显示 -->
<div class="gameListItemApp rowFlex columnCenter spaceBetween" v-if="false">
<p class="rowFlex columnCenter">
<img src="@/assets/icon/vipIcon.svg" alt="vipIcon" style="width: 16px;height: 16px;margin-right: 5px;">
VIP自助工具</p>
......@@ -12,8 +12,8 @@
@click="sendVipGift"
>发送</el-button>
</div>
<!-- -->
<div class="gameListItem rowFlex columnCenter spaceBetween">
<!-- 自助链接(举报、申诉、礼包申请) -->
<div class="gameListItemApp rowFlex columnCenter spaceBetween">
<p class="rowFlex columnCenter">
<i class="el-icon-s-operation" style="font-size:16px;margin-right:5px;"></i>
自助链接(举报、申诉、礼包申请)</p>
......@@ -50,8 +50,11 @@
<div
v-for="(items,indexs) in item.children"
:key="indexs"
class="gameListItem rowFlex columnCenter spaceBetween gameListItemAc"
class="gameListItemChange"
>
<div class="gameListItemApp gameListItemAppAC" >
<p v-if="items.gift_package_group_name" class="gameName">{{ items.gift_package_group_name }}</p>
<div class="rowFlex columnCenter spaceBetween" style="margin-left: 20px;">
<p class="rowFlex columnCenter spaceBetween">
<el-popover
placement="top"
......@@ -86,6 +89,8 @@
>发送礼包码</el-button>
</div>
</div>
</div>
</div>
<div
v-else
class="rowFlex allCenter"
......@@ -227,6 +232,7 @@
item.label = item.main_game_name + '/' + item.main_game_id
item.value = item.main_game_id
item.children = item.gift_package_list
item.group_name = item.gift_package_group_name
})
},
// 发送渠道
......@@ -346,9 +352,9 @@
cursor: pointer;
margin: 10px 0 10px 0;
}
.gameListItem {
.gameListItemApp {
width: 100%;
height: 40px;
padding-left: 20px;
.gameName{
max-width: 120px;
overflow: hidden;
......@@ -367,7 +373,7 @@
cursor: pointer;
}
}
.gameListItemAc {
.gameListItemAppAC {
background: #f7f8fa;
}
}
......
......@@ -27,7 +27,7 @@
</el-popover>
<div class="rowFlex titleFixed columnCenter">
<div class="num">{{ items.message.attachments.length > 1 ? `+${items.message.attachments.length - 1}条` : '' }}</div>
<div class="num">{{items.message && items.message.attachments && items.message.attachments.length > 1 ? `+${items.message.attachments.length - 1}条` : '' }}</div>
</div>
<el-collapse-item title="" :name="items._id" class="contentItem">
......@@ -291,7 +291,7 @@ export default {
}
procedure_group(data).then((res) => {
this.loading = false
if (res.data.data && res.data.data.length > 0) {
if (res.data && res.data.data && res.data.data.length > 0) {
this.groupList = res.data.data.map((item, index) => {
item.label = item.group_name
item.value = item._id
......
......@@ -20,7 +20,7 @@
v-model="collapseValue"
@change="handleChange(item,$event)"
>
<el-collapse-item :name="item.order_id">
<el-collapse-item :name="item.order_id || '--'">
<template slot="title">
<div class="orderDetailsTitle">
<div class="money rowFlex spaceBetween">
......
......@@ -190,8 +190,8 @@ export default {
return {
sanjiaoxing,
loading: false,
activeType: 4,
activeTypeStr: '4',
activeType: 2,
activeTypeStr: '2',
dateDetailsValue: [],
isloadMore: true,
collapseValue: ['1'],
......@@ -259,10 +259,10 @@ export default {
mounted() {
this.payTypeList()
this.searchDate = [
this.$moment().subtract(1, 'day').format('YYYY-MM-DD'),
this.$moment().format('YYYY-MM-DD'),
this.$moment().format('YYYY-MM-DD')
]
this.timerData.order_time_start = this.$moment().subtract(1, 'day').format('YYYY-MM-DD')
this.timerData.order_time_start = this.$moment().format('YYYY-MM-DD')
this.timerData.order_time_end = this.$moment().format('YYYY-MM-DD')
},
methods: {
......
......@@ -28,20 +28,15 @@
:active-name="activeName"
/>
</el-tab-pane>
<!-- <el-tab-pane
v-if="workerRouter==='game' && messageSource === 'company_work'"
label="AI微言"
name="aiLibrary"
<el-tab-pane
label="跨主体知识库"
name="robotLibrary"
>
<template slot="label">
AI微言
<span class="bate">beta</span>
</template>
<aiLibrary
v-if="activeName === 'aiLibrary'"
<crossLibrary
v-if="activeName === 'robotLibrary'"
:active-name="activeName"
/>
</el-tab-pane> -->
</el-tab-pane>
</el-tabs>
</div>
</div>
......@@ -51,6 +46,7 @@
import skillCompany from './components/skill/skillCompany.vue'
import skillPersonal from './components/skill/skillPersonal.vue'
import skillLibrary from './components/skill/skillLibrary.vue'
import crossLibrary from './components/skill/crossLibrary.vue'
import { mapActions } from 'vuex'
export default {
name: 'quickReply',
......@@ -58,7 +54,7 @@ export default {
skillCompany,
skillPersonal,
skillLibrary,
// aiLibrary
crossLibrary
},
data() {
return {
......
......@@ -123,7 +123,7 @@
<div v-for="(item, index) in taskList" :key="index" class="chatListItem columnCenter spaceBetween"
:class="item.id === taskDetails.id ? 'chatListItemActive' : ''" @click="selectTaskItem(item)">
<div class="top rowFlex spaceBetween">
<div v-if="item.username && item.username.split('\n').length > 0" class="value">
<div v-if="item.username && item.username.split('\n') && item.username.split('\n').length > 0" class="value">
<div v-if="item.username.split('\n').length <= 1" class="rowFlex columnCenter">
<div v-for="(items, indexs) in item.username.split('\n')" :key="indexs"
class="rowFlex columnCenter userInfoStyle">
......@@ -139,7 +139,7 @@
<span class="textHidden" style="max-width:150px;">{{ items }}</span>
</p>
</div>
<el-button slot="reference" type="text">{{ item.username.split("\n").length
<el-button slot="reference" type="text">{{ item.username && item.username.split("\n") && item.username.split("\n").length?item.username.split("\n").length : 0
}}个</el-button>
</el-popover>
</div>
......@@ -635,14 +635,14 @@ export default {
const res = await taskIndex(data)
this.loading = false
if (this.pageInfo.page == 1) {
this.taskList = res.data.data
this.taskList = res.data.data || []
} else {
this.taskList = removeDp(this.taskList, res.data.data, 'id')
}
// if (!this.taskDetails.id && this.taskList.length > 0) {
// this.set_taskDetails(this.taskList[0])
// }
if (res.data.data.length < 20) {
if (res?.data?.data?.length < 20) {
this.isMoreRecord = false
} else {
this.isMoreRecord = true
......
......@@ -35,7 +35,7 @@
v-model="collapseValue"
@change="handleChange(item,$event)"
>
<el-collapse-item :name="item.order_id">
<el-collapse-item :name="item.order_id || '--'">
<template slot="title">
<div class="orderDetailsTitle">
<div class="money rowFlex spaceBetween">
......
......@@ -22,7 +22,7 @@ import roleInfo from '@/views/roleInfo.vue'
import orderList from '@/views/orderList.vue'
import violationRecord from '@/views/ViolationRecord.vue'
import { mapState, mapMutations } from 'vuex'
import Cookies from 'js-cookie'
export default {
name: 'userInfo',
components: {
......@@ -44,7 +44,23 @@ export default {
created() {
// 初始化 vuex 中的值
},
mounted() {
this.$nextTick(() => {
this.initVuexValue()
})
},
methods: {
...mapMutations('user', ['set_userInfo']),
initVuexValue(){
const userinfo = {
cser_id: Cookies.get('cser_id'),
cser_name: Cookies.get('cser_name'),
username: Cookies.get('cser_name'),
id: Cookies.get('cser_id'),
}
this.set_userInfo(userinfo)
}
}
}
</script>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论