Browse Source

添加加入产品库的接口

master
С·æ 4 years ago
parent
commit
a09d86c810
  1. 65
      src/Coldairarrow.Api/Controllers/HuiYan/itemlabelsController.cs
  2. 65
      src/Coldairarrow.Api/Controllers/HuiYan/itemsController.cs
  3. 77
      src/Coldairarrow.Api/Controllers/HuiYan/teamitemsController.cs
  4. 65
      src/Coldairarrow.Business/HuiYan/itemlabelsBusiness.cs
  5. 65
      src/Coldairarrow.Business/HuiYan/itemsBusiness.cs
  6. 124
      src/Coldairarrow.Business/HuiYan/teamitemsBusiness.cs
  7. 75
      src/Coldairarrow.Entity/DTO/TeamitemDto.cs
  8. 71
      src/Coldairarrow.Entity/HuiYan/itemlabels.cs
  9. 51
      src/Coldairarrow.Entity/HuiYan/items.cs
  10. 111
      src/Coldairarrow.Entity/HuiYan/teamitems.cs
  11. 16
      src/Coldairarrow.IBusiness/HuiYan/IitemlabelsBusiness.cs
  12. 16
      src/Coldairarrow.IBusiness/HuiYan/IitemsBusiness.cs
  13. 19
      src/Coldairarrow.IBusiness/HuiYan/IteamitemsBusiness.cs
  14. 98
      src/Coldairarrow.Web/src/views/HuiYan/itemlabels/EditForm.vue
  15. 165
      src/Coldairarrow.Web/src/views/HuiYan/itemlabels/List.vue
  16. 86
      src/Coldairarrow.Web/src/views/HuiYan/items/EditForm.vue
  17. 159
      src/Coldairarrow.Web/src/views/HuiYan/items/List.vue
  18. 122
      src/Coldairarrow.Web/src/views/HuiYan/teamitems/EditForm.vue
  19. 180
      src/Coldairarrow.Web/src/views/HuiYan/teamitems/List.vue
  20. 140
      客户端/齐越慧眼/齐越慧眼/vuepage/client/src/views/items/Index.vue

65
src/Coldairarrow.Api/Controllers/HuiYan/itemlabelsController.cs

@ -0,0 +1,65 @@
using Coldairarrow.Business.HuiYan;
using Coldairarrow.Entity.HuiYan;
using Coldairarrow.Util;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Coldairarrow.Api.Controllers.HuiYan
{
[Route("/HuiYan/[controller]/[action]")]
public class itemlabelsController : BaseApiController
{
#region DI
public itemlabelsController(IitemlabelsBusiness itemlabelsBus)
{
_itemlabelsBus = itemlabelsBus;
}
IitemlabelsBusiness _itemlabelsBus { get; }
#endregion
#region 获取
[HttpPost]
public async Task<PageResult<itemlabels>> GetDataList(PageInput<ConditionDTO> input)
{
return await _itemlabelsBus.GetDataListAsync(input);
}
[HttpPost]
public async Task<itemlabels> GetTheData(IdInputDTO input)
{
return await _itemlabelsBus.GetTheDataAsync(input.id);
}
#endregion
#region 提交
[HttpPost]
public async Task SaveData(itemlabels data)
{
if (data.Id.IsNullOrEmpty())
{
InitEntity(data);
await _itemlabelsBus.AddDataAsync(data);
}
else
{
await _itemlabelsBus.UpdateDataAsync(data);
}
}
[HttpPost]
public async Task DeleteData(List<string> ids)
{
await _itemlabelsBus.DeleteDataAsync(ids);
}
#endregion
}
}

65
src/Coldairarrow.Api/Controllers/HuiYan/itemsController.cs

@ -0,0 +1,65 @@
using Coldairarrow.Business.HuiYan;
using Coldairarrow.Entity.HuiYan;
using Coldairarrow.Util;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Coldairarrow.Api.Controllers.HuiYan
{
[Route("/HuiYan/[controller]/[action]")]
public class itemsController : BaseApiController
{
#region DI
public itemsController(IitemsBusiness itemsBus)
{
_itemsBus = itemsBus;
}
IitemsBusiness _itemsBus { get; }
#endregion
#region 获取
[HttpPost]
public async Task<PageResult<items>> GetDataList(PageInput<ConditionDTO> input)
{
return await _itemsBus.GetDataListAsync(input);
}
[HttpPost]
public async Task<items> GetTheData(IdInputDTO input)
{
return await _itemsBus.GetTheDataAsync(input.id);
}
#endregion
#region 提交
[HttpPost]
public async Task SaveData(items data)
{
if (data.Id.IsNullOrEmpty())
{
InitEntity(data);
await _itemsBus.AddDataAsync(data);
}
else
{
await _itemsBus.UpdateDataAsync(data);
}
}
[HttpPost]
public async Task DeleteData(List<string> ids)
{
await _itemsBus.DeleteDataAsync(ids);
}
#endregion
}
}

77
src/Coldairarrow.Api/Controllers/HuiYan/teamitemsController.cs

@ -0,0 +1,77 @@
using Coldairarrow.Business.HuiYan;
using Coldairarrow.Entity.DTO;
using Coldairarrow.Entity.HuiYan;
using Coldairarrow.Util;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Coldairarrow.Api.Controllers.HuiYan
{
[Route("/HuiYan/[controller]/[action]")]
public class teamitemsController : BaseApiController
{
#region DI
public teamitemsController(IteamitemsBusiness teamitemsBus)
{
_teamitemsBus = teamitemsBus;
}
IteamitemsBusiness _teamitemsBus { get; }
#endregion
#region 获取
[HttpPost]
public async Task<PageResult<teamitems>> GetDataList(PageInput<ConditionDTO> input)
{
return await _teamitemsBus.GetDataListAsync(input);
}
[HttpPost]
public async Task<teamitems> GetTheData(IdInputDTO input)
{
return await _teamitemsBus.GetTheDataAsync(input.id);
}
#endregion
#region 提交
[HttpPost]
public async Task SaveData(teamitems data)
{
if (data.Id.IsNullOrEmpty())
{
InitEntity(data);
await _teamitemsBus.AddDataAsync(data);
}
else
{
await _teamitemsBus.UpdateDataAsync(data);
}
}
[HttpPost]
public async Task DeleteData(List<string> ids)
{
await _teamitemsBus.DeleteDataAsync(ids);
}
#endregion
/// <summary>
/// 添加商品信息
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[HttpPost]
public AjaxResult AddItem(TeamitemDto model)
{
return _teamitemsBus.AddItem(model);
}
}
}

