Authored by shuiling.wang@yoho.cn

结算

@@ -37,6 +37,7 @@ @@ -37,6 +37,7 @@
37 <script> 37 <script>
38 import list from './store/list'; 38 import list from './store/list';
39 import FinanceService from 'services/finance/finance-service'; 39 import FinanceService from 'services/finance/finance-service';
  40 +import _ from 'lodash';
40 41
41 export default { 42 export default {
42 data() { 43 data() {
@@ -70,6 +71,7 @@ export default { @@ -70,6 +71,7 @@ export default {
70 // 在这里实现异步查询的方法,建议在service中做 71 // 在这里实现异步查询的方法,建议在service中做
71 let params = { 72 let params = {
72 type: 1, 73 type: 1,
  74 + supplierId: 156,
73 balanceId: +this.filters.balanceId.model, 75 balanceId: +this.filters.balanceId.model,
74 brandId: this.filters.brandId.model, 76 brandId: this.filters.brandId.model,
75 status: this.filters.status.model, 77 status: this.filters.status.model,
@@ -77,10 +79,12 @@ export default { @@ -77,10 +79,12 @@ export default {
77 endTime: this.endTime, 79 endTime: this.endTime,
78 pageSize: this.pageData.pageSize, 80 pageSize: this.pageData.pageSize,
79 pageNo: this.pageData.pageNo 81 pageNo: this.pageData.pageNo
80 - } 82 + };
  83 +
  84 + params = _.pickBy(params, val => val);
81 85
82 this.FinanceService.balanceList(params).then(ret => { 86 this.FinanceService.balanceList(params).then(ret => {
83 - console.log(ret) 87 + this.tableData = _.get(ret, 'data.records', []);
84 }); 88 });
85 }, 89 },
86 reset() { 90 reset() {
@@ -95,7 +99,17 @@ export default { @@ -95,7 +99,17 @@ export default {
95 this.pageData.current = val; 99 this.pageData.current = val;
96 this.search(); 100 this.search();
97 }, 101 },
98 - onClickInfo() {}, 102 + onClickInfo(params) {
  103 + this.$router.push({
  104 + name: 'finance.clearing.detail',
  105 + params: {},
  106 + query: {
  107 + balanceId: params.row.balanceId,
  108 + status: {未结算: 0, 已结算: 1}[params.row.statusDesc],
  109 + brandName: params.row.brandName
  110 + }
  111 + });
  112 + },
99 onClickStock() {} 113 onClickStock() {}
100 } 114 }
101 }; 115 };
1 -<template>  
2 - <div>局部组件</div>  
3 -</template>  
4 -  
5 -<script>  
6 - export default {  
7 - name: 'Demo',  
8 - };  
9 -</script>  
1 -import Demo from './demo';  
2 -  
3 -export {  
4 - Demo  
5 -};  
@@ -25,7 +25,7 @@ @@ -25,7 +25,7 @@
25 </filter-item> 25 </filter-item>
26 <filter-item> 26 <filter-item>
27 <Button type="primary" @click="search">筛选</Button> 27 <Button type="primary" @click="search">筛选</Button>
28 - <Button type="primary" @click="exportData">导出</Button> 28 + <Button type="warning" @click="exportData">导出</Button>
29 <Button @click="reset">清空条件</Button> 29 <Button @click="reset">清空条件</Button>
30 </filter-item> 30 </filter-item>
31 </layout-filter> 31 </layout-filter>
@@ -48,9 +48,13 @@ export default { @@ -48,9 +48,13 @@ export default {
48 }, 48 },
49 created() { 49 created() {
50 this.FinanceService = new FinanceService(); 50 this.FinanceService = new FinanceService();
  51 + this.search();
  52 + },
  53 + mounted() {
  54 +// console.log(this.$route.params.status)
  55 + this.filters.status.model = +this.$route.query.status;
51 }, 56 },
52 computed: { 57 computed: {
53 -  
54 }, 58 },
55 methods: { 59 methods: {
56 search() { 60 search() {
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 6
7 import moment from 'moment'; 7 import moment from 'moment';
8 8
  9 +
9 export default function() { 10 export default function() {
10 return { 11 return {
11 tableCols: [ 12 tableCols: [
@@ -60,11 +60,8 @@ export default function() { @@ -60,11 +60,8 @@ export default function() {
60 width: 250, 60 width: 250,
61 align: 'center', 61 align: 'center',
62 render: (h, params) => { 62 render: (h, params) => {
63 - let status = params.row.auditStatus;  
64 - let total = params.row.totalNum;  
65 -  
66 let info = ( 63 let info = (
67 - <i-button type="success" size="small" onClick={() => this.onClickInfo(params)}>查看明细</i-button> 64 + <i-button type="primary" size="small" onClick={() => this.onClickInfo(params)}>查看明细</i-button>
68 ); 65 );
69 66
70 let stock = ( 67 let stock = (
@@ -96,7 +93,7 @@ export default function() { @@ -96,7 +93,7 @@ export default function() {
96 brandId: { 93 brandId: {
97 label: '品牌', 94 label: '品牌',
98 labelSpan: 6, 95 labelSpan: 6,
99 - model: '', 96 + model: 33,
100 holder: '', 97 holder: '',
101 fieldSpan: 18 98 fieldSpan: 18
102 }, 99 },
1 -<template>  
2 - <div>局部组件</div>  
3 -</template>  
4 -  
5 -<script>  
6 - export default {  
7 - name: 'Demo',  
8 - };  
9 -</script>  
1 -import Demo from './demo';  
2 -  
3 -export {  
4 - Demo  
5 -};  
  1 +<template>
  2 + <layout-body>
  3 + <layout-filter>
  4 + <filter-item :label="filters.orderCode.label">
  5 + <Input v-model.trim="filters.orderCode.model"
  6 + :placeholder="filters.orderCode.holder"></Input>
  7 + </filter-item>
  8 + <filter-item :label="filters.balanceId.label">
  9 + <Input v-model.trim="filters.balanceId.model"
  10 + :placeholder="filters.balanceId.holder"></Input>
  11 + </filter-item>
  12 + <filter-item :label="filters.sku.label">
  13 + <Input v-model.trim="filters.sku.model"
  14 + :placeholder="filters.sku.holder"></Input>
  15 + </filter-item>
  16 + <filter-item :label="filters.brandId.label">
  17 + <select-brand v-model="filters.brandId.model"></select-brand>
  18 + </filter-item>
  19 + <filter-item :label="filters.status.label">
  20 + <Select v-model="filters.status.model">
  21 + <Option v-for="option in filters.status.options"
  22 + :value="option.value"
  23 + :key="option.value">{{option.label}}</Option>
  24 + </Select>
  25 + </filter-item>
  26 + <filter-item>
  27 + <Button type="primary" @click="search">筛选</Button>
  28 + <Button type="warning" @click="exportData">导出</Button>
  29 + <Button type="success">打印</Button>
  30 + <Button @click="reset">清空条件</Button>
  31 + </filter-item>
  32 + </layout-filter>
  33 + <layout-list>
  34 + <Demo></Demo>
  35 + <Table border :columns="tableCols" :data="tableData"></Table>
  36 + <Page :total="pageData.total" :current="pageData.pageNo"
  37 + @on-change="pageChange" :page-size="20" show-total></Page>
  38 + </layout-list>
  39 + </layout-body>
  40 +</template>
  41 +
  42 +<script>
  43 +import detail from './store/detail';
  44 +import FinanceService from 'services/finance/finance-service';
  45 +
  46 +export default {
  47 + data() {
  48 + return detail.call(this);
  49 + },
  50 + created() {
  51 + this.FinanceService = new FinanceService();
  52 + this.search();
  53 + },
  54 + computed: {
  55 +
  56 + },
  57 + methods: {
  58 + search() {
  59 + // 在这里实现异步查询的方法,建议在service中做
  60 + let params = {
  61 + balanceId: +this.filters.balanceId.model,
  62 + brandId: this.filters.brandId.model,
  63 + orderCode: this.filters.orderCode.model,
  64 + status: this.filters.status.model,
  65 + sku: this.filters.sku.model,
  66 + pageSize: this.pageData.pageSize,
  67 + pageNo: this.pageData.pageNo
  68 + }
  69 +
  70 + this.FinanceService.balanceDetail(params).then(ret => {
  71 + console.log(ret)
  72 + });
  73 + },
  74 + reset() {
  75 + this.filters.balanceId.model = null;
  76 + this.filters.brandId.model = null;
  77 + this.filters.status.model = null;
  78 + this.filters.orderCode.model = null;
  79 + this.filters.sku.model = null;
  80 + this.pageData.pageNo = 1;
  81 + this.pageData.total = 0;
  82 + },
  83 + pageChange(val) {
  84 + this.pageData.current = val;
  85 + this.search();
  86 + },
  87 + exportData() {
  88 + console.log('导出');
  89 + },
  90 + onClickInfo() {},
  91 + onClickStock() {}
  92 + }
  93 +};
  94 +</script>
  95 +
  96 +<style lang="scss">
  97 +.ivu-date-picker .ivu-select-dropdown {
  98 + left: -284px !important;
  99 +}
  100 +</style>
1 <template> 1 <template>
2 <layout-body> 2 <layout-body>
3 - <layout-filter ref="filter" :model="query">  
4 - <filter-item label="SKN编码">  
5 - <Input v-model.trim="query.sknCode" :maxlength="9"></Input> 3 + <layout-filter>
  4 + <filter-item :label="filters.balanceId.label">
  5 + <Input v-model.trim="filters.balanceId.model"
  6 + :placeholder="filters.balanceId.holder"></Input>
6 </filter-item> 7 </filter-item>
7 - <filter-item label="商家编码">  
8 - <Input v-model.trim="query.prodCode"></Input> 8 + <filter-item :label="filters.brandId.label">
  9 + <select-brand v-model="filters.brandId.model"></select-brand>
9 </filter-item> 10 </filter-item>
10 - <filter-item label="商品名称">  
11 - <Input v-model.trim="query.prodName"></Input>  
12 - </filter-item>  
13 - <filter-item label="商品条码">  
14 - <Input v-model.trim="query.prodBarCode"></Input> 11 + <filter-item :label="filters.createTime.label">
  12 + <Date-picker v-model="filters.createTime.model"
  13 + type="datetimerange" format="yyyy-MM-dd" placeholder="选择日期和时间">
  14 + </Date-picker>
15 </filter-item> 15 </filter-item>
16 <filter-item> 16 <filter-item>
17 <Button type="primary" @click="search">筛选</Button> 17 <Button type="primary" @click="search">筛选</Button>
@@ -21,79 +21,91 @@ @@ -21,79 +21,91 @@
21 <layout-list> 21 <layout-list>
22 <Demo></Demo> 22 <Demo></Demo>
23 <Table border :columns="tableCols" :data="tableData"></Table> 23 <Table border :columns="tableCols" :data="tableData"></Table>
24 - <Page :total="pageData.total" :current="pageData.current" 24 + <Page :total="pageData.total" :current="pageData.pageNo"
25 @on-change="pageChange" :page-size="20" show-total></Page> 25 @on-change="pageChange" :page-size="20" show-total></Page>
26 </layout-list> 26 </layout-list>
27 </layout-body> 27 </layout-body>
28 </template> 28 </template>
29 29
30 <script> 30 <script>
31 -import {Demo} from './components'; 31 +import list from './store/list';
  32 +import FinanceService from 'services/finance/finance-service';
  33 +
32 export default { 34 export default {
33 data() { 35 data() {
34 - return {  
35 - query: {  
36 - sknCode: '',  
37 - prodCode: '',  
38 - prodName: '',  
39 - prodBarCode: '',  
40 - category: [],  
41 - brand: 0,  
42 - saleStatus: 0,  
43 - stockStatus: 0 36 + return list.call(this);
44 }, 37 },
45 - pageData: {  
46 - total: 0,  
47 - current: 1, 38 + created() {
  39 + this.FinanceService = new FinanceService();
48 }, 40 },
49 - tableData: [{  
50 - col1: '1',  
51 - col2: '2'  
52 - }, {  
53 - col1: '3',  
54 - col2: '4'  
55 - }, {  
56 - col1: '5',  
57 - col2: '6'  
58 - }],  
59 - tableCols: [{  
60 - title: '列1',  
61 - key: 'col1'  
62 - }, {  
63 - title: '列2',  
64 - key: 'col2'  
65 - }, {  
66 - title: '操作',  
67 - render: (h, params) => {  
68 - return (  
69 - <action-group>  
70 - <i-button type="primary" size="small" onClick={() => this.edit(params.row)}>编辑</i-button>  
71 - <i-button type="error" size="small" onClick={() => this.del(params.row)}>删除</i-button>  
72 - </action-group>  
73 - ); 41 + computed: {
  42 + startTime() {
  43 + let createTime = this.filters.createTime.model;
  44 +
  45 + if (_.isEmpty(createTime)) {
  46 + return 0;
  47 + } else {
  48 + return createTime[0] ? createTime[0].getTime() / 1000 : 0;
  49 + }
  50 + },
  51 + endTime() {
  52 + let createTime = this.filters.createTime.model;
  53 +
  54 + if (_.isEmpty(createTime)) {
  55 + return 0;
  56 + } else {
  57 + return createTime[1] ? createTime[1].getTime() / 1000 : 0;
  58 + }
74 } 59 }
75 - }]  
76 - };  
77 }, 60 },
78 methods: { 61 methods: {
79 search() { 62 search() {
80 // 在这里实现异步查询的方法,建议在service中做 63 // 在这里实现异步查询的方法,建议在service中做
81 - let params = Object.assin(this.query, this.pageData); 64 + let params = {
  65 + type: 2,
  66 + balanceId: +this.filters.balanceId.model,
  67 + brandId: this.filters.brandId.model,
  68 + status: this.filters.status.model,
  69 + beginTime: this.startTime,
  70 + endTime: this.endTime,
  71 + pageSize: this.pageData.pageSize,
  72 + pageNo: this.pageData.pageNo
  73 + };
82 74
83 - console.log(params); 75 + this.FinanceService.settlementList(params).then(ret => {
  76 + console.log(ret)
  77 + });
84 }, 78 },
85 reset() { 79 reset() {
86 - this.$refs.filter.reset(); 80 + this.filters.balanceId.model = null;
  81 + this.filters.brandId.model = null;
  82 + this.filters.status.model = null;
  83 + this.filters.createTime.model = null;
  84 + this.pageData.pageNo = 1;
  85 + this.pageData.total = 0;
87 }, 86 },
88 - pageChange() { 87 + pageChange(val) {
  88 + this.pageData.current = val;
89 this.search(); 89 this.search();
90 }, 90 },
91 - edit() {},  
92 - del() {} 91 + onClickInfo(params) {
  92 + this.$router.push({
  93 + name: 'finance.payment.detail',
  94 + params: {},
  95 + query: {
  96 + balanceId: params.row.balanceId,
  97 + status: params.row.statusDesc,
  98 + brandName: params.row.brandName
  99 + }
  100 + });
93 }, 101 },
94 - components: {Demo} 102 + onClickStock() {}
  103 + }
95 }; 104 };
96 </script> 105 </script>
97 106
98 <style lang="scss"> 107 <style lang="scss">
  108 +.ivu-date-picker .ivu-select-dropdown {
  109 + left: -284px !important;
  110 +}
99 </style> 111 </style>
  1 +/**
  2 + * on detail page store
  3 + * @author: wsl <shuiling.wang@yoho.cn>
  4 + * @date: 2017/07/11
  5 + */
  6 +
  7 +import moment from 'moment';
  8 +
  9 +export default function() {
  10 + return {
  11 + tableCols: [
  12 + {
  13 + title: '对账单号',
  14 + key: 'balanceId',
  15 + align: 'center'
  16 + },
  17 + {
  18 + title: 'SKU',
  19 + key: 'productSku',
  20 + align: 'center'
  21 + },
  22 + {
  23 + title: '产品名称',
  24 + key: 'productName',
  25 + align: 'center',
  26 + },
  27 + {
  28 + title: '厂家编号',
  29 + key: 'storageFactoryCode',
  30 + align: 'center',
  31 + },
  32 + {
  33 + title: '品牌',
  34 + key: 'brandName',
  35 + align: 'center'
  36 + },
  37 + {
  38 + title: '订单号',
  39 + key: 'orderCode',
  40 + align: 'center'
  41 + },
  42 + {
  43 + title: '业务类型',
  44 + key: 'clearingTypeDesc',
  45 + align: 'center'
  46 + },
  47 + {
  48 + title: '吊牌价',
  49 + key: 'retailPrice',
  50 + align: 'center'
  51 + },
  52 + {
  53 + title: '成交价',
  54 + key: 'lastPrice',
  55 + align: 'center'
  56 + },
  57 + {
  58 + title: '折扣',
  59 + key: 'purchaseDiscount',
  60 + align: 'center'
  61 + },
  62 + {
  63 + title: '结算类型',
  64 + key: 'sellTypeDesc',
  65 + align: 'center'
  66 + },
  67 + {
  68 + title: '数量',
  69 + key: 'nums',
  70 + align: 'center'
  71 + },
  72 + {
  73 + title: '结算价',
  74 + key: 'clearingPrice',
  75 + align: 'center'
  76 + },
  77 + {
  78 + title: '审核',
  79 + key: 'auditStatusDesc',
  80 + align: 'center'
  81 + },
  82 + {
  83 + title: '状态',
  84 + key: 'statusDesc',
  85 + align: 'center'
  86 + }
  87 + ],
  88 + tableData: [],
  89 + pageData: {
  90 + total: 0,
  91 + pageNo: 1,
  92 + pageSize: 20
  93 + },
  94 + filters: {
  95 + orderCode: {
  96 + label: '订单号',
  97 + labelSpan: 6,
  98 + model: '',
  99 + holder: '',
  100 + fieldSpan: 18
  101 + },
  102 + balanceId: {
  103 + label: '对账单号',
  104 + labelSpan: 6,
  105 + model: '',
  106 + holder: '',
  107 + fieldSpan: 18
  108 + },
  109 + sku: {
  110 + label: 'SKU',
  111 + labelSpan: 6,
  112 + model: '',
  113 + holder: '',
  114 + fieldSpan: 18
  115 + },
  116 + brandId: {
  117 + label: '品牌',
  118 + labelSpan: 6,
  119 + model: '',
  120 + holder: '',
  121 + fieldSpan: 18
  122 + },
  123 + status: {
  124 + label: '状态',
  125 + labelSpan: 6,
  126 + model: '',
  127 + holder: '',
  128 + fieldSpan: 18,
  129 + options: [
  130 + {
  131 + value: 0,
  132 + label: '未结算'
  133 + },
  134 + {
  135 + value: 1,
  136 + label: '已结算'
  137 + }
  138 + ]
  139 + }
  140 + }
  141 + };
  142 +}
  1 +/**
  2 + * on payment page store
  3 + * @author: wsl <shuiling.wang@yoho.cn>
  4 + * @date: 2017/07/12
  5 + */
  6 +
  7 +import moment from 'moment';
  8 +
  9 +export default function() {
  10 + return {
  11 + tableCols: [
  12 + {
  13 + title: '对账单号',
  14 + key: 'balanceId',
  15 + align: 'center'
  16 + },
  17 + {
  18 + title: '生成日期',
  19 + key: 'createTimeString',
  20 + align: 'center',
  21 + render: function(h, params) {
  22 + let time = moment.unix(params.row.createTime);
  23 +
  24 + return (
  25 + <div>
  26 + <div> {time.format('YYYY/MM/DD')} </div>
  27 + <div> {time.format('HH:mm:ss')} </div>
  28 + </div>
  29 + );
  30 + }
  31 + },
  32 + {
  33 + title: '结算周期',
  34 + key: 'clearingCycle',
  35 + align: 'center',
  36 + },
  37 + {
  38 + title: '品牌',
  39 + key: 'brandName',
  40 + align: 'center',
  41 + },
  42 + {
  43 + title: '供应商',
  44 + key: 'supplierName',
  45 + align: 'center'
  46 + },
  47 + {
  48 + title: '应收金额',
  49 + key: 'clearingAmount',
  50 + align: 'center'
  51 + },
  52 + {
  53 + title: '操作',
  54 + key: 'action',
  55 + width: 250,
  56 + align: 'center',
  57 + render: (h, params) => {
  58 + let info = (
  59 + <i-button type="primary" size="small" onClick={() => this.onClickInfo(params)}>查看明细</i-button>
  60 + );
  61 +
  62 + let stock = (
  63 + <i-button type="primary" size="small" onClick={() => this.onClickStock(params)}>库存</i-button>
  64 + );
  65 +
  66 + return (
  67 + <div class="action-btn-row">
  68 + {info} {stock}
  69 + </div>
  70 + );
  71 + }
  72 + }
  73 + ],
  74 + tableData: [],
  75 + pageData: {
  76 + total: 0,
  77 + pageNo: 1,
  78 + pageSize: 20
  79 + },
  80 + filters: {
  81 + balanceId: {
  82 + label: '对账单号',
  83 + labelSpan: 6,
  84 + model: '',
  85 + holder: '',
  86 + fieldSpan: 18
  87 + },
  88 + brandId: {
  89 + label: '品牌',
  90 + labelSpan: 6,
  91 + model: '',
  92 + holder: '',
  93 + fieldSpan: 18
  94 + },
  95 + createTime: {
  96 + label: '创建时间',
  97 + labelSpan: 6,
  98 + model: '',
  99 + holder: '',
  100 + fieldSpan: 18
  101 + }
  102 + }
  103 + };
  104 +}
@@ -2,7 +2,8 @@ import Service from '../service'; @@ -2,7 +2,8 @@ import Service from '../service';
2 2
3 let apiUrl = { 3 let apiUrl = {
4 balanceList: '/erp/balanceList', 4 balanceList: '/erp/balanceList',
5 - balanceDetail: '/erp/balanceDetail' 5 + balanceDetail: '/erp/balanceDetail',
  6 + settlementList: '/erp/settlementList'
6 }; 7 };
7 8
8 class FinanceService extends Service { 9 class FinanceService extends Service {
@@ -15,14 +16,13 @@ class FinanceService extends Service { @@ -15,14 +16,13 @@ class FinanceService extends Service {
15 }); 16 });
16 } 17 }
17 balanceList(params) { 18 balanceList(params) {
18 - return this.get(apiUrl.balanceList, {  
19 - params  
20 - }); 19 + return this.post(apiUrl.balanceList, params);
21 } 20 }
22 balanceDetail(params) { 21 balanceDetail(params) {
23 - return this.get(apiUrl.balanceDetail, {  
24 - params  
25 - }); 22 + return this.post(apiUrl.balanceDetail, params);
  23 + }
  24 + settlementList(params) {
  25 + return this.post(apiUrl.settlementList, params);
26 } 26 }
27 } 27 }
28 export default FinanceService; 28 export default FinanceService;
@@ -41,7 +41,9 @@ let domainApis = { @@ -41,7 +41,9 @@ let domainApis = {
41 invoiceGoodsDelete: '/erp-shop-web/invoice/goods/delete', 41 invoiceGoodsDelete: '/erp-shop-web/invoice/goods/delete',
42 supplementProductList: '/erp-shop-web/supplementProduct/list', 42 supplementProductList: '/erp-shop-web/supplementProduct/list',
43 invoiceGoodsImport: '/erp-shop-web/invoice/goods/import', 43 invoiceGoodsImport: '/erp-shop-web/invoice/goods/import',
44 - balanceList: '/erp-shop-web/financeBill/balanceList' 44 + balanceList: '/erp-shop-web/financeBill/balanceList',
  45 + balanceDetail: '/erp-shop-web/financeBill/balanceDetail',
  46 + settlementList: '/erp-shop-web/financeBill/settlementList'
45 }, 47 },
46 platform: { 48 platform: {
47 queryShopsByAdminPid: '/SellerShopController/queryShopsByAdminPid', 49 queryShopsByAdminPid: '/SellerShopController/queryShopsByAdminPid',
@@ -81,8 +83,7 @@ let domainApis = { @@ -81,8 +83,7 @@ let domainApis = {
81 getRemoteImageUrlBySku: '/product/getRemoteImageUrlBySku', 83 getRemoteImageUrlBySku: '/product/getRemoteImageUrlBySku',
82 importSeller: '/batch/importSeller', 84 importSeller: '/batch/importSeller',
83 downloadFile: '/exceltemplate/download/CreateProductForShops', 85 downloadFile: '/exceltemplate/download/CreateProductForShops',
84 - getSellType: '/SellerProductController/getSellType',  
85 - balanceDetail: '/erp-shop-web/financeBill/balanceDetail' 86 + getSellType: '/SellerProductController/getSellType'
86 }, 87 },
87 shop: { 88 shop: {
88 login: '/loginInter', 89 login: '/loginInter',