提交 f222901a 作者: 毛细亚

代码初步开发完成

上级 7c63f26a
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
"bi-element-ui": "^1.5.2", "bi-element-ui": "^1.5.2",
"clipboard": "^2.0.11", "clipboard": "^2.0.11",
"core-js": "^3.8.3", "core-js": "^3.8.3",
"cos-js-sdk-v5": "^1.10.1",
"dingtalk-jsapi": "^3.1.0", "dingtalk-jsapi": "^3.1.0",
"element-ui": "^2.15.14", "element-ui": "^2.15.14",
"js-cookie": "^3.0.5", "js-cookie": "^3.0.5",
......
...@@ -29,6 +29,9 @@ importers: ...@@ -29,6 +29,9 @@ importers:
core-js: core-js:
specifier: ^3.8.3 specifier: ^3.8.3
version: 3.42.0 version: 3.42.0
cos-js-sdk-v5:
specifier: ^1.10.1
version: 1.10.1
dingtalk-jsapi: dingtalk-jsapi:
specifier: ^3.1.0 specifier: ^3.1.0
version: 3.1.0 version: 3.1.0
...@@ -1844,6 +1847,9 @@ packages: ...@@ -1844,6 +1847,9 @@ packages:
core-util-is@1.0.3: core-util-is@1.0.3:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
cos-js-sdk-v5@1.10.1:
resolution: {integrity: sha512-a4SRfCY5g6Z35C7OWe9te/S1zk77rVQzfpvZ33gmTdJQzKxbNbEG7Aw/v453XwVMsQB352FIf7KRMm5Ya/wlZQ==}
cosmiconfig@7.1.0: cosmiconfig@7.1.0:
resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
engines: {node: '>=10'} engines: {node: '>=10'}
...@@ -2403,6 +2409,10 @@ packages: ...@@ -2403,6 +2409,10 @@ packages:
fast-uri@3.0.6: fast-uri@3.0.6:
resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==}
fast-xml-parser@4.5.0:
resolution: {integrity: sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==}
hasBin: true
fast-xml-parser@4.5.3: fast-xml-parser@4.5.3:
resolution: {integrity: sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==} resolution: {integrity: sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==}
hasBin: true hasBin: true
...@@ -7580,6 +7590,10 @@ snapshots: ...@@ -7580,6 +7590,10 @@ snapshots:
core-util-is@1.0.3: {} core-util-is@1.0.3: {}
cos-js-sdk-v5@1.10.1:
dependencies:
fast-xml-parser: 4.5.0
cosmiconfig@7.1.0: cosmiconfig@7.1.0:
dependencies: dependencies:
'@types/parse-json': 4.0.2 '@types/parse-json': 4.0.2
...@@ -8314,6 +8328,10 @@ snapshots: ...@@ -8314,6 +8328,10 @@ snapshots:
fast-uri@3.0.6: {} fast-uri@3.0.6: {}
fast-xml-parser@4.5.0:
dependencies:
strnum: 1.1.2
fast-xml-parser@4.5.3: fast-xml-parser@4.5.3:
dependencies: dependencies:
strnum: 1.1.2 strnum: 1.1.2
...@@ -11015,8 +11033,7 @@ snapshots: ...@@ -11015,8 +11033,7 @@ snapshots:
escape-string-regexp: 1.0.5 escape-string-regexp: 1.0.5
optional: true optional: true
strnum@1.1.2: strnum@1.1.2: {}
optional: true
stylehacks@5.1.1(postcss@8.5.3): stylehacks@5.1.1(postcss@8.5.3):
dependencies: dependencies:
......
...@@ -35,26 +35,26 @@ export default { ...@@ -35,26 +35,26 @@ export default {
label: '客户信息', label: '客户信息',
path: '/userInfo' path: '/userInfo'
}, },
{ // {
label: '快捷回复', // label: '快捷回复',
path: '/quickReply' // path: '/quickReply'
}, // },
{ // {
label: '礼包记录', // label: '礼包记录',
path: '/giftRecord' // path: '/giftRecord'
}, // },
{ // {
label: '申请记录', // label: '申请记录',
path: '/applyRecord' // path: '/applyRecord'
}, // },
{ // {
label: '快捷发送', // label: '快捷发送',
path: '/quickSend' // path: '/quickSend'
}, // },
{ // {
label: '通讯录', // label: '通讯录',
path: '/addressBook' // path: '/addressBook'
}, // },
], ],
selectedPath: '/userInfo', selectedPath: '/userInfo',
token:getToken() token:getToken()
......
...@@ -34,6 +34,22 @@ export function getSignature(data) { ...@@ -34,6 +34,22 @@ export function getSignature(data) {
}) })
} }
// 上传接口
export function uploadCos(params) {
return request({
url: '/api/common/getCosSts',
method: 'get',
params
})
}
// 请求企业配置
export function companyviewConfig(data) {
return request({
url: '/api/corp/viewConfig',
method: 'post',
data
})
}
\ No newline at end of file
...@@ -38,3 +38,27 @@ export function detailsInfoRequest(data) { ...@@ -38,3 +38,27 @@ export function detailsInfoRequest(data) {
data data
}) })
} }
// 是否转端
export function toTransfer(data) {
return request({
url: returnApi('/external_user/toTransfer'),
method: 'post',
data
})
}
// 同步智能标签
export function syncSessionIntelTag(data) {
return request({
url: '/sidebar/group_tag_detail/syncSessionIntelTag',
method: 'post',
data
})
}
// 关联客服
export function memberBindCser(data) {
return request({
url: returnApi('/external_user/memberBindCser'),
method: 'post',
data
})
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="50px" height="50px" viewBox="0 0 50 50" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>已通过备份</title>
<g id="审批中心" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="转端-审批记录" transform="translate(-1850, -240)">
<g id="5.反馈/3.Modal弹窗/展示/3空" transform="translate(1296, 0)">
<g id="已通过备份" transform="translate(554, 240)">
<rect id="矩形" fill="#000000" fill-rule="nonzero" opacity="0" x="0" y="0" width="50" height="50"></rect>
<path d="M48.9604167,18.1563095 L41.587381,6.53083335 C40.9435714,5.51708335 39.5982143,5.21714287 38.5814286,5.85535713 L1.78476191,29.1335714 C0.770773828,29.777381 0.471071436,31.1227381 1.10791665,32.1336905 L8.48095239,43.7606548 C9.12482144,44.7718453 10.470119,45.0715477 11.4841667,44.4333929 L48.2822024,21.1567857 C49.2989881,20.512619 49.6044643,19.1689286 48.9604167,18.1563095 Z M47.4918452,19.907381 L10.6938095,43.1870238 C10.3683333,43.3920833 9.94232144,43.2960714 9.73726191,42.9719643 L2.36422617,31.3450595 C2.15910713,31.0195238 2.25517856,30.5949405 2.58065479,30.3870833 L39.380119,7.10886904 C39.7058929,6.90517856 40.1332143,7.00142856 40.3352976,7.32553569 L47.711369,18.9522619 C47.9092262,19.2707738 47.8117857,19.6981548 47.4918452,19.907381 Z M15.7707738,12.5301786 L16.3818452,13.9957143 L17.1735714,12.6204167 L18.7553571,12.4927381 L17.6897619,11.313869 L18.0526786,9.77208335 L16.6069048,10.4219643 L15.2488095,9.6 L15.4208333,11.1790476 L14.2161905,12.2060714 L15.7707738,12.5301786 L15.7707738,12.5301786 Z M25.1401786,8.16726191 L24.3800595,6.77196431 L23.73625,8.22470239 L22.1730357,8.52303569 L23.3532738,9.58142856 L23.1495833,11.1546429 L24.5263095,10.3586905 L25.9620833,11.04 L25.6307738,9.48541665 L26.7191667,8.33232144 L25.1401786,8.16726191 Z M39.4247619,31.540119 L38.1668452,30.5733333 L38.16125,32.1581548 L36.8475595,33.0489286 L38.3605357,33.5479762 L38.8064881,35.0695238 L39.7444643,33.7888095 L41.3320833,33.8332738 L40.3999405,32.5455357 L40.9377381,31.0581548 L39.4247619,31.540119 L39.4247619,31.540119 Z M34.2903571,37.8589286 L33.6909524,36.3889881 L32.8861905,37.75875 L31.3057738,37.8734524 L32.361369,39.0580357 L31.9855952,40.5982143 L33.4397619,39.9629762 L34.7923214,40.8032738 L34.6330357,39.2228571 L35.8376786,38.1974405 L34.2903571,37.8589286 L34.2903571,37.8589286 Z M24.884881,42.1558333 L25.6380357,43.5569643 L26.294881,42.1083929 L27.8580952,41.8289286 L26.6848214,40.758869 L26.900119,39.1870833 L25.5175595,39.9688095 L24.0889881,39.2775595 L24.4073214,40.8291071 L23.3030952,41.9780357 L24.884881,42.1558333 L24.884881,42.1558333 Z M10.7956548,18.6727381 L12.046369,19.655119 L12.0649405,18.0689286 L13.3844643,17.1825595 L11.879881,16.6733333 L11.4452976,15.1445833 L10.4959524,16.4166667 L8.90833335,16.3592262 L9.82767856,17.6529167 L9.27964287,19.1445238 L10.7956548,18.6727381 L10.7956548,18.6727381 Z M5.20952383,25.5207738 C5.04327383,18.8059524 8.30892861,12.1672024 14.3926786,8.31934521 C20.4777976,4.47142856 27.8752976,4.36238091 33.8844048,7.37720239 L35.3357738,6.45922617 C33.5575,5.46541665 31.6443453,4.73815474 29.6294048,4.28636904 C26.9373214,3.68113096 24.1952977,3.60529761 21.4845833,4.05130952 C18.6779167,4.51583335 16.0247024,5.52845239 13.6009524,7.06446431 C11.178631,8.6004167 9.12482144,10.562381 7.50416665,12.900119 C5.93517856,15.1545833 4.83238096,17.6659524 4.22571431,20.3535714 C3.77392861,22.3655357 3.61327383,24.4049405 3.75392856,26.437381 L5.20952383,25.5207738 Z M44.7254167,24.4939881 C44.898869,31.2088095 41.6332143,37.8475595 35.5494643,41.6940476 C29.4657143,45.546131 22.0669048,45.652381 16.0591071,42.637619 L14.6049405,43.5569643 C16.3832143,44.5479167 18.2977381,45.2767262 20.3129762,45.7283929 C23.0047619,46.333631 25.7468452,46.4125 28.4575,45.9634524 C31.2641667,45.498869 33.9174405,44.4876786 36.3397619,42.9516667 C38.7620833,41.4156547 40.8158929,39.4536905 42.4379167,37.117381 C44.001131,34.860119 45.1039286,32.3503571 45.7091667,29.6641071 C46.1623214,27.6505357 46.3202381,25.6097619 46.1795238,23.577381 L44.7254167,24.4939881 Z M18.781131,15.243631 C20.485,14.1680357 22.3593453,13.5941667 24.2410714,13.4795238 L26.4869048,12.0595833 C23.5195238,11.7096429 20.5480357,12.3780953 17.9838095,13.9973214 C15.4266071,15.6149405 13.5520833,18.0172619 12.6013095,20.8453571 L14.8457738,19.4256548 C15.7579762,17.7675596 17.0789286,16.3220238 18.781131,15.243631 Z M31.1595238,34.7697619 C29.4556548,35.8483929 27.5827381,36.4220238 25.7010119,36.5366667 L23.4564881,37.9566071 C26.4225,38.3065476 29.392619,37.6366667 31.9582143,36.0174405 C34.5154167,34.40125 36.3899405,31.9975 37.3392857,29.1694048 L35.0961905,30.5921429 C34.1841071,32.2427977 32.8617857,33.6941667 31.1595238,34.7697619 Z" id="形状" fill="#00BF8A" fill-rule="nonzero"></path>
<text id="已完成" transform="translate(25, 24.5) rotate(-32) translate(-25, -24.5)" font-family="STSongti-SC-Black, Songti SC" font-size="12" font-weight="700" fill="#00BF8A">
<tspan x="7" y="29">已完成</tspan>
</text>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
...@@ -2,52 +2,11 @@ ...@@ -2,52 +2,11 @@
<div class="no-content-container"> <div class="no-content-container">
<div class="no-content-box"> <div class="no-content-box">
<!-- 自定义 SVG 图标 --> <!-- 自定义 SVG 图标 -->
<div class="icon-wrapper"> <!-- <i class=""></i> -->
<svg class="no-data-icon" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg">
<!-- 文件夹图标 -->
<path
d="M40 60h35l10-15h75c8.28 0 15 6.72 15 15v90c0 8.28-6.72 15-15 15H40c-8.28 0-15-6.72-15-15V75c0-8.28 6.72-15 15-15z"
fill="url(#gradient1)"
stroke="url(#gradient2)"
stroke-width="2"
/>
<!-- 虚线效果 -->
<circle cx="100" cy="120" r="25" fill="none" stroke="currentColor" stroke-width="2" stroke-dasharray="4 4" opacity="0.3"/>
<circle cx="100" cy="120" r="35" fill="none" stroke="currentColor" stroke-width="1.5" stroke-dasharray="6 6" opacity="0.2"/>
<!-- 渐变定义 -->
<defs>
<linearGradient id="gradient1" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#f8f9fa;stop-opacity:1" />
<stop offset="100%" style="stop-color:#e9ecef;stop-opacity:1" />
</linearGradient>
<linearGradient id="gradient2" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#dee2e6;stop-opacity:1" />
<stop offset="100%" style="stop-color:#ced4da;stop-opacity:1" />
</linearGradient>
</defs>
</svg>
<!-- 装饰圆点 -->
<div class="decorative-dots">
<span class="dot dot-1"></span>
<span class="dot dot-2"></span>
<span class="dot dot-3"></span>
</div>
</div>
<!-- 文字内容 --> <!-- 文字内容 -->
<div class="content"> <div class="content">
<h3 class="title">{{ title }}</h3> <h3 class="title">{{ title }}</h3>
<p class="description">{{ description }}</p> <p class="description">{{ description }}</p>
<div class="action-area" v-if="showAction">
<slot name="action">
<el-button type="primary" @click="handleRefresh" v-if="showRefresh">
<i class="el-icon-refresh"></i>
刷新数据
</el-button>
</slot>
</div>
</div> </div>
</div> </div>
</div> </div>
......
...@@ -16,10 +16,11 @@ import Element from 'bi-eleme' ...@@ -16,10 +16,11 @@ import Element from 'bi-eleme'
import 'bi-eleme/lib/theme-chalk/index.css' import 'bi-eleme/lib/theme-chalk/index.css'
import BiElementUi from 'bi-element-ui' import BiElementUi from 'bi-element-ui'
import 'bi-element-ui/lib/bi-element-ui.css' import 'bi-element-ui/lib/bi-element-ui.css'
import uploading from '@/utils/cos-upload'
if(process.env.NODE_ENV !== 'production'){ if(process.env.NODE_ENV !== 'production'){
new VConsole(); new VConsole();
} }
Vue.use(uploading)
Vue.use(BiElementUi, { Vue.use(BiElementUi, {
dev: process.env.NODE_ENV !== 'production', dev: process.env.NODE_ENV !== 'production',
env: process.env.NODE_ENV, env: process.env.NODE_ENV,
......
import { debounce } from '@/utils'
import { mapState } from 'vuex'
export default {
watch: {
accountSelect: {
handler:debounce(function(newVal, oldVal) {
console.log(12313,'出发了')
if (newVal && newVal !== "" && newVal !== oldVal) {
this.memberChange()
}
},300)
}
},
computed: {
...mapState('game', ['accountSelect'])
},
}
\ No newline at end of file
...@@ -80,7 +80,6 @@ router.beforeEach((to, from, next) => { ...@@ -80,7 +80,6 @@ router.beforeEach((to, from, next) => {
const token = Cookies.get('token') const token = Cookies.get('token')
const external_userid = Cookies.get('external_userid') const external_userid = Cookies.get('external_userid')
const urlParams = getParams(); const urlParams = getParams();
console.log(urlParams,'urlParams')
if (needAuth) { if (needAuth) {
if (wecomUserId && token && external_userid) { if (wecomUserId && token && external_userid) {
// 登录信息齐全,允许进入 // 登录信息齐全,允许进入
......
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
import { companyviewConfig } from '@/api/user'
const state = { const state = {
userInfo: { userInfo: {
"userid": "JinDuoXia", "userid": "JinDuoXia",
...@@ -25,6 +26,7 @@ const state = { ...@@ -25,6 +26,7 @@ const state = {
corp_signature:'', corp_signature:'',
time:'' time:''
}, },
weixin_blongs_id_list:[],
external_userid:Cookies.get('external_userid') external_userid:Cookies.get('external_userid')
// 六子的 用户id wm5rUgMgAAjqjOcqp8i3lEhFZDQieWug // 六子的 用户id wm5rUgMgAAjqjOcqp8i3lEhFZDQieWug
// 我的 userid JinDuoXia cser_id 4090 corp_id wweaefe716636df3d1 cser_id 4090 token token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJpc3MiOjQwOTAsImlhdCI6MTc0NzgxMjMxMiwiZXhwIjoxNzQ4NDE3MTEyLCJuYmYiOjE3NDc4MTIzMTIsInN1YiI6InRva2Vu6K6k6K-BIiwianRpIjoiMjBkOTY3MDZiYzI1MDdmY2MxOWI2MjU1YTM0YWQ3M2YifQ.yX7E7QHV7x2ubpa8iK3Avy794EiHNCaW2CtB4A4UQWo // 我的 userid JinDuoXia cser_id 4090 corp_id wweaefe716636df3d1 cser_id 4090 token token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJpc3MiOjQwOTAsImlhdCI6MTc0NzgxMjMxMiwiZXhwIjoxNzQ4NDE3MTEyLCJuYmYiOjE3NDc4MTIzMTIsInN1YiI6InRva2Vu6K6k6K-BIiwianRpIjoiMjBkOTY3MDZiYzI1MDdmY2MxOWI2MjU1YTM0YWQ3M2YifQ.yX7E7QHV7x2ubpa8iK3Avy794EiHNCaW2CtB4A4UQWo
...@@ -57,10 +59,30 @@ const mutations = { ...@@ -57,10 +59,30 @@ const mutations = {
}, },
set_cser_name(state,cser_name){ set_cser_name(state,cser_name){
state.cser_name = cser_name state.cser_name = cser_name
},
set_weixin_blongs_id_list(state, data) {
if (data.length === 0) {
state.weixin_blongs_id_list = []
} else {
state.weixin_blongs_id_list = data
} }
},
} }
const actions = { const actions = {
async requestCompanyviewConfig({ commit, state }, data) {
const res = await companyviewConfig(data)
let blongsList = []
let returnList = []
if (res.data.weixin_blongs_name && Object.keys(res.data.weixin_blongs_name).length > 0) {
blongsList = res.data.weixin_blongs_name
returnList = Object.keys(blongsList).map(key => ({
label: blongsList[key],
value: key
}))
commit('set_weixin_blongs_id_list', returnList)
}
},
} }
export default { export default {
......
/*
* @Author: your name
* @Date: 2021-12-30 17:11:51
* @LastEditTime: 2022-01-07 12:49:00
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \zhangyou_frontend\src\utils\cos-upload.js
*/
import COS from 'cos-js-sdk-v5'
import { randomStr } from '@/utils/randomStr'
// import { getUpload } from '@/api/public'
import { uploadCos } from '@/api/user'
import moment from 'moment'
const configImg = {
dir: '/company_wx/',
bucket: 'companywx-1300623068',
Region: 'ap-nanjing',
file: null,
date: moment().format('YYYYMMDD'),
str: randomStr(),
ext: null
}
// 默认获取
const getOptions = function (params) {
return new Promise(function (reject, resolve) {
uploadCos(params).then((res) => {
if (res.status_code === 1) {
reject(res)
} else {
resolve(res)
}
})
})
}
function uploading(file, config, callbackApi = getOptions) {
const _config = Object.assign({}, configImg, config)
_config.file = file
_config.ext = file.name.slice(file.name.lastIndexOf('.') + 1)
//
return new Promise(function (resolve, reject) {
const cos = new COS({
// 后端获取签名
getAuthorization: function (options, callback) {
//
callbackApi({ bucket: _config.bucket, region: _config.Region }).then(
(res) => {
var credentials = res.data.data.credentials
if (!credentials) return
callback({
TmpSecretId: credentials.tmpSecretId,
TmpSecretKey: credentials.tmpSecretKey,
XCosSecurityToken: credentials.sessionToken,
// 建议返回服务器时间作为签名的开始时间,避免用户浏览器本地时间偏差过大导致签名错误
StartTime: res.data.data.startTime, // 时间戳,单位秒,如:1580000000
ExpiredTime: res.data.data.expiredTime // 时间戳,单位秒,如:1580000900
})
}
)
}
})
const accessConfig = {
Bucket: _config.bucket,
Region: _config.Region,
Key:
_config.dir +
_config.date +
'/' +
_config.str +
new Date().valueOf() +
'.' +
_config.ext,
StorageClass: 'STANDARD',
Body: _config.file, // 上传文件对象
onProgress: function (progressData) {}
}
//
cos.putObject(accessConfig, function (err, data) {
if (err) {
reject({
status_code: -1,
msg: '上传失败',
data: err,
config: _config
})
// resolve({
// status_code: -1,
// msg: '上传失败',
// data: err,
// config: _config
// })
}
if (data && data.Location) {
const urlList = data.Location.split('/')
urlList[0] = 'companywxcdn.zwnet.cn'
resolve({
status_code: 1,
msg: '上传成功',
data: 'https://' + urlList.join('/'),
config: _config
})
}
})
})
}
// export default uploading
function _install(Vue) {
if (Vue && Vue.uploading === undefined) {
Vue.prototype.uploading = uploading
} else {
return
}
}
export default _install
export function randomStr(len) {
var le = len || 32
var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678' // ****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****
var maxPos = $chars.length
var str = ''
for (var i = 0; i < le; i++) {
str += $chars.charAt(Math.floor(Math.random() * maxPos))
}
return str
}
\ No newline at end of file
...@@ -76,10 +76,12 @@ service.interceptors.response.use( ...@@ -76,10 +76,12 @@ service.interceptors.response.use(
type: 'error', type: 'error',
duration: 2 * 1000 duration: 2 * 1000
}) })
if (res.status_code === -1) { if (res.status_code === -100) {
// 登录 过期 重新去登录 // 登录 过期 重新去登录
// removeToken() setTimeout(() => {
// window.location.href = window.location.origin +'/company_app/index.html?corp_id='+Cookies.get('corp_id') removeToken()
window.location.href = window.location.origin +'/company_app/index.html?corp_id='+Cookies.get('corp_id')
}, 2000);
return res return res
} }
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
<p v-if="bindGameUserList.length > 0" class="num"> <p v-if="bindGameUserList.length > 0" class="num">
总共{{ bindGameUserList.length }}个账号 总共{{ bindGameUserList.length }}个账号
</p> </p>
<el-button type="danger" style="margin-left: 10px;" size="mini" @click="logout">下线</el-button>
<addUser <addUser
:show.sync="showLayer" :show.sync="showLayer"
title="选择玩家" title="选择玩家"
...@@ -26,6 +27,8 @@ import { detailsInfoRequest } from '@/api/works' ...@@ -26,6 +27,8 @@ import { detailsInfoRequest } from '@/api/works'
import {memberView} from '@/api/game' import {memberView} from '@/api/game'
import { mapState, mapMutations, mapActions } from 'vuex' import { mapState, mapMutations, mapActions } from 'vuex'
import addUser from './addUser.vue' import addUser from './addUser.vue'
import { getToken,removeToken } from '@/utils/auth'
// 更新代码 // 更新代码
export default { export default {
components: { components: {
...@@ -47,6 +50,7 @@ export default { ...@@ -47,6 +50,7 @@ export default {
]), ]),
...mapState('user', [ ...mapState('user', [
'userid', 'userid',
'corp_id',
'external_userid' 'external_userid'
]), ]),
}, },
...@@ -92,6 +96,21 @@ export default { ...@@ -92,6 +96,21 @@ export default {
} }
}, },
logout(){
this.$confirm('确定下线吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
removeToken()
window.location.href = window.location.origin +'/company_app/index.html?corp_id='+this.corp_id
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
})
})
},
addNewUser() { addNewUser() {
console.log(11) console.log(11)
}, },
......
...@@ -94,7 +94,7 @@ ...@@ -94,7 +94,7 @@
</div> </div>
<div> <div>
<!-- 自定义列 --> <!-- 自定义列 -->
<div v-if="false"> <!-- <div v-if="false">
<div <div
v-for="(item, index) in chatUserDetails.self_defined_columns" v-for="(item, index) in chatUserDetails.self_defined_columns"
:key="index" :key="index"
...@@ -119,14 +119,14 @@ ...@@ -119,14 +119,14 @@
<i class="el-icon-edit icon" style="font-size: 14px" <i class="el-icon-edit icon" style="font-size: 14px"
@click="inputShow(item, index)"></i> @click="inputShow(item, index)"></i>
</div> </div>
</div> </div> -->
<!-- 游戏业务的账号信息 --> <!-- 游戏业务的账号信息 -->
<!-- <gameDetails <gameDetails
v-if="gameUserInfo.username" v-if="gameUserInfo.username"
:chat-user-details="chatUserDetails" :chat-user-details="chatUserDetails"
:game-user-info="gameUserInfo" :game-user-info="gameUserInfo"
@changeAppraisal="changeAppraisal" @changeAppraisal="changeAppraisal"
/> --> />
<!-- 游戏标签 --> <!-- 游戏标签 -->
<!-- <div <!-- <div
...@@ -178,15 +178,16 @@ ...@@ -178,15 +178,16 @@
</template> </template>
<script> <script>
import { mapState } from 'vuex' import { mapState } from 'vuex'
// import gameDetails from './gameInfo/gameUserInfo.vue' import gameDetails from './gameInfo/gameUserInfo.vue'
import shareInfo from './shareInfo.vue' import shareInfo from './shareInfo.vue'
import changePhone from './changePhone.vue' import changePhone from './changePhone.vue'
import watchMember from '@/mixins/watchMember'
import { zyouUnBind,autoResetPassword,bindUserSelfAdd } from '@/api/game' import { zyouUnBind,autoResetPassword,bindUserSelfAdd } from '@/api/game'
import { memberBindCser } from '@/api/works'
export default { export default {
name: 'UserDetailsPanel', name: 'UserDetailsPanel',
components: { components: {
// gameDetails, gameDetails,
changePhone, changePhone,
shareInfo shareInfo
}, },
...@@ -218,9 +219,13 @@ import changePhone from './changePhone.vue' ...@@ -218,9 +219,13 @@ import changePhone from './changePhone.vue'
]), ]),
...mapState('user', ['cser_info','cser_id','cser_name']) ...mapState('user', ['cser_info','cser_id','cser_name'])
}, },
mixins: [watchMember],
mounted() { mounted() {
}, },
methods: { methods: {
memberChange() {
this.requestBindUser()
},
// 解绑确认 // 解绑确认
zyouUnBindConfirm() { zyouUnBindConfirm() {
this.$confirm('确定要解绑当前账号么?', '确认提示', { this.$confirm('确定要解绑当前账号么?', '确认提示', {
...@@ -238,6 +243,19 @@ import changePhone from './changePhone.vue' ...@@ -238,6 +243,19 @@ import changePhone from './changePhone.vue'
}) })
}) })
}, },
requestBindUser() {
const data = {
member_id: this.accountSelect
}
memberBindCser(data).then((res) => {
console.log(res.data.cser_name, 'cser_namecser_namecser_namecser_name')
if (res.data.cser_name) {
this.$set(this.chatUserDetails, 'bind_cser', res.data.cser_name)
} else {
this.$set(this.chatUserDetails, 'bind_cser', '')
}
})
},
zyouUnBind() { zyouUnBind() {
const data = { const data = {
userid: this.selectUser.userid, userid: this.selectUser.userid,
...@@ -338,7 +356,7 @@ import changePhone from './changePhone.vue' ...@@ -338,7 +356,7 @@ import changePhone from './changePhone.vue'
}, },
// 处理评估变更 // 处理评估变更
changeAppraisal(val) { changeAppraisal(val) {
this.change_appraisal = value this.change_appraisal = val
} }
} }
} }
...@@ -355,6 +373,7 @@ import changePhone from './changePhone.vue' ...@@ -355,6 +373,7 @@ import changePhone from './changePhone.vue'
background-color: #fff; background-color: #fff;
border-radius: 4px; border-radius: 4px;
overflow: hidden; overflow: hidden;
margin-top: 20px;
.detailsTitle { .detailsTitle {
height: 50px; height: 50px;
padding: 0 20px; padding: 0 20px;
......
...@@ -37,12 +37,6 @@ export default { ...@@ -37,12 +37,6 @@ export default {
} }
}, },
watch: {
// // 监听到变化
// report_is_send(newVal, oldVal) {
// this.roleActive = 'report'
// }
},
methods: { methods: {
handleClick(value) { handleClick(value) {
......
<template> <template>
<div class="details columnFlex"> <div class="details columnFlex">
<div class="detailsTitle rowFlex spaceBetween columnCenter">
<p>违规记录</p>
<!-- <el-button type="primary" size="small" @click="showAddMember = true">自定义列</el-button> -->
</div>
<el-form <el-form
v-loading="loading" v-loading="loading"
class="content" class="content"
...@@ -97,7 +93,7 @@ ...@@ -97,7 +93,7 @@
</div> </div>
</div> </div>
</el-form-item> </el-form-item>
<div> <div v-if="item && item.newRemake && item.newRemake.hit">
<div <div
class="title" class="title"
style="font-weight: 600; margin-bottom: 10px" style="font-weight: 600; margin-bottom: 10px"
...@@ -105,12 +101,12 @@ ...@@ -105,12 +101,12 @@
命中统计 命中统计
</div> </div>
<BiTable <BiTable
v-if="item && item.newRemake && item.newRemake.hit"
:data="item.newRemake.hit" :data="item.newRemake.hit"
size="medium" size="medium"
:column="tableColums" :column="tableColums"
> >
<template v-slot:main_playlet="{ row }"> <template v-slot:time="{ row }">
<p>{{ $moment(row.time).format("YYYY-MM-DD HH:mm:ss") }}</p> <p>{{ $moment(row.time).format("YYYY-MM-DD HH:mm:ss") }}</p>
</template> </template>
</BiTable> </BiTable>
...@@ -121,7 +117,7 @@ ...@@ -121,7 +117,7 @@
v-if="!loading && violationList.length == 0" v-if="!loading && violationList.length == 0"
class="noContent rowFlex allCenter" class="noContent rowFlex allCenter"
> >
<svg-icon icon-class="noContent" /> <noContent title="暂无数据" description="当前没有任何数据,请稍后再试或联系管理员" />
</div> </div>
</el-form> </el-form>
<el-dialog <el-dialog
...@@ -143,8 +139,13 @@ ...@@ -143,8 +139,13 @@
<script> <script>
import { mapState } from "vuex"; import { mapState } from "vuex";
import { violationList } from "@/api/game"; import { violationList } from "@/api/game";
import noContent from "@/components/noContent.vue";
import { debounce } from '@/utils'
import watchMember from '@/mixins/watchMember'
export default { export default {
components: {}, components: {
noContent,
},
data() { data() {
return { return {
imageSrc: [], imageSrc: [],
...@@ -167,18 +168,6 @@ export default { ...@@ -167,18 +168,6 @@ export default {
prop: "time", prop: "time",
width: 120, width: 120,
slotScope: true slotScope: true
// render: (h, { row }) => {
// if (row.time) {
// return (
// <p>
// {
// this.$moment(row.time)
// .format("YYYY-MM-DD HH:mm:ss")
// }
// </p>
// );
// }
// },
}, },
], ],
loading: false, loading: false,
...@@ -188,18 +177,14 @@ export default { ...@@ -188,18 +177,14 @@ export default {
computed: { computed: {
...mapState("game", ["accountSelect", "gameTabActive"]), ...mapState("game", ["accountSelect", "gameTabActive"]),
}, },
watch: { mixins: [watchMember],
accountSelect(newVal, oldVal) {
console.log(11, "newVal");
if (newVal && newVal !== "" && this.gameTabActive == 5) {
this.requestViolationList();
}
},
},
mounted() { mounted() {
this.requestViolationList(); this.requestViolationList();
}, },
methods: { methods: {
memberChange() {
this.requestViolationList()
},
handleRemark(remark) { handleRemark(remark) {
try { try {
const remarkObj = JSON.parse(JSON.parse(remark.replace(/\r\n\t/g, ""))); const remarkObj = JSON.parse(JSON.parse(remark.replace(/\r\n\t/g, "")));
...@@ -260,27 +245,10 @@ export default { ...@@ -260,27 +245,10 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.details { .details {
width: vw(444); width:100%;
height: 100%; height: calc(100vh - 150px);
background: #fff; background: #fff;
margin-left: 2px; margin-left: 2px;
.detailsTitle {
width: 100%;
padding: 0 vw(20);
height: 60px;
font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
border-bottom: 1px solid #ebeef5;
border-left: 1px solid #ebeef5;
p {
color: #333333;
}
}
.content { .content {
width: 100%; width: 100%;
padding: vw(20); padding: vw(20);
...@@ -293,6 +261,7 @@ export default { ...@@ -293,6 +261,7 @@ export default {
.contentItem { .contentItem {
border-bottom: 1px dashed #ebeef5; border-bottom: 1px dashed #ebeef5;
margin-top: 10px;
} }
.remarkType { .remarkType {
......
...@@ -76,7 +76,7 @@ ...@@ -76,7 +76,7 @@
<script> <script>
import { editRoleLabel, roleGetRoleLabel, roleLabelSearch, selectSearch, getRoleLabelCreate } from '@/api/game' import { editRoleLabel, roleGetRoleLabel, roleLabelSearch, selectSearch, getRoleLabelCreate } from '@/api/game'
import { mapState } from 'vuex' import { mapState,mapActions } from 'vuex'
import { debounce } from '@/utils' import { debounce } from '@/utils'
export default { export default {
name: 'ZyouTag', name: 'ZyouTag',
...@@ -103,8 +103,7 @@ ...@@ -103,8 +103,7 @@
} }
}, },
computed: { computed: {
...mapState('user', ['userInfo']), ...mapState('user', ['cser_id','cser_name','corp_id','weixin_blongs_id_list']),
...mapState('common', ['weixin_blongs_id_list'])
}, },
watch: { watch: {
accountSelect: { accountSelect: {
...@@ -116,12 +115,14 @@ ...@@ -116,12 +115,14 @@
immediate: true immediate: true
} }
}, },
mounted() { async mounted() {
await this.requestCompanyviewConfig({corp_id:this.corp_id})
this.getLabelType() this.getLabelType()
this.getRoleLabelList() this.getRoleLabelList()
this.searchLabel('') this.searchLabel('')
}, },
methods: { methods: {
...mapActions('user', ['requestCompanyviewConfig']),
// 获取标签类型 // 获取标签类型
async getLabelType() { async getLabelType() {
try { try {
...@@ -271,8 +272,8 @@ ...@@ -271,8 +272,8 @@
role_id: this.gameUserInfo.role_info.role_id || '', role_id: this.gameUserInfo.role_info.role_id || '',
member_id: this.accountSelect, member_id: this.accountSelect,
label_id: labelId, label_id: labelId,
user_id: this.userInfo.id, user_id: this.cser_id,
user_name: this.userInfo.username, user_name: this.cser_name,
role_name: this.gameUserInfo.role_info.role_name || '', role_name: this.gameUserInfo.role_info.role_name || '',
cp_role_id: this.gameUserInfo.role_info.cp_role_id || '' cp_role_id: this.gameUserInfo.role_info.cp_role_id || ''
}) })
......
<template> <template>
<div class="gameUserDetails"> <div class="gameUserDetails">
<!-- 智能标签 --> <!-- 智能标签 -->
<div v-if="isGameSystem && messageSource==='company_work'" class="item rowFlex columnCenter spaceBetween"> <div class="item rowFlex columnCenter spaceBetween">
<div class="rowFlex columnCenter"> <div class="rowFlex columnCenter">
<span class="label" style="min-width:60px; margin-left: -8px;">智能标签:</span> <span class="label" style="min-width:60px;">智能标签:</span>
<p class="text"> <p class="text">
<el-tag v-for="(item,index) in chatUserDetails.intelligence_tag_group" :key="index" style="margin-right:5px;margin-bottom:5px;">{{ item.name }} </el-tag> <el-tag v-for="(item,index) in chatUserDetails.intelligence_tag_group" :key="index" style="margin-right:5px;margin-bottom:5px;">{{ item.name }} </el-tag>
</p> </p>
...@@ -133,7 +133,7 @@ ...@@ -133,7 +133,7 @@
<p v-if="gameUserInfo.role_info && gameUserInfo.role_info.cp_role_id" class="text">{{ gameUserInfo.role_info.cp_role_id }}</p> <p v-if="gameUserInfo.role_info && gameUserInfo.role_info.cp_role_id" class="text">{{ gameUserInfo.role_info.cp_role_id }}</p>
</div> </div>
</div> </div>
<div v-if="messageSource==='company_work'" class="item rowFlex columnCenter spaceBetween"> <div class="item rowFlex columnCenter spaceBetween">
<div class="rowFlex columnCenter"> <div class="rowFlex columnCenter">
<span class="label">是否愿意转端:</span> <span class="label">是否愿意转端:</span>
<p class="text"> <p class="text">
...@@ -151,7 +151,7 @@ ...@@ -151,7 +151,7 @@
</div> </div>
<el-input v-if="showUserMobile" v-model="newMobileValue" style="width: 120px; margin-left: 10px" @change="changeUserMobile" @blur="showUserMobile = false"></el-input> <el-input v-if="showUserMobile" v-model="newMobileValue" style="width: 120px; margin-left: 10px" @change="changeUserMobile" @blur="showUserMobile = false"></el-input>
<!-- 暂时禁止用户修改手机号 --> <!-- 暂时禁止用户修改手机号 -->
<svg-icon v-if="false" icon-class="edit" class="icon" style="font-size: 14px" @click="editUserMobile" /> <i class="el-icon-edit icon" style="font-size: 14px" @click="editUserMobile"></i>
</div> </div>
<div class="item rowFlex columnCenter spaceBetween"> <div class="item rowFlex columnCenter spaceBetween">
<div class="rowFlex columnCenter"> <div class="rowFlex columnCenter">
...@@ -198,11 +198,12 @@ ...@@ -198,11 +198,12 @@
import { toTransfer, syncSessionIntelTag } from '@/api/works' import { toTransfer, syncSessionIntelTag } from '@/api/works'
import moment from 'moment' import moment from 'moment'
import ZyouTag from './ZyouTag.vue' import ZyouTag from './ZyouTag.vue'
import { debounce } from '@/utils'
export default { export default {
components: { components: {
ZyouTag ZyouTag
}, },
props: ['gameUserInfo', 'chatUserDetails', 'messageSource'], props: ['gameUserInfo', 'chatUserDetails'],
data() { data() {
return { return {
moment, moment,
...@@ -217,25 +218,24 @@ ...@@ -217,25 +218,24 @@
} }
}, },
computed: { computed: {
...mapState('user', ['isGameSystem', 'corpId']), ...mapState('game', ['accountSelect'])
...mapState('common', ['zqUserInfo']),
...mapState('game', ['accountSelect', 'changeChangeUser'])
}, },
watch: { watch: {
changeChangeUser(newVal, oldVal) { accountSelect: {
if (newVal) { handler:debounce(function(newVal, oldVal) {
if (newVal && newVal !== "" && newVal !== oldVal) {
this.getMemberLabel() this.getMemberLabel()
} }
},200),
immediate: false
} }
}, },
mounted() { mounted() {
this.$nextTick(() => { this.$nextTick(() => {
console.log(this.accountSelect, 'this.accountSelect')
if (this.accountSelect && this.accountSelect !== '') { if (this.accountSelect && this.accountSelect !== '') {
this.getMemberLabel() this.getMemberLabel()
} }
}) })
console.log(this.chatUserDetails, 'gameUserInfo')
}, },
methods: { methods: {
getMemberLabel() { getMemberLabel() {
...@@ -253,7 +253,6 @@ ...@@ -253,7 +253,6 @@
this.change_name = change_name.label_value this.change_name = change_name.label_value
this.change_risk = change_risk.label_value this.change_risk = change_risk.label_value
this.change_appraisal = change_appraisal.label_value this.change_appraisal = change_appraisal.label_value
// change_appraisal.label_value
this.$emit('changeAppraisal', this.change_appraisal) this.$emit('changeAppraisal', this.change_appraisal)
} else { } else {
this.change_user = 0 this.change_user = 0
...@@ -268,7 +267,7 @@ ...@@ -268,7 +267,7 @@
changeNameFn() { changeNameFn() {
const data = { const data = {
member_id: this.accountSelect, member_id: this.accountSelect,
create_user: this.zqUserInfo.name, create_user: this.cser_name,
label_type: 3, label_type: 3,
label_value: this.change_name == 1 ? 0 : 1 label_value: this.change_name == 1 ? 0 : 1
} }
...@@ -284,7 +283,7 @@ ...@@ -284,7 +283,7 @@
changeRiskFn() { changeRiskFn() {
const data = { const data = {
member_id: this.accountSelect, member_id: this.accountSelect,
create_user: this.zqUserInfo.name, create_user: this.cser_name,
label_type: 4, label_type: 4,
label_value: this.change_risk == 0 ? 1 : 0 label_value: this.change_risk == 0 ? 1 : 0
} }
...@@ -297,10 +296,9 @@ ...@@ -297,10 +296,9 @@
}) })
}, },
changeUserFn() { changeUserFn() {
// { label: '是', value: 1 }, { label: '否', value: 0 }
const data = { const data = {
member_id: this.accountSelect, member_id: this.accountSelect,
create_user: this.zqUserInfo.name, create_user: this.cser_name,
label_type: 2, label_type: 2,
label_value: this.change_user == 1 ? 0 : 1 label_value: this.change_user == 1 ? 0 : 1
} }
...@@ -374,6 +372,7 @@ ...@@ -374,6 +372,7 @@
<style lang="scss" scoped> <style lang="scss" scoped>
.gameUserDetails { .gameUserDetails {
width: 100%; width: 100%;
padding-bottom: 50px;
.changeUser{ .changeUser{
font-size: 18px; font-size: 18px;
transform: rotate(90deg); transform: rotate(90deg);
......
...@@ -122,7 +122,7 @@ ...@@ -122,7 +122,7 @@
mainGameSelect mainGameSelect
}, },
computed: { computed: {
...mapState('user', ['userInfo']) ...mapState('user', ['cser_id','cser_name'])
}, },
props: ['show', 'appealInfo'], props: ['show', 'appealInfo'],
data() { data() {
...@@ -189,6 +189,7 @@ ...@@ -189,6 +189,7 @@
!!this.appealForm.cp_role_id && !!this.appealForm.cp_role_id &&
!!this.appealForm.main_game_id !!this.appealForm.main_game_id
) { ) {
const loading = this.$message.warning('查找角色中,请稍等')
const res = await searchcondition({ const res = await searchcondition({
type: 'role', type: 'role',
cp_role_id: this.appealForm.cp_role_id, cp_role_id: this.appealForm.cp_role_id,
...@@ -204,8 +205,10 @@ ...@@ -204,8 +205,10 @@
this.appealForm.server_name = res.data.data[0] this.appealForm.server_name = res.data.data[0]
? res.data.data[0].server_name ? res.data.data[0].server_name
: '' : ''
loading.close()
} else { } else {
this.$message.warning('角色信息不存在') this.$message.warning('角色信息不存在')
loading.close()
} }
} else { } else {
this.$message.warning('请先选择主游戏') this.$message.warning('请先选择主游戏')
...@@ -236,11 +239,10 @@ ...@@ -236,11 +239,10 @@
}) })
}, },
async appealAdd() { async appealAdd() {
const { id, username } = this.userInfo
const { role_id, appeal_type, remark, main_game_id, cp_role_id, role_name, server_name, role_id_type } = this.appealForm const { role_id, appeal_type, remark, main_game_id, cp_role_id, role_name, server_name, role_id_type } = this.appealForm
const data = { const data = {
user_id: id, user_id: this.cser_id,
user_name: username, user_name: this.cser_name,
role_id, role_id,
appeal_type, appeal_type,
remark, remark,
......
<template> <template>
<div class="approval-role-list"> <div class="approval-role-list columnFlex">
<el-form ref="taskForm" :model="reportForm" class="taskForm" label-width="85px"> <el-form ref="taskForm" :model="reportForm" class="taskForm" label-width="85px">
<el-form-item label="角色名称"> <el-form-item label="角色名称">
<el-input <el-input
...@@ -96,11 +96,11 @@ ...@@ -96,11 +96,11 @@
style="margin-bottom:15px;" style="margin-bottom:15px;"
@click.stop="resubmitApproval(item)" @click.stop="resubmitApproval(item)"
>重新提交</el-button> >重新提交</el-button>
<svg-icon v-if="item.approval_status == 1" icon-class="shenpi1" class="icon" /> <img v-if="item.approval_status == 1" :src="shenpi1" class="icon" />
<svg-icon v-else-if="item.approval_status == 2" icon-class="shenpi2" class="icon" /> <img v-else-if="item.approval_status == 2" :src="shenpi2" class="icon" />
<svg-icon v-else-if="item.approval_status == 3" icon-class="shenpi3" class="icon" /> <img v-else-if="item.approval_status == 3" :src="shenpi3" class="icon" />
<svg-icon v-else-if="item.approval_status == 4" icon-class="shenpi4" class="icon" /> <img v-else-if="item.approval_status == 4" :src="shenpi4" class="icon" />
<svg-icon v-else-if="item.approval_status == 5" icon-class="shenpi5" class="icon" /> <img v-else-if="item.approval_status == 5" :src="shenpi5" class="icon" />
</div> </div>
</div> </div>
<!-- 审批进度 --> <!-- 审批进度 -->
...@@ -217,16 +217,33 @@ ...@@ -217,16 +217,33 @@
import { mapState, mapMutations } from 'vuex' import { mapState, mapMutations } from 'vuex'
import { removeDp, formatNumber } from '@/utils/index' import { removeDp, formatNumber } from '@/utils/index'
import resubmitApproval from './appeal.vue' import resubmitApproval from './appeal.vue'
// 导入审批状态图标
import shenpi1 from '@/assets/icon/shenpi1.svg'
import shenpi2 from '@/assets/icon/shenpi2.svg'
import shenpi3 from '@/assets/icon/shenpi3.svg'
import shenpi4 from '@/assets/icon/shenpi4.svg'
import shenpi5 from '@/assets/icon/shenpi5.svg'
import noContent from "@/components/noContent.vue";
import { debounce } from '@/utils'
import watchMember from '@/mixins/watchMember'
export default { export default {
computed: { computed: {
...mapState('game', ['accountSelect']), ...mapState('game', ['accountSelect']),
...mapState('user', ['userInfo']) ...mapState('user', ['userInfo'])
}, },
components: { components: {
resubmitApproval resubmitApproval,
noContent
}, },
mixins: [watchMember],
data() { data() {
return { return {
// 审批状态图标
shenpi1,
shenpi2,
shenpi3,
shenpi4,
shenpi5,
pickerOptions: { pickerOptions: {
disabledDate(time) { disabledDate(time) {
const curDate = (new Date()).getTime() const curDate = (new Date()).getTime()
...@@ -263,6 +280,7 @@ ...@@ -263,6 +280,7 @@
taskTypeList: [] taskTypeList: []
} }
}, },
// 9111321331231903744
mounted() { mounted() {
this.reportForm.create_time = [this.$moment().subtract(1, 'months').format('YYYY-MM-DD HH:mm:ss'), this.$moment().endOf('day').format('YYYY-MM-DD HH:mm:ss')] this.reportForm.create_time = [this.$moment().subtract(1, 'months').format('YYYY-MM-DD HH:mm:ss'), this.$moment().endOf('day').format('YYYY-MM-DD HH:mm:ss')]
this.reportForm.create_time_start = this.$moment().subtract(1, 'months').format('YYYY-MM-DD HH:mm:ss') this.reportForm.create_time_start = this.$moment().subtract(1, 'months').format('YYYY-MM-DD HH:mm:ss')
...@@ -272,6 +290,9 @@ ...@@ -272,6 +290,9 @@
this.filterChange() this.filterChange()
}, },
methods: { methods: {
memberChange() {
this.filterChange()
},
filterChange() { filterChange() {
this.pageInfo.page = 1 this.pageInfo.page = 1
this.reportList = [] this.reportList = []
...@@ -331,7 +352,6 @@ ...@@ -331,7 +352,6 @@
} }
}, },
paperScroll() { paperScroll() {
console.log('下一页')
this.requestNextPage() this.requestNextPage()
}, },
requestNextPage(pageInfo) { requestNextPage(pageInfo) {
...@@ -448,8 +468,9 @@ ...@@ -448,8 +468,9 @@
<style lang="scss" scoped> <style lang="scss" scoped>
.approval-role-list { .approval-role-list {
width: 100%; width: 100%;
height: 100%; height: calc(100vh - 186px);
overflow: auto; overflow: auto;
padding-top: 10px;
.taskForm { .taskForm {
::v-deep .el-form-item { ::v-deep .el-form-item {
margin-bottom: 10px; margin-bottom: 10px;
...@@ -504,9 +525,10 @@ ...@@ -504,9 +525,10 @@
.mailListScroll { .mailListScroll {
width: 100%; width: 100%;
height: calc(100vh - 260px);
overflow-y: auto; overflow-y: auto;
overflow-x: hidden; overflow-x: hidden;
display: flex;
flex: 1;
.scrollMain { .scrollMain {
width: 100%; width: 100%;
height: auto; height: auto;
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
class="taskForm" class="taskForm"
label-width="85px" label-width="85px"
> >
<el-form-item label="角色名称"> <el-form-item label="角色名称">
<el-input <el-input
v-model="reportForm.role_name" v-model="reportForm.role_name"
...@@ -17,6 +18,7 @@ ...@@ -17,6 +18,7 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="审批状态"> <el-form-item label="审批状态">
<el-select <el-select
v-model="reportForm.approval_status" v-model="reportForm.approval_status"
style="width:95%;" style="width:95%;"
...@@ -100,29 +102,29 @@ ...@@ -100,29 +102,29 @@
size="mini" size="mini"
@click.stop="resubmitReport(item)" @click.stop="resubmitReport(item)"
>重新提交</el-button> >重新提交</el-button>
<svg-icon <img
v-if="item.approval_status == 1" v-if="item.approval_status == 1"
icon-class="shenpi1" :src="shenpi1"
class="icon" class="icon"
/> />
<svg-icon <img
v-else-if="item.approval_status == 2" v-else-if="item.approval_status == 2"
icon-class="shenpi2" :src="shenpi2"
class="icon" class="icon"
/> />
<svg-icon <img
v-else-if="item.approval_status == 3" v-else-if="item.approval_status == 3"
icon-class="shenpi3" :src="shenpi3"
class="icon" class="icon"
/> />
<svg-icon <img
v-else-if="item.approval_status == 4" v-else-if="item.approval_status == 4"
icon-class="shenpi4" :src="shenpi4"
class="icon" class="icon"
/> />
<svg-icon <img
v-else-if="item.approval_status == 5" v-else-if="item.approval_status == 5"
icon-class="shenpi5" :src="shenpi5"
class="icon" class="icon"
/> />
</div> </div>
...@@ -273,6 +275,12 @@ ...@@ -273,6 +275,12 @@
import { removeDp, formatNumber } from '@/utils/index' import { removeDp, formatNumber } from '@/utils/index'
import resubmitReport from '../layer/report.vue' import resubmitReport from '../layer/report.vue'
import approvalTask from '../layer/approvalTask.vue' import approvalTask from '../layer/approvalTask.vue'
// 导入审批状态图标
import shenpi1 from '@/assets/icon/shenpi1.svg'
import shenpi2 from '@/assets/icon/shenpi2.svg'
import shenpi3 from '@/assets/icon/shenpi3.svg'
import shenpi4 from '@/assets/icon/shenpi4.svg'
import shenpi5 from '@/assets/icon/shenpi5.svg'
export default { export default {
computed: { computed: {
...mapState('game', ['accountSelect', 'report_is_send']), ...mapState('game', ['accountSelect', 'report_is_send']),
...@@ -284,6 +292,12 @@ ...@@ -284,6 +292,12 @@
}, },
data() { data() {
return { return {
// 审批状态图标
shenpi1,
shenpi2,
shenpi3,
shenpi4,
shenpi5,
reportForm: { reportForm: {
customer_id: '', customer_id: '',
member_id: '', member_id: '',
......
...@@ -104,7 +104,7 @@ ...@@ -104,7 +104,7 @@
v-else-if="!loading && roleList.length==0" v-else-if="!loading && roleList.length==0"
class="noContent rowFlex allCenter" class="noContent rowFlex allCenter"
> >
<noContent/> <noContent title="暂无数据" description="当前没有任何数据,请稍后再试或联系管理员" />
</div> </div>
</div> </div>
<appeal <appeal
...@@ -120,6 +120,7 @@ ...@@ -120,6 +120,7 @@
import { getRoleHoLo } from '@/api/game' import { getRoleHoLo } from '@/api/game'
import noContent from '@/components/noContent.vue' import noContent from '@/components/noContent.vue'
import appeal from './appeal.vue' import appeal from './appeal.vue'
import watchMember from '@/mixins/watchMember'
export default { export default {
components: { components: {
noContent, noContent,
...@@ -142,15 +143,9 @@ ...@@ -142,15 +143,9 @@
} }
}, },
computed: { computed: {
...mapState('game', ['accountSelect', 'gameTabActive']) ...mapState('game', ['accountSelect'])
},
watch: {
accountSelect(newVal, oldVal) {
if (newVal && newVal !== '' && this.gameTabActive == 2) {
this.requestRoleList()
}
}
}, },
mixins: [watchMember],
mounted() { mounted() {
this.requestRoleList() this.requestRoleList()
this.nowTime = new Date().getTime() this.nowTime = new Date().getTime()
...@@ -159,6 +154,9 @@ ...@@ -159,6 +154,9 @@
handleChange() { handleChange() {
}, },
memberChange() {
this.requestRoleList()
},
// 申诉 // 申诉
appealLayer(item) { appealLayer(item) {
this.appealInfo = item this.appealInfo = item
...@@ -214,7 +212,7 @@ ...@@ -214,7 +212,7 @@
} }
.detailsContent { .detailsContent {
width: 100%; width: 100%;
height: calc(100vh - 100px); height: calc(100vh - 186px);
overflow: auto; overflow: auto;
.textInfo { .textInfo {
font-family: PingFangSC-Regular, PingFang SC; font-family: PingFangSC-Regular, PingFang SC;
...@@ -222,6 +220,7 @@ ...@@ -222,6 +220,7 @@
color: #999999; color: #999999;
font-size: 12px; font-size: 12px;
margin-bottom: 10px; margin-bottom: 10px;
margin-top: 10px;
} }
.contentItem { .contentItem {
position: relative; position: relative;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论