活动和列表

This commit is contained in:
wanyongkang
2020-11-09 11:02:50 +08:00
parent 18c1865d77
commit 26744eae20
9 changed files with 821 additions and 153 deletions

View File

@@ -52,6 +52,36 @@ namespace Home.Controllers
var ret = await m_ProductRouteService.Query(exp).OrderBy(m=>m.Sort).ToListAsync();
var products = await m_ProductService.Query(m=>m.OnLine == 1).OrderBy(m=>m.Sort).ToListAsync();
ViewData["products"] = products;
return View(ret);
}
public async Task<IActionResult> Index2([FromQuery]LineSearchModel request)
{
request = request ?? new LineSearchModel();
Expression<Func<ProductRouteEntity, bool>> exp =null;
if (request.ProductId > 0)
{
exp = m => m.ProductId == request.ProductId;
}
if (request.KeyWord.Has())
{
Expression<Func<ProductRouteEntity, bool>> filterExpr = m =>
m.Province.Contains(request.KeyWord)
|| m.City.Contains(request.KeyWord)
|| m.Name.Contains(request.KeyWord)
|| m.ServerUrl.Contains(request.KeyWord);
if (exp == null)
exp = filterExpr;
else exp=exp.And(filterExpr);
}
var ret = await m_ProductRouteService.Query(exp).OrderBy(m=>m.Sort).ToListAsync();
var products = await m_ProductService.Query(m=>m.OnLine == 1).OrderBy(m=>m.Sort).ToListAsync();
ViewData["products"] = products;
return View(ret);

View File

@@ -10,13 +10,11 @@
var lineTotalCount = Model.Count;
var lineCount = Model.Where(m => m.Status == "正常").Count();
}
<div id="app">
<div class="quanjushousuo">
<form asp-action="index" asp-controller="linelist" method="get">
<p><input type="text" name="KeyWord" placeholder="输入地区/名称/服务器" id="KeyWord" /><button type="submit" class="btnOrange">搜索全部</button></p>
<p><input type="text" v-model="search_all_data" name="KeyWord" placeholder="输入地区/名称/服务器" id="KeyWord" /><button type="submit" v-on:click="search_all()" class="btnOrange">搜索全部</button></p>
<p><img src="~/m/img/shuju.png"> 实时总线路:@(lineTotalCount)条 <img src="~/m/img/shuju.png"> 实时可用线路:@(lineCount)条</p>
<p>所有线路均支持:【电脑/安卓/苹果】【PPTP/L2TP/SSTP】</p>
</form>
</div>
<div class="zhilian">
@@ -26,8 +24,8 @@
</span>
</div>
<div class="item">
@*<p class="blueText">已购产品:<span>老鹰b组</span></p>*@
<p class="grayText" style="font-size: 25px;">线路表与账号必须为同一产品才能使用</p>
<a href="/linelist/index2" style="font-size: 25px;">查看老版本服务器</a>
</div>
</div>
@@ -37,28 +35,26 @@
<ul>
@foreach (var item in product.Where(m => m.Id != 3 && m.Id != 7 && m.Id != 9))
{
<li class="item @(item.Id==pid?"cpActive":"")" a-pid="@item.Id" a-name="@item.Name">@item.Name</li>
<li v-on:click="select_product(@item.Id)" id="product-@item.Id" class="item @(item.Id==pid?"cpActive":"")" a-pid="@item.Id" a-name="@item.Name">@item.Name</li>
}
</ul>
</div>
<div class="dangqianshousuo">
<form asp-action="index" asp-controller="linelist" method="get">
<p>
<input type="hidden" name="ProductId" id="ProductId" value="@pid" />
<input type="text" name="KeyWord" placeholder="输入地区/名称/服务器" id="KeyWord" />
<button type="submit" class="btnBlue">搜索当前</button>
<input type="text" v-model="search_product_data" name="KeyWord" placeholder="输入地区/名称/服务器" id="KeyWord" />
<button v-on:click="search_product()" type="submit" class="btnBlue">搜索当前</button>
</p>
</form>
</div>
<div class="daochu">
<div class="item">
<p><img src="~/m/img/miyao.png"> L2TP密钥@currentProduct.L2TPPwd</p>
<p><img src="~/m/img/dk.png"> SSTP端口@currentProduct.SSTPPort</p>
<p><img src="~/m/img/miyao.png"> L2TP密钥{{l2tp}}</p>
<p><img src="~/m/img/dk.png"> SSTP端口{{sstp}}</p>
</div>
<div class="item">
<span><img src="~/m/img/excel.png"> 导出Excel</span>
<span v-on:click="export_data()"><img src="~/m/img/excel.png"> 导出Excel</span>
</div>
</div>
@@ -77,96 +73,228 @@
</div>
</div>
@foreach (var group in Model.GroupBy(m => m.Province))
{
<p class="city">@group.Key</p>
@foreach (var item in group)
{
<div class="cityData" style="@(item.Status=="正常"?"":"color:red")">
<div class="item">
@item.City
</div>
<div class="item">
@item.Name
</div>
<div class="item">
@item.ServerUrl
</div>
<div class="item">
<button type="button" class="btnDetail"
a-City="@item.City"
a-Name="@item.Name"
a-ServerUrl="@item.ServerUrl"
a-BandWidth="@item.BandWidth"
a-IpRemark="@item.IpRemark"
a-Status="@item.Status">详情</button>
</div>
</div>
}
}
<div class="cityData" v-for="site in table_data" :style="(site.online=='故障')?'color:#ec5656;':''">
<div class="item" v-if="site.online==null" style="color:#993399">{{site.city}}</div>
<div class="item" v-if="site.online!=null">{{site.city}}</div>
<div class="item">{{site.supply}}</div>
<div class="item">{{site.nasname}}</div>
<div class="item">
<button type="button" v-on:click="detail(site)" class="btnDetail">详情</button>
</div>
</div>
<!-- 弹窗详情 -->
<div class="layerTable">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td>产品:</td>
<td>{{info.name}}</td>
</tr>
<tr>
<td>城市:</td>
<td id="layer_city"></td>
<td>{{info.city}}</td>
</tr>
<tr>
<td>运营商:</td>
<td id="layer_name"></td>
<td>{{info.supply}}</td>
</tr>
<tr>
<td>服务器域名:</td>
<td id="layer_server"></td>
</tr>
<tr>
<td>实时带宽:</td>
<td id="layer_brand"></td>
<td>{{info.nasname}}</td>
</tr>
<tr>
<td>IP量</td>
<td id="layer_ip"></td>
<td>{{info.ip}}</td>
</tr>
<tr>
<td>状态</td>
<td id="layer_status"></td>
</tr>
<td>实时带宽</td>
<td>{{info.daikuan}}</td>
</tr>
<tr>
<td>维护状态:</td>
<td>{{info.online}}</td>
</tr>
<tr>
<td>负载状态:</td>
<td>{{info.status}}</td>
</tr>
</table>
<div class="back">
<div v-on:click="back()" class="back">
<img src="~/m/img/arrowback.png"> 返回列表
</div>
</div>
</div>
<script type="text/javascript">
var pid =@pid;
var productName=""
$(function () {
$(".cpList ul li").click(function(){
$(this).addClass("cpActive");
$(this).siblings().removeClass("cpActive");
pid = $(this).attr("a-pid");
productName = $(this).attr('a-name')
$("#pName").text(productName);
$("#ProductId").val(pid);
window.location.href = "/linelist/index?ProductId=" + pid;
})
$(".daochu").click(function () {
var p = $("#ProductId").val()||0;
var KeyWord = $("#KeyWord").val() || "";
window.location.href = "/linelist/Excel?ProductId=" + p + "&KeyWord=" + KeyWord;
})
$(".btnDetail").click(function () {
$(".layerTable").show();
$("#layer_city").text($(this).attr("a-City"));
$("#layer_name").text($(this).attr("a-Name"));
$("#layer_server").text($(this).attr("a-ServerUrl"));
$("#layer_brand").text($(this).attr("a-BandWidth"));
$("#layer_ip").text($(this).attr("a-IpRemark"));
$("#layer_status").text($(this).attr("a-Status"));
})
$(".back").click(function () { $(".layerTable").hide(); });
})
var app = new Vue({
el: '#app',
data: {
table_data: [],
search_all_data: '',
search_product_data:'',
product_id:0,
l2tp:'',
search_field:'',
sstp:'',
info: {}
},
computed: {
},
watch: {
},
created: function () {
this.select_product(0);
},
methods: {
select_product(ProductId){
this.product_id = ProductId;
let datalist = [];
$("li").removeClass("cpActive");
$("#product-"+ProductId).addClass("cpActive");
switch(ProductId){
case 2:
this.l2tp = '123';
this.search_field = '讯连pptp';
this.sstp = '1500';
break;
case 4:
this.l2tp = '123456';
this.search_field = '金瑞pptp';
this.sstp = '4438';
break;
case 5:
this.l2tp = 'ipdd';
this.search_field = '老鹰pptp';
this.sstp = '4430';
break;
case 6:
this.l2tp = '123';
this.search_field = '先锋pptp';
this.sstp = '6665';
break;
case 10:
this.l2tp = '88';
this.search_field = '无限-单窗口单ip';
this.sstp = '';
break;
case 13:
this.l2tp = '123456';
this.search_field = '极客pptp';
this.sstp = '4433';
break;
case 14:
this.l2tp = '91ip';
this.search_field = '天天pptp';
this.sstp = '4430';
break;
case 15:
this.l2tp = '66';
this.search_field = '共享IP';
this.sstp = '888';
break;
case 16:
this.l2tp = '8899';
this.search_field = '实惠IP';
this.sstp = '不支持';
break;
case 1:
this.l2tp = '888888';
this.search_field = '强子pptp';
this.sstp = '1500';
break;
case 8:
this.l2tp = '88';
this.search_field = '星星pptp';
this.sstp = '6666';
break;
}
$.ajax({
type: 'GET',
url: 'http://php-api.juip.com/script/linedata/display.php?product=' + ProductId,
dataType: "json",
async:false,
success: function (res) {
datalist = res.data;
}
});
this.table_data = datalist;
},
search_all(){
$.ajax({
type: 'GET',
url: 'http://php-api.juip.com/script/linedata/search.php?type=1&info=' + this.search_all_data,
dataType: "json",
async:false,
success: function (res) {
datalist = res.data;
}
});
this.table_data = datalist;
},
search_product(){
$.ajax({
type: 'GET',
url: 'http://php-api.juip.com/script/linedata/search.php?type=0&productid='+this.product_id+'&info=' + this.search_product_data,
dataType: "json",
async:false,
success: function (res) {
datalist = res.data;
}
});
this.table_data = datalist;
},
export_data(){
switch(this.product_id){
case 0:
self.location.href='http://php-api.juip.com/script/linedata/data/download/all.csv';
break;
case 2:
self.location.href='http://php-api.juip.com/script/linedata/data/download/xunlian.csv';
break;
case 4:
self.location.href='http://php-api.juip.com/script/linedata/data/download/jinrui.csv';
break;
case 5:
self.location.href='http://php-api.juip.com/script/linedata/data/download/laoying.csv';
break;
case 6:
self.location.href='http://php-api.juip.com/script/linedata/data/download/xianfeng.csv';
break;
case 10:
self.location.href='http://php-api.juip.com/script/linedata/data/download/wuxian.csv';
break;
case 13:
self.location.href='http://php-api.juip.com/script/linedata/data/download/jike.csv';
break;
case 14:
self.location.href='http://php-api.juip.com/script/linedata/data/download/tiantian.csv';
break;
case 15:
self.location.href='http://php-api.juip.com/script/linedata/data/download/gongxiang.csv';
break;
case 16:
self.location.href='http://php-api.juip.com/script/linedata/data/download/shihui.csv';
break;
case 1:
self.location.href='http://php-api.juip.com/script/linedata/data/download/qiangzi.csv';
break;
case 8:
self.location.href='http://php-api.juip.com/script/linedata/data/download/xingxing.csv';
break;
}
},
detail(r){
$(".layerTable").show();
this.info= r;
},
back(){
$(".layerTable").hide();
}
}
})
</script>

