892 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			HTML
		
	
	
	
		
		
			
		
	
	
			892 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			HTML
		
	
	
	
|  | <!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', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif; | |||
|  |             background-color: #f5f5f5; | |||
|  |             color: #333; | |||
|  |             line-height: 1.6; | |||
|  |         } | |||
|  | 
 | |||
|  |         .container { | |||
|  |             max-width: 1200px; | |||
|  |             margin: 0 auto; | |||
|  |             background-color: #fff; | |||
|  |             min-height: 100vh; | |||
|  |         } | |||
|  | 
 | |||
|  |         .header { | |||
|  |             display: flex; | |||
|  |             align-items: center; | |||
|  |             padding: 20px; | |||
|  |             background-color: #fff; | |||
|  |             border-bottom: 1px solid #e5e5e5; | |||
|  |             position: sticky; | |||
|  |             top: 0; | |||
|  |             z-index: 100; | |||
|  |         } | |||
|  | 
 | |||
|  |         .header .back-btn { | |||
|  |             font-size: 24px; | |||
|  |             cursor: pointer; | |||
|  |             margin-right: 20px; | |||
|  |             color: #333; | |||
|  |         } | |||
|  | 
 | |||
|  |         .header h1 { | |||
|  |             font-size: 20px; | |||
|  |             font-weight: 500; | |||
|  |         } | |||
|  | 
 | |||
|  |         .content { | |||
|  |             padding: 30px; | |||
|  |         } | |||
|  | 
 | |||
|  |         .section { | |||
|  |             margin-bottom: 40px; | |||
|  |         } | |||
|  | 
 | |||
|  |         .section-header { | |||
|  |             display: flex; | |||
|  |             justify-content: space-between; | |||
|  |             align-items: center; | |||
|  |             margin-bottom: 20px; | |||
|  |         } | |||
|  | 
 | |||
|  |         .section-title { | |||
|  |             font-size: 16px; | |||
|  |             color: #666; | |||
|  |             font-weight: 500; | |||
|  |         } | |||
|  | 
 | |||
|  |         .help-icon { | |||
|  |             color: #999; | |||
|  |             cursor: pointer; | |||
|  |             font-size: 14px; | |||
|  |         } | |||
|  | 
 | |||
|  |         .form-item { | |||
|  |             display: flex; | |||
|  |             align-items: flex-start; | |||
|  |             margin-bottom: 25px; | |||
|  |             padding: 15px 0; | |||
|  |             border-bottom: 1px solid #f0f0f0; | |||
|  |         } | |||
|  | 
 | |||
|  |         .form-item:last-child { | |||
|  |             border-bottom: none; | |||
|  |         } | |||
|  | 
 | |||
|  |         .form-label { | |||
|  |             min-width: 200px; | |||
|  |             font-size: 15px; | |||
|  |             color: #333; | |||
|  |             padding-top: 8px; | |||
|  |         } | |||
|  | 
 | |||
|  |         .form-label.required::before { | |||
|  |             content: '*'; | |||
|  |             color: #ff4d4f; | |||
|  |             margin-right: 4px; | |||
|  |         } | |||
|  | 
 | |||
|  |         .form-value { | |||
|  |             flex: 1; | |||
|  |             display: flex; | |||
|  |             align-items: center; | |||
|  |             justify-content: flex-end; | |||
|  |         } | |||
|  | 
 | |||
|  |         .image-upload-container { | |||
|  |             display: flex; | |||
|  |             gap: 15px; | |||
|  |             flex-wrap: wrap; | |||
|  |         } | |||
|  | 
 | |||
|  |         .image-preview { | |||
|  |             position: relative; | |||
|  |             width: 120px; | |||
|  |             height: 120px; | |||
|  |             border-radius: 8px; | |||
|  |             overflow: hidden; | |||
|  |         } | |||
|  | 
 | |||
|  |         .image-preview img { | |||
|  |             width: 100%; | |||
|  |             height: 100%; | |||
|  |             object-fit: cover; | |||
|  |         } | |||
|  | 
 | |||
|  |         .image-delete { | |||
|  |             position: absolute; | |||
|  |             top: -8px; | |||
|  |             right: -8px; | |||
|  |             width: 24px; | |||
|  |             height: 24px; | |||
|  |             background-color: rgba(0, 0, 0, 0.6); | |||
|  |             color: white; | |||
|  |             border-radius: 50%; | |||
|  |             display: flex; | |||
|  |             align-items: center; | |||
|  |             justify-content: center; | |||
|  |             cursor: pointer; | |||
|  |             font-size: 16px; | |||
|  |         } | |||
|  | 
 | |||
