requirements-confirm-card-alternative.html 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <!-- 备选方案:美观的卡片式布局 -->
  2. <div class="materials-section alternative-layout">
  3. <!-- 文本输入区域 - 独立一行 -->
  4. <div class="text-upload-section">
  5. <div class="upload-item text-item">
  6. <h5>文本描述</h5>
  7. <form [formGroup]="materialUploadForm" (ngSubmit)="onTextSubmit()">
  8. <textarea
  9. formControlName="textContent"
  10. placeholder="请描述您的装修需求,如:希望温馨的暖木色调,适合亲子家庭,需要瑜伽区收纳..."
  11. rows="4">
  12. </textarea>
  13. <button type="submit" class="btn-primary btn-sm" [disabled]="!materialUploadForm.get('textContent')?.value">
  14. 解析文本
  15. </button>
  16. </form>
  17. </div>
  18. </div>
  19. <!-- 参考图片和CAD图纸 - 美观卡片式并排布局 -->
  20. <div class="file-upload-cards">
  21. <!-- 参考图片上传卡片 -->
  22. <div class="upload-card image-card">
  23. <div class="card-header">
  24. <div class="card-icon image-icon">
  25. <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  26. <rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect>
  27. <circle cx="8.5" cy="8.5" r="1.5"></circle>
  28. <polyline points="21,15 16,10 5,21"></polyline>
  29. </svg>
  30. </div>
  31. <h5>参考图片</h5>
  32. </div>
  33. <div class="card-body">
  34. <div class="file-upload-zone" (click)="imageInput.click()">
  35. <div class="upload-content">
  36. <div class="upload-icon">
  37. <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
  38. <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
  39. <polyline points="7,10 12,15 17,10"></polyline>
  40. <line x1="12" y1="15" x2="12" y2="3"></line>
  41. </svg>
  42. </div>
  43. <p>点击上传参考图片</p>
  44. <span class="hint">支持多张图片,自动分析色调和材质</span>
  45. </div>
  46. </div>
  47. <input #imageInput type="file" multiple accept="image/*" (change)="onFileSelected($event, 'image')" style="display: none;">
  48. </div>
  49. </div>
  50. <!-- CAD图纸上传卡片 -->
  51. <div class="upload-card cad-card">
  52. <div class="card-header">
  53. <div class="card-icon cad-icon">
  54. <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  55. <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path>
  56. <polyline points="14,2 14,8 20,8"></polyline>
  57. <line x1="16" y1="13" x2="8" y2="13"></line>
  58. <line x1="16" y1="17" x2="8" y2="17"></line>
  59. </svg>
  60. </div>
  61. <h5>CAD图纸</h5>
  62. </div>
  63. <div class="card-body">
  64. <div class="file-upload-zone" (click)="cadInput.click()">
  65. <div class="upload-content">
  66. <div class="upload-icon">
  67. <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
  68. <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
  69. <polyline points="7,10 12,15 17,10"></polyline>
  70. <line x1="12" y1="15" x2="12" y2="3"></line>
  71. </svg>
  72. </div>
  73. <p>点击上传CAD图纸</p>
  74. <span class="hint">自动识别结构和空间尺寸</span>
  75. </div>
  76. </div>
  77. <input #cadInput type="file" accept=".dwg,.dxf,.pdf" (change)="onFileSelected($event, 'cad')" style="display: none;">
  78. </div>
  79. </div>
  80. </div>
  81. </div>