uni-app自定义Modal弹窗组件|仿ios、微信弹窗效果
<h3 id="一项目简介">介绍</h3><p><span style="font-size: 12px; background-color: rgba(204, 255, 255, 1)"><span style="font-family: "comic sans ms", sans-serif">uniapp自定义弹窗组件uniPop,</span><span style="font-family: "comic sans ms", sans-serif">基于uni-app开发的自定义模态弹窗|msg信息框|alert对话框|confirm确认框|toast弱提示框</span></span></p>
<p><span style="font-size: 12px; font-family: "comic sans ms", sans-serif">支持多种动画效果、多弹窗类型ios/android、可以自定义弹窗样式/自定义多按钮及事件/弹窗显示位置、自动关闭秒数、遮罩层透明度及点击遮罩是否关闭</span></p>
<p><span style="font-size: 12px; font-family: "comic sans ms", sans-serif">H5/小程序/App三端效果如下,亲测多端效果兼容性一致。(<em>后续大图均展示App端</em>)</span></p>
<p><img src="https://img2018.cnblogs.com/blog/1289798/201909/1289798-20190926084840573-2082669304.png"></p>
<h3><span style="background-color: rgba(255, 255, 0, 1)"><span style="background-color: rgba(255, 255, 0, 1)">Uniapp-DeepSeek跨三端AI助手|uniapp+vue3+deepseek-v3流式ai聊天模板</span></span></h3>
<h3 id="一项目简介">用法</h3>
<p><strong>◆ </strong>弹窗uniPop.vue组件两种引入方式</p>
<p><span style="font-size: 12px">1、在main.js里引入全局组件</span></p>
<p><span class="cnblogs_code">import uniPop from './components/uniPop/uniPop.vue'</span></p>
<p><span class="cnblogs_code"><span style="color: rgba(0, 0, 0, 1)">Vue.component(</span>'uni-pop', uniPop)</span> </p>
<p><span style="font-size: 12px">2、在相应页面引入组件</span></p>
<div class="cnblogs_code">
<pre>import uniPop from './components/uniPop/uniPop.vue'<span style="color: rgba(0, 0, 0, 1)">
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
data() {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
...
}
},
components:{
uniPop
},
...
}</span></pre>
</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">template</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="container"</span><span style="color: rgba(0, 0, 255, 1)">></span><span style="color: rgba(0, 0, 0, 1)">
...
</span><span style="color: rgba(0, 128, 0, 1)"><!--</span><span style="color: rgba(0, 128, 0, 1)"> 弹窗模板 </span><span style="color: rgba(0, 128, 0, 1)">--></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">uni-pop </span><span style="color: rgba(255, 0, 0, 1)">ref</span><span style="color: rgba(0, 0, 255, 1)">="uniPop"</span><span style="color: rgba(0, 0, 255, 1)">></</span><span style="color: rgba(128, 0, 0, 1)">uni-pop</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">template</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<ul>
<li>msg信息框效果</li>
</ul>
<p><img src="https://img2018.cnblogs.com/blog/1289798/201909/1289798-20190926092147970-538855135.png"> <img src="https://img2018.cnblogs.com/blog/1289798/201909/1289798-20190926092554457-1108266133.png"></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.$refs.uniPop.show({
content: </span>'msg消息提示框(5s后窗口关闭)'<span style="color: rgba(0, 0, 0, 1)">,
shade: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
shadeClose: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
time: </span>5<span style="color: rgba(0, 0, 0, 1)">,
anim: </span>'fadeIn'<span style="color: rgba(0, 0, 0, 1)">,
})</span></pre>
</div>
<ul>
<li>toast弱提示信息 - 支持success / info / error / loading四种图标</li>
</ul>
<p><img src="https://img2018.cnblogs.com/blog/1289798/201909/1289798-20190926092528306-1471511047.png"> <img src="https://img2018.cnblogs.com/blog/1289798/201909/1289798-20190926092540699-1686708720.png"></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.$refs.uniPop.show({
skin: </span>'toast'<span style="color: rgba(0, 0, 0, 1)">,
content: </span>'loading'<span style="color: rgba(0, 0, 0, 1)">,
icon: </span>'loading', <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">success | info | error | loading</span>
shade: <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
time: </span>3<span style="color: rgba(0, 0, 0, 1)">
})</span></pre>
</div>
<ul>
<li>ios弹窗效果</li>
</ul>
<p><img src="https://img2018.cnblogs.com/blog/1289798/201909/1289798-20190926093147580-1705538358.png"> <img src="https://img2018.cnblogs.com/blog/1289798/201909/1289798-20190926093202812-1406939948.png"></p>
<div class="cnblogs_code">
<pre>let uniPop = <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.$refs.uniPop
uniPop.show({
skin: </span>'ios'<span style="color: rgba(0, 0, 0, 1)">,
title: </span>'开启新邮件提醒'<span style="color: rgba(0, 0, 0, 1)">,
content: </span>'为了保证新邮件能及时收到提醒,请前往系统 [设置] - [电池] 中关闭应用锁屏清理。'<span style="color: rgba(0, 0, 0, 1)">,
shadeClose: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
btns: [
{
text: </span>'取消'<span style="color: rgba(0, 0, 0, 1)">,
style: </span>'color: #2a83f2'<span style="color: rgba(0, 0, 0, 1)">,
onTap() {
uniPop.close();
}
},
{
text: </span>'前往设置'<span style="color: rgba(0, 0, 0, 1)">,
style: </span>'color: #2a83f2'<span style="color: rgba(0, 0, 0, 1)">,
onTap() {
console.log(</span>'您点击了前往设置!'<span style="color: rgba(0, 0, 0, 1)">);
}
}
]
})</span></pre>
</div>
<p><span style="font-size: 12px">调用方式如上,只是传入参数不一样,下面就不一 一展示了</span></p>
<p><span style="font-size: 12px"><img src="https://img2018.cnblogs.com/blog/1289798/201909/1289798-20190926093957442-808468303.png"></span></p>
<p><img src="https://img2018.cnblogs.com/blog/1289798/201909/1289798-20190926093529137-1359301310.png"></p>
<p><img src="https://img2018.cnblogs.com/blog/1289798/201909/1289798-20190926093553037-1732632964.png"></p>
<p><img src="https://img2018.cnblogs.com/blog/1289798/201909/1289798-20190926093639103-1504532520.png"></p>
<p><img src="https://img2018.cnblogs.com/blog/1289798/201909/1289798-20190926093758507-1833922594.png"></p>
<p><img src="https://img2018.cnblogs.com/blog/1289798/201909/1289798-20190926093810516-777027816.png"></p>
<p><img src="https://img2018.cnblogs.com/blog/1289798/201909/1289798-20190926093830433-2038338235.png"></p>
<p><img src="https://img2018.cnblogs.com/blog/1289798/201909/1289798-20190926093840526-1677307590.png"></p>
<p><img src="https://img2018.cnblogs.com/blog/1289798/201909/1289798-20190926093850474-1500122728.png"></p>
<p><img src="https://img2018.cnblogs.com/blog/1289798/201909/1289798-20190926093923883-283410710.png"></p>
<p><strong>◆ </strong>uniapp自定义模板template</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"> /**
* @tpl uni-app自定义弹窗组件 - uniPop.vue
* @author andy by 2019-09-20
* @about Q:282310962wx:xy190310
*/
</span><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">template</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">v-if</span><span style="color: rgba(0, 0, 255, 1)">="opts.isVisible"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="uniPop"</span><span style="color: rgba(255, 0, 0, 1)"> :class</span><span style="color: rgba(0, 0, 255, 1)">="opts.isCloseCls"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="unipop__ui_panel"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">v-if</span><span style="color: rgba(0, 0, 255, 1)">="opts.shade"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="unipop__ui_mask"</span><span style="color: rgba(255, 0, 0, 1)"> @tap</span><span style="color: rgba(0, 0, 255, 1)">="shadeTaped"</span><span style="color: rgba(0, 0, 255, 1)">></</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="unipop__ui_main"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="unipop__ui_child"</span><span style="color: rgba(255, 0, 0, 1)"> :style</span><span style="color: rgba(0, 0, 255, 1)">="opts.style"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 0, 1)"><!--</span><span style="color: rgba(0, 128, 0, 1)"> 标题 </span><span style="color: rgba(0, 128, 0, 1)">--></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">v-if</span><span style="color: rgba(0, 0, 255, 1)">="opts.title"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="unipop__ui_tit"</span><span style="color: rgba(0, 0, 255, 1)">></span>{{opts.title}}<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 0, 1)"><!--</span><span style="color: rgba(0, 128, 0, 1)"> 内容 </span><span style="color: rgba(0, 128, 0, 1)">--></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">v-if</span><span style="color: rgba(0, 0, 255, 1)">="opts.content"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="unipop__ui_cnt"</span><span style="color: rgba(255, 0, 0, 1)"> :style</span><span style="color: rgba(0, 0, 255, 1)">="opts.contentStyle"</span><span style="color: rgba(0, 0, 255, 1)">></span><span style="color: rgba(0, 0, 0, 1)">
{{opts.content}}
</span><span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">v-if</span><span style="color: rgba(0, 0, 255, 1)">="opts.btns"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="unipop__ui_btns"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">v-for</span><span style="color: rgba(0, 0, 255, 1)">="(item,index) in opts.btns"</span><span style="color: rgba(255, 0, 0, 1)"> :key</span><span style="color: rgba(0, 0, 255, 1)">="index"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="btn"</span><span style="color: rgba(255, 0, 0, 1)"> :style</span><span style="color: rgba(0, 0, 255, 1)">="item.style"</span><span style="color: rgba(255, 0, 0, 1)"> @tap</span><span style="color: rgba(0, 0, 255, 1)">="btnTaped(item)"</span><span style="color: rgba(0, 0, 255, 1)">></span>{{item.text}}<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 0, 1)"><!--</span><span style="color: rgba(0, 128, 0, 1)"> xclose </span><span style="color: rgba(0, 128, 0, 1)">--></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">v-if</span><span style="color: rgba(0, 0, 255, 1)">="opts.xclose"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="unipop__xclose"</span><span style="color: rgba(255, 0, 0, 1)"> @tap</span><span style="color: rgba(0, 0, 255, 1)">="close"</span><span style="color: rgba(0, 0, 255, 1)">></</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">template</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p><strong>◆ </strong>默认参数配置</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">data() {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
defaultOptions: {
isVisible: </span><span style="color: rgba(0, 0, 255, 1)">false</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">是否显示弹窗</span>
<span style="color: rgba(0, 0, 0, 1)">
title: </span>'', <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">标题</span>
content: '', <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">内容</span>
contentStyle: '', <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">内容样式</span>
style: <span style="color: rgba(0, 0, 255, 1)">null</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">自定义弹窗样式</span>
skin: '', <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">弹窗风格</span>
icon: '', <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">弹窗图标</span>
xclose: <span style="color: rgba(0, 0, 255, 1)">false</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">自定义关闭按钮</span>
<span style="color: rgba(0, 0, 0, 1)">
shade: </span><span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">遮罩层</span>
shadeClose: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">点击遮罩关闭</span>
opacity: '', <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">遮罩透明度</span>
time: 0, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">自动关闭秒数</span>
end: <span style="color: rgba(0, 0, 255, 1)">null</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">销毁弹窗回调函数</span>
<span style="color: rgba(0, 0, 0, 1)">
anim: </span>'scaleIn', <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">弹窗动画scaleIn(默认) | fadeIn | shake | top | right | bottom | left</span>
position: '', <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">弹窗位置top | right | bottom | left</span>
<span style="color: rgba(0, 0, 0, 1)">
btns: </span><span style="color: rgba(0, 0, 255, 1)">null</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">弹窗按钮</span>
<span style="color: rgba(0, 0, 0, 1)"> },
opts: {},
timer: </span><span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">
}
},</span></pre>
</div>
<p><strong>◆ </strong>通过Object.assign函数进行参数合并处理</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">methods: {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 显示弹窗事件(处理传参)</span>
<span style="color: rgba(0, 0, 0, 1)"> show(args) {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.opts = Object.assign({}, <span style="color: rgba(0, 0, 255, 1)">this</span>.defaultOptions, args, {isVisible: <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">})
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> console.log(this.opts)</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 自动关闭</span>
<span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.opts.time) {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.timer = setTimeout(() =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.close()
}, </span><span style="color: rgba(0, 0, 255, 1)">this</span>.opts.time * 1000<span style="color: rgba(0, 0, 0, 1)">)
}
},
...
}</span></pre>
</div>
<p>好了,uni-app自定义弹窗组件介绍就到这里,希望能喜欢😀😀~~</p>
<p><strong>◆ 最后附上几个最新原创实战项目案例</strong></p>
<p><span style="font-size: 12px">Uniapp-DeepSeek跨三端AI助手|uniapp+vue3+deepseek-v3流式ai聊天模板</span></p>
<p><span style="font-size: 12px">vue3-webseek网页版AI问答|Vite6+DeepSeek+Arco流式ai聊天打字效果</span></p>
<p><span style="font-size: 12px">uniapp+vue3酒店预订|vite5+uniapp预约订房系统模板(h5+小程序+App端)</span></p>
<p><span style="font-size: 12px">Tauri2.0+Vite5聊天室|vue3+tauri2+element-plus仿微信|tauri聊天应用</span></p>
<p><span style="font-size: 12px">uniapp-vue3-oadmin手机后台实例|vite5.x+uniapp多端仿ios管理系统</span></p>
<p><span style="font-size: 12px">基于uniapp+vue3自定义增强版table表格组件「兼容H5+小程序+App端」</span></p>
<p><span style="font-size: 12px">uniapp+vue3聊天室|uni-app+vite4+uv-ui跨端仿微信app聊天语音/朋友圈</span></p>
<p><span style="font-size: 12px">uniapp-welive仿微信/抖音直播带货|uni-app+vue3+pinia短视频直播商城</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1289798/202410/1289798-20241003104251361-1962003132.jpg"></p>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
本文为博主原创文章,未经博主允许不得转载,欢迎大家一起交流 QQ(282310962) wx(xy190310)<br><br>
来源:https://www.cnblogs.com/xiaoyan2017/p/11589149.html
頁:
[1]