提交 899e90b5 作者: 毛细亚

合并分支 'release' 到 'master'

Release

查看合并请求 !16
<!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.d8973de5.js"></script><link href="static/css/chunk-vendors.8e901099.css" rel="stylesheet"><link href="static/css/app.5add12a9.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> <!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>企微侧边栏</title><script src="https://g.alicdn.com/dingding/dinglogin/0.0.5/ddLogin.js"></script><script defer="defer" src="static/js/runtime.2425ceee.js"></script><script defer="defer" src="static/js/chunk-elementUI.d0bcf3c3.js"></script><script defer="defer" src="static/js/chunk-libs.c6681081.js"></script><script defer="defer" src="static/js/app.e6abe9ca.js"></script><link href="static/css/chunk-elementUI.dd5abb38.css" rel="stylesheet"><link href="static/css/app.d9cea248.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 \ No newline at end of file
...@@ -44,6 +44,11 @@ ...@@ -44,6 +44,11 @@
"@vue/cli-plugin-vuex": "~5.0.0", "@vue/cli-plugin-vuex": "~5.0.0",
"@vue/cli-service": "~5.0.0", "@vue/cli-service": "~5.0.0",
"element-theme-chalk": "^2.15.14", "element-theme-chalk": "^2.15.14",
"html-webpack-plugin": "3.2.0",
"script-ext-html-webpack-plugin": "2.1.3",
"serve-static": "1.13.2",
"svg-sprite-loader": "6.0.9",
"svgo": "1.2.2",
"vue-template-compiler": "^2.6.14" "vue-template-compiler": "^2.6.14"
} }
} }
No preview for this file type
...@@ -12,7 +12,8 @@ ...@@ -12,7 +12,8 @@
<!-- Prevent caching at the proxy server --> <!-- Prevent caching at the proxy server -->
<meta http-equiv="expires" content="0"> <meta http-equiv="expires" content="0">
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" /> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />
<title><%= htmlWebpackPlugin.options.title %></title> <!-- <title><%= htmlWebpackPlugin.options.title %></title> -->
<title>企微侧边栏</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"> --> <!-- <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 src="https://g.alicdn.com/dingding/dinglogin/0.0.5/ddLogin.js"></script>
</head> </head>
......
...@@ -4,16 +4,9 @@ ...@@ -4,16 +4,9 @@
<div class="mobile-menu-bar" v-if="token && external_userid && showMemberId"> <div class="mobile-menu-bar" v-if="token && external_userid && showMemberId">
<!-- 临时调试信息 --> <!-- 临时调试信息 -->
<div class="menu-container"> <div class="menu-container">
<el-menu <el-menu :default-active="selectedPath" mode="horizontal" class="mobile-el-menu"
:default-active="selectedPath" :class="{ 'collapsed': !isMenuExpanded && shouldShowToggle }" background-color="#fff" router
mode="horizontal" @select="handleSelect" ref="menuRef">
class="mobile-el-menu"
:class="{ 'collapsed': !isMenuExpanded && shouldShowToggle }"
background-color="#fff"
router
@select="handleSelect"
ref="menuRef"
>
<el-menu-item v-for="item in menuList" :key="item.path" :index="item.path" class="mobile-menu-item"> <el-menu-item v-for="item in menuList" :key="item.path" :index="item.path" class="mobile-menu-item">
<!-- 任务列表菜单项显示红点 --> <!-- 任务列表菜单项显示红点 -->
<div v-if="item.path === '/taskList' && hasTaskRedDot" class="menu-item-with-badge"> <div v-if="item.path === '/taskList' && hasTaskRedDot" class="menu-item-with-badge">
...@@ -29,13 +22,7 @@ ...@@ -29,13 +22,7 @@
</el-menu> </el-menu>
<!-- 展开收起按钮 --> <!-- 展开收起按钮 -->
<el-button <el-button type="text" size="mini" v-if="shouldShowToggle" class="menu-toggle-btn" @click="toggleMenu">
type="text"
size="mini"
v-if="shouldShowToggle"
class="menu-toggle-btn"
@click="toggleMenu"
>
<i :class="isMenuExpanded ? 'el-icon-arrow-up' : 'el-icon-arrow-down'"></i> <i :class="isMenuExpanded ? 'el-icon-arrow-up' : 'el-icon-arrow-down'"></i>
<span>{{ isMenuExpanded ? '收起' : '展开' }}</span> <span>{{ isMenuExpanded ? '收起' : '展开' }}</span>
</el-button> </el-button>
...@@ -112,6 +99,10 @@ export default { ...@@ -112,6 +99,10 @@ export default {
path: '/taskList', path: '/taskList',
hasRedDot: false // 红点状态 hasRedDot: false // 红点状态
}, },
{
label: '微言助手',
path: '/aiChat'
},
// { // {
// label: '通讯录', // label: '通讯录',
// path: '/addressBook' // path: '/addressBook'
...@@ -210,7 +201,7 @@ export default { ...@@ -210,7 +201,7 @@ export default {
...mapActions('game', ['getTaskUnReadData']), ...mapActions('game', ['getTaskUnReadData']),
// 设置缓存 // 设置缓存
cacheCorp_id(corp_id) { cacheCorp_id(corp_id) {
Cookies.set('corp_id', corp_id, { expires: 7 }) Cookies.set('corp_id', corp_id, { expires: 30 })
this.set_corp_id(corp_id) this.set_corp_id(corp_id)
}, },
initVuexValue() { initVuexValue() {
......
import request from '@/utils/request'
// 清除上下文
export function corp_beta_question_session_clearTag(data) {
return request({
url: '/sidebar/corp_beta_question_session/clearTag',
method: 'post',
data
})
}
// 侧边栏-重试
export function retry(data) {
return request({
url: '/sidebar/corp_beta_question_log/retry',
method: 'post',
data
})
}
// 聊天记录
export function corp_beta_question_log_index(data) {
return request({
url: '/sidebar/corp_beta_question_log/index',
method: 'post',
data
})
}
// 发送欢迎语
export function welcomemsg(data) {
return request({
url: '/sidebar/corp_beta_question_session/welcome',
method: 'post',
data
})
}
// 配置-聊天
export function corp_beta_question_log_chat(data) {
return request({
url: '/sidebar/corp_beta_question_log/chat',
method: 'post',
data
})
}
// 配置-列表
export function corp_beta_question_config(data) {
return request({
url: '/sidebar/corp_beta_question_config/index',
method: 'post',
data
})
}
// 问答模块
export function getAiResponse(data) {
return request({
url: '/sidebar/corp_beta_question_log/chat',
method: 'post',
data
})
}
// 赞同模块
export function answerComment(data) {
return request({
url: '/sidebar/corp_beta_question_log/answerComment',
method: 'post',
data
})
}
...@@ -210,24 +210,6 @@ export function logClickTime(data) { ...@@ -210,24 +210,6 @@ export function logClickTime(data) {
}) })
} }
// 大模型 ai
export function getCorpBetaConfig(data) {
return request({
url: '/admin/corp_beta_config/getCorpBetaConfig',
method: 'post',
data
})
}
// 问答模块
export function getAiResponse(data) {
return request({
url: returnApi('/corp_beta_question_log/getAiResponse'),
method: 'post',
data
})
}
// 问答模块 // 问答模块
export function Aihistory(data) { export function Aihistory(data) {
return request({ return request({
...@@ -236,31 +218,8 @@ export function Aihistory(data) { ...@@ -236,31 +218,8 @@ export function Aihistory(data) {
data data
}) })
} }
// 赞同模块
export function answerComment(data) {
return request({
url: returnApi('/corp_beta_question_log/answerComment'),
method: 'post',
data
})
}
// 复制次数统计
export function calAnswerClickTime(data) {
return request({
url: returnApi('/corp_beta_question_log/calAnswerClickTime'),
method: 'post',
data
})
}
// 获取来源
export function getQuoteData(data) {
return request({
url: returnApi('/corp_beta_question_log/getQuoteData'),
method: 'post',
data
})
}
// 同步知识库 // 同步知识库
export function asyncKnowledge(data) { export function asyncKnowledge(data) {
return request({ return request({
...@@ -269,7 +228,6 @@ export function asyncKnowledge(data) { ...@@ -269,7 +228,6 @@ export function asyncKnowledge(data) {
data data
}) })
} }
/* -------------------- 机器人知识库 ----------------------- */ /* -------------------- 机器人知识库 ----------------------- */
// 新增机器人知识库任务 // 新增机器人知识库任务
......
...@@ -141,4 +141,3 @@ export function cserSelected(data) { ...@@ -141,4 +141,3 @@ export function cserSelected(data) {
data data
}) })
} }
...@@ -259,3 +259,13 @@ export function shareInfoDel(data) { ...@@ -259,3 +259,13 @@ export function shareInfoDel(data) {
data data
}) })
} }
// 跟进总结列表
export function corp_follow_up_summary_index(data) {
return request({
url: returnApi('/corp_follow_up_summary/index'),
method: 'post',
data
})
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" 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(-1144, -363)" fill-rule="nonzero">
<g id="4.数据展示/10.Popover气泡卡片/上左⬇️" transform="translate(1132, 287)">
<g id="编组-10备份-2" transform="translate(0, 60)">
<g id="安卓" transform="translate(12, 16)">
<rect id="矩形" fill="#323335" opacity="0" x="0" y="0" width="16" height="16"></rect>
<g id="编组" transform="translate(2.223, 1.0636)" fill="#93C85C">
<path d="M2.31100462,10.4052376 C2.31100462,10.7232376 2.57100462,10.9832376 2.88900462,10.9832376 L3.46600462,10.9832376 L3.46600462,13.0062376 C3.46600462,13.4847924 3.85394989,13.8727376 4.33250462,13.8727376 C4.81105936,13.8727376 5.19900462,13.4847924 5.19900462,13.0062376 L5.19900462,10.9832376 L6.35500462,10.9832376 L6.35500462,13.0062376 C6.35500462,13.4847924 6.74294989,13.8727376 7.22150462,13.8727376 C7.70005936,13.8727376 8.08800462,13.4847924 8.08800462,13.0062376 L8.08800462,10.9832376 L8.66500462,10.9832376 C8.98376958,10.9821403 9.24190731,10.7240026 9.24300462,10.4052376 L9.24300462,4.62823765 L2.31100462,4.62823765 L2.31100462,10.4062376 L2.31100462,10.4052376 Z M0.867004622,4.62823765 C0.636899047,4.62770499 0.416064587,4.71887832 0.253354938,4.88158796 C0.09064529,5.04429761 -0.000528032368,5.26513207 2.30072207e-06,5.49523765 L2.30072207e-06,9.53823765 C2.30072207e-06,10.0167924 0.387949886,10.4047376 0.866504622,10.4047376 C1.34505936,10.4047376 1.73300694,10.0167924 1.73300694,9.53823765 L1.73300694,5.49423765 C1.73353641,5.26430567 1.64250019,5.04362343 1.48000714,4.88094274 C1.31751409,4.71826206 1.09693706,4.62697121 0.867004622,4.62723707 L0.867004622,4.62823765 Z M10.6870046,4.62823765 C10.4570722,4.62797121 10.2364952,4.71926206 10.0740021,4.88194274 C9.91150905,5.04462343 9.82047283,5.26530567 9.8210023,5.49523765 L9.8210023,9.53823765 C9.8210023,10.0167924 10.2089499,10.4047376 10.6875046,10.4047376 C11.1660594,10.4047376 11.5540069,10.0167924 11.5540069,9.53823765 L11.5540069,5.49423765 C11.5545373,5.26413207 11.463364,5.04329761 11.3006543,4.88058796 C11.1379447,4.71787832 10.9171102,4.62670499 10.6870046,4.62723533 L10.6870046,4.62823765 Z M7.81700462,1.25323765 L8.57000462,0.499237647 C8.64738311,0.427522384 8.67935601,0.319238135 8.6533421,0.216994377 C8.62732819,0.114750619 8.54749165,0.0349140831 8.44524789,0.00890016922 C8.34300413,-0.0171137447 8.23471988,0.0148591565 8.16300462,0.092237647 L7.30800462,0.944237647 C6.34087286,0.463540973 5.20419506,0.464651733 4.23800462,0.947237647 L3.38000462,0.089237647 C3.30730107,0.0163554622 3.20123804,-0.0122035721 3.10176845,0.0143184562 C3.00229885,0.0408404846 2.92453449,0.118414248 2.89776844,0.217818461 C2.8710024,0.317222673 2.89930107,0.423355468 2.97200462,0.496237647 L3.72900462,1.25323765 C2.83823676,1.9068514 2.31172461,2.94539476 2.31100462,4.05023765 L9.24300462,4.05023765 C9.24300462,2.90023765 8.68000462,1.88323765 7.81600462,1.25323765 L7.81700462,1.25323765 Z M4.62100462,2.89323765 L4.04300462,2.89323765 L4.04300462,2.31623765 L4.62100462,2.31623765 L4.62100462,2.89323765 Z M7.50900462,2.89323765 L6.93100462,2.89323765 L6.93100462,2.31623765 L7.50900462,2.31623765 L7.50900462,2.89323765 Z" id="形状"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>H5</title>
<g id="企微客户端应用" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="发送游戏" transform="translate(-1144, -303)" fill-rule="nonzero">
<g id="4.数据展示/10.Popover气泡卡片/上左⬇️" transform="translate(1132, 287)">
<g id="H5" transform="translate(12, 16)">
<rect id="矩形" fill="#323335" opacity="0" x="0" y="0" width="16" height="16"></rect>
<path d="M2.133,1.333 L3.2,13.333 L7.993,14.667 L12.8,13.333 L13.867,1.333 L2.133,1.333 L2.133,1.333 Z M11.367,5.107 L5.7,5.107 L5.873,7.02 L11.2,7.02 L10.827,11.18 L8,11.96 L5.173,11.173 L5,9.227 L6.067,9.227 L6.167,10.36 L8,10.853 L8.053,10.84 L9.827,10.36 L10.027,8.093 L4.893,8.093 L4.533,4.04 L11.467,4.04 L11.367,5.107 L11.367,5.107 Z" id="形状" fill="#CC337D" opacity="0.99"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>iOS</title>
<g id="企微客户端应用" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="发送游戏" transform="translate(-1144, -423)" fill-rule="nonzero">
<g id="4.数据展示/10.Popover气泡卡片/上左⬇️" transform="translate(1132, 287)">
<g id="编组-10备份-4" transform="translate(0, 120)">
<g id="iOS" transform="translate(12, 16)">
<rect id="矩形" fill="#323335" opacity="0" x="0" y="0" width="16" height="16"></rect>
<path d="M13.2677706,11.0140014 C13.2507706,11.0640014 12.9977706,11.9500014 12.3727706,12.8610014 C11.8327706,13.6470014 11.2737706,14.4390014 10.3917706,14.4530014 C9.52377064,14.4680014 9.24577064,13.9350014 8.25577064,13.9350014 C7.26577064,13.9350014 6.95577064,14.4390014 6.13577064,14.4680014 C5.28677064,14.5030014 4.63577064,13.6100014 4.09277064,12.8280014 C2.98377064,11.2250014 2.13077064,8.28700144 3.27577064,6.31800144 C3.83877064,5.33200144 4.85077064,4.70600144 5.95277064,4.68900144 C6.78277064,4.67300144 7.57377064,5.25200144 8.07877064,5.25200144 C8.59677064,5.25200144 9.55277064,4.55200144 10.5617706,4.65700144 C10.9837706,4.67500144 12.1647706,4.83300144 12.9257706,5.93700144 C12.8657706,5.97700144 11.5127706,6.77600144 11.5277706,8.40100144 C11.5477706,10.3640014 13.2487706,11.0070014 13.2677706,11.0140014 M9.90177064,3.60500144 C10.3557706,3.05100144 10.6547706,2.28800144 10.5767706,1.53100144 C9.92677064,1.55600144 9.13577064,1.96200144 8.66577064,2.51300144 C8.24977064,2.99500144 7.88377064,3.76900144 7.98577064,4.51800144 C8.70677064,4.56200144 9.44877064,4.14000144 9.90177064,3.60500144" id="形状" fill="#A995FF"></path>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><circle fill="#111" cx="8" cy="8" r="8"/><path d="M4.295 10.035a3.095 3.095 0 0 1 3.091-3.092v1.855c-.682 0-1.236.554-1.236 1.237 0 .607.328 1.26 1.05 1.26.048 0 1.176-.01 1.176-.97v-7.03h1.976c.002.923.75 1.67 1.673 1.671l-.001 1.852a3.433 3.433 0 0 1-1.793-.49v3.998c0 1.835-1.562 2.825-3.032 2.825-1.655 0-2.904-1.34-2.904-3.116Z" fill="#FF4040" fill-rule="nonzero"/><path d="M3.8 9.54a3.095 3.095 0 0 1 3.092-3.092v1.855A1.239 1.239 0 0 0 5.655 9.54c0 .607.329 1.261 1.05 1.261.048 0 1.176-.011 1.176-.97V2.8h1.977c.002.923.75 1.67 1.673 1.672l-.002 1.851a3.433 3.433 0 0 1-1.792-.489l-.001 3.997c0 1.835-1.562 2.825-3.031 2.825-1.656 0-2.905-1.34-2.905-3.116Z" fill="#00F5FF" fill-rule="nonzero"/><path d="M6.892 6.98c-1.996.254-3.575 2.8-1.937 5.09 1.513 1.238 4.697.519 4.785-2.16l-.002-4.074a3.52 3.52 0 0 0 1.796.486V4.889a1.822 1.822 0 0 1-.916-.689 1.7 1.7 0 0 1-.687-.91H8.377l-.002 7.056c0 .986-1.646 1.337-2.063.38-1.046-.5-.81-2.4.582-2.42L6.892 6.98Z" fill="#FFF" fill-rule="nonzero"/></g></svg>
\ No newline at end of file
<svg t="1718879942311" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4563" width="200" height="200"><path d="M256 960a128 128 0 0 1-128-128V466.645333A85.376 85.376 0 0 1 64 384v-106.666667a85.333333 85.333333 0 0 1 85.333333-85.333333h290.901334l-68.629334-68.629333a8.533333 8.533333 0 0 1 0-12.074667l33.194667-33.173333a8.533333 8.533333 0 0 1 12.053333 0l84.48 84.48 84.48-84.48a8.533333 8.533333 0 0 1 12.053334 0l33.194666 33.173333a8.533333 8.533333 0 0 1 0 12.074667l-68.650666 68.608L874.666667 192a85.333333 85.333333 0 0 1 85.333333 85.333333v106.666667a85.376 85.376 0 0 1-64 82.645333V832a128 128 0 0 1-128 128H256z m213.333333-490.666667H192v362.666667a64 64 0 0 0 60.245333 63.893333L256 896h213.333333V469.333333z m362.666667 0H533.333333v426.666667h234.666667a64 64 0 0 0 63.893333-60.245333L832 832V469.333333zM469.333333 256H149.333333a21.333333 21.333333 0 0 0-21.184 18.837333L128 277.333333v106.666667a21.333333 21.333333 0 0 0 18.837333 21.184L149.333333 405.333333h320v-149.333333z m405.333334 0H533.333333v149.333333h341.333334a21.333333 21.333333 0 0 0 21.184-18.837333L896 384v-106.666667a21.333333 21.333333 0 0 0-18.837333-21.184L874.666667 256z" fill="#8CA4BA" p-id="4564"></path></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="50px" height="54px" viewBox="0 0 50 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 60.1 (88133) - https://sketch.com -->
<title>三角形</title>
<desc>Created with Sketch.</desc>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="订单信息" transform="translate(-1762.000000, -133.000000)" fill="#FFE59A">
<g id="编组-4" transform="translate(1378.000000, 133.000000)">
<polygon id="三角形" transform="translate(409.151650, 26.961791) scale(-1, -1) translate(-409.151650, -26.961791) " points="384.3033 -9.09494702e-13 434 53.9235818 404.735562 53.9235818 384.3033 31.9235818"></polygon>
</g>
</g>
</g>
</svg>
\ 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="#3491FA " 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="#3491FA ">
<tspan x="7" y="29">已完成</tspan>
</text>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="zhinengkefu(1)">
<rect id="&#231;&#159;&#169;&#229;&#189;&#162;" opacity="0.01" width="30" height="30" fill="#00BF8A"/>
<path id="&#229;&#189;&#162;&#231;&#138;&#182;" fill-rule="evenodd" clip-rule="evenodd" d="M27.0653 10.3441C25.5488 6.28958 21.6797 3.59819 17.3509 3.58671H12.6536C8.32641 3.60169 4.45971 6.29199 2.9414 10.3441C2.91233 10.3533 2.88393 10.3645 2.8564 10.3776L2.74232 5.69825C3.19914 5.51413 3.49954 5.07237 3.50283 4.57985V2.19318C3.50283 1.52362 2.96005 0.980835 2.29049 0.980835C1.62093 0.980835 1.07814 1.52362 1.07814 2.19318V4.5709C1.08106 5.06287 1.38048 5.50448 1.83642 5.6893L1.70892 11.0129C0.631358 11.8411 -0.000118498 13.1231 0 14.4822V18.1215C0.00549071 19.9831 1.18143 21.64 2.93692 22.2595C4.45561 26.3136 8.3244 29.005 12.6536 29.0192H17.3509C21.6795 29.0048 25.5474 26.3133 27.0653 22.2595C28.8195 21.6386 29.9942 19.9823 30 18.1215V14.4822C29.9962 12.6207 28.8208 10.9633 27.0653 10.3441ZM25.9715 17.8016C25.9629 20.261 23.9707 22.2522 21.5113 22.2595H8.49985C6.03525 22.2596 4.03487 20.2662 4.02625 17.8016V14.8065C4.03364 12.3411 6.03438 10.3463 8.49985 10.3463H21.5248C23.985 10.3537 25.9776 12.3463 25.9849 14.8065L25.9715 17.8016ZM15.8992 17.9761L18.5834 13.5673L20.4981 16.6586L24.0255 17.2334L19.9993 17.428L18.6572 15.7929L15.9283 20.6244L12.5462 14.2876L10.7053 17.3923L5.99016 17.22L9.97614 16.6161L12.5753 11.4714L15.8992 17.9761Z" fill="#00BF8A"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><defs><linearGradient id="a" y2="75.742%" x2="89.14%" y1="0%" x1="17.97%"><stop offset="0%" stop-color="#00EEAC"/><stop offset="53.553%" stop-color="#A9DD00"/><stop offset="100%" stop-color="#F7B500"/></linearGradient></defs><path fill="url(#a)" d="M10.673 5.201a2.604 2.604 0 0 1-2.6-2.6C8.072 1.167 9.238 0 10.672 0c1.434 0 2.6 1.167 2.6 2.6 0 1.434-1.166 2.601-2.6 2.601ZM5.137 7.266A2.378 2.378 0 0 1 2.76 4.89a2.378 2.378 0 0 1 2.376-2.376A2.378 2.378 0 0 1 7.512 4.89a2.378 2.378 0 0 1-2.375 2.376ZM2.784 12.64A2.097 2.097 0 0 1 .69 10.545 2.097 2.097 0 0 1 2.784 8.45a2.097 2.097 0 0 1 2.094 2.095 2.097 2.097 0 0 1-2.094 2.095Zm2.353 5.324a1.778 1.778 0 0 1-1.776-1.776 1.779 1.779 0 0 1 1.776-1.776c.98.001 1.774.796 1.776 1.776 0 .98-.797 1.776-1.776 1.776ZM10.673 20a1.553 1.553 0 0 1-1.552-1.552c0-.856.697-1.551 1.552-1.551.857 0 1.55.695 1.551 1.551 0 .856-.695 1.552-1.551 1.552Zm5.62-2.623a1.254 1.254 0 0 1-1.252-1.252c0-.692.56-1.252 1.252-1.253a1.254 1.254 0 0 1 0 2.505Zm2.302-5.795a1.029 1.029 0 0 1 0-2.055c.567 0 1.027.46 1.028 1.027a1.03 1.03 0 0 1-1.028 1.028Zm-3.1-6.615a.797.797 0 1 0 1.596 0 .797.797 0 0 0-1.595 0Z" fill-rule="nonzero"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>发送备份</title>
<defs>
<linearGradient x1="14.2586009%" y1="0%" x2="93.6750771%" y2="75.7420422%" id="linearGradient-1">
<stop stop-color="#00EEAC" offset="0%"></stop>
<stop stop-color="#A9DD00" offset="53.5526729%"></stop>
<stop stop-color="#F7B500" offset="100%"></stop>
</linearGradient>
</defs>
<g id="游戏" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="游戏-快捷回复AI" transform="translate(-1727, -981)" fill-rule="nonzero">
<g id="编组-4备份-2" transform="translate(1378, 169.68)">
<g id="4.数据展示/10.Popover气泡卡片/⬅️右上备份-16" transform="translate(0, 798.32)">
<g id="发送备份" transform="translate(349, 13)">
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="20" height="20"></rect>
<polygon id="路径" fill="url(#linearGradient-1)" points="0 20 2.08 10.74 13.58 10.02 2.08 9.24 0 0 20 10"></polygon>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 60.1 (88133) - https://sketch.com -->
<title>复制</title>
<desc>Created with Sketch.</desc>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="快捷回复" transform="translate(-1093.000000, -386.000000)" fill-rule="nonzero">
<g id="编组-6" transform="translate(1086.000000, 379.000000)">
<g id="复制" transform="translate(6.000000, 6.000000)">
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="20" height="20"></rect>
<path d="M13,4.375 L4.00976562,4.375 C2.80273438,4.375 1.82226562,5.35546875 1.82226562,6.5625 L1.82226562,16.5625 C1.82226562,17.7695312 2.80273438,18.75 4.00976562,18.75 L13,18.75 C14.2070312,18.75 15.1875,17.7695312 15.1875,16.5625 L15.1875,6.5625 C15.1875,5.35546875 14.2070312,4.375 13,4.375 Z M13.9375,16.5625 C13.9375,17.0800781 13.5175781,17.5 13,17.5 L4.00976562,17.5 C3.4921875,17.5 3.07226562,17.0800781 3.07226562,16.5625 L3.07226562,6.5625 C3.07226562,6.04492188 3.4921875,5.625 4.00976562,5.625 L13,5.625 C13.5175781,5.625 13.9375,6.04492188 13.9375,6.5625 L13.9375,16.5625 Z M16.0292969,1.25 L5.88476562,1.25 C4.67773438,1.25 3.69726562,2.23046875 3.69726562,3.4375 L4.94726562,3.4375 C4.94726562,2.91992188 5.3671875,2.5 5.88476562,2.5 L16.0292969,2.5 C16.546875,2.5 16.9667969,2.91992188 16.9667969,3.4375 L16.9667969,14.6875 C16.9667969,15.2050781 16.546875,15.625 16.0292969,15.625 L16.0292969,16.875 C17.2363281,16.875 18.2167969,15.8945312 18.2167969,14.6875 L18.2167969,3.4375 C18.2167969,2.23046875 17.2363281,1.25 16.0292969,1.25 Z M4.75585938,7.8125 L12.2558594,7.8125 L12.2558594,9.0625 L4.75585938,9.0625 L4.75585938,7.8125 Z M4.75585938,10.9375 L12.2558594,10.9375 L12.2558594,12.1875 L4.75585938,12.1875 L4.75585938,10.9375 Z M4.75585937,14.0625 L9.57617188,14.0625 L9.57617188,15.3125 L4.75585937,15.3125 L4.75585937,14.0625 Z" id="形状" fill="#8CA4BA"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" 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="游戏-快捷回复AI" transform="translate(-1476, -617)" fill-rule="nonzero">
<g id="编组-4备份-2" transform="translate(1378, 169.68)">
<g id="不点赞" transform="translate(106, 455.32) scale(-1, 1) rotate(180) translate(-106, -455.32)translate(98, 447.32)">
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="16" height="16"></rect>
<path d="M13.395,5.3905 L9.257,5.3905 C9.4535,4.699 9.553,4.0845 9.553,3.5435 C9.553,2.316 8.431,1.1405 7.357,1.2965 C6.41,1.434 5.958,2.2325 5.958,3.258 L5.958,4.1845 C5.958,5.373 5.0485,6.3865 3.892,6.498 L2.0525,6.495 C1.4712203,6.495 1,6.9662203 1,7.5475 L1,13.625 C1,14.2065 1.471,14.6775 2.0525,14.6775 L12.243,14.6775 C13.0141535,14.6775 13.6763396,14.1291539 13.82,13.3715 L14.972,7.294 C15.0608892,6.82439182 14.9358631,6.3395998 14.6309458,5.97155283 C14.3260285,5.60350586 13.8729468,5.39049941 13.395,5.3905 Z M2,13.625 L2,7.5475 C2,7.5185 2.0235,7.495 2.0525,7.495 L3.25,7.495 L3.25,13.6775 L2.0525,13.6775 C2.02350505,13.6775 2,13.6539949 2,13.625 L2,13.625 Z M13.9895,7.108 L12.8375,13.1855 C12.7832202,13.4709991 12.5336132,13.6775 12.243,13.6775 L4.25,13.6775 L4.25,7.451 C5.8188449,7.15150285 6.95470437,5.78117313 6.958,4.184 L6.958,3.258 C6.958,2.671 7.1465,2.3375 7.5005,2.2865 C7.923,2.225 8.553,2.8855 8.553,3.544 C8.553,4.127 8.4045,4.8565 8.102,5.727 C8.04891415,5.87989332 8.07311785,6.0490253 8.16695458,6.1808932 C8.2607913,6.31276111 8.41265293,6.39105216 8.5745,6.391 L13.395,6.391 C13.5750607,6.3910127 13.7457587,6.47122841 13.8606881,6.60983965 C13.9756175,6.74845089 14.0228335,6.93105165 13.9895,7.108 Z" id="形状" fill="#8CA4BA"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" 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="游戏-快捷回复AI" transform="translate(-1528, -617)" fill-rule="nonzero">
<g id="编组-4备份-2" transform="translate(1378, 169.68)">
<g id="不够好" transform="translate(158, 455.32) scale(-1, 1) rotate(180) translate(-158, -455.32)translate(150, 447.32)">
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="16" height="16"></rect>
<path d="M1,7.5475 L1,13.625 C1,14.2065 1.471,14.6775 2.0525,14.6775 L3,14.6775 L3,6.505 L2.0525,6.495 C1.4712203,6.495 1,6.9662203 1,7.5475 Z M13.395,5.3905 L9.2105,5.417 C9.407,4.7255 9.5065,4.111 9.5065,3.57 C9.5065,2.3425 8.431,1.1405 7.357,1.2965 C6.41,1.434 6.306,2.2525 6.306,3.278 L6.306,4.204 C6.306,5.3925 5.3085,6.405 4.152,6.5165 L4,6.515 L4,14.6775 L12.243,14.6775 C13.0141535,14.6775 13.6763396,14.1291539 13.82,13.3715 L14.972,7.294 C15.0608892,6.82439182 14.9358631,6.3395998 14.6309458,5.97155283 C14.3260285,5.60350586 13.8729468,5.39049941 13.395,5.3905 L13.395,5.3905 Z" id="形状" fill="#8CA4BA"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>点赞</title>
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="16" height="16"></rect>
<path d="M13.395,5.3905 L9.257,5.3905 C9.4535,4.699 9.553,4.0845 9.553,3.5435 C9.553,2.316 8.431,1.1405 7.357,1.2965 C6.41,1.434 5.958,2.2325 5.958,3.258 L5.958,4.1845 C5.958,5.373 5.0485,6.3865 3.892,6.498 L2.0525,6.495 C1.4712203,6.495 1,6.9662203 1,7.5475 L1,13.625 C1,14.2065 1.471,14.6775 2.0525,14.6775 L12.243,14.6775 C13.0141535,14.6775 13.6763396,14.1291539 13.82,13.3715 L14.972,7.294 C15.0608892,6.82439182 14.9358631,6.3395998 14.6309458,5.97155283 C14.3260285,5.60350586 13.8729468,5.39049941 13.395,5.3905 Z M2,13.625 L2,7.5475 C2,7.5185 2.0235,7.495 2.0525,7.495 L3.25,7.495 L3.25,13.6775 L2.0525,13.6775 C2.02350505,13.6775 2,13.6539949 2,13.625 L2,13.625 Z M13.9895,7.108 L12.8375,13.1855 C12.7832202,13.4709991 12.5336132,13.6775 12.243,13.6775 L4.25,13.6775 L4.25,7.451 C5.8188449,7.15150285 6.95470437,5.78117313 6.958,4.184 L6.958,3.258 C6.958,2.671 7.1465,2.3375 7.5005,2.2865 C7.923,2.225 8.553,2.8855 8.553,3.544 C8.553,4.127 8.4045,4.8565 8.102,5.727 C8.04891415,5.87989332 8.07311785,6.0490253 8.16695458,6.1808932 C8.2607913,6.31276111 8.41265293,6.39105216 8.5745,6.391 L13.395,6.391 C13.5750607,6.3910127 13.7457587,6.47122841 13.8606881,6.60983965 C13.9756175,6.74845089 14.0228335,6.93105165 13.9895,7.108 Z" id="形状" fill="#8CA4BA"></path>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" 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="游戏-快捷回复AI" transform="translate(-1502, -617)" fill-rule="nonzero">
<g id="编组-4备份-2" transform="translate(1378, 169.68)">
<g id="已点赞" transform="translate(124, 447.32)">
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="16" height="16"></rect>
<path d="M1,7.5475 L1,13.625 C1,14.2065 1.471,14.6775 2.0525,14.6775 L3,14.6775 L3,6.505 L2.0525,6.495 C1.4712203,6.495 1,6.9662203 1,7.5475 Z M13.395,5.3905 L9.2105,5.417 C9.407,4.7255 9.5065,4.111 9.5065,3.57 C9.5065,2.3425 8.431,1.1405 7.357,1.2965 C6.41,1.434 6.306,2.2525 6.306,3.278 L6.306,4.204 C6.306,5.3925 5.3085,6.405 4.152,6.5165 L4,6.515 L4,14.6775 L12.243,14.6775 C13.0141535,14.6775 13.6763396,14.1291539 13.82,13.3715 L14.972,7.294 C15.0608892,6.82439182 14.9358631,6.3395998 14.6309458,5.97155283 C14.3260285,5.60350586 13.8729468,5.39049941 13.395,5.3905 L13.395,5.3905 Z" id="形状" fill="#8CA4BA"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 60.1 (88133) - https://sketch.com -->
<title></title>
<desc>Created with Sketch.</desc>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="账号管理" transform="translate(-1147.000000, -762.000000)" fill-rule="nonzero">
<g id="4.数据展示/10.Popover气泡卡片/上左⬇️" transform="translate(1136.000000, 649.000000)">
<g id="怒" transform="translate(11.000000, 113.000000)">
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="14" height="14"></rect>
<path d="M12.768,4.83 C12.8986667,5.166 12.9966667,5.51366667 13.062,5.873 C13.1273333,6.23233333 13.16,6.608 13.16,7 C13.16,7.84 12.999,8.63333333 12.677,9.38 C12.355,10.1266667 11.9163333,10.7753333 11.361,11.326 C10.8056667,11.8766667 10.157,12.313 9.415,12.635 C8.673,12.957 7.87733333,13.118 7.028,13.118 C6.188,13.118 5.39466667,12.957 4.648,12.635 C3.90133333,12.313 3.25266667,11.8766667 2.702,11.326 C2.15133333,10.7753333 1.715,10.1266667 1.393,9.38 C1.071,8.63333333 0.91,7.84 0.91,7 C0.91,6.61733333 0.942666667,6.24633333 1.008,5.887 C1.07333333,5.52766667 1.17133333,5.18 1.302,4.844 C1.302,4.77138003 1.80645408,3.67280698 2.058,3.416 C2.618,2.64133333 3.32966667,2.023 4.193,1.561 C5.05633333,1.099 6.00133333,0.868 7.028,0.868 C8.05466667,0.868 8.99733333,1.09666667 9.856,1.554 C10.7146667,2.01133333 11.424,2.62266667 11.984,3.388 C12.1504838,3.56624497 12.768,4.80553547 12.768,4.83 Z" id="形状" fill="#FFD840"></path>
<path d="M3.416,3.752 C3.53733333,4.15333333 3.668,4.51733333 3.808,4.844 C3.92933333,5.124 4.06466667,5.39466667 4.214,5.656 C4.36333333,5.91733333 4.51733333,6.09 4.676,6.174 C4.83466667,6.258 5.00266667,6.26266667 5.18,6.188 C5.35733333,6.11333333 5.52066667,6.01533333 5.67,5.894 C5.838,5.754 6.01066667,5.58133333 6.188,5.376 L3.416,3.752 Z" id="路径" fill="#873618"></path>
<path d="M9.9100167,10.630065 C9.97364586,10.6075526 10.0233561,10.5775361 10.0591476,10.5400154 C10.094939,10.5024948 10.1187999,10.4612221 10.1307304,10.4161973 C10.1426608,10.3711726 10.1486261,10.3298999 10.1486261,10.2923792 C10.1486261,10.2548586 10.1446492,10.2248421 10.1366956,10.2023297 C10.1207883,10.164809 10.1088578,10.1385446 10.1009042,10.1235363 C10.0929505,10.1085281 10.0889737,10.0935198 10.0889737,10.0785116 C9.89808623,9.66578455 9.53818376,9.33185086 9.00926632,9.07671052 C8.48034888,8.82157017 7.85002246,8.694 7.11828706,8.694 C6.75241936,8.694 6.40444736,8.73152064 6.07437106,8.80656192 C5.74429476,8.88160319 5.44802146,8.98478495 5.18555115,9.11610719 C4.92308085,9.24742942 4.69839035,9.40501611 4.51147968,9.58886724 C4.32456901,9.77271837 4.19532226,9.96970172 4.12373945,10.1798173 C4.12373945,10.1873214 4.11976263,10.1948256 4.11180898,10.2023297 C4.09590169,10.2473545 4.09987852,10.3242718 4.12373945,10.4330816 C4.14760039,10.5418915 4.2191832,10.6075526 4.33848789,10.630065 C4.52142174,10.4199494 4.74412382,10.2285941 5.00659413,10.0559992 C5.23724985,9.90591664 5.5235811,9.77084234 5.86558786,9.65077629 C6.20759463,9.53071025 6.61720738,9.47067723 7.09442612,9.47067723 C7.57164486,9.47067723 7.98722285,9.53071025 8.34116008,9.65077629 C8.69509732,9.77084234 8.9873938,9.90591664 9.21804952,10.0559992 C9.48847348,10.2285941 9.7191292,10.4199494 9.9100167,10.630065 L9.9100167,10.630065 Z" id="路径" fill="#873618"></path>
<path d="M9.338,6.174 C9.49666667,6.09 9.65066667,5.91733333 9.8,5.656 C9.94933333,5.39466667 10.0846667,5.124 10.206,4.844 C10.346,4.51733333 10.4766667,4.15333333 10.598,3.752 L7.826,5.376 C8.00333333,5.58133333 8.176,5.754 8.344,5.894 C8.49333333,6.01533333 8.65666667,6.11333333 8.834,6.188 C9.01133333,6.26266667 9.17933333,6.258 9.338,6.174 L9.338,6.174 Z" id="路径" fill="#873618"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 11 10">
<defs>
<linearGradient id="a" y2="50%" x2="100%" y1="50%" x1="0%">
<stop offset="0%" stop-color="#6EE7E9" />
<stop offset="47.431%" stop-color="#9FF2CD" />
<stop offset="100%" stop-color="#E3FDB2" />
</linearGradient>
</defs>
<path fill="url(#a)"
d="M8.995 4.884a.141.141 0 0 1-.009.264c-.726.247-2.33.82-2.696 1.188-.447.447-.932 1.887-1.154 2.607a.14.14 0 0 1-.267.006c-.255-.714-.807-2.144-1.275-2.613-.348-.348-1.892-.936-2.58-1.188a.141.141 0 0 1-.01-.261c.668-.295 2.166-.985 2.59-1.408.402-.403 1.006-1.785 1.277-2.437a.141.141 0 0 1 .263.007c.234.655.755 2.029 1.156 2.43.423.422 1.996 1.11 2.705 1.405Z"
transform="translate(.157)" fill-rule="nonzero" />
</svg>
\ No newline at end of file
<svg t="1756195887325" class="icon" viewBox="0 0 1034 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7768" width="200" height="200"><path d="M1011.982 842.518 606.673 140.565c-49.575-85.822-130.595-85.822-180.157 0L21.205 842.518c-49.562 85.91-9.015 155.99 90.04 155.99l810.693 0C1020.997 998.507 1061.502 928.423 1011.982 842.518zM460.924 339.737c14.565-15.747 33.082-23.622 55.665-23.622 22.595 0 41.095 7.792 55.675 23.307 14.485 15.55 21.725 34.997 21.725 58.382 0 20.12-30.235 168.07-40.32 275.704l-72.825 0c-8.845-107.635-41.652-255.584-41.652-275.704C439.194 374.774 446.446 355.407 460.924 339.737zM571.244 851.538c-15.32 14.92-33.55 22.355-54.65 22.355-21.095 0-39.33-7.435-54.647-22.355-15.275-14.885-22.867-32.915-22.867-54.09 0-21.065 7.592-39.29 22.867-54.565 15.317-15.28 33.552-22.92 54.647-22.92 21.1 0 39.33 7.64 54.65 22.92 15.265 15.275 22.875 33.5 22.875 54.565C594.119 818.623 586.509 836.653 571.244 851.538z" p-id="7769"></path></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>VIP自助工具</title>
<g id="游戏" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="游戏-违规记录" transform="translate(-564, -468)" fill-rule="nonzero">
<g id="4.数据展示/10.Popover气泡卡片/上左⬇️" transform="translate(552, 452)">
<g id="VIP自助工具" transform="translate(12, 16)">
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="16" height="16"></rect>
<path d="M7.99821895,14.321585 C7.56391795,14.321585 7.15856419,14.1264531 6.85937495,13.7875521 L1.12654628,7.17392176 C0.595742151,6.55774355 0.576419359,5.61294483 1.09759904,4.97622538 L3.26912253,2.31640027 C3.55866885,1.95695807 3.98330845,1.75156533 4.43691378,1.75156533 L11.5884714,1.75156533 C12.0324338,1.75156533 12.4570734,1.95697773 12.7466197,2.31640027 L14.9277861,4.97622538 C15.4489658,5.61294483 15.4393044,6.55774355 14.8988389,7.17392176 L9.12742004,13.7875521 C8.83787372,14.1264531 8.42285856,14.321585 7.99821895,14.321585 Z M7.41909807,13.0918286 C7.55918834,13.2618573 7.75534332,13.351868 7.9701627,13.351868 C8.17564989,13.351868 8.37178699,13.2618573 8.52124521,13.0918286 L14.1160422,6.65100913 C14.3775584,6.35097981 14.3868906,5.89091444 14.1347066,5.58087331 L12.0051415,2.99054812 C11.8650333,2.82051939 11.659564,2.72051599 11.4447268,2.72051599 L4.5142988,2.72051599 C4.29947942,2.72051599 4.09399224,2.82051939 3.95388409,2.99054812 L1.85231552,5.58087331 C1.60013158,5.89091444 1.60946378,6.35097981 1.8709978,6.65100913 L7.41908019,13.0918286 L7.41909807,13.0918286 Z M7.681625,9.94284375 L4.49796875,6.6775625 C4.37553125,6.54695312 4.37553125,6.342875 4.50614063,6.21225 C4.63675,6.0898125 4.84082813,6.0898125 4.97145313,6.22042187 L7.92654688,9.249 L11.03675,6.21226562 C11.167375,6.0898125 11.3714375,6.0898125 11.5020625,6.22042187 C11.6245,6.35104687 11.6245,6.55510937 11.4938906,6.68573437 L8.14695313,9.95104687 C8.08164063,10.0081719 8.00001563,10.0408281 7.91839063,10.0408281 C7.83673438,10.0408281 7.7469375,10.0081562 7.681625,9.94284375 Z" id="形状" fill="#889FB5"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path data-follow-fill="#5BCA54" fill-rule="evenodd" fill="#5BCA54" d="M7.687.001c3.998-.062 6.559 2.18 7.726 4.952.79 1.875.779 4.28-.01 6.15-.954 2.258-2.757 3.88-5.235 4.614-.542.16-1.119.188-1.752.283l-.794-.01-.85-.077c-.65-.127-1.245-.284-1.784-.512-2.237-.944-3.862-2.622-4.614-5.05C.088 9.427-.13 8.043.091 6.858c.1-.533.192-1.05.37-1.513.9-2.333 2.471-3.964 4.8-4.865.467-.18.984-.287 1.523-.392l.903-.087ZM9.926 4c-.276.103-.579.082-.825.177-.931.36-1.538.965-1.747 2.034-.067.343.024.743-.036 1.124v2.081c.05.78-.033 1.435-.461 1.75-.877.646-1.967.314-2.317-.555-.053-.131-.134-.326-.097-.533.086-.488.455-.783.861-.957.267-.116.64-.225.74-.497.159-.428-.265-.828-.594-.887-.435-.079-1.041.326-1.286.485-.445.287-.857.611-1.068 1.123-.093.225-.121.562-.073.852.185 1.098.562 1.81 1.359 2.294 1.702 1.035 3.67-.125 4.21-1.467.133-.332.09-.74.157-1.17v-2.59c0-.328-.031-.71.049-.97.086-.28.266-.521.497-.662.845-.516 1.93-.192 2.244.556.055.128.137.323.097.532-.177.935-1.37.883-1.637 1.62-.053.146-.005.3.048.402.218.418.775.435 1.262.248 1.103-.423 2.151-1.993 1.48-3.512-.422-.954-1.45-1.482-2.863-1.478Z"/></svg>
import Vue from 'vue'
import SvgIcon from '@/components/svgIcon'// svg component
// register globally
Vue.component('svg-icon', SvgIcon)
// 只批量导入,交由 svg-sprite-loader 处理生成与注入 sprite
const req = require.context('./icon/svg', false, /\.svg$/)
req.keys().forEach(req)
<template>
<div v-if="isExternal" :style="styleExternalIcon" class="svg-external-icon svg-icon" v-on="$listeners" />
<svg v-else :class="svgClass" aria-hidden="true" :style="{ display: iconClass || svgName ? '' : 'none' }"
v-on="$listeners">
<use :xlink:href="iconName" />
</svg>
</template>
<script lang="jsx">
// doc: https://panjiachen.github.io/vue-element-admin-site/feature/component/svg-icon.html#usage
import { isExternal } from '@/utils/validate'
export default {
name: 'SvgIcon',
props: {
iconClass: {
type: String,
default: ''
},
svgName: {
type: String,
default: ''
},
className: {
type: String,
default: ''
}
},
computed: {
isExternal() {
return isExternal(this.iconClass)
},
iconName() {
if (this.svgName) {
return `#${this.svgName}`
}
return `#icon-${this.iconClass}`
},
svgClass() {
if (this.className) {
return 'svg-icon ' + this.className
} else {
return 'svg-icon'
}
},
styleExternalIcon() {
return {
mask: `url(${this.iconClass}) no-repeat 50% 50%`,
'-webkit-mask': `url(${this.iconClass}) no-repeat 50% 50%`
}
}
}
}
</script>
<style scoped>
.svg-icon {
width: 1em;
height: 1em;
/* vertical-align: -0.15em; */
fill: currentColor;
overflow: hidden;
}
.svg-external-icon {
background-color: currentColor;
mask-size: cover !important;
display: inline-block;
}
</style>
...@@ -7,6 +7,8 @@ import _ from 'lodash'; ...@@ -7,6 +7,8 @@ import _ from 'lodash';
import ElementUI from 'element-ui'; import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css'; import 'element-ui/lib/theme-chalk/index.css';
import 'lib-flexible/flexible.js' import 'lib-flexible/flexible.js'
// 引入 SVG 图标系统
import '@/assets/index.js'
Vue.use(ElementUI); Vue.use(ElementUI);
// import '@/styles/element-theme-colors.css'; // import '@/styles/element-theme-colors.css';
import '@/styles/index.scss'; import '@/styles/index.scss';
...@@ -26,27 +28,26 @@ Vue.use(globalComponent).use(permission).use(clickagain).use(loadmore).use(scrol ...@@ -26,27 +28,26 @@ Vue.use(globalComponent).use(permission).use(clickagain).use(loadmore).use(scrol
import '@/utils/vconsoleCleanup' import '@/utils/vconsoleCleanup'
// 开发环境下初始化 stagewise 工具栏 // 开发环境下初始化 stagewise 工具栏
if (process.env.NODE_ENV === 'development') { // if (process.env.NODE_ENV === 'development') {
import('@stagewise/toolbar-vue').then(({ StagewiseToolbar }) => { // import('@stagewise/toolbar-vue').then(({ StagewiseToolbar }) => {
import('@stagewise-plugins/vue').then(({ VuePlugin }) => { // import('@stagewise-plugins/vue').then(({ VuePlugin }) => {
const stagewiseConfig = { // const stagewiseConfig = {
plugins: [VuePlugin] // plugins: [VuePlugin]
}; // };
// 动态创建并挂载 StagewiseToolbar 组件 // // 动态创建并挂载 StagewiseToolbar 组件
const ToolbarConstructor = Vue.extend({ // const ToolbarConstructor = Vue.extend({
render(h) { // render(h) {
return h(StagewiseToolbar, { props: { config: stagewiseConfig } }); // return h(StagewiseToolbar, { props: { config: stagewiseConfig } });
} // }
}); // });
const toolbarInstance = new ToolbarConstructor(); // const toolbarInstance = new ToolbarConstructor();
toolbarInstance.$mount(); // toolbarInstance.$mount();
document.body.appendChild(toolbarInstance.$el); // document.body.appendChild(toolbarInstance.$el);
}); // });
}).catch(err => { // }).catch(err => {
console.error('Failed to initialize stagewise toolbar:', err); // console.error('Failed to initialize stagewise toolbar:', err);
}); // });
} // }
// 开发环境不收集日志 // 开发环境不收集日志
if (process.env.NODE_ENV !== 'development') { if (process.env.NODE_ENV !== 'development') {
errorHandle.onload() errorHandle.onload()
......
...@@ -12,6 +12,7 @@ import taskRecord from '../views/taskRecord.vue' ...@@ -12,6 +12,7 @@ import taskRecord from '../views/taskRecord.vue'
import mailList from '@/views/mailList.vue' import mailList from '@/views/mailList.vue'
import quickSendGame from '@/views/quickSendGame.vue' import quickSendGame from '@/views/quickSendGame.vue'
import taskList from '@/views/taskList.vue' import taskList from '@/views/taskList.vue'
import aiChat from '@/views/components/aiChat/aiChat.vue'
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
import store from '@/store' import store from '@/store'
Vue.use(VueRouter) Vue.use(VueRouter)
...@@ -84,10 +85,16 @@ const routes = [ ...@@ -84,10 +85,16 @@ const routes = [
component: taskList component: taskList
}, },
{ {
path: '/aiChat',
name: 'aiChat',
component: aiChat
},
{
path: '/login', path: '/login',
name: 'login', name: 'login',
component: () => import('../views/newLogin.vue') component: () => import('../views/newLogin.vue')
}, },
] ]
const router = new VueRouter({ const router = new VueRouter({
/* 这里用 hash 模式 因为本项目是在企微 服务器下的一个二级页面 如果用 history 模式 需要修改 nginx 配置 在 nginx 配置中 需要添加 location /company_app/ { /* 这里用 hash 模式 因为本项目是在企微 服务器下的一个二级页面 如果用 history 模式 需要修改 nginx 配置 在 nginx 配置中 需要添加 location /company_app/ {
......
/*
* @Author: maoxiya 937667504@qq.com
* @Date: 2025-05-27 11:32:14
* @LastEditors: maoxiya 937667504@qq.com
* @LastEditTime: 2025-09-01 16:17:04
* @FilePath: /company_app/src/utils/auth.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
import store from '@/store/index' import store from '@/store/index'
const TokenKey = 'token' const TokenKey = 'token'
......
...@@ -71,11 +71,16 @@ service.interceptors.response.use( ...@@ -71,11 +71,16 @@ service.interceptors.response.use(
// cancelPending(response.config) // cancelPending(response.config)
// 如果状态码不是成功,则判断为错误 // 如果状态码不是成功,则判断为错误
if (res.status_code !== STATUS_CODE_SUCCESS) { if (res.status_code !== STATUS_CODE_SUCCESS) {
// 如果请求参数中 有 noMessage 则不显示错误信息
if (response.config.data && JSON.parse(response.config.data) && JSON.parse(response.config.data).noMessage) {
return res
}else{
Message({ Message({
message: res.msg || 'Error', message: res.msg || 'Error',
type: 'error', type: 'error',
duration: 2 * 1000 duration: 2 * 1000
}) })
}
if (res.status_code === -100) { if (res.status_code === -100) {
// 登录 过期 重新去登录 // 登录 过期 重新去登录
setTimeout(() => { setTimeout(() => {
......
/**
* @param {string} str
* @returns {Boolean}
*/
export function isExternal(str) {
return /^(https?:|mailto:|tel:)/.test(str)
}
/**
* @param {string} str
* @returns {Boolean}
*/
export function validUsername(str) {
const valid_map = ['admin', 'editor']
return valid_map.indexOf(str.trim()) >= 0
}
/**
* @param {string} url
* @returns {Boolean}
*/
export function validURL(url) {
const reg = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
return reg.test(url)
}
/**
* @param {string} str
* @returns {Boolean}
*/
export function validLowerCase(str) {
const reg = /^[a-z]+$/
return reg.test(str)
}
/**
* @param {string} str
* @returns {Boolean}
*/
export function validUpperCase(str) {
const reg = /^[A-Z]+$/
return reg.test(str)
}
/**
* @param {string} str
* @returns {Boolean}
*/
export function validAlphabets(str) {
const reg = /^[A-Za-z]+$/
return reg.test(str)
}
/**
* @param {string} email
* @returns {Boolean}
*/
export function validEmail(email) {
const reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
return reg.test(email)
}
/**
* @param {string} str
* @returns {Boolean}
*/
export function isString(str) {
if (typeof str === 'string' || str instanceof String) {
return true
}
return false
}
/**
* @param {Array} arg
* @returns {Boolean}
*/
export function isArray(arg) {
if (typeof Array.isArray === 'undefined') {
return Object.prototype.toString.call(arg) === '[object Array]'
}
return Array.isArray(arg)
}
...@@ -2,58 +2,26 @@ ...@@ -2,58 +2,26 @@
<div class="terminaListContent" v-scroll="paperScroll"> <div class="terminaListContent" v-scroll="paperScroll">
<div class="addApply rowFlex spaceBetween"> <div class="addApply rowFlex spaceBetween">
<span></span> <span></span>
<el-button <el-button type="primary" icon="el-icon-plus" size="small"
type="primary" @click="(showaddAreaTransfer = true, areaTransferItem = {})">新增转端申请</el-button>
icon="el-icon-plus"
size="small"
@click="(showaddAreaTransfer = true,areaTransferItem = {})"
>新增转端申请</el-button>
</div> </div>
<el-form <el-form ref="taskForm" :model="terminaForm" label-position="top" class="terminaListForm" label-width="85px">
ref="taskForm"
:model="terminaForm"
label-position="top"
class="terminaListForm"
label-width="85px"
>
<el-form-item label="审批状态"> <el-form-item label="审批状态">
<el-select <el-select v-model="terminaForm.approval_status" style="width:95%;" clearable placeholder="请选择审批状态"
v-model="terminaForm.approval_status" @change="filterChange">
style="width:95%;" <el-option v-for="item in approvalList" :key="item.value" :label="item.label" :value="item.value">
clearable
placeholder="请选择审批状态"
@change="filterChange"
>
<el-option
v-for="item in approvalList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="创建时间"> <el-form-item label="创建时间">
<selectDate <selectDate :default-value="dateValue" :type="true" style="width: 95%" @result="createResult" />
:default-value="dateValue"
:type="true"
style="width: 95%"
@result="createResult"
/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div <div class="terminaListContentList">
class="terminaListContentList"
>
<!-- 举报申请 --> <!-- 举报申请 -->
<div v-if="terminaList.length>0" class="scrollMain"> <div v-if="terminaList.length > 0" class="scrollMain">
<div <div v-for="(item, index) in terminaList" :key="index" class="terminaContent"
v-for="(item, index) in terminaList" @click="terminaProcess(item, index)">
:key="index"
class="terminaContent"
@click="terminaProcess(item, index)"
>
<div class="terminaItem rowFlex spaceBetween columnCenter"> <div class="terminaItem rowFlex spaceBetween columnCenter">
<div class="terminaItemLeft"> <div class="terminaItemLeft">
<p><span class="label">角色名称:</span><span class="value">{{ item.role_name }}</span></p> <p><span class="label">角色名称:</span><span class="value">{{ item.role_name }}</span></p>
...@@ -64,7 +32,8 @@ ...@@ -64,7 +32,8 @@
<p> <p>
<span class="label">登记时间:</span><span class="value">{{ item.create_time || '' }}</span> <span class="label">登记时间:</span><span class="value">{{ item.create_time || '' }}</span>
</p> </p>
<p><span class="label">转端状态:</span><span class="value">{{ item.trans_check_status_text || '-' }}</span></p> <p><span class="label">转端状态:</span><span class="value">{{ item.trans_check_status_text || '-' }}</span>
</p>
</div> </div>
<!-- 审批进度 --> <!-- 审批进度 -->
<el-collapse-transition> <el-collapse-transition>
...@@ -171,11 +140,11 @@ import { removeDp, formatNumber, debounce } from '@/utils/index' ...@@ -171,11 +140,11 @@ import { removeDp, formatNumber, debounce } from '@/utils/index'
import TerminalTransferDialog from './TerminalTransferDialog.vue' import TerminalTransferDialog from './TerminalTransferDialog.vue'
import selectDate from '@/components/selectDate.vue' import selectDate from '@/components/selectDate.vue'
// 导入审批状态图标 // 导入审批状态图标
import shenpi1 from '@/assets/icon/shenpi1.svg' import shenpi1 from '@/assets/icon/svg/shenpi1.svg'
import shenpi2 from '@/assets/icon/shenpi2.svg' import shenpi2 from '@/assets/icon/svg/shenpi2.svg'
import shenpi4 from '@/assets/icon/shenpi4.svg' import shenpi4 from '@/assets/icon/svg/shenpi4.svg'
import shenpi5 from '@/assets/icon/shenpi5.svg' import shenpi5 from '@/assets/icon/svg/shenpi5.svg'
import shenpi6 from '@/assets/icon/shenpi6.svg' import shenpi6 from '@/assets/icon/svg/shenpi6.svg'
import noContent from '@/components/noContent.vue' import noContent from '@/components/noContent.vue'
export default { export default {
name: 'terminaTranfer', name: 'terminaTranfer',
...@@ -392,12 +361,14 @@ export default { ...@@ -392,12 +361,14 @@ export default {
.terminaListContent { .terminaListContent {
width: 100%; width: 100%;
height: 100%; height: 100%;
.TerminaTranferContent{
.TerminaTranferContent {
width: 100%; width: 100%;
height: 100%; height: 100%;
overflow: auto; overflow: auto;
overflow-x: hidden; overflow-x: hidden;
} }
.terminaListForm { .terminaListForm {
::v-deep .el-form-item__label { ::v-deep .el-form-item__label {
font-weight: 400; font-weight: 400;
...@@ -462,6 +433,7 @@ export default { ...@@ -462,6 +433,7 @@ export default {
.terminaListContentList { .terminaListContentList {
width: 100%; width: 100%;
.scrollMain { .scrollMain {
width: 100%; width: 100%;
height: auto; height: auto;
......
<template>
<div class="quickSendGame columnFlex">
<div class="content search-form">
<el-tabs v-model="activeName">
<el-tab-pane label="AI微言" name="aiChat">
<aiArgenChat v-if="activeName === 'aiChat'" />
</el-tab-pane>
<el-tab-pane label="AI 跟进记录" name="aiFollow">
<summaryList v-if="activeName === 'aiFollow'" />
</el-tab-pane>
</el-tabs>
</div>
</div>
</template>
<script>
import aiArgenChat from './aiArgenChat.vue'
import summaryList from './summaryList.vue'
import { mapActions } from 'vuex'
export default {
name: 'quickSendGame',
components: {
aiArgenChat,
summaryList,
},
data() {
return {
activeName: 'aiChat'
}
},
created() {
},
mounted() {
// this.initializeWecom()
},
methods: {
...mapActions('user', ['initWecom']),
async initializeWecom() {
try {
console.log('🚀 开始初始化企业微信 SDK')
const result = await this.initWecom()
console.log('✅ 企业微信 SDK 初始化成功', result)
} catch (error) {
console.error('❌ 企业微信 SDK 初始化失败:', error)
}
},
}
}
</script>
<style lang="scss" scoped>
.quickSendGame {
::v-deep .el-tabs__nav-next,
::v-deep .el-tabs__nav-prev {
line-height: 50px;
}
width: 100%;
height: 100%;
background: #fff;
::v-deep .el-tabs__item {
padding: 0 15px;
}
.detailsTitle {
width: 100%;
padding: 0 10px;
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 {
width: 100%;
height: calc(100% - 10px);
::v-deep .el-tabs__header {
margin: 0 0 20px;
}
}
::v-deep .el-tabs--border-card .is-active {
border: none !important;
}
::v-deep .is-active {
border: none;
}
.inputContent {
width: 100%;
::v-deep .el-input {
width: 80%;
}
}
::v-deep .el-tabs,
.el-tabs__content,
.el-tab-pane {
width: 100%;
height: 100%;
}
::v-deep .el-tabs__content {
width: 100%;
height: calc(100% - 50px);
}
::v-deep .el-tab-pane {
width: 100%;
height: 100%;
}
.scrollList {
width: 100%;
height: calc(100% - 40px);
overflow: auto;
}
.draggable {
position: relative;
transition: all 0.3s;
.icon {
position: absolute;
left: 10px;
top: 15px;
z-index: 10;
}
}
::v-deep .el-icon-circle-close {
color: #fff;
}
.bate {
width: 42px;
height: 20px;
background: linear-gradient(135deg, #6ee7e9 0%, #9ff2cd 47%, #e3fdb2 100%);
border-radius: 10px;
padding: 0px 10px 3px 10px;
}
}
</style>
\ No newline at end of file
<template>
<div class="noSummaryContent">
<div class="noContent">
<div class="noContent-icon">
<svg-icon icon-class="warning" />
</div>
<div class="noContent-text">
<span>当前客服号知识库配置异常 请联系管理员处理</span>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'NoSummaryContent'
}
</script>
<style lang="scss" scoped>
.noSummaryContent {
width: 100%;
height: 100%;
.noContent {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
.noContent-icon {
color: #FF7D00;
font-size: 40px;
}
.noContent-text {
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 14px;
color: #4E5969;
text-align: center;
font-style: normal;
text-transform: none;
}
}
}
</style>
\ No newline at end of file
<template>
<div class="summaryListContainer ">
<div v-scroll:50="requestDataList" v-loading="loading" class="messageDetailsScroll">
<div v-if="messageList.length > 0">
<div v-for="(item, index) in messageList" :key="index" class="messageListItem">
<div class="itemTop">
{{ item.date }}
</div>
<div class="itemCenter">
{{ item.summary }}
</div>
</div>
</div>
<div class="no-content-main" v-if="!loading && messageList.length == 0">
<noContent />
</div>
</div>
</div>
</template>
<script>
import { mapMutations, mapState } from 'vuex'
import { corp_follow_up_summary_index } from '@/api/works'
import { throttle } from '@/utils'
import noContent from '@/components/noContent.vue'
export default {
components: {
noContent
},
props: {
chatUserDetails: {
typeof: Object,
default: () => { }
}
},
data() {
return {
loading: false,
isloadMore: true,
messageList: [],
pageInfo: {
page: 0,
page_size: 20,
total: 0
}
}
},
computed: {
...mapState('game', ['accountSelect']),
...mapState('user', ['external_userid']),
},
mounted() {
this.pageInfo = {
page: 0,
page_size: 20,
total: 0
}
this.isloadMore = true
this.messageList = []
this.loading = true
this.requestDataList()
},
methods: {
requestDataList: throttle(function () {
if (this.accountSelect) {
if (!this.isloadMore) {
console.log('没有更多数据了')
return false
}
this.loading = true
this.pageInfo.page += 1
const data = {
external_userid: this.external_userid,
...this.pageInfo
}
corp_follow_up_summary_index(data).then(
(res) => {
this.loading = false
if (res.data.data && res.data.data.length < 20) {
this.isloadMore = false
}
this.messageList = this.messageList.concat(res.data.data)
if (res.data.page_info) {
this.pageInfo = res.data.page_info
}
},
(err) => {
this.loading = false
}
)
} else {
this.isloadMore = false
this.loading = false
}
}, 500)
}
}
</script>
<style lang="scss" scoped>
.summaryListContainer {
width: 100%;
height: 100%;
background: #fff;
position: relative;
overflow: hidden;
.messageDetailsScroll {
width: 100%;
height: 100%;
overflow: auto;
overflow-x: hidden;
padding-bottom: 50px;
}
.messageListItem {
width: 100%;
height: auto;
margin-bottom: 10px;
.itemTop {
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 14px;
color: #86909C;
line-height: 20px;
text-align: left;
font-style: normal;
text-transform: none;
margin-bottom: 5px;
}
.itemCenter {
width: 100%;
background: #F9FAFF;
border-radius: 4px 4px 4px 4px;
padding: 10px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 16px;
color: #4E5969;
text-align: left;
font-style: normal;
text-transform: none;
// 换行
white-space: pre-wrap;
word-break: break-all
}
}
.no-content-main {
width: 320px;
margin: 0 auto;
}
}
</style>
\ No newline at end of file
...@@ -15,11 +15,11 @@ ...@@ -15,11 +15,11 @@
<el-collapse-item v-for="(item, index) in conversionGameList" :key="index" :name="item.game_type"> <el-collapse-item v-for="(item, index) in conversionGameList" :key="index" :name="item.game_type">
<template slot="title"> <template slot="title">
<div class="title-with-icon"> <div class="title-with-icon">
<img v-if="item.game_type == 1" src="@/assets/icon/wxgame.svg" class="game-icon" alt="微信小游戏"> <img v-if="item.game_type == 1" src="@/assets/icon/svg/wxgame.svg" class="game-icon" alt="微信小游戏">
<img v-else-if="item.game_type == 5" src="@/assets/icon/douyin.svg" class="game-icon" alt="抖音小游戏"> <img v-else-if="item.game_type == 5" src="@/assets/icon/svg/douyin.svg" class="game-icon" alt="抖音小游戏">
<img v-else-if="item.game_type == 3" src="@/assets/icon/Android.svg" class="game-icon" alt="安卓游戏"> <img v-else-if="item.game_type == 3" src="@/assets/icon/svg/Android.svg" class="game-icon" alt="安卓游戏">
<img v-else-if="item.game_type == 4" src="@/assets/icon/IOS.svg" class="game-icon" alt="IOS游戏"> <img v-else-if="item.game_type == 4" src="@/assets/icon/svg/IOS.svg" class="game-icon" alt="IOS游戏">
<img v-else-if="item.game_type == 2" src="@/assets/icon/H5.svg" class="game-icon" alt="H5游戏"> <img v-else-if="item.game_type == 2" src="@/assets/icon/svg/H5.svg" class="game-icon" alt="H5游戏">
{{ item.game_text }} {{ item.game_text }}
</div> </div>
</template> </template>
...@@ -62,11 +62,11 @@ ...@@ -62,11 +62,11 @@
<el-collapse-item v-for="(item, index) in recallGameList" :key="index" :name="item.game_type"> <el-collapse-item v-for="(item, index) in recallGameList" :key="index" :name="item.game_type">
<template slot="title"> <template slot="title">
<div class="title-with-icon"> <div class="title-with-icon">
<img v-if="item.game_type == 1" src="@/assets/icon/wxgame.svg" class="game-icon" alt="微信小游戏"> <img v-if="item.game_type == 1" src="@/assets/icon/svg/wxgame.svg" class="game-icon" alt="微信小游戏">
<img v-else-if="item.game_type == 5" src="@/assets/icon/douyin.svg" class="game-icon" alt="抖音小游戏"> <img v-else-if="item.game_type == 5" src="@/assets/icon/svg/douyin.svg" class="game-icon" alt="抖音小游戏">
<img v-else-if="item.game_type == 3" src="@/assets/icon/Android.svg" class="game-icon" alt="安卓游戏"> <img v-else-if="item.game_type == 3" src="@/assets/icon/svg/Android.svg" class="game-icon" alt="安卓游戏">
<img v-else-if="item.game_type == 4" src="@/assets/icon/IOS.svg" class="game-icon" alt="IOS游戏"> <img v-else-if="item.game_type == 4" src="@/assets/icon/svg/IOS.svg" class="game-icon" alt="IOS游戏">
<img v-else-if="item.game_type == 2" src="@/assets/icon/H5.svg" class="game-icon" alt="H5游戏"> <img v-else-if="item.game_type == 2" src="@/assets/icon/svg/H5.svg" class="game-icon" alt="H5游戏">
{{ item.game_text }} {{ item.game_text }}
</div> </div>
</template> </template>
...@@ -106,11 +106,17 @@ ...@@ -106,11 +106,17 @@
<el-collapse-item v-for="(item, index) in regGameList" :key="index" :name="item.label"> <el-collapse-item v-for="(item, index) in regGameList" :key="index" :name="item.label">
<template slot="title"> <template slot="title">
<div class="title-with-icon"> <div class="title-with-icon">
<img v-if="item.label.includes('微信')" src="@/assets/icon/wxgame.svg" class="game-icon" alt="微信小游戏"> <img v-if="item.label.includes('微信')" src="@/assets/icon/svg/wxgame.svg" class="game-icon"
<img v-else-if="item.label.includes('抖音')" src="@/assets/icon/douyin.svg" class="game-icon" alt="抖音小游戏"> alt="微信小游戏">
<img v-else-if="item.label.includes('安卓')" src="@/assets/icon/Android.svg" class="game-icon" alt="安卓游戏"> <img v-else-if="item.label.includes('抖音')" src="@/assets/icon/svg/douyin.svg" class="game-icon"
<img v-else-if="item.label.includes('IOS') || item.label.includes('iOS') || item.label.includes('ios')" src="@/assets/icon/IOS.svg" class="game-icon" alt="IOS游戏"> alt="抖音小游戏">
<img v-else-if="item.label.includes('H5') || item.label.includes('h5')" src="@/assets/icon/H5.svg" class="game-icon" alt="H5游戏"> <img v-else-if="item.label.includes('安卓')" src="@/assets/icon/svg/Android.svg" class="game-icon"
alt="安卓游戏">
<img
v-else-if="item.label.includes('IOS') || item.label.includes('iOS') || item.label.includes('ios')"
src="@/assets/icon/svg/IOS.svg" class="game-icon" alt="IOS游戏">
<img v-else-if="item.label.includes('H5') || item.label.includes('h5')" src="@/assets/icon/svg/H5.svg"
class="game-icon" alt="H5游戏">
{{ item.label }} {{ item.label }}
</div> </div>
</template> </template>
...@@ -524,6 +530,13 @@ export default { ...@@ -524,6 +530,13 @@ export default {
handleConversionGameList() { handleConversionGameList() {
if (this.conversionGameList.length > 0) { if (this.conversionGameList.length > 0) {
this.conversionGameList.forEach((item, index) => { this.conversionGameList.forEach((item, index) => {
// 隐藏 h5的游戏 912:神权之战
if (item.game_type === 2 && item.children && item.children.length > 0) {
const filteredChildren = item.children.filter(child => {
return child.game_id !== '912'
})
this.$set(this.conversionGameList[index], 'children', filteredChildren)
}
// 隐藏安卓游戏 安卓游戏 game_type: 3 // 隐藏安卓游戏 安卓游戏 game_type: 3
if (item.game_type === 3 && item.children && item.children.length > 0) { if (item.game_type === 3 && item.children && item.children.length > 0) {
// 过滤掉 game_name 为"破日开天"的数据 // 过滤掉 game_name 为"破日开天"的数据
...@@ -1111,6 +1124,7 @@ export default { ...@@ -1111,6 +1124,7 @@ export default {
height: 100%; height: 100%;
overflow: auto; overflow: auto;
margin-top: -10px; margin-top: -10px;
.createChannel { .createChannel {
font-size: 14px; font-size: 14px;
margin-top: 16px; margin-top: 16px;
...@@ -1149,6 +1163,7 @@ export default { ...@@ -1149,6 +1163,7 @@ export default {
display: flex; display: flex;
margin: 12px 16px; margin: 12px 16px;
width: calc(100% - 32px); width: calc(100% - 32px);
.radio-group { .radio-group {
width: 100%; width: 100%;
...@@ -1268,7 +1283,7 @@ export default { ...@@ -1268,7 +1283,7 @@ export default {
} }
/* 当转端按钮处于激活状态时保持自定义样式 */ /* 当转端按钮处于激活状态时保持自定义样式 */
::v-deep .el-radio-button.is-active{ ::v-deep .el-radio-button.is-active {
.el-radio-button__inner { .el-radio-button__inner {
background: #E8F7FF; background: #E8F7FF;
border-color: #3491FA; border-color: #3491FA;
......
...@@ -20,7 +20,7 @@ export default { ...@@ -20,7 +20,7 @@ export default {
EmailGift, EmailGift,
WxGift WxGift
}, },
created(){ created() {
this.initializeWecom() this.initializeWecom()
}, },
methods: { methods: {
...@@ -50,7 +50,7 @@ export default { ...@@ -50,7 +50,7 @@ export default {
padding-top: 10px; padding-top: 10px;
background: #fff; background: #fff;
::v-deep .el-tabs__content{ ::v-deep .el-tabs__content {
height: calc(100% - 55px); height: calc(100% - 55px);
} }
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
<span class="loading-spinner"></span> <span class="loading-spinner"></span>
</div> </div>
</div> </div>
<!-- 新增手机号验证码登录功能 -->
</div> </div>
<!-- 组织切换弹窗 --> <!-- 组织切换弹窗 -->
<el-dialog :visible.sync="showOrgDialog" width="300px" title="选择组织"> <el-dialog :visible.sync="showOrgDialog" width="300px" title="选择组织">
...@@ -104,16 +105,16 @@ export default { ...@@ -104,16 +105,16 @@ export default {
}, },
// 设置缓存 // 设置缓存
cacheCorp_id(corp_id) { cacheCorp_id(corp_id) {
Cookies.set('corp_id', corp_id, { expires: 7 }) Cookies.set('corp_id', corp_id, { expires: 30 })
this.set_corp_id(corp_id) this.set_corp_id(corp_id)
}, },
cacheuserid(userid) { cacheuserid(userid) {
Cookies.set('userid', userid, { expires: 7 }) Cookies.set('userid', userid, { expires: 30 })
this.set_userid(userid) this.set_userid(userid)
}, },
cacheCser(cser_id, cser_name) { cacheCser(cser_id, cser_name) {
Cookies.set('cser_id', cser_id, { expires: 7 }) Cookies.set('cser_id', cser_id, { expires: 30 })
Cookies.set('cser_name', cser_name, { expires: 7 }) Cookies.set('cser_name', cser_name, { expires: 30 })
this.set_cser_info({ this.set_cser_info({
cser_id: cser_id, cser_id: cser_id,
cser_name: cser_name cser_name: cser_name
...@@ -122,7 +123,7 @@ export default { ...@@ -122,7 +123,7 @@ export default {
this.set_cser_name(cser_name) this.set_cser_name(cser_name)
}, },
cacheSignData(signData) { cacheSignData(signData) {
Cookies.set('signData', JSON.stringify(signData), { expires: 7 }) Cookies.set('signData', JSON.stringify(signData), { expires: 30 })
this.set_signData(signData) this.set_signData(signData)
}, },
// 进入的页面地址是 https://companywx.jianshuwenhua.com/company_app/index.html?corp_id=wweaefe716636df3d1 // 进入的页面地址是 https://companywx.jianshuwenhua.com/company_app/index.html?corp_id=wweaefe716636df3d1
......
<template> <template>
<div class="mail-list-container" <div class="mail-list-container"
ref="mailListScroll"
v-scroll:50="loadMoreMail" v-scroll:50="loadMoreMail"
> >
<!-- 搜索过滤区域 --> <!-- 搜索过滤区域 -->
...@@ -89,7 +88,6 @@ ...@@ -89,7 +88,6 @@
<!-- 通讯录列表 --> <!-- 通讯录列表 -->
<div <div
ref="mailListScroll"
v-scroll="loadMoreMail" v-scroll="loadMoreMail"
class="contact-list" class="contact-list"
> >
......
...@@ -41,8 +41,8 @@ ...@@ -41,8 +41,8 @@
<div class="filterList"> <div class="filterList">
<el-form class="filterList" label-position="top"> <el-form class="filterList" label-position="top">
<el-form-item label="订单号:"> <el-form-item label="订单号:">
<el-input v-model="inputValue" placeholder="请输入订单号/交易单号" prefix-icon="el-icon-search" <el-input v-model="inputValue" placeholder="请输入订单号/交易单号" prefix-icon="el-icon-search" style="width: 100%"
style="width: 100%" clearable @change="searchInput"></el-input> clearable @change="searchInput"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="支付方式:"> <el-form-item label="支付方式:">
...@@ -174,7 +174,7 @@ import searchSelect from './components/order/searchUser.vue' ...@@ -174,7 +174,7 @@ import searchSelect from './components/order/searchUser.vue'
import orderRefund from './components/order/orderRefund.vue' import orderRefund from './components/order/orderRefund.vue'
import refundLog from './components/order/refundLog.vue' import refundLog from './components/order/refundLog.vue'
import { throttle } from '@/utils' import { throttle } from '@/utils'
import sanjiaoxing from '@/assets/icon/sanjiaoxing.svg' import sanjiaoxing from '@/assets/icon/svg/sanjiaoxing.svg'
import noContent from '@/components/noContent.vue' import noContent from '@/components/noContent.vue'
export default { export default {
name: 'orderList', name: 'orderList',
...@@ -402,7 +402,7 @@ export default { ...@@ -402,7 +402,7 @@ export default {
}) })
}, },
requestOrderList: throttle(function (msg) { requestOrderList: throttle(function (msg) {
console.log(12313, '开始展示',this.isloadMore) console.log(12313, '开始展示', this.isloadMore)
if (this.accountSelect == '') { if (this.accountSelect == '') {
this.$message.warning('暂无关联的账号,请先去关联账号!') this.$message.warning('暂无关联的账号,请先去关联账号!')
return false return false
...@@ -489,16 +489,19 @@ export default { ...@@ -489,16 +489,19 @@ export default {
height: 100%; height: 100%;
overflow: auto; overflow: auto;
overflow-x: hidden; overflow-x: hidden;
::v-deep .el-tabs{
::v-deep .el-tabs {
height: auto; height: auto;
} }
::v-deep .el-tab-pane{ ::v-deep .el-tab-pane {
height: auto; height: auto;
} }
::v-deep .el-tabs__content{
::v-deep .el-tabs__content {
height: auto !important; height: auto !important;
} }
.order-info-content { .order-info-content {
width: 100%; width: 100%;
height: calc(100% - 60px); height: calc(100% - 60px);
......
...@@ -18,7 +18,8 @@ ...@@ -18,7 +18,8 @@
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<!-- 运营任务 --> <!-- 运营任务 -->
<div class="taskListContent" v-if="taskForm.type !== 'user_task' && taskForm.type !== 'account_task'" v-scroll="paperScroll" > <div class="taskListContent" v-if="taskForm.type !== 'user_task' && taskForm.type !== 'account_task'"
v-scroll="paperScroll">
<el-form ref="taskForm" :model="taskForm" class="taskForm" label-position="top" label-width="85px"> <el-form ref="taskForm" :model="taskForm" class="taskForm" label-position="top" label-width="85px">
<!-- 运营任务 --> <!-- 运营任务 -->
<div v-if="taskForm.type == 1" class="taskFormItem"> <div v-if="taskForm.type == 1" class="taskFormItem">
...@@ -116,14 +117,14 @@ ...@@ -116,14 +117,14 @@
</span> </span>
</p> </p>
</div> </div>
<div class="taskListScroll" v-loading="loading" <div class="taskListScroll" v-loading="loading" :class="taskForm.type != 1 ? 'taskListScrollActive' : ''">
:class="taskForm.type != 1 ? 'taskListScrollActive' : ''">
<!-- 运营任务 --> <!-- 运营任务 -->
<div v-if="taskForm.type == 1" class="scrollMain"> <div v-if="taskForm.type == 1" class="scrollMain">
<div v-for="(item, index) in taskList" :key="index" class="chatListItem columnCenter spaceBetween" <div v-for="(item, index) in taskList" :key="index" class="chatListItem columnCenter spaceBetween"
:class="item.id === taskDetails.id ? 'chatListItemActive' : ''" @click="selectTaskItem(item)"> :class="item.id === taskDetails.id ? 'chatListItemActive' : ''" @click="selectTaskItem(item)">
<div class="top rowFlex spaceBetween"> <div class="top rowFlex spaceBetween">
<div v-if="item.username && item.username.split('\n') && 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-if="item.username.split('\n').length <= 1" class="rowFlex columnCenter">
<div v-for="(items, indexs) in item.username.split('\n')" :key="indexs" <div v-for="(items, indexs) in item.username.split('\n')" :key="indexs"
class="rowFlex columnCenter userInfoStyle"> class="rowFlex columnCenter userInfoStyle">
...@@ -139,7 +140,9 @@ ...@@ -139,7 +140,9 @@
<span class="textHidden" style="max-width:150px;">{{ items }}</span> <span class="textHidden" style="max-width:150px;">{{ items }}</span>
</p> </p>
</div> </div>
<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 slot="reference" type="text">{{ item.username &&
item.username.split("\n") &&
item.username.split("\n").length ?item.username.split("\n").length : 0
}}个</el-button> }}个</el-button>
</el-popover> </el-popover>
</div> </div>
...@@ -188,11 +191,11 @@ import mainGameSelect from '@/components/mainGame.vue' ...@@ -188,11 +191,11 @@ import mainGameSelect from '@/components/mainGame.vue'
import { removeDp } from '@/utils/index' import { removeDp } from '@/utils/index'
import selectDate from '@/components/selectDate.vue' import selectDate from '@/components/selectDate.vue'
import { formatNumber } from '@/utils/index' import { formatNumber } from '@/utils/index'
import shenpi1 from '@/assets/icon/shenpi1.svg' import shenpi1 from '@/assets/icon/svg/shenpi1.svg'
import shenpi2 from '@/assets/icon/shenpi2.svg' import shenpi2 from '@/assets/icon/svg/shenpi2.svg'
import shenpi3 from '@/assets/icon/shenpi3.svg' import shenpi3 from '@/assets/icon/svg/shenpi3.svg'
import shenpi4 from '@/assets/icon/shenpi4.svg' import shenpi4 from '@/assets/icon/svg/shenpi4.svg'
import shenpi5 from '@/assets/icon/shenpi5.svg' import shenpi5 from '@/assets/icon/svg/shenpi5.svg'
import noContent from '@/components/noContent.vue' import noContent from '@/components/noContent.vue'
import userTask from './components/taskList/uesrTask.vue' import userTask from './components/taskList/uesrTask.vue'
import taskDetails from './components/taskList/taskDetails.vue' import taskDetails from './components/taskList/taskDetails.vue'
...@@ -665,14 +668,17 @@ export default { ...@@ -665,14 +668,17 @@ export default {
::v-deep .el-tabs { ::v-deep .el-tabs {
height: auto; height: auto;
} }
.taskListContent { .taskListContent {
width: 100%; width: 100%;
height: calc(100% - 40px); height: calc(100% - 40px);
overflow-y: auto; overflow-y: auto;
} }
.taskFormItem { .taskFormItem {
margin-top: 10px; margin-top: 10px;
} }
.taskForm { .taskForm {
::v-deep .el-form-item { ::v-deep .el-form-item {
margin-bottom: 5px; margin-bottom: 5px;
...@@ -754,11 +760,13 @@ export default { ...@@ -754,11 +760,13 @@ export default {
.taskListScroll { .taskListScroll {
width: 100%; width: 100%;
.scrollMain { .scrollMain {
width: 100%; width: 100%;
height: auto; height: auto;
margin-bottom: 50px; margin-bottom: 50px;
padding: 0 10px; padding: 0 10px;
//举报申请 //举报申请
.reportItem { .reportItem {
padding: 10px; padding: 10px;
......
...@@ -74,5 +74,48 @@ module.exports = defineConfig({ ...@@ -74,5 +74,48 @@ module.exports = defineConfig({
// } // }
} }
} }
},
chainWebpack(config) {
// set svg-sprite-loader
config.module.rule('svg').exclude.add(resolve('src/assets/icon/svg')).end()
config.module
.rule('icons')
.test(/\.svg$/)
.include.add(resolve('src/assets/icon/svg'))
.end()
.use('svg-sprite-loader')
.loader('svg-sprite-loader')
.options({
symbolId: 'icon-[name]'
})
.end()
config.when(process.env.NODE_ENV !== 'development', (config) => {
config.optimization.splitChunks({
chunks: 'all',
cacheGroups: {
libs: {
name: 'chunk-libs',
test: /[\\/]node_modules[\\/]/,
priority: 10,
chunks: 'initial' // only package third parties that are initially dependent
},
elementUI: {
name: 'chunk-elementUI', // split elementUI into a single package
priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
},
commons: {
name: 'chunk-commons',
test: resolve('src/components'), // can customize your rules
minChunks: 3, // minimum common number
priority: 5,
reuseExistingChunk: true
}
}
})
// https:// webpack.js.org/configuration/optimization/#optimizationruntimechunk
config.optimization.runtimeChunk('single')
})
} }
}) })
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论