Commit 2d276183 by 陈宁

# dev 券码服务

parent e9408e1f
......@@ -2,7 +2,9 @@ using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.Testing
{
......@@ -32,6 +34,12 @@ namespace Freemud.BE.Toolbox.Testing
Console.WriteLine(obj.ToString());
Console.WriteLine(JsonConvert.SerializeObject(obj));
Console.WriteLine("obj is: " + JsonConvert.SerializeObject(obj));
Console.WriteLine(obj.name);
Console.WriteLine(obj.Name);
Console.WriteLine(obj.Sex);
Console.WriteLine(obj.Sex.toString());
}
private dynamic getDynamic()
......@@ -43,6 +51,35 @@ namespace Freemud.BE.Toolbox.Testing
return obj;
}
[TestMethod]
public void asdasdasdasd()
{
long a = 0;
int b = 990;
decimal c = (decimal)b / 100;
Console.WriteLine(c);
}
[TestMethod]
public void asdlkjasdlkjaslkdjaskldj()
{
Customer c = null;
Console.WriteLine(c?.Channel == (int)ChannelEnum.Delivery);
c = new Customer { Channel = 2 };
Console.WriteLine(c?.Channel == (int)ChannelEnum.Delivery);
c.Channel = 5;
Console.WriteLine(c?.Channel == (int)ChannelEnum.Delivery);
}
}
public class Customer
{
public int Channel { get; set; }
}
public enum ChannelEnum
......
......@@ -17,16 +17,22 @@ namespace Freemud.BE.Toolbox.WebApi.Controllers
this.requestResourceService = requestResourceService;
}
[HttpPost("get-coupon-info")]
[HttpPost("get-coupon")]
public async Task<IActionResult> GetCouponInfo([FromBody]GetCouponInfoRequest request)
{
return Ok(data: await requestResourceService.GetCouponInfo(request));
}
[HttpPost("get-product-info")]
[HttpPost("get-product")]
public async Task<IActionResult> GetProductInfo([FromBody]GetProductInfoRequest request)
{
return Ok(data: await requestResourceService.GetProductInfo(request));
}
[HttpPost("get-store-by-position")]
public async Task<IActionResult> GetStoreByPosition([FromBody]GetProductInfoRequest request)
{
return Ok(data: await requestResourceService.GetProductInfo(request));
}
}
}
......@@ -13,4 +13,8 @@
<PackageReference Include="UAParser" Version="3.1.44" />
</ItemGroup>
<ItemGroup>
<Folder Include="Infrastructure\Http\" />
</ItemGroup>
</Project>
using RestSharp;
using Newtonsoft.Json;
using RestSharp;
using Serilog;
using System;
using System.Collections.Generic;
using System.Linq;
......@@ -29,8 +31,15 @@ namespace Freemud.BE.Toolbox.WebApi.Infrastructure.Helpers
}
}
Log.Information($"url: {url}");
Log.Information($"header: {JsonConvert.SerializeObject(headers)}");
Log.Information($"query: {JsonConvert.SerializeObject(queries)}");
var response = await client.ExecuteAsync<TResult>(request);
return response;
Log.Information($"response: {response.Content}");
return null;
}
public static async Task<IRestResponse<TResult>> Post<TResult>(string url, Dictionary<string, object> headers = null, Dictionary<string, object> queries = null, object jsonBody = null)
......@@ -59,7 +68,15 @@ namespace Freemud.BE.Toolbox.WebApi.Infrastructure.Helpers
request.AddJsonBody(jsonBody);
}
Log.Information($"url: {url}");
Log.Information($"header: {JsonConvert.SerializeObject(headers)}");
Log.Information($"query: {JsonConvert.SerializeObject(queries)}");
Log.Information($"data: {JsonConvert.SerializeObject(jsonBody)}");
var response = await client.ExecuteAsync<TResult>(request);
Log.Information($"response: {response.Content}");
return response;
}
}
......
......@@ -10,5 +10,7 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Request
public string CouponCode { get; set; }
public string StoreId { get; set; }
public DateTime Time { get; set; }
}
}
......@@ -7,7 +7,7 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Request
{
public class GetProductInfoRequest : BaseRequestResourceRequest
{
public string ProductId { get; set; }
public List<string> ProductId { get; set; }
public string StoreId { get; set; }
......
......@@ -7,16 +7,18 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Response
{
public class RequestResourceResponse
{
public string Name { get; set; }
public string Url { get; set; }
public object RequestHeaders { get; set; }
public dynamic RequestHeaders { get; set; }
public object RequestBody { get; set; }
public dynamic RequestBody { get; set; }
public object ResponseHeaders { get; set; }
public dynamic ResponseHeaders { get; set; }
public object ResponseBody { get; set; }
public dynamic ResponseBody { get; set; }
public string ResponseError { get; set; }
public dynamic ResponseError { get; set; }
}
}
using Freemud.BE.Toolbox.WebApi.Model;
using Freemud.BE.Toolbox.WebApi.Model.Constants;
using Freemud.BE.Toolbox.WebApi.Model.Response;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Proxy
{
public abstract class BaseProxy
{
private readonly List<RequestResourceConfiguration> requestResources;
protected BaseProxy(List<RequestResourceConfiguration> requestResources)
{
this.requestResources = requestResources;
}
/// <summary>
/// 获取服务地址
/// </summary>
/// <param name="env"></param>
/// <param name="group"></param>
/// <param name="name"></param>
/// <returns></returns>
public string GetUrl(string env, string group, string name)
{
var config = requestResources?.FirstOrDefault(d => d.Name.Equals(group, StringComparison.OrdinalIgnoreCase));
if (config == null)
return string.Empty;
var baseUrl = string.Empty;
switch (env)
{
case ToolboxConstants.ENV_DEV:
baseUrl = config.DevBaseUrl;
break;
case ToolboxConstants.ENV_PROD:
baseUrl = config.ProdBaseUrl;
break;
default:
return string.Empty;
}
var path = config.Resources?.FirstOrDefault(d => d.Name.Equals(name, StringComparison.OrdinalIgnoreCase))?.Path;
if (string.IsNullOrWhiteSpace(path))
return string.Empty;
return $"{baseUrl}{path}";
}
/// <summary>
/// 标准化请求资源输出
/// </summary>
/// <param name="name"></param>
/// <param name="url"></param>
/// <param name="requestHeaders"></param>
/// <param name="requestBody"></param>
/// <param name="responseHeaders"></param>
/// <param name="responseBody"></param>
/// <param name="responseError"></param>
/// <returns></returns>
protected RequestResourceResponse Response(string name, string url, object requestHeaders = null, object requestBody = null, object responseHeaders = null, object responseBody = null, string responseError = "")
{
return new RequestResourceResponse
{
Name = name,
Url = url,
RequestHeaders = requestHeaders,
RequestBody = requestBody,
ResponseHeaders = responseHeaders,
ResponseBody = responseBody,
ResponseError = responseError
};
}
protected string GetChannelPartnerId(string channel)
{
if (string.IsNullOrWhiteSpace(channel))
return string.Empty;
switch (channel)
{
case ToolboxConstants.CHANNEL_DELIVERY:
return "F8538588-C692-4958-A591-A4C71D976209";
case ToolboxConstants.CHANNEL_MCOFFEE:
return "C57FE34D-7C14-4FB7-ACF7-398C9F8875ED";
case ToolboxConstants.CHANNEL_KIOSK:
return "83F6C6F9-8535-4CB9-BE18-5DB050999FA3";
default:
return string.Empty;
}
}
protected string GetChannelUnifyId(string channel, string env)
{
if (string.IsNullOrWhiteSpace(channel))
return string.Empty;
switch (channel)
{
case ToolboxConstants.CHANNEL_DELIVERY:
return "30b5f0ca-399a-4be3-9063-12a3d2622a38";
case ToolboxConstants.CHANNEL_MCOFFEE:
return "c2e95f53-e21b-4445-a6b1-dd4d2d8a7b96";
case ToolboxConstants.CHANNEL_KIOSK:
if (ToolboxConstants.ENV_DEV.Equals(env, StringComparison.OrdinalIgnoreCase))
return "1618";
else if (ToolboxConstants.ENV_PROD.Equals(env, StringComparison.OrdinalIgnoreCase))
return "5578b01b-9904-46ca-a9aa-33f8f80b0b67";
else
return string.Empty;
default:
return string.Empty;
}
}
}
}
using Freemud.BE.Toolbox.WebApi.Infrastructure.Helpers;
using Freemud.BE.Toolbox.WebApi.Model;
using Freemud.BE.Toolbox.WebApi.Model.Constants;
using Freemud.BE.Toolbox.WebApi.Model.Request;
using Freemud.BE.Toolbox.WebApi.Model.Response;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Proxy
{
public class FmCouponProxy : BaseProxy
{
public FmCouponProxy(List<RequestResourceConfiguration> requestResources) : base(requestResources) { }
/// <summary>
/// 获取券码核销渠道
/// 0(Unknown), 1(POS), 2(Online), 3(Pickup), 4(Delivery), 5(McCofe), 6(Kiosk)
/// </summary>
/// <param name="channel"></param>
/// <returns></returns>
private string GetFreemudCouponChannel(string channel)
{
switch (channel)
{
case ToolboxConstants.CHANNEL_DELIVERY:
return "4";
case ToolboxConstants.CHANNEL_MCOFFEE:
return "5";
case ToolboxConstants.CHANNEL_KIOSK:
return "6";
default:
return "0";
}
}
/// <summary>
/// 查询券码信息
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public async Task<RequestResourceResponse> GetCouponInfos(GetCouponInfoRequest request)
{
var url = GetUrl(request.Env, "FreemudCoupon", "coupon_product");
var headers = new Dictionary<string, object> {
{ "pi", GetChannelPartnerId(request.Channel) }
};
var body = new
{
reqtype = 88, // 操作类型; 0(卡券查询), 2(卡券交易查询), 3(卡券冲正), 71(卡券核销), 88(批量查询)
station_id = "999", // POS机编号
operator_id = "999", // 营业员编号
store_id = request.StoreId, // 门店编号
couponlist = request.CouponCode.Split(",").ToList(), // 优惠券编号
channel = GetFreemudCouponChannel(request.Channel) // 核销渠道; 0(Unknown), 1(POS), 2(Online), 3(Pickup), 4(Delivery), 5(McCofe), 6(Kiosk)
};
var response = await HttpHeper.Post<dynamic>(url, headers, jsonBody: body);
return new RequestResourceResponse
{
Name = "获取券码信息",
Url = url,
RequestHeaders = headers,
RequestBody = body,
ResponseBody = response.Data,
ResponseError = response.ErrorMessage
};
}
}
}
using Freemud.BE.Toolbox.WebApi.Infrastructure.Helpers;
using Freemud.BE.Toolbox.WebApi.Model;
using Freemud.BE.Toolbox.WebApi.Model.Request;
using Freemud.BE.Toolbox.WebApi.Model.Response;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Proxy
{
public class FmProductProxy : BaseProxy
{
public FmProductProxy(List<RequestResourceConfiguration> requestResources) : base(requestResources) { }
/// <summary>
/// 获取商品基本信息
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public async Task<RequestResourceResponse> GetProductBaseInfos(GetProductInfoRequest request)
{
var url = GetUrl(request.Env, "FreemudProduct", "listBaseInfosByTimeV2");
url = string.Format(url, string.Join(',', request.ProductId), $"{GetChannelUnifyId(request.Channel, request.Env)}_{request.StoreId}", request.Time.ToString("HH:mm:ss"), true);
var response = await HttpHeper.Get<dynamic>(url);
return new RequestResourceResponse
{
Name = "获取商品信息",
Url = url,
ResponseBody = response.Data,
ResponseError = response.ErrorMessage
};
}
/// <summary>
/// 获取商品扩展信息
/// </summary>
/// <param name="env"></param>
/// <param name="productId"></param>
/// <returns></returns>
public async Task<RequestResourceResponse> GetProductExtensionInfo(string env, int productId)
{
var url = GetUrl(env, "FreemudProduct", "getProductExtensionInfo");
url = string.Format(url, productId);
var response = await HttpHeper.Get<dynamic>(url);
return new RequestResourceResponse
{
Name = "获取商品扩展信息",
Url = url,
ResponseBody = response.Data,
ResponseError = response.ErrorMessage
};
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Proxy
{
public class FmStoreProxy
{
}
}
......@@ -9,8 +9,10 @@ namespace Freemud.BE.Toolbox.WebApi.Services
{
public interface IRequestResourceService
{
Task<RequestResourceResponse> GetCouponInfo(GetCouponInfoRequest request);
Task<List<RequestResourceResponse>> GetCouponInfo(GetCouponInfoRequest request);
Task<RequestResourceResponse> GetProductInfo(GetProductInfoRequest request);
Task<RequestResourceResponse> GetStoreByPosition(GetStoreByPositionRequest request);
}
}
......@@ -84,7 +84,7 @@ namespace Freemud.BE.Toolbox.WebApi
app.UseGlobalExceptionHandler();
app.UseRequestClientInfoReceiver();
//app.UseRequestWebWorkContext();
app.UseRequestWebWorkContext();
app.UseEndpoints(endpoints =>
{
......
......@@ -13,6 +13,6 @@ module.exports = {
rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'vue/no-parsing-error': [2, { "x-invalid-end-tag": false }]
'vue/no-parsing-error': [2, { 'x-invalid-end-tag': false }]
}
}
......@@ -11,4 +11,8 @@ html, body, #app {
.ivu-input:focus {
border-color: #57a3f3;
box-shadow: 0 0 0px 4px rgba(45, 140, 240, 0.2);
}
.ivu-tabs-bar {
margin-bottom: 5px;
}
\ No newline at end of file
......@@ -19,7 +19,7 @@ var _lodash = _interopRequireDefault(require("lodash"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
// dev
_axios["default"].defaults.baseURL = 'http://localhost:51138/api'; // prod
_axios["default"].defaults.baseURL = 'http://129.211.139.23:8018/api'; // prod
// axios.defaults.baseURL = '/api'
_axios["default"].interceptors.request.use(function (config) {
......
"use strict";var _vue=_interopRequireDefault(require("vue")),_App=_interopRequireDefault(require("./App.vue")),_router=_interopRequireDefault(require("./router")),_viewDesign=_interopRequireDefault(require("view-design"));require("view-design/dist/styles/iview.css"),require("./assets/css/global.css");var _axios=_interopRequireDefault(require("axios")),_lodash=_interopRequireDefault(require("lodash"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}_axios.default.defaults.baseURL="http://localhost:51138/api",_axios.default.interceptors.request.use(function(e){var u=window.sessionStorage.getItem("au");return u&&(e.headers.au=u),e}),_vue.default.prototype.$http=_axios.default,_vue.default.prototype._=_lodash.default,_vue.default.use(_viewDesign.default),_vue.default.config.productionTip=!1,new _vue.default({router:_router.default,render:function(e){return e(_App.default)}}).$mount("#app");
\ No newline at end of file
"use strict";var _vue=_interopRequireDefault(require("vue")),_App=_interopRequireDefault(require("./App.vue")),_router=_interopRequireDefault(require("./router")),_viewDesign=_interopRequireDefault(require("view-design"));require("view-design/dist/styles/iview.css"),require("./assets/css/global.css");var _axios=_interopRequireDefault(require("axios")),_lodash=_interopRequireDefault(require("lodash"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}_axios.default.defaults.baseURL="http://129.211.139.23:8018/api",_axios.default.interceptors.request.use(function(e){var u=window.sessionStorage.getItem("au");return u&&(e.headers.au=u),e}),_vue.default.prototype.$http=_axios.default,_vue.default.prototype._=_lodash.default,_vue.default.use(_viewDesign.default),_vue.default.config.productionTip=!1,new _vue.default({router:_router.default,render:function(e){return e(_App.default)}}).$mount("#app");
\ No newline at end of file
......@@ -8,7 +8,7 @@ import axios from 'axios'
import _ from 'lodash'
// dev
axios.defaults.baseURL = 'http://localhost:51138/api'
axios.defaults.baseURL = 'http://129.211.139.23:8018/api'
// prod
// axios.defaults.baseURL = '/api'
axios.interceptors.request.use(config => {
......
......@@ -13,10 +13,10 @@
<Layout>
<Sider hide-trigger class="layout-sider">
<p class="menu-parting"></p>
<Menu theme="dark" width="auto" :active-name="this.$route.path">
<Menu theme="dark" width="auto" :active-name="'/' + this.$route.path.split('/')[1]">
<!-- <MenuItem name="/dashboard" to="/dashboard">
<Icon type="logo-xbox" />首页
</MenuItem> -->
</MenuItem>-->
<MenuItem name="/environment-configure" to="/environment-configure">
<Icon type="md-construct" />环境切换
</MenuItem>
......@@ -25,7 +25,7 @@
</MenuItem>
<!-- <MenuItem name="/be-logging" to="/be-logging">
<Icon type="md-list-box" />日志查询
</MenuItem> -->
</MenuItem>-->
</Menu>
</Sider>
<Layout>
......
<template>
<div>
<h2 class="resource-title">码券对应商品信息</h2>
<Form :label-width="80">
<Row>
<Col span="12">
......@@ -27,13 +26,13 @@
</FormItem>
</Col>
<Col span="12">
<FormItem label="号">
<Input type="text" v-model="couponCode" placeholder="券号"></Input>
<FormItem label="门店号">
<AutoComplete v-model="storeId" :data="[1450026, 99998, 99995]" placeholder="门店编号"></AutoComplete>
</FormItem>
</Col>
<Col span="12">
<FormItem label="门店号">
<Input type="text" v-model="storeId" placeholder="门店编号"></Input>
<FormItem label="号">
<Input type="text" v-model="couponCode" placeholder="券号"></Input>
</FormItem>
</Col>
<Col span="12">
......@@ -51,33 +50,17 @@
<Tabs :animated="false">
<TabPane label="结果" icon="md-list-box">
<List border>
<ListItem>描述说明 - 暂无</ListItem>
<ListItem>暂无</ListItem>
</List>
</TabPane>
<TabPane label="元信息" icon="md-bug">
<div class="resource-result-metadata-panel">
<div class="resource-result-metadata-item">
<span class="resource-result-metadata-item-title">URL</span>
<span class="resource-result-metadata-item-title">Request</span>
<codemirror v-model="metaDataRequestUrl" :options="cmOptions"></codemirror>
</div>
<div class="resource-result-metadata-item">
<span class="resource-result-metadata-item-title">Request Header</span>
<codemirror v-model="metaDataRequestHeader" :options="cmOptions"></codemirror>
</div>
<div class="resource-result-metadata-item">
<span class="resource-result-metadata-item-title">Request Body</span>
<codemirror v-model="metaDataRequestBody" :options="cmOptions"></codemirror>
</div>
<div class="resource-result-metadata-item">
<span class="resource-result-metadata-item-title">Response Error</span>
<Alert type="error">{{this.metaDataResponseError}}</Alert>
</div>
<div class="resource-result-metadata-item">
<span class="resource-result-metadata-item-title">Response Header</span>
<codemirror v-model="metaDataResponseHeader" :options="cmOptions"></codemirror>
</div>
<div class="resource-result-metadata-item">
<span class="resource-result-metadata-item-title">Response Body</span>
<span class="resource-result-metadata-item-title">Response</span>
<codemirror v-model="metaDataResponseBody" :options="cmOptions"></codemirror>
</div>
</div>
......@@ -103,15 +86,11 @@ export default {
loadingSearch: false,
channel: 'delivery',
env: 'dev',
couponCode: '573185005512078',
storeId: '1450026',
couponCode: '',
storeId: '',
viewData: '',
metaDataRequestUrl: '',
metaDataRequestHeader: '',
metaDataRequestBody: '',
metaDataResponseHeader: '',
metaDataResponseBody: '',
metaDataResponseError: '',
cmOptions: {
lineNumbers: true,
readOnly: true,
......@@ -126,22 +105,31 @@ export default {
},
methods: {
async search () {
if (!this.storeId) {
this.$Message.warning('请输入门店号')
return
}
if (!this.couponCode) {
this.$Message.warning('请输入券号')
return
}
this.loadingSearch = true
const params = { env: this.env, channel: this.channel, couponCode: this.couponCode, storeId: this.storeId }
const { data: response } = await this.$http.post('/requestresource/get-coupon-product', params)
const { data: response } = await this.$http.post('/requestresource/get-coupon', params)
if (response.code !== 200) {
this.$Message.error(response.message)
} else {
// const codeStr = '{"title":"json在线解析(简版) -JSON在线解析","json.url":"https://www.sojson.com/simple_json.html","keywords":"json在线解析","功能":["JSON美化","JSON数据类型显示","JSON数组显示角标","高亮显示","错误提示",{"备注":["www.sojson.com","json.la"]}],"加入我们":{"qq群":"259217951","年龄":18,"IsChange":false}}'
// const json = JSON.parse(codeStr)
// this.viewData = JSON.stringify(json, null, '\t')
// this.$Message.success('请求成功')
this.metaDataRequestUrl = response.data.url
this.metaDataRequestHeader = JSON.stringify(response.data.requestHeaders, null, '\t')
this.metaDataRequestBody = JSON.stringify(response.data.requestBody, null, '\t')
this.metaDataResponseHeader = JSON.stringify(response.data.responseHeaders, null, '\t')
this.metaDataRequestUrl =
'================ URL ================\r\n' +
response.data.url + '\n\n' +
'================ HEADERS ============\r\n' +
JSON.stringify(response.data.requestHeaders, null, '\t') + '\r\n' +
'================ DATA ===============\r\n' +
JSON.stringify(response.data.requestBody, null, '\t')
this.metaDataResponseBody = JSON.stringify(response.data.responseBody, null, '\t')
this.metaDataResponseError = response.data.responseError
this.$Message.success('查询成功')
}
......@@ -150,43 +138,3 @@ export default {
}
}
</script>
<style lang="less" scoped>
// .resource-title {
// display: inline-block;
// border-left: 5px solid #be1f19f5;
// text-indent: 10px;
// margin-left: 2px;
// font-weight: bold;
// font-size: 20px;
// margin-bottom: 20px;
// }
// .result-panel {
// .item {
// margin-bottom: 20px;
// span {
// display: inline-block;
// border-left: 5px solid #19be6b80;
// text-indent: 10px;
// margin-bottom: 10px;
// margin-left: 2px;
// font-weight: bold;
// font-size: 25px;
// font-family: fantasy;
// }
// }
// }
</style>
<style lang="less">
.CodeMirror {
border: 1px solid #eee;
height: 100% !important;
}
.CodeMirror-scroll {
height: auto;
overflow-y: hidden;
overflow-x: auto;
}
</style>
......@@ -3,39 +3,41 @@
<h1>请求资源</h1>
<div class="request-resource">
<div class="request-resource-menu">
<Menu>
<Menu :active-name="'/' + this.$route.path.split('/')[2]" @on-select="menuSelect">
<MenuGroup title="券码">
<MenuItem name="1-1" to="/request-resource/coupon-product">
<Icon type="md-cube" />码券对应商品信息
<MenuItem name="/coupon-product" to="/request-resource/coupon-product">
<Icon type="md-cube" />码券商品信息
</MenuItem>
<MenuItem name="1-2" to="/request-resource/user-coupons">
<MenuItem name="/user-coupons" to="/request-resource/user-coupons">
<Icon type="md-cube" />用户券数据
</MenuItem>
<MenuItem name="1-3" to="/request-resource/coupon-freeze">
<MenuItem name="/coupon-freeze" to="/request-resource/coupon-freeze">
<Icon type="md-cube" />激活&冻结
</MenuItem>
</MenuGroup>
<MenuGroup title="商品">
<MenuItem name="3-5" to="/request-resource/product">
<MenuItem name="/product" to="/request-resource/product">
<Icon type="md-cube" />商品信息查询
</MenuItem>
<MenuItem name="3-6" to="/request-resource/product-exentsion">
<Icon type="md-cube" />商品扩展信息
</MenuItem>
</MenuGroup>
<MenuGroup title="订单">
<MenuItem name="4-1" to="/request-resource/order">
<MenuItem name="/order" to="/request-resource/order">
<Icon type="md-cube" />根据订单编号查询订单
</MenuItem>
</MenuGroup>
<MenuGroup title="门店">
<MenuItem name="2-1" to="/request-resource/candao-store">
<MenuItem name="/candao-store" to="/request-resource/candao-store">
<Icon type="md-cube" />餐道经纬度查询门店
</MenuItem>
</MenuGroup>
</Menu>
</div>
<div class="request-resource-content">
<Breadcrumb>
<BreadcrumbItem>请求资源</BreadcrumbItem>
<BreadcrumbItem>{{currentPage}}</BreadcrumbItem>
</Breadcrumb>
<br />
<router-view></router-view>
</div>
</div>
......@@ -44,6 +46,31 @@
<script>
export default {
data () {
return {
resources: [
{ name: '/coupon-product', text: '码券商品信息' },
{ name: '/user-coupons', text: '用户券数据' },
{ name: '/coupon-freeze', text: '激活&冻结' },
{ name: '/product', text: '商品信息查询' },
{ name: '/order', text: '根据订单编号查询订单' },
{ name: '/candao-store', text: '餐道经纬度查询门店' }
],
currentPage: ''
}
},
created () {
this.setCurrentPageOnLoad()
},
methods: {
setCurrentPageOnLoad () {
const name = '/' + this.$route.path.split('/')[2]
this.currentPage = this._.find(this.resources, s => s.name === name).text
},
menuSelect (name) {
this.currentPage = this._.find(this.resources, s => s.name === name).text
}
}
}
</script>
......@@ -51,26 +78,26 @@ export default {
.request-resource {
display: flex;
.request-resource-menu {
flex: 0 0 240px;
flex: 0 0 140px;
.ivu-menu {
width: 180px !important;
.ivu-menu-item {
padding: 8px 8px;
}
.ivu-menu-item-group-title {
height: 35px;
line-height: 35px;
}
}
}
.request-resource-content {
flex: 1;
padding: 0 5px;
padding: 0 10px;
height: 50px;
.ivu-form-item {
margin-bottom: 10px;
}
.resource-title {
display: inline-block;
border-left: 5px solid #be1f19f5;
text-indent: 10px;
margin-left: 2px;
font-weight: bold;
font-size: 20px;
margin-bottom: 20px;
}
.resource-result-metadata-item {
margin-bottom: 20px;
.resource-result-metadata-item-title {
......@@ -80,10 +107,23 @@ export default {
margin-bottom: 10px;
margin-left: 2px;
font-weight: bold;
font-size: 25px;
font-family: fantasy;
font-size: 12px;
font-family: monospace;
}
}
}
}
</style>
<style lang="less">
.CodeMirror {
border: 1px solid #eee;
height: 100% !important;
}
.CodeMirror-scroll {
height: auto;
overflow-y: hidden;
overflow-x: auto;
}
</style>
......@@ -2,4 +2,4 @@ module.exports = {
css: {
extract: false
}
}
\ No newline at end of file
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment