Initial commit (code only without large binaries)

This commit is contained in:
robin
2026-02-15 18:58:44 +08:00
commit 35df75498f
9442 changed files with 1495866 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
<first-menu>
<menu-item href="/finance/bills" code="index">账单</menu-item>
</first-menu>

View File

@@ -0,0 +1,142 @@
{$layout}
{$template "menu"}
<table class="ui table selectable definition">
<tr>
<td class="title">账单编号</td>
<td>{{bill.code}}</td>
</tr>
<tr>
<td>结算周期</td>
<td>{{bill.pricePeriodName}}</td>
</tr>
<tr>
<td>月份</td>
<td>{{bill.month}}</td>
</tr>
<tr v-if="bill.pricePeriod == 'daily'">
<td>日期</td>
<td>
<span v-if="bill.pricePeriod == 'daily'">
<span v-if="bill.dayFrom == bill.dayTo">{{bill.dayFrom}}</span>
<span v-else>{{bill.dayFrom}} - {{bill.dayTo}}</span>
</span>
</td>
</tr>
<tr>
<td>项目</td>
<td>{{bill.typeName}}</td>
</tr>
<tr>
<td>金额</td>
<td>¥{{bill.amount}}元
<span v-if="!bill.canPay" class="small grey">&nbsp;(预估)</span>
</td>
</tr>
<tr>
<td>描述</td>
<td>{{bill.description}}</td>
</tr>
<tr>
<td>是否已支付</td>
<td>
<span class="green" v-if="bill.isPaid">Y</span>
<span v-else class="disabled">N</span>
</td>
</tr>
<tr>
<td>操作</td>
<td>
<span v-if="bill.isPaid" class="disabled" title="已支付,无需重复支付">已支付</span>
<span v-else>
<a href="" v-if="bill.canPay" @click.prevent="payBill(bill.id)">支付</a>
<span v-else class="disabled"></span>
</span>
</td>
</tr>
</table>
<div v-if="serverBills.length > 0">
<h4>网站/套餐子账单</h4>
<table class="ui table selectable">
<thead>
<tr>
<th>网站</th>
<th>套餐</th>
<th>流量</th>
<th>带宽</th>
<th>费用</th>
<th>更新时间</th>
</tr>
</thead>
<tr v-for="serverBill in serverBills">
<td>
<span v-if="serverBill.server != null && serverBill.server.id > 0">{{serverBill.server.name}}</span>
<span v-else class="disabled">-</span>
</td>
<td>
<span v-if="serverBill.plan.id > 0">
{{serverBill.plan.name}}
<span class="small grey" v-if="serverBill.plan.priceType == 'traffic'">(按流量计费)</span>
<span class="small grey" v-if="serverBill.plan.priceType == 'bandwidth'">(按带宽计费)</span>
</span>
<span v-else>默认
<span v-if="serverBill.priceType == 'traffic'" class="small grey">(按流量计费)</span>
<span v-if="serverBill.priceType == 'bandwidth'" class="small grey">(按带宽计费)</span>
<span v-if="serverBill.priceType.length == 0" class="small grey">(按区域流量计费)</span>
</span>
</td>
<td>{{serverBill.traffic}}</td>
<td>{{serverBill.bandwidthPercentileSize}}<span class="grey small">{{serverBill.bandwidthPercentile}}th</span></td>
<td>{{serverBill.amount}}元</td>
<td>{{serverBill.createdTime}}</td>
</tr>
</table>
<div v-html="page"></div>
</div>
<div v-if="trafficBills.length > 0">
<h4>流量子账单</h4>
<table class="ui table selectable celled">
<thead>
<tr>
<th>区域</th>
<th>计费方式</th>
<th>计费带宽</th>
<th>带宽百分位</th>
<th>计费流量</th>
<th>流量包使用</th>
<th>单位价格</th>
<th>总价格</th>
</tr>
</thead>
<tr v-for="trafficBill in trafficBills">
<td>
<span v-if="trafficBill.region.id > 0">{{trafficBill.region.name}}</span>
<span v-else class="disabled">[未分区]</span>
</td>
<td>{{trafficBill.priceTypeName}}</td>
<td>
<span v-if="trafficBill.priceType == 'bandwidth'">{{trafficBill.bandwidthMB}}</span>
<span v-else class="disabled">-</span>
</td>
<td>
<span v-if="trafficBill.priceType == 'bandwidth'">{{trafficBill.bandwidthPercentile}}th</span>
<span v-else class="disabled">-</span>
</td>
<td>
<span v-if="trafficBill.priceType == 'traffic'">{{trafficBill.trafficGB}}</span>
<span v-else class="disabled">-</span>
</td>
<td>
<span v-if="trafficBill.priceType == 'traffic' && trafficBill.trafficPackageGB != '0B'">{{trafficBill.trafficPackageGB}}</span>
<span v-else class="disabled">-</span>
</td>
<td>
<span v-if="trafficBill.priceType == 'bandwidth'">{{trafficBill.pricePerUnit}}元/Mbps</span>
<span v-if="trafficBill.priceType == 'traffic'">{{trafficBill.pricePerUnit}}元/GiB</span>
</td>
<td>{{trafficBill.amount}}元</td>
</tr>
</table>
</div>

