Browse Source

加入慧眼发布任务

master
feng 3 years ago
parent
commit
a9f37527c0
  1. 65
      src/Coldairarrow.Api/Controllers/JDSku/jdskuchangeController.cs
  2. 65
      src/Coldairarrow.Api/Controllers/JDSku/jdskuinfoController.cs
  3. 78
      src/Coldairarrow.Api/Controllers/JDSku/jdskutaskController.cs
  4. 25
      src/Coldairarrow.Business/HuiYan/itemlabelsBusiness.cs
  5. 66
      src/Coldairarrow.Business/JDSku/jdskuchangeBusiness.cs
  6. 66
      src/Coldairarrow.Business/JDSku/jdskuinfoBusiness.cs
  7. 85
      src/Coldairarrow.Business/JDSku/jdskutaskBusiness.cs
  8. 106
      src/Coldairarrow.Entity/JDSku/jdskuchange.cs
  9. 51
      src/Coldairarrow.Entity/JDSku/jdskuinfo.cs
  10. 76
      src/Coldairarrow.Entity/JDSku/jdskutask.cs
  11. 16
      src/Coldairarrow.IBusiness/JDSku/IjdskuchangeBusiness.cs
  12. 16
      src/Coldairarrow.IBusiness/JDSku/IjdskuinfoBusiness.cs
  13. 17
      src/Coldairarrow.IBusiness/JDSku/IjdskutaskBusiness.cs
  14. 119
      src/Coldairarrow.Web/src/views/JDSku/jdskuchange/EditForm.vue
  15. 181
      src/Coldairarrow.Web/src/views/JDSku/jdskuchange/List.vue
  16. 86
      src/Coldairarrow.Web/src/views/JDSku/jdskuinfo/EditForm.vue
  17. 161
      src/Coldairarrow.Web/src/views/JDSku/jdskuinfo/List.vue
  18. 101
      src/Coldairarrow.Web/src/views/JDSku/jdskutask/EditForm.vue
  19. 168
      src/Coldairarrow.Web/src/views/JDSku/jdskutask/List.vue

65
src/Coldairarrow.Api/Controllers/JDSku/jdskuchangeController.cs

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

65
src/Coldairarrow.Api/Controllers/JDSku/jdskuinfoController.cs

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

78
src/Coldairarrow.Api/Controllers/JDSku/jdskutaskController.cs

@ -0,0 +1,78 @@
using Coldairarrow.Business.JDSku;
using Coldairarrow.Entity.JDSku;
using Coldairarrow.Util;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Coldairarrow.Api.Controllers.JDSku
{
[Route("/JDSku/[controller]/[action]")]
public class jdskutaskController : BaseApiController
{
#region DI
public jdskutaskController(IjdskutaskBusiness jdskutaskBus)
{
_jdskutaskBus = jdskutaskBus;
}
IjdskutaskBusiness _jdskutaskBus { get; }
#endregion
#region 获取
[HttpPost]
public async Task<PageResult<jdskutask>> GetDataList(PageInput<ConditionDTO> input)
{
return await _jdskutaskBus.GetDataListAsync(input);
}
[HttpPost]
public async Task<jdskutask> GetTheData(IdInputDTO input)
{
return await _jdskutaskBus.GetTheDataAsync(input.id);
}
#endregion
#region 提交
[HttpPost]
public async Task SaveData(jdskutask data)
{
if (data.Id.IsNullOrEmpty())
{
InitEntity(data);
await _jdskutaskBus.AddDataAsync(data);
}
else
{
await _jdskutaskBus.UpdateDataAsync(data);
}
}
[HttpPost]
public async Task DeleteData(List<string> ids)
{
await _jdskutaskBus.DeleteDataAsync(ids);
}
#endregion
/// <summary>
/// 发布任务
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[HttpPost]
public async Task PushTask([FromBody] jdskutask model)
{
await _jdskutaskBus.PushTask(model);
}
}
}

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

