zhangjq
2026-01-27 6f51f667ae7b13dca029045c221d0b1722cf98df
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
<!DOCTYPE html>
<!--
广告合同信息管理页面
功能:用于管理广告合同信息的增删改查和统计功能
包含:查询、添加、编辑、删除广告合同信息,以及统计功能
-->
<div class="ad-contract-info">
    <!-- 广告合同信息管理面板 -->
    <div class="panel panel-default">
        <div class="panel-heading">
            <h3 class="panel-title">广告合同信息管理</h3>
        </div>
        <div class="panel-body">
            <!-- 查询条件区域 -->
            <div class="search-condition">
                <!-- 合同ID查询条件 -->
                <div class="form-group">
                    <label for="contractId">合同ID:</label>
                    <input type="text" class="form-control" id="contractId" 
                           v-model="adContractInfo.conditions.contractId" 
                           placeholder="请输入合同ID">
                </div>
                
                <!-- 广告类型查询条件 -->
                <div class="form-group">
                    <label for="adType">广告类型:</label>
                    <select class="form-control" id="adType" 
                            v-model="adContractInfo.conditions.adType">
                        <option value="">全部</option>
                        <option v-for="(value, key) in AD_TYPES" :value="key">{{key}}</option>
                    </select>
                </div>
                
                <!-- 广告子类型查询条件 -->
                <div class="form-group">
                    <label for="subType">广告子类型:</label>
                    <select class="form-control" id="subType" 
                            v-model="adContractInfo.conditions.subType">
                        <option value="">全部</option>
                        <option v-if="adContractInfo.conditions.adType" 
                                v-for="subType in AD_TYPES[adContractInfo.conditions.adType].subTypes" 
                                :value="subType">{{subType}}</option>
                    </select>
                </div>
                
                <!-- 操作按钮 -->
                <button type="button" class="btn btn-primary" 
                        v-on:click="_queryAdContractInfo()">查询</button>
                <button type="button" class="btn btn-default" 
                        v-on:click="_resetQuery()">重置</button>
                <button type="button" class="btn btn-success" 
                        v-on:click="_openAddModal()">添加</button>
                <button type="button" class="btn btn-info" 
                        v-on:click="_getAdContractInfoStatistics()">统计</button>
            </div>
            
            <!-- 数据表格区域 -->
            <table class="table table-striped table-bordered">
                <thead>
                    <tr>
                        <th>ID</th>                    <!-- 主键ID -->
                        <th>合同ID</th>                  <!-- 合同唯一标识 -->
                        <th>广告类型</th>                <!-- 广告类型 -->
                        <th>广告子类型</th>              <!-- 广告子类型 -->
                        <th>合作内容形式</th>            <!-- 合作内容形式 -->
                        <th>物业公司名称</th>            <!-- 物业公司名称 -->
                        <th>合同年限(年)</th>            <!-- 合同年限 -->
                        <th>是否存档</th>                <!-- 是否存档 -->
                        <th>合同提醒日期</th>            <!-- 合同提醒日期 -->
                        <th>操作</th>                    <!-- 操作按钮 -->
                    </tr>
                </thead>
                <tbody>
                    <!-- 数据行循环渲染 -->
                    <tr v-for="item in adContractInfo.dataList" :key="item.id">
                        <td>{{item.id}}</td>
                        <td>{{item.contractId}}</td>
                        <td>{{item.adType}}</td>
                        <td>{{item.subType}}</td>
                        <td>{{item.cooperationForm}}</td>
                        <td>{{item.propertyCompany || '-'}}</td>
                        <td>{{item.contractTerm || '-'}}</td>
                        <td>
                            <span v-if="item.isArchived === '0'" class="label label-info">未存档</span>
                            <span v-else-if="item.isArchived === '1'" class="label label-success">已存档</span>
                            <span v-else class="label label-default">未知</span>
                        </td>
                        <td>{{item.contractReminderDate || '-'}}</td>
                        <td>
                            <!-- 编辑按钮 -->
                            <button type="button" class="btn btn-xs btn-info" 
                                    v-on:click="_openEditModal(item)">编辑</button>
                            <!-- 删除按钮 -->
                            <button type="button" class="btn btn-xs btn-danger" 
                                    v-on:click="_deleteAdContractInfo(item.id)">删除</button>
                            <!-- 按合同ID查询按钮 -->
                            <button type="button" class="btn btn-xs btn-default" 
                                    v-on:click="_getAdContractInfoByContractId(item.contractId)">按合同查询</button>
                        </td>
                    </tr>
                    <!-- 无数据提示 -->
                    <tr v-if="adContractInfo.dataList.length === 0">
                        <td colspan="9" class="text-center">暂无数据</td>
                    </tr>
                </tbody>
            </table>
            
            <!-- 分页控件区域 -->
            <div class="pagination" v-if="adContractInfo.dataList.length > 0">
                <span>共 {{adContractInfo.total}} 条记录</span>
                <button class="btn btn-xs" 
                        v-on:click="_changePage(1)" 
                        :disabled="adContractInfo.page === 1">首页</button>
                <button class="btn btn-xs" 
                        v-on:click="_changePage(adContractInfo.page - 1)" 
                        :disabled="adContractInfo.page === 1">上一页</button>
                <span>{{adContractInfo.page}} / {{Math.ceil(adContractInfo.total / adContractInfo.row)}}</span>
                <button class="btn btn-xs" 
                        v-on:click="_changePage(adContractInfo.page + 1)" 
                        :disabled="adContractInfo.page === Math.ceil(adContractInfo.total / adContractInfo.row)">下一页</button>
                <button class="btn btn-xs" 
                        v-on:click="_changePage(Math.ceil(adContractInfo.total / adContractInfo.row))" 
                        :disabled="adContractInfo.page === Math.ceil(adContractInfo.total / adContractInfo.row)">末页</button>
            </div>
        </div>
    </div>
    
    <!-- 添加/编辑弹窗 -->
    <div id="adContractInfoModal" class="modal fade" tabindex="-1" role="dialog">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                    <h4 class="modal-title">{{adContractInfo.isEdit ? '编辑广告合同信息' : '添加广告合同信息'}}</h4>
                </div>
                <div class="modal-body">
                    <form class="form-horizontal">
                        <!-- 合同ID字段 -->
                        <div class="form-group">
                            <label class="col-sm-3 control-label">合同ID:</label>
                            <div class="col-sm-9">
                                <input type="text" class="form-control" 
                                       v-model="adContractInfo.formData.contractId" 
                                       placeholder="请输入合同ID" 
                                       required>
                            </div>
                        </div>
                        
                        <!-- 广告类型字段 -->
                        <div class="form-group">
                            <label class="col-sm-3 control-label">广告类型:</label>
                            <div class="col-sm-9">
                                <select class="form-control" 
                                        v-model="adContractInfo.formData.adType" 
                                        required>
                                    <option value="">请选择广告类型</option>
                                    <option v-for="(value, key) in AD_TYPES" :value="key">{{key}}</option>
                                </select>
                            </div>
                        </div>
                        
                        <!-- 广告子类型字段 -->
                        <div class="form-group">
                            <label class="col-sm-3 control-label">广告子类型:</label>
                            <div class="col-sm-9">
                                <select class="form-control" 
                                        v-model="adContractInfo.formData.subType" 
                                        required>
                                    <option value="">请选择广告子类型</option>
                                    <option v-if="adContractInfo.formData.adType" 
                                            v-for="subType in AD_TYPES[adContractInfo.formData.adType].subTypes" 
                                            :value="subType">{{subType}}</option>
                                </select>
                            </div>
                        </div>
                        
                        <!-- 合作内容形式字段 -->
                        <div class="form-group">
                            <label class="col-sm-3 control-label">合作内容形式:</label>
                            <div class="col-sm-9">
                                <input type="text" class="form-control" 
                                       v-model="adContractInfo.formData.cooperationForm" 
                                       placeholder="请输入合作内容形式" 
                                       required>
                            </div>
                        </div>
                        
                        <!-- 小区楼栋数/电梯数字段 -->
                        <div class="form-group">
                            <label class="col-sm-3 control-label">小区楼栋数/电梯数:</label>
                            <div class="col-sm-9">
                                <input type="text" class="form-control" 
                                       v-model="adContractInfo.formData.buildingElevatorCount" 
                                       placeholder="请输入小区楼栋数/电梯数">
                            </div>
                        </div>
                        
                        <!-- 上线数量字段 -->
                        <div class="form-group">
                            <label class="col-sm-3 control-label">上线数量:</label>
                            <div class="col-sm-9">
                                <input type="text" class="form-control" 
                                       v-model="adContractInfo.formData.onlineQuantity" 
                                       placeholder="请输入上线数量">
                            </div>
                        </div>
                        
                        <!-- 设施安装位置字段 -->
                        <div class="form-group">
                            <label class="col-sm-3 control-label">设施安装位置:</label>
                            <div class="col-sm-9">
                                <input type="text" class="form-control" 
                                       v-model="adContractInfo.formData.facilityLocation" 
                                       placeholder="请输入设施安装位置">
                            </div>
                        </div>
                        
                        <!-- 物业公司名称字段 -->
                        <div class="form-group">
                            <label class="col-sm-3 control-label">物业公司名称:</label>
                            <div class="col-sm-9">
                                <input type="text" class="form-control" 
                                       v-model="adContractInfo.formData.propertyCompany" 
                                       placeholder="请输入物业公司名称">
                            </div>
                        </div>
                        
                        <!-- 合同年限字段 -->
                        <div class="form-group">
                            <label class="col-sm-3 control-label">合同年限:</label>
                            <div class="col-sm-9">
                                <input type="number" class="form-control" 
                                       v-model="adContractInfo.formData.contractTerm" 
                                       placeholder="请输入合同年限(年)" 
                                       min="1">
                            </div>
                        </div>
                        
                        <!-- 是否存档字段 -->
                        <div class="form-group">
                            <label class="col-sm-3 control-label">是否存档:</label>
                            <div class="col-sm-9">
                                <select class="form-control" 
                                        v-model="adContractInfo.formData.isArchived">
                                    <option value="0">未存档</option>
                                    <option value="1">已存档</option>
                                </select>
                            </div>
                        </div>
                        
                        <!-- 合同提醒日期字段 -->
                        <div class="form-group">
                            <label class="col-sm-3 control-label">合同提醒日期:</label>
                            <div class="col-sm-9">
                                <input type="date" class="form-control" 
                                       v-model="adContractInfo.formData.contractReminderDate">
                            </div>
                        </div>
                        
                        <!-- 签约方详细地址字段 -->
                        <div class="form-group">
                            <label class="col-sm-3 control-label">签约方详细地址:</label>
                            <div class="col-sm-9">
                                <input type="text" class="form-control" 
                                       v-model="adContractInfo.formData.signatoryAddress" 
                                       placeholder="请输入签约方详细地址">
                            </div>
                        </div>
                        
                        <!-- 签约方联系邮箱字段 -->
                        <div class="form-group">
                            <label class="col-sm-3 control-label">签约方联系邮箱:</label>
                            <div class="col-sm-9">
                                <input type="email" class="form-control" 
                                       v-model="adContractInfo.formData.contactEmail" 
                                       placeholder="请输入签约方联系邮箱">
                            </div>
                        </div>
                        
                        <!-- 签约方联系微信字段 -->
                        <div class="form-group">
                            <label class="col-sm-3 control-label">签约方联系微信:</label>
                            <div class="col-sm-9">
                                <input type="text" class="form-control" 
                                       v-model="adContractInfo.formData.contactWechat" 
                                       placeholder="请输入签约方联系微信">
                            </div>
                        </div>
                        
                        <!-- 合同备注信息字段 -->
                        <div class="form-group">
                            <label class="col-sm-3 control-label">合同备注信息:</label>
                            <div class="col-sm-9">
                                <textarea class="form-control" 
                                          v-model="adContractInfo.formData.remarks" 
                                          placeholder="请输入合同备注信息" 
                                          rows="3"></textarea>
                            </div>
                        </div>
                    </form>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
                    <button type="button" class="btn btn-primary" 
                            v-on:click="_saveAdContractInfo">保存</button>
                </div>
            </div>
        </div>
    </div>
    
    <!-- 统计结果弹窗 -->
    <div id="adContractInfoStatisticsModal" class="modal fade" tabindex="-1" role="dialog">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                    <h4 class="modal-title">广告合同信息统计</h4>
                </div>
                <div class="modal-body">
                    <!-- 总数量统计 -->
                    <div class="form-group">
                        <label class="col-sm-3 control-label">总记录数:</label>
                        <div class="col-sm-9">
                            <span class="form-control-static">{{adContractInfo.statistics.totalCount}}</span>
                        </div>
                    </div>
                    
                    <!-- 广告类型统计 -->
                    <div class="form-group">
                        <label class="col-sm-3 control-label">广告类型分布:</label>
                        <div class="col-sm-9">
                            <ul class="list-unstyled">
                                <li v-for="(count, type) in adContractInfo.statistics.adTypeCount">
                                    {{type}}: {{count}} 条
                                </li>
                                <li v-if="Object.keys(adContractInfo.statistics.adTypeCount).length === 0">
                                    暂无数据
                                </li>
                            </ul>
                        </div>
                    </div>
                    
                    <!-- 广告子类型统计 -->
                    <div class="form-group">
                        <label class="col-sm-3 control-label">广告子类型分布:</label>
                        <div class="col-sm-9">
                            <ul class="list-unstyled">
                                <li v-for="(count, subType) in adContractInfo.statistics.subTypeCount">
                                    {{subType}}: {{count}} 条
                                </li>
                                <li v-if="Object.keys(adContractInfo.statistics.subTypeCount).length === 0">
                                    暂无数据
                                </li>
                            </ul>
                        </div>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
                </div>
            </div>
        </div>
    </div>
</div>