65
src/Coldairarrow.Business/HuiYan/itemlabelsBusiness.cs

@ -0,0 +1,65 @@
using Coldairarrow.Entity.HuiYan;
using Coldairarrow.Util;
using EFCore.Sharding;
using LinqKit;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Threading.Tasks;
namespace Coldairarrow.Business.HuiYan
{
public class itemlabelsBusiness : BaseBusiness<itemlabels>, IitemlabelsBusiness, ITransientDependency
{
public itemlabelsBusiness(IDbAccessor db)
: base(db)
{
}
#region 外部接口
public async Task<PageResult<itemlabels>> GetDataListAsync(PageInput<ConditionDTO> input)
{
var q = GetIQueryable();
var where = LinqHelper.True<itemlabels>();
var search = input.Search;
//筛选
if (!search.Condition.IsNullOrEmpty() && !search.Keyword.IsNullOrEmpty())
{
var newWhere = DynamicExpressionParser.ParseLambda<itemlabels, bool>(
ParsingConfig.Default, false, $@"{search.Condition}.Contains(@0)", search.Keyword);
where = where.And(newWhere);
}
return await q.Where(where).GetPageResultAsync(input);
}
public async Task<itemlabels> GetTheDataAsync(string id)
{
return await GetEntityAsync(id);
}
public async Task AddDataAsync(itemlabels data)
{
await InsertAsync(data);
}
public async Task UpdateDataAsync(itemlabels data)
{
await UpdateAsync(data);
}
public async Task DeleteDataAsync(List<string> ids)
{
await DeleteAsync(ids);
}
#endregion
#region 私有成员
#endregion
}
}

65
src/Coldairarrow.Business/HuiYan/itemsBusiness.cs

@ -0,0 +1,65 @@
using Coldairarrow.Entity.HuiYan;
using Coldairarrow.Util;
using EFCore.Sharding;
using LinqKit;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Threading.Tasks;
namespace Coldairarrow.Business.HuiYan
{
public class itemsBusiness : BaseBusiness<items>, IitemsBusiness, ITransientDependency
{
public itemsBusiness(IDbAccessor db)
: base(db)
{
}
#region 外部接口
public async Task<PageResult<items>> GetDataListAsync(PageInput<ConditionDTO> input)
{
var q = GetIQueryable();
var where = LinqHelper.True<items>();
var search = input.Search;
//筛选
if (!search.Condition.IsNullOrEmpty() && !search.Keyword.IsNullOrEmpty())
{
var newWhere = DynamicExpressionParser.ParseLambda<items, bool>(
ParsingConfig.Default, false, $@"{search.Condition}.Contains(@0)", search.Keyword);
where = where.And(newWhere);
}
return await q.Where(where).GetPageResultAsync(input);
}
public async Task<items> GetTheDataAsync(string id)
{
return await GetEntityAsync(id);
}
public async Task AddDataAsync(items data)
{
await InsertAsync(data);
}
public async Task UpdateDataAsync(items data)
{
await UpdateAsync(data);
}
public async Task DeleteDataAsync(List<string> ids)
{
await DeleteAsync(ids);
}
#endregion
#region 私有成员
#endregion
}
}

124
src/Coldairarrow.Business/HuiYan/teamitemsBusiness.cs

@ -0,0 +1,124 @@
using Coldairarrow.Entity.DTO;
using Coldairarrow.Entity.HuiYan;
using Coldairarrow.Util;
using EFCore.Sharding;
using LinqKit;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Threading.Tasks;
namespace Coldairarrow.Business.HuiYan
{
public class teamitemsBusiness : BaseBusiness<teamitems>, IteamitemsBusiness, ITransientDependency
{
public teamitemsBusiness(IDbAccessor db)
: base(db)
{
}
#region 外部接口
public async Task<PageResult<teamitems>> GetDataListAsync(PageInput<ConditionDTO> input)
{
var q = GetIQueryable();
var where = LinqHelper.True<teamitems>();
var search = input.Search;
//筛选
if (!search.Condition.IsNullOrEmpty() && !search.Keyword.IsNullOrEmpty())
{
var newWhere = DynamicExpressionParser.ParseLambda<teamitems, bool>(
ParsingConfig.Default, false, $@"{search.Condition}.Contains(@0)", search.Keyword);
where = where.And(newWhere);
}
return await q.Where(where).GetPageResultAsync(input);
}
public async Task<teamitems> GetTheDataAsync(string id)
{
return await GetEntityAsync(id);
}
public async Task AddDataAsync(teamitems data)
{
await InsertAsync(data);
}
public async Task UpdateDataAsync(teamitems data)
{
await UpdateAsync(data);
}
public async Task DeleteDataAsync(List<string> ids)
{
await DeleteAsync(ids);
}
#endregion
#region 私有成员
#endregion
public AjaxResult AddItem(TeamitemDto model)
{
model.Extensions = new List<TeamItemExtension>();
for (int i = 0; i < 5; i++)
model.Extensions.Add(new TeamItemExtension() { Platform = 0 });
var item = Db.GetIQueryable<items>().FirstOrDefault(c => c.GoodsId == model.GoodsId);
if (item == null)
{
item = new items()
{
GoodsId = model.GoodsId,
CreateTime = DateTime.Now,
CreatorId = string.Empty,
Deleted = false,
HasFilter = false,
Id = IdHelper.GetId(),
Platform = 0
};
if (Db.Insert<items>(item) <= 0)
{
return Error("商品添加失败!");
}
}
//设置为初选
int row = Db.Insert<teamitems>(new teamitems()
{
State = 0,
CreateTime = DateTime.Now,
CreatorId = string.Empty,
Deleted = false,
ExtensionJson = Newtonsoft.Json.JsonConvert.SerializeObject(model.Extensions),
Id = IdHelper.GetId(),
//待完善
TeamId = string.Empty,
UserId = string.Empty,
Price = model.Price,
ItemImg = model.ItemImg,
Sales = model.Sales,
Title = model.Title,
ItemId = item.Id
});
if (row <= 0)
return Error("商品信息添加失败!");
return Success();
}
}
}

75
src/Coldairarrow.Entity/DTO/TeamitemDto.cs

@ -0,0 +1,75 @@
using Coldairarrow.Entity.HuiYan;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Coldairarrow.Entity.DTO
{
public class TeamitemDto:teamitems
{
/// <summary>
/// 平台
/// </summary>
public int Platform { get; set; }
/// <summary>
/// 是否集团过滤
/// </summary>
public bool HasFilter { get; set; }
/// <summary>
/// 宝贝ID
/// </summary>
public string GoodsId { get; set; }
/// <summary>
/// 扩展信息
/// </summary>
public List<TeamItemExtension> Extensions { get; set; }
}
public class TeamItemExtension
{
/// <summary>
/// 平台
/// </summary>
public int Platform { get; set; }
/// <summary>
/// SKU名称
/// </summary>
public string SkuName { get; set; }
/// <summary>
/// 采购链接
/// </summary>
public string BuyUrl { get; set; }
/// <summary>
/// 供应商来源方式
/// </summary>
public string SupplierFrom { get; set; }
/// <summary>
/// 采购价格
/// </summary>
public decimal BuyPrice { get; set; }
/// <summary>
/// 快递费
/// </summary>
public decimal KDPrice { get; set; }
/// <summary>
/// 平台扣点
/// </summary>
public decimal PlatformPoint { get; set; }
/// <summary>
/// 利润率
/// </summary>
public decimal Profits { get; set; }
}
}

71
src/Coldairarrow.Entity/HuiYan/itemlabels.cs