|  |         .image-upload-btn { | |||
|  |             width: 120px; | |||
|  |             height: 120px; | |||
|  |             border: 2px dashed #ddd; | |||
|  |             border-radius: 8px; | |||
|  |             display: flex; | |||
|  |             flex-direction: column; | |||
|  |             align-items: center; | |||
|  |             justify-content: center; | |||
|  |             cursor: pointer; | |||
|  |             background-color: #fafafa; | |||
|  |             transition: all 0.3s; | |||
|  |         } | |||
|  | 
 | |||
|  |         .image-upload-btn:hover { | |||
|  |             border-color: #1a6f3f; | |||
|  |             background-color: #f0f9f4; | |||
|  |         } | |||
|  | 
 | |||
|  |         .image-upload-btn .camera-icon { | |||
|  |             font-size: 32px; | |||
|  |             color: #ccc; | |||
|  |             margin-bottom: 5px; | |||
|  |         } | |||
|  | 
 | |||
|  |         .image-upload-btn .upload-text { | |||
|  |             font-size: 12px; | |||
|  |             color: #999; | |||
|  |         } | |||
|  | 
 | |||
|  |         .input-text { | |||
|  |             font-size: 15px; | |||
|  |             color: #333; | |||
|  |         } | |||
|  | 
 | |||
|  |         .input-link { | |||
|  |             font-size: 15px; | |||
|  |             color: #333; | |||
|  |             cursor: pointer; | |||
|  |             display: flex; | |||
|  |             align-items: center; | |||
|  |         } | |||
|  | 
 | |||
|  |         .input-link::after { | |||
|  |             content: '›'; | |||
|  |             font-size: 20px; | |||
|  |             margin-left: 8px; | |||
|  |             color: #999; | |||
|  |         } | |||
|  | 
 | |||
|  |         .toggle-switch { | |||
|  |             position: relative; | |||
|  |             width: 52px; | |||
|  |             height: 28px; | |||
|  |             cursor: pointer; | |||
|  |         } | |||
|  | 
 | |||
|  |         .toggle-switch input { | |||
|  |             opacity: 0; | |||
|  |             width: 0; | |||
|  |             height: 0; | |||
|  |         } | |||
|  | 
 | |||
|  |         .toggle-slider { | |||
|  |             position: absolute; | |||
|  |             top: 0; | |||
|  |             left: 0; | |||
|  |             right: 0; | |||
|  |             bottom: 0; | |||
|  |             background-color: #ddd; | |||
|  |             border-radius: 28px; | |||
|  |             transition: 0.3s; | |||
|  |         } | |||
|  | 
 | |||
|  |         .toggle-slider:before { | |||
|  |             position: absolute; | |||
|  |             content: ""; | |||
|  |             height: 24px; | |||
|  |             width: 24px; | |||
|  |             left: 2px; | |||
|  |             bottom: 2px; | |||
|  |             background-color: white; | |||
|  |             border-radius: 50%; | |||
|  |             transition: 0.3s; | |||
|  |         } | |||
|  | 
 | |||
|  |         .toggle-switch input:checked + .toggle-slider { | |||
|  |             background-color: #1a6f3f; | |||
|  |         } | |||
|  | 
 | |||
|  |         .toggle-switch input:checked + .toggle-slider:before { | |||
|  |             transform: translateX(24px); | |||
|  |         } | |||
|  | 
 | |||
|  |         .toggle-labels { | |||
|  |             display: flex; | |||
|  |             gap: 15px; | |||
|  |             margin-left: 15px; | |||
|  |             font-size: 15px; | |||
|  |         } | |||
|  | 
 | |||
|  |         .toggle-labels span { | |||
|  |             color: #999; | |||
|  |         } | |||
|  | 
 | |||
|  |         .toggle-labels span.active { | |||
|  |             color: #333; | |||
|  |         } | |||
|  | 
 | |||
|  |         .number-input { | |||
|  |             display: flex; | |||
|  |             align-items: center; | |||
|  |             gap: 10px; | |||
|  |         } | |||
|  | 
 | |||
|  |         .number-input input { | |||
|  |             width: 80px; | |||
|  |             height: 36px; | |||
|  |             border: 1px solid #ddd; | |||
|  |             border-radius: 4px; | |||
|  |             padding: 0 12px; | |||
|  |             font-size: 15px; | |||
|  |             text-align: center; | |||
|  |         } | |||
|  | 
 | |||
