// ==UserScript==
// @name 闲管家自动填写表单
// @namespace Take
// @version 1.36
// @description 自动填写设置的默认值,帮助更快的上传商品。
// @match https://*.goofish.pro/*
// @match https://*.kongfz.com/*
// @homepage https://www.aiapply.cn
// @require https://cdnjs.cloudflare.com/ajax/libs/jszip/3.6.0/jszip.min.js
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_addStyle
// @grant GM_xmlhttpRequest
// @grant GM_download
// @license MIT
// ==/UserScript==
(function() {
'use strict';
console.log('脚本开始执行');
const oneTouch = document.createElement('button');
const configIcon = document.createElement('button');
oneTouch.style.display = "none";
configIcon.style.display = "none";
var type = 0 // 0 闲管家 1 孔夫子
// 判断当前页面的域名是否为指定的域名
function isDomainAllowed(domain) {
var currentDomain = window.location.hostname;
return currentDomain.includes(domain);
}
// 在示例中判断当前页面是否为 example.com 域名
if (isDomainAllowed('kongfz.com')) {
console.log('孔夫子脚本加载成功!');
type = 1
}
// 显示隐藏闲管家按钮
var currentURL = window.location.href;
window.history.pushState = new Proxy(window.history.pushState, {
apply: function(target, thisArg, args) {
var url = args[2];
console.log("URL变化:", url);
if(url.includes('add')){
oneTouch.style.display = "block";
configIcon.style.display = "block";
}else{
oneTouch.style.display = "none";
configIcon.style.display = "none";
}
return target.apply(thisArg, args);
}
});
// 孔夫子脚本
if(type==1){
// 计算平均价格
window.addEventListener('load', function() {
var xpath = '//ul[@class="itemList"]//div[@class="list-con-moneys"]/div/span';
var result = document.evaluate(xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var priceNum = 0
var priceList = []
for (var i = 0; i < result.snapshotLength; i++) {
var element = result.snapshotItem(i);
priceNum = priceNum + parseFloat(element.textContent);
priceList.push(parseFloat(element.textContent))
}
priceShow(priceList,priceNum)
});
// 查找图片大于3的突出显示
window.addEventListener('load', function() {
var xpath = '//div[@id="listBox"]//span[@class="img-num"]';
var result = document.evaluate(xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0; i < result.snapshotLength; i++) {
var element = result.snapshotItem(i);
var imgNum = parseInt(element.textContent);
if (imgNum > 3) {
element.style.background = "#15ff08";
element.style.fontSize = "23px";
element.style.width = "93%";
}
}
});
// 计算平均价格
var open = window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function(method, url, async) {
var xhr = this;
// 监听 load 事件
xhr.addEventListener('readystatechange', function() {
if (url.includes('product_result/?key=')&&!url.includes('ajaxdata=2')&&!url.includes('ajaxdata=3')) {
var booksList = JSON.parse(xhr.responseText).data.itemList;
var priceNum = 0
var priceList = []
for (var i = 0; i < booksList.length; i++) {
priceList.push(parseFloat(booksList[i].price))
priceNum = priceNum + parseFloat(booksList[i].price)
}
priceShow(priceList,priceNum)
var xpath = '//div[@id="listBox"]//span[@class="img-num"]';
var result = document.evaluate(xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
}
});
// 调用原始的 open 方法
open.apply(xhr, arguments);
};
function priceShow(priceList,priceNum){
if(!priceList||priceList.length==0){
return false
}
// 使用 sort 方法进行升序排序
priceList.sort(function(a, b) {
return a - b;
});
var middleIdx = Math.floor(priceList.length / 2)
var median = 0
if (priceList.length % 2 === 0) {
// 数组长度为偶数
median = (priceList[middleIdx - 1] + priceList[middleIdx]) / 2;
} else {
// 数组长度为奇数
median = priceList[middleIdx];
}
// 创建卡片容器
var cardContainer = document.createElement('div');
cardContainer.id = 'card-container';
document.body.appendChild(cardContainer);
// 创建卡片内容
var cardContent = document.createElement('div');
cardContent.id = 'card-content';
cardContent.innerHTML = '<p>当前页面价格:</p><p>平均价格:' + (priceNum/priceList.length).toFixed(2) + '</p><p>最低价格:¥'+priceList[0]+'</p><p>中位数:¥'+median+'</p><p>注:以上不含运费</p>';
cardContainer.appendChild(cardContent);
// 设置卡片样式
cardContainer.style.position = 'fixed';
cardContainer.style.top = '50%';
cardContainer.style.right = '20px';
cardContainer.style.transform = 'translateY(-50%)';
cardContainer.style.width = '200px';
cardContainer.style.height = '150px';
cardContainer.style.backgroundColor = '#f1f1f1';
cardContainer.style.padding = '10px';
cardContainer.style.borderRadius = '5px';
cardContainer.style.boxShadow = '0 2px 5px rgba(0, 0, 0, 0.2)';
}
var imageArray = [];
var figureInfoBox = document.getElementById('figure-info-box');
if(figureInfoBox){
var imageElements = figureInfoBox.getElementsByTagName('img');
for (var i = 0; i < imageElements.length; i++) {
var imageUrl = imageElements[i].getAttribute('data-imgurl');
imageArray.push(imageUrl.replace('_b', ''));
}
}
if(imageArray.length>0){
name = '下载图片(' + imageArray.length + '张)'
}else{
name = '未找到图片'
//showEleToast('该页面未找到图片,无法进行下载');
}
// 创建一键赋值按钮
const donwimg = document.createElement('button');
donwimg.textContent = name;
donwimg.style.position = 'fixed';
donwimg.style.bottom = '50px';
donwimg.style.right = '35px';
donwimg.style.zIndex = '9999';
donwimg.style.padding = '5px 20px';
donwimg.style.fontSize = '16px';
donwimg.style.backgroundColor = '#ffe60f';
donwimg.style.border = 'none';
donwimg.style.borderRadius = '50px';
donwimg.style.cursor = 'pointer';
donwimg.style.boxShadow = '0 2px 4px rgba(0, 0, 0, 0.2)';
donwimg.addEventListener('click', downloadImagesAsZip);
document.body.appendChild(donwimg);
// 创建下载链接并点击触发下载
function downloadFile(content, filename) {
var blob = new Blob([content], { type: 'application/zip' });
var url = URL.createObjectURL(blob);
var a = document.createElement('a');
a.href = url;
a.download = filename;
a.style.display = 'none';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
}
// 下载图片并生成压缩包
function downloadImagesAsZip() {
var images = imageArray;
if (images.length === 0) {
showEleToast('该页面未找到图片,无法进行下载');
return;
}
showEleToast('正在下载图片...');
var zip = new JSZip();
var folder = zip.folder(document.title);
var fetchPromises = [];
showEleToast('正在合并为压缩包...');
function addImageToZip(imageUrl, filename) {
return fetch(imageUrl)
.then(function (response) {
return response.blob();
})
.then(function (blob) {
folder.file(filename, blob);
showEleToast('下载成功');
})
.catch(function (error) {
console.error('下载图片失败', error);
showEleToast("下载图片失败")
});
}
for (var i = 0; i < images.length; i++) {
var imageUrl = images[i];
var filename = 'image' + (i + 1) + '.jpg';
fetchPromises.push(addImageToZip(imageUrl, filename));
}
Promise.all(fetchPromises)
.then(function () {
return zip.generateAsync({ type: 'blob' });
})
.then(function (content) {
downloadFile(content, document.title + '.zip');
})
.catch(function (error) {
console.error('生成压缩包失败', error);
showEleToast("生成压缩包失败")
});
}
}
// 闲管家
if(type==0){
// 从本地存储中获取配置
let defaultCategory = GM_getValue('defaultCategory', '');
let defaultStore = GM_getValue('defaultStore', '');
let defaultTitle = GM_getValue('defaultTitle', '');
let defaultDescription = GM_getValue('defaultDescription', '');
let defaultCategories = []
let defaultStores = []
let inventoryNum = GM_getValue('inventoryNum', '1');
let blacklist = GM_getValue('blacklist', '');
let ok = 0
const observer = new MutationObserver(mutationsList => {
for (let mutation of mutationsList) {
if (mutation.type === 'childList' && mutation.target.nodeName === 'TITLE') {
//console.log('页面标题变为:', mutation.target.textContent);
// 初始化
ok = 0
setTimeout(function() {
if(mutation.target.textContent == '新建商品'&&defaultCategory!=''){
fillForm() // 自动执行赋值
}
},3000)
}
}
});
observer.observe(document.querySelector('title'), { childList: true, subtree: true });
// 获取页面的分类、店铺数据
function getCategories(){
defaultCategories = []
defaultStores = []
// 获取包含所有分类
const elementDiv = document.querySelectorAll('div.release-history');
console.log(elementDiv)
if(elementDiv){
// 获取所有的<span>元素
//const spanElements = element.querySelectorAll('span.color-blue');
// 遍历每个<span>元素,获取文本内容并添加到数组中
elementDiv.forEach(div => {
const text = div.textContent.trim();
if(text!='上传方式' && text!='仓储管理'){
defaultCategories.push(text.replace("、", ""));
}
});
console.log(defaultCategories)
}else{
defaultCategories = ["请先添加商品后,才能读取到历史类别"]
}
var parentElement = document.querySelector('.auth-list'); // 使用class选择器选取父元素
var liElements = parentElement.querySelectorAll('li');
liElements.forEach(function(li) {
var text = li.textContent.trim(); // 提取文本内容并去除首尾空格
if(text!='创建闲鱼店铺'){
defaultStores.push(text);
}
});
console.log(defaultStores)
updateConfigPopupOptions()
}
// 创建一键赋值按钮
oneTouch.textContent = '一键赋值';
oneTouch.style.position = 'fixed';
oneTouch.style.bottom = '180px';
oneTouch.style.right = '50px';
oneTouch.style.zIndex = '9999';
oneTouch.style.padding = '10px 20px';
oneTouch.style.fontSize = '16px';
oneTouch.style.backgroundColor = '#ffe60f';
oneTouch.style.border = 'none';
oneTouch.style.borderRadius = '50px';
oneTouch.style.cursor = 'pointer';
oneTouch.style.boxShadow = '0 2px 4px rgba(0, 0, 0, 0.2)';
oneTouch.addEventListener('click', fillForm);
document.body.appendChild(oneTouch);
// 创建配置按钮
configIcon.textContent = '设置';
configIcon.style.position = 'fixed';
configIcon.style.bottom = '130px';
configIcon.style.right = '50px';
configIcon.style.zIndex = '9999';
configIcon.style.padding = '10px 35px';
configIcon.style.fontSize = '16px';
configIcon.style.border = 'none';
configIcon.style.borderRadius = '50px';
configIcon.style.cursor = 'pointer';
configIcon.style.boxShadow = '0 2px 4px rgba(0, 0, 0, 0.2)';
configIcon.addEventListener('click', openConfigPopup);
document.body.appendChild(configIcon);
// 创建配置弹窗的 HTML 代码
const configPopupHTML = `
<div id="configPopup" style="
display: none;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 9999;
width: 550px;
padding: 20px;
background-color: #fff;
border: 1px solid #ccc;
border-radius: 5px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
">
<h3 style="margin:10px 0;margin-top: 0;">脚本设置</h3>
<div class='config' style="
height: 500px;
overflow-y: scroll;
">
<div style="margin-bottom: 15px; line-height: 20px;">Tip:已默认开启自动一键赋值,下拉可配置黑名单。</div>
<form style="height: 100%;">
<label style=" display: block;">
<span style="font-weight: bold;">选中类别:</span>
<select id="categoryInput" style="width: 100%;" style='margin-top: 10px;'>
${renderOptions(defaultCategories, defaultCategory)}
</select>
</label>
<label style="margin: 10px 0; display: block;">
<span style="font-weight: bold;">选中店铺:</span>
<select id="storeInput" style="width: 100%;"placeholder="请选择默认店铺">
${renderOptions(defaultStores, defaultStore)}
</select>
</label>
<label style="margin: 10px 0; display: block;">
<span style="font-weight: bold;">标题前缀:</span>
<input id="titleInput" type="text" style="width: 100%;"placeholder="请输入标题开头" style='margin-top: 10px;'>
</label>
<label style="margin: 10px 0; display: block;">
<span style="font-weight: bold;display: block;">商品描述:</span>
<textarea id="descriptionInput" rows="8" cols="50"placeholder="请输入默认描述" style='margin-top: 10px;' maxlength="-1"></textarea>
</label>
<label style="margin: 10px 0; display: block;">
<span style="font-weight: bold;">设置库存:</span>
<input id="inventoryInput" type="text" style="width: 100%;"placeholder="设置库存,默认:1" style='margin-top: 10px;'>
</label>
<label style="margin: 10px 0; display: block;">
<span style="font-weight: bold;display: block;">黑名单:</span>
<textarea id="blacklistInput" maxlength="-1" rows="8" cols="50"placeholder="禁书过滤(一行一个,可以是书名、作者名称)设置后,包含该关键词的书将会提醒您" style='margin-top: 10px;'></textarea>
</label>
</div>
<div style="text-align: right;margin-top: 30px;">
<div id="cancelConfigButton" style="padding: 10px 50px;
display: inline-block;
border-radius: 50px;
border: 1px solid #ffe60f;
margin-right: 10px;">取消</div>
<div id="saveConfigButton" style="padding: 10px 50px;
display: inline-block;
background-color: #ffe60f;
border-radius: 50px;">保存</div>
</div>
</form>
</div>`;
// 辅助函数:根据数组渲染下拉选择器选项
function renderOptions(options, selectedValue) {
return options
.map(option => `<option value="${option}" ${option === selectedValue ? 'selected' : ''}>${option}</option>`)
.join('');
}
// 更新配置弹窗中的选项
function updateConfigPopupOptions() {
const categoryInput = document.getElementById('categoryInput');
const storeInput = document.getElementById('storeInput');
const updatedCategoryOptions = renderOptions(defaultCategories, defaultCategory);
const updatedStoreOptions = renderOptions(defaultStores, defaultStore);
categoryInput.innerHTML = updatedCategoryOptions;
storeInput.innerHTML = updatedStoreOptions;
}
// 插入配置弹窗到页面中
document.body.insertAdjacentHTML('beforeend', configPopupHTML);
// 获取配置弹窗元素
const configPopup = document.getElementById('configPopup');
// 创建配置按钮点击事件处理函数
function openConfigPopup() {
getCategories()
configPopup.style.display = 'block';
// 创建一键赋值按钮点击事件处理函数
const titleInput = document.getElementById('titleInput');
const descriptionInput = document.getElementById('descriptionInput');
const inventoryInput = document.getElementById('inventoryInput');
const blacklistInput = document.getElementById('blacklistInput');
// 填充表单字段
titleInput.value = defaultTitle;
descriptionInput.value = defaultDescription;
inventoryInput.value = inventoryNum;
blacklistInput.value = blacklist;
}
// 创建保存配置按钮点击事件处理函数
function saveConfig() {
const categoryInput = document.getElementById('categoryInput');
const storeInput = document.getElementById('storeInput');
const titleInput = document.getElementById('titleInput');
const descriptionInput = document.getElementById('descriptionInput');
const inventoryInput = document.getElementById('inventoryInput');
const blacklistInput = document.getElementById('blacklistInput');
// 将配置保存到本地存储
defaultCategory = categoryInput.value
defaultStore = storeInput.value
defaultTitle = titleInput.value
defaultDescription = descriptionInput.value
inventoryNum = inventoryInput.value
blacklist = blacklistInput.value
GM_setValue('defaultCategory', categoryInput.value);
GM_setValue('defaultStore', storeInput.value);
GM_setValue('defaultTitle', titleInput.value);
GM_setValue('defaultDescription', descriptionInput.value);
GM_setValue('inventoryNum', inventoryInput.value);
GM_setValue('blacklist', blacklistInput.value);
// 提示保存成功,并关闭配置弹窗
showEleToast("保存成功")
closeConfigPopup();
}
// 创建取消配置按钮点击事件处理函数
function closeConfigPopup() {
configPopup.style.display = 'none';
}
// 监听保存配置按钮点击事件
const saveConfigButton = document.getElementById('saveConfigButton');
saveConfigButton.addEventListener('click', saveConfig);
// 监听取消配置按钮点击事件
const cancelConfigButton = document.getElementById('cancelConfigButton');
cancelConfigButton.addEventListener('click', closeConfigPopup);
// 黑名单查询
function BlacklistDetection(title,author){
if(blacklist==''){
return false
}
// 黑名单数组
var blacklist2 = blacklist.split('\n');
// 过滤空格 空行
blacklist2 = blacklist2.filter(function(item) {
return item.trim() !== "";
});
// 循环遍历黑名单数组
for (var i = 0; i < blacklist2.length; i++) {
// 检测标题是否包含黑名单中的字符串
if (title.includes(blacklist2[i]) || author.includes(blacklist2[i])) {
console.log("触发黑名单:",blacklist2[i]);
showEleToast("触发黑名单:" + blacklist2[i],6000)
return true
break; // 匹配到黑名单中的数据,停止循环
}
}
return false
}
// 更新商品标题
function updateProductTitle(isbnInput,titleInput,publisherInput,authorInput) {
var isbn = isbnInput.value || '';
var title = titleInput.value || '';
var publisher = publisherInput.value || '';
var author = authorInput.value || '';
//publisher
var productTitle = defaultTitle + ' ' + title + ' ' + author.replace(/[^\u4E00-\u9FA5]/g, '').replace(/\s/g, '').replace('著', '').replace('主编', '') + isbn;
// 填写商品标题
var newtitle = document.querySelector('input[placeholder="请输入商品标题,最多允许输入30个汉字"]');
if (newtitle) {
console.log('找到商品标题输入框',productTitle);
newtitle.value = productTitle;
triggerInputEvent(newtitle);
} else {
console.log('未找到商品标题输入框');
showEleToast('未找到商品标题输入框')
}
// 禁书检测
if(BlacklistDetection(title,author)){
showWarningPopup()
}
}
// 填写商品标题和商品描述
function fillForm() {
getCategories()
var genreElements = document.querySelectorAll('div.release-history');
console.log(genreElements)
for (var i = 0; i < genreElements.length; i++) {
var genreElement = genreElements[i];
var genreTitle = genreElement.textContent.trim();
if (genreTitle.includes(defaultCategory)) {
if(ok==0){
genreElement.click();
console.log('成功点击"' + defaultCategory + '"');
}else{
console.log('已选择分类,跳过点击')
}
// 延迟执行
setTimeout(function() {
if(ok==0){
// 选择店铺
var storeElements = document.querySelectorAll('.auth-list li:not(.sku-add-btn)');
for (var ii = 0; i < storeElements.length; ii++) {
var storeElement = storeElements[ii];
var storeTitle = storeElement.querySelector('.auth-left p').textContent.trim();
if (storeTitle == defaultStore) {
storeElement.click();
console.log('成功点击"' + defaultStore + '"');
ok=1
break;
}
}
}else{
console.log('已选择店铺,跳过点击')
}
// 延迟执行
setTimeout(function() {
// 监听输入框的值变化并更新商品标题
var isbnInput = document.querySelector('input[placeholder="请输入ISBN编码"]');
var titleInput = document.querySelector('input[placeholder="请输入书名"]');
var publisherInput = document.querySelector('input[placeholder="请输入出版社"]');
var authorInput = document.querySelector('input[placeholder="请输入作者"]');
const button = document.querySelector('.el-button.w-90.mgl-8.color-black.el-button--primary');
button.addEventListener('click', function() {
console.log('查询按钮被点击了');
setTimeout(function() {
isbnInput.value = isbnInput.value;
triggerInputEvent(isbnInput);
updateProductTitle(isbnInput,titleInput,publisherInput,authorInput)
}, 300);
});
updateProductTitle(isbnInput,titleInput,publisherInput,authorInput)
if (isbnInput && titleInput && publisherInput && authorInput) {
titleInput.addEventListener('input', function() {
updateProductTitle(isbnInput,titleInput,publisherInput,authorInput);
});
publisherInput.addEventListener('input', function() {
updateProductTitle(isbnInput,titleInput,publisherInput,authorInput);
});
authorInput.addEventListener('input', function() {
updateProductTitle(isbnInput,titleInput,publisherInput,authorInput);
});
}
// 填写商品描述
var descriptionTextarea = document.querySelector('textarea[placeholder="请输入商品描述"]');
if (descriptionTextarea) {
console.log('找到商品描述输入框');
descriptionTextarea.value = defaultDescription;
triggerInputEvent(descriptionTextarea);
} else {
console.log('未找到商品描述输入框');
showEleToast('未找到商品描述输入框')
}
var stockLabel = document.querySelector('label[for="stock"]');
if (stockLabel) {
var stockInput = stockLabel.nextElementSibling.querySelector('input');
if (stockInput) {
stockInput.value = inventoryNum;
stockInput.dispatchEvent(new Event('input', { bubbles: true }));
console.log('设置库存成功');
} else {
console.log('未找到库存输入框2');
showEleToast('未找到库存输入框2');
}
} else {
console.log('未找到库存输入框');
showEleToast('未找到库存输入框');
}
// 获取立即发布按钮的元素
const publishButton = document.querySelectorAll('label.el-radio');
if (publishButton[5]) {
// 模拟点击立即发布按钮
console.log('选中立即发布',publishButton);
publishButton[5].click();
} else {
console.log('未找到立即发布按钮');
showEleToast('未找到立即发布按钮')
}
showEleToast('一键赋值成功')
}, 100); // 延迟1秒执行填写操作
}, 100); // 延迟1秒执行填写操作
return;
}
}
}
GM_addStyle(`
.modal {
position: fixed;
z-index: 9999;
left: 0;
top: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.4);
}
.modal-content {
position: relative;
background-color: #fff;
border-radius: 6px;
padding: 30px;
margin: 20% auto;
max-width: 400px;
}
.close {
position: absolute;
top: 10px;
right: 10px;
font-size: 24px;
font-weight: bold;
cursor: pointer;
}
.modal-title {
margin-top: 0;
}
.modal-message {
margin: 20px 0;
}
.modal-button {
background-color: red;
color: #fff;
border: none;
padding: 10px 20px;
border-radius: 4px;
cursor: pointer;
}
`);
// 定义函数显示警告弹窗提示
function showWarningPopup() {
// 创建弹窗元素
var modal = document.createElement('div');
modal.className = 'modal';
modal.innerHTML = `
<div class="modal-content">
<span class="close">×</span>
<h3 class="modal-title">禁书提示</h3>
<p class="modal-message">该书疑是禁书,请自行核验是否还要继续上架!!!</p>
<button class="modal-button">我已了解</button>
</div>
`;
// 找到页面的 body 元素
var body = document.querySelector('body');
// 将弹窗添加到 body 元素中
body.appendChild(modal);
// 查找所有的模态框元素
var modals = document.querySelectorAll('.modal');
// 遍历每个模态框元素
modals.forEach(function(modal) {
// 找到当前模态框中的关闭按钮和"我已了解"按钮
var closeButton = modal.querySelector('.close');
var acknowledgeButton = modal.querySelector('.modal-button');
// 绑定关闭按钮和"我已了解"按钮的点击事件
closeButton.addEventListener('click', closeModal);
acknowledgeButton.addEventListener('click', closeModal);
});
// 关闭弹窗
function closeModal() {
// 找到当前点击按钮所在的模态框
var modal = this.closest('.modal');
if (modal) {
// 从父元素中移除模态框
modal.parentNode.removeChild(modal);
}
}
}
// 触发输入事件,以便网页响应
function triggerInputEvent(element) {
var inputEvent = new Event('input', {
bubbles: true,
cancelable: true,
});
element.dispatchEvent(inputEvent);
}
}
// 以下为公共
GM_addStyle(`
.ele-toast {
position: fixed;
left: 50%;
transform: translateX(-50%);
top: 30%;
z-index: 9999;
padding: 10px 20px;
background-color: rgb(0 0 0 / 85%);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.85);
border-radius: 4px;
font-size: 15px;
color: #fff;
}
#configPopup textarea,#configPopup select,#configPopup input{
width: 100%;
border: 1px solid rgba(0, 0, 0, 0.08);
border-radius: 10px;
padding: 10px;
margin: 10px 0;
}
.config::-webkit-scrollbar { width: 0 !important }
`);
// 定义函数显示提示
function showEleToast(message, duration = 3000) {
console.log(message)
var toast = document.createElement('div');
toast.className = 'ele-toast';
toast.textContent = message;
document.body.appendChild(toast);
setTimeout(function() {
toast.style.opacity = '0';
setTimeout(function() {
document.body.removeChild(toast);
}, 300);
}, duration);
}
})();