View File

@@ -0,0 +1,173 @@
@using Hncore.Pass.Vpn.Domain
@using Hncore.Infrastructure.Extension
@using Hncore.Pass.Vpn.Service
@inject ProductService m_ProductService
@model List<ProductRouteEntity>
@{
var pid = this.Context.Request.GetInt("ProductId");
var product = ViewData["products"] as List<ProductEntity>;
var currentProduct = (await m_ProductService.GetById(pid)) ?? new ProductEntity();
var lineTotalCount = Model.Count;
var lineCount = Model.Where(m => m.Status == "正常").Count();
}
<div class="quanjushousuo">
<form asp-action="index2" asp-controller="linelist" method="get">
<p><input type="text" name="KeyWord" placeholder="输入地区/名称/服务器" id="KeyWord" /><button type="submit" class="btnOrange">搜索全部</button></p>
<p><img src="~/m/img/shuju.png"> 实时总线路:@(lineTotalCount)条 <img src="~/m/img/shuju.png"> 实时可用线路:@(lineCount)条</p>
<p>所有线路均支持:【电脑/安卓/苹果】【PPTP/L2TP/SSTP】</p>
</form>
</div>
<div class="zhilian">
<div class="item">
<span class="btnZhilian">
<a asp-index="" asp-controller="article" asp-route-Catalog="4"><img src="~/m/img/zhilian.png">直连教程</a>
</span>
</div>
<div class="item">
@*<p class="blueText">已购产品:<span>老鹰b组</span></p>*@
<p class="grayText" style="font-size: 25px;">线路表与账号必须为同一产品才能使用</p>
<a href="/linelist/index" style="font-size: 25px;">查看新版本服务器</a>
</div>
</div>
<div class="lineBar"></div>
<div class="cpList">
<ul>
@foreach (var item in product.Where(m => m.Id != 3 && m.Id != 7 && m.Id != 9))
{
<li class="item @(item.Id==pid?"cpActive":"")" a-pid="@item.Id" a-name="@item.Name">@item.Name</li>
}
</ul>
</div>
<div class="dangqianshousuo">
<form asp-action="index2" asp-controller="linelist" method="get">
<p>
<input type="hidden" name="ProductId" id="ProductId" value="@pid" />
<input type="text" name="KeyWord" placeholder="输入地区/名称/服务器" id="KeyWord" />
<button type="submit" class="btnBlue">搜索当前</button>
</p>
</form>
</div>
<div class="daochu">
<div class="item">
<p><img src="~/m/img/miyao.png"> L2TP密钥@currentProduct.L2TPPwd</p>
<p><img src="~/m/img/dk.png"> SSTP端口@currentProduct.SSTPPort</p>
</div>
<div class="item">
<span><img src="~/m/img/excel.png"> 导出Excel</span>
</div>
</div>
<div class="tableTit">
<div class="item">
地区
</div>
<div class="item">
运营商
</div>
<div class="item">
服务器域名
</div>
<div class="item">
详情
</div>
</div>
@foreach (var group in Model.GroupBy(m => m.Province))
{
<p class="city">@group.Key</p>
@foreach (var item in group)
{
<div class="cityData" style="@(item.Status=="正常"?"":"color:red")">
<div class="item">
@item.City
</div>
<div class="item">
@item.Name
</div>
<div class="item">
@item.ServerUrl
</div>
<div class="item">
<button type="button" class="btnDetail"
a-City="@item.City"
a-Name="@item.Name"
a-ServerUrl="@item.ServerUrl"
a-BandWidth="@item.BandWidth"
a-IpRemark="@item.IpRemark"
a-Status="@item.Status">详情</button>
</div>
</div>
}
}
<!-- 弹窗详情 -->
<div class="layerTable">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td>城市:</td>
<td id="layer_city"></td>
</tr>
<tr>
<td>运营商:</td>
<td id="layer_name"></td>
</tr>
<tr>
<td>服务器域名:</td>
<td id="layer_server"></td>
</tr>
<tr>
<td>实时带宽:</td>
<td id="layer_brand"></td>
</tr>
<tr>
<td>IP量</td>
<td id="layer_ip"></td>
</tr>
<tr>
<td>状态:</td>
<td id="layer_status"></td>
</tr>
</table>
<div class="back">
<img src="~/m/img/arrowback.png"> 返回列表
</div>
</div>
<script type="text/javascript">
var pid =@pid;
var productName=""
$(function () {
$(".cpList ul li").click(function(){
$(this).addClass("cpActive");
$(this).siblings().removeClass("cpActive");
pid = $(this).attr("a-pid");
productName = $(this).attr('a-name')
$("#pName").text(productName);
$("#ProductId").val(pid);
window.location.href = "/linelist/index2?ProductId=" + pid;
})
$(".daochu").click(function () {
var p = $("#ProductId").val()||0;
var KeyWord = $("#KeyWord").val() || "";
window.location.href = "/linelist/Excel?ProductId=" + p + "&KeyWord=" + KeyWord;
})
$(".btnDetail").click(function () {
$(".layerTable").show();
$("#layer_city").text($(this).attr("a-City"));
$("#layer_name").text($(this).attr("a-Name"));
$("#layer_server").text($(this).attr("a-ServerUrl"));
$("#layer_brand").text($(this).attr("a-BandWidth"));
$("#layer_ip").text($(this).attr("a-IpRemark"));
$("#layer_status").text($(this).attr("a-Status"));
})
$(".back").click(function () { $(".layerTable").hide(); });
})
</script>