@ -0,0 +1,71 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Coldairarrow.Entity.HuiYan
{
/// <summary>
/// itemlabels
/// </summary>
[Table("itemlabels")]
public class itemlabels
{
/// <summary>
/// 主键
/// </summary>
[Key, Column(Order = 1)]
public String Id { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 创建人Id
/// </summary>
public String CreatorId { get; set; }
/// <summary>
/// 否已删除
/// </summary>
public Boolean Deleted { get; set; }
/// <summary>
/// 宝贝ID
/// </summary>
public String ItemsId { get; set; }
/// <summary>
/// 是否筛选
/// </summary>
public Boolean IsScreening { get; set; }
/// <summary>
/// 是否过滤
/// </summary>
public Boolean IsFilter { get; set; }
/// <summary>
/// 是否竞品
/// </summary>
public Boolean IsCompeting { get; set; }
/// <summary>
/// 是否加入产品库
/// </summary>
public Boolean IsAdded { get; set; }
/// <summary>
/// 添加人
/// </summary>
public String UserId { get; set; }
/// <summary>
/// 团队ID
/// </summary>
public String TeamId { get; set; }
}
}

51
src/Coldairarrow.Entity/HuiYan/items.cs

@ -0,0 +1,51 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Coldairarrow.Entity.HuiYan
{
/// <summary>
/// items
/// </summary>
[Table("items")]
public class items
{
/// <summary>
/// 主键
/// </summary>
[Key, Column(Order = 1)]
public String Id { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 创建人Id
/// </summary>
public String CreatorId { get; set; }
/// <summary>
/// 否已删除
/// </summary>
public Boolean Deleted { get; set; }
/// <summary>
/// 宝贝ID
/// </summary>
public String GoodsId { get; set; }
/// <summary>
/// 是否集团过滤
/// </summary>
public Boolean HasFilter { get; set; }
/// <summary>
/// 所属平台
/// </summary>
public Int32 Platform { get; set; }
}
}

111
src/Coldairarrow.Entity/HuiYan/teamitems.cs

@ -0,0 +1,111 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Coldairarrow.Entity.HuiYan
{
/// <summary>
/// teamitems
/// </summary>
[Table("teamitems")]
public class teamitems
{
/// <summary>
/// 主键
/// </summary>
[Key, Column(Order = 1)]
public String Id { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 创建人Id
/// </summary>
public String CreatorId { get; set; }
/// <summary>
/// 否已删除
/// </summary>
public Boolean Deleted { get; set; }
/// <summary>
/// 商品表的ID
/// </summary>
public String ItemId { get; set; }
/// <summary>
/// 宝贝标题
/// </summary>
public String Title { get; set; }
/// <summary>
/// 宝贝价格
/// </summary>
public Decimal? Price { get; set; }
/// <summary>
/// 收货人数
/// </summary>
public Int32? Sales { get; set; }
/// <summary>
/// 商品图片
/// </summary>
public String ItemImg { get; set; }
/// <summary>
/// 添加人
/// </summary>
public String UserId { get; set; }
/// <summary>
/// 团队Id
/// </summary>
public String TeamId { get; set; }
/// <summary>
/// 对标商品标题
/// </summary>
public String RivalTitle { get; set; }
/// <summary>
/// 对标商品价格
/// </summary>
public Decimal? RivalPrice { get; set; }
/// <summary>
/// 对标收货人数
/// </summary>
public String RivalSales { get; set; }
/// <summary>
/// 对标商品图片
/// </summary>
public String RivalImg { get; set; }
/// <summary>
/// 对标商品ID
/// </summary>
public String RivalGoodsId { get; set; }
/// <summary>
/// 状态
/// </summary>
public Int32? State { get; set; }
/// <summary>
/// 扩展信息
/// </summary>
public String ExtensionJson { get; set; }
/// <summary>
/// 对标商品评价数量
/// </summary>
public Int32? RivalPLCount { get; set; }
}
}

16
src/Coldairarrow.IBusiness/HuiYan/IitemlabelsBusiness.cs

@ -0,0 +1,16 @@
using Coldairarrow.Entity.HuiYan;
using Coldairarrow.Util;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Coldairarrow.Business.HuiYan
{
public interface IitemlabelsBusiness
{
Task<PageResult<itemlabels>> GetDataListAsync(PageInput<ConditionDTO> input);
Task<itemlabels> GetTheDataAsync(string id);
Task AddDataAsync(itemlabels data);
Task UpdateDataAsync(itemlabels data);
Task DeleteDataAsync(List<string> ids);
}
}

16
src/Coldairarrow.IBusiness/HuiYan/IitemsBusiness.cs

@ -0,0 +1,16 @@
using Coldairarrow.Entity.HuiYan;
using Coldairarrow.Util;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Coldairarrow.Business.HuiYan
{
public interface IitemsBusiness
{
Task<PageResult<items>> GetDataListAsync(PageInput<ConditionDTO> input);
Task<items> GetTheDataAsync(string id);
Task AddDataAsync(items data);
Task UpdateDataAsync(items data);
Task DeleteDataAsync(List<string> ids);
}
}

19
src/Coldairarrow.IBusiness/HuiYan/IteamitemsBusiness.cs

@ -0,0 +1,19 @@
using Coldairarrow.Entity.DTO;
using Coldairarrow.Entity.HuiYan;
using Coldairarrow.Util;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Coldairarrow.Business.HuiYan
{
public interface IteamitemsBusiness
{
Task<PageResult<teamitems>> GetDataListAsync(PageInput<ConditionDTO> input);
Task<teamitems> GetTheDataAsync(string id);
Task AddDataAsync(teamitems data);
Task UpdateDataAsync(teamitems data);
Task DeleteDataAsync(List<string> ids);
AjaxResult AddItem(TeamitemDto model);
}
}

98
src/Coldairarrow.Web/src/views/HuiYan/itemlabels/EditForm.vue

@ -0,0 +1,98 @@
<template>
<a-modal
:title="title"
width="40%"
:visible="visible"
:confirmLoading="loading"
@ok="handleSubmit"
@cancel="()=>{this.visible=false}"
>
<a-spin :spinning="loading">
<a-form-model ref="form" :model="entity" :rules="rules" v-bind="layout">
<a-form-model-item label="宝贝ID" prop="ItemsId">
<a-input v-model="entity.ItemsId" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="是否筛选" prop="IsScreening">
<a-input v-model="entity.IsScreening" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="是否过滤" prop="IsFilter">
<a-input v-model="entity.IsFilter" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="是否竞品" prop="IsCompeting">
<a-input v-model="entity.IsCompeting" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="是否加入产品库" prop="IsAdded">
<a-input v-model="entity.IsAdded" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="添加人" prop="UserId">
<a-input v-model="entity.UserId" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="团队ID" prop="TeamId">
<a-input v-model="entity.TeamId" autocomplete="off" />
</a-form-model-item>
</a-form-model>
</a-spin>
</a-modal>
</template>
<script>
export default {
props: {
parentObj: Object
},
data() {
return {
layout: {
labelCol: { span: 5 },
wrapperCol: { span: 18 }
},
visible: false,
loading: false,
entity: {},
rules: {},
title: ''
}
},
methods: {
init() {
this.visible = true
this.entity = {}
this.$nextTick(() => {
this.$refs['form'].clearValidate()
})
},
openForm(id, title) {
this.init()
if (id) {
this.loading = true
this.$http.post('/HuiYan/itemlabels/GetTheData', { id: id }).then(resJson => {
this.loading = false
this.entity = resJson.Data
})
}
},
handleSubmit() {
this.$refs['form'].validate(valid => {
if (!valid) {
return
}
this.loading = true
this.$http.post('/HuiYan/itemlabels/SaveData', this.entity).then(resJson => {
this.loading = false
if (resJson.Success) {
this.$message.success('操作成功!')
this.visible = false
this.parentObj.getDataList()
} else {
this.$message.error(resJson.Msg)
}
})
})
}
}
}
</script>

165
src/Coldairarrow.Web/src/views/HuiYan/itemlabels/List.vue

@ -0,0 +1,165 @@
<template>
<a-card :bordered="false">
<div class="table-operator">
<a-button type="primary" icon="plus" @click="hanldleAdd()">新建</a-button>
<a-button
type="primary"
icon="minus"
@click="handleDelete(selectedRowKeys)"
:disabled="!hasSelected()"
:loading="loading"
>删除</a-button>
<a-button type="primary" icon="redo" @click="getDataList()">刷新</a-button>
</div>
<div class="table-page-search-wrapper">
<a-form layout="inline">
<a-row :gutter="10">
<a-col :md="4" :sm="24">
<a-form-item label="查询类别">
<a-select allowClear v-model="queryParam.condition">
<a-select-option key="ItemsId">宝贝ID</a-select-option>
<a-select-option key="UserId">添加人</a-select-option>
<a-select-option key="TeamId">团队ID</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="4" :sm="24">
<a-form-item>
<a-input v-model="queryParam.keyword" placeholder="关键字" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="24">
<a-button type="primary" @click="() => {this.pagination.current = 1; this.getDataList()}">查询</a-button>
<a-button style="margin-left: 8px" @click="() => (queryParam = {})">重置</a-button>
</a-col>
</a-row>
</a-form>
</div>
<a-table
ref="table"
:columns="columns"
:rowKey="row => row.Id"
:dataSource="data"
:pagination="pagination"
:loading="loading"
@change="handleTableChange"
:rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:bordered="true"
size="small"
>
<span slot="action" slot-scope="text, record">
<template>
<a @click="handleEdit(record.Id)">编辑</a>
<a-divider type="vertical" />
<a @click="handleDelete([record.Id])">删除</a>
</template>
</span>
</a-table>
<edit-form ref="editForm" :parentObj="this"></edit-form>
</a-card>
</template>
<script>
import EditForm from './EditForm'
const columns = [
{ title: '宝贝ID', dataIndex: 'ItemsId', width: '10%' },
{ title: '是否筛选', dataIndex: 'IsScreening', width: '10%' },
{ title: '是否过滤', dataIndex: 'IsFilter', width: '10%' },
{ title: '是否竞品', dataIndex: 'IsCompeting', width: '10%' },
{ title: '是否加入产品库', dataIndex: 'IsAdded', width: '10%' },
{ title: '添加人', dataIndex: 'UserId', width: '10%' },
{ title: '团队ID', dataIndex: 'TeamId', width: '10%' },
{ title: '操作', dataIndex: 'action', scopedSlots: { customRender: 'action' } }
]
export default {
components: {
EditForm
},
mounted() {
this.getDataList()
},
data() {
return {
data: [],
pagination: {
current: 1,
pageSize: 10,
showTotal: (total, range) => `总数:${total} 当前:${range[0]}-${range[1]}`
},
filters: {},
sorter: { field: 'Id', order: 'asc' },
loading: false,
columns,
queryParam: {},
selectedRowKeys: []
}
},
methods: {
handleTableChange(pagination, filters, sorter) {
this.pagination = { ...pagination }
this.filters = { ...filters }
this.sorter = { ...sorter }
this.getDataList()
},
getDataList() {
this.selectedRowKeys = []
this.loading = true
this.$http
.post('/HuiYan/itemlabels/GetDataList', {
PageIndex: this.pagination.current,
PageRows: this.pagination.pageSize,
SortField: this.sorter.field || 'Id',
SortType: this.sorter.order,
Search: this.queryParam,
...this.filters
})
.then(resJson => {
this.loading = false
this.data = resJson.Data
const pagination = { ...this.pagination }
pagination.total = resJson.Total
this.pagination = pagination
})
},
onSelectChange(selectedRowKeys) {
this.selectedRowKeys = selectedRowKeys
},
hasSelected() {
return this.selectedRowKeys.length > 0
},
hanldleAdd() {
this.$refs.editForm.openForm()
},
handleEdit(id) {
this.$refs.editForm.openForm(id)
},
handleDelete(ids) {
var thisObj = this
this.$confirm({
title: '确认删除吗?',
onOk() {
return new Promise((resolve, reject) => {
thisObj.$http.post('/HuiYan/itemlabels/DeleteData', ids).then(resJson => {
resolve()
if (resJson.Success) {
thisObj.$message.success('操作成功!')
thisObj.getDataList()
} else {
thisObj.$message.error(resJson.Msg)
}
})
})
}
})
}
}
}
</script>

86
src/Coldairarrow.Web/src/views/HuiYan/items/EditForm.vue

@ -0,0 +1,86 @@
<template>
<a-modal
:title="title"
width="40%"
:visible="visible"
:confirmLoading="loading"
@ok="handleSubmit"
@cancel="()=>{this.visible=false}"
>
<a-spin :spinning="loading">
<a-form-model ref="form" :model="entity" :rules="rules" v-bind="layout">
<a-form-model-item label="宝贝ID" prop="GoodsId">
<a-input v-model="entity.GoodsId" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="是否集团过滤" prop="HasFilter">
<a-input v-model="entity.HasFilter" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="所属平台" prop="Platform">
<a-input v-model="entity.Platform" autocomplete="off" />
</a-form-model-item>
</a-form-model>
</a-spin>
</a-modal>
</template>
<script>
export default {
props: {
parentObj: Object
},
data() {
return {
layout: {
labelCol: { span: 5 },
wrapperCol: { span: 18 }
},
visible: false,
loading: false,
entity: {},
rules: {},
title: ''
}
},
methods: {
init() {
this.visible = true
this.entity = {}
this.$nextTick(() => {
this.$refs['form'].clearValidate()
})
},
openForm(id, title) {
this.init()
if (id) {
this.loading = true
this.$http.post('/HuiYan/items/GetTheData', { id: id }).then(resJson => {
this.loading = false
this.entity = resJson.Data
})
}
},
handleSubmit() {
this.$refs['form'].validate(valid => {
if (!valid) {
return
}
this.loading = true
this.$http.post('/HuiYan/items/SaveData', this.entity).then(resJson => {
this.loading = false
if (resJson.Success) {
this.$message.success('操作成功!')
this.visible = false
this.parentObj.getDataList()
} else {
this.$message.error(resJson.Msg)
}
})
})
}
}
}
</script>

159
src/Coldairarrow.Web/src/views/HuiYan/items/List.vue

@ -0,0 +1,159 @@
<template>
<a-card :bordered="false">
<div class="table-operator">
<a-button type="primary" icon="plus" @click="hanldleAdd()">新建</a-button>
<a-button
type="primary"
icon="minus"
@click="handleDelete(selectedRowKeys)"
:disabled="!hasSelected()"
:loading="loading"
>删除</a-button>
<a-button type="primary" icon="redo" @click="getDataList()">刷新</a-button>
</div>
<div class="table-page-search-wrapper">
<a-form layout="inline">
<a-row :gutter="10">
<a-col :md="4" :sm="24">
<a-form-item label="查询类别">
<a-select allowClear v-model="queryParam.condition">
<a-select-option key="GoodsId">宝贝ID</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="4" :sm="24">
<a-form-item>
<a-input v-model="queryParam.keyword" placeholder="关键字" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="24">
<a-button type="primary" @click="() => {this.pagination.current = 1; this.getDataList()}">查询</a-button>
<a-button style="margin-left: 8px" @click="() => (queryParam = {})">重置</a-button>
</a-col>
</a-row>
</a-form>
</div>
<a-table
ref="table"
:columns="columns"
:rowKey="row => row.Id"
:dataSource="data"
:pagination="pagination"
:loading="loading"
@change="handleTableChange"
:rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:bordered="true"
size="small"
>
<span slot="action" slot-scope="text, record">
<template>
<a @click="handleEdit(record.Id)">编辑</a>
<a-divider type="vertical" />
<a @click="handleDelete([record.Id])">删除</a>
</template>
</span>
</a-table>
<edit-form ref="editForm" :parentObj="this"></edit-form>
</a-card>
</template>
<script>
import EditForm from './EditForm'
const columns = [
{ title: '宝贝ID', dataIndex: 'GoodsId', width: '10%' },
{ title: '是否集团过滤', dataIndex: 'HasFilter', width: '10%' },
{ title: '所属平台', dataIndex: 'Platform', width: '10%' },
{ title: '操作', dataIndex: 'action', scopedSlots: { customRender: 'action' } }
]
export default {
components: {
EditForm
},
mounted() {
this.getDataList()
},
data() {
return {
data: [],
pagination: {
current: 1,
pageSize: 10,
showTotal: (total, range) => `总数:${total} 当前:${range[0]}-${range[1]}`
},
filters: {},
sorter: { field: 'Id', order: 'asc' },
loading: false,
columns,
queryParam: {},
selectedRowKeys: []
}
},
methods: {
handleTableChange(pagination, filters, sorter) {
this.pagination = { ...pagination }
this.filters = { ...filters }
this.sorter = { ...sorter }
this.getDataList()
},
getDataList() {
this.selectedRowKeys = []
this.loading = true
this.$http
.post('/HuiYan/items/GetDataList', {
PageIndex: this.pagination.current,
PageRows: this.pagination.pageSize,
SortField: this.sorter.field || 'Id',
SortType: this.sorter.order,
Search: this.queryParam,
...this.filters
})
.then(resJson => {
this.loading = false
this.data = resJson.Data
const pagination = { ...this.pagination }
pagination.total = resJson.Total
this.pagination = pagination
})
},
onSelectChange(selectedRowKeys) {
this.selectedRowKeys = selectedRowKeys
},
hasSelected() {
return this.selectedRowKeys.length > 0
},
hanldleAdd() {
this.$refs.editForm.openForm()
},
handleEdit(id) {
this.$refs.editForm.openForm(id)
},
handleDelete(ids) {
var thisObj = this
this.$confirm({
title: '确认删除吗?',
onOk() {
return new Promise((resolve, reject) => {
thisObj.$http.post('/HuiYan/items/DeleteData', ids).then(resJson => {
resolve()
if (resJson.Success) {
thisObj.$message.success('操作成功!')
thisObj.getDataList()
} else {
thisObj.$message.error(resJson.Msg)
}
})
})
}
})
}
}
}
</script>

122
src/Coldairarrow.Web/src/views/HuiYan/teamitems/EditForm.vue

@ -0,0 +1,122 @@
<template>
<a-modal
:title="title"
width="40%"
:visible="visible"
:confirmLoading="loading"
@ok="handleSubmit"
@cancel="()=>{this.visible=false}"
>
<a-spin :spinning="loading">
<a-form-model ref="form" :model="entity" :rules="rules" v-bind="layout">
<a-form-model-item label="商品表的ID" prop="ItemId">
<a-input v-model="entity.ItemId" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="宝贝标题" prop="Title">
<a-input v-model="entity.Title" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="宝贝价格" prop="Price">
<a-input v-model="entity.Price" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="收货人数" prop="Sales">
<a-input v-model="entity.Sales" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="商品图片" prop="ItemImg">
<a-input v-model="entity.ItemImg" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="添加人" prop="UserId">
<a-input v-model="entity.UserId" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="团队Id" prop="TeamId">
<a-input v-model="entity.TeamId" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="对标商品标题" prop="RivalTitle">
<a-input v-model="entity.RivalTitle" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="对标商品价格" prop="RivalPrice">
<a-input v-model="entity.RivalPrice" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="对标收货人数" prop="RivalSales">
<a-input v-model="entity.RivalSales" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="对标商品图片" prop="RivalImg">
<a-input v-model="entity.RivalImg" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="对标商品ID" prop="RivalGoodsId">
<a-input v-model="entity.RivalGoodsId" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="状态" prop="State">
<a-input v-model="entity.State" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="扩展信息" prop="ExtensionJson">
<a-input v-model="entity.ExtensionJson" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="对标商品评价数量" prop="RivalPLCount">
<a-input v-model="entity.RivalPLCount" autocomplete="off" />
</a-form-model-item>
</a-form-model>
</a-spin>
</a-modal>
</template>
<script>
export default {
props: {
parentObj: Object
},
data() {
return {
layout: {
labelCol: { span: 5 },
wrapperCol: { span: 18 }
},
visible: false,
loading: false,
entity: {},
rules: {},
title: ''
}
},
methods: {
init() {
this.visible = true
this.entity = {}
this.$nextTick(() => {
this.$refs['form'].clearValidate()
})
},
openForm(id, title) {
this.init()
if (id) {
this.loading = true
this.$http.post('/HuiYan/teamitems/GetTheData', { id: id }).then(resJson => {
this.loading = false
this.entity = resJson.Data
})
}
},
handleSubmit() {
this.$refs['form'].validate(valid => {
if (!valid) {
return
}
this.loading = true
this.$http.post('/HuiYan/teamitems/SaveData', this.entity).then(resJson => {
this.loading = false
if (resJson.Success) {
this.$message.success('操作成功!')
this.visible = false
this.parentObj.getDataList()
} else {
this.$message.error(resJson.Msg)
}
})
})
}
}
}
</script>

180
src/Coldairarrow.Web/src/views/HuiYan/teamitems/List.vue

@ -0,0 +1,180 @@
<template>
<a-card :bordered="false">
<div class="table-operator">
<a-button type="primary" icon="plus" @click="hanldleAdd()">新建</a-button>
<a-button
type="primary"
icon="minus"
@click="handleDelete(selectedRowKeys)"
:disabled="!hasSelected()"
:loading="loading"
>删除</a-button>
<a-button type="primary" icon="redo" @click="getDataList()">刷新</a-button>
</div>
<div class="table-page-search-wrapper">
<a-form layout="inline">
<a-row :gutter="10">
<a-col :md="4" :sm="24">
<a-form-item label="查询类别">
<a-select allowClear v-model="queryParam.condition">
<a-select-option key="ItemId">商品表的ID</a-select-option>
<a-select-option key="Title">宝贝标题</a-select-option>
<a-select-option key="ItemImg">商品图片</a-select-option>
<a-select-option key="UserId">添加人</a-select-option>
<a-select-option key="TeamId">团队Id</a-select-option>
<a-select-option key="RivalTitle">对标商品标题</a-select-option>
<a-select-option key="RivalSales">对标收货人数</a-select-option>
<a-select-option key="RivalImg">对标商品图片</a-select-option>
<a-select-option key="RivalGoodsId">对标商品ID</a-select-option>
<a-select-option key="ExtensionJson">扩展信息</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="4" :sm="24">
<a-form-item>
<a-input v-model="queryParam.keyword" placeholder="关键字" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="24">
<a-button type="primary" @click="() => {this.pagination.current = 1; this.getDataList()}">查询</a-button>
<a-button style="margin-left: 8px" @click="() => (queryParam = {})">重置</a-button>
</a-col>
</a-row>
</a-form>
</div>
<a-table
ref="table"
:columns="columns"
:rowKey="row => row.Id"
:dataSource="data"
:pagination="pagination"
:loading="loading"
@change="handleTableChange"
:rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:bordered="true"
size="small"
>
<span slot="action" slot-scope="text, record">
<template>
<a @click="handleEdit(record.Id)">编辑</a>
<a-divider type="vertical" />
<a @click="handleDelete([record.Id])">删除</a>
</template>
</span>
</a-table>
<edit-form ref="editForm" :parentObj="this"></edit-form>
</a-card>
</template>
<script>
import EditForm from './EditForm'
const columns = [
{ title: '商品表的ID', dataIndex: 'ItemId', width: '10%' },
{ title: '宝贝标题', dataIndex: 'Title', width: '10%' },
{ title: '宝贝价格', dataIndex: 'Price', width: '10%' },
{ title: '收货人数', dataIndex: 'Sales', width: '10%' },
{ title: '商品图片', dataIndex: 'ItemImg', width: '10%' },
{ title: '添加人', dataIndex: 'UserId', width: '10%' },
{ title: '团队Id', dataIndex: 'TeamId', width: '10%' },
{ title: '对标商品标题', dataIndex: 'RivalTitle', width: '10%' },
{ title: '对标商品价格', dataIndex: 'RivalPrice', width: '10%' },
{ title: '对标收货人数', dataIndex: 'RivalSales', width: '10%' },
{ title: '对标商品图片', dataIndex: 'RivalImg', width: '10%' },
{ title: '对标商品ID', dataIndex: 'RivalGoodsId', width: '10%' },
{ title: '状态', dataIndex: 'State', width: '10%' },
{ title: '扩展信息', dataIndex: 'ExtensionJson', width: '10%' },
{ title: '对标商品评价数量', dataIndex: 'RivalPLCount', width: '10%' },
{ title: '操作', dataIndex: 'action', scopedSlots: { customRender: 'action' } }
]
export default {
components: {
EditForm
},
mounted() {
this.getDataList()
},
data() {
return {
data: [],
pagination: {
current: 1,
pageSize: 10,
showTotal: (total, range) => `总数:${total} 当前:${range[0]}-${range[1]}`
},
filters: {},
sorter: { field: 'Id', order: 'asc' },
loading: false,
columns,
queryParam: {},
selectedRowKeys: []
}
},
methods: {
handleTableChange(pagination, filters, sorter) {
this.pagination = { ...pagination }
this.filters = { ...filters }
this.sorter = { ...sorter }
this.getDataList()
},
getDataList() {
this.selectedRowKeys = []
this.loading = true
this.$http
.post('/HuiYan/teamitems/GetDataList', {
PageIndex: this.pagination.current,
PageRows: this.pagination.pageSize,
SortField: this.sorter.field || 'Id',
SortType: this.sorter.order,
Search: this.queryParam,
...this.filters
})
.then(resJson => {
this.loading = false
this.data = resJson.Data
const pagination = { ...this.pagination }
pagination.total = resJson.Total
this.pagination = pagination
})
},
onSelectChange(selectedRowKeys) {
this.selectedRowKeys = selectedRowKeys
},
hasSelected() {
return this.selectedRowKeys.length > 0
},
hanldleAdd() {
this.$refs.editForm.openForm()
},
handleEdit(id) {
this.$refs.editForm.openForm(id)
},
handleDelete(ids) {
var thisObj = this
this.$confirm({
title: '确认删除吗?',
onOk() {
return new Promise((resolve, reject) => {
thisObj.$http.post('/HuiYan/teamitems/DeleteData', ids).then(resJson => {
resolve()
if (resJson.Success) {
thisObj.$message.success('操作成功!')
thisObj.getDataList()
} else {
thisObj.$message.error(resJson.Msg)
}
})
})
}
})
}
}
}
</script>

140
客户端/齐越慧眼/齐越慧眼/vuepage/client/src/views/items/Index.vue

@ -15,36 +15,36 @@
</a-tab-pane>
</a-tabs>
<a-card>
<a-row >
<a-col :span="3">
<div class="border">
<a-row>
<a-col :span="4">
<div class="headCol headColFirst">商品信息</div>
</a-col>
<a-col :span="1">
<div class="headCol">平台</div>
</a-col>
<a-col :span="2">
<a-col :span="3">
<div class="headCol">SKU名称</div>
</a-col>
<a-col :span="1">
<a-col :span="2">
<div class="headCol">采购链接</div>
</a-col>
<a-col :span="2">
<a-col :span="3">
<div class="headCol">供应商来源方式</div>
</a-col>
<a-col :span="1">
<a-col :span="2">
<div class="headCol">采购价</div>
</a-col>
<a-col :span="1">
<a-col :span="2">
<div class="headCol">快递费</div>
</a-col>
<a-col :span="1">
<a-col :span="2">
<div class="headCol">平台扣点</div>
</a-col>
<a-col :span="1">
<div class="headCol">利润率</div>
</a-col>
<a-col :span="3">
<a-col :span="4">
<div class="headCol">对标商品信息</div>
</a-col>
</a-row>
@ -52,54 +52,84 @@
<!--内容页面-->
<a-row justify="center" style="text-align: center;">
<a-col :span="3">
<div style="height: 80px;">商品信息</div>
</a-col>
<a-col :span="1">
<div>平台</div>
<div>平台</div>
<div>平台</div>
<div>平台</div>
</a-col>
<a-col :span="2">
<a-col :span="4">
<div class="borderRight">
<div style="padding-top: 10px;padding-bottom: 10px;width: 200px;margin: 5px auto;">
<img src="//img14.360buyimg.com/n7/jfs/t1/112118/6/12037/103796/5f06bf16E350bf67c/a27484a55ba13cf8.jpg"
width="200" height="165">
<a-row>
<a-col :span="12" style="text-align: left;">¥46.0</a-col>
<a-col :span="12" style="text-align: right;">160人收货</a-col>
</a-row>
</div>
</div>
</a-col>
<a-col :span="1" style="margin-top: 5px;">
<div style="height: 40px;">平台</div>
<div style="height: 40px;">平台</div>
<div style="height: 40px;">平台</div>
<div style="height: 40px;">平台</div>
<div style="height: 40px;">平台</div>
</a-col>
<a-col :span="3" style="margin-top: 5px;">
<div>SKU名称</div>
</a-col>
<a-col :span="1">
<a-col :span="2" style="margin-top: 5px;">
<div>采购链接</div>
</a-col>
<a-col :span="2">
<a-col :span="3" style="margin-top: 5px;">
<div>供应商来源方式</div>
</a-col>
<a-col :span="1">
<a-col :span="2" style="margin-top: 5px;">
<div>采购价</div>
</a-col>
<a-col :span="1">
<a-col :span="2" style="margin-top: 5px;">
<div>快递费</div>
</a-col>
<a-col :span="1">
<a-col :span="2" style="margin-top: 5px;">
<div>平台扣点</div>
</a-col>
<a-col :span="1">
<a-col :span="1" style="margin-top: 5px;">
<div>利润率</div>
</a-col>
<a-col :span="3">
<div style="height: 80px;">对标商品信息</div>
<a-col :span="4">
<div style="padding-top: 10px;padding-bottom: 10px;" class="borderLeft">
<div style="margin: 0px auto;width: 200px;">
<img src="//img14.360buyimg.com/n7/jfs/t1/112118/6/12037/103796/5f06bf16E350bf67c/a27484a55ba13cf8.jpg"
width="200" height="165">
<a-row>
<a-col :span="12" style="text-align: left;">¥46.0</a-col>
<a-col :span="12" style="text-align: right;">160人收货</a-col>
</a-row>
</div>
</div>
</a-col>
<!--操作-->
<a-col :span="24">
<a-row>
<a-col :span="3">
<div>对标商品信息</div>
<a-col :span="24" class="borderT">
<a-row justify="center" type="flex" :align="'middle'">
<a-col :span="4">
<div class="borderNoTop">儿童玩具男孩枪CS对战装备红外线激光枪镭射对战枪儿童真人CS武器</div>
</a-col>
<a-col :span="16">
<a-row>
<a-col :span="12" style="text-align: left;">
<a-button style="margin-left: 10px;" type="primary">精选</a-button>
<a-button style="margin-left: 10px;" type="primary">上架</a-button>
</a-col>
<a-col :span="12" style="text-align: right;">
<a-button style="margin-right: 10px;" type="primary">放弃</a-button>
<a-button style="margin-right: 10px;" type="primary">保存</a-button>
</a-col>
</a-row>
</a-col>
<a-col :span="10">操作</a-col>
<a-col :span="3">
<div>对标商品信息</div>
<a-col :span="4">
<div class="borderNoTop">儿童玩具男孩枪CS对战装备红外线激光枪镭射对战枪儿童真人CS武器</div>
</a-col>
</a-row>
</a-col>
</a-row>
</a-card>
</div>
</div>
</template>
@ -109,6 +139,11 @@
data() {
return {
}
},
methods: {
getDatasByJson(row){
}
},
}
@ -125,4 +160,35 @@
.headColFirst {
border-left: 1px solid rgba(215, 215, 215, 1);
}
.borderNoTop {
border: 1px solid rgba(215, 215, 215, 1);
border-top: 0px;
border-bottom: 0px;
}
.borderT {
border: 1px solid rgba(215, 215, 215, 1);
border-left: 0px;
border-right: 0px;
border-bottom: 0px;
}
.border {
border: 1px solid rgba(215, 215, 215, 1);
width: 1280px;
}
.borderLeft {
border: 1px solid rgba(215, 215, 215, 1);
border-top: 0px;
border-right: 0px;
border-bottom: 0px;
}
.borderRight {
border: 1px solid rgba(215, 215, 215, 1);
border-top: 0px;
border-left: 0px;
border-bottom: 0px;
}
</style>
Loading…
Cancel
Save