View File

@@ -0,0 +1,15 @@
Tea.context(function () {
this.payBill = function (billId) {
teaweb.confirm("确定要支付此账单吗? ", function () {
this.$post(".pay")
.params({
billId: billId
})
.success(function () {
teaweb.success("支付成功", function () {
teaweb.reload()
})
})
})
}
})

View File

@@ -0,0 +1,68 @@
{$layout}
<div v-if="bills.length > 0" style="margin-top: 1em">
<p>未支付账单总额:{{unpaidAmount}}元,账号总余额为:{{accountTotal}}元。<a href="/finance/charge"><span class="red" v-if="unpaidAmount > accountTotal">您的余额已不足以支付账单,请及时充值。</span></a></p>
<div class="margin"></div>
</div>
<form class="ui form" method="get" action="/finance/bills">
<div class="ui fields inline">
<div class="ui field">
<select class="ui dropdown selectable" name="paidFlag" v-model="paidFlag">
<option value="-1">[支付状态]</option>
<option value="0">未支付</option>
<option value="1">已支付</option>
</select>
</div>
<div class="ui field">
<button class="ui button" type="submit">搜索</button>
</div>
</div>
</form>
<p class="comment" v-if="bills.length == 0">暂时还没有账单。</p>
<table class="ui table selectable celled" v-if="bills.length > 0">
<thead>
<tr>
<th>账单编号</th>
<th style="width: 6em">结算周期</th>
<th style="width: 6em">月份</th>
<th style="width: 8em">日期</th>
<th style="width: 8em">项目</th>
<th style="width: 8em">金额</th>
<th style="width: 6em">已支付</th>
<th class="one op">操作</th>
</tr>
</thead>
<tr v-for="bill in bills">
<td>
<a :href="'/finance/bills/bill?code=' + bill.code">{{bill.code}}</a>
<div v-if="bill.isOverdue">
<span class="ui red basic small">逾期</span>
</div>
</td>
<td>{{bill.pricePeriodName}}</td>
<td>{{bill.month}}</td>
<td>
<span v-if="bill.pricePeriod == 'daily'">
<span v-if="bill.dayFrom == bill.dayTo">{{bill.dayFrom}}</span>
<span v-else>{{bill.dayFrom}} - {{bill.dayTo}}</span>
</span>
</td>
<td>{{bill.typeName}}</td>
<td><span :class="{disabled: bill.amount == 0}">¥{{bill.amount}}元</span>
<span class="grey small" v-if="!bill.canPay"><br/>预估</span>
</td>
<td>
<span class="green" v-if="bill.isPaid">Y</span>
<span v-else class="disabled">N</span>
</td>
<td>
<a href="" v-if="!bill.isPaid && bill.canPay" @click.prevent="payBill(bill.id)">支付</a>
<span v-if="bill.isPaid" class="disabled" title="已支付,无需重复支付">支付</span>
</td>
</tr>
</table>
<div class="page" v-html="page"></div>

View File

@@ -0,0 +1,15 @@
Tea.context(function () {
this.payBill = function (billId) {
teaweb.confirm("确定要支付此账单吗? ", function () {
this.$post(".pay")
.params({
billId: billId
})
.success(function () {
teaweb.success("支付成功", function () {
teaweb.reload()
})
})
})
}
})