View File

@@ -33,7 +33,7 @@
<ul class="nav nav-tabs cpName" role="tablist">
@foreach (var item in Model)
{
@if(item.Product.Id == 5||item.Product.Id == 14){
@if(item.Product.Id == 5||item.Product.Id == 14||item.Product.Id == 1||item.Product.Id == 2){
<li role="presentation" class="@(item.Product.Id==defaultProduct.Id?"active":"")">
<a href="#@item.Product.Id" role="tab" data-toggle="tab">@item.Product.Name<span style="color: #f64e3d;font-weight:bold;">活动</span></a>
@@ -82,7 +82,7 @@
}
else
{
@if(package.Id == 86||package.Id == 88){
@if(package.Id == 86||package.Id == 88||package.Id == 47||package.Id == 49){
<a asp-action="buy" asp-controller="product" asp-route-id="@package.Id">
<div class="card color_@((item.Packages.IndexOf(package)+1)%5)">
<div class="item">
@@ -111,7 +111,7 @@
</a>
} else if(package.Id == 71) {
} else if(package.Id == 71||package.Id == 6||package.Id == 3) {
<a asp-action="buy" asp-controller="product" asp-route-id="@package.Id">
<div class="card color_@((item.Packages.IndexOf(package)+1)%5)">

View File

@@ -41,7 +41,7 @@
</ul>
@foreach (var package in Model.Packages.Where(m=>m.IsTest==0&&m.Status==1))
{
@if(package.Id == 86){
@if(package.Id == 86||package.Id == 47||package.Id == 49){
<a asp-action="rebuy" asp-controller="Product" asp-route-packageId="@package.Id" asp-route-accounts=@ViewBag.accounts>
<div class="card color_@((Model.Packages.IndexOf(package)+1)%5)">
<div class="item">
@@ -67,7 +67,20 @@
</div>
</div>
</a>
} else if(package.Id == 88) {
} else if(package.Id == 3 || package.Id == 6){
<a asp-action="rebuy" asp-controller="Product" asp-route-packageId="@package.Id" asp-route-accounts=@ViewBag.accounts>
<div class="card color_@((Model.Packages.IndexOf(package)+1)%5)">
<div class="item">
<p style="font-size: 35px;color:#f64e3d;">@package.Name 送7天</p>
<p>@(package.DayPrice)元/天</p>
<p>@package.Profile</p>
</div>
<div class="item">
<p>¥<span>@package.Price</span></p>
</div>
</div>
</a>
} else if(package.Id != 88) {
<a asp-action="rebuy" asp-controller="Product" asp-route-packageId="@package.Id" asp-route-accounts=@ViewBag.accounts>
<div class="card color_@((Model.Packages.IndexOf(package)+1)%5)">
<div class="item">

View File

@@ -1,4 +1,6 @@
@using Hncore.Pass.Vpn.Domain
@using Hncore.Pass.Vpn.Domain
@using Hncore.Infrastructure.Extension
@using Hncore.Pass.Vpn.Service
@inject ProductService m_ProductService
@@ -16,23 +18,22 @@
display: inline !important;
}
</style>
<div id="app">
<div class="container-fluid softBg">
<div class="container">
<div class="row">
<form asp-action="index" asp-controller="linelist" method="get">
<div class="col-lg-3 zxbz">
<img src="~/img/img_xinalu.png">
</div>
<div class="col-lg-5 searchInput">
<input type="text" name="KeyWord" placeholder="输入地区/名称/服务器" id="KeyWord" />
<input v-on:keyup.13="search_all()" type="text" v-model="search_all_data" name="KeyWord" placeholder="输入地区/名称/服务器" />
</div>
<div class="col-lg-2 searchBtn text-left">
<button type="submit" class="btn btn-search">搜索全部</button>
<button v-on:click="search_all()" class="btn btn-search">搜索全部</button>
</div>
<div class="col-lg-2">
<span class="btnZhilian cursor"><a asp-index="" asp-controller="article" asp-route-Catalog="4" style="color:white"><img src="~/img/zhilian.png">直连教程</a></span>
</div>
</form>
</div>
<div class="row">
<div class="col-lg-3">
@@ -46,11 +47,15 @@
</div>
<div class="container">
<p class="xianluIntro" style="text-align: center;font-size: 25px;">*线路表和账号必须为同一产品才能使用。@*(已购产品:<span>老鹰b组</span>*@</p>
<p style="text-align: center;font-size: 25px;color:red;">*****公告*****</p>
<p style="text-align: center;font-size: 20px;">*聚IP商城全线服务器都已更新可显示实时维护状态及服务器负载情况*</p>
<a style="margin-left: 45%;" href="/linelist/index2" class="btn btn-primary">*查看老版本服务器*</a>
<p style="text-align: center;font-size: 20px;">*温馨提示请尽量使用新版服务器老版服务器将于12月1号停止维护*</p>
<p class="xianluIntro" style="text-align: center;font-size: 25px;">*线路表和账号必须为同一产品才能使用。</p>
<div class="xianlu">
@foreach (var item in product.Where(m => m.Id != 3 && m.Id != 7 && m.Id != 9))
{
<div class="item @(item.Id==pid?"blueLine":"")" a-pid="@item.Id" a-name="@item.Name">
<div v-on:click="select_product(@item.Id)" id="product-@item.Id" class="item @(item.Id==pid?"blueLine":"")" a-pid="@item.Id" a-name="@item.Name">
<span>@item.Name</span><img src="~/img/check.png">
</div>
}
@@ -60,74 +65,211 @@
<div class="container">
<div class="row">
<div class="col-lg-2 miyao">
<p><img src="~/img/miyao.png"> L2TP密钥<b style="color:red;">@currentProduct.L2TPPwd</b></p>
<p><img src="~/img/dk.png"> SSTP端口<b style="color:red;">@currentProduct.SSTPPort</b></p>
<p><img src="~/img/miyao.png"> L2TP密钥<b style="color:red;">{{l2tp}}</b></p>
<p><img src="~/img/dk.png"> SSTP端口<b style="color:red;">{{sstp}}</b></p>
</div>
<div class="col-lg-2 fanwei">
搜索范围:<span id="pName">@currentProduct.Name</span>
搜索范围:<span id="pName">{{search_field}}</span>
</div>
<div class="col-lg-8">
<form asp-action="index" asp-controller="linelist" method="get">
<input type="hidden" name="ProductId" id="ProductId" value="@pid" />
<input type="text" name="KeyWord" class="searchDq" placeholder="输入地区/名称/服务器" id="KeyWord" />
<button type="submit" class="btn btn-primary">搜索当前线路表</button>
<span class="daochu"><img src="~/img/excel.png">导出Excel</span>
</form>
<input v-on:keyup.13="search_product()" type="text" v-model="search_product_data" name="KeyWord" class="searchDq" placeholder="输入地区/名称/服务器" />
<button v-on:click="search_product()" class="btn btn-primary">搜索当前线路表</button>
<span class="daochu" v-on:click="export_data()" ><img src="~/img/excel.png">导出Excel</span>
</div>
</div>
</div>
<div class="container">
<div class="container" >
<table class="table table-striped xianluTable">
<tr>
<th><img src="~/img/chengshi.png">产品</th>
<th><img src="~/img/chengshi.png">城市</th>
<th><img src="~/img/yunyingshang.png"> 运营商</th>
<th><img src="~/img/yuming.png"> 服务器域名</th>
<th><img src="~/img/daikuan.png"> 实时带宽</th>
<th><img src="~/img/ipliang.png"> IP量</th>
<th><img src="~/img/zhuangtai.png"> 状态</th>
<th><img src="~/img/xianlushuoming.png"> 线路说明</th>
<th>产品</th>
<th>城市</th>
<th>运营商</th>
<th>服务器域名</th>
<th>IP量</th>
<th>实时带宽</th>
<th>维护状态</th>
<th>负载状态</th>
</tr>
@foreach (var group in Model.GroupBy(m => m.Province))
{
<tr><td style="background:#dedede;"></td><td colspan="7" style="background:#dedede;text-align:left;padding-left: 50px;">@group.Key</td></tr>
@foreach (var item in group)
{
<tr style="@(item.Status=="正常"?"":"color:red")">
<td>@item.ProductName</td>
<td>@item.City</td>
<td>@item.Name</td>
<td class="blueT">@item.ServerUrl</td>
<td>@item.BandWidth</td>
<td>@item.IpRemark</td>
<td class="greenT">@item.Status</td>
<td>评分★★★★★</td>
</tr>
}
}
<tr v-for="site in table_data" :style="(site.online=='故障')?'color:#ec5656;':''">
<td>{{site.name}}</td>
<td v-if="site.online==null" style="color:#993399">{{site.city}}</td>
<td v-if="site.online!=null">{{site.city}}</td>
<td>{{site.supply}}</td>
<td>{{site.nasname}}</td>
<td>{{site.ip}}</td>
<td>{{site.daikuan}}</td>
<td>{{site.online}}</td>
<td>{{site.status}}</td>
</tr>
</table>
</div>
</div>
<script src="~/js/vue.js"></script>
<script type="text/javascript">
var pid =@pid;
var productName=""
$(function(){
$(".xianlu .item").click(function(){
$(this).addClass("blueLine");
$(this).siblings().removeClass("blueLine");
pid = $(this).attr("a-pid");
productName = $(this).attr('a-name')
$("#pName").text(productName);
$("#ProductId").val(pid);
window.location.href = "/linelist/index?ProductId="+pid;
})
$(".daochu").click(function () {
var p = $("#ProductId").val()||0;
var KeyWord = $("#KeyWord").val() || "";
window.location.href = "/linelist/Excel?ProductId=" + p + "&KeyWord=" + KeyWord;
})
})
var app = new Vue({
el: '#app',
data: {
table_data: [],
search_all_data: '',
search_product_data:'',
product_id:0,
l2tp:'',
search_field:'',
sstp:''
},
computed: {
},
watch: {
},
created: function () {
this.select_product(0);
},
methods: {
select_product(ProductId){
this.product_id = ProductId;
let datalist = [];
$("div").removeClass("blueLine");
$("#product-"+ProductId).addClass("blueLine");
switch(ProductId){
case 2:
this.l2tp = '123';
this.search_field = '讯连pptp';
this.sstp = '1500';
break;
case 4:
this.l2tp = '123456';
this.search_field = '金瑞pptp';
this.sstp = '4438';
break;
case 5:
this.l2tp = 'ipdd';
this.search_field = '老鹰pptp';
this.sstp = '4430';
break;
case 6:
this.l2tp = '123';
this.search_field = '先锋pptp';
this.sstp = '6665';
break;
case 10:
this.l2tp = '88';
this.search_field = '无限-单窗口单ip';
this.sstp = '';
break;
case 13:
this.l2tp = '123456';
this.search_field = '极客pptp';
this.sstp = '4433';
break;
case 14:
this.l2tp = '91ip';
this.search_field = '天天pptp';
this.sstp = '4430';
break;
case 15:
this.l2tp = '66';
this.search_field = '共享IP';
this.sstp = '888';
break;
case 16:
this.l2tp = '8899';
this.search_field = '实惠IP';
this.sstp = '不支持';
break;
case 1:
this.l2tp = '888888';
this.search_field = '强子pptp';
this.sstp = '1500';
break;
case 8:
this.l2tp = '88';
this.search_field = '星星pptp';
this.sstp = '6666';
break;
}
$.ajax({
type: 'GET',
url: 'http://php-api.juip.com/script/linedata/display.php?product=' + ProductId,
dataType: "json",
async:false,
success: function (res) {
datalist = res.data;
}
});
this.table_data = datalist;
},
search_all(){
$.ajax({
type: 'GET',
url: 'http://php-api.juip.com/script/linedata/search.php?type=1&info=' + this.search_all_data,
dataType: "json",
async:false,
success: function (res) {
datalist = res.data;
}
});
this.table_data = datalist;
},
search_product(){
$.ajax({
type: 'GET',
url: 'http://php-api.juip.com/script/linedata/search.php?type=0&productid='+this.product_id+'&info=' + this.search_product_data,
dataType: "json",
async:false,
success: function (res) {
datalist = res.data;
}
});
this.table_data = datalist;
},
export_data(){
switch(this.product_id){
case 0:
self.location.href='http://php-api.juip.com/script/linedata/data/download/all.csv';
break;
case 2:
self.location.href='http://php-api.juip.com/script/linedata/data/download/xunlian.csv';
break;
case 4:
self.location.href='http://php-api.juip.com/script/linedata/data/download/jinrui.csv';
break;
case 5:
self.location.href='http://php-api.juip.com/script/linedata/data/download/laoying.csv';
break;
case 6:
self.location.href='http://php-api.juip.com/script/linedata/data/download/xianfeng.csv';
break;
case 10:
self.location.href='http://php-api.juip.com/script/linedata/data/download/wuxian.csv';
break;
case 13:
self.location.href='http://php-api.juip.com/script/linedata/data/download/jike.csv';
break;
case 14:
self.location.href='http://php-api.juip.com/script/linedata/data/download/tiantian.csv';
break;
case 15:
self.location.href='http://php-api.juip.com/script/linedata/data/download/gongxiang.csv';
break;
case 16:
self.location.href='http://php-api.juip.com/script/linedata/data/download/shihui.csv';
break;
case 1:
self.location.href='http://php-api.juip.com/script/linedata/data/download/qiangzi.csv';
break;
case 8:
self.location.href='http://php-api.juip.com/script/linedata/data/download/xingxing.csv';
break;
}
}
}
})
</script>

View File

@@ -0,0 +1,134 @@
@using Hncore.Pass.Vpn.Domain
@using Hncore.Infrastructure.Extension
@using Hncore.Pass.Vpn.Service
@inject ProductService m_ProductService
@model List<ProductRouteEntity>
@{
var pid = this.Context.Request.GetInt("ProductId");
var product = ViewData["products"] as List<ProductEntity>;
var currentProduct =(await m_ProductService.GetById(pid)) ?? new ProductEntity();
var lineTotalCount = Model.Count;
var lineCount = Model.Where(m=>m.Status== "正常").Count();
}
<style>
.blueLine img {
display: inline !important;
}
</style>
<div class="container-fluid softBg">
<div class="container">
<div class="row">
<form asp-action="index2" asp-controller="linelist" method="get">
<div class="col-lg-3 zxbz">
<img src="~/img/img_xinalu.png">
</div>
<div class="col-lg-5 searchInput">
<input type="text" name="KeyWord" placeholder="输入地区/名称/服务器" id="KeyWord" />
</div>
<div class="col-lg-2 searchBtn text-left">
<button type="submit" class="btn btn-search">搜索全部</button>
</div>
<div class="col-lg-2">
<span class="btnZhilian cursor"><a asp-index="" asp-controller="article" asp-route-Catalog="4" style="color:white"><img src="~/img/zhilian.png">直连教程</a></span>
</div>
</form>
</div>
<div class="row">
<div class="col-lg-3">
</div>
<div class="col-lg-9">
<p class="hot"><img src="~/img/shuju.png">实时总线路:@(lineTotalCount)条<img src="~/img/shuju.png">实时可用线路:@(lineCount)条 所有线路均支持:【电脑/安卓/苹果】【PPTP/L2TP/SSTP】</p>
</div>
</div>
</div>
</div>
<div class="container">
<a style="margin-left: 45%;" href="/linelist/index" class="btn btn-primary">*返回新版本服务器*</a>
<p class="xianluIntro" style="text-align: center;font-size: 25px;">*线路表和账号必须为同一产品才能使用。@*(已购产品:<span>老鹰b组</span>*@</p>
<div class="xianlu">
@foreach (var item in product.Where(m => m.Id != 3 && m.Id != 7 && m.Id != 9))
{
<div class="item @(item.Id==pid?"blueLine":"")" a-pid="@item.Id" a-name="@item.Name">
<span>@item.Name</span><img src="~/img/check.png">
</div>
}
</div>
</div>
<div class="container">
<div class="row">
<div class="col-lg-2 miyao">
<p><img src="~/img/miyao.png"> L2TP密钥<b style="color:red;">@currentProduct.L2TPPwd</b></p>
<p><img src="~/img/dk.png"> SSTP端口<b style="color:red;">@currentProduct.SSTPPort</b></p>
</div>
<div class="col-lg-2 fanwei">
搜索范围:<span id="pName">@currentProduct.Name</span>
</div>
<div class="col-lg-8">
<form asp-action="index2" asp-controller="linelist" method="get">
<input type="hidden" name="ProductId" id="ProductId" value="@pid" />
<input type="text" name="KeyWord" class="searchDq" placeholder="输入地区/名称/服务器" id="KeyWord" />
<button type="submit" class="btn btn-primary">搜索当前线路表</button>
<span class="daochu"><img src="~/img/excel.png">导出Excel</span>
</form>
</div>
</div>
</div>
<div class="container">
<table class="table table-striped xianluTable">
<tr>
<th><img src="~/img/chengshi.png">产品</th>
<th><img src="~/img/chengshi.png">城市</th>
<th><img src="~/img/yunyingshang.png"> 运营商</th>
<th><img src="~/img/yuming.png"> 服务器域名</th>
<th><img src="~/img/daikuan.png"> 实时带宽</th>
<th><img src="~/img/ipliang.png"> IP量</th>
<th><img src="~/img/zhuangtai.png"> 状态</th>
<th><img src="~/img/xianlushuoming.png"> 线路说明</th>
</tr>
@foreach (var group in Model.GroupBy(m => m.Province))
{
<tr><td style="background:#dedede;"></td><td colspan="7" style="background:#dedede;text-align:left;padding-left: 50px;">@group.Key</td></tr>
@foreach (var item in group)
{
<tr style="@(item.Status=="正常"?"":"color:red")">
<td>@item.ProductName</td>
<td>@item.City</td>
<td>@item.Name</td>
<td class="blueT">@item.ServerUrl</td>
<td>@item.BandWidth</td>
<td>@item.IpRemark</td>
<td class="greenT">@item.Status</td>
<td>评分★★★★★</td>
</tr>
}
}
</table>
</div>
<script type="text/javascript">
var pid =@pid;
var productName=""
$(function(){
$(".xianlu .item").click(function(){
$(this).addClass("blueLine");
$(this).siblings().removeClass("blueLine");
pid = $(this).attr("a-pid");
productName = $(this).attr('a-name')
$("#pName").text(productName);
$("#ProductId").val(pid);
window.location.href = "/linelist/index2?ProductId="+pid;
})
$(".daochu").click(function () {
var p = $("#ProductId").val()||0;
var KeyWord = $("#KeyWord").val() || "";
window.location.href = "/linelist/Excel?ProductId=" + p + "&KeyWord=" + KeyWord;
})
})
</script>

View File

@@ -222,7 +222,7 @@
<div class="nav">
@foreach (var item in Model)
{
@if(item.Product.Id == 5 || item.Product.Id == 14){
@if(item.Product.Id == 5 || item.Product.Id == 14|| item.Product.Id == 1|| item.Product.Id == 2){
<div class="productItem" id="@("p"+item.Product.Id)" a-pid="@item.Product.Id" a-pkg-id="@(item.Packages.FirstOrDefault(m=>m.Status==1).Id)">@item.Product.Name <span style="color: #f64e3d;font-weight:bold;">活动</span></div>
} else {
<div class="productItem" id="@("p"+item.Product.Id)" a-pid="@item.Product.Id" a-pkg-id="@(item.Packages.FirstOrDefault(m=>m.Status==1).Id)">@item.Product.Name</div>
@@ -269,17 +269,23 @@
</div>
</div>
@if(item.Product.Id == 5){
<p class="youhuiNew">新开账号或续费1个月赠送10天2个月赠送1个月(每个账号限参加一次活动截止时间2020年11月25日</p>
<p class="youhuiNew">月赠送10天双月卡赠送1个月新开和续费都有赠送活动截止时间2020年11月25日。<br>同一个IP账号仅限一次每位会员不限账号数量您可购买多个IP账号都有赠送</p>
}
@if(item.Product.Id == 14){
<p class="youhuiNew">新开账号1个月赠送7天2个月赠送1个月仅限新开账号,续费帐号不赠送,同一用户不限制参加活动的账号数量,活动截止时间2020年12月1日</p>
<p class="youhuiNew">月赠送7天双月卡赠送1个月仅限新开账号续费帐号不赠送活动截止时间2020年12月1日。<br>同一个IP账号仅限一次每位会员不限账号数量您可购买多个IP账号都有赠送</p>
}
@if(item.Product.Id == 1){
<p class="youhuiNew">月卡赠送7天季卡赠送1个月新开和续费都有赠送活动截止时间2020年11月15日<br>同一个IP账号不限次数您可对同一账号多次续费都有赠送每位会员不限账号数量您可购买多个IP账号都有赠送</p>
}
@if(item.Product.Id == 2){
<p class="youhuiNew">月卡赠送7天季卡赠送1个月新开和续费都有赠送活动截止时间2020年11月15日<br>同一个IP账号不限次数您可对同一账号多次续费都有赠送每位会员不限账号数量您可购买多个IP账号都有赠送</p>
}
@*<p class="text-center nameSmall">—<span>@item.Product.Name</span>—</p>*@
<div class="card" style="margin-top:30px;">
@foreach (var package in item.Packages.Where(m => m.IsTest == 0 && m.Status == 1))
{
@if(package.Id == 86||package.Id == 88){
@if(package.Id == 86||package.Id == 88||package.Id == 47||package.Id == 49){
<div class="item packageitem packageitem86" id="@("pkg"+package.Id)" a-pkg-id="@package.Id">
@@ -305,7 +311,7 @@
<img src="~/img/check.png" class="cardCheck">
</div>
} else if(package.Id == 71) {
} else if(package.Id == 71||package.Id == 3||package.Id == 6) {
<div class="item packageitem packageitem71" id="@("pkg"+package.Id)" a-pkg-id="@package.Id">
<p><span class="price">@package.Price</span>元</p>

View File

@@ -95,6 +95,35 @@
border-bottom-color: transparent;
}
.packageitem19{
position: relative;
}
.packageitem19::before {
position: absolute;
top: 0.3rem;
left: -0.5rem;
z-index: 1;
padding-right: 0.625rem;
font-weight: bold;
line-height: 0px;
color: white;
height: 0px;
border: 1.0rem solid #f64e3d;
border-right-color: transparent;
content: "免费送七天";
box-shadow: 0px 0.3125rem 0.3125rem -0.3125rem #000;
}
.packageitem19::after {
content: "";
position: absolute;
top: 2.1875rem;
left: -0.5rem;
border: 0.25rem solid #f64e3d;
border-left-color: transparent;
border-bottom-color: transparent;
}
</style>
<!-- ad -->
<div class="container-fluid ad">
@@ -127,7 +156,7 @@
<div class="card">
@foreach (var package in Model.Packages.Where(m => m.IsTest == 0 && m.Status == 1))
{
@if(package.Id == 86){
@if(package.Id == 86||package.Id == 47||package.Id == 49){
<div class="item packageitem packageitem86" id="@("pkg"+package.Id)" a-pkg-id="@package.Id">
@@ -153,6 +182,19 @@
<img src="~/img/check.png" class="cardCheck">
</div>
} else if(package.Id == 3 || package.Id == 6) {
<div class="item packageitem packageitem3" id="@("pkg"+package.Id)" a-pkg-id="@package.Id">
<p><span class="price">@package.Price</span>元</p>
<p class="yuanjia">原价:<span>@package.LinePrice</span>元</p>
<p>@(Math.Round(package.Price/package.DayCount,2))元/天</p>
<div class="pkgNameCard" style="background-color:#f64e3d">
<p class="tianka">@package.Name</p>
<p class="qixian">@package.Profile</p>
</div>
<img src="~/img/check.png" class="cardCheck">
</div>
} else if(package.Id != 88) {
<div class="item packageitem" id="@("pkg"+package.Id)" a-pkg-id="@package.Id">