This commit is contained in:
		
							parent
							
								
									67e06f8be4
								
							
						
					
					
						commit
						98667e0b29
					
				|  | @ -0,0 +1,636 @@ | ||||||
|  | <!DOCTYPE html> | ||||||
|  | <html lang="zh-CN"> | ||||||
|  | <head> | ||||||
|  |     <meta charset="UTF-8"> | ||||||
|  |     <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||||
|  |     <title>每日积分设置 - 线框图原型</title> | ||||||
|  |     <style> | ||||||
|  |         * { | ||||||
|  |             margin: 0; | ||||||
|  |             padding: 0; | ||||||
|  |             box-sizing: border-box; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         body { | ||||||
|  |             font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Arial, sans-serif; | ||||||
|  |             background-color: #f5f5f5; | ||||||
|  |             padding: 20px; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 模态遮罩 */ | ||||||
|  |         .modal-overlay { | ||||||
|  |             position: fixed; | ||||||
|  |             top: 0; | ||||||
|  |             left: 0; | ||||||
|  |             width: 100%; | ||||||
|  |             height: 100%; | ||||||
|  |             background-color: rgba(0, 0, 0, 0.5); | ||||||
|  |             display: flex; | ||||||
|  |             justify-content: center; | ||||||
|  |             align-items: center; | ||||||
|  |             z-index: 1000; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 弹窗容器 */ | ||||||
|  |         .modal-container { | ||||||
|  |             width: 400px; | ||||||
|  |             background: white; | ||||||
|  |             border: 1px dashed #ccc; | ||||||
|  |             border-radius: 4px; | ||||||
|  |             box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 弹窗头部 */ | ||||||
|  |         .modal-header { | ||||||
|  |             padding: 16px 20px; | ||||||
|  |             border-bottom: 1px dashed #e0e0e0; | ||||||
|  |             display: flex; | ||||||
|  |             justify-content: space-between; | ||||||
|  |             align-items: center; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .modal-title { | ||||||
|  |             font-size: 16px; | ||||||
|  |             font-weight: 500; | ||||||
|  |             color: #333; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .close-btn { | ||||||
|  |             width: 24px; | ||||||
|  |             height: 24px; | ||||||
|  |             border: 1px dashed #ccc; | ||||||
|  |             background: white; | ||||||
|  |             cursor: pointer; | ||||||
|  |             display: flex; | ||||||
|  |             justify-content: center; | ||||||
|  |             align-items: center; | ||||||
|  |             font-size: 16px; | ||||||
|  |             color: #666; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .close-btn:hover { | ||||||
|  |             background-color: #f5f5f5; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 弹窗内容 */ | ||||||
|  |         .modal-body { | ||||||
|  |             padding: 20px; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 签到项目容器 */ | ||||||
|  |         .signin-item { | ||||||
|  |             display: flex; | ||||||
|  |             align-items: center; | ||||||
|  |             margin-bottom: 16px; | ||||||
|  |             padding: 12px 0; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .signin-item:last-child { | ||||||
|  |             margin-bottom: 0; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 内嵌文字输入项目容器 */ | ||||||
|  |         .inline-text-item { | ||||||
|  |             display: flex; | ||||||
|  |             align-items: center; | ||||||
|  |             margin-bottom: 16px; | ||||||
|  |             padding: 12px 0; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .inline-text-item:last-child { | ||||||
|  |             margin-bottom: 0; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 内嵌文字标签容器 */ | ||||||
|  |         .inline-text-wrapper { | ||||||
|  |             display: flex; | ||||||
|  |             align-items: center; | ||||||
|  |             font-size: 14px; | ||||||
|  |             color: #333; | ||||||
|  |             flex: 1; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 内嵌输入框样式 */ | ||||||
|  |         .inline-input { | ||||||
|  |             width: 60px; | ||||||
|  |             height: 24px; | ||||||
|  |             border: 1px dashed #d9d9d9; | ||||||
|  |             border-radius: 2px; | ||||||
|  |             text-align: center; | ||||||
|  |             font-size: 14px; | ||||||
|  |             outline: none; | ||||||
|  |             background: white; | ||||||
|  |             margin: 0 2px; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 必填标识 */ | ||||||
|  |         .required { | ||||||
|  |             color: #ff4d4f; | ||||||
|  |             margin-right: 8px; | ||||||
|  |             font-size: 14px; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 签到标签 */ | ||||||
|  |         .signin-label { | ||||||
|  |             flex: 1; | ||||||
|  |             font-size: 14px; | ||||||
|  |             color: #333; | ||||||
|  |             min-width: 100px; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 输入控件容器 */ | ||||||
|  |         .input-control { | ||||||
|  |             display: flex; | ||||||
|  |             align-items: center; | ||||||
|  |             border: 1px dashed #d9d9d9; | ||||||
|  |             border-radius: 4px; | ||||||
|  |             background: white; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 数字输入框 */ | ||||||
|  |         .number-input { | ||||||
|  |             width: 80px; | ||||||
|  |             height: 32px; | ||||||
|  |             border: none; | ||||||
|  |             text-align: center; | ||||||
|  |             font-size: 14px; | ||||||
|  |             outline: none; | ||||||
|  |             background: transparent; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 调节按钮容器 */ | ||||||
|  |         .control-buttons { | ||||||
|  |             display: flex; | ||||||
|  |             flex-direction: column; | ||||||
|  |             border-left: 1px dashed #d9d9d9; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 调节按钮 */ | ||||||
|  |         .control-btn { | ||||||
|  |             width: 24px; | ||||||
|  |             height: 16px; | ||||||
|  |             border: none; | ||||||
|  |             background: white; | ||||||
|  |             cursor: pointer; | ||||||
|  |             display: flex; | ||||||
|  |             justify-content: center; | ||||||
|  |             align-items: center; | ||||||
|  |             font-size: 10px; | ||||||
|  |             color: #666; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .control-btn:hover { | ||||||
|  |             background-color: #f5f5f5; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .control-btn:first-child { | ||||||
|  |             border-bottom: 1px dashed #d9d9d9; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 弹窗底部 */ | ||||||
|  |         .modal-footer { | ||||||
|  |             padding: 16px 20px; | ||||||
|  |             border-top: 1px dashed #e0e0e0; | ||||||
|  |             display: flex; | ||||||
|  |             justify-content: flex-end; | ||||||
|  |             gap: 12px; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 按钮基础样式 */ | ||||||
|  |         .btn { | ||||||
|  |             padding: 8px 16px; | ||||||
|  |             border-radius: 4px; | ||||||
|  |             font-size: 14px; | ||||||
|  |             cursor: pointer; | ||||||
|  |             min-width: 80px; | ||||||
|  |             height: 32px; | ||||||
|  |             display: flex; | ||||||
|  |             justify-content: center; | ||||||
|  |             align-items: center; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 取消按钮 */ | ||||||
|  |         .btn-cancel { | ||||||
|  |             background: white; | ||||||
|  |             border: 1px dashed #d9d9d9; | ||||||
|  |             color: #333; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .btn-cancel:hover { | ||||||
|  |             background-color: #f5f5f5; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 确认按钮 */ | ||||||
|  |         .btn-confirm { | ||||||
|  |             background: #1890ff; | ||||||
|  |             border: 1px dashed #1890ff; | ||||||
|  |             color: white; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .btn-confirm:hover { | ||||||
|  |             background-color: #40a9ff; | ||||||
|  |             border-color: #40a9ff; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 演示说明 */ | ||||||
|  |         .demo-info { | ||||||
|  |             position: fixed; | ||||||
|  |             top: 20px; | ||||||
|  |             left: 20px; | ||||||
|  |             background: white; | ||||||
|  |             border: 1px dashed #ccc; | ||||||
|  |             padding: 16px; | ||||||
|  |             border-radius: 4px; | ||||||
|  |             max-width: 300px; | ||||||
|  |             z-index: 999; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .demo-info h3 { | ||||||
|  |             margin-bottom: 8px; | ||||||
|  |             font-size: 14px; | ||||||
|  |             color: #333; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .demo-info p { | ||||||
|  |             font-size: 12px; | ||||||
|  |             color: #666; | ||||||
|  |             line-height: 1.4; | ||||||
|  |             margin-bottom: 4px; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 触发按钮区域 */ | ||||||
|  |         .trigger-buttons { | ||||||
|  |             position: fixed; | ||||||
|  |             top: 20px; | ||||||
|  |             right: 20px; | ||||||
|  |             display: flex; | ||||||
|  |             flex-direction: column; | ||||||
|  |             gap: 12px; | ||||||
|  |             z-index: 999; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .trigger-btn { | ||||||
|  |             padding: 10px 16px; | ||||||
|  |             background: white; | ||||||
|  |             border: 1px dashed #ccc; | ||||||
|  |             border-radius: 4px; | ||||||
|  |             cursor: pointer; | ||||||
|  |             font-size: 14px; | ||||||
|  |             color: #333; | ||||||
|  |             min-width: 180px; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .trigger-btn:hover { | ||||||
|  |             background-color: #f5f5f5; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 隐藏弹窗 */ | ||||||
|  |         .modal-hidden { | ||||||
|  |             display: none; | ||||||
|  |         } | ||||||
|  |     </style> | ||||||
|  | </head> | ||||||
|  | <body> | ||||||
|  |     <!-- 演示说明 --> | ||||||
|  |     <div class="demo-info"> | ||||||
|  |         <h3>原型演示说明</h3> | ||||||
|  |         <p>• 线框图风格设计</p> | ||||||
|  |         <p>• 包含基础交互功能</p> | ||||||
|  |         <p>• 点击关闭按钮可关闭弹窗</p> | ||||||
|  |         <p>• 数字调节按钮可增减数值</p> | ||||||
|  |         <p>• 右侧按钮可打开不同弹窗</p> | ||||||
|  |     </div> | ||||||
|  | 
 | ||||||
|  |     <!-- 触发按钮区域 --> | ||||||
|  |     <div class="trigger-buttons"> | ||||||
|  |         <button class="trigger-btn" onclick="openSigninModal()">打开每日积分设置</button> | ||||||
|  |         <button class="trigger-btn" onclick="openBrowseModal()">打开浏览商品积分配置</button> | ||||||
|  |         <button class="trigger-btn" onclick="openPurchaseModal()">打开购买商品任务配置</button> | ||||||
|  |     </div> | ||||||
|  | 
 | ||||||
|  |     <!-- 每日积分设置弹窗 --> | ||||||
|  |     <div class="modal-overlay modal-hidden" id="signinModal"> | ||||||
|  |         <div class="modal-container"> | ||||||
|  |             <!-- 弹窗头部 --> | ||||||
|  |             <div class="modal-header"> | ||||||
|  |                 <div class="modal-title">每日积分设置</div> | ||||||
|  |                 <button class="close-btn" onclick="closeModal()">×</button> | ||||||
|  |             </div> | ||||||
|  | 
 | ||||||
|  |             <!-- 弹窗内容 --> | ||||||
|  |             <div class="modal-body"> | ||||||
|  |                 <!-- 连续签到1天 --> | ||||||
|  |                 <div class="signin-item"> | ||||||
|  |                     <span class="required">*</span> | ||||||
|  |                     <span class="signin-label">连续签到1天</span> | ||||||
|  |                     <div class="input-control"> | ||||||
|  |                         <input type="number" class="number-input" value="0" id="day1"> | ||||||
|  |                         <div class="control-buttons"> | ||||||
|  |                             <button class="control-btn" onclick="increaseValue('day1')">▲</button> | ||||||
|  |                             <button class="control-btn" onclick="decreaseValue('day1')">▼</button> | ||||||
|  |                         </div> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  | 
 | ||||||
|  |                 <!-- 连续签到2天 --> | ||||||
|  |                 <div class="signin-item"> | ||||||
|  |                     <span class="required">*</span> | ||||||
|  |                     <span class="signin-label">连续签到2天</span> | ||||||
|  |                     <div class="input-control"> | ||||||
|  |                         <input type="number" class="number-input" value="0" id="day2"> | ||||||
|  |                         <div class="control-buttons"> | ||||||
|  |                             <button class="control-btn" onclick="increaseValue('day2')">▲</button> | ||||||
|  |                             <button class="control-btn" onclick="decreaseValue('day2')">▼</button> | ||||||
|  |                         </div> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  | 
 | ||||||
|  |                 <!-- 连续签到3天 --> | ||||||
|  |                 <div class="signin-item"> | ||||||
|  |                     <span class="required">*</span> | ||||||
|  |                     <span class="signin-label">连续签到3天</span> | ||||||
|  |                     <div class="input-control"> | ||||||
|  |                         <input type="number" class="number-input" value="0" id="day3"> | ||||||
|  |                         <div class="control-buttons"> | ||||||
|  |                             <button class="control-btn" onclick="increaseValue('day3')">▲</button> | ||||||
|  |                             <button class="control-btn" onclick="decreaseValue('day3')">▼</button> | ||||||
|  |                         </div> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  | 
 | ||||||
|  |                 <!-- 连续签到4天 --> | ||||||
|  |                 <div class="signin-item"> | ||||||
|  |                     <span class="required">*</span> | ||||||
|  |                     <span class="signin-label">连续签到4天</span> | ||||||
|  |                     <div class="input-control"> | ||||||
|  |                         <input type="number" class="number-input" value="0" id="day4"> | ||||||
|  |                         <div class="control-buttons"> | ||||||
|  |                             <button class="control-btn" onclick="increaseValue('day4')">▲</button> | ||||||
|  |                             <button class="control-btn" onclick="decreaseValue('day4')">▼</button> | ||||||
|  |                         </div> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  | 
 | ||||||
|  |                 <!-- 连续签到5天 --> | ||||||
|  |                 <div class="signin-item"> | ||||||
|  |                     <span class="required">*</span> | ||||||
|  |                     <span class="signin-label">连续签到5天</span> | ||||||
|  |                     <div class="input-control"> | ||||||
|  |                         <input type="number" class="number-input" value="0" id="day5"> | ||||||
|  |                         <div class="control-buttons"> | ||||||
|  |                             <button class="control-btn" onclick="increaseValue('day5')">▲</button> | ||||||
|  |                             <button class="control-btn" onclick="decreaseValue('day5')">▼</button> | ||||||
|  |                         </div> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  | 
 | ||||||
|  |                 <!-- 连续签到6天 --> | ||||||
|  |                 <div class="signin-item"> | ||||||
|  |                     <span class="required">*</span> | ||||||
|  |                     <span class="signin-label">连续签到6天</span> | ||||||
|  |                     <div class="input-control"> | ||||||
|  |                         <input type="number" class="number-input" value="0" id="day6"> | ||||||
|  |                         <div class="control-buttons"> | ||||||
|  |                             <button class="control-btn" onclick="increaseValue('day6')">▲</button> | ||||||
|  |                             <button class="control-btn" onclick="decreaseValue('day6')">▼</button> | ||||||
|  |                         </div> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  | 
 | ||||||
|  |                 <!-- 连续签到7天 --> | ||||||
|  |                 <div class="signin-item"> | ||||||
|  |                     <span class="required">*</span> | ||||||
|  |                     <span class="signin-label">连续签到7天</span> | ||||||
|  |                     <div class="input-control"> | ||||||
|  |                         <input type="number" class="number-input" value="0" id="day7"> | ||||||
|  |                         <div class="control-buttons"> | ||||||
|  |                             <button class="control-btn" onclick="increaseValue('day7')">▲</button> | ||||||
|  |                             <button class="control-btn" onclick="decreaseValue('day7')">▼</button> | ||||||
|  |                         </div> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  |             </div> | ||||||
|  | 
 | ||||||
|  |             <!-- 弹窗底部 --> | ||||||
|  |             <div class="modal-footer"> | ||||||
|  |                 <button class="btn btn-cancel" onclick="closeModal()">取消</button> | ||||||
|  |                 <button class="btn btn-confirm" onclick="confirmSettings()">确认</button> | ||||||
|  |             </div> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  | 
 | ||||||
|  |     <!-- 浏览商品积分/成长值配置弹窗 --> | ||||||
|  |     <div class="modal-overlay modal-hidden" id="browseModal"> | ||||||
|  |         <div class="modal-container"> | ||||||
|  |             <!-- 弹窗头部 --> | ||||||
|  |             <div class="modal-header"> | ||||||
|  |                 <div class="modal-title">浏览商品积分/成长值配置</div> | ||||||
|  |                 <button class="close-btn" onclick="closeBrowseModal()">×</button> | ||||||
|  |             </div> | ||||||
|  | 
 | ||||||
|  |             <!-- 弹窗内容 --> | ||||||
|  |             <div class="modal-body"> | ||||||
|  |                 <!-- 每浏览1个商品积分增加 --> | ||||||
|  |                 <div class="signin-item"> | ||||||
|  |                     <span class="required">*</span> | ||||||
|  |                     <span class="signin-label">每浏览1个商品积分增加</span> | ||||||
|  |                     <div class="input-control"> | ||||||
|  |                         <input type="number" class="number-input" value="0" id="browsePoints"> | ||||||
|  |                         <div class="control-buttons"> | ||||||
|  |                             <button class="control-btn" onclick="increaseValue('browsePoints')">▲</button> | ||||||
|  |                             <button class="control-btn" onclick="decreaseValue('browsePoints')">▼</button> | ||||||
|  |                         </div> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  | 
 | ||||||
|  |                 <!-- 该任务每日最高可获积分 --> | ||||||
|  |                 <div class="signin-item"> | ||||||
|  |                     <span class="required">*</span> | ||||||
|  |                     <span class="signin-label">该任务每日最高可获积分</span> | ||||||
|  |                     <div class="input-control"> | ||||||
|  |                         <input type="number" class="number-input" value="0" id="maxDailyPoints"> | ||||||
|  |                         <div class="control-buttons"> | ||||||
|  |                             <button class="control-btn" onclick="increaseValue('maxDailyPoints')">▲</button> | ||||||
|  |                             <button class="control-btn" onclick="decreaseValue('maxDailyPoints')">▼</button> | ||||||
|  |                         </div> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  |             </div> | ||||||
|  | 
 | ||||||
|  |             <!-- 弹窗底部 --> | ||||||
|  |             <div class="modal-footer"> | ||||||
|  |                 <button class="btn btn-cancel" onclick="closeBrowseModal()">取消</button> | ||||||
|  |                 <button class="btn btn-confirm" onclick="confirmBrowseSettings()">确认</button> | ||||||
|  |             </div> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  | 
 | ||||||
|  |     <!-- 购买商品任务配置弹窗 --> | ||||||
|  |     <div class="modal-overlay modal-hidden" id="purchaseModal"> | ||||||
|  |         <div class="modal-container"> | ||||||
|  |             <!-- 弹窗头部 --> | ||||||
|  |             <div class="modal-header"> | ||||||
|  |                 <div class="modal-title">购买商品任务配置</div> | ||||||
|  |                 <button class="close-btn" onclick="closePurchaseModal()">×</button> | ||||||
|  |             </div> | ||||||
|  | 
 | ||||||
|  |             <!-- 弹窗内容 --> | ||||||
|  |             <div class="modal-body"> | ||||||
|  |                 <!-- 购买商品实付金额获得积分 --> | ||||||
|  |                 <div class="inline-text-item"> | ||||||
|  |                     <span class="required">*</span> | ||||||
|  |                     <div class="inline-text-wrapper"> | ||||||
|  |                         <span>购买商品实付</span> | ||||||
|  |                         <input type="number" class="inline-input" value="0" id="purchaseAmount"> | ||||||
|  |                         <span>元获得1积分</span> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  | 
 | ||||||
|  |                 <!-- 该任务每日最高获得积分 --> | ||||||
|  |                 <div class="inline-text-item"> | ||||||
|  |                     <span class="required">*</span> | ||||||
|  |                     <div class="inline-text-wrapper"> | ||||||
|  |                         <span>该任务每日最高获得</span> | ||||||
|  |                         <input type="number" class="inline-input" value="0" id="maxPurchasePoints"> | ||||||
|  |                         <span>积分</span> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  |             </div> | ||||||
|  | 
 | ||||||
|  |             <!-- 弹窗底部 --> | ||||||
|  |             <div class="modal-footer"> | ||||||
|  |                 <button class="btn btn-cancel" onclick="closePurchaseModal()">取消</button> | ||||||
|  |                 <button class="btn btn-confirm" onclick="confirmPurchaseSettings()">确认</button> | ||||||
|  |             </div> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  | 
 | ||||||
|  |     <script> | ||||||
|  |         // 打开每日积分设置弹窗 | ||||||
|  |         function openSigninModal() { | ||||||
|  |             const modal = document.getElementById('signinModal'); | ||||||
|  |             modal.classList.remove('modal-hidden'); | ||||||
|  |             console.log('每日积分设置弹窗已打开'); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // 关闭每日积分设置弹窗 | ||||||
|  |         function closeModal() { | ||||||
|  |             const modal = document.getElementById('signinModal'); | ||||||
|  |             modal.classList.add('modal-hidden'); | ||||||
|  |             console.log('每日积分设置弹窗已关闭'); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // 打开浏览商品积分配置弹窗 | ||||||
|  |         function openBrowseModal() { | ||||||
|  |             const modal = document.getElementById('browseModal'); | ||||||
|  |             modal.classList.remove('modal-hidden'); | ||||||
|  |             console.log('浏览商品积分配置弹窗已打开'); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // 关闭浏览商品积分配置弹窗 | ||||||
|  |         function closeBrowseModal() { | ||||||
|  |             const modal = document.getElementById('browseModal'); | ||||||
|  |             modal.classList.add('modal-hidden'); | ||||||
|  |             console.log('浏览商品积分配置弹窗已关闭'); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // 增加数值 | ||||||
|  |         function increaseValue(id) { | ||||||
|  |             const input = document.getElementById(id); | ||||||
|  |             let currentValue = parseInt(input.value) || 0; | ||||||
|  |             input.value = currentValue + 1; | ||||||
|  |             console.log(`${id} 增加到: ${input.value}`); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // 减少数值 | ||||||
|  |         function decreaseValue(id) { | ||||||
|  |             const input = document.getElementById(id); | ||||||
|  |             let currentValue = parseInt(input.value) || 0; | ||||||
|  |             if (currentValue > 0) { | ||||||
|  |                 input.value = currentValue - 1; | ||||||
|  |                 console.log(`${id} 减少到: ${input.value}`); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // 确认每日积分设置 | ||||||
|  |         function confirmSettings() { | ||||||
|  |             const settings = {}; | ||||||
|  |             for (let i = 1; i <= 7; i++) { | ||||||
|  |                 const input = document.getElementById(`day${i}`); | ||||||
|  |                 settings[`day${i}`] = input.value; | ||||||
|  |             } | ||||||
|  |             console.log('签到积分设置:', settings); | ||||||
|  |             alert('每日积分设置已保存(演示)'); | ||||||
|  |             closeModal(); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // 确认浏览商品积分配置 | ||||||
|  |         function confirmBrowseSettings() { | ||||||
|  |             const browsePoints = document.getElementById('browsePoints').value; | ||||||
|  |             const maxDailyPoints = document.getElementById('maxDailyPoints').value; | ||||||
|  |             const settings = { | ||||||
|  |                 browsePoints: browsePoints, | ||||||
|  |                 maxDailyPoints: maxDailyPoints | ||||||
|  |             }; | ||||||
|  |             console.log('浏览商品积分配置:', settings); | ||||||
|  |             alert('浏览商品积分配置已保存(演示)'); | ||||||
|  |             closeBrowseModal(); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // 打开购买商品任务配置弹窗 | ||||||
|  |         function openPurchaseModal() { | ||||||
|  |             const modal = document.getElementById('purchaseModal'); | ||||||
|  |             modal.classList.remove('modal-hidden'); | ||||||
|  |             console.log('购买商品任务配置弹窗已打开'); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // 关闭购买商品任务配置弹窗 | ||||||
|  |         function closePurchaseModal() { | ||||||
|  |             const modal = document.getElementById('purchaseModal'); | ||||||
|  |             modal.classList.add('modal-hidden'); | ||||||
|  |             console.log('购买商品任务配置弹窗已关闭'); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // 确认购买商品任务配置 | ||||||
|  |         function confirmPurchaseSettings() { | ||||||
|  |             const purchaseAmount = document.getElementById('purchaseAmount').value; | ||||||
|  |             const maxPurchasePoints = document.getElementById('maxPurchasePoints').value; | ||||||
|  |             const settings = { | ||||||
|  |                 purchaseAmount: purchaseAmount, | ||||||
|  |                 maxPurchasePoints: maxPurchasePoints | ||||||
|  |             }; | ||||||
|  |             console.log('购买商品任务配置:', settings); | ||||||
|  |             alert('购买商品任务配置已保存(演示)'); | ||||||
|  |             closePurchaseModal(); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // 点击遮罩关闭每日积分设置弹窗 | ||||||
|  |         document.getElementById('signinModal').addEventListener('click', function(e) { | ||||||
|  |             if (e.target === this) { | ||||||
|  |                 closeModal(); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  | 
 | ||||||
|  |         // 点击遮罩关闭浏览商品积分配置弹窗 | ||||||
|  |         document.getElementById('browseModal').addEventListener('click', function(e) { | ||||||
|  |             if (e.target === this) { | ||||||
|  |                 closeBrowseModal(); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  | 
 | ||||||
|  |         // 点击遮罩关闭购买商品任务配置弹窗 | ||||||
|  |         document.getElementById('purchaseModal').addEventListener('click', function(e) { | ||||||
|  |             if (e.target === this) { | ||||||
|  |                 closePurchaseModal(); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  | 
 | ||||||
|  |         // 阻止弹窗内容区域的点击事件冒泡 | ||||||
|  |         document.querySelectorAll('.modal-container').forEach(container => { | ||||||
|  |             container.addEventListener('click', function(e) { | ||||||
|  |                 e.stopPropagation(); | ||||||
|  |             }); | ||||||
|  |         }); | ||||||
|  |     </script> | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
							
								
								
									
										300
									
								
								成长值变化原因2.html
								
								
								
								
							
							
						
						
									
										300
									
								
								成长值变化原因2.html
								
								
								
								
							|  | @ -1,300 +0,0 @@ | ||||||
| <!DOCTYPE html> |  | ||||||
| <html lang="zh-CN"> |  | ||||||
| <head> |  | ||||||
|     <meta charset="UTF-8"> |  | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0"> |  | ||||||
|     <title>成长值详情模态框 - 原型演示</title> |  | ||||||
|     <style> |  | ||||||
|         * { |  | ||||||
|             margin: 0; |  | ||||||
|             padding: 0; |  | ||||||
|             box-sizing: border-box; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         body { |  | ||||||
|             font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; |  | ||||||
|             background-color: #f5f5f5; |  | ||||||
|             padding: 20px; |  | ||||||
|             line-height: 1.6; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         .demo-container { |  | ||||||
|             max-width: 800px; |  | ||||||
|             margin: 0 auto; |  | ||||||
|             text-align: center; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         .demo-title { |  | ||||||
|             color: #666; |  | ||||||
|             margin-bottom: 30px; |  | ||||||
|             font-size: 24px; |  | ||||||
|             border: 1px dashed #ccc; |  | ||||||
|             padding: 20px; |  | ||||||
|             background: white; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         .trigger-button { |  | ||||||
|             background: white; |  | ||||||
|             border: 1px dashed #ccc; |  | ||||||
|             padding: 12px 24px; |  | ||||||
|             font-size: 16px; |  | ||||||
|             cursor: pointer; |  | ||||||
|             color: #666; |  | ||||||
|             transition: background-color 0.2s; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         .trigger-button:hover { |  | ||||||
|             background-color: #f9f9f9; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /* Modal Overlay */ |  | ||||||
|         .modal-overlay { |  | ||||||
|             position: fixed; |  | ||||||
|             top: 0; |  | ||||||
|             left: 0; |  | ||||||
|             width: 100%; |  | ||||||
|             height: 100%; |  | ||||||
|             background-color: rgba(0, 0, 0, 0.5); |  | ||||||
|             display: none; |  | ||||||
|             justify-content: center; |  | ||||||
|             align-items: center; |  | ||||||
|             z-index: 1000; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         .modal-overlay.show { |  | ||||||
|             display: flex; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /* Modal Container */ |  | ||||||
|         .modal-container { |  | ||||||
|             background: white; |  | ||||||
|             border: 1px dashed #ccc; |  | ||||||
|             width: 90%; |  | ||||||
|             max-width: 400px; |  | ||||||
|             border-radius: 0; |  | ||||||
|             overflow: hidden; |  | ||||||
|             animation: modalAppear 0.3s ease-out; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         @keyframes modalAppear { |  | ||||||
|             from { |  | ||||||
|                 opacity: 0; |  | ||||||
|                 transform: scale(0.9); |  | ||||||
|             } |  | ||||||
|             to { |  | ||||||
|                 opacity: 1; |  | ||||||
|                 transform: scale(1); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /* Modal Header */ |  | ||||||
|         .modal-header { |  | ||||||
|             display: flex; |  | ||||||
|             justify-content: space-between; |  | ||||||
|             align-items: center; |  | ||||||
|             padding: 20px; |  | ||||||
|             border-bottom: 1px dashed #ccc; |  | ||||||
|             background: white; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         .modal-title { |  | ||||||
|             font-size: 18px; |  | ||||||
|             font-weight: 500; |  | ||||||
|             color: #333; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         .close-button { |  | ||||||
|             background: none; |  | ||||||
|             border: none; |  | ||||||
|             font-size: 24px; |  | ||||||
|             color: #999; |  | ||||||
|             cursor: pointer; |  | ||||||
|             width: 30px; |  | ||||||
|             height: 30px; |  | ||||||
|             display: flex; |  | ||||||
|             align-items: center; |  | ||||||
|             justify-content: center; |  | ||||||
|             border: 1px dashed transparent; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         .close-button:hover { |  | ||||||
|             color: #666; |  | ||||||
|             border-color: #ccc; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /* Modal Content */ |  | ||||||
|         .modal-content { |  | ||||||
|             padding: 20px; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         .detail-item { |  | ||||||
|             display: flex; |  | ||||||
|             justify-content: space-between; |  | ||||||
|             align-items: center; |  | ||||||
|             margin-bottom: 16px; |  | ||||||
|             padding-bottom: 16px; |  | ||||||
|             border-bottom: 1px dashed #eee; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         .detail-item:last-child { |  | ||||||
|             border-bottom: none; |  | ||||||
|             margin-bottom: 0; |  | ||||||
|             padding-bottom: 0; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         .detail-label { |  | ||||||
|             color: #666; |  | ||||||
|             font-size: 14px; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         .detail-value { |  | ||||||
|             color: #333; |  | ||||||
|             font-size: 14px; |  | ||||||
|             font-weight: 500; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         .detail-value.positive { |  | ||||||
|             color: #22c55e; |  | ||||||
|             font-weight: 600; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /* Modal Footer */ |  | ||||||
|         .modal-footer { |  | ||||||
|             background-color: #f8f9fa; |  | ||||||
|             padding: 16px 20px; |  | ||||||
|             border-top: 1px dashed #ccc; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         .footer-description { |  | ||||||
|             color: #666; |  | ||||||
|             font-size: 13px; |  | ||||||
|             line-height: 1.5; |  | ||||||
|             text-align: left; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /* Responsive Design */ |  | ||||||
|         @media (max-width: 480px) { |  | ||||||
|             .modal-container { |  | ||||||
|                 width: 95%; |  | ||||||
|                 margin: 20px; |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             .modal-header { |  | ||||||
|                 padding: 16px; |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             .modal-content { |  | ||||||
|                 padding: 16px; |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             .modal-footer { |  | ||||||
|                 padding: 12px 16px; |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             .detail-item { |  | ||||||
|                 flex-direction: column; |  | ||||||
|                 align-items: flex-start; |  | ||||||
|                 gap: 4px; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /* Demo Instructions */ |  | ||||||
|         .demo-instructions { |  | ||||||
|             margin-top: 30px; |  | ||||||
|             padding: 20px; |  | ||||||
|             background: white; |  | ||||||
|             border: 1px dashed #ccc; |  | ||||||
|             color: #666; |  | ||||||
|             font-size: 14px; |  | ||||||
|             text-align: left; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         .demo-instructions h3 { |  | ||||||
|             margin-bottom: 10px; |  | ||||||
|             color: #333; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         .demo-instructions ul { |  | ||||||
|             margin-left: 20px; |  | ||||||
|         } |  | ||||||
|     </style> |  | ||||||
| </head> |  | ||||||
| <body> |  | ||||||
|     <div class="demo-container"> |  | ||||||
|         <div class="demo-title"> |  | ||||||
|             成长值详情模态框原型演示 |  | ||||||
|         </div> |  | ||||||
|          |  | ||||||
|         <button class="trigger-button" onclick="openModal()"> |  | ||||||
|             点击打开成长值详情模态框 |  | ||||||
|         </button> |  | ||||||
| 
 |  | ||||||
|         <div class="demo-instructions"> |  | ||||||
|             <h3>原型说明:</h3> |  | ||||||
|             <ul> |  | ||||||
|                 <li>线框图风格设计,使用虚线边框</li> |  | ||||||
|                 <li>点击按钮打开模态框</li> |  | ||||||
|                 <li>点击X或遮罩层关闭模态框</li> |  | ||||||
|                 <li>响应式布局,适配移动端</li> |  | ||||||
|                 <li>成长值增加显示为绿色</li> |  | ||||||
|                 <li>底部灰色背景区域显示描述信息</li> |  | ||||||
|             </ul> |  | ||||||
|         </div> |  | ||||||
|     </div> |  | ||||||
| 
 |  | ||||||
|     <!-- Modal --> |  | ||||||
|     <div class="modal-overlay" id="modalOverlay" onclick="closeModal(event)"> |  | ||||||
|         <div class="modal-container" onclick="event.stopPropagation()"> |  | ||||||
|             <div class="modal-header"> |  | ||||||
|                 <div class="modal-title">成长值详情</div> |  | ||||||
|                 <button class="close-button" onclick="closeModal()">×</button> |  | ||||||
|             </div> |  | ||||||
|              |  | ||||||
|             <div class="modal-content"> |  | ||||||
|                 <div class="detail-item"> |  | ||||||
|                     <span class="detail-label">变化原因:</span> |  | ||||||
|                     <span class="detail-value">活动奖励</span> |  | ||||||
|                 </div> |  | ||||||
|                  |  | ||||||
|                 <div class="detail-item"> |  | ||||||
|                     <span class="detail-label">变化时间:</span> |  | ||||||
|                     <span class="detail-value">2025-07-12 17:20</span> |  | ||||||
|                 </div> |  | ||||||
|                  |  | ||||||
|                 <div class="detail-item"> |  | ||||||
|                     <span class="detail-label">成长值增加:</span> |  | ||||||
|                     <span class="detail-value positive">+100</span> |  | ||||||
|                 </div> |  | ||||||
|             </div> |  | ||||||
|              |  | ||||||
|             <div class="modal-footer"> |  | ||||||
|                 <div class="footer-description"> |  | ||||||
|                     参与平台活动获得的成长值奖励 |  | ||||||
|                 </div> |  | ||||||
|             </div> |  | ||||||
|         </div> |  | ||||||
|     </div> |  | ||||||
| 
 |  | ||||||
|     <script> |  | ||||||
|         function openModal() { |  | ||||||
|             document.getElementById('modalOverlay').classList.add('show'); |  | ||||||
|             document.body.style.overflow = 'hidden'; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         function closeModal(event) { |  | ||||||
|             if (event && event.target !== event.currentTarget) { |  | ||||||
|                 return; |  | ||||||
|             } |  | ||||||
|             document.getElementById('modalOverlay').classList.remove('show'); |  | ||||||
|             document.body.style.overflow = 'auto'; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         // Close modal with Escape key |  | ||||||
|         document.addEventListener('keydown', function(event) { |  | ||||||
|             if (event.key === 'Escape') { |  | ||||||
|                 closeModal(); |  | ||||||
|             } |  | ||||||
|         }); |  | ||||||
|     </script> |  | ||||||
| </body> |  | ||||||
| </html> |  | ||||||
		Loading…
	
		Reference in New Issue