|  |         .number-input .unit { | |||
|  |             color: #666; | |||
|  |             font-size: 15px; | |||
|  |         } | |||
|  | 
 | |||
|  |         .footer { | |||
|  |             position: fixed; | |||
|  |             bottom: 0; | |||
|  |             left: 0; | |||
|  |             right: 0; | |||
|  |             background-color: #fff; | |||
|  |             border-top: 1px solid #e5e5e5; | |||
|  |             padding: 20px; | |||
|  |             display: flex; | |||
|  |             justify-content: center; | |||
|  |             gap: 20px; | |||
|  |         } | |||
|  | 
 | |||
|  |         .btn { | |||
|  |             padding: 12px 50px; | |||
|  |             font-size: 16px; | |||
|  |             border-radius: 25px; | |||
|  |             border: none; | |||
|  |             cursor: pointer; | |||
|  |             transition: all 0.3s; | |||
|  |         } | |||
|  | 
 | |||
|  |         .btn-cancel { | |||
|  |             background-color: #fff; | |||
|  |             color: #333; | |||
|  |             border: 1px solid #ddd; | |||
|  |         } | |||
|  | 
 | |||
|  |         .btn-cancel:hover { | |||
|  |             background-color: #f5f5f5; | |||
|  |         } | |||
|  | 
 | |||
|  |         .btn-submit { | |||
|  |             background-color: #1a6f3f; | |||
|  |             color: white; | |||
|  |             padding: 12px 80px; | |||
|  |         } | |||
|  | 
 | |||
|  |         .btn-submit:hover { | |||
|  |             background-color: #155c34; | |||
|  |         } | |||
|  | 
 | |||
|  |         /* 地图弹窗样式 */ | |||
|  |         .modal-overlay { | |||
|  |             display: none; | |||
|  |             position: fixed; | |||
|  |             top: 0; | |||
|  |             left: 0; | |||
|  |             right: 0; | |||
|  |             bottom: 0; | |||
|  |             background-color: rgba(0, 0, 0, 0.5); | |||
|  |             z-index: 1000; | |||
|  |             animation: fadeIn 0.3s ease; | |||
|  |         } | |||
|  | 
 | |||
|  |         .modal-overlay.active { | |||
|  |             display: flex; | |||
|  |             align-items: center; | |||
|  |             justify-content: center; | |||
|  |         } | |||
|  | 
 | |||