@ -11,18 +11,21 @@ using System;
using System.Threading.Tasks;
using System.Linq.Expressions;
using Coldairarrow.IBusiness;
using Coldairarrow.Business.JDSku;
namespace Coldairarrow.Business.HuiYan
{
public class itemlabelsBusiness : BaseBusiness<itemlabels>, IitemlabelsBusiness, ITransientDependency
{
IteamitemsBusiness iteamitemsBusiness;
IjdskutaskBusiness ijdskutaskBusiness;
readonly IOperator _operator;
public itemlabelsBusiness(IDbAccessor db, IteamitemsBusiness _iteamitemsBusiness, IOperator @operator)
public itemlabelsBusiness(IDbAccessor db, IteamitemsBusiness _iteamitemsBusiness, IOperator @operator, IjdskutaskBusiness _ijdskutaskBusiness)
: base(db)
{
iteamitemsBusiness = _iteamitemsBusiness;
_operator = @operator;
ijdskutaskBusiness = _ijdskutaskBusiness;
}
@ -154,6 +157,26 @@ namespace Coldairarrow.Business.HuiYan
// return SetAlbbCooperation(item);
//}
//如果是竞品,则添加任务池
if (model.Status == ItemLabelStatus.Competing)
{
//添加任务池
ijdskutaskBusiness.PushTask(new Entity.JDSku.jdskutask()
{
Sku = model.ItemId,
CreateTime = DateTime.Now,
CreatorId = string.Empty,
Deleted = false,
Id = IdHelper.GetId(),
State = null,
TeamId = _operator.TeamId,
UserId = _operator.UserId,
UserSku = model.Sku
}).Wait();
}
var where = LinqHelper.True<itemlabels>().And(c => c.ItemsId == item.Id);
//团队筛选

66
src/Coldairarrow.Business/JDSku/jdskuchangeBusiness.cs

@ -0,0 +1,66 @@
using Coldairarrow.Entity.JDSku;
using Coldairarrow.Util;
using Coldairarrow.Util.DataAccess;
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.JDSku
{
public class jdskuchangeBusiness : BaseBusiness<jdskuchange>, IjdskuchangeBusiness, ITransientDependency
{
public jdskuchangeBusiness(IMDSDbAccessor db)
: base(db)
{
}
#region 外部接口
public async Task<PageResult<jdskuchange>> GetDataListAsync(PageInput<ConditionDTO> input)
{
var q = GetIQueryable();
var where = LinqHelper.True<jdskuchange>();
var search = input.Search;
//筛选
if (!search.Condition.IsNullOrEmpty() && !search.Keyword.IsNullOrEmpty())
{
var newWhere = DynamicExpressionParser.ParseLambda<jdskuchange, bool>(
ParsingConfig.Default, false, $@"{search.Condition}.Contains(@0)", search.Keyword);
where = where.And(newWhere);
}
return await q.Where(where).GetPageResultAsync(input);
}
public async Task<jdskuchange> GetTheDataAsync(string id)
{
return await GetEntityAsync(id);
}
public async Task AddDataAsync(jdskuchange data)
{
await InsertAsync(data);
}
public async Task UpdateDataAsync(jdskuchange data)
{
await UpdateAsync(data);
}
public async Task DeleteDataAsync(List<string> ids)
{
await DeleteAsync(ids);
}
#endregion
#region 私有成员
#endregion
}
}

66
src/Coldairarrow.Business/JDSku/jdskuinfoBusiness.cs

@ -0,0 +1,66 @@
using Coldairarrow.Entity.JDSku;
using Coldairarrow.Util;
using Coldairarrow.Util.DataAccess;
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.JDSku
{
public class jdskuinfoBusiness : BaseBusiness<jdskuinfo>, IjdskuinfoBusiness, ITransientDependency
{
public jdskuinfoBusiness(IMDSDbAccessor db)
: base(db)
{
}
#region 外部接口
public async Task<PageResult<jdskuinfo>> GetDataListAsync(PageInput<ConditionDTO> input)
{
var q = GetIQueryable();
var where = LinqHelper.True<jdskuinfo>();
var search = input.Search;
//筛选
if (!search.Condition.IsNullOrEmpty() && !search.Keyword.IsNullOrEmpty())
{
var newWhere = DynamicExpressionParser.ParseLambda<jdskuinfo, bool>(
ParsingConfig.Default, false, $@"{search.Condition}.Contains(@0)", search.Keyword);
where = where.And(newWhere);
}
return await q.Where(where).GetPageResultAsync(input);
}
public async Task<jdskuinfo> GetTheDataAsync(string id)
{
return await GetEntityAsync(id);
}
public async Task AddDataAsync(jdskuinfo data)
{
await InsertAsync(data);
}
public async Task UpdateDataAsync(jdskuinfo data)
{
await UpdateAsync(data);
}
public async Task DeleteDataAsync(List<string> ids)
{
await DeleteAsync(ids);
}
#endregion
#region 私有成员
#endregion
}
}

85
src/Coldairarrow.Business/JDSku/jdskutaskBusiness.cs

@ -0,0 +1,85 @@
using Coldairarrow.Entity.JDSku;
using Coldairarrow.IBusiness;
using Coldairarrow.Util;
using Coldairarrow.Util.DataAccess;
using EFCore.Sharding;
using LinqKit;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Caching.Distributed;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Threading.Tasks;
namespace Coldairarrow.Business.JDSku
{
public class jdskutaskBusiness : BaseBusiness<jdskutask>, IjdskutaskBusiness, ITransientDependency
{
readonly IOperator _operator;
readonly IDistributedCache _cache;
public jdskutaskBusiness(IDbAccessor db, IOperator @operator, IDistributedCache cache)
: base(db)
{
_operator = @operator;
_cache = cache;
}
#region 外部接口
public async Task<PageResult<jdskutask>> GetDataListAsync(PageInput<ConditionDTO> input)
{
var q = GetIQueryable();
var where = LinqHelper.True<jdskutask>();
var search = input.Search;
//筛选
if (!search.Condition.IsNullOrEmpty() && !search.Keyword.IsNullOrEmpty())
{
var newWhere = DynamicExpressionParser.ParseLambda<jdskutask, bool>(
ParsingConfig.Default, false, $@"{search.Condition}.Contains(@0)", search.Keyword);
where = where.And(newWhere);
}
return await q.Where(where).GetPageResultAsync(input);
}
public async Task<jdskutask> GetTheDataAsync(string id)
{
return await GetEntityAsync(id);
}
public async Task AddDataAsync(jdskutask data)
{
await InsertAsync(data);
}
public async Task UpdateDataAsync(jdskutask data)
{
await UpdateAsync(data);
}
public async Task DeleteDataAsync(List<string> ids)
{
await DeleteAsync(ids);
}
#endregion
#region 私有成员
#endregion
public async Task PushTask(jdskutask model)
{
model.Id = IdHelper.GetId();
model.CreateTime = System.DateTime.Now;
model.UserId = _operator.UserId;
model.TeamId = _operator.TeamId;
model.State = null;
await Db.InsertAsync(model);
}
}
}

106
src/Coldairarrow.Entity/JDSku/jdskuchange.cs

@ -0,0 +1,106 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Coldairarrow.Entity.JDSku
{
/// <summary>
/// jd采集商品变化记录
/// </summary>
[Table("jdskuchange")]
public class jdskuchange
{
/// <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 TaskId { get; set; }
/// <summary>
/// 价格
/// </summary>
public Decimal? OldPrice { get; set; }
/// <summary>
/// 新价格
/// </summary>
public Decimal? NewPrice { get; set; }
/// <summary>
/// 活动
/// </summary>
public String OldActive { get; set; }
/// <summary>
/// 新活动
/// </summary>
public String NewActive { get; set; }
/// <summary>
/// 促销
/// </summary>
public String OldPromotion { get; set; }
/// <summary>
/// 新促销
/// </summary>
public String NewPromotion { get; set; }
/// <summary>
/// 优惠券
/// </summary>
public String OldCoupons { get; set; }
/// <summary>
/// 新优惠券
/// </summary>
public String NewCoupons { get; set; }
/// <summary>
/// 相邻sku
/// </summary>
public String NewSkus { get; set; }
/// <summary>
/// 新的相邻Sku
/// </summary>
public String OldSkus { get; set; }
/// <summary>
/// Sku表的Id
/// </summary>
public String SkuId { get; set; }
/// <summary>
/// 旧的标题
/// </summary>
public String OldTitle { get; set; }
/// <summary>
/// 新的标题
/// </summary>
public String NewTitle { get; set; }
}
}

51
src/Coldairarrow.Entity/JDSku/jdskuinfo.cs

@ -0,0 +1,51 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Coldairarrow.Entity.JDSku
{
/// <summary>
/// 京东采集sku详情表
/// </summary>
[Table("jdskuinfo")]
public class jdskuinfo
{
/// <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>
/// sku
/// </summary>
public String Sku { get; set; }
/// <summary>
/// 图片地址
/// </summary>
public String ImgUrl { get; set; }
/// <summary>
/// 备注
/// </summary>
public String Desc { get; set; }
}
}

76
src/Coldairarrow.Entity/JDSku/jdskutask.cs

@ -0,0 +1,76 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Coldairarrow.Entity.JDSku
{
/// <summary>
/// 京东sku采集任务池
/// </summary>
[Table("jdskutask")]
public class jdskutask
{
/// <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>
/// 采集的Sku
/// </summary>
public String Sku { get; set; }
/// <summary>
/// 用户自己的SKU
/// </summary>
public String UserSku { get; set; }
/// <summary>
/// 提交人
/// </summary>
public String UserId { get; set; }
/// <summary>
/// 采集人
/// </summary>
public String WorkUserId { get; set; }
/// <summary>
/// 状态
/// </summary>
public Int32? State { get; set; }
/// <summary>
/// 采集任务开始时间
/// </summary>
public DateTime? WorkStartDate { get; set; }
/// <summary>
/// 采集结束时间
/// </summary>
public DateTime? WorkEndDate { get; set; }
/// <summary>
/// 团队ID
/// </summary>
public String TeamId { get; set; }
}
}

16
src/Coldairarrow.IBusiness/JDSku/IjdskuchangeBusiness.cs

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

16
src/Coldairarrow.IBusiness/JDSku/IjdskuinfoBusiness.cs

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

17
src/Coldairarrow.IBusiness/JDSku/IjdskutaskBusiness.cs

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

119
src/Coldairarrow.Web/src/views/JDSku/jdskuchange/EditForm.vue

@ -0,0 +1,119 @@
<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="TaskId">
<a-input v-model="entity.TaskId" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="价格" prop="OldPrice">
<a-input v-model="entity.OldPrice" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="新价格" prop="NewPrice">
<a-input v-model="entity.NewPrice" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="活动" prop="OldActive">
<a-input v-model="entity.OldActive" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="新活动" prop="NewActive">
<a-input v-model="entity.NewActive" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="促销" prop="OldPromotion">
<a-input v-model="entity.OldPromotion" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="新促销" prop="NewPromotion">
<a-input v-model="entity.NewPromotion" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="优惠券" prop="OldCoupons">
<a-input v-model="entity.OldCoupons" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="新优惠券" prop="NewCoupons">
<a-input v-model="entity.NewCoupons" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="相邻sku" prop="NewSkus">
<a-input v-model="entity.NewSkus" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="新的相邻Sku" prop="OldSkus">
<a-input v-model="entity.OldSkus" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="Sku表的Id" prop="SkuId">
<a-input v-model="entity.SkuId" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="旧的标题" prop="OldTitle">
<a-input v-model="entity.OldTitle" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="新的标题" prop="NewTitle">
<a-input v-model="entity.NewTitle" 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('/JDSku/jdskuchange/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('/JDSku/jdskuchange/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>

181
src/Coldairarrow.Web/src/views/JDSku/jdskuchange/List.vue

@ -0,0 +1,181 @@
<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="TaskId">京东采集任务ID</a-select-option>
<a-select-option key="OldActive">活动</a-select-option>
<a-select-option key="NewActive">新活动</a-select-option>
<a-select-option key="OldPromotion">促销</a-select-option>
<a-select-option key="NewPromotion">新促销</a-select-option>
<a-select-option key="OldCoupons">优惠券</a-select-option>
<a-select-option key="NewCoupons">新优惠券</a-select-option>
<a-select-option key="NewSkus">相邻sku</a-select-option>
<a-select-option key="OldSkus">新的相邻Sku</a-select-option>
<a-select-option key="SkuId">Sku表的Id</a-select-option>
<a-select-option key="OldTitle">旧的标题</a-select-option>
<a-select-option key="NewTitle">新的标题</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: 'TaskId', width: '10%' },
{ title: '价格', dataIndex: 'OldPrice', width: '10%' },
{ title: '新价格', dataIndex: 'NewPrice', width: '10%' },
{ title: '活动', dataIndex: 'OldActive', width: '10%' },
{ title: '新活动', dataIndex: 'NewActive', width: '10%' },
{ title: '促销', dataIndex: 'OldPromotion', width: '10%' },
{ title: '新促销', dataIndex: 'NewPromotion', width: '10%' },
{ title: '优惠券', dataIndex: 'OldCoupons', width: '10%' },
{ title: '新优惠券', dataIndex: 'NewCoupons', width: '10%' },
{ title: '相邻sku', dataIndex: 'NewSkus', width: '10%' },
{ title: '新的相邻Sku', dataIndex: 'OldSkus', width: '10%' },
{ title: 'Sku表的Id', dataIndex: 'SkuId', width: '10%' },
{ title: '旧的标题', dataIndex: 'OldTitle', width: '10%' },
{ title: '新的标题', dataIndex: 'NewTitle', 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('/JDSku/jdskuchange/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('/JDSku/jdskuchange/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/JDSku/jdskuinfo/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="sku" prop="Sku">
<a-input v-model="entity.Sku" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="图片地址" prop="ImgUrl">
<a-input v-model="entity.ImgUrl" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="备注" prop="Desc">
<a-input v-model="entity.Desc" 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('/JDSku/jdskuinfo/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('/JDSku/jdskuinfo/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>

161
src/Coldairarrow.Web/src/views/JDSku/jdskuinfo/List.vue

@ -0,0 +1,161 @@
<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="Sku">sku</a-select-option>
<a-select-option key="ImgUrl">图片地址</a-select-option>
<a-select-option key="Desc">备注</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: 'sku', dataIndex: 'Sku', width: '10%' },
{ title: '图片地址', dataIndex: 'ImgUrl', width: '10%' },
{ title: '备注', dataIndex: 'Desc', 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('/JDSku/jdskuinfo/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('/JDSku/jdskuinfo/DeleteData', ids).then(resJson => {
resolve()
if (resJson.Success) {
thisObj.$message.success('操作成功!')
thisObj.getDataList()
} else {
thisObj.$message.error(resJson.Msg)
}
})
})
}
})
}
}
}
</script>

