| 
      1
     | 
    
      <!DOCTYPE html>
 
     | 
  
  
    | 
      2
     | 
    
      <html lang="zh-CN">
 
     | 
  
  
    | 
      3
     | 
    
      <head>
 
     | 
  
  
    | 
      4
     | 
    
          <meta charset="UTF-8">
 
     | 
  
  
    | 
      5
     | 
    
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
 
     | 
  
  
    | 
      6
     | 
    
          <title>智能招标文件生成系统</title>
 
     | 
  
  
    | 
      7
     | 
    
          <style>
 
     | 
  
  
    | 
      8
     | 
    
              * {
     | 
  
  
    | 
      9
     | 
    
                  margin: 0;
 
     | 
  
  
    | 
      10
     | 
    
                  padding: 0;
 
     | 
  
  
    | 
      11
     | 
    
                  box-sizing: border-box;
 
     | 
  
  
    | 
      12
     | 
    
                  font-family: 'Microsoft YaHei', sans-serif;
 
     | 
  
  
    | 
      13
     | 
    
              }
 
     | 
  
  
    | 
      14
     | 
    
      
 
     | 
  
  
    | 
      15
     | 
    
              body {
     | 
  
  
    | 
      16
     | 
    
                  background-color: #f8f9fa;
 
     | 
  
  
    | 
      17
     | 
    
                  height: 100vh;
 
     | 
  
  
    | 
      18
     | 
    
                  display: flex;
 
     | 
  
  
    | 
      19
     | 
    
              }
 
     | 
  
  
    | 
      20
     | 
    
      
 
     | 
  
  
    | 
      21
     | 
    
              /* 左侧导航区 */
 
     | 
  
  
    | 
      22
     | 
    
              .sidebar {
     | 
  
  
    | 
      23
     | 
    
                  width: 280px;
 
     | 
  
  
    | 
      24
     | 
    
                  background: #fff;
 
     | 
  
  
    | 
      25
     | 
    
                  border-right: 1px solid #eaeaea;
 
     | 
  
  
    | 
      26
     | 
    
                  padding: 20px;
 
     | 
  
  
    | 
      27
     | 
    
                  height: 100%;
 
     | 
  
  
    | 
      28
     | 
    
                  overflow-y: auto;
 
     | 
  
  
    | 
      29
     | 
    
              }
 
     | 
  
  
    | 
      30
     | 
    
      
 
     | 
  
  
    | 
      31
     | 
    
              .nav-title {
     | 
  
  
    | 
      32
     | 
    
                  font-size: 16px;
 
     | 
  
  
    | 
      33
     | 
    
                  color: #666;
 
     | 
  
  
    | 
      34
     | 
    
                  margin: 20px 0;
 
     | 
  
  
    | 
      35
     | 
    
                  padding-left: 10px;
 
     | 
  
  
    | 
      36
     | 
    
                  border-left: 3px solid #1890ff;
 
     | 
  
  
    | 
      37
     | 
    
              }
 
     | 
  
  
    | 
      38
     | 
    
      
 
     | 
  
  
    | 
      39
     | 
    
              .nav-item {
     | 
  
  
    | 
      40
     | 
    
                  display: flex;
 
     | 
  
  
    | 
      41
     | 
    
                  align-items: center;
 
     | 
  
  
    | 
      42
     | 
    
                  padding: 12px;
 
     | 
  
  
    | 
      43
     | 
    
                  margin: 8px 0;
 
     | 
  
  
    | 
      44
     | 
    
                  border-radius: 6px;
 
     | 
  
  
    | 
      45
     | 
    
                  cursor: pointer;
 
     | 
  
  
    | 
      46
     | 
    
                  transition: all 0.3s;
 
     | 
  
  
    | 
      47
     | 
    
              }
 
     | 
  
  
    | 
      48
     | 
    
      
 
     | 
  
  
    | 
      49
     | 
    
              .nav-item.active {
     | 
  
  
    | 
      50
     | 
    
                  background: #e6f7ff;
 
     | 
  
  
    | 
      51
     | 
    
                  color: #1890ff;
 
     | 
  
  
    | 
      52
     | 
    
              }
 
     | 
  
  
    | 
      53
     | 
    
      
 
     | 
  
  
    | 
      54
     | 
    
              .nav-item:hover {
     | 
  
  
    | 
      55
     | 
    
                  background: #f5f5f5;
 
     | 
  
  
    | 
      56
     | 
    
              }
 
     | 
  
  
    | 
      57
     | 
    
      
 
     | 
  
  
    | 
      58
     | 
    
              /* 主内容区 */
 
     | 
  
  
    | 
      59
     | 
    
              .main-content {
     | 
  
  
    | 
      60
     | 
    
                  flex: 1;
 
     | 
  
  
    | 
      61
     | 
    
                  padding: 24px;
 
     | 
  
  
    | 
      62
     | 
    
                  overflow-y: auto;
 
     | 
  
  
    | 
      63
     | 
    
                  display: flex;
 
     | 
  
  
    | 
      64
     | 
    
                  flex-direction: column;
 
     | 
  
  
    | 
      65
     | 
    
              }
 
     | 
  
  
    | 
      66
     | 
    
      
 
     | 
  
  
    | 
      67
     | 
    
              /* 顶部工具栏 */
 
     | 
  
  
    | 
      68
     | 
    
              .toolbar {
     | 
  
  
    | 
      69
     | 
    
                  display: flex;
 
     | 
  
  
    | 
      70
     | 
    
                  justify-content: space-between;
 
     | 
  
  
    | 
      71
     | 
    
                  margin-bottom: 24px;
 
     | 
  
  
    | 
      72
     | 
    
                  padding: 12px;
 
     | 
  
  
    | 
      73
     | 
    
                  background: #fff;
 
     | 
  
  
    | 
      74
     | 
    
                  border-radius: 8px;
 
     | 
  
  
    | 
      75
     | 
    
                  box-shadow: 0 2px 8px rgba(0,0,0,0.05);
 
     | 
  
  
    | 
      76
     | 
    
              }
 
     | 
  
  
    | 
      77
     | 
    
      
 
     | 
  
  
    | 
      78
     | 
    
              .toolbar-group {
     | 
  
  
    | 
      79
     | 
    
                  display: flex;
 
     | 
  
  
    | 
      80
     | 
    
                  gap: 12px;
 
     | 
  
  
    | 
      81
     | 
    
              }
 
     | 
  
  
    | 
      82
     | 
    
      
 
     | 
  
  
    | 
      83
     | 
    
              /* 文件上传区 */
 
     | 
  
  
    | 
      84
     | 
    
              .upload-section {
     | 
  
  
    | 
      85
     | 
    
                  background: #fff;
 
     | 
  
  
    | 
      86
     | 
    
                  border-radius: 8px;
 
     | 
  
  
    | 
      87
     | 
    
                  padding: 24px;
 
     | 
  
  
    | 
      88
     | 
    
                  margin-bottom: 24px;
 
     | 
  
  
    | 
      89
     | 
    
                  box-shadow: 0 2px 8px rgba(0,0,0,0.05);
 
     | 
  
  
    | 
      90
     | 
    
              }
 
     | 
  
  
    | 
      91
     | 
    
      
 
     | 
  
  
    | 
      92
     | 
    
              .upload-card {
     | 
  
  
    | 
      93
     | 
    
                  border: 2px dashed #eaeaea;
 
     | 
  
  
    | 
      94
     | 
    
                  border-radius: 8px;
 
     | 
  
  
    | 
      95
     | 
    
                  padding: 40px;
 
     | 
  
  
    | 
      96
     | 
    
                  text-align: center;
 
     | 
  
  
    | 
      97
     | 
    
                  transition: all 0.3s;
 
     | 
  
  
    | 
      98
     | 
    
                  cursor: pointer;
 
     | 
  
  
    | 
      99
     | 
    
              }
 
     | 
  
  
    | 
      100
     | 
    
      
 
     | 
  
  
    | 
      101
     | 
    
              .upload-card:hover {
     | 
  
  
    | 
      102
     | 
    
                  border-color: #1890ff;
 
     | 
  
  
    | 
      103
     | 
    
                  background: #f8fbff;
 
     | 
  
  
    | 
      104
     | 
    
              }
 
     | 
  
  
    | 
      105
     | 
    
      
 
     | 
  
  
    | 
      106
     | 
    
              /* 模板选择区 */
 
     | 
  
  
    | 
      107
     | 
    
              .template-section {
     | 
  
  
    | 
      108
     | 
    
                  background: #fff;
 
     | 
  
  
    | 
      109
     | 
    
                  border-radius: 8px;
 
     | 
  
  
    | 
      110
     | 
    
                  padding: 24px;
 
     | 
  
  
    | 
      111
     | 
    
                  margin-bottom: 24px;
 
     | 
  
  
    | 
      112
     | 
    
                  box-shadow: 0 2px 8px rgba(0,0,0,0.05);
 
     | 
  
  
    | 
      113
     | 
    
              }
 
     | 
  
  
    | 
      114
     | 
    
      
 
     | 
  
  
    | 
      115
     | 
    
              .template-grid {
     | 
  
  
    | 
      116
     | 
    
                  display: grid;
 
     | 
  
  
    | 
      117
     | 
    
                  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
 
     | 
  
  
    | 
      118
     | 
    
                  gap: 16px;
 
     | 
  
  
    | 
      119
     | 
    
                  margin-top: 16px;
 
     | 
  
  
    | 
      120
     | 
    
              }
 
     | 
  
  
    | 
      121
     | 
    
      
 
     | 
  
  
    | 
      122
     | 
    
              .template-card {
     | 
  
  
    | 
      123
     | 
    
                  border: 1px solid #eaeaea;
 
     | 
  
  
    | 
      124
     | 
    
                  border-radius: 8px;
 
     | 
  
  
    | 
      125
     | 
    
                  padding: 16px;
 
     | 
  
  
    | 
      126
     | 
    
                  text-align: center;
 
     | 
  
  
    | 
      127
     | 
    
                  transition: all 0.3s;
 
     | 
  
  
    | 
      128
     | 
    
                  cursor: pointer;
 
     | 
  
  
    | 
      129
     | 
    
              }
 
     | 
  
  
    | 
      130
     | 
    
      
 
     | 
  
  
    | 
      131
     | 
    
              .template-card:hover {
     | 
  
  
    | 
      132
     | 
    
                  border-color: #1890ff;
 
     | 
  
  
    | 
      133
     | 
    
                  box-shadow: 0 4px 12px rgba(24, 144, 255, 0.2);
 
     | 
  
  
    | 
      134
     | 
    
              }
 
     | 
  
  
    | 
      135
     | 
    
      
 
     | 
  
  
    | 
      136
     | 
    
              .template-icon {
     | 
  
  
    | 
      137
     | 
    
                  font-size: 32px;
 
     | 
  
  
    | 
      138
     | 
    
                  margin-bottom: 8px;
 
     | 
  
  
    | 
      139
     | 
    
                  color: #1890ff;
 
     | 
  
  
    | 
      140
     | 
    
              }
 
     | 
  
  
    | 
      141
     | 
    
      
 
     | 
  
  
    | 
      142
     | 
    
              /* 生成配置区 */
 
     | 
  
  
    | 
      143
     | 
    
              .config-section {
     | 
  
  
    | 
      144
     | 
    
                  background: #fff;
 
     | 
  
  
    | 
      145
     | 
    
                  border-radius: 8px;
 
     | 
  
  
    | 
      146
     | 
    
                  padding: 24px;
 
     | 
  
  
    | 
      147
     | 
    
                  margin-bottom: 24px;
 
     | 
  
  
    | 
      148
     | 
    
                  box-shadow: 0 2px 8px rgba(0,0,0,0.05);
 
     | 
  
  
    | 
      149
     | 
    
              }
 
     | 
  
  
    | 
      150
     | 
    
      
 
     | 
  
  
    | 
      151
     | 
    
              .config-form {
     | 
  
  
    | 
      152
     | 
    
                  display: grid;
 
     | 
  
  
    | 
      153
     | 
    
                  grid-template-columns: 1fr 1fr;
 
     | 
  
  
    | 
      154
     | 
    
                  gap: 16px;
 
     | 
  
  
    | 
      155
     | 
    
                  margin-top: 16px;
 
     | 
  
  
    | 
      156
     | 
    
              }
 
     | 
  
  
    | 
      157
     | 
    
      
 
     | 
  
  
    | 
      158
     | 
    
              .form-group {
     | 
  
  
    | 
      159
     | 
    
                  margin-bottom: 16px;
 
     | 
  
  
    | 
      160
     | 
    
              }
 
     | 
  
  
    | 
      161
     | 
    
      
 
     | 
  
  
    | 
      162
     | 
    
              .form-label {
     | 
  
  
    | 
      163
     | 
    
                  display: block;
 
     | 
  
  
    | 
      164
     | 
    
                  margin-bottom: 8px;
 
     | 
  
  
    | 
      165
     | 
    
                  font-weight: bold;
 
     | 
  
  
    | 
      166
     | 
    
                  color: #333;
 
     | 
  
  
    | 
      167
     | 
    
              }
 
     | 
  
  
    | 
      168
     | 
    
      
 
     | 
  
  
    | 
      169
     | 
    
              .form-control {
     | 
  
  
    | 
      170
     | 
    
                  width: 100%;
 
     | 
  
  
    | 
      171
     | 
    
                  padding: 10px;
 
     | 
  
  
    | 
      172
     | 
    
                  border: 1px solid #d9d9d9;
 
     | 
  
  
    | 
      173
     | 
    
                  border-radius: 4px;
 
     | 
  
  
    | 
      174
     | 
    
                  transition: all 0.3s;
 
     | 
  
  
    | 
      175
     | 
    
              }
 
     | 
  
  
    | 
      176
     | 
    
      
 
     | 
  
  
    | 
      177
     | 
    
              .form-control:focus {
     | 
  
  
    | 
      178
     | 
    
                  border-color: #1890ff;
 
     | 
  
  
    | 
      179
     | 
    
                  outline: none;
 
     | 
  
  
    | 
      180
     | 
    
                  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
 
     | 
  
  
    | 
      181
     | 
    
              }
 
     | 
  
  
    | 
      182
     | 
    
      
 
     | 
  
  
    | 
      183
     | 
    
              /* 预览区 */
 
     | 
  
  
    | 
      184
     | 
    
              .preview-section {
     | 
  
  
    | 
      185
     | 
    
                  background: #fff;
 
     | 
  
  
    | 
      186
     | 
    
                  border-radius: 8px;
 
     | 
  
  
    | 
      187
     | 
    
                  padding: 24px;
 
     | 
  
  
    | 
      188
     | 
    
                  margin-bottom: 24px;
 
     | 
  
  
    | 
      189
     | 
    
                  box-shadow: 0 2px 8px rgba(0,0,0,0.05);
 
     | 
  
  
    | 
      190
     | 
    
                  flex: 1;
 
     | 
  
  
    | 
      191
     | 
    
                  display: flex;
 
     | 
  
  
    | 
      192
     | 
    
                  flex-direction: column;
 
     | 
  
  
    | 
      193
     | 
    
              }
 
     | 
  
  
    | 
      194
     | 
    
      
 
     | 
  
  
    | 
      195
     | 
    
              .preview-header {
     | 
  
  
    | 
      196
     | 
    
                  display: flex;
 
     | 
  
  
    | 
      197
     | 
    
                  justify-content: space-between;
 
     | 
  
  
    | 
      198
     | 
    
                  margin-bottom: 16px;
 
     | 
  
  
    | 
      199
     | 
    
              }
 
     | 
  
  
    | 
      200
     | 
    
      
 
     | 
  
  
    | 
      201
     | 
    
              .preview-content {
     | 
  
  
    | 
      202
     | 
    
                  flex: 1;
 
     | 
  
  
    | 
      203
     | 
    
                  border: 1px solid #eaeaea;
 
     | 
  
  
    | 
      204
     | 
    
                  border-radius: 8px;
 
     | 
  
  
    | 
      205
     | 
    
                  padding: 16px;
 
     | 
  
  
    | 
      206
     | 
    
                  overflow-y: auto;
 
     | 
  
  
    | 
      207
     | 
    
                  background: #fafafa;
 
     | 
  
  
    | 
      208
     | 
    
              }
 
     | 
  
  
    | 
      209
     | 
    
      
 
     | 
  
  
    | 
      210
     | 
    
              /* 操作按钮 */
 
     | 
  
  
    | 
      211
     | 
    
              .btn {
     | 
  
  
    | 
      212
     | 
    
                  padding: 8px 16px;
 
     | 
  
  
    | 
      213
     | 
    
                  border: none;
 
     | 
  
  
    | 
      214
     | 
    
                  border-radius: 6px;
 
     | 
  
  
    | 
      215
     | 
    
                  cursor: pointer;
 
     | 
  
  
    | 
      216
     | 
    
                  transition: all 0.3s;
 
     | 
  
  
    | 
      217
     | 
    
                  display: inline-flex;
 
     | 
  
  
    | 
      218
     | 
    
                  align-items: center;
 
     | 
  
  
    | 
      219
     | 
    
                  gap: 8px;
 
     | 
  
  
    | 
      220
     | 
    
              }
 
     | 
  
  
    | 
      221
     | 
    
      
 
     | 
  
  
    | 
      222
     | 
    
              .btn-primary {
     | 
  
  
    | 
      223
     | 
    
                  background: #1890ff;
 
     | 
  
  
    | 
      224
     | 
    
                  color: white;
 
     | 
  
  
    | 
      225
     | 
    
              }
 
     | 
  
  
    | 
      226
     | 
    
      
 
     | 
  
  
    | 
      227
     | 
    
              .btn-primary:hover {
     | 
  
  
    | 
      228
     | 
    
                  background: #40a9ff;
 
     | 
  
  
    | 
      229
     | 
    
              }
 
     | 
  
  
    | 
      230
     | 
    
      
 
     | 
  
  
    | 
      231
     | 
    
              .btn-secondary {
     | 
  
  
    | 
      232
     | 
    
                  background: #f5f5f5;
 
     | 
  
  
    | 
      233
     | 
    
                  color: #333;
 
     | 
  
  
    | 
      234
     | 
    
                  border: 1px solid #d9d9d9;
 
     | 
  
  
    | 
      235
     | 
    
              }
 
     | 
  
  
    | 
      236
     | 
    
      
 
     | 
  
  
    | 
      237
     | 
    
              .btn-secondary:hover {
     | 
  
  
    | 
      238
     | 
    
                  background: #e6e6e6;
 
     | 
  
  
    | 
      239
     | 
    
              }
 
     | 
  
  
    | 
      240
     | 
    
      
 
     | 
  
  
    | 
      241
     | 
    
              /* 状态指示器 */
 
     | 
  
  
    | 
      242
     | 
    
              .status-indicator {
     | 
  
  
    | 
      243
     | 
    
                  display: inline-block;
 
     | 
  
  
    | 
      244
     | 
    
                  padding: 4px 8px;
 
     | 
  
  
    | 
      245
     | 
    
                  border-radius: 4px;
 
     | 
  
  
    | 
      246
     | 
    
                  font-size: 12px;
 
     | 
  
  
    | 
      247
     | 
    
                  font-weight: bold;
 
     | 
  
  
    | 
      248
     | 
    
              }
 
     | 
  
  
    | 
      249
     | 
    
      
 
     | 
  
  
    | 
      250
     | 
    
              .status-processing {
     | 
  
  
    | 
      251
     | 
    
                  background: #e6f7ff;
 
     | 
  
  
    | 
      252
     | 
    
                  color: #1890ff;
 
     | 
  
  
    | 
      253
     | 
    
              }
 
     | 
  
  
    | 
      254
     | 
    
      
 
     | 
  
  
    | 
      255
     | 
    
              .status-success {
     | 
  
  
    | 
      256
     | 
    
                  background: #f6ffed;
 
     | 
  
  
    | 
      257
     | 
    
                  color: #52c41a;
 
     | 
  
  
    | 
      258
     | 
    
              }
 
     | 
  
  
    | 
      259
     | 
    
      
 
     | 
  
  
    | 
      260
     | 
    
              .status-error {
     | 
  
  
    | 
      261
     | 
    
                  background: #fff2f0;
 
     | 
  
  
    | 
      262
     | 
    
                  color: #f5222d;
 
     | 
  
  
    | 
      263
     | 
    
              }
 
     | 
  
  
    | 
      264
     | 
    
      
 
     | 
  
  
    | 
      265
     | 
    
              /* 响应式调整 */
 
     | 
  
  
    | 
      266
     | 
    
              @media (max-width: 768px) {
     | 
  
  
    | 
      267
     | 
    
                  .config-form {
     | 
  
  
    | 
      268
     | 
    
                      grid-template-columns: 1fr;
 
     | 
  
  
    | 
      269
     | 
    
                  }
 
     | 
  
  
    | 
      270
     | 
    
              }
 
     | 
  
  
    | 
      271
     | 
    
          </style>
 
     | 
  
  
    | 
      272
     | 
    
      </head>
 
     | 
  
  
    | 
      273
     | 
    
      <body>
 
     | 
  
  
    | 
      274
     | 
    
          <!-- 左侧导航 -->
 
     | 
  
  
    | 
      275
     | 
    
          <div class="sidebar">
 
     | 
  
  
    | 
      276
     | 
    
              <div class="nav-title">招标文件管理</div>
 
     | 
  
  
    | 
      277
     | 
    
              <div class="nav-item active">📁 文件生成</div>
 
     | 
  
  
    | 
      278
     | 
    
              <div class="nav-item">📚 模板管理</div>
 
     | 
  
  
    | 
      279
     | 
    
              <div class="nav-item">⚙️ 规则配置</div>
 
     | 
  
  
    | 
      280
     | 
    
      
 
     | 
  
  
    | 
      281
     | 
    
              <div class="nav-title">知识库</div>
 
     | 
  
  
    | 
      282
     | 
    
              <div class="nav-item">📦 资质要求库</div>
 
     | 
  
  
    | 
      283
     | 
    
              <div class="nav-item">📝 技术规范库</div>
 
     | 
  
  
    | 
      284
     | 
    
              <div class="nav-item">📊 评标办法库</div>
 
     | 
  
  
    | 
      285
     | 
    
              <div class="nav-item">📑 合同条款库</div>
 
     | 
  
  
    | 
      286
     | 
    
      
 
     | 
  
  
    | 
      287
     | 
    
              <div class="nav-title">历史记录</div>
 
     | 
  
  
    | 
      288
     | 
    
              <div class="nav-item">🗃️ 招标文件</div>
 
     | 
  
  
    | 
      289
     | 
    
              <div class="nav-item">🗂️ 投标文件</div>
 
     | 
  
  
    | 
      290
     | 
    
              <div class="nav-item">📋 资格预审</div>
 
     | 
  
  
    | 
      291
     | 
    
          </div>
 
     | 
  
  
    | 
      292
     | 
    
      
 
     | 
  
  
    | 
      293
     | 
    
          <!-- 主内容区 -->
 
     | 
  
  
    | 
      294
     | 
    
          <div class="main-content">
 
     | 
  
  
    | 
      295
     | 
    
              <!-- 顶部工具栏 -->
 
     | 
  
  
    | 
      296
     | 
    
              <div class="toolbar">
 
     | 
  
  
    | 
      297
     | 
    
                  <div class="toolbar-group">
 
     | 
  
  
    | 
      298
     | 
    
                      <button class="btn btn-primary">
 
     | 
  
  
    | 
      299
     | 
    
                          <span>🔄</span> 刷新
 
     | 
  
  
    | 
      300
     | 
    
                      </button>
 
     | 
  
  
    | 
      301
     | 
    
                      <button class="btn btn-secondary">
 
     | 
  
  
    | 
      302
     | 
    
                          <span>📥</span> 导出
 
     | 
  
  
    | 
      303
     | 
    
                      </button>
 
     | 
  
  
    | 
      304
     | 
    
                  </div>
 
     | 
  
  
    | 
      305
     | 
    
                  <div class="toolbar-group">
 
     | 
  
  
    | 
      306
     | 
    
                      <span class="status-indicator status-processing">生成中...</span>
 
     | 
  
  
    | 
      307
     | 
    
                  </div>
 
     | 
  
  
    | 
      308
     | 
    
              </div>
 
     | 
  
  
    | 
      309
     | 
    
      
 
     | 
  
  
    | 
      310
     | 
    
              <!-- 文件上传区 -->
 
     | 
  
  
    | 
      311
     | 
    
              <div class="upload-section">
 
     | 
  
  
    | 
      312
     | 
    
                  <h2>1. 上传基础资料</h2>
 
     | 
  
  
    | 
      313
     | 
    
                  <div class="upload-card" id="uploadCard">
 
     | 
  
  
    | 
      314
     | 
    
                      <p>拖放文件或 <label style="color:#1890ff;cursor:pointer;">点击上传</label></p>
 
     | 
  
  
    | 
      315
     | 
    
                      <input type="file" id="fileInput" hidden multiple>
 
     | 
  
  
    | 
      316
     | 
    
                      <div class="file-list" id="fileList">
 
     | 
  
  
    | 
      317
     | 
    
                          <p class="text-muted">支持格式:DOCX/XLSX/PDF/图片</p>
 
     | 
  
  
    | 
      318
     | 
    
                      </div>
 
     | 
  
  
    | 
      319
     | 
    
                  </div>
 
     | 
  
  
    | 
      320
     | 
    
              </div>
 
     | 
  
  
    | 
      321
     | 
    
      
 
     | 
  
  
    | 
      322
     | 
    
              <!-- 模板选择区 -->
 
     | 
  
  
    | 
      323
     | 
    
              <div class="template-section">
 
     | 
  
  
    | 
      324
     | 
    
                  <h2>2. 选择招标模板</h2>
 
     | 
  
  
    | 
      325
     | 
    
                  <div class="template-grid">
 
     | 
  
  
    | 
      326
     | 
    
                      <div class="template-card">
 
     | 
  
  
    | 
      327
     | 
    
                          <div class="template-icon">📑</div>
 
     | 
  
  
    | 
      328
     | 
    
                          <h3>工程招标</h3>
 
     | 
  
  
    | 
      329
     | 
    
                          <p>适用于建设工程项目</p>
 
     | 
  
  
    | 
      330
     | 
    
                      </div>
 
     | 
  
  
    | 
      331
     | 
    
                      <div class="template-card">
 
     | 
  
  
    | 
      332
     | 
    
                          <div class="template-icon">🛒</div>
 
     | 
  
  
    | 
      333
     | 
    
                          <h3>货物采购</h3>
 
     | 
  
  
    | 
      334
     | 
    
                          <p>适用于设备材料采购</p>
 
     | 
  
  
    | 
      335
     | 
    
                      </div>
 
     | 
  
  
    | 
      336
     | 
    
                      <div class="template-card">
 
     | 
  
  
    | 
      337
     | 
    
                          <div class="template-icon">👨💼</div>
 
     | 
  
  
    | 
      338
     | 
    
                          <h3>服务招标</h3>
 
     | 
  
  
    | 
      339
     | 
    
                          <p>适用于服务类项目</p>
 
     | 
  
  
    | 
      340
     | 
    
                      </div>
 
     | 
  
  
    | 
      341
     | 
    
                      <div class="template-card">
 
     | 
  
  
    | 
      342
     | 
    
                          <div class="template-icon">🏗️</div>
 
     | 
  
  
    | 
      343
     | 
    
                          <h3>EPC总承包</h3>
 
     | 
  
  
    | 
      344
     | 
    
                          <p>适用于设计施工一体化</p>
 
     | 
  
  
    | 
      345
     | 
    
                      </div>
 
     | 
  
  
    | 
      346
     | 
    
                  </div>
 
     | 
  
  
    | 
      347
     | 
    
              </div>
 
     | 
  
  
    | 
      348
     | 
    
      
 
     | 
  
  
    | 
      349
     | 
    
              <!-- 生成配置区 -->
 
     | 
  
  
    | 
      350
     | 
    
              <div class="config-section">
 
     | 
  
  
    | 
      351
     | 
    
                  <h2>3. 配置生成选项</h2>
 
     | 
  
  
    | 
      352
     | 
    
                  <div class="config-form">
 
     | 
  
  
    | 
      353
     | 
    
                      <div class="form-group">
 
     | 
  
  
    | 
      354
     | 
    
                          <label class="form-label">项目名称</label>
 
     | 
  
  
    | 
      355
     | 
    
                          <input type="text" class="form-control" placeholder="请输入项目名称">
 
     | 
  
  
    | 
      356
     | 
    
                      </div>
 
     | 
  
  
    | 
      357
     | 
    
                      <div class="form-group">
 
     | 
  
  
    | 
      358
     | 
    
                          <label class="form-label">招标编号</label>
 
     | 
  
  
    | 
      359
     | 
    
                          <input type="text" class="form-control" placeholder="自动生成或手动输入">
 
     | 
  
  
    | 
      360
     | 
    
                      </div>
 
     | 
  
  
    | 
      361
     | 
    
                      <div class="form-group">
 
     | 
  
  
    | 
      362
     | 
    
                          <label class="form-label">项目类型</label>
 
     | 
  
  
    | 
      363
     | 
    
                          <select class="form-control">
 
     | 
  
  
    | 
      364
     | 
    
                              <option>公开招标</option>
 
     | 
  
  
    | 
      365
     | 
    
                              <option>邀请招标</option>
 
     | 
  
  
    | 
      366
     | 
    
                              <option>竞争性谈判</option>
 
     | 
  
  
    | 
      367
     | 
    
                              <option>单一来源采购</option>
 
     | 
  
  
    | 
      368
     | 
    
                          </select>
 
     | 
  
  
    | 
      369
     | 
    
                      </div>
 
     | 
  
  
    | 
      370
     | 
    
                      <div class="form-group">
 
     | 
  
  
    | 
      371
     | 
    
                          <label class="form-label">预算金额</label>
 
     | 
  
  
    | 
      372
     | 
    
                          <input type="text" class="form-control" placeholder="请输入金额(万元)">
 
     | 
  
  
    | 
      373
     | 
    
                      </div>
 
     | 
  
  
    | 
      374
     | 
    
                      <div class="form-group">
 
     | 
  
  
    | 
      375
     | 
    
                          <label class="form-label">投标截止时间</label>
 
     | 
  
  
    | 
      376
     | 
    
                          <input type="datetime-local" class="form-control">
 
     | 
  
  
    | 
      377
     | 
    
                      </div>
 
     | 
  
  
    | 
      378
     | 
    
                      <div class="form-group">
 
     | 
  
  
    | 
      379
     | 
    
                          <label class="form-label">开标时间</label>
 
     | 
  
  
    | 
      380
     | 
    
                          <input type="datetime-local" class="form-control">
 
     | 
  
  
    | 
      381
     | 
    
                      </div>
 
     | 
  
  
    | 
      382
     | 
    
                      <div class="form-group">
 
     | 
  
  
    | 
      383
     | 
    
                          <label class="form-label">评标办法</label>
 
     | 
  
  
    | 
      384
     | 
    
                          <select class="form-control">
 
     | 
  
  
    | 
      385
     | 
    
                              <option>综合评估法</option>
 
     | 
  
  
    | 
      386
     | 
    
                              <option>最低价中标法</option>
 
     | 
  
  
    | 
      387
     | 
    
                              <option>性价比法</option>
 
     | 
  
  
    | 
      388
     | 
    
                          </select>
 
     | 
  
  
    | 
      389
     | 
    
                      </div>
 
     | 
  
  
    | 
      390
     | 
    
                      <div class="form-group">
 
     | 
  
  
    | 
      391
     | 
    
                          <label class="form-label">文件格式</label>
 
     | 
  
  
    | 
      392
     | 
    
                          <select class="form-control">
 
     | 
  
  
    | 
      393
     | 
    
                              <option>HTML(网页格式)</option>
 
     | 
  
  
    | 
      394
     | 
    
                              <option>PDF(便携文档)</option>
 
     | 
  
  
    | 
      395
     | 
    
                              <option>DOCX(Word文档)</option>
 
     | 
  
  
    | 
      396
     | 
    
                          </select>
 
     | 
  
  
    | 
      397
     | 
    
                      </div>
 
     | 
  
  
    | 
      398
     | 
    
                  </div>
 
     | 
  
  
    | 
      399
     | 
    
              </div>
 
     | 
  
  
    | 
      400
     | 
    
      
 
     | 
  
  
    | 
      401
     | 
    
              <!-- 预览区 -->
 
     | 
  
  
    | 
      402
     | 
    
              <div class="preview-section">
 
     | 
  
  
    | 
      403
     | 
    
                  <div class="preview-header">
 
     | 
  
  
    | 
      404
     | 
    
                      <h2>4. 预览与生成</h2>
 
     | 
  
  
    | 
      405
     | 
    
                      <button class="btn btn-primary" id="generateBtn">
 
     | 
  
  
    | 
      406
     | 
    
                          <span>✨</span> 生成招标文件
 
     | 
  
  
    | 
      407
     | 
    
                      </button>
 
     | 
  
  
    | 
      408
     | 
    
                  </div>
 
     | 
  
  
    | 
      409
     | 
    
                  <div class="preview-content">
 
     | 
  
  
    | 
      410
     | 
    
                      <div style="text-align: center; padding: 40px; color: #999;">
 
     | 
  
  
    | 
      411
     | 
    
                          <p style="font-size: 18px; margin-bottom: 16px;">👆 点击"生成招标文件"按钮</p>
 
     | 
  
  
    | 
      412
     | 
    
                          <p>系统将基于您上传的资料和配置选项,自动生成完整的招标文件</p>
 
     | 
  
  
    | 
      413
     | 
    
                      </div>
 
     | 
  
  
    | 
      414
     | 
    
                      <!-- 这里将动态加载生成的招标文件内容 -->
 
     | 
  
  
    | 
      415
     | 
    
                  </div>
 
     | 
  
  
    | 
      416
     | 
    
              </div>
 
     | 
  
  
    | 
      417
     | 
    
          </div>
 
     | 
  
  
    | 
      418
     | 
    
      
 
     | 
  
  
    | 
      419
     | 
    
          <script>
 
     | 
  
  
    | 
      420
     | 
    
              // 文件上传交互
 
     | 
  
  
    | 
      421
     | 
    
              const uploadCard = document.getElementById('uploadCard');
     | 
  
  
    | 
      422
     | 
    
              const fileInput = document.getElementById('fileInput');
     | 
  
  
    | 
      423
     | 
    
              const fileList = document.getElementById('fileList');
     | 
  
  
    | 
      424
     | 
    
              const generateBtn = document.getElementById('generateBtn');
     | 
  
  
    | 
      425
     | 
    
      
 
     | 
  
  
    | 
      426
     | 
    
              uploadCard.addEventListener('click', () => fileInput.click());
     | 
  
  
    | 
      427
     | 
    
              
 
     | 
  
  
    | 
      428
     | 
    
              fileInput.addEventListener('change', (e) => {
     | 
  
  
    | 
      429
     | 
    
                  const files = Array.from(e.target.files);
 
     | 
  
  
    | 
      430
     | 
    
                  
 
     | 
  
  
    | 
      431
     | 
    
                  fileList.innerHTML = files.map(file => `
 
     | 
  
  
    | 
      432
     | 
    
                      <div style="margin:8px 0;padding:8px;background:#f8f9fa;border-radius:4px;display:flex;align-items:center;gap:8px;">
 
     | 
  
  
    | 
      433
     | 
    
                          <span>📄</span>
 
     | 
  
  
    | 
      434
     | 
    
                          <div style="flex:1;">
 
     | 
  
  
    | 
      435
     | 
    
                              <div>${file.name}</div>
     | 
  
  
    | 
      436
     | 
    
                              <div style="font-size:12px;color:#999;">${(file.size/1024/1024).toFixed(2)}MB</div>
     | 
  
  
    | 
      437
     | 
    
                          </div>
 
     | 
  
  
    | 
      438
     | 
    
                          <span style="color:#f5222d;cursor:pointer;">×</span>
 
     | 
  
  
    | 
      439
     | 
    
                      </div>
 
     | 
  
  
    | 
      440
     | 
    
                  `).join('');
     | 
  
  
    | 
      441
     | 
    
              });
 
     | 
  
  
    | 
      442
     | 
    
      
 
     | 
  
  
    | 
      443
     | 
    
              // 生成按钮点击事件
 
     | 
  
  
    | 
      444
     | 
    
              generateBtn.addEventListener('click', function() {
     | 
  
  
    | 
      445
     | 
    
                  this.innerHTML = '<span>⏳</span> 生成中...';
 
     | 
  
  
    | 
      446
     | 
    
                  this.disabled = true;
 
     | 
  
  
    | 
      447
     | 
    
                  
 
     | 
  
  
    | 
      448
     | 
    
                  // 模拟生成过程
 
     | 
  
  
    | 
      449
     | 
    
                  setTimeout(() => {
     | 
  
  
    | 
      450
     | 
    
                      this.innerHTML = '<span>✅</span> 生成完成';
 
     | 
  
  
    | 
      451
     | 
    
                      
 
     | 
  
  
    | 
      452
     | 
    
                      // 这里应该替换为实际生成的招标文件内容
 
     | 
  
  
    | 
      453
     | 
    
                      document.querySelector('.preview-content').innerHTML = `
     | 
  
  
    | 
      454
     | 
    
                          <h1 style="text-align:center;margin-bottom:24px;">XX项目招标文件</h1>
 
     | 
  
  
    | 
      455
     | 
    
                          <div style="text-align:center;margin-bottom:32px;">
 
     | 
  
  
    | 
      456
     | 
    
                              <p style="color:#666;">招标编号:ZB-2023-001</p>
 
     | 
  
  
    | 
      457
     | 
    
                          </div>
 
     | 
  
  
    | 
      458
     | 
    
                          
 
     | 
  
  
    | 
      459
     | 
    
                          <h2 style="border-left:4px solid #1890ff;padding-left:8px;margin:24px 0 16px;">第一章 招标公告</h2>
 
     | 
  
  
    | 
      460
     | 
    
                          
 
     | 
  
  
    | 
      461
     | 
    
                          <h3 style="margin:16px 0 8px;">1.1 项目概况</h3>
 
     | 
  
  
    | 
      462
     | 
    
                          <p style="line-height:1.8;margin-bottom:12px;">
 
     | 
  
  
    | 
      463
     | 
    
                              根据《中华人民共和国招标投标法》及相关法律法规,现对XX项目进行公开招标,择优选定中标人。
 
     | 
  
  
    | 
      464
     | 
    
                          </p>
 
     | 
  
  
    | 
      465
     | 
    
                          
 
     | 
  
  
    | 
      466
     | 
    
                          <table style="width:100%;border-collapse:collapse;margin:16px 0;">
 
     | 
  
  
    | 
      467
     | 
    
                              <tr>
 
     | 
  
  
    | 
      468
     | 
    
                                  <td style="padding:8px;border:1px solid #eaeaea;width:30%;">项目名称</td>
 
     | 
  
  
    | 
      469
     | 
    
                                  <td style="padding:8px;border:1px solid #eaeaea;">XX项目</td>
 
     | 
  
  
    | 
      470
     | 
    
                              </tr>
 
     | 
  
  
    | 
      471
     | 
    
                              <tr>
 
     | 
  
  
    | 
      472
     | 
    
                                  <td style="padding:8px;border:1px solid #eaeaea;">招标人</td>
 
     | 
  
  
    | 
      473
     | 
    
                                  <td style="padding:8px;border:1px solid #eaeaea;">XX公司</td>
 
     | 
  
  
    | 
      474
     | 
    
                              </tr>
 
     | 
  
  
    | 
      475
     | 
    
                              <tr>
 
     | 
  
  
    | 
      476
     | 
    
                                  <td style="padding:8px;border:1px solid #eaeaea;">项目地点</td>
 
     | 
  
  
    | 
      477
     | 
    
                                  <td style="padding:8px;border:1px solid #eaeaea;">XX省XX市</td>
 
     | 
  
  
    | 
      478
     | 
    
                              </tr>
 
     | 
  
  
    | 
      479
     | 
    
                          </table>
 
     | 
  
  
    | 
      480
     | 
    
                          
 
     | 
  
  
    | 
      481
     | 
    
                          <div style="margin-top:32px;display:flex;justify-content:space-between;">
 
     | 
  
  
    | 
      482
     | 
    
                              <div style="text-align:center;width:200px;">
 
     | 
  
  
    | 
      483
     | 
    
                                  <div style="border-top:1px solid #333;margin:40px 0 8px;padding-top:8px;"></div>
 
     | 
  
  
    | 
      484
     | 
    
                                  <p>招标人:(盖章)</p>
 
     | 
  
  
    | 
      485
     | 
    
                              </div>
 
     | 
  
  
    | 
      486
     | 
    
                              <div style="text-align:center;width:200px;">
 
     | 
  
  
    | 
      487
     | 
    
                                  <div style="border-top:1px solid #333;margin:40px 0 8px;padding-top:8px;"></div>
 
     | 
  
  
    | 
      488
     | 
    
                                  <p>日期:</p>
 
     | 
  
  
    | 
      489
     | 
    
                              </div>
 
     | 
  
  
    | 
      490
     | 
    
                          </div>
 
     | 
  
  
    | 
      491
     | 
    
                      `;
 
     | 
  
  
    | 
      492
     | 
    
                      
 
     | 
  
  
    | 
      493
     | 
    
                      // 显示导出选项
 
     | 
  
  
    | 
      494
     | 
    
                      const toolbar = document.querySelector('.toolbar .toolbar-group:last-child');
     | 
  
  
    | 
      495
     | 
    
                      toolbar.innerHTML = `
 
     | 
  
  
    | 
      496
     | 
    
                          <button class="btn btn-primary">
 
     | 
  
  
    | 
      497
     | 
    
                              <span>📥</span> 下载HTML
 
     | 
  
  
    | 
      498
     | 
    
                          </button>
 
     | 
  
  
    | 
      499
     | 
    
                          <button class="btn btn-secondary">
 
     | 
  
  
    | 
      500
     | 
    
                              <span>📄</span> 导出PDF
 
     | 
  
  
    | 
      501
     | 
    
                          </button>
 
     | 
  
  
    | 
      502
     | 
    
                          <button class="btn btn-secondary">
 
     | 
  
  
    | 
      503
     | 
    
                              <span>📝</span> 导出Word
 
     | 
  
  
    | 
      504
     | 
    
                          </button>
 
     | 
  
  
    | 
      505
     | 
    
                      `;
 
     | 
  
  
    | 
      506
     | 
    
                      
 
     | 
  
  
    | 
      507
     | 
    
                      // 更新状态指示器
 
     | 
  
  
    | 
      508
     | 
    
                      document.querySelector('.status-indicator').className = 'status-indicator status-success';
     | 
  
  
    | 
      509
     | 
    
                      document.querySelector('.status-indicator').textContent = '生成完成';
     | 
  
  
    | 
      510
     | 
    
                      
 
     | 
  
  
    | 
      511
     | 
    
                  }, 2000);
 
     | 
  
  
    | 
      512
     | 
    
              });
 
     | 
  
  
    | 
      513
     | 
    
          </script>
 
     | 
  
  
    | 
      514
     | 
    
      </body>
 
     | 
  
  
    | 
      515
     | 
    
      </html>
 
     |