mirror of
https://gitee.com/beijing_hongye_huicheng/lilishop-ui.git
synced 2026-08-06 10:57:26 +08:00
fix(im): 迁移 Element UI 图标并修复 Vue 3 兼容问题
- 新增 migrate-legacy-icons 脚本,批量将旧图标替换为 legacy-el-icon 组件 - 多个组件中将 <i class="el-icon-*"> 统一改为 <legacy-el-icon name="el-icon-*"> - 将 size="mini"/"medium" 调整为 Element Plus 的 small/default - 新增 legacy-el-icon 全局组件及图标映射逻辑
This commit is contained in:
81
im/scripts/migrate-legacy-icons.js
Normal file
81
im/scripts/migrate-legacy-icons.js
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
const fs = require("fs");
|
||||||
|
const path = require("path");
|
||||||
|
|
||||||
|
const root = path.join(__dirname, "../src");
|
||||||
|
|
||||||
|
const pairs = [
|
||||||
|
[/<i class="el-icon-close"/g, '<legacy-el-icon name="el-icon-close"'],
|
||||||
|
[/<i class="close-btn el-icon-close"/g, '<legacy-el-icon name="el-icon-close" class="close-btn"'],
|
||||||
|
[/<i class="el-icon-loading"/g, '<legacy-el-icon name="el-icon-loading"'],
|
||||||
|
[/<i class="el-icon-bottom"/g, '<legacy-el-icon name="el-icon-bottom"'],
|
||||||
|
[/<i class="el-icon-chat-dot-round"/g, '<legacy-el-icon name="el-icon-chat-dot-round"'],
|
||||||
|
[/<i class="el-icon-search"/g, '<legacy-el-icon name="el-icon-search"'],
|
||||||
|
[/<i class="el-icon-top"/g, '<legacy-el-icon name="el-icon-top"'],
|
||||||
|
[/<i class="el-icon-arrow-down"/g, '<legacy-el-icon name="el-icon-arrow-down"'],
|
||||||
|
[/<i class="el-icon-time"/g, '<legacy-el-icon name="el-icon-time"'],
|
||||||
|
[/<i class="el-icon-setting"/g, '<legacy-el-icon name="el-icon-setting"'],
|
||||||
|
[/<i class="el-icon-circle-close"/g, '<legacy-el-icon name="el-icon-circle-close"'],
|
||||||
|
[/<i class="el-icon-position"/g, '<legacy-el-icon name="el-icon-position"'],
|
||||||
|
[/<i class="el-icon-delete"/g, '<legacy-el-icon name="el-icon-delete"'],
|
||||||
|
[/<i class="el-icon-picture"/g, '<legacy-el-icon name="el-icon-picture"'],
|
||||||
|
[/<i class="el-icon-caret-left"/g, '<legacy-el-icon name="el-icon-caret-left"'],
|
||||||
|
[/<i class="el-icon-caret-right"/g, '<legacy-el-icon name="el-icon-caret-right"'],
|
||||||
|
[/<i class="el-icon-plus"><\/i>/g, '<legacy-el-icon name="el-icon-plus" />'],
|
||||||
|
[/<i class="el-icon-headset"/g, '<legacy-el-icon name="el-icon-headset"'],
|
||||||
|
[/<i class="el-icon-picture-outline-round"/g, '<legacy-el-icon name="el-icon-picture-outline-round"'],
|
||||||
|
[/<i class="el-icon-folder"/g, '<legacy-el-icon name="el-icon-folder"'],
|
||||||
|
[/<i class="el-icon-folder-opened"/g, '<legacy-el-icon name="el-icon-folder-opened"'],
|
||||||
|
[/<i class="el-icon-s-data"/g, '<legacy-el-icon name="el-icon-s-data"'],
|
||||||
|
[/<i class="el-icon-chat-line-round"/g, '<legacy-el-icon name="el-icon-chat-line-round"'],
|
||||||
|
[/<i class="el-icon-video-pause"/g, '<legacy-el-icon name="el-icon-video-pause"'],
|
||||||
|
[/<i class="el-icon-video-play"/g, '<legacy-el-icon name="el-icon-video-play"'],
|
||||||
|
[/<i class="el-icon-service"/g, '<legacy-el-icon name="el-icon-service"'],
|
||||||
|
[/<p class="tools"><i class="el-icon-close"/g, '<p class="tools"><legacy-el-icon name="el-icon-close"'],
|
||||||
|
[/<i class="el-icon-close close-btn"/g, '<legacy-el-icon name="el-icon-close" class="close-btn"'],
|
||||||
|
[/<i class="el-icon-plus" \/> 加好友/g, '<legacy-el-icon name="el-icon-plus" /> 加好友'],
|
||||||
|
[/<i class="el-icon-plus"><\/i> 添加选项/g, '<legacy-el-icon name="el-icon-plus" /> 添加选项'],
|
||||||
|
[
|
||||||
|
/<i @click="againSendMessage\(item\)" v-if="item.webSocketStatus" class="el-icon-refresh-left again main-color"><\/i>/g,
|
||||||
|
'<legacy-el-icon name="el-icon-refresh-left" class="again main-color" @click="againSendMessage(item)" v-if="item.webSocketStatus" />',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
/<i class="el-icon-success" :class="\{ selected: verifyMultiSelect\(item.id\) \}"\s*@click="triggerMultiSelect\(item.id\)" \/>/g,
|
||||||
|
'<legacy-el-icon name="el-icon-success" :class="{ selected: verifyMultiSelect(item.id) }" @click="triggerMultiSelect(item.id)" />',
|
||||||
|
],
|
||||||
|
[/icon="el-icon-microphone"/g, ":icon=\"$legacyIcon('el-icon-microphone')\""],
|
||||||
|
[/icon="el-icon-video-pause"/g, ":icon=\"$legacyIcon('el-icon-video-pause')\""],
|
||||||
|
[/icon="el-icon-video-play"/g, ":icon=\"$legacyIcon('el-icon-video-play')\""],
|
||||||
|
[/icon="el-icon-upload"/g, ":icon=\"$legacyIcon('el-icon-upload')\""],
|
||||||
|
[/icon="el-icon-refresh"/g, ":icon=\"$legacyIcon('el-icon-refresh')\""],
|
||||||
|
[/icon="el-icon-refresh-left"/g, ":icon=\"$legacyIcon('el-icon-refresh-left')\""],
|
||||||
|
[/icon="el-icon-refresh-right"/g, ":icon=\"$legacyIcon('el-icon-refresh-right')\""],
|
||||||
|
[/prefix-icon="el-icon-search"/g, ":prefix-icon=\"$legacyIcon('el-icon-search')\""],
|
||||||
|
[/size="mini"/g, 'size="small"'],
|
||||||
|
[/size='mini'/g, "size='small'"],
|
||||||
|
[/size="medium"/g, 'size="default"'],
|
||||||
|
];
|
||||||
|
|
||||||
|
function walk(dir, files = []) {
|
||||||
|
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
||||||
|
const full = path.join(dir, entry.name);
|
||||||
|
if (entry.isDirectory()) walk(full, files);
|
||||||
|
else if (full.endsWith(".vue")) files.push(full);
|
||||||
|
}
|
||||||
|
return files;
|
||||||
|
}
|
||||||
|
|
||||||
|
let changed = 0;
|
||||||
|
for (const file of walk(root)) {
|
||||||
|
let content = fs.readFileSync(file, "utf8");
|
||||||
|
let next = content;
|
||||||
|
for (const [pattern, replacement] of pairs) {
|
||||||
|
next = next.replace(pattern, replacement);
|
||||||
|
}
|
||||||
|
if (next !== content) {
|
||||||
|
fs.writeFileSync(file, next);
|
||||||
|
console.log("updated:", path.relative(root, file));
|
||||||
|
changed++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("files changed:", changed);
|
||||||
5
im/src/assets/images.js
Normal file
5
im/src/assets/images.js
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import defaultAvatar from "@/assets/image/detault-avatar.jpg";
|
||||||
|
import defaultUserBanner from "@/assets/image/default-user-banner.png";
|
||||||
|
import noOncallImage from "@/assets/image/no-oncall.6b776fcf.png";
|
||||||
|
|
||||||
|
export { defaultAvatar, defaultUserBanner, noOncallImage };
|
||||||
@@ -5,11 +5,11 @@
|
|||||||
<el-header class="header no-padding" height="50px">
|
<el-header class="header no-padding" height="50px">
|
||||||
<div class="tools">
|
<div class="tools">
|
||||||
<span>选择编程语言: </span>
|
<span>选择编程语言: </span>
|
||||||
<el-select v-model="language" size="mini" filterable placeholder="语言类型" :disabled="!editMode">
|
<el-select v-model="language" size="small" filterable placeholder="语言类型" :disabled="!editMode">
|
||||||
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
|
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
<i class="el-icon-close close-btn" @click="close" />
|
<legacy-el-icon name="el-icon-close" class="close-btn" @click="close" />
|
||||||
<i class="iconfont icon-full-screen" :class="{
|
<i class="iconfont icon-full-screen" :class="{
|
||||||
'icon-tuichuquanping': isFullScreen,
|
'icon-tuichuquanping': isFullScreen,
|
||||||
'icon-quanping ': !isFullScreen,
|
'icon-quanping ': !isFullScreen,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<el-header class="no-padding header" height="60px">
|
<el-header class="no-padding header" height="60px">
|
||||||
<p>会话记录 ({{ records.length }})</p>
|
<p>会话记录 ({{ records.length }})</p>
|
||||||
<p class="tools">
|
<p class="tools">
|
||||||
<i class="el-icon-close" @click="close" />
|
<legacy-el-icon name="el-icon-close" @click="close" />
|
||||||
</p>
|
</p>
|
||||||
</el-header>
|
</el-header>
|
||||||
<el-main class="no-padding main" v-loading="loading">
|
<el-main class="no-padding main" v-loading="loading">
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
:class="fullscreen ? 'icon-tuichuquanping' : 'icon-quanping'"
|
:class="fullscreen ? 'icon-tuichuquanping' : 'icon-quanping'"
|
||||||
@click="fullscreen = !fullscreen"
|
@click="fullscreen = !fullscreen"
|
||||||
/>
|
/>
|
||||||
<i class="el-icon-close" @click="$emit('close')" />
|
<legacy-el-icon name="el-icon-close" @click="$emit('close')" />
|
||||||
</p>
|
</p>
|
||||||
</el-header>
|
</el-header>
|
||||||
|
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
@click="triggerBroadside"
|
@click="triggerBroadside"
|
||||||
/>
|
/>
|
||||||
<div class="search-box no-select">
|
<div class="search-box no-select">
|
||||||
<i class="el-icon-search" />
|
<legacy-el-icon name="el-icon-search" />
|
||||||
<input
|
<input
|
||||||
v-model="search.keyword"
|
v-model="search.keyword"
|
||||||
type="text"
|
type="text"
|
||||||
@@ -196,11 +196,11 @@
|
|||||||
|
|
||||||
<!-- 数据加载栏 -->
|
<!-- 数据加载栏 -->
|
||||||
<div v-show="records.loadStatus == 1" class="load-button blue">
|
<div v-show="records.loadStatus == 1" class="load-button blue">
|
||||||
<i class="el-icon-loading" />
|
<legacy-el-icon name="el-icon-loading" />
|
||||||
<span>加载数据中...</span>
|
<span>加载数据中...</span>
|
||||||
</div>
|
</div>
|
||||||
<div v-show="records.loadStatus == 0" class="load-button">
|
<div v-show="records.loadStatus == 0" class="load-button">
|
||||||
<i class="el-icon-arrow-down" />
|
<legacy-el-icon name="el-icon-arrow-down" />
|
||||||
<span @click="loadChatRecord">加载更多...</span>
|
<span @click="loadChatRecord">加载更多...</span>
|
||||||
</div>
|
</div>
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
<div class="audio-message">
|
<div class="audio-message">
|
||||||
<div class="videodisc">
|
<div class="videodisc">
|
||||||
<div class="disc" :class="{ play: isPlay }" @click="toPlay">
|
<div class="disc" :class="{ play: isPlay }" @click="toPlay">
|
||||||
<i v-if="loading" class="el-icon-loading" />
|
<legacy-el-icon v-if="loading" name="el-icon-loading" />
|
||||||
<i v-else-if="isPlay" class="el-icon-video-pause" />
|
<legacy-el-icon v-else-if="isPlay" name="el-icon-video-pause" />
|
||||||
<i v-else class="el-icon-video-play" />
|
<legacy-el-icon v-else name="el-icon-video-play" />
|
||||||
<audio
|
<audio
|
||||||
ref="audio"
|
ref="audio"
|
||||||
type="audio/mp3"
|
type="audio/mp3"
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="detail">
|
<div class="detail">
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<i class="el-icon-service" />
|
<legacy-el-icon name="el-icon-service" />
|
||||||
<span>{{ getCurrDuration }} / {{ getTotalDuration }}</span>
|
<span>{{ getCurrDuration }} / {{ getTotalDuration }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="process">
|
<div class="process">
|
||||||
|
|||||||
@@ -7,10 +7,14 @@
|
|||||||
'full-screen': fullscreen,
|
'full-screen': fullscreen,
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
|
<legacy-el-icon
|
||||||
|
v-if="fullscreen"
|
||||||
|
name="el-icon-close"
|
||||||
|
@click="fullscreen = !fullscreen"
|
||||||
|
/>
|
||||||
<i
|
<i
|
||||||
:class="
|
v-else
|
||||||
fullscreen ? 'el-icon-close' : 'iconfont icon-tubiao_chakangongyi'
|
class="iconfont icon-tubiao_chakangongyi"
|
||||||
"
|
|
||||||
@click="fullscreen = !fullscreen"
|
@click="fullscreen = !fullscreen"
|
||||||
/>
|
/>
|
||||||
<pre class="lum-scrollbar" v-html="formatCode(code, lang)" />
|
<pre class="lum-scrollbar" v-html="formatCode(code, lang)" />
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="tools flex-center">
|
<div class="tools flex-center">
|
||||||
<span class="flex-center pointer">
|
<span class="flex-center pointer">
|
||||||
<i class="el-icon-plus" /> 加好友
|
<legacy-el-icon name="el-icon-plus" /> 加好友
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -5,16 +5,13 @@
|
|||||||
<div class="vheader">
|
<div class="vheader">
|
||||||
<p>
|
<p>
|
||||||
{{ answer_mode == 1 ? "[多选投票]" : "[单选投票]" }}
|
{{ answer_mode == 1 ? "[多选投票]" : "[单选投票]" }}
|
||||||
<i
|
<legacy-el-icon
|
||||||
v-show="is_vote"
|
v-show="is_vote"
|
||||||
class="pointer"
|
class="pointer"
|
||||||
:class="{
|
:name="refresh ? 'el-icon-loading' : 'el-icon-refresh'"
|
||||||
'el-icon-loading': refresh,
|
|
||||||
'el-icon-refresh': !refresh,
|
|
||||||
}"
|
|
||||||
title="刷新投票结果"
|
title="刷新投票结果"
|
||||||
@click="loadRefresh"
|
@click="loadRefresh"
|
||||||
></i>
|
/>
|
||||||
</p>
|
</p>
|
||||||
<p>{{ title }}</p>
|
<p>{{ title }}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
<div class="module right-module" >
|
<div class="module right-module" >
|
||||||
<el-tooltip content="历史消息" placement="top">
|
<el-tooltip content="历史消息" placement="top">
|
||||||
<p v-show="params.is_robot == 0">
|
<p v-show="params.is_robot == 0">
|
||||||
<i class="el-icon-time" @click="triggerEvent('history')" />
|
<legacy-el-icon name="el-icon-time" @click="triggerEvent('history')" />
|
||||||
</p>
|
</p>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip content="群公告" placement="top">
|
<el-tooltip content="群公告" placement="top">
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip content="群设置" placement="top">
|
<el-tooltip content="群设置" placement="top">
|
||||||
<p v-show="params.talk_type == 2">
|
<p v-show="params.talk_type == 2">
|
||||||
<i class="el-icon-setting" @click="triggerEvent('setting')" />
|
<legacy-el-icon name="el-icon-setting" @click="triggerEvent('setting')" />
|
||||||
</p>
|
</p>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -9,25 +9,25 @@
|
|||||||
class="multi-icon pointer"
|
class="multi-icon pointer"
|
||||||
@click="$emit('event', 'merge_forward')"
|
@click="$emit('event', 'merge_forward')"
|
||||||
>
|
>
|
||||||
<i class="el-icon-position" />
|
<legacy-el-icon name="el-icon-position" />
|
||||||
</div>
|
</div>
|
||||||
<p>合并转发</p>
|
<p>合并转发</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<div class="multi-icon pointer" @click="$emit('event', 'forward')">
|
<div class="multi-icon pointer" @click="$emit('event', 'forward')">
|
||||||
<i class="el-icon-position" />
|
<legacy-el-icon name="el-icon-position" />
|
||||||
</div>
|
</div>
|
||||||
<p>逐条转发</p>
|
<p>逐条转发</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<div class="multi-icon pointer" @click="$emit('event', 'delete')">
|
<div class="multi-icon pointer" @click="$emit('event', 'delete')">
|
||||||
<i class="el-icon-delete" />
|
<legacy-el-icon name="el-icon-delete" />
|
||||||
</div>
|
</div>
|
||||||
<p>批量删除</p>
|
<p>批量删除</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<div class="multi-icon pointer" @click="$emit('event', 'close')">
|
<div class="multi-icon pointer" @click="$emit('event', 'close')">
|
||||||
<i class="el-icon-close" />
|
<legacy-el-icon name="el-icon-close" />
|
||||||
</div>
|
</div>
|
||||||
<p>关闭</p>
|
<p>关闭</p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -9,10 +9,10 @@
|
|||||||
<!-- 数据加载状态栏 -->
|
<!-- 数据加载状态栏 -->
|
||||||
<div class="loading-toolbar">
|
<div class="loading-toolbar">
|
||||||
<span v-if="loadRecord.status == 0" class="color-blue">
|
<span v-if="loadRecord.status == 0" class="color-blue">
|
||||||
<i class="el-icon-loading" /> 正在加载数据中...
|
<legacy-el-icon name="el-icon-loading" /> 正在加载数据中...
|
||||||
</span>
|
</span>
|
||||||
<span v-if="loadRecord.status == 1" class="pointer color-blue" @click="loadChatRecords">
|
<span v-if="loadRecord.status == 1" class="pointer color-blue" @click="loadChatRecords">
|
||||||
<i class="el-icon-bottom" /> 查看更多消息...
|
<legacy-el-icon name="el-icon-bottom" /> 查看更多消息...
|
||||||
</span>
|
</span>
|
||||||
<span v-if="loadRecord.status == 2"> 没有更多消息了... </span>
|
<span v-if="loadRecord.status == 2"> 没有更多消息了... </span>
|
||||||
</div>
|
</div>
|
||||||
@@ -39,8 +39,7 @@
|
|||||||
'checkbox-border': multiSelect.isOpen === true,
|
'checkbox-border': multiSelect.isOpen === true,
|
||||||
}">
|
}">
|
||||||
<aside v-show="multiSelect.isOpen" class="checkbox-column">
|
<aside v-show="multiSelect.isOpen" class="checkbox-column">
|
||||||
<i class="el-icon-success" :class="{ selected: verifyMultiSelect(item.id) }"
|
<legacy-el-icon name="el-icon-success" :class="{ selected: verifyMultiSelect(item.id) }" @click="triggerMultiSelect(item.id)" />
|
||||||
@click="triggerMultiSelect(item.id)" />
|
|
||||||
</aside>
|
</aside>
|
||||||
<aside class="avatar-column">
|
<aside class="avatar-column">
|
||||||
<div class="avatar-box" v-if="item.float == 'right'">
|
<div class="avatar-box" v-if="item.float == 'right'">
|
||||||
@@ -59,7 +58,7 @@
|
|||||||
{{ unixToDate(item.createTime, "MM月dd日 hh:mm") }}
|
{{ unixToDate(item.createTime, "MM月dd日 hh:mm") }}
|
||||||
</span>
|
</span>
|
||||||
<div class="flex flex-a-c">
|
<div class="flex flex-a-c">
|
||||||
<i @click="againSendMessage(item)" v-if="item.webSocketStatus" class="el-icon-refresh-left again main-color"></i>
|
<legacy-el-icon name="el-icon-refresh-left" class="again main-color" @click="againSendMessage(item)" v-if="item.webSocketStatus" />
|
||||||
<!-- 文本消息 -->
|
<!-- 文本消息 -->
|
||||||
<div v-if="item.messageType == 'MESSAGE'" style="background-color: #d0e9ff;color: black;"
|
<div v-if="item.messageType == 'MESSAGE'" style="background-color: #d0e9ff;color: black;"
|
||||||
class="text-message" :class="{
|
class="text-message" :class="{
|
||||||
@@ -122,7 +121,7 @@
|
|||||||
</span>
|
</span>
|
||||||
<div class="order-status">
|
<div class="order-status">
|
||||||
<el-tag
|
<el-tag
|
||||||
size="mini"
|
size="small"
|
||||||
:type="item.text.orderStatus == 'CANCELLED' || item.text.orderStatus == 'UNPAID' || item.text.orderStatus == ' TAKE' ? 'info' : 'danger'">{{
|
:type="item.text.orderStatus == 'CANCELLED' || item.text.orderStatus == 'UNPAID' || item.text.orderStatus == ' TAKE' ? 'info' : 'danger'">{{
|
||||||
item.text.orderStatus == 'CANCELLED' ? '已取消' : item.text.orderStatus == 'UNPAID' ? '未付款' :
|
item.text.orderStatus == 'CANCELLED' ? '已取消' : item.text.orderStatus == 'UNPAID' ? '未付款' :
|
||||||
item.text.orderStatus ==
|
item.text.orderStatus ==
|
||||||
@@ -156,7 +155,7 @@
|
|||||||
<!-- 新消息气泡 -->
|
<!-- 新消息气泡 -->
|
||||||
<div v-show="tipsBoard && unreadMessage.num" class="talk-bubble pointer no-select"
|
<div v-show="tipsBoard && unreadMessage.num" class="talk-bubble pointer no-select"
|
||||||
@click="talkPanelScrollBottom">
|
@click="talkPanelScrollBottom">
|
||||||
<i class="el-icon-chat-dot-round" />
|
<legacy-el-icon name="el-icon-chat-dot-round" />
|
||||||
<span>新消息({{ unreadMessage.num }}条)</span>
|
<span>新消息({{ unreadMessage.num }}条)</span>
|
||||||
<span>
|
<span>
|
||||||
#{{ unreadMessage.nickname }}#
|
#{{ unreadMessage.nickname }}#
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<el-tabs v-model="activeName" @tab-click="handleClick" :stretch=true>
|
<el-tabs v-model="activeName" @tab-click="handleClick" :stretch=true>
|
||||||
<el-tab-pane label="最近浏览" name="goods">
|
<el-tab-pane label="最近浏览" name="goods">
|
||||||
<dl v-if='list.length' class='base-list'>
|
<dl v-if='list.length' class='base-list'>
|
||||||
<dd :key="index" @click="linkToGoods(item.goodsId, item.id)" v-for="(item,index) in list" v-infinite-scroll="loadMore">
|
<dd :key="index" @click="linkToGoods(item.goodsId, item.id)" v-for="(item,index) in list">
|
||||||
<div class="base">
|
<div class="base">
|
||||||
<div>
|
<div>
|
||||||
<img style="width: 60px; height: 60px;margin-left:20px;box-sizing: border-box;" :src="item.thumbnail"
|
<img style="width: 60px; height: 60px;margin-left:20px;box-sizing: border-box;" :src="item.thumbnail"
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="review"> <el-button v-if="item.btnHide == 1 && toUser.storeFlag" size="mini"
|
<div class="review"> <el-button v-if="item.btnHide == 1 && toUser.storeFlag" size="small"
|
||||||
@click.stop="submitSendGoodsMessage(item)" plain>发送</el-button></div>
|
@click.stop="submitSendGoodsMessage(item)" plain>发送</el-button></div>
|
||||||
</div>
|
</div>
|
||||||
</dd>
|
</dd>
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="订单列表" name="orders">
|
<el-tab-pane label="订单列表" name="orders">
|
||||||
<dl class='base-order-list' v-if='orderList.length'>
|
<dl class='base-order-list' v-if='orderList.length'>
|
||||||
<dd v-for="(item, index) in orderList" v-infinite-scroll="loadMore" :key="index">
|
<dd v-for="(item, index) in orderList" :key="index">
|
||||||
<div class="order-list">
|
<div class="order-list">
|
||||||
<div class="order-top order-padding">
|
<div class="order-top order-padding">
|
||||||
<span class="order-sn" @click="linkToOrders(item.sn)">订单号:{{ item.sn }}</span>
|
<span class="order-sn" @click="linkToOrders(item.sn)">订单号:{{ item.sn }}</span>
|
||||||
@@ -48,12 +48,12 @@
|
|||||||
|
|
||||||
<div class="order-btn ">
|
<div class="order-btn ">
|
||||||
<el-button class="store-button" v-if="item.btnHide == 1 && toUser.storeFlag"
|
<el-button class="store-button" v-if="item.btnHide == 1 && toUser.storeFlag"
|
||||||
size="mini" @click="submitSendOrderMessage(item, index)" plain>发送</el-button>
|
size="small" @click="submitSendOrderMessage(item, index)" plain>发送</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="order-footer order-padding">
|
<div class="order-footer order-padding">
|
||||||
<span></span>
|
<span></span>
|
||||||
<el-tag size='mini' :type="col[item.orderStatus]">{{
|
<el-tag size="small" :type="col[item.orderStatus]">{{
|
||||||
item.orderStatus == 'STAY_PICKED_UP' ? '待自提'
|
item.orderStatus == 'STAY_PICKED_UP' ? '待自提'
|
||||||
: item.orderStatus == 'CANCELLED' ? '已取消' : item.orderStatus == 'UNPAID' ? '未付款' : item.orderStatus
|
: item.orderStatus == 'CANCELLED' ? '已取消' : item.orderStatus == 'UNPAID' ? '未付款' : item.orderStatus
|
||||||
==
|
==
|
||||||
@@ -108,12 +108,6 @@ export default {
|
|||||||
toUser: (state) => state.user.toUser,
|
toUser: (state) => state.user.toUser,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
components: {
|
|
||||||
"el-tag": Tag,
|
|
||||||
"el-button": button,
|
|
||||||
"el-tabs": Tabs,
|
|
||||||
"el-tab-pane": TabPane,
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
//跳转订单列表
|
//跳转订单列表
|
||||||
|
|
||||||
@@ -179,11 +173,11 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
list: {
|
list: {
|
||||||
type: Array,
|
type: Array,
|
||||||
default: [],
|
default: () => [],
|
||||||
},
|
},
|
||||||
orderList: {
|
orderList: {
|
||||||
type: Array,
|
type: Array,
|
||||||
default: []
|
default: () => [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<span style="color: red;">{{ $filters.unitPrice(goodsDetail.price, '¥') }}</span>
|
<span style="color: red;">{{ $filters.unitPrice(goodsDetail.price, '¥') }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="hide">
|
<div v-if="hide">
|
||||||
<el-button class="store-button" type="danger" v-if="btnHide == 1 && toUser.storeFlag" size="mini"
|
<el-button class="store-button" type="danger" v-if="btnHide == 1 && toUser.storeFlag" size="small"
|
||||||
@click="submitSendMessage()" plain>发送</el-button>
|
@click="submitSendMessage()" plain>发送</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -8,14 +8,14 @@
|
|||||||
<div>
|
<div>
|
||||||
<div class="div-zoom">
|
<div class="div-zoom">
|
||||||
<span class="title_left_name"> 店铺名称:</span> <span class="title_right_name">{{ storeInfo.storeName }}</span>
|
<span class="title_left_name"> 店铺名称:</span> <span class="title_right_name">{{ storeInfo.storeName }}</span>
|
||||||
<el-tag style="margin-left: 10px;" type="danger" v-if="storeInfo.selfOperated" size="mini">自营</el-tag>
|
<el-tag style="margin-left: 10px;" type="danger" v-if="storeInfo.selfOperated" size="small">自营</el-tag>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span class="title_left_name"> 联系方式:</span> <span class="title_right_name">{{ storeInfo.memberName }}</span>
|
<span class="title_left_name"> 联系方式:</span> <span class="title_right_name">{{ storeInfo.memberName }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<el-button class="store-button" @click="linkToStore(storeInfo.id)" size="mini"
|
<el-button class="store-button" @click="linkToStore(storeInfo.id)" size="small"
|
||||||
plain>进入店铺</el-button>
|
plain>进入店铺</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -18,24 +18,24 @@
|
|||||||
<p class="tip-title">代码片段</p>
|
<p class="tip-title">代码片段</p>
|
||||||
</li>
|
</li>
|
||||||
<li @click="recorder = true">
|
<li @click="recorder = true">
|
||||||
<i class="el-icon-headset" />
|
<legacy-el-icon name="el-icon-headset" />
|
||||||
<p class="tip-title">语音消息</p>
|
<p class="tip-title">语音消息</p>
|
||||||
</li> -->
|
</li> -->
|
||||||
<!-- #TODO 发图片功能暂时隐藏 此处会涉及到token过期 -->
|
<!-- #TODO 发图片功能暂时隐藏 此处会涉及到token过期 -->
|
||||||
<!-- <li @click="$refs.restFile.click()">
|
<!-- <li @click="$refs.restFile.click()">
|
||||||
<i class="el-icon-picture-outline-round" />
|
<legacy-el-icon name="el-icon-picture-outline-round" />
|
||||||
<p class="tip-title">图片</p>
|
<p class="tip-title">图片</p>
|
||||||
</li> -->
|
</li> -->
|
||||||
<!-- <li @click="$refs.restFile2.click()">
|
<!-- <li @click="$refs.restFile2.click()">
|
||||||
<i class="el-icon-folder" />
|
<legacy-el-icon name="el-icon-folder" />
|
||||||
<p class="tip-title">附件</p>
|
<p class="tip-title">附件</p>
|
||||||
</li>
|
</li>
|
||||||
<li @click="filesManager.isShow = true">
|
<li @click="filesManager.isShow = true">
|
||||||
<i class="el-icon-folder-opened" />
|
<legacy-el-icon name="el-icon-folder-opened" />
|
||||||
<p class="tip-title">上传管理</p>
|
<p class="tip-title">上传管理</p>
|
||||||
</li>
|
</li>
|
||||||
<li v-show="isGroupTalk" @click="vote.isShow = true">
|
<li v-show="isGroupTalk" @click="vote.isShow = true">
|
||||||
<i class="el-icon-s-data" />
|
<legacy-el-icon name="el-icon-s-data" />
|
||||||
<p class="tip-title">发起投票</p>
|
<p class="tip-title">发起投票</p>
|
||||||
</li> -->
|
</li> -->
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
class="emoji-item custom-emoji"
|
class="emoji-item custom-emoji"
|
||||||
@click="$refs.fileCustomEmoji.click()"
|
@click="$refs.fileCustomEmoji.click()"
|
||||||
>
|
>
|
||||||
<i class="el-icon-picture" />
|
<legacy-el-icon name="el-icon-picture" />
|
||||||
<span>自定义</span>
|
<span>自定义</span>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
class="toolbar-item prev-page"
|
class="toolbar-item prev-page"
|
||||||
@click="turnPage(1)"
|
@click="turnPage(1)"
|
||||||
>
|
>
|
||||||
<i class="el-icon-caret-left" />
|
<legacy-el-icon name="el-icon-caret-left" />
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
v-for="(item, index) in showItems"
|
v-for="(item, index) in showItems"
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
class="toolbar-item next-page"
|
class="toolbar-item next-page"
|
||||||
@click="turnPage(2)"
|
@click="turnPage(2)"
|
||||||
>
|
>
|
||||||
<i class="el-icon-caret-right" />
|
<legacy-el-icon name="el-icon-caret-right" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-footer> -->
|
</el-footer> -->
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<p>
|
<p>
|
||||||
上传管理 <span v-show="total">({{ successNum }}/{{ total }})</span>
|
上传管理 <span v-show="total">({{ successNum }}/{{ total }})</span>
|
||||||
</p>
|
</p>
|
||||||
<i class="close-btn el-icon-close" @click="closeBox" />
|
<legacy-el-icon name="el-icon-close" class="close-btn" @click="closeBox" />
|
||||||
</el-header>
|
</el-header>
|
||||||
|
|
||||||
<el-main class="no-padding mian lum-scrollbar">
|
<el-main class="no-padding mian lum-scrollbar">
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<el-header class="no-padding header" height="50px">
|
<el-header class="no-padding header" height="50px">
|
||||||
<p>发送图片</p>
|
<p>发送图片</p>
|
||||||
<p class="tools">
|
<p class="tools">
|
||||||
<i class="el-icon-close" @click="closeBox" />
|
<legacy-el-icon name="el-icon-close" @click="closeBox" />
|
||||||
</p>
|
</p>
|
||||||
</el-header>
|
</el-header>
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
<el-button
|
<el-button
|
||||||
class="btn"
|
class="btn"
|
||||||
type="primary"
|
type="primary"
|
||||||
size="medium"
|
size="default"
|
||||||
:loading="loading"
|
:loading="loading"
|
||||||
@click="uploadImage"
|
@click="uploadImage"
|
||||||
>立即发送
|
>立即发送
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<el-container class="lum-dialog-box">
|
<el-container class="lum-dialog-box">
|
||||||
<el-header class="no-padding header no-select" height="50px">
|
<el-header class="no-padding header no-select" height="50px">
|
||||||
<p>语音消息</p>
|
<p>语音消息</p>
|
||||||
<p class="tools"><i class="el-icon-close" @click="closeBox" /></p>
|
<p class="tools"><legacy-el-icon name="el-icon-close" @click="closeBox" /></p>
|
||||||
</el-header>
|
</el-header>
|
||||||
|
|
||||||
<el-main class="no-padding mian">
|
<el-main class="no-padding mian">
|
||||||
@@ -52,45 +52,45 @@
|
|||||||
<el-button
|
<el-button
|
||||||
v-show="recorderStatus == 0"
|
v-show="recorderStatus == 0"
|
||||||
type="primary"
|
type="primary"
|
||||||
size="mini"
|
size="small"
|
||||||
round
|
round
|
||||||
icon="el-icon-microphone"
|
:icon="$legacyIcon('el-icon-microphone')"
|
||||||
@click="startRecorder"
|
@click="startRecorder"
|
||||||
>开始录音
|
>开始录音
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-show="recorderStatus == 1"
|
v-show="recorderStatus == 1"
|
||||||
type="primary"
|
type="primary"
|
||||||
size="mini"
|
size="small"
|
||||||
round
|
round
|
||||||
icon="el-icon-video-pause"
|
:icon="$legacyIcon('el-icon-video-pause')"
|
||||||
@click="pauseRecorder"
|
@click="pauseRecorder"
|
||||||
>暂停录音
|
>暂停录音
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-show="recorderStatus == 2"
|
v-show="recorderStatus == 2"
|
||||||
type="primary"
|
type="primary"
|
||||||
size="mini"
|
size="small"
|
||||||
round
|
round
|
||||||
icon="el-icon-microphone"
|
:icon="$legacyIcon('el-icon-microphone')"
|
||||||
@click="resumeRecorder"
|
@click="resumeRecorder"
|
||||||
>继续录音
|
>继续录音
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-show="recorderStatus == 2"
|
v-show="recorderStatus == 2"
|
||||||
type="primary"
|
type="primary"
|
||||||
size="mini"
|
size="small"
|
||||||
round
|
round
|
||||||
icon="el-icon-microphone"
|
:icon="$legacyIcon('el-icon-microphone')"
|
||||||
@click="stopRecorder"
|
@click="stopRecorder"
|
||||||
>结束录音
|
>结束录音
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-show="recorderStatus == 3 || recorderStatus == 6"
|
v-show="recorderStatus == 3 || recorderStatus == 6"
|
||||||
type="primary"
|
type="primary"
|
||||||
size="mini"
|
size="small"
|
||||||
round
|
round
|
||||||
icon="el-icon-video-play"
|
:icon="$legacyIcon('el-icon-video-play')"
|
||||||
@click="playRecorder"
|
@click="playRecorder"
|
||||||
>播放录音
|
>播放录音
|
||||||
</el-button>
|
</el-button>
|
||||||
@@ -100,9 +100,9 @@
|
|||||||
recorderStatus == 3 || recorderStatus == 5 || recorderStatus == 6
|
recorderStatus == 3 || recorderStatus == 5 || recorderStatus == 6
|
||||||
"
|
"
|
||||||
type="primary"
|
type="primary"
|
||||||
size="mini"
|
size="small"
|
||||||
round
|
round
|
||||||
icon="el-icon-video-play"
|
:icon="$legacyIcon('el-icon-video-play')"
|
||||||
@click="startRecorder"
|
@click="startRecorder"
|
||||||
>重新录音
|
>重新录音
|
||||||
</el-button>
|
</el-button>
|
||||||
@@ -110,18 +110,18 @@
|
|||||||
<el-button
|
<el-button
|
||||||
v-show="recorderStatus == 4"
|
v-show="recorderStatus == 4"
|
||||||
type="primary"
|
type="primary"
|
||||||
size="mini"
|
size="small"
|
||||||
round
|
round
|
||||||
icon="el-icon-video-pause"
|
:icon="$legacyIcon('el-icon-video-pause')"
|
||||||
@click="pausePlayRecorder"
|
@click="pausePlayRecorder"
|
||||||
>暂停播放
|
>暂停播放
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-show="recorderStatus == 5"
|
v-show="recorderStatus == 5"
|
||||||
type="primary"
|
type="primary"
|
||||||
size="mini"
|
size="small"
|
||||||
round
|
round
|
||||||
icon="el-icon-video-play"
|
:icon="$legacyIcon('el-icon-video-play')"
|
||||||
@click="resumePlayRecorder"
|
@click="resumePlayRecorder"
|
||||||
>继续播放
|
>继续播放
|
||||||
</el-button>
|
</el-button>
|
||||||
@@ -131,7 +131,7 @@
|
|||||||
recorderStatus == 3 || recorderStatus == 5 || recorderStatus == 6
|
recorderStatus == 3 || recorderStatus == 5 || recorderStatus == 6
|
||||||
"
|
"
|
||||||
type="primary"
|
type="primary"
|
||||||
size="mini"
|
size="small"
|
||||||
round
|
round
|
||||||
@click="submit"
|
@click="submit"
|
||||||
>立即发送
|
>立即发送
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<el-header class="no-padding header" height="50px">
|
<el-header class="no-padding header" height="50px">
|
||||||
<p>系统表情</p>
|
<p>系统表情</p>
|
||||||
<p class="tools">
|
<p class="tools">
|
||||||
<i class="el-icon-close" @click="closeBox" />
|
<legacy-el-icon name="el-icon-close" @click="closeBox" />
|
||||||
</p>
|
</p>
|
||||||
</el-header>
|
</el-header>
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
</el-main>
|
</el-main>
|
||||||
|
|
||||||
<el-footer class="footer" height="50px">
|
<el-footer class="footer" height="50px">
|
||||||
<el-button type="primary" size="medium" class="btn" @click="closeBox">
|
<el-button type="primary" size="default" class="btn" @click="closeBox">
|
||||||
关闭窗口
|
关闭窗口
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-footer>
|
</el-footer>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<el-header class="header no-select" height="60px">
|
<el-header class="header no-select" height="60px">
|
||||||
<p>发起投票</p>
|
<p>发起投票</p>
|
||||||
<p class="tools">
|
<p class="tools">
|
||||||
<i class="el-icon-close" @click="$emit('close')" />
|
<legacy-el-icon name="el-icon-close" @click="$emit('close')" />
|
||||||
</p>
|
</p>
|
||||||
</el-header>
|
</el-header>
|
||||||
<el-main class="main no-padding vote-from">
|
<el-main class="main no-padding vote-from">
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
<div class="vote-title">投票主题</div>
|
<div class="vote-title">投票主题</div>
|
||||||
<div>
|
<div>
|
||||||
<el-input
|
<el-input
|
||||||
size="medium"
|
size="default"
|
||||||
clear="vote-input"
|
clear="vote-input"
|
||||||
v-model.trim="title"
|
v-model.trim="title"
|
||||||
placeholder="请输入投票主题,最多50字"
|
placeholder="请输入投票主题,最多50字"
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
<div class="vote-options" v-for="(option, index) in options">
|
<div class="vote-options" v-for="(option, index) in options">
|
||||||
<div class="lbox">
|
<div class="lbox">
|
||||||
<el-input
|
<el-input
|
||||||
size="medium"
|
size="default"
|
||||||
clear="vote-input"
|
clear="vote-input"
|
||||||
v-model.trim="option.value"
|
v-model.trim="option.value"
|
||||||
placeholder="请输入选项内容"
|
placeholder="请输入选项内容"
|
||||||
@@ -46,12 +46,12 @@
|
|||||||
</el-input>
|
</el-input>
|
||||||
</div>
|
</div>
|
||||||
<div class="rbox">
|
<div class="rbox">
|
||||||
<i class="el-icon-close" @click="removeOption(index)"></i>
|
<legacy-el-icon name="el-icon-close" @click="removeOption(index)" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h6 class="pointer add-option" @click="addOption">
|
<h6 class="pointer add-option" @click="addOption">
|
||||||
<i class="el-icon-plus"></i> 添加选项
|
<legacy-el-icon name="el-icon-plus" /> 添加选项
|
||||||
</h6>
|
</h6>
|
||||||
</div>
|
</div>
|
||||||
</el-main>
|
</el-main>
|
||||||
|
|||||||
@@ -8,6 +8,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { noOncallImage } from "@/assets/images";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Empty',
|
name: 'Empty',
|
||||||
props: {
|
props: {
|
||||||
@@ -17,7 +19,7 @@ export default {
|
|||||||
},
|
},
|
||||||
src: {
|
src: {
|
||||||
type: String,
|
type: String,
|
||||||
default: require('@/assets/image/no-oncall.6b776fcf.png'),
|
default: noOncallImage,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
25
im/src/components/global/LegacyElIcon.vue
Normal file
25
im/src/components/global/LegacyElIcon.vue
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<template>
|
||||||
|
<el-icon v-bind="$attrs">
|
||||||
|
<component :is="iconComponent" v-if="iconComponent" />
|
||||||
|
</el-icon>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { resolveLegacyIcon } from "@/core/legacy-icon-map";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "LegacyElIcon",
|
||||||
|
inheritAttrs: false,
|
||||||
|
props: {
|
||||||
|
name: {
|
||||||
|
type: String,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
iconComponent() {
|
||||||
|
return resolveLegacyIcon(this.name);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<div class="abs-module" v-show="isShow">
|
<div class="abs-module" v-show="isShow">
|
||||||
<div class="abs-box">
|
<div class="abs-box">
|
||||||
<i class="el-icon-circle-close" @click="close" />
|
<legacy-el-icon name="el-icon-circle-close" @click="close" />
|
||||||
<a href="https://www.aliyun.com/minisite/goods?userCode=kqyyppx2">
|
<a href="https://www.aliyun.com/minisite/goods?userCode=kqyyppx2">
|
||||||
<img src="~@/assets/image/aliyun-abs.jpg" width="300" />
|
<img src="~@/assets/image/aliyun-abs.jpg" width="300" />
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<el-header class="header" height="50px">
|
<el-header class="header" height="50px">
|
||||||
<p>选择头像</p>
|
<p>选择头像</p>
|
||||||
<p class="tools">
|
<p class="tools">
|
||||||
<i class="el-icon-close" @click="$emit('close', 0)" />
|
<legacy-el-icon name="el-icon-close" @click="$emit('close', 0)" />
|
||||||
</p>
|
</p>
|
||||||
</el-header>
|
</el-header>
|
||||||
<el-main class="main">
|
<el-main class="main">
|
||||||
@@ -45,28 +45,28 @@
|
|||||||
<el-button
|
<el-button
|
||||||
size="small"
|
size="small"
|
||||||
plain
|
plain
|
||||||
icon="el-icon-upload"
|
:icon="$legacyIcon('el-icon-upload')"
|
||||||
@click="clickUpload"
|
@click="clickUpload"
|
||||||
>上传图片
|
>上传图片
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
size="small"
|
size="small"
|
||||||
plain
|
plain
|
||||||
icon="el-icon-refresh"
|
:icon="$legacyIcon('el-icon-refresh')"
|
||||||
@click="refreshCrop"
|
@click="refreshCrop"
|
||||||
>刷新
|
>刷新
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
size="small"
|
size="small"
|
||||||
plain
|
plain
|
||||||
icon="el-icon-refresh-left"
|
:icon="$legacyIcon('el-icon-refresh-left')"
|
||||||
@click="rotateLeft"
|
@click="rotateLeft"
|
||||||
>左转
|
>左转
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
size="small"
|
size="small"
|
||||||
plain
|
plain
|
||||||
icon="el-icon-refresh-right"
|
:icon="$legacyIcon('el-icon-refresh-right')"
|
||||||
@click="rotateRight"
|
@click="rotateRight"
|
||||||
>右转
|
>右转
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div class="reward" v-show="isShow">
|
<div class="reward" v-show="isShow">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<span>Donate</span>
|
<span>Donate</span>
|
||||||
<i class="el-icon-circle-close" @click="close" />
|
<legacy-el-icon name="el-icon-circle-close" @click="close" />
|
||||||
</div>
|
</div>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<div class="pay-box">
|
<div class="pay-box">
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<!-- 新消息提示组件 -->
|
<!-- 新消息提示组件 -->
|
||||||
<div class="notify-box">
|
<div class="notify-box">
|
||||||
<div class="lbox">
|
<div class="lbox">
|
||||||
<el-avatar size="medium" :src="avatar" />
|
<el-avatar size="default" :src="avatar" />
|
||||||
</div>
|
</div>
|
||||||
<div class="rbox">
|
<div class="rbox">
|
||||||
<div class="xheader">
|
<div class="xheader">
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
<!-- 新消息提示组件 -->
|
<!-- 新消息提示组件 -->
|
||||||
<div class="notify-box pointer">
|
<div class="notify-box pointer">
|
||||||
<div class="lbox">
|
<div class="lbox">
|
||||||
<el-avatar size="medium" shape="square" :src="avatar" />
|
<el-avatar size="default" shape="square" :src="avatar" />
|
||||||
</div>
|
</div>
|
||||||
<div class="rbox">
|
<div class="rbox">
|
||||||
<div class="xheader">
|
<div class="xheader">
|
||||||
<p class="title">
|
<p class="title">
|
||||||
{{ talk_type == 1 ? '私信消息通知' : '群聊消息通知' }}
|
{{ talk_type == 1 ? '私信消息通知' : '群聊消息通知' }}
|
||||||
</p>
|
</p>
|
||||||
<p class="time"><i class="el-icon-time" /> {{ formatTime(datetime) }}</p>
|
<p class="time"><legacy-el-icon name="el-icon-time" /> {{ formatTime(datetime) }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="xbody">
|
<div class="xbody">
|
||||||
<p>@{{ nickname }}</p>
|
<p>@{{ nickname }}</p>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<el-header class="header" height="50px">
|
<el-header class="header" height="50px">
|
||||||
<p>添加好友</p>
|
<p>添加好友</p>
|
||||||
<p class="tools">
|
<p class="tools">
|
||||||
<i class="el-icon-close" @click="close" />
|
<legacy-el-icon name="el-icon-close" @click="close" />
|
||||||
</p>
|
</p>
|
||||||
</el-header>
|
</el-header>
|
||||||
<el-main class="main">
|
<el-main class="main">
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
v-model="mobile"
|
v-model="mobile"
|
||||||
id="serach-mobile"
|
id="serach-mobile"
|
||||||
class="input"
|
class="input"
|
||||||
prefix-icon="el-icon-search"
|
:prefix-icon="$legacyIcon('el-icon-search')"
|
||||||
placeholder="请输入对方手机号(精确查找)"
|
placeholder="请输入对方手机号(精确查找)"
|
||||||
clearable
|
clearable
|
||||||
@keyup.enter="onSubmit"
|
@keyup.enter="onSubmit"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div class="lum-dialog-mask animated fadeIn">
|
<div class="lum-dialog-mask animated fadeIn">
|
||||||
<el-container class="container" v-outside="close">
|
<el-container class="container" v-outside="close">
|
||||||
<el-header class="no-padding header" height="180px">
|
<el-header class="no-padding header" height="180px">
|
||||||
<i class="close el-icon-error pointer" @click="close" />
|
<legacy-el-icon name="el-icon-error" class="close pointer" @click="close" />
|
||||||
<div class="img-banner">
|
<div class="img-banner">
|
||||||
<img :src="detail.bag" class="img-banner" />
|
<img :src="detail.bag" class="img-banner" />
|
||||||
</div>
|
</div>
|
||||||
@@ -55,9 +55,9 @@
|
|||||||
@keyup.enter="editRemarkSubmit"
|
@keyup.enter="editRemarkSubmit"
|
||||||
/>
|
/>
|
||||||
</span>
|
</span>
|
||||||
<i
|
<legacy-el-icon
|
||||||
v-show="!editRemark.isShow"
|
v-show="!editRemark.isShow"
|
||||||
class="el-icon-edit-outline"
|
name="el-icon-edit-outline"
|
||||||
@click="clickEditRemark"
|
@click="clickEditRemark"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -76,7 +76,7 @@
|
|||||||
v-if="detail.friend_status == 1 && detail.friend_apply == 0"
|
v-if="detail.friend_status == 1 && detail.friend_apply == 0"
|
||||||
type="primary"
|
type="primary"
|
||||||
size="small"
|
size="small"
|
||||||
icon="el-icon-circle-plus-outline"
|
:icon="$legacyIcon('el-icon-circle-plus-outline')"
|
||||||
@click="apply.isShow = true"
|
@click="apply.isShow = true"
|
||||||
>添加好友
|
>添加好友
|
||||||
</el-button>
|
</el-button>
|
||||||
@@ -90,7 +90,7 @@
|
|||||||
v-else-if="detail.friend_status == 2"
|
v-else-if="detail.friend_status == 2"
|
||||||
type="primary"
|
type="primary"
|
||||||
size="small"
|
size="small"
|
||||||
icon="el-icon-s-promotion"
|
:icon="$legacyIcon('el-icon-s-promotion')"
|
||||||
@click="sendMessage(detail)"
|
@click="sendMessage(detail)"
|
||||||
>发消息
|
>发消息
|
||||||
</el-button>
|
</el-button>
|
||||||
@@ -125,6 +125,7 @@
|
|||||||
// import { ServeSearchUser } from "@/api/user";
|
// import { ServeSearchUser } from "@/api/user";
|
||||||
import { ServeCreateContact, ServeEditContactRemark } from "@/api/contacts";
|
import { ServeCreateContact, ServeEditContactRemark } from "@/api/contacts";
|
||||||
import { toTalk } from "@/utils/talk";
|
import { toTalk } from "@/utils/talk";
|
||||||
|
import { defaultUserBanner } from "@/assets/images";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "UserCardDetail",
|
name: "UserCardDetail",
|
||||||
@@ -144,7 +145,7 @@ export default {
|
|||||||
friend_status: 0,
|
friend_status: 0,
|
||||||
friend_apply: 0,
|
friend_apply: 0,
|
||||||
nickname_remark: "",
|
nickname_remark: "",
|
||||||
bag: require("@/assets/image/default-user-banner.png"),
|
bag: defaultUserBanner,
|
||||||
gender: 0,
|
gender: 0,
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -425,7 +426,7 @@ export default {
|
|||||||
padding-right: 5px;
|
padding-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-icon-edit-outline {
|
.legacy-el-icon {
|
||||||
margin-left: 3px !important;
|
margin-left: 3px !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import store from "@/store";
|
|||||||
import { setupElementPlus } from "@/plugins/element";
|
import { setupElementPlus } from "@/plugins/element";
|
||||||
import { setupLegacyMessage } from "@/utils/message";
|
import { setupLegacyMessage } from "@/utils/message";
|
||||||
import { registerDirectives } from "@/core/directives";
|
import { registerDirectives } from "@/core/directives";
|
||||||
|
import LegacyElIcon from "@/components/global/LegacyElIcon.vue";
|
||||||
|
import { resolveLegacyIcon } from "@/core/legacy-icon-map";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
install(app) {
|
install(app) {
|
||||||
@@ -30,6 +32,8 @@ export default {
|
|||||||
setupElementPlus(cardApp);
|
setupElementPlus(cardApp);
|
||||||
setupLegacyMessage(cardApp);
|
setupLegacyMessage(cardApp);
|
||||||
registerDirectives(cardApp);
|
registerDirectives(cardApp);
|
||||||
|
cardApp.component("legacy-el-icon", LegacyElIcon);
|
||||||
|
cardApp.config.globalProperties.$legacyIcon = resolveLegacyIcon;
|
||||||
cardApp.use(router);
|
cardApp.use(router);
|
||||||
cardApp.use(store);
|
cardApp.use(store);
|
||||||
cardApp.mount(container);
|
cardApp.mount(container);
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ import {
|
|||||||
LoginMessage,
|
LoginMessage,
|
||||||
} from "@/components/chat/messaege";
|
} from "@/components/chat/messaege";
|
||||||
import UserCard from "@/components/user/user-card/index";
|
import UserCard from "@/components/user/user-card/index";
|
||||||
|
import LegacyElIcon from "@/components/global/LegacyElIcon.vue";
|
||||||
|
import { resolveLegacyIcon } from "@/core/legacy-icon-map";
|
||||||
|
|
||||||
const messageComponents = [
|
const messageComponents = [
|
||||||
AudioMessage,
|
AudioMessage,
|
||||||
@@ -39,5 +41,7 @@ export function registerGlobalComponents(app) {
|
|||||||
messageComponents.forEach((component) => {
|
messageComponents.forEach((component) => {
|
||||||
app.component(component.name, component);
|
app.component(component.name, component);
|
||||||
});
|
});
|
||||||
|
app.component("legacy-el-icon", LegacyElIcon);
|
||||||
|
app.config.globalProperties.$legacyIcon = resolveLegacyIcon;
|
||||||
app.use(UserCard);
|
app.use(UserCard);
|
||||||
}
|
}
|
||||||
|
|||||||
96
im/src/core/legacy-icon-map.js
Normal file
96
im/src/core/legacy-icon-map.js
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
import {
|
||||||
|
ArrowDown,
|
||||||
|
ArrowLeft,
|
||||||
|
ArrowRight,
|
||||||
|
Bell,
|
||||||
|
Bottom,
|
||||||
|
ChatDotRound,
|
||||||
|
ChatLineRound,
|
||||||
|
CircleCheck,
|
||||||
|
CircleClose,
|
||||||
|
CircleCloseFilled,
|
||||||
|
CirclePlus,
|
||||||
|
Clock,
|
||||||
|
Close,
|
||||||
|
Connection,
|
||||||
|
DataLine,
|
||||||
|
Delete,
|
||||||
|
DocumentCopy,
|
||||||
|
Edit,
|
||||||
|
Flag,
|
||||||
|
Folder,
|
||||||
|
FolderOpened,
|
||||||
|
Headset,
|
||||||
|
Loading,
|
||||||
|
Microphone,
|
||||||
|
MuteNotification,
|
||||||
|
Picture,
|
||||||
|
PictureRounded,
|
||||||
|
Plus,
|
||||||
|
Promotion,
|
||||||
|
Refresh,
|
||||||
|
RefreshLeft,
|
||||||
|
RefreshRight,
|
||||||
|
Remove,
|
||||||
|
Search,
|
||||||
|
Select,
|
||||||
|
Service,
|
||||||
|
Setting,
|
||||||
|
Top,
|
||||||
|
Upload,
|
||||||
|
User,
|
||||||
|
VideoPause,
|
||||||
|
VideoPlay,
|
||||||
|
} from "@element-plus/icons-vue";
|
||||||
|
|
||||||
|
/** Element UI `el-icon-*` class names → Element Plus icon components */
|
||||||
|
export const LEGACY_ICON_MAP = {
|
||||||
|
"el-icon-arrow-down": ArrowDown,
|
||||||
|
"el-icon-bell": Bell,
|
||||||
|
"el-icon-bottom": Bottom,
|
||||||
|
"el-icon-caret-left": ArrowLeft,
|
||||||
|
"el-icon-caret-right": ArrowRight,
|
||||||
|
"el-icon-chat-dot-round": ChatDotRound,
|
||||||
|
"el-icon-chat-line-round": ChatLineRound,
|
||||||
|
"el-icon-circle-close": CircleClose,
|
||||||
|
"el-icon-circle-plus-outline": CirclePlus,
|
||||||
|
"el-icon-close": Close,
|
||||||
|
"el-icon-close-notification": MuteNotification,
|
||||||
|
"el-icon-connection": Connection,
|
||||||
|
"el-icon-delete": Delete,
|
||||||
|
"el-icon-document-copy": DocumentCopy,
|
||||||
|
"el-icon-edit-outline": Edit,
|
||||||
|
"el-icon-error": CircleCloseFilled,
|
||||||
|
"el-icon-finished": Select,
|
||||||
|
"el-icon-folder": Folder,
|
||||||
|
"el-icon-folder-opened": FolderOpened,
|
||||||
|
"el-icon-headset": Headset,
|
||||||
|
"el-icon-loading": Loading,
|
||||||
|
"el-icon-microphone": Microphone,
|
||||||
|
"el-icon-picture": Picture,
|
||||||
|
"el-icon-picture-outline-round": PictureRounded,
|
||||||
|
"el-icon-plus": Plus,
|
||||||
|
"el-icon-position": Promotion,
|
||||||
|
"el-icon-refresh": Refresh,
|
||||||
|
"el-icon-refresh-left": RefreshLeft,
|
||||||
|
"el-icon-refresh-right": RefreshRight,
|
||||||
|
"el-icon-remove-outline": Remove,
|
||||||
|
"el-icon-s-data": DataLine,
|
||||||
|
"el-icon-s-flag": Flag,
|
||||||
|
"el-icon-s-promotion": Promotion,
|
||||||
|
"el-icon-search": Search,
|
||||||
|
"el-icon-service": Service,
|
||||||
|
"el-icon-setting": Setting,
|
||||||
|
"el-icon-success": CircleCheck,
|
||||||
|
"el-icon-time": Clock,
|
||||||
|
"el-icon-top": Top,
|
||||||
|
"el-icon-upload": Upload,
|
||||||
|
"el-icon-user": User,
|
||||||
|
"el-icon-video-pause": VideoPause,
|
||||||
|
"el-icon-video-play": VideoPlay,
|
||||||
|
};
|
||||||
|
|
||||||
|
export function resolveLegacyIcon(name) {
|
||||||
|
if (!name) return null;
|
||||||
|
return LEGACY_ICON_MAP[name] || null;
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
import { createApp, h, onMounted, onUnmounted } from "vue";
|
import { createApp, h, onMounted, onUnmounted } from "vue";
|
||||||
|
import LegacyElIcon from "@/components/global/LegacyElIcon.vue";
|
||||||
|
|
||||||
let activeMenu = null;
|
let activeMenu = null;
|
||||||
|
|
||||||
@@ -99,7 +100,7 @@ function renderMenuItem(item, close) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
[
|
[
|
||||||
item.icon ? h("i", { class: item.icon }) : null,
|
item.icon ? h(LegacyElIcon, { name: item.icon }) : null,
|
||||||
h("span", item.label),
|
h("span", item.label),
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { setUserInfo, getUserInfo, getToken } from "@/utils/auth";
|
import { setUserInfo, getUserInfo, getToken } from "@/utils/auth";
|
||||||
|
import { defaultAvatar, defaultUserBanner } from "@/assets/images";
|
||||||
|
|
||||||
// import { ServeLogout } from "@/api/user";
|
// import { ServeLogout } from "@/api/user";
|
||||||
|
|
||||||
@@ -8,9 +9,9 @@ let state = {
|
|||||||
// 用户昵称
|
// 用户昵称
|
||||||
name: "",
|
name: "",
|
||||||
// 个性头像
|
// 个性头像
|
||||||
face: require("@/assets/image/detault-avatar.jpg"),
|
face: defaultAvatar,
|
||||||
// 名片背景
|
// 名片背景
|
||||||
visitCardBag: require("@/assets/image/default-user-banner.png"),
|
visitCardBag: defaultUserBanner,
|
||||||
// 当前登录状态
|
// 当前登录状态
|
||||||
loginStatus: false,
|
loginStatus: false,
|
||||||
toUser:""
|
toUser:""
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const defaultAvatar = require('@/assets/image/detault-avatar.jpg')
|
import { defaultAvatar } from "@/assets/images";
|
||||||
|
|
||||||
// 根级别的 state
|
// 根级别的 state
|
||||||
const state = {
|
const state = {
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
<el-tooltip content="我的消息" placement="right" :visible-arrow="false">
|
<el-tooltip content="我的消息" placement="right" :visible-arrow="false">
|
||||||
<router-link to="/message">
|
<router-link to="/message">
|
||||||
<div class="menu-items" :class="{ active: idx == 0 }">
|
<div class="menu-items" :class="{ active: idx == 0 }">
|
||||||
<i class="el-icon-chat-line-round" />
|
<legacy-el-icon name="el-icon-chat-line-round" />
|
||||||
<span v-show="unreadNum" class="notify"></span>
|
<span v-show="unreadNum" class="notify"></span>
|
||||||
</div>
|
</div>
|
||||||
</router-link>
|
</router-link>
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
</el-header>
|
</el-header>
|
||||||
<el-header height="60px" class="header">
|
<el-header height="60px" class="header">
|
||||||
<div class="from-search">
|
<div class="from-search">
|
||||||
<el-input v-model="input" prefix-icon="el-icon-search" placeholder="搜索好友" size="small" />
|
<el-input v-model="input" :prefix-icon="$legacyIcon('el-icon-search')" placeholder="搜索好友" size="small" />
|
||||||
</div>
|
</div>
|
||||||
</el-header>
|
</el-header>
|
||||||
<!-- <el-header height="118px" class="logo-header">
|
<!-- <el-header height="118px" class="logo-header">
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
<el-scrollbar tag="section" ref="menusScrollbar" class="full-height" :native="false">
|
<el-scrollbar tag="section" ref="menusScrollbar" class="full-height" :native="false">
|
||||||
<el-main class="main">
|
<el-main class="main">
|
||||||
<p v-show="loadStatus === 0" class="empty-data">
|
<p v-show="loadStatus === 0" class="empty-data">
|
||||||
<i class="el-icon-loading" /> 数据加载中...
|
<legacy-el-icon name="el-icon-loading" /> 数据加载中...
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p v-show="loadStatus === 1 && talkNum === 0" class="empty-data">
|
<p v-show="loadStatus === 1 && talkNum === 0" class="empty-data">
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
<p v-show="loadStatus === 1 && talkNum > 0" class="main-menu">
|
<p v-show="loadStatus === 1 && talkNum > 0" class="main-menu">
|
||||||
<span class="title">对话记录({{ talkNum }})</span>
|
<span class="title">对话记录({{ talkNum }})</span>
|
||||||
|
|
||||||
<!-- <el-tag size="mini" type="danger" v-if="myUnreadNum"
|
<!-- <el-tag size="small" type="danger" v-if="myUnreadNum"
|
||||||
>未读:{{ myUnreadNum }}</el-tag
|
>未读:{{ myUnreadNum }}</el-tag
|
||||||
> -->
|
> -->
|
||||||
</p>
|
</p>
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
<face :text="item.face" v-if="item.face"></face>
|
<face :text="item.face" v-if="item.face"></face>
|
||||||
<face-null :text="item.name" v-else></face-null>
|
<face-null :text="item.name" v-else></face-null>
|
||||||
<div v-show="item.is_top == 0" class="top-mask" @click.stop="topChatItem(item)">
|
<div v-show="item.is_top == 0" class="top-mask" @click.stop="topChatItem(item)">
|
||||||
<i class="el-icon-top" />
|
<legacy-el-icon name="el-icon-top" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-box">
|
<div class="card-box">
|
||||||
|
|||||||
Reference in New Issue
Block a user