|  |         @keyframes fadeIn { | |||
|  |             from { | |||
|  |                 opacity: 0; | |||
|  |             } | |||
|  |             to { | |||
|  |                 opacity: 1; | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         @keyframes slideUp { | |||
|  |             from { | |||
|  |                 transform: translateY(50px); | |||
|  |                 opacity: 0; | |||
|  |             } | |||
|  |             to { | |||
|  |                 transform: translateY(0); | |||
|  |                 opacity: 1; | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         .modal-content { | |||
|  |             background-color: #fff; | |||
|  |             border-radius: 12px; | |||
|  |             width: 90%; | |||
|  |             max-width: 800px; | |||
|  |             max-height: 80vh; | |||
|  |             display: flex; | |||
|  |             flex-direction: column; | |||
|  |             animation: slideUp 0.3s ease; | |||
|  |             overflow: hidden; | |||
|  |         } | |||
|  | 
 | |||
|  |         .modal-header { | |||
|  |             display: flex; | |||
|  |             justify-content: space-between; | |||
|  |             align-items: center; | |||
|  |             padding: 20px 24px; | |||
|  |             border-bottom: 1px solid #e5e5e5; | |||
|  |         } | |||
|  | 
 | |||
|  |         .modal-header h3 { | |||
|  |             font-size: 18px; | |||
|  |             font-weight: 500; | |||
|  |             color: #333; | |||
|  |         } | |||
|  | 
 | |||
|  |         .modal-close { | |||
|  |             font-size: 28px; | |||
|  |             color: #999; | |||
|  |             cursor: pointer; | |||
|  |             line-height: 1; | |||
|  |             transition: color 0.3s; | |||
|  |         } | |||
|  | 
 | |||
|  |         .modal-close:hover { | |||
|  |             color: #333; | |||
|  |         } | |||
|  | 
 | |||
|  |         .modal-body { | |||
|  |             padding: 24px; | |||
|  |             flex: 1; | |||
|  |             overflow-y: auto; | |||
|  |         } | |||
|  | 
 | |||
|  |         .map-container { | |||
|  |             width: 100%; | |||
|  |             height: 500px; | |||
|  |             background-color: #f0f0f0; | |||
|  |             border-radius: 8px; | |||
|  |             display: flex; | |||
|  |             flex-direction: column; | |||
|  |             align-items: center; | |||
|  |             justify-content: center; | |||
|  |             position: relative; | |||
|  |             overflow: hidden; | |||
|  |         } | |||
|  | 
 | |||
|  |         .map-placeholder { | |||
|  |             text-align: center; | |||
|  |             color: #999; | |||
|  |         } | |||
|  | 
 | |||
|  |         .map-placeholder .map-icon { | |||
|  |             font-size: 64px; | |||
|  |             margin-bottom: 16px; | |||
|  |             opacity: 0.5; | |||
|  |         } | |||
|  | 
 | |||
|  |         .map-placeholder .map-text { | |||
|  |             font-size: 16px; | |||
|  |             margin-bottom: 8px; | |||
|  |         } | |||
|  | 
 | |||
|  |         .map-placeholder .map-address { | |||
|  |             font-size: 14px; | |||
|  |             color: #666; | |||
|  |             font-weight: 500; | |||
|  |         } | |||
|  | 
 | |||
|  |         .map-marker { | |||
|  |             position: absolute; | |||
|  |             top: 50%; | |||
|  |             left: 50%; | |||
|  |             transform: translate(-50%, -50%); | |||
|  |             font-size: 48px; | |||
|  |             color: #ff4d4f; | |||
|  |             animation: bounce 1s infinite; | |||
|  |         } | |||
|  | 
 | |||
|  |         @keyframes bounce { | |||
|  |             0%, 100% { | |||
|  |                 transform: translate(-50%, -50%); | |||
|  |             } | |||
|  |             50% { | |||
|  |                 transform: translate(-50%, -60%); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         .location-info { | |||
|  |             margin-top: 20px; | |||
|  |             padding: 16px; | |||
|  |             background-color: #f9f9f9; | |||
|  |             border-radius: 8px; | |||
|  |         } | |||
|  | 
 | |||
|  |         .location-info-item { | |||
|  |             display: flex; | |||
|  |             margin-bottom: 12px; | |||
|  |             font-size: 14px; | |||
|  |         } | |||
|  | 
 | |||
|  |         .location-info-item:last-child { | |||
|  |             margin-bottom: 0; | |||
|  |         } | |||
|  | 
 | |||
|  |         .location-info-label { | |||
|  |             color: #999; | |||
|  |             min-width: 80px; | |||
|  |         } | |||
|  | 
 | |||
|  |         .location-info-value { | |||
|  |             color: #333; | |||
|  |             font-weight: 500; | |||
|  |         } | |||
|  | 
 | |||
|  |         .modal-footer { | |||
|  |             padding: 16px 24px; | |||
|  |             border-top: 1px solid #e5e5e5; | |||
|  |             display: flex; | |||
|  |             justify-content: flex-end; | |||
|  |             gap: 12px; | |||
|  |         } | |||
|  | 
 | |||
|  |         .modal-btn { | |||
|  |             padding: 10px 24px; | |||
|  |             border-radius: 6px; | |||
|  |             font-size: 14px; | |||
|  |             cursor: pointer; | |||
|  |             border: none; | |||
|  |             transition: all 0.3s; | |||
|  |         } | |||
|  | 
 | |||
|  |         .modal-btn-cancel { | |||
|  |             background-color: #f5f5f5; | |||
|  |             color: #333; | |||
|  |         } | |||
|  | 
 | |||
|  |         .modal-btn-cancel:hover { | |||
|  |             background-color: #e5e5e5; | |||
|  |         } | |||
|  | 
 | |||
|  |         .modal-btn-confirm { | |||
|  |             background-color: #1a6f3f; | |||
|  |             color: white; | |||
|  |         } | |||
|  | 
 | |||
|  |         .modal-btn-confirm:hover { | |||
|  |             background-color: #155c34; | |||
|  |         } | |||
|  | 
 | |||
|  |         @media (max-width: 768px) { | |||
|  |             .container { | |||
|  |                 max-width: 100%; | |||
|  |             } | |||
|  | 
 | |||
|  |             .content { | |||
|  |                 padding: 20px; | |||
|  |             } | |||
|  | 
 | |||
|  |             .form-item { | |||
|  |                 flex-direction: column; | |||
|  |             } | |||
|  | 
 | |||
|  |             .form-label { | |||
|  |                 min-width: auto; | |||
|  |                 margin-bottom: 10px; | |||
|  |             } | |||
|  | 
 | |||
|  |             .form-value { | |||
|  |                 width: 100%; | |||
|  |                 justify-content: flex-start; | |||
|  |             } | |||
|  | 
 | |||
|  |             .modal-content { | |||
|  |                 width: 95%; | |||
|  |                 max-height: 90vh; | |||
|  |             } | |||
|  | 
 | |||
|  |             .map-container { | |||
|  |                 height: 400px; | |||
|  |             } | |||
|  |         } | |||
|  |     </style> | |||
|  | </head> | |||
|  | <body> | |||
|  |     <div class="container"> | |||
|  |         <div class="header"> | |||
|  |             <span class="back-btn" onclick="history.back()">‹</span> | |||
|  |             <h1>市场基础管理</h1> | |||
|  |         </div> | |||
|  | 
 | |||
|  |         <div class="content"> | |||
|  |             <!-- 基础配置 --> | |||
|  |             <div class="section"> | |||
|  |                 <div class="section-header"> | |||
|  |                     <h2 class="section-title">基础配置</h2> | |||
|  |                     <span class="help-icon">字段说明 ⓘ</span> | |||
|  |                 </div> | |||
|  | 
 | |||
|  |                 <div class="form-item"> | |||
|  |                     <div class="form-label required">菜市场背景图</div> | |||
|  |                     <div class="form-value"> | |||
|  |                         <div class="image-upload-container"> | |||
|  |                             <div class="image-preview"> | |||
|  |                                 <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Crect fill='%23f0f0f0' width='120' height='120'/%3E%3Ctext x='50%25' y='50%25' dominant-baseline='middle' text-anchor='middle' fill='%23999' font-size='14'%3E背景图%3C/text%3E%3C/svg%3E" alt="菜市场背景图"> | |||
|  |                                 <div class="image-delete">×</div> | |||
|  |                             </div> | |||
|  |                         </div> | |||
|  |                     </div> | |||
|  |                 </div> | |||
|  | 
 | |||
|  |                 <div class="form-item"> | |||
|  |                     <div class="form-label required">菜市场营业执照(顾客可见)</div> | |||
|  |                     <div class="form-value"> | |||
|  |                         <div class="image-upload-container"> | |||
|  |                             <div class="image-preview"> | |||
|  |                                 <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Crect fill='%23f0f0f0' width='120' height='120'/%3E%3Ctext x='50%25' y='50%25' dominant-baseline='middle' text-anchor='middle' fill='%23999' font-size='14'%3E营业执照%3C/text%3E%3C/svg%3E" alt="营业执照"> | |||
|  |                                 <div class="image-delete">×</div> | |||
|  |                             </div> | |||
|  |                         </div> | |||
|  |                     </div> | |||
|  |                 </div> | |||
|  | 
 | |||
|  |                 <div class="form-item"> | |||
|  |                     <div class="form-label required">菜市场实拍图(顾客可见)</div> | |||
|  |                     <div class="form-value"> | |||
|  |                         <div class="image-upload-container"> | |||
|  |                             <div class="image-preview"> | |||
|  |                                 <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Crect fill='%23f0f0f0' width='120' height='120'/%3E%3Ctext x='50%25' y='50%25' dominant-baseline='middle' text-anchor='middle' fill='%23999' font-size='14'%3E实拍图%3C/text%3E%3C/svg%3E" alt="实拍图"> | |||
|  |                                 <div class="image-delete">×</div> | |||
|  |                             </div> | |||
|  |                             <div class="image-upload-btn"> | |||
|  |                                 <div class="camera-icon">📷</div> | |||
|  |                                 <div class="upload-text">(1/5)</div> | |||
|  |                             </div> | |||
|  |                         </div> | |||
|  |                     </div> | |||
|  |                 </div> | |||
|  | 
 | |||
|  |                 <div class="form-item"> | |||
|  |                     <div class="form-label">市场联系电话(顾客可见)</div> | |||
|  |                     <div class="form-value"> | |||
|  |                         <span class="input-text">13818776990</span> | |||
|  |                     </div> | |||
|  |                 </div> | |||
|  | 
 | |||
|  |                 <div class="form-item"> | |||
|  |                     <div class="form-label required">市场位置</div> | |||
|  |                     <div class="form-value"> | |||
|  |                         <span class="input-link" onclick="openMapModal('market')">农家小炒(春申路店)</span> | |||
|  |                     </div> | |||
|  |                 </div> | |||
|  | 
 | |||
|  |                 <div class="form-item"> | |||
|  |                     <div class="form-label required">市场详细地址</div> | |||
|  |                     <div class="form-value"> | |||
|  |                         <span class="input-text">闵行区春申路1501号</span> | |||
|  |                     </div> | |||
|  |                 </div> | |||
|  | 
 | |||
|  |                 <div class="form-item"> | |||
|  |                     <div class="form-label">是否自动营业</div> | |||
|  |                     <div class="form-value"> | |||
|  |                         <label class="toggle-switch"> | |||
|  |                             <input type="checkbox" id="autoOpen"> | |||
|  |                             <span class="toggle-slider"></span> | |||
|  |                         </label> | |||
|  |                         <div class="toggle-labels"> | |||
|  |                             <span id="closeLabel">关闭</span> | |||
|  |                             <span id="openLabel" class="active">开启</span> | |||
|  |                         </div> | |||
|  |                     </div> | |||
|  |                 </div> | |||
|  |             </div> | |||
|  | 
 | |||
|  |             <!-- 自提点配置 --> | |||
|  |             <div class="section"> | |||
|  |                 <div class="section-header"> | |||
|  |                     <h2 class="section-title">自提点配置</h2> | |||
|  |                     <span class="help-icon">字段说明 ⓘ</span> | |||
|  |                 </div> | |||
|  | 
 | |||
|  |                 <div class="form-item"> | |||
|  |                     <div class="form-label required">顾客自提点位置</div> | |||
|  |                     <div class="form-value"> | |||
|  |                         <span class="input-link" onclick="openMapModal('pickup')">农家小炒(春申路店)</span> | |||
|  |                     </div> | |||
|  |                 </div> | |||
|  | 
 | |||
|  |                 <div class="form-item"> | |||
|  |                     <div class="form-label required">自提点详细地址</div> | |||
|  |                     <div class="form-value"> | |||
|  |                         <span class="input-text">春申菜市场一楼北门旁边</span> | |||
|  |                     </div> | |||
|  |                 </div> | |||
|  | 
 | |||
|  |                 <div class="form-item"> | |||
|  |                     <div class="form-label">自提点位置示意图</div> | |||
|  |                     <div class="form-value"> | |||
|  |                         <div class="image-upload-container"> | |||
|  |                             <div class="image-preview"> | |||
|  |                                 <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Crect fill='%23f0f0f0' width='120' height='120'/%3E%3Ctext x='50%25' y='50%25' dominant-baseline='middle' text-anchor='middle' fill='%23999' font-size='14'%3E示意图%3C/text%3E%3C/svg%3E" alt="示意图"> | |||
|  |                                 <div class="image-delete">×</div> | |||
|  |                             </div> | |||
|  |                         </div> | |||
|  |                     </div> | |||
|  |                 </div> | |||
|  | 
 | |||
|  |                 <div class="form-item"> | |||
|  |                     <div class="form-label required">承诺送达自提点时间</div> | |||
|  |                     <div class="form-value"> | |||
|  |                         <div class="number-input"> | |||
|  |                             <input type="number" value="1" min="1"> | |||
|  |                             <span class="unit">小时以内</span> | |||
|  |                         </div> | |||
|  |                     </div> | |||
|  |                 </div> | |||
|  |             </div> | |||
|  | 
 | |||
|  |             <!-- 摊主入驻配置 --> | |||
|  |             <div class="section"> | |||
|  |                 <div class="section-header"> | |||
|  |                     <h2 class="section-title">摊主入驻配置</h2> | |||
|  |                     <span class="help-icon">字段说明 ⓘ</span> | |||
|  |                 </div> | |||
|  | 
 | |||
|  |                 <div class="form-item"> | |||
|  |                     <div class="form-label required">若有摊主想入驻菜市场是否允许摊主联系您</div> | |||
|  |                     <div class="form-value"> | |||
|  |                         <label class="toggle-switch"> | |||
|  |                             <input type="checkbox" id="allowContact" checked> | |||
|  |                             <span class="toggle-slider"></span> | |||
|  |                         </label> | |||
|  |                         <div class="toggle-labels"> | |||
|  |                             <span id="forbidLabel">禁止</span> | |||
|  |                             <span id="allowLabel" class="active">允许</span> | |||
|  |                         </div> | |||
|  |                     </div> | |||
|  |                 </div> | |||
|  |             </div> | |||
|  | 
 | |||
|  |             <div style="height: 80px;"></div> | |||
|  |         </div> | |||
|  | 
 | |||
|  |         <div class="footer"> | |||
|  |             <button class="btn btn-cancel" onclick="history.back()">取消</button> | |||
|  |             <button class="btn btn-submit" onclick="handleSubmit()">提交</button> | |||
|  |         </div> | |||
|  |     </div> | |||
|  | 
 | |||
|  |     <!-- 地图弹窗 --> | |||
|  |     <div id="mapModal" class="modal-overlay" onclick="closeMapModal(event)"> | |||
|  |         <div class="modal-content" onclick="event.stopPropagation()"> | |||
|  |             <div class="modal-header"> | |||
|  |                 <h3 id="modalTitle">选择位置</h3> | |||
|  |                 <span class="modal-close" onclick="closeMapModal()">×</span> | |||
|  |             </div> | |||
|  |             <div class="modal-body"> | |||
|  |                 <div class="map-container"> | |||
|  |                     <div class="map-placeholder"> | |||
|  |                         <div class="map-icon">📍</div> | |||
|  |                         <div class="map-text">地图占位符</div> | |||
|  |                         <div class="map-address" id="mapAddress">农家小炒(春申路店)</div> | |||
|  |                     </div> | |||
|  |                     <div class="map-marker">📍</div> | |||
|  |                 </div> | |||
|  |                 <div class="location-info"> | |||
|  |                     <div class="location-info-item"> | |||
|  |                         <span class="location-info-label">位置名称:</span> | |||
|  |                         <span class="location-info-value" id="locationName">农家小炒(春申路店)</span> | |||
|  |                     </div> | |||
|  |                     <div class="location-info-item"> | |||
|  |                         <span class="location-info-label">详细地址:</span> | |||
|  |                         <span class="location-info-value" id="locationAddress">闵行区春申路1501号</span> | |||
|  |                     </div> | |||
|  |                     <div class="location-info-item"> | |||
|  |                         <span class="location-info-label">经纬度:</span> | |||
|  |                         <span class="location-info-value">121.3826, 31.1226</span> | |||
|  |                     </div> | |||
|  |                 </div> | |||
|  |             </div> | |||
|  |             <div class="modal-footer"> | |||
|  |                 <button class="modal-btn modal-btn-cancel" onclick="closeMapModal()">取消</button> | |||
|  |                 <button class="modal-btn modal-btn-confirm" onclick="confirmLocation()">确定</button> | |||
|  |             </div> | |||
|  |         </div> | |||
|  |     </div> | |||
|  | 
 | |||
|  |     <script> | |||
|  |         // 当前选择的位置类型 | |||
|  |         let currentLocationType = null; | |||
|  | 
 | |||
|  |         // 打开地图弹窗 | |||
|  |         function openMapModal(type) { | |||
|  |             currentLocationType = type; | |||
|  |             const modal = document.getElementById('mapModal'); | |||
|  |             const modalTitle = document.getElementById('modalTitle'); | |||
|  |             const mapAddress = document.getElementById('mapAddress'); | |||
|  |             const locationName = document.getElementById('locationName'); | |||
|  |             const locationAddress = document.getElementById('locationAddress'); | |||
|  | 
 | |||
|  |             if (type === 'market') { | |||
|  |                 modalTitle.textContent = '选择市场位置'; | |||
|  |                 mapAddress.textContent = '农家小炒(春申路店)'; | |||
|  |                 locationName.textContent = '农家小炒(春申路店)'; | |||
|  |                 locationAddress.textContent = '闵行区春申路1501号'; | |||
|  |             } else if (type === 'pickup') { | |||
|  |                 modalTitle.textContent = '选择自提点位置'; | |||
|  |                 mapAddress.textContent = '农家小炒(春申路店)'; | |||
|  |                 locationName.textContent = '农家小炒(春申路店)'; | |||
|  |                 locationAddress.textContent = '春申菜市场一楼北门旁边'; | |||
|  |             } | |||
|  | 
 | |||
|  |             modal.classList.add('active'); | |||
|  |             document.body.style.overflow = 'hidden'; | |||
|  |         } | |||
|  | 
 | |||
|  |         // 关闭地图弹窗 | |||
|  |         function closeMapModal(event) { | |||
|  |             if (event && event.target !== event.currentTarget) { | |||
|  |                 return; | |||
|  |             } | |||
|  |             const modal = document.getElementById('mapModal'); | |||
|  |             modal.classList.remove('active'); | |||
|  |             document.body.style.overflow = ''; | |||
|  |             currentLocationType = null; | |||
|  |         } | |||
|  | 
 | |||
|  |         // 确认选择位置 | |||
|  |         function confirmLocation() { | |||
|  |             const locationName = document.getElementById('locationName').textContent; | |||
|  |             console.log('选择的位置:', locationName, '类型:', currentLocationType); | |||
|  |             alert('位置已选择: ' + locationName); | |||
|  |             closeMapModal(); | |||
|  |         } | |||
|  | 
 | |||
|  |         // 自动营业开关 | |||
|  |         const autoOpenSwitch = document.getElementById('autoOpen'); | |||
|  |         const closeLabel = document.getElementById('closeLabel'); | |||
|  |         const openLabel = document.getElementById('openLabel'); | |||
|  | 
 | |||
|  |         autoOpenSwitch.addEventListener('change', function() { | |||
|  |             if (this.checked) { | |||
|  |                 closeLabel.classList.remove('active'); | |||
|  |                 openLabel.classList.add('active'); | |||
|  |             } else { | |||
|  |                 closeLabel.classList.add('active'); | |||
|  |                 openLabel.classList.remove('active'); | |||
|  |             } | |||
|  |         }); | |||
|  | 
 | |||
|  |         // 摊主入驻开关 | |||
|  |         const allowContactSwitch = document.getElementById('allowContact'); | |||
|  |         const forbidLabel = document.getElementById('forbidLabel'); | |||
|  |         const allowLabel = document.getElementById('allowLabel'); | |||
|  | 
 | |||
|  |         allowContactSwitch.addEventListener('change', function() { | |||
|  |             if (this.checked) { | |||
|  |                 forbidLabel.classList.remove('active'); | |||
|  |                 allowLabel.classList.add('active'); | |||
|  |             } else { | |||
|  |                 forbidLabel.classList.add('active'); | |||
|  |                 allowLabel.classList.remove('active'); | |||
|  |             } | |||
|  |         }); | |||
|  | 
 | |||
|  |         // 图片上传处理 | |||
|  |         document.querySelectorAll('.image-upload-btn').forEach(btn => { | |||
|  |             btn.addEventListener('click', function() { | |||
|  |                 const input = document.createElement('input'); | |||
|  |                 input.type = 'file'; | |||
|  |                 input.accept = 'image/*'; | |||
|  |                 input.onchange = function(e) { | |||
|  |                     const file = e.target.files[0]; | |||
|  |                     if (file) { | |||
|  |                         const reader = new FileReader(); | |||
|  |                         reader.onload = function(e) { | |||
|  |                             console.log('图片已选择:', file.name); | |||
|  |                             // 这里可以添加图片预览逻辑 | |||
|  |                         }; | |||
|  |                         reader.readAsDataURL(file); | |||
|  |                     } | |||
|  |                 }; | |||
|  |                 input.click(); | |||
|  |             }); | |||
|  |         }); | |||
|  | 
 | |||
|  |         // 删除图片 | |||
|  |         document.querySelectorAll('.image-delete').forEach(btn => { | |||
|  |             btn.addEventListener('click', function(e) { | |||
|  |                 e.stopPropagation(); | |||
|  |                 if (confirm('确定要删除这张图片吗?')) { | |||
|  |                     this.parentElement.remove(); | |||
|  |                 } | |||
|  |             }); | |||
|  |         }); | |||
|  | 
 | |||
|  |         // 提交表单 | |||
|  |         function handleSubmit() { | |||
|  |             // 收集表单数据 | |||
|  |             const formData = { | |||
|  |                 autoOpen: autoOpenSwitch.checked, | |||
|  |                 allowContact: allowContactSwitch.checked, | |||
|  |                 deliveryTime: document.querySelector('.number-input input').value | |||
|  |             }; | |||
|  | 
 | |||
|  |             console.log('提交表单数据:', formData); | |||
|  |             alert('表单提交成功!'); | |||
|  |         } | |||
|  | 
 | |||
|  |         // 初始化开关状态 | |||
|  |         window.addEventListener('DOMContentLoaded', function() { | |||
|  |             // 自动营业默认关闭 | |||
|  |             autoOpenSwitch.checked = false; | |||
|  |             closeLabel.classList.add('active'); | |||
|  |             openLabel.classList.remove('active'); | |||
|  | 
 | |||
|  |             // 摊主入驻默认允许 | |||
|  |             allowContactSwitch.checked = true; | |||
|  |             forbidLabel.classList.remove('active'); | |||
|  |             allowLabel.classList.add('active'); | |||
|  |         }); | |||
|  |     </script> | |||
|  | </body> | |||
|  | </html> |