Commit eeac9144 authored by godwithdh's avatar godwithdh

boss

parents 62e37f2d 190116b4
......@@ -150,7 +150,8 @@
'left':x.fixed ? x.fixedLeftWidth : 'none',
'border-left':tableStyle.tbodyTdBorder ? tableStyle.tbodyTrBorderBottom : '0px',
'border-right':(i == columns.length - 1 && tableStyle.tbodyTdBorder) ? tableStyle.tbodyTrBorderBottom : '0px',
'border-bottom':tableStyle.tbodyTrBorderBottom
'border-bottom':tableStyle.tbodyTrBorderBottom,
'word-break': 'break-all'
}"
@click="clickTd(i,index)"
v-html="item[x.field]"
......@@ -228,7 +229,7 @@ export default {
theadTdBorder:false,
tbodyTdBorder:false,
tbodyHeight:'100%',
tbodyTrBorderBottom:'1px solid #5cadff'
tbodyTrBorderBottom:'1px solid #dbe9f8'
}
}
},
......
......@@ -13,8 +13,8 @@ function urlFun(name){
* 默认公司
*/
// default:`http://192.168.4.39: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/hszh_HSFabricTradeTest`,
// default:`https://weixin.huansi.net/apiproxy/huansi/service/proxy/${userID}`,
/**
* 基本地址
......
......@@ -268,6 +268,14 @@ let routes = [
title: '库存金额分析'
}
},
{
path:'/tiip/chart/warehouseDetail',
name:'tiipChartWarehouseDetail',
component:()=> import('@/view/tiip/chart/warehouseDetail.vue'),
meta:{
title: ''
}
},
]
}
];
......
......@@ -11,7 +11,8 @@ const app = {
title: "",
keywords: "",
description: ""
}
},
isRefresh:false
},
mutations: {
saveUserId(state,data){
......@@ -28,6 +29,9 @@ const app = {
},
CAHNGE_META_INFO(state, metaInfo) {
state.metaInfo = metaInfo;
},
saveRefresh(state,isRefresh){
state.isRefresh = isRefresh;
}
},
actions: {
......@@ -45,7 +49,10 @@ const app = {
},
CAHNGE_META_INFO({commit}, metaInfo) {
commit('CAHNGE_META_INFO',metaInfo)
}
},
saveRefresh({commit}, isRefresh) {
commit('saveRefresh',isRefresh)
},
}
};
......
......@@ -6,9 +6,10 @@ const obj = {
hdr:{
begin_date:'2014-01-01',
end_date:'2019-12-13 23:59',
sType:'接单'
sType:'检验'
},
orderItem:{},
warehouseDetail:{}
},
mutations: {
saveKanbanHdr(state,data){
......@@ -16,6 +17,9 @@ const obj = {
},
saveKanbanOrderItem(state,data){
state.orderItem = data;
},
saveWarehouseDetail(state,data){
state.warehouseDetail = data;
}
},
actions: {
......@@ -24,6 +28,9 @@ const obj = {
},
saveKanbanOrderItem({commit},data){
commit('saveKanbanOrderItem',data);
},
saveWarehouseDetail({commit},data){
commit('saveWarehouseDetail',data);
}
}
};
......
<style lang="less">
@import url('../../../styles/common.less');
#tiipChartInventory{
height:100%;
min-height:100%;
display:flex;
flex-direction: column;
background: #DCE9FE;
......@@ -21,17 +21,32 @@
.CONTENT{
display:flex;flex-wrap:wrap;padding:8px;
.iCard{
width:calc(50% - 4px);
width:100%;
// width:calc(50% - 4px);
margin:0;
margin-bottom:8px;
text-align: center;
line-height:30px;
.warehouse{
background: linear-gradient(90deg,#8470FF, #2d8cf0, #00B2EE);
color:white;
border-bottom:1px solid #ddd;
}
.TITLE{
display: flex;
background: #f2f2f2;
>span{
flex:1;
}
}
.unit{
.ITEM{
display: flex;
>span{
flex:1;
}
}
}
.iCard:nth-child(odd) {
margin-right:8px;
}
}
.vertical{
......@@ -56,10 +71,20 @@
<div>
<div class="Head">数量</div>
<div class="CONTENT">
<div class="iCard" v-for="(item,index) in chartData" :key="index" >
<div class="warehouse" :style="{'color':colorList[index]}">{{item.sStoreName}}</div>
<div class="piece"><span style="color:#8a8a8a;">总匹数:</span>{{Number(item.nStockPieceQty).toLocaleString()}}</div>
<div class="qty"><span style="color:#8a8a8a;">总数量:</span>{{Number(item.nStockQty).toLocaleString()}}</div>
<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>
</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>
</div>
</div>
</div>
</div>
......@@ -134,7 +159,7 @@ export default {
theadTdBorder:false,
tbodyTdBorder:false,
tbodyHeight:'calc(100vh - 342px)',
tbodyTrBorderBottom:'1px solid #5cadff',
tbodyTrBorderBottom:'1px solid #dbe9f8',
width:'550px'
},
chartData:[],
......@@ -186,7 +211,7 @@ export default {
const data = this.chartData;
const map = {};
data.forEach(function(obj) {
map[obj.sStoreName] = Number(obj.nAmount||0).toLocaleString() + '元';
map[obj.sStoreName] = Number(obj.nAllAmount||0).toLocaleString() + '元';
});
this.myChart = new F2.Chart({
id: 'myChart',
......@@ -195,7 +220,7 @@ export default {
plugins: Gesture,
});
this.myChart.source(data, {
nAmount: {
nAllAmount: {
formatter: function formatter(val) {
return val + '元';
}
......@@ -210,7 +235,7 @@ export default {
});
this.myChart.axis(false);
this.myChart.interval()
.position('a*nAmount')
.position('a*nAllAmount')
.color('sStoreName', this.colorList)
.adjust('stack');
......@@ -219,7 +244,7 @@ export default {
html: `
<div style="width: 250px;height: 40px;text-align: center;">
<div style="font-size: 12px">总计</div>
<div style="font-size: 12px">${(this.chartData.reduce((x,y)=>{return x = x+y.nAmount},0)).toFixed(2)}万</div>
<div style="font-size: 12px">${(this.chartData.reduce((x,y)=>{return x = x+y.nAllAmount},0)).toFixed(2)}万</div>
</div>
`
});
......@@ -247,13 +272,13 @@ export default {
guide.html = `
<div style="width: 250px;height: 40px;text-align: center;">
<div style="font-size: 12px">${e.data.sStoreName}</div>
<div style="font-size: 12px">${((e.data.nAmount / (that.chartData.reduce((x,y)=>{return x = x+y.nAmount},0))) * 100).toFixed(2)}%</div>
<div style="font-size: 12px">${((e.data.nAllAmount / (that.chartData.reduce((x,y)=>{return x = x+y.nAllAmount},0))) * 100).toFixed(2)}%</div>
</div>
`
}else{
guide.html = `<div style="width: 250px;height: 40px;text-align: center;">
<div style="font-size: 12px">总计</div>
<div style="font-size: 12px">${(that.chartData.reduce((x,y)=>{return x = x+y.nAmount},0)).toFixed(2)}万</div>
<div style="font-size: 12px">${(that.chartData.reduce((x,y)=>{return x = x+y.nAllAmount},0)).toFixed(2)}万</div>
</div>
`
that.sStoreNo = '';
......@@ -275,7 +300,7 @@ export default {
guide.html = `
<div style="width: 250px;height: 40px;text-align: center;">
<div style="font-size: 12px">${data[0].sStoreName}</div>
<div style="font-size: 12px">${((data[0].nAmount / (that.chartData.reduce((x,y)=>{return x = x+y.nAmount},0))) * 100).toFixed(2)}%</div>
<div style="font-size: 12px">${((data[0].nAllAmount / (that.chartData.reduce((x,y)=>{return x = x+y.nAllAmount},0))) * 100).toFixed(2)}%</div>
</div>
`
guide.repaint();
......@@ -289,14 +314,22 @@ export default {
async getDetail(sStoreNo){
let data = {};
!!sStoreNo && (data.sStoreNo = sStoreNo);
let res = await this.apiGet(`${this.$url('default')}/bianalysis/stockamountinfo/`,data,'加载中');
if(res.hasOwnProperty('set1')) this.chartData = res.set1;
let res = await this.request('getBoss',{
data:[
{key:'url',value:'Inventory situation'},
],
params:{},
},'加载中',{})
if(res && res.length > 0) this.chartData = res;
this.chartData.map((x,y)=>{
x.a = '1';
})
this.chartData = this.chartData.filter(x=>x.nAmount != 0);
if(res.hasOwnProperty('set2')) this.list = res.set2;
this.chartData = this.chartData.filter(x=>x.nAllAmount != 0);
// if(res.hasOwnProperty('set2')) this.list = res.set2;
},
routerToWarehouseDetail(item){
this.$store.dispatch('saveWarehouseDetail',item);
this.$router.push({name:'tiipChartWarehouseDetail'});
}
},
components:{
......
<style lang="less" >
#tiipChartWarehouseDetail{
height:100%;
background:#eef4fe;
display:flex;
flex-direction: column;
.Table{
flex-grow: 1;
height:1px;
overflow: auto;
}
}
</style>
<template>
<div id="tiipChartWarehouseDetail">
<div class="Table">
<customerTable :columns="columns" :list="list" :tableStyle="tableStyle"></customerTable>
</div>
</div>
</template>
<script>
import Util from '@/libs/util.js'
import customerTable from '@/components/Table'
import { mapState } from 'vuex'
export default {
name: 'tiipChartWarehouseDetail',
data () {
return {
list:[],
columns:[],
tableStyle:{
theadBgColor:'rgba(223,238,253,1)',
complexTrBgColor:'white',
singleTrBgColor:'#eef4fe',
theadTdBorder:false,
tbodyTdBorder:false,
tbodyHeight:'calc(100vh)',
tbodyTrBorderBottom:'1px solid #dbe9f8',
width:'100%'
},
}
},
computed:{
...mapState({
warehouseDetail:state => state.kanban.warehouseDetail,
})
},
async mounted(){
window.d = this;
},
async activated(){
this.$store.dispatch("CAHNGE_META_INFO", {title:this.warehouseDetail.sStoreName+'明细'});
await this.getData();
if(this.warehouseDetail.ummStoreGUID == "637a600b-c40f-4933-991f-4426374649d2"){
this.columns = [
{
width:'40%',
name:'等级',
align:'center',
field:'sGradeHTML',
// underline:true,
color:'#2d8cf0',
},
{
width:'30%',
name:'数量',
align:'center',
field:'nQtyHTML',
},
{
width:'30%',
name:'匹数',
align:'center',
field:'nStockPieceQty',
}
]
}else{
this.columns = [
{
width:'40%',
name:'类别',
align:'center',
field:'sGradeHTML',
// underline:true,
color:'#2d8cf0',
},
{
width:'30%',
name:'数量',
align:'center',
field:'nQtyHTML',
},
{
width:'30%',
name:'匹数',
align:'center',
field:'nStockPieceQty',
}
]
}
},
methods:{
async getData(){
let res = await this.request('getBoss',{
data:[
{key:"url",value:'Inventory situation Store_GroupBy'},
{key:"ummStoreGUID",value:this.warehouseDetail.ummStoreGUID},
],
params:{},
},'加载中',{})
res.map(x=>{
x.sGradeHTML = `<div><span style="color:#FF6633">${x.sGrade || ''}</div>`;
x.nQtyHTML = `<div><span style="color:#339966;">${x.nQty || ''}</span></div>`;
})
this.list = res;
}
},
components:{
customerTable,
},
}
</script>
\ No newline at end of file
......@@ -159,7 +159,11 @@ export default {
mounted(){
window.kanban=this
this.$store.dispatch('saveUserId',this.$route.params.userId);
<<<<<<< HEAD
this.dateMode=3
=======
this.dateMode = 3;
>>>>>>> 190116b4450793bd548aebed2072f0c3c05a6afc
},
methods:{
preDate(){
......
......@@ -114,13 +114,12 @@ export default {
}
},
routerToOperateDetail(row){
// return false;
if(row.sType == '接单' || row.sType == '销售'){
if(row.sType != '成品入库' && row.sType != '收货'){
let data = util.deepClone(row);
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:row.sType})
}
}
......
......@@ -43,13 +43,13 @@ export default {
width:'25%',
name:'数量',
align:'center',
field:'nAmount',
field:'nQty',
},
{
width:'25%',
name:'金额',
align:'center',
field:'nQtyHTML',
field:'nAmountHTML',
},
{
width:'25%',
......@@ -65,7 +65,7 @@ export default {
theadTdBorder:false,
tbodyTdBorder:false,
tbodyHeight:'calc(100vh)',
tbodyTrBorderBottom:'1px solid #5cadff',
tbodyTrBorderBottom:'1px solid #dbe9f8',
width:'100%'
},
type:'custom'
......@@ -82,7 +82,17 @@ export default {
},
async activated(){
this.type = this.$route.params.type;
this.$store.dispatch("CAHNGE_META_INFO", {title:this.type == 'custom' ? '客户' : '产品' + '订单列表'});
let title = '';
if(this.hdr.sType == '采购'){
title = '采购';
}else if(this.hdr.sType == '加工'){
title = '加工';
}else if(this.hdr.sType == '检验'){
title = '检验';
}else{
title = '客户';
}
this.$store.dispatch("CAHNGE_META_INFO", {title:(this.type == 'custom' ? title : '产品') + '订单列表'});
await this.getData();
this.global.$off('clickTd');
......@@ -101,7 +111,11 @@ export default {
{key:"end_date",value:this.hdr.end_date}
];
if(this.type == 'custom'){
if(this.hdr.sType == '采购' || this.hdr.sType == '加工' || this.hdr.sType == '检验'){
postData.push({key:"upbProviderGUID",value:this.orderItem.upbProviderGUID})
}else{
postData.push({key:"upbCustomerGUID",value:this.orderItem.upbCustomerGUID})
}
}else{
postData.push({key:"sSampleMaterialNo",value:this.orderItem.sSampleMaterialNo})
}
......@@ -111,7 +125,7 @@ export default {
},'加载中',{})
res.map(x=>{
x.sOrderNoHTML = `<div><span style="text-decoration:underline;">${x.sOrderNo}</span></div>`;
x.nQtyHTML = `<div><span style="color:#339966;">${x.nQty}</span></div>`;
x.nAmountHTML = `<div><span style="color:#339966;">${x.nAmount || ''}</span></div>`;
})
this.list = res;
}
......
This diff is collapsed.
......@@ -43,13 +43,13 @@ export default {
width:'30%',
name:'数量',
align:'center',
field:'nAmount',
field:'nQty',
},
{
width:'30%',
name:'金额',
align:'center',
field:'nQtyHTML',
field:'nAmountHTML',
}
],
tableStyle:{
......@@ -59,7 +59,7 @@ export default {
theadTdBorder:false,
tbodyTdBorder:false,
tbodyHeight:'calc(100vh)',
tbodyTrBorderBottom:'1px solid #5cadff',
tbodyTrBorderBottom:'1px solid #dbe9f8',
width:'100%'
},
}
......@@ -84,19 +84,35 @@ export default {
},
methods:{
async getData(){
let res = await this.request('getBoss',{
data:[
let postData = [
{key:"url",value:'Operation gai sType-customer-sales'},
{key:"upbSalesGUID",value:this.orderItem.upbSalesGUID},
{key:"sType",value:this.hdr.sType},
{key:"begin_date",value:this.hdr.begin_date},
{key:"end_date",value:this.hdr.end_date}
],
]
if(this.hdr.sType == '采购' || this.hdr.sType == '加工'){
postData.push({key:"upbFollowerGUID",value:this.orderItem.upbFollowerGUID});
}else{
postData.push({key:"upbSalesGUID",value:this.orderItem.upbSalesGUID});
}
let res = await this.request('getBoss',{
data:postData,
params:{},
},'加载中',{})
res.map(x=>{
x.sSalesNameHTML = `<div><span style="text-decoration:underline;">${x.sSalesName}</span></div>`
x.nQtyHTML = `<div><span style="color:#339966;">${x.nQty}</span></div>`;
if(this.hdr.sType == '采购' || this.hdr.sType == '加工'){
if(this.hdr.sType == '加工'){
this.columns[0].name = '加工员名称';
}else if(this.hdr.sType == '采购'){
this.columns[0].name = '采购员名称';
}
this.columns[0].field = 'sFollowerNameHTML';
x.sFollowerNameHTML = `<div><span style="text-decoration:underline;">${x.sFollowerName}</span></div>`;
}else{
x.sSalesNameHTML = `<div><span style="text-decoration:underline;">${x.sSalesName}</span></div>`;
}
x.nAmountHTML = `<div><span style="color:#339966;">${x.nAmount}</span></div>`;
})
this.list = res;
}
......
......@@ -109,8 +109,8 @@ export default {
singleTrBgColor:'#eef4fe',
theadTdBorder:false,
tbodyTdBorder:false,
tbodyHeight:'calc(100vh - 200px)',
tbodyTrBorderBottom:'1px solid #5cadff'
tbodyHeight:'calc(100vh - 160px)',
tbodyTrBorderBottom:'1px solid #dbe9f8'
},
status:[],
showModal:false,
......
......@@ -124,8 +124,8 @@ export default {
singleTrBgColor:'#eef4fe',
theadTdBorder:false,
tbodyTdBorder:false,
tbodyHeight:'calc(100vh - 160px)',
tbodyTrBorderBottom:'1px solid #5cadff',
tbodyHeight:'calc(100vh - 120px)',
tbodyTrBorderBottom:'1px solid #dbe9f8',
width:'100%'
},
host:'https://weixin.huansi.net/apiproxy/huansi/service/proxy/',
......
......@@ -28,20 +28,20 @@
}
>div:nth-child(odd){
background:#eef4fe;
border:1px solid #2d8cf0;
border:1px solid #dbe9f8;
border-top:0;
}
>div:nth-child(even){
background:white;
border-bottom:1px solid #2d8cf0;
border-bottom:1px solid #dbe9f8;
}
>div:nth-child(4n){
background:white;
border-right:1px solid #2d8cf0;
border-right:1px solid #dbe9f8;
}
}
.tr:first-child{
border-top:1px solid #2d8cf0;
border-top:1px solid #dbe9f8;
}
}
......
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