101
src/Coldairarrow.Web/src/views/JDSku/jdskutask/EditForm.vue

@ -0,0 +1,101 @@
<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="采集的Sku" prop="Sku">
<a-input v-model="entity.Sku" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="用户自己的SKU" prop="UserSku">
<a-input v-model="entity.UserSku" 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="采集人" prop="WorkUserId">
<a-input v-model="entity.WorkUserId" 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="WorkStartDate">
<a-input v-model="entity.WorkStartDate" autocomplete="off" />
</a-form-model-item>
<a-form-model-item label="采集结束时间" prop="WorkEndDate">
<a-input v-model="entity.WorkEndDate" 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('/JDSku/jdskutask/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('/JDSku/jdskutask/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>

168
src/Coldairarrow.Web/src/views/JDSku/jdskutask/List.vue

@ -0,0 +1,168 @@
<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="Sku">采集的Sku</a-select-option>
<a-select-option key="UserSku">用户自己的SKU</a-select-option>
<a-select-option key="UserId">提交人</a-select-option>
<a-select-option key="WorkUserId">采集人</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: '采集的Sku', dataIndex: 'Sku', width: '10%' },
{ title: '用户自己的SKU', dataIndex: 'UserSku', width: '10%' },
{ title: '提交人', dataIndex: 'UserId', width: '10%' },
{ title: '采集人', dataIndex: 'WorkUserId', width: '10%' },
{ title: '状态', dataIndex: 'State', width: '10%' },
{ title: '采集任务开始时间', dataIndex: 'WorkStartDate', width: '10%' },
{ title: '采集结束时间', dataIndex: 'WorkEndDate', 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('/JDSku/jdskutask/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('/JDSku/jdskutask/DeleteData', ids).then(resJson => {
resolve()
if (resJson.Success) {
thisObj.$message.success('操作成功!')
thisObj.getDataList()
} else {
thisObj.$message.error(resJson.Msg)
}
})
})
}
})
}
}
}
</script>
Loading…
Cancel
Save