我的名片 下载调整
This commit is contained in:
@@ -193,5 +193,7 @@ export default {
|
||||
Nodata:'No data available at the moment!',
|
||||
versionmsg:'It is already the latest version!',
|
||||
receiveOrder:'Collect Order',
|
||||
loading:'loading'
|
||||
loading:'loading',
|
||||
downmp:'Download business card',
|
||||
downmpmsg:'Are you sure to download the current business card image?',
|
||||
}
|
||||
+179
-4
@@ -2,16 +2,191 @@ export default {
|
||||
// 可以以页面为单位来写,比如首页的内容,写在index字段,个人中心写在center,共同部分写在common部分
|
||||
tabbar: {
|
||||
home: 'начало',
|
||||
highseas: 'открытое море',
|
||||
customer: 'клиент',
|
||||
mine: 'мой'
|
||||
},
|
||||
navbar: {
|
||||
customerinfo: "Информация о клиенте",
|
||||
addfollowup: "Добавить последующие ",
|
||||
highseas: "Открытое море клиентов",
|
||||
userList: "Управление клиентами",
|
||||
tagselect: "Фильтр по меткам",
|
||||
persondata: "Личные данные",
|
||||
businesscard: "Моя визитка"
|
||||
},
|
||||
home: {
|
||||
desc: 'начало'
|
||||
desc: "начало",
|
||||
langbtn: "Сменить язык",
|
||||
title: "Вы сопровождаете линке",
|
||||
day: "день",
|
||||
databf: "Данные Брифинги",
|
||||
addxs: "Новые Подсказка",
|
||||
addkh: "Новые клиенты",
|
||||
addbf: "Новые посещения",
|
||||
addgj: "Новые последующие "
|
||||
},
|
||||
customer: {
|
||||
desc: 'клиент'
|
||||
desc: "клиент",
|
||||
title: "Управление клиентами",
|
||||
inputhd: "Введите имя клиента или номер телефона",
|
||||
followtype: "Способ последующие ",
|
||||
Online: "Онлайн последующие ",
|
||||
Visit: "Посещение",
|
||||
addfollow: "Добавить последующие",
|
||||
followtime: "Время последующие ",
|
||||
updataimg: "Загрузить скриншот последнего чата",
|
||||
followrecord: "Запись последующие ",
|
||||
followlocation: "Текущее местоположение",
|
||||
locationimg: "Сфотографировать текущее местоположение",
|
||||
Visitcontent: "Содержание посещения",
|
||||
Visiinputhd: "Введите содержание посещения~",
|
||||
Remarks: "Примечание (необязательно)",
|
||||
Remarksinputhd: "Введите примечание~",
|
||||
NextReminder: "Следующее напоминание о последующие ",
|
||||
CustomerChannel: "Канал клиента",
|
||||
CustomerChannelinput: "Выберите канал клиента",
|
||||
Medal: "Коммерческая возможность",
|
||||
Medalinput: "Выберите коммерческую возможность",
|
||||
CustomerName: "Имя клиента",
|
||||
CustomerNameinput: "Введите имя клиента",
|
||||
WhatsAppinput: "Введите WhatsApp",
|
||||
Emailinput: "Введите Email",
|
||||
Customerph: "Предпочтения клиента",
|
||||
Customerphinput: "Выберите предпочтения клиента",
|
||||
Cstomerfj: "Классификация клиентов",
|
||||
Cstomerfjinput: "Выберите классификацию",
|
||||
Cstomertag: "Метка клиента",
|
||||
Cstomertaginput: "Выберите",
|
||||
Country: "Страна",
|
||||
Countryinput: "Выберите страну",
|
||||
Company: "Компания",
|
||||
Companyinput: "Определить местоположение",
|
||||
CustomerScreening: "Фильтрация клиентов"
|
||||
},
|
||||
mine: {
|
||||
desc: 'мой'
|
||||
}
|
||||
desc: "мой",
|
||||
title: "мой",
|
||||
msg: "Уведомления",
|
||||
cpassword: "Изменить пароль",
|
||||
contact: "Связаться с поддержкой",
|
||||
feedback: "Отправить заявку",
|
||||
about: "О нас",
|
||||
logoff: "Удалить аккаунт",
|
||||
logout: "Выйти",
|
||||
kfphone: "Телефон поддержки",
|
||||
lxcall: "Контакт",
|
||||
lxcallinputhd: "Введите ваш номер",
|
||||
feedbackinputhd: "Введите ваши ценные предложения~",
|
||||
nickname: "Никнейм",
|
||||
nicknameinputhd: "Введите никнейм",
|
||||
idinputhd: "Введите ID",
|
||||
Versionup: "Обновление версии",
|
||||
Privacy: "Политика конфиденциальности",
|
||||
UserAgreement: "Пользовательское соглашение",
|
||||
copyright: "© Henan Xinyouhe Technology Co., Ltd. Все права защищены",
|
||||
logoffmsg: "Следующая информация будет удалена без возможности восстановления",
|
||||
logoffts1: "Идентификационные и учетные данные",
|
||||
logoffts2: "Вся информация о клиентах",
|
||||
logoffts3: "Личная информация",
|
||||
logoffbtn: "Подтвердить удаление",
|
||||
changeavatar: "Нажмите, чтобы сменить аватар",
|
||||
recyclebin: "Корзина",
|
||||
restore: "Восстановить клиента",
|
||||
position: "Должность",
|
||||
positioninput: "Введите должность",
|
||||
QRcode: "QR-код",
|
||||
WeChat: "WeChat",
|
||||
UploadQRcode: "Загрузить QR-код"
|
||||
},
|
||||
call: "Позвонить",
|
||||
delete: "Удалить",
|
||||
all: "Все",
|
||||
tday: "Сегодня",
|
||||
threeday: "Последние 3 дня",
|
||||
sevenday: "Последние 7 дней",
|
||||
followup: "Последующие меры",
|
||||
deal: "Завершено",
|
||||
lost: "Потеряно",
|
||||
cancel: "Отмена",
|
||||
confirm: "Подтвердить",
|
||||
prompt: "Подсказка",
|
||||
deletemsg: "Вы уверены, что хотите удалить этого клиента?",
|
||||
receivemsg: "Вы уверены, что хотите принять этого клиента?",
|
||||
submit: "Отправить",
|
||||
gender: "Пол",
|
||||
gender0: "Неизвестно",
|
||||
gender1: "Мужской",
|
||||
gender2: "Женский",
|
||||
Region: "Страна/регион",
|
||||
Regioninputhd: "Выбрать",
|
||||
login: "Войти",
|
||||
threelogin: "Вход через Третья сторона",
|
||||
account: "Аккаунт",
|
||||
password: "Пароль",
|
||||
fgpassword: "Забыли пароль",
|
||||
Facebook: "Feishu",
|
||||
email: "Email",
|
||||
emailinput: "Введите email",
|
||||
phone: "Телефон",
|
||||
agreeMsg: "Я прочитал и согласен с",
|
||||
and: "и",
|
||||
empty: "Нет записей~",
|
||||
times: "Время",
|
||||
address: "Адрес",
|
||||
emailerr: "Email не может быть пустым",
|
||||
emailerr1: "Неверный формат email",
|
||||
passworerr: "Пароль не может быть пустым",
|
||||
passworerr1: "Пароли не совпадают",
|
||||
agreementarr: "Пожалуйста, сначала согласитесь с пользовательским соглашением и политикой конфиденциальности",
|
||||
reg: "Регистрация",
|
||||
codeerr: "Код подтверждения не может быть пустым",
|
||||
getcode: "Получить код",
|
||||
code: "Код подтверждения",
|
||||
save: "Сохранить",
|
||||
resetpassword: "Сбросить пароль",
|
||||
newpassword: "Новый пароль",
|
||||
Confirmpassword: "Подтвердите пароль",
|
||||
Confirmbtn: "Подтвердить изменение",
|
||||
edtbtn: "Редактировать данные",
|
||||
zh: "Китайский",
|
||||
en: "Английский",
|
||||
ru: "Русский",
|
||||
subsuccess: "Успешно отправлено",
|
||||
onedaygj: "Через 1 день",
|
||||
threedaygj: "Через 3 дня",
|
||||
sevendaygj: "Через 7 дней",
|
||||
autodaygj: "Настроить",
|
||||
nexttime: "Настройка напоминания о следующем последующие ",
|
||||
details: "Детали",
|
||||
auth: "Авторизация Feishu",
|
||||
inputnl: "Выберите",
|
||||
noresults: "Нет результатов",
|
||||
keyword: "Введите ключевое слово для поиска",
|
||||
restoremsg: "Подтвердите восстановление данных клиента?",
|
||||
onedayn: "В течение 1 дня",
|
||||
threedayn: "В течение 3 дней",
|
||||
sevendayn: "В течение 7 дней",
|
||||
follow: " последующие ",
|
||||
timeout: "Просрочено",
|
||||
hour: "час",
|
||||
minute: "мин",
|
||||
second: "сек",
|
||||
nextgjtime: "Время следующего последующие ",
|
||||
Remindergj: "Напоминание о последующие ",
|
||||
callPhonemsg: "Ошибка номера!",
|
||||
download: "Скачать",
|
||||
addtag: "Добавить метку",
|
||||
CustomerProfile: "Профиль клиента",
|
||||
CustomerProfilemag: "Нет меток профиля!",
|
||||
retract: "Свернуть",
|
||||
expand: "Развернуть",
|
||||
remarks: "Примечание",
|
||||
channel: "Канал",
|
||||
Nodata: "Нет данных!",
|
||||
versionmsg: "Уже последняя версия!",
|
||||
receiveOrder: "Принять заказ",
|
||||
loading: "Загрузка",
|
||||
downmp:'Скачать визитку',
|
||||
downmpmsg:'Вы уверены в загрузке текущей карты?',
|
||||
}
|
||||
@@ -192,6 +192,8 @@ export default {
|
||||
Nodata:'暂无数据!',
|
||||
versionmsg:'已是最新版本!',
|
||||
receiveOrder:'领单',
|
||||
loading:'加载中'
|
||||
loading:'加载中',
|
||||
downmp:'下载名片',
|
||||
downmpmsg:'确定下载当前名片图吗?',
|
||||
|
||||
}
|
||||
@@ -7,7 +7,7 @@
|
||||
<view class="content">
|
||||
<view class="contop">
|
||||
<view class="">
|
||||
<image class="userimg" :src="userinfo.avatar" mode=""></image>
|
||||
<image class="userimg" :src="userinfo.avatar_url" mode=""></image>
|
||||
<!-- <image class="userimg" src="/static/image/mine/user.png" mode=""></image> -->
|
||||
</view>
|
||||
<view class="right">
|
||||
|
||||
+64
-61
@@ -13,7 +13,7 @@
|
||||
<view class="ftitle">{{userinfo.position}}</view>
|
||||
</view>
|
||||
<view>
|
||||
<image :src="userinfo.avatar" mode=""></image>
|
||||
<image :src="imageSrc" mode="" crossOrigin="anonymous" ></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="conts">
|
||||
@@ -38,7 +38,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="code">
|
||||
<image :src="userinfo.socialize_pic_url" mode=""></image>
|
||||
<image :src="imageSrcewm" mode="" crossOrigin="anonymous" ></image>
|
||||
<view>{{userinfo.socialize}}</view>
|
||||
</view>
|
||||
<!-- <view class="code" :class=" activeImg === share_one ? 'code_one' : activeImg === share_two ? 'code_two' : activeImg === share_three ? 'code_three' : 'code_one'">
|
||||
@@ -50,6 +50,10 @@
|
||||
<view class="foot">
|
||||
<button class="btn" @click="goDown">{{$t('download')}}</button>
|
||||
</view>
|
||||
<!-- 手机端预览容器 -->
|
||||
<view v-if="showPreview" class="preview-mask" @click="showPreview = false">
|
||||
<image :src="previewUrl" mode="aspectFit"></image>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -59,7 +63,11 @@
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
userinfo:{}
|
||||
userinfo:{},
|
||||
showPreview: false,
|
||||
previewUrl: '',
|
||||
imageSrc:'',
|
||||
imageSrcewm:'',
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
@@ -76,64 +84,55 @@
|
||||
method:'get',
|
||||
}).then(res => {
|
||||
that.userinfo = res.data.data;
|
||||
that.downloadImageToLocal(res.data.data.avatar_url,'imageSrc')
|
||||
that.downloadImageToLocal(res.data.data.socialize_pic_url,'imageSrcewm')
|
||||
})
|
||||
},
|
||||
saveImgFile(baseImg){
|
||||
const bitmap = new plus.nativeObj.Bitmap('test')
|
||||
bitmap.loadBase64Data(
|
||||
baseImg,
|
||||
function () {
|
||||
const url = '_doc/' + new Date().getTime() + '.png' // url为时间戳命名方式
|
||||
bitmap.save(
|
||||
url,
|
||||
{
|
||||
overwrite: true // 是否覆盖
|
||||
},
|
||||
i => {
|
||||
plus.gallery.save(
|
||||
i.target,
|
||||
function () {
|
||||
uni.showToast({
|
||||
title: '图片保存至相册成功',
|
||||
icon: 'none'
|
||||
});
|
||||
bitmap.clear()
|
||||
},
|
||||
function (e) {
|
||||
uni.showToast({
|
||||
title: '图片保存至相册失败',
|
||||
icon: 'none'
|
||||
});
|
||||
// console.log('图片保存至相册失败:' + JSON.stringify(e))
|
||||
bitmap.clear()
|
||||
}
|
||||
)
|
||||
},
|
||||
e => {
|
||||
uni.showToast({
|
||||
title: '图片保存失败1',
|
||||
icon: 'none'
|
||||
});
|
||||
bitmap.clear()
|
||||
}
|
||||
)
|
||||
},
|
||||
e => {
|
||||
uni.showToast({
|
||||
title: '图片保存失败2',
|
||||
icon: 'none'
|
||||
});
|
||||
bitmap.clear()
|
||||
}
|
||||
)
|
||||
async downloadImageToLocal(imageUrl,item) {
|
||||
try {
|
||||
// 1. 下载图片到临时路径
|
||||
const { tempFilePath } = await new Promise((resolve, reject) => {
|
||||
uni.downloadFile({
|
||||
url: imageUrl,
|
||||
success: resolve,
|
||||
fail: reject,
|
||||
});
|
||||
});
|
||||
|
||||
// 2. 返回临时路径(可直接用于 <image> 显示)
|
||||
console.log('下载成功,临时路径:', tempFilePath);
|
||||
if(item =='imageSrc'){
|
||||
this.imageSrc = tempFilePath;
|
||||
}else{
|
||||
this.imageSrcewm = tempFilePath;
|
||||
}
|
||||
|
||||
} catch (err) {
|
||||
console.error('下载失败:', err);
|
||||
throw new Error('图片下载失败');
|
||||
}
|
||||
},
|
||||
downloadImage(url, filename) {
|
||||
// 创建一个隐藏的 <a> 标签
|
||||
const link = document.createElement('a');
|
||||
link.href = url;
|
||||
link.download = filename;
|
||||
// 触发点击事件
|
||||
link.click();
|
||||
downloadImage(url, canvas) {
|
||||
const filename1 = '_doc/' + new Date().getTime() + '.png' // url为时间戳命名方式
|
||||
if (uni.getSystemInfoSync().platform === 'h5') {
|
||||
// 创建一个隐藏的 <a> 标签
|
||||
const link = document.createElement('a');
|
||||
link.href = url;
|
||||
link.download = filename1;
|
||||
// 触发点击事件
|
||||
link.click();
|
||||
}else {
|
||||
canvas.toBlob((blob) => {
|
||||
const blobUrl = URL.createObjectURL(blob);
|
||||
const link = document.createElement('a');
|
||||
link.href = blobUrl;
|
||||
link.download = filename1;
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
URL.revokeObjectURL(blobUrl); // 释放内存
|
||||
}, 'image/png');
|
||||
}
|
||||
},
|
||||
goDown(){
|
||||
const element = document.getElementById('poster');
|
||||
@@ -142,15 +141,19 @@
|
||||
backgroundColor: '#f5f5f5', //海报的背景颜色
|
||||
useCORS: true ,// 允许跨域
|
||||
allowTaint: true, // 允许污染画布
|
||||
scale: 2, // 提高清晰度
|
||||
logging: false // 关闭日志(可选)
|
||||
}).then(canvas => {
|
||||
// canvas 其实就是我们所讲的res 的意思 返回报文的意思
|
||||
let baseImg = canvas.toDataURL('image/png')
|
||||
uni.showModal ({
|
||||
title: '下载名片',
|
||||
content: '确定下载当前名片图吗?',
|
||||
title: this.$t('downmp'),
|
||||
content: this.$t('downmpmsg'),
|
||||
cancelText: this.$t('cancel'),
|
||||
confirmText: this.$t('confirm'),
|
||||
success: function (res) {
|
||||
if (res.confirm) {
|
||||
that.downloadImage(baseImg, 'screenshot.png');
|
||||
that.downloadImage(baseImg,canvas);
|
||||
} else if (res.cancel) {
|
||||
console.log('用户点击取消');
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<view class="content">
|
||||
<view class="topimg">
|
||||
<uni-file-picker fileMediatype="image" limit="1" :list-styles="imageStyles" :del-icon="false" disable-preview @select="select" @delete="delfn('picture')">
|
||||
<image class="user" :src="userinfo.avatar"mode=""></image>
|
||||
<image class="user" :src="userinfo.avatar_url"mode=""></image>
|
||||
<!-- <image class="xj" src="/static/image/mine/xiangji.png" mode=""></image> -->
|
||||
</uni-file-picker>
|
||||
<view>{{$t('mine.changeavatar')}}</view>
|
||||
|
||||
Reference in New Issue
Block a user