zhangjq
2026-01-27 6f51f667ae7b13dca029045c221d0b1722cf98df
public/pages/admin/advertisementSummary/advertisementSummary.html
@@ -7,118 +7,160 @@
                </h5>
            </div>
            <div class="ibox-content">
                <!-- 查询条件区域 -->
                <div class="row">
                    <div class="col-sm-3">
                        <div class="form-group">
                            <label for="contractNameLike">合同名称</label>
                            <input type="text" class="form-control" id="contractNameLike"
                                   v-model="advertisementSummaryInfo.conditions.contractNameLike"
                                   placeholder="请输入合同名称">
                        </div>
                    </div>
                    <div class="col-sm-3">
                        <div class="form-group">
                            <label for="contractCode">合同编号</label>
                            <input type="text" class="form-control" id="contractCode"
                                   v-model="advertisementSummaryInfo.conditions.contractCode"
                                   placeholder="请输入合同编号">
                        </div>
                    </div>
                    <div class="col-sm-3">
                        <div class="form-group">
                            <label for="contractType">合同类型</label>
                            <select class="form-control" id="contractType"
                                    v-model="advertisementSummaryInfo.conditions.contractType">
                                <option value="">全部</option>
                                <option v-for="(item, index) in advertisementSummaryInfo.contractTypes" :key="index"
                                        v-bind:value="item.contractType">
                                    {{item.contractTypeName}}
                                </option>
                            </select>
                        </div>
                    </div>
                    <div class="col-sm-3">
                        <div class="form-group">
                            <label for="state">合同状态</label>
                            <select class="form-control" id="state"
                                    v-model="advertisementSummaryInfo.conditions.state">
                                <option value="">全部</option>
                                <option value="1000">草稿</option>
                                <option value="2000">生效</option>
                                <option value="3000">过期</option>
                                <option value="4000">终止</option>
                            </select>
                    <div class="col-sm-12">
                        <div class="ibox">
                            <div class="ibox-title">
                                <h5>查询条件</h5>
                                <div class="ibox-tools">
                                    <a class="collapse-link">
                                        <i class="fa fa-chevron-down"></i>
                                    </a>
                                </div>
                            </div>
                            <div class="ibox-content">
                                <div class="row">
                                    <div class="col-sm-3">
                                        <div class="form-group">
                                            <label for="contractNameLike">合同名称</label>
                                            <input type="text" class="form-control" id="contractNameLike"
                                                   v-model="advertisementSummaryInfo.conditions.contractNameLike"
                                                   placeholder="请输入合同名称">
                                        </div>
                                    </div>
                                    <div class="col-sm-3">
                                        <div class="form-group">
                                            <label for="contractCode">合同编号</label>
                                            <input type="text" class="form-control" id="contractCode"
                                                   v-model="advertisementSummaryInfo.conditions.contractCode"
                                                   placeholder="请输入合同编号">
                                        </div>
                                    </div>
                                    <div class="col-sm-3">
                                        <div class="form-group">
                                            <label for="contractType">合同类型</label>
                                            <select class="form-control" id="contractType"
                                                    v-model="advertisementSummaryInfo.conditions.contractType">
                                                <option value="">全部</option>
                                                <option v-for="(item, index) in advertisementSummaryInfo.contractTypes" :key="index"
                                                        v-bind:value="item.contractType">
                                                    {{item.contractTypeName}}
                                                </option>
                                            </select>
                                        </div>
                                    </div>
                                    <div class="col-sm-3">
                                        <div class="form-group">
                                            <label for="state">合同状态</label>
                                            <select class="form-control" id="state"
                                                    v-model="advertisementSummaryInfo.conditions.state">
                                                <option value="">全部</option>
                                                <option value="1000">草稿</option>
                                                <option value="2000">生效</option>
                                                <option value="3000">过期</option>
                                                <option value="4000">终止</option>
                                            </select>
                                        </div>
                                    </div>
                                </div>
                                <div class="row">
                                    <div class="col-sm-12 text-right">
                                        <button type="button" class="btn btn-primary" v-on:click="_queryContractMethod()">
                                            <i class="fa fa-search"></i>
                                            查询
                                        </button>
                                        <button type="button" class="btn btn-primary" v-on:click="_resetContractMethod()">
                                            <i class="fa fa-repeat"></i>
                                            重置
                                        </button>
                                        <button type="button" class="btn btn-primary" v-on:click="_openAddContractModal()">
                                            <i class="fa fa-plus"></i>
                                            添加合同
                                        </button>
                                        <button type="button" class="btn btn-primary" v-on:click="_openImportContractModal()">
                                            <i class="fa fa-upload"></i>
                                            导入数据
                                        </button>
                                        <button type="button" class="btn btn-primary" v-on:click="_exportContractData()" style="margin-left: 10px;">
                                            <i class="fa fa-download"></i>
                                            导出
                                        </button>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <!-- 数据表格区域 -->
                <div class="row">
                    <div class="col-sm-12 text-right">
                        <button type="button" class="btn btn-primary btn-md" v-on:click="_queryContractMethod()">
                            <i class="fa fa-search"></i>
                            查询
                        </button>
                        <button type="button" class="btn btn-primary btn-md" v-on:click="_resetContractMethod()">
                            <i class="fa fa-repeat"></i>
                            重置
                        </button>
                        <button type="button" class="btn btn-primary btn-md" v-on:click="_openAddContractModal()">
                            <i class="fa fa-plus"></i>
                            添加合同
                        </button>
                        <button type="button" class="btn btn-primary btn-md" v-on:click="_openImportContractModal()">
                            <i class="fa fa-upload"></i>
                            导入数据
                        </button>
                    <div class="col-sm-12">
                        <table class="footable table table-stripped toggle-arrow-tiny" data-page-size="15">
                            <thead>
                                <tr>
                                    <th class="text-center">序号</th>
                                    <th class="text-center">合同编号</th>
                                    <th class="text-center">合同名称</th>
                                    <th class="text-center">合同类型</th>
                                    <th class="text-center">合同状态</th>
                                    <th class="text-center">物业公司名称</th>
                                    <th class="text-center">合同年限(年)</th>
                                    <th class="text-center">是否存档</th>
                                    <th class="text-center">合同提醒日期</th>
                                    <th class="text-center">操作</th>
                                </tr>
                            </thead>
                            <tbody>
                                <tr v-for="(contract, index) in advertisementSummaryInfo.contracts" :key="contract.contractId">
                                    <td class="text-center">{{index + 1}}</td>
                                    <td class="text-center">{{contract.contractCode || '-'}}</td>
                                    <td class="text-center">{{contract.contractName || '-'}}</td>
                                    <td class="text-center">{{contract.contractTypeName || '-'}}</td>
                                    <td class="text-center">
                                        <span v-if="contract.state === '1000'" class="label label-info">草稿</span>
                                        <span v-else-if="contract.state === '2000'" class="label label-success">生效</span>
                                        <span v-else-if="contract.state === '3000'" class="label label-warning">过期</span>
                                        <span v-else-if="contract.state === '4000'" class="label label-danger">终止</span>
                                        <span v-else class="label label-default">未知</span>
                                    </td>
                                    <td class="text-center">{{contract.propertyCompany || '-'}}</td>
                                    <td class="text-center">{{contract.contractTerm || '-'}}</td>
                                    <td class="text-center">
                                        <span v-if="contract.isArchived === '0'" class="label label-info">未存档</span>
                                        <span v-else-if="contract.isArchived === '1'" class="label label-success">已存档</span>
                                        <span v-else class="label label-default">未知</span>
                                    </td>
                                    <td class="text-center">{{contract.contractReminderDate || '-'}}</td>
                                    <td class="text-center">
                                        <button type="button" class="btn btn-xs btn-info"
                                                v-on:click="_openEditContractModel(contract)">编辑</button>
                                        <button type="button" class="btn btn-xs btn-danger"
                                                v-on:click="_openDeleteContractModel(contract)">删除</button>
                                    </td>
                                </tr>
                                <tr v-if="advertisementSummaryInfo.contracts.length == 0">
                                    <td colspan="10" style="text-align: center; color: #999;">
                                        暂无数据
                                    </td>
                                </tr>
                            </tbody>
                            <tfoot>
                                <tr>
                                    <td colspan="10">
                                        <ul class="pagination float-right"></ul>
                                    </td>
                                </tr>
                            </tfoot>
                        </table>
                        <!-- 分页区域 -->
                        <div class="row margin-top-xs">
                            <div class="col-sm-12 float-right">
                                <vc:create path="frame/pagination"></vc:create>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="margin-top">
            <div>
                <div class="hc-table-div">
                    <table class="table table-bordered" data-page-size="15">
                        <thead>
                            <tr>
                                <th class="text-center">序号</th>
                                <th class="text-center">合同编号</th>
                                <th class="text-center">合同名称</th>
                                <th class="text-center">合同类型</th>
                                <th class="text-center">合同状态</th>
                                <th class="text-center">操作</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr v-for="(contract, index) in advertisementSummaryInfo.contracts" :key="contract.contractId">
                                <td class="text-center">{{index + 1}}</td>
                                <td class="text-center">{{contract.contractCode}}</td>
                                <td class="text-center">{{contract.contractName}}</td>
                                <td class="text-center">{{contract.contractTypeName}}</td>
                                <td class="text-center">
                                    <span v-if="contract.state === '1000'" class="label label-info">草稿</span>
                                    <span v-else-if="contract.state === '2000'" class="label label-success">生效</span>
                                    <span v-else-if="contract.state === '3000'" class="label label-warning">过期</span>
                                    <span v-else-if="contract.state === '4000'" class="label label-danger">终止</span>
                                    <span v-else class="label label-default">未知</span>
                                </td>
                                <td class="text-center">
                                    <button type="button" class="btn btn-xs btn-info"
                                            v-on:click="_openEditContractModel(contract)">编辑</button>
                                    <button type="button" class="btn btn-xs btn-danger"
                                            v-on:click="_openDeleteContractModel(contract)">删除</button>
                                </td>
                            </tr>
                            <tr v-if="advertisementSummaryInfo.contracts.length == 0">
                                <td colspan="6" style="text-align: center; color: #999;">
                                    暂无数据
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            </div>
            <div class="row margin-top-xs">
                <div class="col-sm-12 float-right">
                    <vc:create path="frame/pagination"></vc:create>
                </div>
            </div>
        </div>
