提交 4813cf77 作者: 毛细亚

合并分支 '1.2' 到 'release'

1.2

查看合并请求 !5
<!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.101d7d80.js"></script><link href="static/css/chunk-vendors.8e901099.css" rel="stylesheet"><link href="static/css/app.1b60c483.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"><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.72a90e47.js"></script><script defer="defer" src="static/js/app.003145b5.js"></script><link href="static/css/chunk-vendors.8e901099.css" rel="stylesheet"><link href="static/css/app.8a15faf7.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
# 客服休息状态功能文档
本文档描述了客服休息状态功能的实现方法和使用说明,该功能支持客服在忙碌或休息时暂时停止接收新消息。
## 功能概述
客服休息状态功能允许客服在午休或临时有事时设置自己为"休息中"状态,以便合理安排工作时间。同时,还提供了发送评价功能,方便客服向客户发送评价请求。
## 相关API
### 1. 获取客服休息状态
```javascript
import { getClientStatus } from '@/api/user.js'
// 获取客服休息状态
const response = await getClientStatus()
if (response.status_code === 1) {
const status = response.data.client_online_status
// status 可能的值:
// - online: 在线
// - offline: 离线
// - rest: 休息中
}
```
### 2. 开始休息
```javascript
import { client_session_rest } from '@/api/user.js'
// 开始休息
const response = await client_session_rest()
if (response.status_code === 1) {
// 休息开始成功
// 可以更新界面显示为"休息中"状态
}
```
### 3. 结束休息
```javascript
import { finishRest } from '@/api/user.js'
// 结束休息
const response = await finishRest()
if (response.status_code === 1) {
// 休息结束成功
// 可以更新界面显示为"在线"状态
}
```
### 4. 发送评价
```javascript
import { sendComment } from '@/api/user.js'
import { sendChatMessage } from '@/utils/index.js'
// 发送评价
const response = await sendComment({
corp_id: '企业ID',
external_userid: '外部联系人ID',
userid: '客服ID'
})
if (response.status_code === 1 && response.data.news) {
// 使用企业微信JSSDK发送评价
const result = await sendChatMessage(response.data.news, 'link')
if (result.success) {
// 评价发送成功
}
}
```
## 会话内容存档相关API
### 1. 检查客户是否同意聊天内容存档
```javascript
import { checkSingleAgree } from '@/api/user.js'
// 检查客户是否同意聊天内容存档
const response = await checkSingleAgree({
external_userid: '外部联系人ID',
userid: '客服ID'
})
if (response.status_code === 1) {
const agreeStatus = response.data.agree_status
// agreeStatus 可能的值:
// - Agreen: 已同意
// - Disagree: 未同意
}
```
### 2. 检查客服号是否开启会话内容存档
```javascript
import { checkUserPermit } from '@/api/user.js'
// 检查客服号是否开启会话内容存档
const response = await checkUserPermit({
userid: '客服ID'
})
if (response.status_code === 1) {
const hasPermit = response.data.has_permit
// hasPermit: true 已授权, false 未授权
}
```
### 3. 同步智能标签
```javascript
import { remarkSessionIntelTag } from '@/api/user.js'
// 同步智能标签
await remarkSessionIntelTag({
corp_id: '企业ID',
external_userid: '外部联系人ID',
userid: '客服ID'
})
```
## 使用示例
### 在Vue组件中整合所有功能
```javascript
import { mapState, mapMutations, mapActions } from 'vuex'
import {
getClientStatus,
remarkSessionIntelTag,
finishRest,
client_session_rest,
checkSingleAgree,
checkUserPermit,
sendComment
} from '@/api/user.js'
import { sendChatMessage } from '@/utils/index.js'
export default {
data() {
return {
// 相关状态
agreeStatus: '', // 用户是否同意聊天内容存档
hasPermit: false // 客服号是否开启会话内容存档权限
}
},
computed: {
...mapState('user', ['client_online_status', 'corp_id', 'external_userid', 'userid']),
// 状态文本转换
clientStatusText() {
const statusMap = {
'online': '在线',
'offline': '离线',
'rest': '休息中'
}
return statusMap[this.client_online_status] || '未知'
}
},
created() {
// 初始化企业微信SDK
this.initializeWecom()
// 获取各种状态
this.getInitialData()
},
methods: {
...mapActions('user', ['initWecom']),
// 获取初始数据
async getInitialData() {
// 实现获取状态逻辑
},
// 开始休息
async handleStartRest() {
// 实现开始休息逻辑
},
// 结束休息
async handleFinishRest() {
// 实现结束休息逻辑
},
// 发送评价
async handleSendComment() {
// 实现发送评价逻辑
}
}
}
```
## 界面展示
客服状态显示和按钮应该包含以下元素:
1. 当前状态显示:显示客服当前是"在线"、"离线"还是"休息中"
2. 休息相关按钮:
- 在线状态下显示"开始休息"按钮
- 休息中状态显示"结束休息"按钮
3. 发送评价按钮:用于向客户发送评价请求
4. 会话内容存档状态显示:
- 显示客户是否已开启会话内容存档
- 显示客服号是否已授权会话内容存档
## 注意事项
1. 客服在"休息中"状态时不能直接下线,必须先结束休息
2. 开始休息按钮悬停时应显示提示文字:"午休或者临时有事可点击休息"
3. 使用企业微信JSSDK前需确保已初始化成功
4. 所有状态变更应同步更新到Vuex store,以便在多个组件中共享
\ No newline at end of file
{
"recommendations": ["stagewise.stagewise-vscode-extension"]
}
\ No newline at end of file
......@@ -36,8 +36,9 @@
},
"devDependencies": {
"@babel/core": "^7.12.16",
"@stagewise/toolbar": "^0.4.4",
"@stagewise/toolbar-vue": "^0.4.4",
"@stagewise-plugins/vue": "^0.4.6",
"@stagewise/toolbar": "^0.4.8",
"@stagewise/toolbar-vue": "^0.4.8",
"@vue/cli-plugin-babel": "~5.0.0",
"@vue/cli-plugin-router": "~5.0.0",
"@vue/cli-plugin-vuex": "~5.0.0",
......
......@@ -84,12 +84,15 @@ importers:
'@babel/core':
specifier: ^7.12.16
version: 7.27.1
'@stagewise-plugins/vue':
specifier: ^0.4.6
version: 0.4.6(@stagewise/toolbar@0.4.8)
'@stagewise/toolbar':
specifier: ^0.4.4
version: 0.4.4
specifier: ^0.4.8
version: 0.4.8
'@stagewise/toolbar-vue':
specifier: ^0.4.4
version: 0.4.4(vue@2.7.16)
specifier: ^0.4.8
version: 0.4.8(vue@2.7.16)
'@vue/cli-plugin-babel':
specifier: ~5.0.0
version: 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.5.14)(lodash@4.17.21)(sass-loader@16.0.5(node-sass@4.14.1)(sass@1.89.0)(webpack@5.99.8))(vue-template-compiler@2.7.16)(vue@2.7.16)(webpack-sources@3.2.3))(core-js@3.42.0)(vue@2.7.16)
......@@ -809,13 +812,18 @@ packages:
'@soda/get-current-script@1.0.2':
resolution: {integrity: sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==}
'@stagewise/toolbar-vue@0.4.4':
resolution: {integrity: sha512-0+r8SGExjz3+A64aMGgbg0clESg6yxZPwlO1aY+3bIwBjE+F/V3MetRE+5b7AuRKqEoz8GUXnll5O/zHIL+I3Q==}
'@stagewise-plugins/vue@0.4.6':
resolution: {integrity: sha512-Y/cdDLXDN2cusvpmFYxbQT1DEW1fYzoFjmsnXBth52sSLYNc83XXMTXt2kvYSGWOW+ZxM1Dj+T4eE9bY8b/QSA==}
peerDependencies:
'@stagewise/toolbar': 0.4.8
'@stagewise/toolbar-vue@0.4.8':
resolution: {integrity: sha512-Zvxz59apepocu2cOD8UqUWIF7fIABGr+DNDSmz6Kp2nf1APNmfiK3QJ52rI2PfVDG9jaSE56EfYUA0t1xFJLYw==}
peerDependencies:
vue: '>=3.0.0'
'@stagewise/toolbar@0.4.4':
resolution: {integrity: sha512-hVxGqeYFx780m9SIv+YqhHx4o/fq94pMwr8OoemOCyOKozCGkvSIjpqkONvUyY5yWR+AVcop2p79LsSTdA6Etw==}
'@stagewise/toolbar@0.4.8':
resolution: {integrity: sha512-0ByvC4hYdHHf3rK5M+xSR9mipHYr8naNn2OgDBtv4DE0SoSCr08KfQtZ6VpsBNbOW/Mh1Y4c/AoWcyCTOc2ocA==}
'@trysound/sax@0.2.0':
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
......@@ -1433,6 +1441,9 @@ packages:
brace-expansion@1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
brace-expansion@1.1.12:
resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
braces@3.0.3:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
......@@ -6275,12 +6286,16 @@ snapshots:
'@soda/get-current-script@1.0.2': {}
'@stagewise/toolbar-vue@0.4.4(vue@2.7.16)':
'@stagewise-plugins/vue@0.4.6(@stagewise/toolbar@0.4.8)':
dependencies:
'@stagewise/toolbar': 0.4.8
'@stagewise/toolbar-vue@0.4.8(vue@2.7.16)':
dependencies:
'@stagewise/toolbar': 0.4.4
'@stagewise/toolbar': 0.4.8
vue: 2.7.16
'@stagewise/toolbar@0.4.4': {}
'@stagewise/toolbar@0.4.8': {}
'@trysound/sax@0.2.0': {}
......@@ -7324,6 +7339,12 @@ snapshots:
balanced-match: 1.0.2
concat-map: 0.0.1
brace-expansion@1.1.12:
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
optional: true
braces@3.0.3:
dependencies:
fill-range: 7.1.1
......@@ -8689,7 +8710,7 @@ snapshots:
fs.realpath: 1.0.0
inflight: 1.0.6
inherits: 2.0.4
minimatch: 3.1.2
minimatch: 3.0.8
once: 1.4.0
path-is-absolute: 1.0.1
optional: true
......@@ -9625,7 +9646,7 @@ snapshots:
minimatch@3.0.8:
dependencies:
brace-expansion: 1.1.11
brace-expansion: 1.1.12
optional: true
minimatch@3.1.2:
......@@ -11776,7 +11797,7 @@ snapshots:
wide-align@1.1.5:
dependencies:
string-width: 4.2.3
string-width: 1.0.2
optional: true
wildcard@2.0.1: {}
......
......@@ -98,6 +98,10 @@ export default {
path: '/quickSendGame'
},
// {
// label: '任务列表',
// path: '/taskList'
// },
// {
// label: '通讯录',
// path: '/addressBook'
// },
......
......@@ -94,7 +94,7 @@ export function sendComment(data) {
export function client_session_rest(data) {
// 发送一个post请求,请求的url为'/sidebar/client_session/rest',请求的数据为data
return request({
url: '/sidebar/client_session/rest',
url: '/sidebar/work_wei_xin/rest',
method: 'post',
data
})
......@@ -120,7 +120,7 @@ export function remarkSessionIntelTag(data) {
// 获取客户号的休息状态
export function getClientStatus(data) {
return request({
url: '/sidebar/work_wei_xin/getClientStatus',
url: '/sidebar/work_wei_xin/info',
method: 'post',
data
})
......
......@@ -225,3 +225,21 @@ export function zyouGetMemberLink(data) {
data
})
}
// 我的任务获取红点数组
export function getTaskUnReadData(data) {
return request({
url: returnApi('/corp_zyou_bind/getTaskUnReadData'),
method: 'post',
data
})
}
// 我的任务小时红点数字
export function clearTaskUnReadData(data) {
return request({
url: returnApi('/corp_zyou_bind/clearTaskUnReadData'),
method: 'post',
data
})
}
\ No newline at end of file
......@@ -363,19 +363,13 @@
padding-bottom: 120px;
.input {
width: 250px;
::v-deep .el-input__inner {
width: vw(250);
}
::v-deep .el-button {
width: vw(76);
}
}
.contnet {
width: 100%;
height: auto;
margin-top: 20px;
.contnetLeft {
width: vw(500);
width: auto;
height: 600px;
border-radius: 8px;
border: 1px solid rgba(0, 0, 0, 0.06);
......@@ -384,7 +378,7 @@
padding-top: 40px;
}
.contnetRight {
width: vw(260);
width: 260px;
height: 600px;
border-radius: 8px;
border: 1px solid rgba(0, 0, 0, 0.06);
......
......@@ -62,7 +62,7 @@ function createScrollHandler(el, binding, vnode) {
const options = el.__infinite_scroll_options;
// 检查是否禁用
if (options.disabled) return;
if (options && options.disabled) return;
const scrollContainer = el.__infinite_scroll_container;
const isBottom = isScrollBottom(scrollContainer, el, options.distance);
......
......@@ -26,16 +26,26 @@ Vue.use(globalComponent).use(permission).use(clickagain).use(loadmore).use(scrol
import '@/utils/vconsoleCleanup'
// 开发环境下初始化 stagewise 工具栏
// if (process.env.NODE_ENV === 'development') {
// import('@stagewise/toolbar').then(({ initToolbar }) => {
// const stagewiseConfig = {
// plugins: []
// };
// initToolbar(stagewiseConfig);
// }).catch(err => {
// console.error('Failed to initialize stagewise toolbar:', err);
// });
// }
if (process.env.NODE_ENV === 'development') {
import('@stagewise/toolbar-vue').then(({ StagewiseToolbar }) => {
import('@stagewise-plugins/vue').then(({ VuePlugin }) => {
const stagewiseConfig = {
plugins: [VuePlugin]
};
// 动态创建并挂载 StagewiseToolbar 组件
const ToolbarConstructor = Vue.extend({
render(h) {
return h(StagewiseToolbar, { props: { config: stagewiseConfig } });
}
});
const toolbarInstance = new ToolbarConstructor();
toolbarInstance.$mount();
document.body.appendChild(toolbarInstance.$el);
});
}).catch(err => {
console.error('Failed to initialize stagewise toolbar:', err);
});
}
// 开发环境不收集日志
if (process.env.NODE_ENV !== 'development') {
......
......@@ -11,6 +11,7 @@ import violationRecord from '../views/ViolationRecord.vue'
import taskRecord from '../views/taskRecord.vue'
import mailList from '@/views/mailList.vue'
import quickSendGame from '@/views/quickSendGame.vue'
// import taskList from '@/views/taskList.vue'
import Cookies from 'js-cookie'
import store from '@/store'
Vue.use(VueRouter)
......@@ -77,6 +78,11 @@ const routes = [
name: 'quickSendGame',
component: quickSendGame
},
// {
// path: '/taskList',
// name: 'taskList',
// component: taskList
// },
{
path: '/login',
name: 'login',
......
......@@ -14,6 +14,7 @@ const state = {
send_game_log: null, // 转游发送渠道新增日志发送信息
chatUserInfo: {}, // 当前选中的用户的详情
viewLoading:false, // 查看用户详情的时候 加载状态
taskDetails: {}, // 任务详情
}
const mutations = {
......@@ -34,6 +35,9 @@ const mutations = {
},
set_viewLoading(state, data) {
state.viewLoading = data
},
set_taskDetails(state, data) {
state.taskDetails = data
}
}
......
......@@ -31,6 +31,7 @@ const state = {
},
weixin_blongs_id_list:[],
isWecomSDKReady: false, // 添加企业微信 SDK 就绪状态
client_online_status: '', // 客服休息状态: online上线 offline下线 rest休息中
// 六子的 用户id wm5rUgMgAAjqjOcqp8i3lEhFZDQieWug
// 我的 userid JinDuoXia cser_id 4090 corp_id wweaefe716636df3d1 cser_id 4090 token token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJpc3MiOjQwOTAsImlhdCI6MTc0NzgxMjMxMiwiZXhwIjoxNzQ4NDE3MTEyLCJuYmYiOjE3NDc4MTIzMTIsInN1YiI6InRva2Vu6K6k6K-BIiwianRpIjoiMjBkOTY3MDZiYzI1MDdmY2MxOWI2MjU1YTM0YWQ3M2YifQ.yX7E7QHV7x2ubpa8iK3Avy794EiHNCaW2CtB4A4UQWo
}
......@@ -73,6 +74,9 @@ const mutations = {
set_isWecomSDKReady(state, status) {
state.isWecomSDKReady = status
},
set_client_online_status(state, status) {
state.client_online_status = status
},
}
const actions = {
......
......@@ -700,7 +700,6 @@ li {
/* ----------------- el-collapse 组件全局样式 --------------------*/
.el-collapse {
.el-collapse-item {
margin-bottom: 8px;
border-radius: 4px;
overflow: hidden;
&__header {
......@@ -849,3 +848,7 @@ li {
font-weight: 500;
}
}
.el-input__icon{
line-height: 1;
}
......@@ -79,8 +79,10 @@ service.interceptors.response.use(
if (res.status_code === -100) {
// 登录 过期 重新去登录
setTimeout(() => {
if(process.env.NODE_ENV !== 'development'){
removeToken()
window.location.href = window.location.origin +'/company_app/index.html?corp_id='+Cookies.get('corp_id')
}
}, 2000);
return res
}
......
......@@ -586,7 +586,7 @@ export default {
.chatListItem {
width: 100%;
height: 68px;
padding: 3px vw(20);
padding: 3px 10px;
position: relative;
cursor: pointer;
color: #333333;
......@@ -813,7 +813,7 @@ export default {
}
.trans-follow-1 {
width: vw(300);
width: 300px;
min-height: fit-content;
margin: 6px 0 12px 0;
padding: 12px 12px 2px 12px;
......
......@@ -516,7 +516,7 @@ export default {
.chatListItem {
width: 100%;
height: 68px;
padding: 3px vw(20);
padding: 3px 10px;
position: relative;
cursor: pointer;
color: #333333;
......@@ -743,7 +743,7 @@ export default {
}
.trans-follow-1 {
width: vw(300);
width: 300px;
min-height: fit-content;
margin: 6px 0 12px 0;
padding: 12px 12px 2px 12px;
......
......@@ -305,7 +305,7 @@ export default {
position: relative;
.detailsTitle {
width: 100%;
padding: 0 vw(20);
padding: 0 10px;
height: 60px;
font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC;
......@@ -379,7 +379,7 @@ export default {
width: 40px;
height: 40px;
border-radius: 6px;
margin-right: vw(10);
margin-right: 10px;
}
.label {
color: #999999;
......
......@@ -10,6 +10,7 @@
<el-form
ref="form"
:model="form"
label-position="top"
:rules="rules"
label-width="120px"
>
......
......@@ -13,7 +13,6 @@
<p v-if="bindGameUserList.length > 0" class="num">
总共{{ bindGameUserList.length }}个账号
</p>
<el-button type="danger" style="margin-left: 10px;" size="mini" @click="logout">下线</el-button>
<addUser
:show.sync="showLayer"
title="选择玩家"
......@@ -54,7 +53,8 @@ export default {
...mapState('user', [
'userid',
'corp_id',
'external_userid'
'external_userid',
'client_online_status'
]),
},
watch: {
......@@ -109,39 +109,6 @@ export default {
}
}
},
logout(){
this.$confirm('确定下线吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.userLogout()
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
})
})
},
async userLogout(){
const data = {
userid: this.userid,
}
const res = await logout(data)
if(res.status_code === 1){
this.$message({
type: 'success',
message: '下线成功'
})
removeToken()
window.location.href = window.location.origin +'/company_app/index.html?corp_id='+this.corp_id
}else{
this.$message({
type: 'error',
message: '下线失败'
})
}
},
addNewUser() {
console.log(11)
},
......
......@@ -109,8 +109,8 @@
cursor: pointer;
}
.qrImage {
width: vw(140);
height: vw(140);
width: 140px;
height: 140px;
}
.tableImage {
width: 30px;
......
......@@ -482,7 +482,7 @@
background: #fff;
.detailsTitle {
width: 100%;
padding: 0 vw(20);
padding: 0 10px;
height: 60px;
font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC;
......@@ -561,7 +561,7 @@
width: 40px;
height: 40px;
border-radius: 6px;
margin-right: vw(10);
margin-right: 10px;
}
.label {
......
......@@ -627,7 +627,7 @@
.chatListItem {
width: 100%;
height: 68px;
padding: 3px vw(20);
padding: 3px 10px;
position: relative;
cursor: pointer;
color: #333333;
......@@ -854,7 +854,7 @@
}
.trans-follow-1 {
width: vw(300);
width: 300px;
min-height: fit-content;
margin: 6px 0 12px 0;
padding: 12px 12px 2px 12px;
......
......@@ -630,7 +630,7 @@
.chatListItem {
width: 100%;
height: 68px;
padding: 3px vw(20);
padding: 3px 10px;
position: relative;
cursor: pointer;
color: #333333;
......@@ -857,7 +857,7 @@
}
.trans-follow-1 {
width: vw(300);
width: 300px;
min-height: fit-content;
margin: 6px 0 12px 0;
padding: 12px 12px 2px 12px;
......
......@@ -200,7 +200,7 @@
overflow: auto;
.detailsTitle {
width: 100%;
padding: 0 vw(20);
padding: 0 10px;
height: 60px;
font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC;
......@@ -252,7 +252,7 @@
width: 40px;
height: 40px;
border-radius: 6px;
margin-right: vw(10);
margin-right: 10px;
}
.label {
color: #999999;
......@@ -270,10 +270,10 @@
top: 12px;
}
.tags {
width: vw(300);
width: 300px;
margin-left: 10px;
.tagsItem {
width: vw(300);
width: 300px;
}
.tag {
height: 22px;
......
......@@ -357,12 +357,12 @@ export default {
</script>
<style lang="scss" scoped>
.details {
width: vw(444);
width: 100%;
height: 100%;
background: #fff;
.detailsTitle {
width: 100%;
padding: 0 vw(20);
padding: 0 10px;
height: 60px;
font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC;
......@@ -376,7 +376,7 @@ export default {
}
.content {
width: 100%;
padding: vw(20);
padding: 10px;
height: 100%;
background: red;
.contentItemTitle {
......@@ -471,7 +471,7 @@ export default {
width: 40px;
height: 40px;
border-radius: 6px;
margin-right: vw(10);
margin-right: 10px;
}
.label {
color: #999999;
......@@ -489,10 +489,10 @@ export default {
top: 12px;
}
.tags {
width: vw(300);
width:250px;
margin-left: 10px;
.tagsItem {
width: vw(300);
width: 250px;
}
.tag {
height: 22px;
......@@ -534,12 +534,12 @@ export default {
margin-top: 20px;
}
.tagList {
width: vw(130);
width: 150px;
height: 100%;
position: relative;
border-right: 1px solid #e0e0e0;
.tagItem {
width: vw(128);
width: 100px;
height: 36px;
background: #fff;
border-radius: 4px;
......@@ -551,7 +551,7 @@ export default {
margin-bottom: 6px;
cursor: pointer;
.text {
max-width: vw(90);
max-width: 100px;
margin-left: 10px;
}
}
......
......@@ -375,7 +375,7 @@ export default {
width: 40px;
height: 40px;
border-radius: 6px;
margin-right: vw(10);
margin-right: 10px;
}
.label {
color: #999999;
......@@ -393,10 +393,10 @@ export default {
top: 12px;
}
.tags {
width: vw(300);
width: 300px;
margin-left: 10px;
.tagsItem {
width: vw(300);
width: 300px;
}
.tag {
height: 22px;
......@@ -439,13 +439,13 @@ export default {
}
.tagList {
width: vw(130);
width: 200px;
height: 100%;
position: relative;
border-right: 1px solid #e0e0e0;
.tagItem {
width: vw(128);
width: 100px;
height: auto;
background: #fff;
border-radius: 4px;
......@@ -456,7 +456,7 @@ export default {
margin-bottom: 6px;
cursor: pointer;
.text {
max-width: vw(90);
max-width: 90px;
margin-left: 5px;
}
.tagItemGroup {
......
......@@ -354,12 +354,12 @@ export default {
</script>
<style lang="scss" scoped>
.details {
width: vw(444);
width: 100%;
height: 100%;
background: #fff;
.detailsTitle {
width: 100%;
padding: 0 vw(20);
padding: 0 10px;
height: 60px;
font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC;
......@@ -373,7 +373,7 @@ export default {
}
.content {
width: 100%;
padding: vw(20);
padding: 10px;
height: 100%;
background: red;
.contentItemTitle {
......@@ -468,7 +468,7 @@ export default {
width: 40px;
height: 40px;
border-radius: 6px;
margin-right: vw(10);
margin-right: 10px;
}
.label {
color: #999999;
......@@ -486,10 +486,10 @@ export default {
top: 12px;
}
.tags {
width: vw(300);
width:260px;
margin-left: 10px;
.tagsItem {
width: vw(300);
width: 260px;
}
.tag {
height: 22px;
......@@ -531,12 +531,12 @@ export default {
margin-top: 20px;
}
.tagList {
width: vw(130);
width: 140px;
height: 100%;
position: relative;
border-right: 1px solid #e0e0e0;
.tagItem {
width: vw(128);
width: 100px;
height: 36px;
background: #fff;
border-radius: 4px;
......@@ -548,7 +548,7 @@ export default {
margin-bottom: 6px;
cursor: pointer;
.text {
max-width: vw(90);
max-width: 90px;
margin-left: 10px;
}
}
......
......@@ -413,8 +413,7 @@ export default {
.search-type-select {
width: 80px;
flex-shrink: 0;
margin-right: -10px;
::v-deep .el-input__inner {
border: 1px solid #dcdcdc;
border-radius: 4px;
......@@ -425,7 +424,6 @@ export default {
.search-input {
flex: 1;
::v-deep .el-input__inner {
border: 1px solid #dcdcdc;
border-radius: 4px;
......
......@@ -470,7 +470,7 @@ export default {
.detailsTitle {
width: 100%;
padding: 0 vw(20);
padding: 0 10px;
height: 60px;
font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC;
......@@ -559,7 +559,7 @@ export default {
width: 40px;
height: 40px;
border-radius: 6px;
margin-right: vw(10);
margin-right: 10px;
}
.label {
......
......@@ -105,7 +105,7 @@ export default {
}
.detailsTitle {
width: 100%;
padding: 0 vw(20);
padding: 0 10px;
height: 60px;
font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC;
......
......@@ -66,7 +66,7 @@ export default {
}
.detailsTitle {
width: 100%;
padding: 0 vw(20);
padding: 0 10px;
height: 60px;
font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC;
......
......@@ -453,7 +453,7 @@ export default {
</script>
<style lang="scss" scoped>
.task-info-container {
width: vw(424);
width: 100%;
height: 100%;
background: #fff;
margin-left: 2px;
......@@ -461,7 +461,7 @@ export default {
overflow: hidden;
.detailsTitle {
width: 100%;
padding: 0 vw(20);
padding: 0 10px;
height: 60px;
font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC;
......@@ -529,7 +529,7 @@ export default {
width: 40px;
height: 40px;
border-radius: 6px;
margin-right: vw(10);
margin-right: 10px;
}
.label {
color: #999999;
......
......@@ -172,9 +172,9 @@
</div>
</div>
<div v-if="gameUserInfo.service_wechat_number_info && gameUserInfo.service_wechat_number_info.length>0" class="item rowFlex columnCenter spaceBetween">
<div class="columnFlex " style="width:100%;">
<div class="rowFlex columnCenter" style="width:100%;">
<span class="label">客服微信号:</span>
<div class="rowFlex columnCenter" style="margin-top:10px;width:100%;">
<div class="rowFlex columnCenter">
<!-- 显示第一个微信号 -->
<div class="rowFlex columnCenter">
<p class="hidden wxName">{{ gameUserInfo.service_wechat_number_info[0].service_wechat_number_name }}({{ gameUserInfo.service_wechat_number_info[0].service_type_name }})</p>
......@@ -430,7 +430,7 @@ import { debounce } from '@/utils'
margin-left: 10px;
}
.showInputRemarkInput {
width: vw(220);
width: 200px;
margin-left: 10px;
}
.label {
......@@ -462,10 +462,10 @@ import { debounce } from '@/utils'
cursor: pointer;
}
.tags {
width: vw(300);
width: 250px;
margin-left: 10px;
.tagsItem {
width: vw(300);
width: 250px;
}
.tag {
height: 22px;
......
......@@ -169,10 +169,10 @@
width: 40px;
height: 40px;
border-radius: 6px;
margin-right: vw(10);
margin-right: 10px;
}
.showInputRemarkInput {
width: vw(220);
width: 200px;
margin-left: 10px;
}
.label {
......@@ -204,10 +204,10 @@
cursor: pointer;
}
.tags {
width: vw(300);
width: 250px;
margin-left: 10px;
.tagsItem {
width: vw(300);
width: 250px;
}
.tag {
height: 22px;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论