Commit 1d57409a authored by godwithdh's avatar godwithdh

往来单位

parents d345fbb8 e63b5c7a
......@@ -145,7 +145,7 @@
'background':index % 2 == 0 ? tableStyle.complexTrBgColor : tableStyle.singleTrBgColor,
'text-overflow': x.ellipsis ? 'ellipsis' : 'none',
'overflow': x.ellipsis ? 'hidden' : 'none',
'white-space': x.ellipsis ? 'normal' : 'none',
'white-space': x.ellipsis ? 'nowrap' : 'none',
'position': x.fixed ? 'sticky' : 'static',
'left':x.fixed ? x.fixedLeftWidth : 'none',
'border-left':tableStyle.tbodyTdBorder ? tableStyle.tbodyTrBorderBottom : '0px',
......@@ -154,15 +154,18 @@
'word-break': 'break-all'
}"
@click="clickTd(i,index)"
v-html="item[x.field]"
>
<RENDER v-if="x.render" :item="item" :index="index" :columns="x"></RENDER>
<span v-if="!x.render" v-html="item[x.field]"></span>
</td>
</tr>
<slot></slot>
</div>
<div class="_tfoot" ref="tfoot" @scroll="scrollTFoot" v-if="showFooter & footerData.length > 0">
<tr v-for="(x,i) in footerData" :key="i" :style="{'width':'100%','min-width':tableStyle.width}">
<tr v-for="(x,i) in footerData" :key="i" :style="{'width':'100%','min-width':tableStyle.width,'min-height':'60px'}">
<td
v-for="(item,index) in columns"
:key="index"
......@@ -172,11 +175,13 @@
'min-width':item.width,
'background':tableStyle.theadBgColor,
'position': item.fixed ? 'sticky' : 'static',
'min-height':'60px',
'left':item.fixed ? item.fixedLeftWidth : 'none',
'border-top':tableStyle.theadTdBorder ? tableStyle.tbodyTrBorderBottom : '0px',
'border-left':tableStyle.theadTdBorder ? tableStyle.tbodyTrBorderBottom : '0px',
'border-bottom':tableStyle.theadTdBorder ? tableStyle.tbodyTrBorderBottom : '0px',
'border-right':(index == columns.length - 1 && tableStyle.theadTdBorder) ? tableStyle.tbodyTrBorderBottom : '0px',
'text-decoration':'none'
}"
v-html="x[item.field]"
>
......@@ -193,6 +198,31 @@
<script>
import Util from '@/libs/util.js'
import Vue from 'vue';
Vue.component('RENDER', {
render: function (createElement) {
let self = this;
return this.columns.render(createElement,{
row:this.item,
index:this.index
});
},
props: {
columns: {
type: Object,
required: true
},
item:{
type: Object,
required: true
},
index:{
type: Number,
required: true
}
}
})
export default {
name: 'Table',
......
......@@ -12,9 +12,9 @@ function urlFun(name){
/**
* 默认公司
*/
// default:`http://192.168.4.2:5001`,
default:`http://192.168.4.34:5001`,
// default:`https://weixin.huansi.net/apiproxy/huansi/hszh_HSFabricTradeTest`,
default:`https://weixin.huansi.net/apiproxy/huansi/service/proxy/${userID}`,
// default:`https://weixin.huansi.net/apiproxy/huansi/service/proxy/${userID}`,
/**
* 基本地址
......
......@@ -239,11 +239,11 @@ let tipRoutes = [
path:'/main',
children:[
{
path:'/tiip/orderDetails/list/:type',
path:'/tiip/orderDetails/list',
name:'orderDetailsIndex',
component:()=> import('@/view/tiip/orderDetails/index.vue'),
meta:{
title: '采购信息'
title: '订单详情'
}
},
]
......
......@@ -10,9 +10,14 @@ const obj = {
},
orderItem:{},
warehouseDetail:{},
customerItem:{}
customerItem:{},
kanban:{},
orderDetail:{}
},
mutations: {
saveKanban(state,data){
state.kanban[data.type] = data.item;
},
saveKanbanHdr(state,data){
state.hdr = data;
},
......@@ -24,9 +29,15 @@ const obj = {
},
saveCustomerItem(state,data){
state.customerItem = data;
}
},
saveKanbanOrderDetail(state,data){
state.orderDetail = data;
},
},
actions: {
saveKanban({commit},data){
commit('saveKanban',data);
},
saveKanbanHdr({commit},data){
commit('saveKanbanHdr',data);
},
......@@ -38,7 +49,10 @@ const obj = {
},
saveCustomerItem({commit},data){
commit('saveCustomerItem',data);
}
},
saveKanbanOrderDetail({commit},data){
commit('saveKanbanOrderDetail',data);
},
}
};
......
......@@ -124,15 +124,18 @@
</div>
<div class="TAB">
<button-tab class="buttonTab" :value="activeBtn" >
<button-tab-item @on-item-click="situation='salesStatistics'">销售统计</button-tab-item>
<button-tab-item @on-item-click="situation='empAna'">员工排行</button-tab-item>
<button-tab-item @on-item-click="situation='liabilities'">负债分析</button-tab-item>
<button-tab-item @on-item-click="situation='custom'">账单分析</button-tab-item>
<button-tab-item @on-item-click="situation='income'">收支分析</button-tab-item>
<button-tab-item @on-item-click="changeTab">销售统计</button-tab-item>
<button-tab-item @on-item-click="changeTab">员工排行</button-tab-item>
<button-tab-item @on-item-click="changeTab">负债分析</button-tab-item>
<button-tab-item @on-item-click="changeTab">账单分析</button-tab-item>
<button-tab-item @on-item-click="changeTab">收支分析</button-tab-item>
</button-tab>
</div>
<div class="CONTENT">
<keep-alive>
<component :is="situation"/>
</keep-alive>
</div>
</div>
</template>
......@@ -172,6 +175,26 @@ export default {
await this.getData();
},
methods:{
changeTab(index){
switch(index){
case 0:
this.situation='salesStatistics';
break;
case 1:
this.situation='empAna';
break;
case 2:
this.situation='liabilities';
break;
case 3:
this.situation='custom';
break;
case 4:
this.situation='income';
break;
}
},
async getData(){
let res = await this.request('getCipTotalamount',{
data:{}
......
......@@ -140,7 +140,6 @@ export default {
await this.getData();
},
async activated(){
},
methods:{
async getData(){
......
......@@ -74,15 +74,15 @@
<div class="iCard" v-for="(item,index) in chartData" :key="index" @click="routerToWarehouseDetail(item)">
<div class="warehouse" :style="{'color':'white'}">{{item.sStoreName}}</div>
<div class="TITLE">
<span>单位</span>
<span>总匹数</span>
<span>总数量</span>
<span>总匹数</span>
<span>单位</span>
</div>
<div class="unit" v-for="(v,i) in item.child" :key="i">
<div class="ITEM">
<span>{{v.sUnit}}</span>
<span style="color:#8a8a8a;">{{Number(v.nStockPieceQty).toLocaleString()}}</span>
<span style="color:#8a8a8a;">{{Number(v.nQty).toLocaleString()}}</span>
<span style="color:#8a8a8a;">{{Number(v.nStockPieceQty).toLocaleString()}}</span>
<span>{{v.sUnit}}</span>
</div>
</div>
</div>
......@@ -191,6 +191,9 @@ export default {
await this.renderChart();
})
},
activated(){
document.getElementsByClassName('content')[0].scrollTo(0,this.$store.state.kanban.kanban.inventory.scrollTop)
},
methods:{
renderResize() {
// 判断横竖屏
......@@ -339,6 +342,13 @@ export default {
// if(res.hasOwnProperty('set2')) this.list = res.set2;
},
routerToWarehouseDetail(item){
this.$store.dispatch('saveKanban',{
type:'inventory',
item:{
scrollTop:document.getElementsByClassName('content')[0].scrollTop
}
});
this.$store.dispatch('saveWarehouseDetail',item);
this.$router.push({name:'tiipChartWarehouseDetail'});
}
......
......@@ -35,13 +35,13 @@
<div class="abnormal">
<table cellspacing="0" >
<tr>
<td style="width:100px;">
<td style="width:100px;" @click="routerPushOperateDetail('销售退货')">
<div>销售退货</div>
</td>
<td>
<div>{{Number(value['销售退货']||0).toLocaleString()}}</div>
</td>
<td style="width:100px;">
<td style="width:100px;" @click="routerPushOperateDetail('采购退货')">
<div>采购退货</div>
</td>
<td>
......@@ -49,13 +49,13 @@
</td>
</tr>
<tr>
<td>
<td @click="routerPushOperateDetail('加工回修')">
<div>加工回修</div>
</td>
<td>
<div>{{Number(value['加工回修']||0).toLocaleString()}}</div>
</td>
<td>
<td @click="routerPushOperateDetail('疵品汇总')">
<div>疵品数量</div>
</td>
<td>
......@@ -80,13 +80,13 @@
</td>
</tr>
<tr>
<td>
<td @click="routerPushOperateDetail('供应商索赔')">
<div>供应商赔款</div>
</td>
<td>
<div>{{Number(value['供应商索赔']||0).toLocaleString()}}</div>
</td>
<td>
<td @click="routerPushOperateDetail('客户索赔')">
<div>客户赔款</div>
</td>
<td>
......@@ -94,13 +94,13 @@
</td>
</tr>
<tr>
<td>
<td @click="routerPushOperateDetail('超期应收')">
<div>超期应收额</div>
</td>
<td>
<div>{{Number(value['超期应收']||0).toLocaleString()}}</div>
</td>
<td>
<td @click="routerPushOperateDetail('超期应付')">
<div>超期应付额</div>
</td>
<td>
......@@ -155,6 +155,15 @@ export default {
})
}
},
routerPushOperateDetail(type){
let data = {};
data.sType = type;
data.begin_date = util.dateFormat(this.start,"yyyy-MM-dd");
data.end_date = (this.end?util.dateFormat(this.end,"yyyy-MM-dd"):util.dateFormat(new Date,"yyyy-MM-dd"))+' 23:59';
this.$store.dispatch('saveKanbanHdr',data);
this.$store.dispatch('saveRefresh',true);
this.$router.push({name:'tiipOperateDetail',type:type})
}
},
}
</script>
......@@ -124,7 +124,7 @@
<span :class="{active:situation=='capital'}" @click="situation='capital'">资金概况</span>
<span :class="{active:situation=='Finance'}" @click="situation='Finance'">财务概况</span>
<span :class="{active:situation=='abnormal'}" @click="situation='abnormal'">异常预警</span>
<span :class="{active:situation=='tiipChartInventory'}" @click="situation='tiipChartInventory'">库存情况</span>
<span :class="{active:situation=='tiipChartInventory'}" @click="situation='tiipChartInventory'">库存资金</span>
</div>
<div class="content">
<component :is="situation" :dateMode="dateMode" :start="DateValue[0]" :end="DateValue[1]"/>
......
This diff is collapsed.
......@@ -62,6 +62,8 @@ export default {
tbodyTrBorderBottom:'1px solid #dbe9f8',
width:'100%'
},
page:1,
per_page:50
}
},
computed:{
......@@ -74,6 +76,8 @@ export default {
window.d = this;
},
async activated(){
this.page = 1;
this.per_page = 50;
await this.getData();
this.global.$off('clickTd');
......@@ -82,14 +86,23 @@ export default {
this.$store.dispatch('saveCustomerItem',this.list[res.trIndex]);
this.$router.push({name:'tiipOperateCustomDetail',params:{type:'custom'}})
})
this.global.$off('scrollTable');
this.global.$on('scrollTable',async ()=>{
this.getData(true)
})
},
methods:{
async getData(){
async getData(flag){
if(this.per_page < 50){
this.$vux.toast.text('已加载全部数据!', 'middle')
return false;
}
let postData = [
{key:"url",value:'Operation gai sType-customer-sales'},
{key:"sType",value:this.hdr.sType},
{key:"begin_date",value:this.hdr.begin_date},
{key:"end_date",value:this.hdr.end_date}
{key:"end_date",value:this.hdr.end_date},
]
if(this.hdr.sType == '采购' || this.hdr.sType == '加工'){
postData.push({key:"upbFollowerGUID",value:this.orderItem.upbFollowerGUID});
......@@ -101,7 +114,10 @@ export default {
let res = await this.request('getBoss',{
data:postData,
params:{},
params:{
page:this.page,
per_page:this.per_page
},
},'加载中',{})
res.map(x=>{
if(this.hdr.sType == '采购' || this.hdr.sType == '加工'){
......@@ -123,7 +139,14 @@ export default {
}
x.nAmountHTML = `<div><span style="color:#339966;">${x.nAmount}</span></div>`;
})
this.list = res;
if(flag){
this.list.splice(this.list.length - 1,1);
this.list = this.list.concat(res);
}else{
this.list = res;
}
this.page++;
this.per_page = res.length - 1;
}
},
components:{
......
......@@ -101,11 +101,11 @@
<div v-for="(v2,i2) in v1.child" :key='i2'>
<div v-for="(v3,i3) in v2.child" :key="i3">
<div>
<span>{{v3.sFieldCaption}}</span>
<span>{{v3.key}}</span>
<div>
<div>
<div>
{{DATA[v3.sFieldName]}}
{{v3.value}}
</div>
</div>
</div>
......@@ -132,76 +132,48 @@ export default {
},
computed:{
...mapState({
orderDetail:state=>state.kanban.orderDetail
})
},
async mounted(){
window.d = this;
},
async activated(){
await this.getDetail();
this.filterFields(hdrFields,this.list,'采购基本合同');
this.list = this.filterFields();
},
methods:{
async getDetail(){
let apiURL;
switch(this.$route.params.type){
case 'pbcontract':
apiURL = 'getTiipPbcontract'
break;
case 'pay':
apiURL = 'getTiipFipayable'
break;
case 'receive':
apiURL = 'getTiipFireceivable'
break;
case 'fabric':
case 'inspectionReport':
apiURL = 'getTiipFabric'
break;
default:
break;
}
let hdrResult = await this.request(apiURL,{
data:[
{key:'url',value:this.$route.params.type == 'inspectionReport' ? 'Inspection Report' :'hdr'}
]
},true);
hdrResult.map(x=>{
for(let y in x){
if(isNaN(x[y])&&!isNaN(Date.parse(x[y]))){
   x[y] = Util.dateFormat(x[y],'yyyy-MM-dd')
filterFields(){
var data = Util.deepClone(this.orderDetail);
var arr = [];
for(let a in data){
for(let b of data[a]){
arr.push({title:b.sType,child:[]});
let item = arr[arr.length - 1];
if(item.child.length <= 0){
item.child.push({
child:[]
})
}
}
})
this.DATA = hdrResult[0];
},
filterFields(fields,arr,title){
arr.push({title:title,child:[]});
let data = arr[arr.length - 1];
for(let y of hdrFields){
let flag = false;
if(data.child.length <= 0){
data.child.push({
rowCount:y.rowCount,
child:[]
})
}
for(let x of data.child){
if(x.child.length != x.rowCount && x.rowCount == y.rowCount){
flag = true;
x.child.push(y);
for(let c in b){
var flag = false;
for(let d of item.child){
if(c != 'sType'){
if(d.child.length < 2){
d.child.push({
key:c,
value:b[c]
})
flag = true;
}
}
}
if(!flag && c!= 'sType'){
item.child.push({child:[{key:c,value:b[c]}]})
}
}
}
if(!flag){
data.child.push({
rowCount:y.rowCount,
child:[y]
})
}
}
}
return arr;
}
},
components:{
......
......@@ -109,7 +109,7 @@ export default {
singleTrBgColor:'#eef4fe',
theadTdBorder:false,
tbodyTdBorder:false,
tbodyHeight:'calc(100vh - 160px)',
tbodyHeight:'calc(100vh - 180px)',
tbodyTrBorderBottom:'1px solid #dbe9f8'
},
status:[],
......
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