@@ -182,4 +224,304 @@
            </div>
        </div>
    </div>
    <!-- 广告合同信息管理区域 -->
    <div class="margin-top">
        <div class="ibox">
            <div class="ibox-title">
                <h5>
                    广告合同信息管理
                </h5>
            </div>
            <div class="ibox-content">
                <!-- 广告合同信息查询条件区域 -->
                <div class="row">
                    <div class="col-sm-12">
                        <div class="ibox">
                            <div class="ibox-title">
                                <h5>查询条件</h5>
                                <div class="ibox-tools">
                                    <a class="collapse-link">
                                        <i class="fa fa-chevron-down"></i>
                                    </a>
                                </div>
                            </div>
                            <div class="ibox-content">
                                <div class="row">
                                    <div class="col-sm-3">
                                        <div class="form-group">
                                            <label for="adContractId">合同ID</label>
                                            <input type="text" class="form-control" id="adContractId"
                                                   v-model="adContractInfo.conditions.contractId"
                                                   placeholder="请输入合同ID">
                                        </div>
                                    </div>
                                    <div class="col-sm-3">
                                        <div class="form-group">
                                            <label for="adType">广告类型</label>
                                            <select class="form-control" id="adType"
                                                    v-model="adContractInfo.conditions.adType"
                                                    @change="adContractInfo.conditions.subType = ''">
                                                <option value="">全部</option>
                                                <option v-for="(value, key) in AD_TYPES" :key="key" :value="key">
                                                    {{key}}
                                                </option>
                                            </select>
                                        </div>
                                    </div>
                                    <div class="col-sm-3">
                                        <div class="form-group">
                                            <label for="subType">广告子类型</label>
                                            <select class="form-control" id="subType"
                                                    v-model="adContractInfo.conditions.subType">
                                                <option value="">全部</option>
                                                <option v-for="(subType, index) in _getSubTypes(adContractInfo.conditions.adType)" :key="index"
                                                        :value="subType">
                                                    {{subType}}
                                                </option>
                                            </select>
                                        </div>
                                    </div>
                                    <div class="col-sm-3">
                                        <div class="form-group">
                                            <label for="cooperationForm">合作内容形式</label>
                                            <input type="text" class="form-control" id="cooperationForm"
                                                   v-model="adContractInfo.conditions.cooperationForm"
                                                   placeholder="请输入合作内容形式">
                                        </div>
                                    </div>
                                </div>
                                <div class="row">
                                    <div class="col-sm-12 text-right">
                                        <button type="button" class="btn btn-primary" v-on:click="_queryAdContractInfo()">
                                            <i class="fa fa-search"></i>
                                            查询
                                        </button>
                                        <button type="button" class="btn btn-primary" v-on:click="_resetAdContractQuery()">
                                            <i class="fa fa-repeat"></i>
                                            重置
                                        </button>
                                        <button type="button" class="btn btn-primary" v-on:click="_openAddAdContractModal()">
                                            <i class="fa fa-plus"></i>
                                            添加广告合同信息
                                        </button>
                                        <button type="button" class="btn btn-primary" v-on:click="_queryAdContractInfoStatistics()" style="margin-left: 10px;">
                                            <i class="fa fa-bar-chart"></i>
                                            统计
                                        </button>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <!-- 广告合同信息数据表格区域 -->
                <div class="row">
                    <div class="col-sm-12">
                        <table class="footable table table-stripped toggle-arrow-tiny" data-page-size="15">
                            <thead>
                                <tr>
                                    <th class="text-center">序号</th>
                                    <th class="text-center">合同ID</th>
                                    <th class="text-center">广告类型</th>
                                    <th class="text-center">广告子类型</th>
                                    <th class="text-center">合作内容形式</th>
                                    <th class="text-center">小区楼栋数/电梯数</th>
                                    <th class="text-center">上线数量</th>
                                    <th class="text-center">设施安装位置</th>
                                    <th class="text-center">操作</th>
                                </tr>
                            </thead>
                            <tbody>
                                <tr v-for="(item, index) in adContractInfo.dataList" :key="item.id">
                                    <td class="text-center">{{index + 1}}</td>
                                    <td class="text-center">{{item.contractId || '-'}}</td>
                                    <td class="text-center">{{item.adType || '-'}}</td>
                                    <td class="text-center">{{item.subType || '-'}}</td>
                                    <td class="text-center">{{item.cooperationForm || '-'}}</td>
                                    <td class="text-center">{{item.buildingElevatorCount || '-'}}</td>
                                    <td class="text-center">{{item.onlineQuantity || '-'}}</td>
                                    <td class="text-center">{{item.facilityLocation || '-'}}</td>
                                    <td class="text-center">
                                        <button type="button" class="btn btn-xs btn-info"
                                                v-on:click="_openEditAdContractModal(item)">编辑</button>
                                        <button type="button" class="btn btn-xs btn-danger"
                                                v-on:click="_deleteAdContractInfo(item.id)">删除</button>
                                    </td>
                                </tr>
                                <tr v-if="adContractInfo.dataList.length == 0">
                                    <td colspan="9" style="text-align: center; color: #999;">
                                        暂无数据
                                    </td>
                                </tr>
                            </tbody>
                            <tfoot>
                                <tr>
                                    <td colspan="9">
                                        <ul class="pagination float-right">
                                            <li class="page-item" :class="{disabled: adContractInfo.page <= 1}">
                                                <a class="page-link" @click="_changeAdContractPage(adContractInfo.page - 1)">上一页</a>
                                            </li>
                                            <li class="page-item active">
                                                <a class="page-link">{{adContractInfo.page}}</a>
                                            </li>
                                            <li class="page-item" :class="{disabled: adContractInfo.page >= Math.ceil(adContractInfo.total / adContractInfo.row)}">
                                                <a class="page-link" @click="_changeAdContractPage(adContractInfo.page + 1)">下一页</a>
                                            </li>
                                        </ul>
                                    </td>
                                </tr>
                            </tfoot>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- 广告合同信息添加/编辑弹窗 -->
    <div class="modal fade" id="adContractInfoModal" tabindex="-1" role="dialog" aria-labelledby="adContractInfoModalLabel" aria-hidden="true">
        <div class="modal-dialog modal-lg" role="document">
            <div class="modal-content">
                <div class="modal-body">
                    <h3 class="m-t-none m-b">
                        {{adContractInfo.isEdit ? '编辑广告合同信息' : '添加广告合同信息'}}
                    </h3>
                    <div class="ibox-content">
                        <div>
                            <div class="form-group row">
                                <label class="col-sm-2 col-form-label">合同ID <span class="text-danger">*</span></label>
                                <div class="col-sm-10">
                                    <input type="text" class="form-control"
                                           v-model="adContractInfo.formData.contractId"
                                           placeholder="请输入合同ID">
                                </div>
                            </div>
                            <div class="form-group row">
                                <label class="col-sm-2 col-form-label">广告类型 <span class="text-danger">*</span></label>
                                <div class="col-sm-10">
                                    <select class="form-control"
                                            v-model="adContractInfo.formData.adType"
                                            @change="adContractInfo.formData.subType = ''">
                                        <option value="">请选择广告类型</option>
                                        <option v-for="(value, key) in AD_TYPES" :key="key" :value="key">
                                            {{key}}
                                        </option>
                                    </select>
                                </div>
                            </div>
                            <div class="form-group row">
                                <label class="col-sm-2 col-form-label">广告子类型 <span class="text-danger">*</span></label>
                                <div class="col-sm-10">
                                    <select class="form-control"
                                            v-model="adContractInfo.formData.subType">
                                        <option value="">请选择广告子类型</option>
                                        <option v-for="(subType, index) in _getSubTypes(adContractInfo.formData.adType)" :key="index"
                                                :value="subType">
                                            {{subType}}
                                        </option>
                                    </select>
                                </div>
                            </div>
                            <div class="form-group row">
                                <label class="col-sm-2 col-form-label">合作内容形式 <span class="text-danger">*</span></label>
                                <div class="col-sm-10">
                                    <input type="text" class="form-control"
                                           v-model="adContractInfo.formData.cooperationForm"
                                           placeholder="请输入合作内容形式">
                                </div>
                            </div>
                            <div class="form-group row">
                                <label class="col-sm-2 col-form-label">小区楼栋数/电梯数</label>
                                <div class="col-sm-10">
                                    <input type="text" class="form-control"
                                           v-model="adContractInfo.formData.buildingElevatorCount"
                                           placeholder="请输入小区楼栋数/电梯数">
                                </div>
                            </div>
                            <div class="form-group row">
                                <label class="col-sm-2 col-form-label">上线数量</label>
                                <div class="col-sm-10">
                                    <input type="text" class="form-control"
                                           v-model="adContractInfo.formData.onlineQuantity"
                                           placeholder="请输入上线数量">
                                </div>
                            </div>
                            <div class="form-group row">
                                <label class="col-sm-2 col-form-label">设施安装位置</label>
                                <div class="col-sm-10">
                                    <input type="text" class="form-control"
                                           v-model="adContractInfo.formData.facilityLocation"
                                           placeholder="请输入设施安装位置">
                                </div>
                            </div>
                            <div class="ibox-content">
                                <button class="btn btn-primary float-right" type="button" v-on:click="_saveAdContractInfo()">
                                    <i class="fa fa-check"></i>&nbsp;保存
                                </button>
                                <button type="button" class="btn btn-warning float-right" style="margin-right:20px;" data-dismiss="modal">
                                    <i class="fa fa-close"></i>&nbsp;取消
                                </button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- 广告合同信息统计弹窗 -->
    <div class="modal fade" id="adContractInfoStatisticsModal" tabindex="-1" role="dialog" aria-labelledby="adContractInfoStatisticsModalLabel" aria-hidden="true">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-body">
                    <h3 class="m-t-none m-b">
                        广告合同信息统计
                    </h3>
                    <div class="ibox-content">
                        <div>
                            <div class="form-group row">
                                <label class="col-sm-2 col-form-label">总记录数</label>
                                <div class="col-sm-10">
                                    <input type="text" class="form-control"
                                           :value="adContractInfo.statistics.totalCount"
                                           readonly>
                                </div>
                            </div>
                            <div class="form-group row">
                                <label class="col-sm-2 col-form-label">广告类型统计</label>
                                <div class="col-sm-10">
                                    <div v-for="(count, type) in adContractInfo.statistics.adTypeCount" :key="type" class="mb-2">
                                        <label>{{type}}: </label>
                                        <span>{{count}}条</span>
                                    </div>
                                    <div v-if="Object.keys(adContractInfo.statistics.adTypeCount).length === 0" class="text-muted">
                                        暂无数据
                                    </div>
                                </div>
                            </div>
                            <div class="form-group row">
                                <label class="col-sm-2 col-form-label">广告子类型统计</label>
                                <div class="col-sm-10">
                                    <div v-for="(count, type) in adContractInfo.statistics.subTypeCount" :key="type" class="mb-2">
                                        <label>{{type}}: </label>
                                        <span>{{count}}条</span>
                                    </div>
                                    <div v-if="Object.keys(adContractInfo.statistics.subTypeCount).length === 0" class="text-muted">
                                        暂无数据
                                    </div>
                                </div>
                            </div>
                            <div class="ibox-content">
                                <button type="button" class="btn btn-primary float-right" data-dismiss="modal">
                                    <i class="fa fa-close"></i>&nbsp;关闭
                                </button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>