20260818
This commit is contained in:
parent
3e7e55cb1a
commit
3560457e0b
519
scripts/fix_modal_bug.py
Normal file
519
scripts/fix_modal_bug.py
Normal file
@ -0,0 +1,519 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
批量修复 ~cu-modal / ~show 弹窗隐患。
|
||||
替换策略:
|
||||
1. 模板中所有 ~cu-modal → 对应的本地类名
|
||||
2. 模板中所有 ~show → show (普通类)
|
||||
3. 模板中所有 ~bottom-modal → (去除,样式合并到本地类)
|
||||
4. 模板中所有 ~cu-dialog → 对应的本地类名
|
||||
5. style 中追加完整的自包含弹窗样式
|
||||
"""
|
||||
|
||||
import re
|
||||
import os
|
||||
|
||||
# 每个文件的修复配置
|
||||
CONFIGS = {
|
||||
"src/components/uploadPics.wpy": {
|
||||
"type": "bottom",
|
||||
"modal_cls": "uploadpics-mask",
|
||||
"dialog_cls": "uploadpics-sheet",
|
||||
"trigger": "~show",
|
||||
"style_add": """
|
||||
.uploadpics-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
.uploadpics-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.uploadpics-sheet {
|
||||
position: absolute;
|
||||
left: 0; right: 0; bottom: 0;
|
||||
background: #fff;
|
||||
border-radius: 32rpx 32rpx 0 0;
|
||||
}
|
||||
._item {
|
||||
padding: 32rpx;
|
||||
border-bottom: 1rpx solid #f5f5f5;
|
||||
font-size: 32rpx;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
}
|
||||
._cancel {
|
||||
border-top: 16rpx solid #f8f8f8;
|
||||
margin-bottom: 24rpx;
|
||||
color: #999;
|
||||
}
|
||||
""",
|
||||
},
|
||||
"src/components/visitorModel.wpy": {
|
||||
"type": "center",
|
||||
"modal_cls": "visitormodel-mask",
|
||||
"dialog_cls": "visitormodel-dialog",
|
||||
"trigger": "~show",
|
||||
"style_add": """
|
||||
.visitormodel-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity .3s;
|
||||
}
|
||||
.visitormodel-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.visitormodel-dialog {
|
||||
position: absolute;
|
||||
top: 50%; left: 50%;
|
||||
transform: translate(-50%,-50%) scale(.85);
|
||||
width: 680rpx;
|
||||
max-width: 100%;
|
||||
background: #fff;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
transition: transform .3s;
|
||||
}
|
||||
.visitormodel-mask.show .visitormodel-dialog {
|
||||
transform: translate(-50%,-50%) scale(1);
|
||||
}
|
||||
""",
|
||||
},
|
||||
"src/components/recommendDialog.wpy": {
|
||||
"type": "center",
|
||||
"modal_cls": "recommend-mask",
|
||||
"dialog_cls": "recommend-dialog",
|
||||
"trigger": "~show",
|
||||
"style_add": """
|
||||
.recommend-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity .3s;
|
||||
}
|
||||
.recommend-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.recommend-dialog {
|
||||
position: absolute;
|
||||
top: 50%; left: 50%;
|
||||
transform: translate(-50%,-50%) scale(.85);
|
||||
width: 680rpx;
|
||||
max-width: 100%;
|
||||
background: #fff;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
transition: transform .3s;
|
||||
}
|
||||
.recommend-mask.show .recommend-dialog {
|
||||
transform: translate(-50%,-50%) scale(1);
|
||||
}
|
||||
""",
|
||||
},
|
||||
"src/components/shareComponent.wpy": {
|
||||
"type": "center",
|
||||
"modal_cls": "sharec-mask",
|
||||
"dialog_cls": "sharec-dialog",
|
||||
"trigger": "~show",
|
||||
"style_add": """
|
||||
.sharec-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity .3s;
|
||||
}
|
||||
.sharec-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.sharec-dialog {
|
||||
position: absolute;
|
||||
top: 50%; left: 50%;
|
||||
transform: translate(-50%,-50%) scale(.85);
|
||||
width: 680rpx;
|
||||
max-width: 100%;
|
||||
background: #fff;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
transition: transform .3s;
|
||||
}
|
||||
.sharec-mask.show .sharec-dialog {
|
||||
transform: translate(-50%,-50%) scale(1);
|
||||
}
|
||||
""",
|
||||
},
|
||||
"src/components/wxShareCom.wpy": {
|
||||
"type": "center",
|
||||
"modal_cls": "wxsharec-mask",
|
||||
"dialog_cls": "wxsharec-dialog",
|
||||
"trigger": "~show",
|
||||
"style_add": """
|
||||
.wxsharec-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity .3s;
|
||||
}
|
||||
.wxsharec-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.wxsharec-dialog {
|
||||
position: absolute;
|
||||
top: 50%; left: 50%;
|
||||
transform: translate(-50%,-50%) scale(.85);
|
||||
width: 680rpx;
|
||||
max-width: 100%;
|
||||
background: #fff;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
transition: transform .3s;
|
||||
}
|
||||
.wxsharec-mask.show .wxsharec-dialog {
|
||||
transform: translate(-50%,-50%) scale(1);
|
||||
}
|
||||
""",
|
||||
},
|
||||
"src/components/dynamicOperation.wpy": {
|
||||
"type": "bottom",
|
||||
"modal_cls": "dynop-mask",
|
||||
"dialog_cls": "dynop-sheet",
|
||||
"trigger": "~show",
|
||||
"style_add": """
|
||||
.dynop-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: all .3s;
|
||||
}
|
||||
.dynop-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.dynop-sheet {
|
||||
position: absolute;
|
||||
left: 0; right: 0; bottom: 0;
|
||||
background: #fff;
|
||||
border-radius: 30rpx 30rpx 0 0;
|
||||
width: 100%;
|
||||
z-index: 1111;
|
||||
view {
|
||||
height: 90rpx;
|
||||
text-align: center;
|
||||
line-height: 100rpx;
|
||||
margin: 0 30rpx;
|
||||
color: #333;
|
||||
}
|
||||
view:last-of-type {
|
||||
border-top: 1rpx solid #f5f5f5;
|
||||
color: #999;
|
||||
}
|
||||
}
|
||||
""",
|
||||
},
|
||||
"src/components/UnlockingDialog.wpy": {
|
||||
"type": "center",
|
||||
"modal_cls": "unlock-mask",
|
||||
"dialog_cls": "unlock-dialog",
|
||||
"trigger": "~show",
|
||||
"style_add": """
|
||||
.unlock-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity .3s;
|
||||
}
|
||||
.unlock-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.unlock-dialog {
|
||||
position: absolute;
|
||||
top: 50%; left: 50%;
|
||||
transform: translate(-50%,-50%) scale(.85);
|
||||
width: 680rpx;
|
||||
max-width: 100%;
|
||||
background: #fff;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
transition: transform .3s;
|
||||
}
|
||||
.unlock-mask.show .unlock-dialog {
|
||||
transform: translate(-50%,-50%) scale(1);
|
||||
}
|
||||
""",
|
||||
},
|
||||
"src/components/loginDialog.wpy": {
|
||||
"type": "center",
|
||||
"modal_cls": "logindlg-mask",
|
||||
"dialog_cls": "logindlg-dialog",
|
||||
"trigger": "~show",
|
||||
"style_add": """
|
||||
.logindlg-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 9999;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity .3s;
|
||||
}
|
||||
.logindlg-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.logindlg-dialog {
|
||||
position: absolute;
|
||||
top: 50%; left: 50%;
|
||||
transform: translate(-50%,-50%) scale(.85);
|
||||
width: 680rpx;
|
||||
max-width: 100%;
|
||||
background: #fff;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
transition: transform .3s;
|
||||
}
|
||||
.logindlg-mask.show .logindlg-dialog {
|
||||
transform: translate(-50%,-50%) scale(1);
|
||||
}
|
||||
""",
|
||||
},
|
||||
"src/components/residenceDialog.wpy": {
|
||||
"type": "bottom",
|
||||
"modal_cls": "residence-mask",
|
||||
"dialog_cls": "residence-sheet",
|
||||
"trigger": "~show",
|
||||
"style_add": """
|
||||
.residence-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: all .3s;
|
||||
}
|
||||
.residence-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.residence-sheet {
|
||||
position: absolute;
|
||||
left: 0; right: 0; bottom: 0;
|
||||
background: #fff;
|
||||
border-radius: 32rpx 32rpx 0 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
""",
|
||||
},
|
||||
"src/components/dynamicDiscuss.wpy": {
|
||||
"type": "bottom",
|
||||
"modal_cls": "discs-mask",
|
||||
"dialog_cls": "discs-sheet",
|
||||
"trigger": "~show",
|
||||
"style_add": """
|
||||
.discs-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: all .3s;
|
||||
}
|
||||
.discs-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.discs-sheet {
|
||||
position: absolute;
|
||||
left: 0; right: 0; bottom: 0;
|
||||
background: #fff;
|
||||
border-radius: 20rpx 20rpx 0 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
""",
|
||||
},
|
||||
"src/components/cu-custom.wpy": {
|
||||
"type": "center",
|
||||
"modal_cls": "cucust-mask",
|
||||
"dialog_cls": "cucust-dialog",
|
||||
"trigger": "~show",
|
||||
"style_add": """
|
||||
.cucust-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity .3s;
|
||||
}
|
||||
.cucust-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.cucust-dialog {
|
||||
position: absolute;
|
||||
top: 50%; left: 50%;
|
||||
transform: translate(-50%,-50%) scale(.85);
|
||||
width: 680rpx;
|
||||
max-width: 100%;
|
||||
background: #fff;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
transition: transform .3s;
|
||||
}
|
||||
.cucust-mask.show .cucust-dialog {
|
||||
transform: translate(-50%,-50%) scale(1);
|
||||
}
|
||||
""",
|
||||
},
|
||||
"src/components/uploadVideo.wpy": {
|
||||
"type": "bottom",
|
||||
"modal_cls": "uploadvid-mask",
|
||||
"dialog_cls": "uploadvid-sheet",
|
||||
"trigger": "~show",
|
||||
"style_add": """
|
||||
.uploadvid-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: all .3s;
|
||||
}
|
||||
.uploadvid-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.uploadvid-sheet {
|
||||
position: absolute;
|
||||
left: 0; right: 0; bottom: 0;
|
||||
background: #fff;
|
||||
border-radius: 32rpx 32rpx 0 0;
|
||||
}
|
||||
""",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def transform_template(content, cfg):
|
||||
"""把模板中的 ~cu-modal / ~show / ~bottom-modal / ~cu-dialog 替换掉"""
|
||||
modal = cfg["modal_cls"]
|
||||
dialog = cfg["dialog_cls"]
|
||||
|
||||
lines = content.split("\n")
|
||||
result = []
|
||||
for line in lines:
|
||||
orig = line
|
||||
|
||||
# 1. ~cu-dialog → dialog类名
|
||||
line = re.sub(r"~cu-dialog\b", dialog, line)
|
||||
|
||||
# 2. ~bottom-modal → (去除,样式已在本地)
|
||||
line = re.sub(r"~\s*bottom-modal", "", line)
|
||||
|
||||
# 3. ~cu-modal 处理
|
||||
# 情况A: class="~cu-modal ..." (注意前面可能有其他class如 shareComponent的 cu-modal)
|
||||
# 情况B: :class="{'~show': ...}" class="~cu-modal"
|
||||
# 统一:去掉所有 ~cu-modal,保留其他已有class,在class属性末尾追加modal类名
|
||||
if "~cu-modal" in line:
|
||||
# 先把 :class={'~show':cond} 里的 ~show 改成 show
|
||||
line = re.sub(r":class\s*=\s*\{'~show'\s*:", ":class=\"{'show':", line)
|
||||
# {{cond?'~show':''}} → {{cond?'show':''}}
|
||||
line = re.sub(r"\?'~show'", "? 'show'", line)
|
||||
|
||||
# 去除 ~cu-modal,保留其他普通class
|
||||
# 匹配 class="... ~cu-modal ..." 或 class="~cu-modal"
|
||||
# WePY: class="xxx ~cu-modal yyy" → class="xxx yyy modal_cls"
|
||||
# class="~cu-modal xxx" → class="xxx modal_cls"
|
||||
# class="~cu-modal" → class="modal_cls"
|
||||
|
||||
def fix_cu_modal(m):
|
||||
raw = m.group(0)
|
||||
# 提取已有class值
|
||||
cls_val = re.search(r'class="([^"]*)"', raw)
|
||||
if not cls_val:
|
||||
return raw
|
||||
classes = cls_val.group(1)
|
||||
# 去掉 ~cu-modal 和多余的空格
|
||||
classes = re.sub(r"~\s*cu-modal", "", classes)
|
||||
classes = re.sub(r"\s+", " ", classes).strip()
|
||||
# 去掉 shareComponent 的普通 cu-modal (不再需要)
|
||||
classes = re.sub(r"\bcu-modal\b", "", classes)
|
||||
classes = re.sub(r"\s+", " ", classes).strip()
|
||||
# 追加本地modal类
|
||||
extra = " " + modal if classes else modal
|
||||
new_cls = (classes + extra).strip()
|
||||
return 'class="' + new_cls + '"'
|
||||
|
||||
line = re.sub(r'class="[^"]*"', fix_cu_modal, line, count=1)
|
||||
|
||||
# 4. 单独处理 :class="{'~show': ...}" 的情况(还没处理到的情况)
|
||||
line = re.sub(r":class\s*=\s*\{'~show'\s*:", ":class=\"{'show':", line)
|
||||
line = re.sub(r"\?'~show':", "? 'show':", line)
|
||||
|
||||
result.append(line)
|
||||
return "\n".join(result)
|
||||
|
||||
|
||||
def append_style(content, style_add):
|
||||
"""在 </style> 前追加样式"""
|
||||
marker = "</style>"
|
||||
if marker in content:
|
||||
idx = content.index(marker)
|
||||
return content[:idx] + "\n" + style_add + "\n" + marker + content[idx + len(marker):]
|
||||
return content
|
||||
|
||||
|
||||
def process_file(filepath, cfg):
|
||||
with open(filepath, "r", encoding="utf-8") as f:
|
||||
content = f.read()
|
||||
|
||||
new_content = transform_template(content, cfg)
|
||||
new_content = append_style(new_content, cfg["style_add"])
|
||||
|
||||
with open(filepath, "w", encoding="utf-8") as f:
|
||||
f.write(new_content)
|
||||
|
||||
print(f"✓ {filepath}")
|
||||
|
||||
|
||||
def main():
|
||||
base = "/Users/d/fulllink-project/ufutx.love.mp.v2"
|
||||
for rel_path, cfg in CONFIGS.items():
|
||||
filepath = os.path.join(base, rel_path)
|
||||
if os.path.exists(filepath):
|
||||
process_file(filepath, cfg)
|
||||
else:
|
||||
print(f"✗ 文件不存在: {filepath}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<view class="UnlockingDialog">
|
||||
<view :class="{'~show':modalName == 'unlockModal'}" class="~cu-modal">
|
||||
<view :class="{'show': modalName == 'unlockModal', 'unlock-mask': true}">
|
||||
<view class="open_unlock_box" style="padding-top: 126rpx;">
|
||||
<image class="unlockPrompt_bg" src="https://images.ufutx.com/202106/01/3ae4aefd9aed69d6800ed12cac94fbb2.png" mode="widthFix"></image>
|
||||
<image v-if="ios" class="unlock_bg" src="https://images.ufutx.com/202106/02/d398cbcc114dbfce26470db15d47716c.png" mode="widthFix" @tap="goTo('pages/users/upgradeVIP?chat_user_id={{chat_user_id}}')"></image>
|
||||
@ -11,7 +11,7 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view :class="{'~show': modalName=='purchaseModal'}" class="~cu-modal ">
|
||||
<view :class="{'show': modalName=='purchaseModal'}" class="unlock-mask">
|
||||
<view class="open_confirm_box">
|
||||
<view class="confirm_prompt ~font_32">购买会员服务后可使用此功能,请及时购买</view>
|
||||
<image class="cancelIcon" src="https://images.ufutx.com/202103/12/4281e92bc8b727bae08099a3015225b1.png" mode="widthFix" @tap="hideModal"></image>
|
||||
@ -19,7 +19,7 @@
|
||||
<view style="height: 36rpx"></view>
|
||||
</view>
|
||||
</view>
|
||||
<view :class="{'~show': modalName=='iosTipsModal'}" class="~cu-modal">
|
||||
<view :class="{'show': modalName=='iosTipsModal', 'unlock-mask': true}">
|
||||
<view class="open_confirm_box">
|
||||
<view class="confirm_prompt ~font_32" style="padding: 68rpx 46rpx;line-height: 44rpx;">此功能需要开通VIP,因微信限制,暂不支持直接购买会员,可以通过联系客服去购买</view>
|
||||
<view class="m_bu ~f-fbc">
|
||||
@ -38,7 +38,7 @@
|
||||
<!-- <view style="height: 36rpx"></view>-->
|
||||
<!-- </view>-->
|
||||
<!-- </view>-->
|
||||
<view :class="{'~show': modalName=='vipModal'}" class="~cu-modal">
|
||||
<view :class="{'show': modalName=='vipModal', 'unlock-mask': true}">
|
||||
<view class="open_vip_box">
|
||||
<view class="cancel_icon_box" @tap="hideModal">
|
||||
<image src="https://images.ufutx.com/202012/21/7bc531d74f41cce95ede5582232fd2f3.png" mode="widthFix" class="cancel_icon"></image>
|
||||
@ -492,4 +492,34 @@ page view {
|
||||
button:after{
|
||||
border: none;
|
||||
}
|
||||
|
||||
|
||||
.unlock-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity .3s;
|
||||
}
|
||||
.unlock-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.unlock-dialog {
|
||||
position: absolute;
|
||||
top: 50%; left: 50%;
|
||||
transform: translate(-50%,-50%) scale(.85);
|
||||
width: 680rpx;
|
||||
max-width: 100%;
|
||||
background: #fff;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
transition: transform .3s;
|
||||
}
|
||||
.unlock-mask.show .unlock-dialog {
|
||||
transform: translate(-50%,-50%) scale(1);
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
<slot name="right"></slot>
|
||||
</view>
|
||||
</view>
|
||||
<view :class="{'~show':modalName=='Modal'}" class="~cu-modal ">
|
||||
<view :class="{'show': modalName=='Modal'}" class="cucust-mask">
|
||||
<view class="cu-dialog">
|
||||
<view class="~cu-bar ~bg-white justify-end">
|
||||
<view class="~content">提示</view>
|
||||
@ -237,4 +237,34 @@
|
||||
margin-left: 60rpx;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.cucust-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity .3s;
|
||||
}
|
||||
.cucust-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.cucust-dialog {
|
||||
position: absolute;
|
||||
top: 50%; left: 50%;
|
||||
transform: translate(-50%,-50%) scale(.85);
|
||||
width: 680rpx;
|
||||
max-width: 100%;
|
||||
background: #fff;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
transition: transform .3s;
|
||||
}
|
||||
.cucust-mask.show .cucust-dialog {
|
||||
transform: translate(-50%,-50%) scale(1);
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@ -241,6 +241,29 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.discs-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: all .3s;
|
||||
}
|
||||
.discs-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.discs-sheet {
|
||||
position: absolute;
|
||||
left: 0; right: 0; bottom: 0;
|
||||
background: #fff;
|
||||
border-radius: 20rpx 20rpx 0 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
</style>
|
||||
<template>
|
||||
<view class="~ui-pl-30 ~ui-pr-30 ~ui-pt-20">
|
||||
@ -314,8 +337,8 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="~cu-modal ~bottom-modal {{ modalName == 'viewLike' ? '~show' : ''}}">
|
||||
<view class="~cu-dialog dialogs">
|
||||
<view class="{{ modalName == 'viewLike' ? 'show' : ''}} discs-mask">
|
||||
<view class="discs-sheet dialogs">
|
||||
<view class="~font_32 ~bold ~text-center ~ui-pt-36">赞过的人</view>
|
||||
<image class="cancelIcon" src="https://images.ufutx.com/202106/01/e536a423a145ae12ab4f6dc57f58588d.png" mode="widthFix" @tap="modalName = ''"></image>
|
||||
<view class="ui-container">
|
||||
|
||||
@ -19,10 +19,45 @@
|
||||
color: #999999;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.dynop-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: all .3s;
|
||||
}
|
||||
.dynop-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.dynop-sheet {
|
||||
position: absolute;
|
||||
left: 0; right: 0; bottom: 0;
|
||||
background: #fff;
|
||||
border-radius: 30rpx 30rpx 0 0;
|
||||
width: 100%;
|
||||
z-index: 1111;
|
||||
view {
|
||||
height: 90rpx;
|
||||
text-align: center;
|
||||
line-height: 100rpx;
|
||||
margin: 0 30rpx;
|
||||
color: #333;
|
||||
}
|
||||
view:last-of-type {
|
||||
border-top: 1rpx solid #f5f5f5;
|
||||
color: #999;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
<template>
|
||||
<view class="~cu-modal ~bottom-modal" :class="{'~show': chooseShow}" @tap="hideModal">
|
||||
<view class="~cu-dialog dialog">
|
||||
<view class="dynop-mask" :class="{'show': chooseShow}" @tap="hideModal">
|
||||
<view class="dynop-sheet dialog">
|
||||
<!--管理员才有的操作功能 && 父组件来自首页动态列表时才有-->
|
||||
<block v-if="admin && from == 'dynamic'">
|
||||
<view @tap.stop="deleteDynamic">删除</view>
|
||||
|
||||
@ -62,12 +62,42 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.logindlg-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 9999;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity .3s;
|
||||
}
|
||||
.logindlg-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.logindlg-dialog {
|
||||
position: absolute;
|
||||
top: 50%; left: 50%;
|
||||
transform: translate(-50%,-50%) scale(.85);
|
||||
width: 680rpx;
|
||||
max-width: 100%;
|
||||
background: #fff;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
transition: transform .3s;
|
||||
}
|
||||
.logindlg-mask.show .logindlg-dialog {
|
||||
transform: translate(-50%,-50%) scale(1);
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<template>
|
||||
<view class="loginDialog">
|
||||
<view class="~cu-modal {{loginShow ? '~show' : ''}}" style="z-index: 9999;">
|
||||
<view class="~cu-dialog ui-cu-dialog">
|
||||
<view class="{{loginShow ? 'show' : ''}} logindlg-mask" style="z-index: 9999;">
|
||||
<view class="logindlg-dialog ui-cu-dialog">
|
||||
<view class="m_dialog ~f-fcc ~f-fdc">
|
||||
<view class="m_dialog_img">
|
||||
<image class="u_dialog_img" src="https://images.ufutx.com/202105/12/eeadaef5123837de5109b25e93fdeae6.png" mode="widthFix"></image>
|
||||
|
||||
@ -101,6 +101,36 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.recommend-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity .3s;
|
||||
}
|
||||
.recommend-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.recommend-dialog {
|
||||
position: absolute;
|
||||
top: 50%; left: 50%;
|
||||
transform: translate(-50%,-50%) scale(.85);
|
||||
width: 680rpx;
|
||||
max-width: 100%;
|
||||
background: #fff;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
transition: transform .3s;
|
||||
}
|
||||
.recommend-mask.show .recommend-dialog {
|
||||
transform: translate(-50%,-50%) scale(1);
|
||||
}
|
||||
|
||||
</style>
|
||||
<template>
|
||||
<template name="isShow">
|
||||
@ -116,7 +146,7 @@
|
||||
</view>
|
||||
</template>
|
||||
<view class="recommendDialog">
|
||||
<view class="~cu-modal" :class="{'~show' : recommendShow}">
|
||||
<view class="recommend-mask" :class="{'show': recommendShow}">
|
||||
<view class="m_modal_box ~animation-slide-top">
|
||||
<view class="m_modal">
|
||||
<view class="~font_40 ~color333 ~bold ~f-fcc">我也要上推荐</view>
|
||||
@ -155,7 +185,7 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="~cu-modal {{intentionShow?'~show':''}}">
|
||||
<view class="{{intentionShow? 'show':''}} recommend-mask">
|
||||
<view class="intention_confirm_box animation-slide-top">
|
||||
<view class="intentionContent ~font_32 ~color333">是否确定申请“{{title}}”?</view>
|
||||
<view class="intentionOperation">
|
||||
@ -165,7 +195,7 @@
|
||||
<view style="height: 38rpx"></view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="~cu-modal {{inreviewShow?'~show':''}}">
|
||||
<view class="{{inreviewShow? 'show':''}} recommend-mask">
|
||||
<view class="intention_confirm_box animation-slide-top">
|
||||
<view class="intentionContent_1 font_34 ~color333 ~bold">你的资料正在审核中</view>
|
||||
<view class="~font_32 ~color333" style="padding-bottom: 60rpx">如有紧急,请拨打<span style="color: #f33b6c;">18194063294</span></view>
|
||||
|
||||
@ -51,11 +51,34 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.residence-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: all .3s;
|
||||
}
|
||||
.residence-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.residence-sheet {
|
||||
position: absolute;
|
||||
left: 0; right: 0; bottom: 0;
|
||||
background: #fff;
|
||||
border-radius: 32rpx 32rpx 0 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
</style>
|
||||
<template>
|
||||
<view class="ui-residenceDialog">
|
||||
<view class="~cu-modal ~bottom-modal" :class="{'~show' : residenceShow}" @tap="onModal">
|
||||
<view class="~cu-dialog">
|
||||
<view class="residence-mask" :class="{'show': residenceShow}" @tap="onModal">
|
||||
<view class="residence-sheet">
|
||||
<view class="m_dialog">
|
||||
<view class="~font_32 ~bold ~color333 ~f-fcc">请选择目前居住地</view>
|
||||
<selectCity :multiIndex.sync="multiIndex" @selectCity="selectCity" @provinces="allProvinces">
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<view :class="{'~show': !hide}" class="~cu-modal cu-modal">
|
||||
<view class="~cu-dialog" style="background-color: white;width: 600rpx;border-radius: 24rpx;">
|
||||
<view :class="{'show': !hide}" class="sharec-mask">
|
||||
<view class="sharec-dialog" style="background-color: white;width: 600rpx;border-radius: 24rpx;">
|
||||
<view class="~bg-white ~justify-end">
|
||||
<view bindtap="hideModel" class="~action ~f-fec">
|
||||
<text class="~cuIcon-close ~font_40 ~color999" style="line-height: 40rpx;margin: 30rpx 30rpx 0 0;"></text>
|
||||
@ -34,8 +34,8 @@
|
||||
</view>
|
||||
</view>
|
||||
<!-- 海报预览-->
|
||||
<view :class="{'~show':modalName=='Image'}" class="~cu-modal cu-modal">
|
||||
<view class="~cu-dialog" style="width: 600rpx; background: none;border-radius: 0;">
|
||||
<view :class="{'show': modalName=='Image'}" class="sharec-mask">
|
||||
<view class="sharec-dialog" style="width: 600rpx; background: none;border-radius: 0;">
|
||||
<view class="~f-fec cu-close" bindtap="listenerCancel">
|
||||
<image class="_icon" mode="aspectFit"
|
||||
src="https://image.fulllinkai.com/202205/20/6bd2707c19476eb7dc42910ed4f9014c.png"></image>
|
||||
@ -46,7 +46,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<!-- 授权弹框-->
|
||||
<view :class="{'~show':modalName=='DialogModal'}" class="~cu-modal cu-modal">
|
||||
<view :class="{'show': modalName=='DialogModal'}" class="sharec-mask">
|
||||
<view class="cu-dialog d_set">
|
||||
<view class="set_text color333 bold font_32">温馨提示</view>
|
||||
<view class="set_subT color333 font_28">需要你授权才能保存到相册哦</view>
|
||||
@ -330,4 +330,34 @@ wepy.component({
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.sharec-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity .3s;
|
||||
}
|
||||
.sharec-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.sharec-dialog {
|
||||
position: absolute;
|
||||
top: 50%; left: 50%;
|
||||
transform: translate(-50%,-50%) scale(.85);
|
||||
width: 680rpx;
|
||||
max-width: 100%;
|
||||
background: #fff;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
transition: transform .3s;
|
||||
}
|
||||
.sharec-mask.show .sharec-dialog {
|
||||
transform: translate(-50%,-50%) scale(1);
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@ -4,22 +4,46 @@ page {}
|
||||
.upload_file {
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
._item {
|
||||
padding: 32rpx;
|
||||
border-bottom: 1rpx solid #f5f5f5;
|
||||
}
|
||||
|
||||
._cancel {
|
||||
border-top: 16rpx solid #f8f8f8;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
|
||||
.uploadpics-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
.uploadpics-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.uploadpics-sheet {
|
||||
position: absolute;
|
||||
left: 0; right: 0; bottom: 0;
|
||||
background: #fff;
|
||||
border-radius: 32rpx 32rpx 0 0;
|
||||
}
|
||||
._item {
|
||||
padding: 32rpx;
|
||||
border-bottom: 1rpx solid #f5f5f5;
|
||||
font-size: 32rpx;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
}
|
||||
._cancel {
|
||||
border-top: 16rpx solid #f8f8f8;
|
||||
margin-bottom: 24rpx;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
</style>
|
||||
<template>
|
||||
<view :class="{'~show': chooseShow}" class="~cu-modal ~bottom-modal">
|
||||
<view class="~cu-dialog" style="border-radius: 32rpx 32rpx 0 0;">
|
||||
<view :class="{'show': chooseShow}" class="uploadpics-mask">
|
||||
<view class="uploadpics-sheet" style="border-radius: 32rpx 32rpx 0 0;">
|
||||
<view class="~bg_f upload_file">
|
||||
<view class="_title _item ~font_32" catchtap="onCamera">{{i18nL.components.uploadPic.Ace1}}</view>
|
||||
<view class="_title _item ~font_32" catchtap="chooseImageV2">{{i18nL.components.uploadPic.Ace2}}</view>
|
||||
|
||||
@ -4,22 +4,45 @@
|
||||
.upload_file {
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
|
||||
._item {
|
||||
padding: 32rpx;
|
||||
border-bottom: 1rpx solid #f5f5f5;
|
||||
}
|
||||
|
||||
._cancel {
|
||||
border-top: 16rpx solid #f8f8f8;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.uploadvid-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: all .3s;
|
||||
}
|
||||
.uploadvid-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.uploadvid-sheet {
|
||||
position: absolute;
|
||||
left: 0; right: 0; bottom: 0;
|
||||
background: #fff;
|
||||
border-radius: 32rpx 32rpx 0 0;
|
||||
|
||||
._item {
|
||||
padding: 32rpx;
|
||||
border-bottom: 1rpx solid #f5f5f5;
|
||||
font-size: 32rpx;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
._cancel {
|
||||
border-top: 16rpx solid #f8f8f8;
|
||||
margin-bottom: 24rpx;
|
||||
color: #999;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<template>
|
||||
<view :class="{'~show': chooseShow}" class="~cu-modal ~bottom-modal">
|
||||
<view class="~cu-dialog" style="border-radius: 32rpx 32rpx 0 0;">
|
||||
<view :class="{'show': chooseShow}" class="uploadvid-mask">
|
||||
<view class="uploadvid-sheet" style="border-radius: 32rpx 32rpx 0 0;">
|
||||
<view class="~bg_f upload_file">
|
||||
<view class="_title _item ~font_32" @tap="onCamera">拍摄</view>
|
||||
<view class="_title _item ~font_32" @tap="chooseImageV2">从手机相册选择</view>
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<view :class="{'~show':showVisitorModel}" class="~cu-modal " style="transition-duration: 0s !important;">
|
||||
<view :class="{'show': showVisitorModel}" class="visitormodel-mask" style="transition-duration: 0s !important;">
|
||||
<view class="perfect_box ~animation-slide-top">
|
||||
<view class="operation_box ~text-center">
|
||||
<view class="title ~font_32 ~bold">完善资料</view>
|
||||
@ -102,4 +102,34 @@
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.visitormodel-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity .3s;
|
||||
}
|
||||
.visitormodel-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.visitormodel-dialog {
|
||||
position: absolute;
|
||||
top: 50%; left: 50%;
|
||||
transform: translate(-50%,-50%) scale(.85);
|
||||
width: 680rpx;
|
||||
max-width: 100%;
|
||||
background: #fff;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
transition: transform .3s;
|
||||
}
|
||||
.visitormodel-mask.show .visitormodel-dialog {
|
||||
transform: translate(-50%,-50%) scale(1);
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@ -12,10 +12,40 @@
|
||||
background: linear-gradient(90deg, #9DC0F8 0%, #508AFC 100%);
|
||||
border-radius: 40rpx;
|
||||
}
|
||||
|
||||
|
||||
.wxsharec-mask {
|
||||
position: fixed;
|
||||
top: 0; right: 0; bottom: 0; left: 0;
|
||||
z-index: 1110;
|
||||
background: rgba(0,0,0,.6);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity .3s;
|
||||
}
|
||||
.wxsharec-mask.show {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.wxsharec-dialog {
|
||||
position: absolute;
|
||||
top: 50%; left: 50%;
|
||||
transform: translate(-50%,-50%) scale(.85);
|
||||
width: 680rpx;
|
||||
max-width: 100%;
|
||||
background: #fff;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
transition: transform .3s;
|
||||
}
|
||||
.wxsharec-mask.show .wxsharec-dialog {
|
||||
transform: translate(-50%,-50%) scale(1);
|
||||
}
|
||||
|
||||
</style>
|
||||
<template>
|
||||
<view class="~cu-modal {{modalName=='Modal'?'~show':''}}">
|
||||
<view class="~cu-dialog" style="padding: 50rpx 30rpx;">
|
||||
<view class="{{modalName=='Modal'? 'show':''}} wxsharec-mask">
|
||||
<view class="wxsharec-dialog" style="padding: 50rpx 30rpx;">
|
||||
<image class="~_icon_close" src="~@/images/icon/close_icon.png" mode="aspectFit" @tap="cancelFn"></image>
|
||||
<view class="~_c ~font_32 ~color333 ~bold">分享至</view>
|
||||
<view class="~f-fcc ~ui-mt-40">
|
||||
@ -30,15 +60,15 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="~cu-modal {{modalName=='showPic'?'~show':''}}">
|
||||
<view class="~cu-dialog" style="padding: 0; background: none;border-radius: 0;">
|
||||
<view class="{{modalName=='showPic'? 'show':''}} wxsharec-mask">
|
||||
<view class="wxsharec-dialog" style="padding: 0; background: none;border-radius: 0;">
|
||||
<image class="~_icon_close_pic _icon_close" src="~@/images/icon/close_icon_v3.png" mode="aspectFit" @tap="cancelFn"></image>
|
||||
<image class="_pic" src="{{sharePic}}" mode="widthFix" @tap="cancelFn"></image>
|
||||
<view class="_save_btn ~spacing2 ~font_30 ~f-fcc ~ui-mt-24 ~white" @tap="saveImgFn()">保存至相册,分享给好友或朋友圈</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="~cu-modal {{modalName=='showSet'?'~show':''}}">
|
||||
<view class="~cu-dialog" style="padding-top: 58rpx;">
|
||||
<view class="{{modalName=='showSet'? 'show':''}} wxsharec-mask">
|
||||
<view class="wxsharec-dialog" style="padding-top: 58rpx;">
|
||||
<view class="~_t ~font_32 ~color333 ~text-center ~bold">提示</view>
|
||||
<view class="~_c ~font_32 ~color333 ~text-center ~ui-mt-30">
|
||||
需要你授权才能保存到相册哦
|
||||
|
||||
Loading…
Reference in New Issue
Block a user